Targets StartOS 0.4.0-beta.10 (was beta.9). Four breaking changes applied: - Service interfaces moved onto their binding: sdk.serviceInterface.getOwn is gone, so nacho's EXPO_PUBLIC_API_BASE_URL now walks the subs-api interface off its host with sdk.host.getOwn, using the map selector so .const() re-runs only when that interface's address changes. - SubContainer.of is lazy and synchronous — dropped the awaits. - Task input split into accept/set; the Bitcoin RPC task accepts the credentials it sets, matching its previous behavior. - The manifest alerts field was removed (ours was all null). Also adopts the build plumbing the SDK now ships instead of vendoring it: the Makefile includes node_modules/@start9labs/start-sdk/s9pk.mk, tsconfig extends the SDK's base (ES2022, bundler resolution), and TypeScript moves to 6.0. Verified by installing on a StartOS box: all daemons come up, nacho logs a derived API base URL rather than the loopback fallback, and the sync health check's space-cli exec runs on cadence against the shared subcontainer. Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
905 B
TypeScript
36 lines
905 B
TypeScript
import { storeJson } from '../fileModels/storeJson'
|
|
import { i18n } from '../i18n'
|
|
import { sdk } from '../sdk'
|
|
import {
|
|
BITCOIN_RPC_USER,
|
|
BITCOIND_PACKAGE_ID,
|
|
randomPassword,
|
|
} from '../utils'
|
|
|
|
export const taskBtcAuth = sdk.setupOnInit(async (effects) => {
|
|
const existing = await storeJson.read((s) => s.btcAuth).once()
|
|
if (existing) return
|
|
|
|
const username = BITCOIN_RPC_USER
|
|
const password = randomPassword()
|
|
|
|
await effects.action.createTask({
|
|
replayId: 'spaces-rpc-auth',
|
|
packageId: BITCOIND_PACKAGE_ID,
|
|
actionId: 'generate-rpc-dependent',
|
|
severity: 'critical',
|
|
reason: i18n('Spaces needs RPC credentials in Bitcoin'),
|
|
input: {
|
|
kind: 'partial',
|
|
accept: [{ username, password }],
|
|
set: { username, password },
|
|
},
|
|
})
|
|
|
|
await storeJson.merge(
|
|
effects,
|
|
{ btcAuth: { username, password } },
|
|
{ allowWriteAfterConst: true },
|
|
)
|
|
})
|