Files
spaces-startos/startos/init/taskBtcAuth.ts
T
spacesopsandCursor b1d4890320 Update to @start9labs/start-sdk 2.0.9
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>
2026-07-30 11:48:09 -04:00

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 },
)
})