Files
bare-operating-system/packages/bare-os-booter/lib/ctx/bare-os-ctx.d.ts
T
2026-08-18 18:11:28 -04:00

855 lines
31 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Stable shapes for custom kernels and `/bin` utilities (best-effort; full `ctx` is assembled in `index.js`).
* Match `BARE_OS_CTX_API_VERSION` in `bare-os-ctx-api.js` (stock **1.57.0**).
*/
export interface BareOsAbortOpts {
signal?: AbortSignal | null
timeoutMs?: number | null
}
export interface BareOsResourceStatus {
ctxApiVersion: string
pipeline: {
maxStages: number
maxBytes: number
maxLines: number
}
execMaxDepth: number
ipc: Record<string, unknown>
session: {
execLineCount: number
pipelineBytesTotal: number
execLineWallMsTotal?: number
}
peers: number
}
export interface BareOsIpc {
create(name: string): void
has(name: string): boolean
list(): string[]
remove(name: string): void
push(name: string, buf: Uint8Array | ArrayBuffer): void
take(name: string): Promise<Uint8Array>
pushJson(
name: string,
obj: Record<string, unknown>,
pushOpts?: { token?: string }
): void
takeJson(name: string): Promise<Record<string, unknown>>
fanoutPublish(name: string, buf: Uint8Array | ArrayBuffer): void
fanoutSubscribe(name: string): {
take: () => Promise<Uint8Array>
dispose: () => void
}
fanoutSubscriberCount(name: string): number
stats(): {
channelCount: number
queuedBytesTotal: number
fanoutTopicCount: number
fanoutSubscribersTotal: number
}
createDuplexBridge(baseName: string): {
left: {
push: (buf: Uint8Array | ArrayBuffer) => void
take: () => Promise<Uint8Array>
}
right: {
push: (buf: Uint8Array | ArrayBuffer) => void
take: () => Promise<Uint8Array>
}
}
duplexJsonRoundTrip(
baseName: string,
payload: Record<string, unknown>,
opts?: { timeoutMs?: number }
): Promise<Record<string, unknown>>
}
export interface BareOsHostStats {
hostname: string
loadavg: number[]
cpus: unknown[]
networkInterfaces: Record<string, unknown>
}
/** Minimal `ctx` surface for typing `run(ctx, argv)` and `start(ctx)`. */
/** Eleven `uint32` capability words keyed by wire v2 semantic names (`primary`, `extendedSeedingPlatform`, …). */
export type BareOsKernelCapabilityWordMap = Readonly<Record<string, number>>
export interface BareOsKernelContext {
bareOsCtxApiVersion: string
/** Frozen stock-derived masks this session advertises (guest VFS / policy); keys match `kernelCapabilityWords` on the seed wire. */
bareOsAdvertisedKernelCapabilityWords?: BareOsKernelCapabilityWordMap
/** Last seed handshake words, or `null` when unavailable / error; same key layout as `bareOsAdvertisedKernelCapabilityWords`. */
bareOsSeedKernelCapabilityWords?: BareOsKernelCapabilityWordMap | null
bareOsBooterPackageVersion?: string
bareOsProtocolPackageVersion?: string
bareOsPearRuntimeVersion?: string
bareOsBareRuntimeVersion?: string
bareOsSystemRevision?: Readonly<{
currentId: string
pendingId: string
slot: string
}>
bareOsRegisterSuspendHook(fn: () => void | Promise<void>): () => void
bareOsRegisterResumeHook(fn: () => void | Promise<void>): () => void
bareOsInvokeSuspendHooks(): Promise<void>
bareOsInvokeResumeHooks(): Promise<void>
bareOsRequestKernelReload(): void
bareOsRequestKernelProfileReload?(): void
bareOsRunImageScript?(path: string): Promise<void>
bareOsRuntimeCaps: Readonly<Record<string, unknown>>
env: Record<string, string>
vfs: {
readFile(
path: string,
abortOpts?: BareOsAbortOpts
): Promise<Uint8Array | null>
writeFile(
path: string,
buf: Uint8Array,
opts?: { executable?: boolean } & BareOsAbortOpts
): Promise<unknown>
[key: string]: unknown
}
console: Console
b4a: { toString(buf: Uint8Array, enc?: string): string }
exitCode?: number
execLine(line: string, opts?: BareOsAbortOpts): Promise<string>
readLine(
prompt?: string,
opts?: BareOsAbortOpts & { mask?: boolean }
): Promise<string | null>
runBinCommand(argv: string[], opts?: BareOsAbortOpts): Promise<unknown>
/**
* Set by the shell when this **`/bin`** commands stdout is **captured** (pipeline to the next stage, or **`>`** / **`>>`** on the last stage).
* Utilities may emit **one record per line** instead of multi-column text (e.g. **`ls`**).
*/
bareOsStdoutCaptured?: boolean
/**
* When true (SSH PTY child contexts), utilities that raw-write **`replStdout`** should emit CRLF newlines like **`bareOpensshWritePtyConsoleLine`** so streaming output (e.g. **`agent`**) displays line-by-line.
*/
bareOsPtyStdoutCrlf?: boolean
/** Optional raw output hook for NUL/binary (e.g. **`printenv -0`**, **`find -print0`**) when **`process.stdout.write`** is unavailable. */
bareOsBinWrite?(chunk: Uint8Array | string): void
bareOsIpc?: BareOsIpc
bareOsGetResourceStatus(): BareOsResourceStatus
bareOsReadProcMetricsLive(): Record<string, unknown>
/** Swarm chat (`bare-os-chat-v1`); host booter when `BARE_OS_PROTOMUX_CHAT_CHANNEL` is on. */
bareOsChatSend?(line: string): { ok: boolean; reason?: string }
/** Subscribe to decoded chat events (see `bare-os-chat-service`). */
bareOsChatSubscribe?(
fn: (ev: Record<string, unknown>) => void
): () => void
/** Recent decoded chat events (ring buffer on host; optional max length 110000, default 512). */
bareOsChatHistory?(limit?: number): Record<string, unknown>[]
/** Best-effort presence map (extensible). */
bareOsChatPresence?(): Record<string, unknown>
/** Room id list (v1: `general` only). */
bareOsChatRooms?(): string[]
/** Same payload as `/proc/bare_os/chat.json` without a VFS read (host booter). */
bareOsChatProcSnapshot?(): Record<string, unknown>
/** Meshdrop frame send over dedicated `bare-os-meshdrop-v1` channel. */
bareOsMeshdropSend?(frame: Record<string, unknown>): {
ok: boolean
reason?: string
}
/** Subscribe to meshdrop envelopes. */
bareOsMeshdropSubscribe?(
fn: (ev: Record<string, unknown>) => void
): () => void
/** Recent meshdrop envelopes (ring buffer on host; optional max length). */
bareOsMeshdropHistory?(limit?: number): Record<string, unknown>[]
bareOsReadReplicationOperatorJson?(): Promise<Record<string, unknown> | null>
bareOsInvalidateWarmReadCaches?(
reason?: string
): { ok: boolean; reason: string }
bareOsInvalidateWarmReadCachesFromBareManifestJson?(
buf: Uint8Array | ArrayBuffer
): { ok: boolean }
/**
* Set by fish readline when the TTY editor is active; reloads **`~/.bare/repl_history_<USER>`** after **`login`/`logout`**.
*/
bareOsReloadFishHistoryForIdentity?(): Promise<void>
/** Optional Hyperbee2 index operator hint (P2P metadata; host/extension scoped). */
bareOsHyperbeeGuestHint?(): Record<string, unknown>
/**
* Optional batch `/proc/bare_os/*` read for baretop(1); keys match baretop-snapshot preamble.
*/
bareOsReadBareTopSnapshot?(): Promise<{
atMs: number
files: Record<string, string>
}>
bareOsRegisterVirtualFile(
name: string,
reader:
| (() => string | Uint8Array | Promise<string | Uint8Array>)
| { read: () => string | Uint8Array | Promise<string | Uint8Array> },
opts?: { etag?: string; mime?: string; ttlMs?: number }
): void
bareOsInvalidateVirtualFile(name: string): void
bareOsUpdateVirtualFileMeta(
name: string,
patch: { etag?: string; version?: number }
): void
bareOsRegisterBootStepHook(
step: string,
fn: (ev: Record<string, unknown>) => void | Promise<void>
): () => void
/** @deprecated Use bareOsRegisterBootStepHook */
bareOsRegisterBootPhaseHook(
phase: string,
fn: (ev: Record<string, unknown>) => void | Promise<void>
): () => void
bareOsInvokeBootStepHooks(ev: Record<string, unknown>): Promise<void>
/** @deprecated Use bareOsInvokeBootStepHooks */
bareOsInvokeBootPhaseHooks(ev: Record<string, unknown>): Promise<void>
bareOsSandboxRunScript(
source: string,
argv?: string[],
opts?: BareOsAbortOpts
): Promise<void>
bareOsBootFileSha256Hex(buf: Uint8Array | ArrayBuffer): string
bareOsVerifyBootManifestSignature(
manifestBytes: Uint8Array | ArrayBuffer | null | undefined,
signatureBytes: Uint8Array | ArrayBuffer | null | undefined,
publicKeyHex?: string
): boolean
bareOsVerifyPathCapabilityEnvelope(envelope: unknown):
| { ok: true; payload: { prefix: string; ops: string[]; expMs: number | null } }
| { ok: false; reason: string }
bareOsVerifyPathCapabilityEnvelopeTrusted?(envelope: unknown):
| { ok: true; payload: { prefix: string; ops: string[]; expMs: number | null } }
| { ok: false; reason: string }
bareOsRequestMirror(opts?: {
key?: string
label?: string
}): Promise<{ ok: boolean; hint: string }>
bareOsExportPersonalSnapshot(opts?: {
label?: string
}): Promise<{ ok: boolean; hint: string }>
bareOsPearIpcEmit(channel: string, payload: Record<string, unknown>): boolean
bareOsEmitBlindPeerHint?(payload?: Record<string, unknown>): {
ok: boolean
}
bareOsPearUpdaterDelegate?(
opts?: Record<string, unknown>
): Promise<{
ok: boolean
code?: string
phase?: string
source?: string
note?: string
snapshot?: Record<string, unknown>
error?: string
version?: string
[key: string]: unknown
}>
bareOsEmitHyperdhtBootstrapRefresh?(addrs?: string[]): boolean
bareOsEmitBundlebeeHint?(payload?: Record<string, unknown>): boolean
bareOsEmitStructuredCloneCap?(opts?: {
maxDepth?: number
maxKeys?: number
}): boolean
bareOsProtomuxChannelAlias?(
logicalName: string,
actualName: string
): boolean
bareOsProtomuxAliasRegistrySnapshot?(): Record<string, unknown>
bareOsRunCurlCli?(argv: string[]): Promise<unknown>
bareOsRunWgetCli?(argv: string[]): Promise<unknown>
bareOsRunOpensslCli?(argv: string[]): Promise<unknown>
bareOsRunSshCli?(argv: string[]): Promise<unknown>
bareOsRunSshKeygenCli?(argv: string[]): Promise<unknown>
bareOsRunTarCli?(argv: string[]): Promise<unknown>
bareOsRunSystemctlCli?(argv: string[]): Promise<unknown>
bareOsRunHolesailCli?(argv: string[]): Promise<unknown>
bareOsRegisterBareDiagnosticsTap?(
fn: (ev: Record<string, unknown>) => void
): () => void
bareOsEmitPearStageHint?(payload?: Record<string, unknown>): boolean
bareOsBareModuleResolveProbe?(
spec?: string
): { ok: boolean; note?: string }
bareOsBareCryptoCapProbe?(): {
version: string | null
note?: string
}
bareOsPearUpdaterChannel?(): { channel: string; note?: string }
bareOsEmitDriveResolveHint?(payload?: Record<string, unknown>): boolean
bareOsRegisterBareDiagnosticsTapV2?(
fn: (ev: Record<string, unknown>) => void
): () => void
bareOsEmitPearMessageSketch?(payload?: Record<string, unknown>): boolean
bareOsEmitTrybootSlot?(payload?: Record<string, unknown>): boolean
bareOsEmitMultisigPointer?(payload?: Record<string, unknown>): boolean
bareOsBareStorageHint?(payload?: Record<string, unknown>): boolean
bareOsEmitPearDoctorHint?(payload?: Record<string, unknown>): boolean
bareOsPearInspectProbe?(payload?: {
depth?: number
}): { ok: boolean; depth?: number; note?: string }
bareOsEmitBareBootStepHint?(payload?: Record<string, unknown>): boolean
/** @deprecated Use bareOsEmitBareBootStepHint */
bareOsEmitBareBootPhaseHint?(payload?: Record<string, unknown>): boolean
bareOsBareRpcCapProbe?(): { ok: boolean; note?: string }
bareOsEmitPearStampPointer?(payload?: Record<string, unknown>): boolean
bareOsRegisterBareLoggerTap?(
fn: (ev: Record<string, unknown>) => void
): () => void
bareOsEmitAutobaseDiscoveryHint?(payload?: Record<string, unknown>): boolean
bareOsEmitBlindPairingSketch?(payload?: Record<string, unknown>): boolean
bareOsBareStreamBackpressureHint?(payload?: Record<string, unknown>): boolean
bareOsPearTerminalCapsProbe?(): { ok: boolean; note?: string }
bareOsEmitHypercoreReplicateBudget?(payload?: Record<string, unknown>): boolean
bareOsEmitDriveVersionGraph?(payload?: Record<string, unknown>): boolean
bareOsEmitProtomuxBackpressure?(payload?: Record<string, unknown>): boolean
bareOsPearRuntimeMatrixProbe?(): { ok: boolean; note?: string }
bareOsBundlePreloadHint?(payload?: Record<string, unknown>): boolean
bareOsAutopassRotationSketch?(payload?: Record<string, unknown>): boolean
bareOsHrpcAllowlistProbe?(): { ok: boolean; note?: string }
bareOsSidecarResourceCap?(payload?: Record<string, unknown>): boolean
bareOsGitLfsBudgetProbe?(): { ok: boolean; note?: string }
bareOsNetQosClass?(payload?: Record<string, unknown>): boolean
bareOsStorageTierHint?(payload?: Record<string, unknown>): boolean
bareOsIndexerCatchupProbe?(): { ok: boolean; note?: string }
bareOsMultisigQuorumPointer?(payload?: Record<string, unknown>): boolean
bareOsRelayGeoHint?(payload?: Record<string, unknown>): boolean
bareOsBarePackCacheProbe?(): { ok: boolean; note?: string }
bareOsBareAddonPolicyProbe?(): { ok: boolean; note?: string }
bareOsBareSignalsProfile?(payload?: Record<string, unknown>): boolean
bareOsBareTimersHistogram?(payload?: Record<string, unknown>): boolean
/** Session `HOSTNAME` / `COMPUTERNAME` when `BARE_OS_HOSTNAME_SET=1`. */
bareOsSetSessionHostname?(name: string): { ok: true; hostname: string }
bareOsHrpcRequest?(
service: string,
method: string,
payload?: Record<string, unknown>
): Promise<unknown>
bareOsHostCapability?(name: string): boolean
/** Namespaced kernel event bus (subscribe before boot phases if needed). */
bareOsSubscribeKernelEvent?(
fn: (ev: Record<string, unknown>) => void | Promise<void>
): () => void
/** Emit structured kernel events to subscribers and diagnostics taps. */
bareOsEmitKernelEvent?(ev: Record<string, unknown>): void
bareOsSwarmConnectionManager?: {
noteProbe(peerKey: string, ok: boolean): void
score(peerKey: string): number
snapshot(): Record<string, unknown>
}
bareOsSubscribeEventBus?(
fn: (ev: Record<string, unknown>) => void | Promise<void>
): () => void
bareOsEmitEventBus?(ev: Record<string, unknown>): void
/** Opaque key-handle registry (TTL / max uses); no raw key bytes in guest. */
bareOsAcquireKeyHandle?(hint?: {
purpose?: string
algorithm?: string
ttlMs?: number
scopes?: string[]
maxUses?: number
}): {
handle: string
algorithm: string
atMs: number
ttlMs: number | null
scopes: string[]
zeroizeAfterMs: number | null
}
bareOsReleaseKeyHandle?(handleId: string): void
bareOsTouchKeyHandle?(handleId: string): boolean
bareOsAuditLogAppend?(
entry: Record<string, unknown>
): { seq: number; entryHash: string; prevHash: string | null } | null
bareOsAuditLogAppendBatch?(
entries: Record<string, unknown>[]
): { seq: number; entryHash: string; prevHash: string | null } | null
bareOsAclEvaluate?(
subject: { user?: string; groups?: string[]; caps?: string[] },
resource: { path?: string; pathClass?: string },
rules: Array<{
id?: string
effect: 'allow' | 'deny'
users?: string[]
groups?: string[]
caps?: string[]
pathPrefix?: string
pathClass?: string
}>
): Record<string, unknown>
bareOsMetricInc?(name: string, delta?: number): void
bareOsHostCapabilityProfile?(): Record<string, unknown>
bareOsReadProcessTable?(): Record<string, unknown>
bareOsAppendLoggerRecord?(rec: Record<string, unknown>): Promise<void>
bareOsSendSignal?(
target: number | string,
signal?: string
): {
ok: boolean
pid: number
signal: string
delivered: boolean
exists?: boolean
ignored?: boolean
atMs?: number
}
/** Logical nice (-20..19) for synthetic PIDs; surfaced on `process_table.json`. */
bareOsRenice?(
pid: number,
delta?: number
): {
ok: boolean
pid: number
delta: number
nice: number
previousNice: number
atMs: number
}
/** FD → logical VFS/IPC target; see `/proc/bare_os/syscalls.json` fdModel. */
bareOsLogicalFds?: Record<string, string>
/** `fcntl` F_SETFL bits (O_APPEND | O_NONBLOCK) per decimal fd key. */
bareOsLogicalFdFlags?: Record<string, number>
/** Shell `trap` COMMAND → SIGNAL map (logical; delivery is synthetic). */
shellTrapHandlers?: Record<string, string>
bareOsLogicalSigaction?: Record<string, string>
bareOsHostSubprocessJobs?: Record<string, unknown>[]
bareOsAppendVaultRotationCheckpoint?(
row: Record<string, unknown>
): Promise<void>
/**
* Host child bridge; kernel-runner may honor `BARE_OS_BARE_SUBPROCESS_BRIDGE` and
* default timeouts from `BARE_OS_BARE_SUBPROCESS_TIMEOUT_MS` for `runBin` when unset.
*/
bareOsTrySpawnHostSubprocess?(
argv: string[],
opts?: Record<string, unknown>
): Promise<
| { ok: true; child: unknown; backend?: string }
| {
ok: false
reason: string
errorCode?: string
causeName?: string
}
>
bareOsRegisterLogicalFd?(fd: number, target: string): void
bareOsUnregisterLogicalFd?(fd: number): void
bareOsPosixFdSimEnabled?(): boolean
bareOsPosixFdSimPipe?(): {
readFd: number
writeFd: number
pairId: number
} | null
bareOsPosixFdSimDup?(fd: number): number | null
bareOsPosixFdSimWrite?(
writeFd: number,
data: string | Uint8Array
): { ok: boolean; bytes?: number; reason?: string }
bareOsPosixFdSimRead?(
readFd: number,
maxBytes?: number
): { ok: boolean; data?: string; eof?: boolean; reason?: string }
bareOsPosixPollProbe?(spec?: {
fds?: Array<{ fd: number; events?: string }>
timeoutMs?: number
}): {
ok: true
ready: Array<{ fd: number; revents: string }>
waitedMs: number
}
bareOsPosixPoll?(spec?: {
fds?: Array<{ fd: number; events?: string }>
timeoutMs?: number
}): Promise<{
ok: true
ready: Array<{ fd: number; revents: string }>
waitedMs: number
timedOut?: boolean
pollClock?: 'monotonic_hrtime' | 'Date_now'
}>
bareOsSigaction?(
signal: string,
mode: 'IGNORE' | 'DEFAULT' | 'IGN' | 'DEF'
): { ok: boolean; signal: string; mode: string }
bareOsPathconf?(path: string, name: string): number
/** Dynamic **`_SC_*`** values for **`getconf`** (e.g. **`_SC_NPROCESSORS_ONLN`** from **`BARE_OS_NPROC`**). */
bareOsGetconfSysconf?(name: string): string | number | null
bareOsSyscall?(
op: string,
args?: Record<string, unknown>
): Promise<unknown>
bareOsTelnetConnect?(
host: string,
port: number,
opts?: { family?: number; connectTimeoutMs?: number }
): unknown
bareOsSummonEval?(code: string, sandbox?: Record<string, unknown>): unknown
bareOsTlsConnect?(
host: string,
port: number,
opts?: {
family?: number
connectTimeoutMs?: number
servername?: string
rejectUnauthorized?: boolean
connect?: (opts: Record<string, unknown>) => unknown
}
): unknown
bareOsIrcHostAllowed?(host: string): { ok: boolean; reason?: string }
bareOsIrcPlaintextAllowed?(
host: string,
opts?: { tls?: boolean; insecurePlain?: boolean }
): { ok: boolean; reason?: string }
bareOsIrcPresencePublish?(rec: Record<string, unknown>): boolean
bareOsIrcShadowOpen?(name: string): { ok: boolean; name: string }
bareOsEvaluatePeerAdmission?(
peerKeyHex: string,
meta?: { dhtAddressClass?: string; caps?: string[] }
): Record<string, unknown>
/** Non-secret Pear runtime snapshot from **`BARE_OS_PEAR_RUNTIME_SNAPSHOT_JSON`** (parse errors → **`null`**). */
bareOsReadPearRuntimeSnapshotJson?(): Record<string, unknown> | null
bareOsPrioritizeReplicationPaths?(paths: string[]): string[]
bareOsVfsBatchWrite?(
puts: {
path: string
buf: Uint8Array | ArrayBuffer
opts?: Record<string, unknown>
}[]
): Promise<void>
bareOsHyperdriveDiffCollect?(
a: unknown,
b: unknown,
opts?: { maxEntries?: number; diffOpts?: Record<string, unknown> }
): Promise<{
ok: boolean
entries?: unknown[]
truncated?: boolean
error?: string
}>
bareOsEvalPathCapabilityLabel?(logicalPath: string): {
path: string
pathClass: string
labels: string[]
}
bareOsMirrorDriveExportSketch?(): { schema: number; note: string }
bareOsCorestoreSnapshotHint?(): Record<string, unknown>
bareOsReadHrtimeSnapshot?(): Record<string, unknown>
bareOsListMirrorMounts?(): {
schema: number
count: number
mounts: Array<{ path: string; index: number; readOnly: boolean }>
mirrorDriveHint?: { schema: number; note: string; dedupOperatorEnv?: string }
atMs: number
}
/** Corestore snapshot-style hints (same object as `/proc/bare_os/snapshot_hints.json`). */
bareOsReadSnapshotHintsJson?(): Record<string, unknown>
/** Protomux extension registry mirror (`/proc/bare_os/protomux_extensions.json`); gated by env. */
bareOsReadProtomuxExtensionsJson?(): Record<string, unknown>
bareOsVaultAuditSummary?(): {
schema: number
identityState: string
hasPublicKey: boolean
atMs: number
}
bareOsWasmKernelCompile?(
buf: Uint8Array | ArrayBuffer,
opts?: { maxBytes?: number }
): Promise<{
ok: boolean
reason?: string
exportNames?: string[]
}>
bareOsWasmKernelInstantiate?(
buf: Uint8Array | ArrayBuffer,
opts?: {
maxBytes?: number
memoryInitialPages?: number
memoryMaxPages?: number
timeoutMs?: number
}
): Promise<{
ok: boolean
reason?: string
exportNames?: string[]
instance?: WebAssembly.Instance
memory?: WebAssembly.Memory
memoryInitialPages?: number
memoryMaxPages?: number
/** Set when `BARE_OS_WASM_KERNEL_MONOTONIC_MS` wires `env.bare_os_monotonic_ms`. */
wasmMonotonicMsImport?: boolean
}>
bareOsRegisterKernelExtensionRecord?(rec: {
dropin: string
script: string
semver?: string
capabilities?: string[]
id?: string
dependsOn?: string[]
signaturePointer?: string
/** Wall ms for script execution (schema 9 `/proc/bare_os/extensions.json`). */
loadMs?: number
}): void
bareOsReadDelegateFairnessSnapshot?(): Record<string, unknown>
bareOsReadSubprocessBridgeJobs?(): unknown[]
bareOsReadSubprocessBridgeSnapshot?(): Record<string, unknown>
bareOsIsCtxMethodAllowed?(name: string): boolean
bareOsEmitIpcAudit?(ev: Record<string, unknown>): void
bareOsRequestPearReload(opts?: { persistRequest?: boolean }): Promise<{
requested: boolean
hint: string
env: string[]
}>
bareOsHostStats?: Readonly<BareOsHostStats>
/**
* Local QVAC (QuantumVerse Automatic Computer) bridge — in-process `@qvac/sdk` on Bare.
* Disabled when `BARE_OS_SKIP_QVAC=1`. Used by `/bin/agent` when `backend` is `qvac`.
*/
bareOsQvacAvailable?(): boolean
bareOsQvacStatus?(): {
available: boolean
status: string
modelId: string | null
loadedModelKey: string | null
lastError: string | null
skip: boolean
activeRequestId: string | null
/** Host GGUF cache (`$BARE_OS_HOST_DATA/qvac/models`). */
cacheDir?: string
/** Guest HDMS path for durable models. */
hdmsPath?: string
}
bareOsQvacLoadModel?(opts: {
modelSrc: string
tools?: boolean
ctxSize?: number
device?: string
mainGpu?: string | number
gpuLayers?: number
onProgress?: (p: unknown) => void
}): Promise<{
ok: boolean
modelId?: string | null
reused?: boolean
device?: string
fellBackToCpu?: boolean
gpuError?: string
}>
bareOsQvacUnloadModel?(): Promise<{ ok: boolean }>
bareOsQvacComplete?(opts: {
history: unknown[]
tools?: unknown[]
stream?: boolean
captureThinking?: boolean
modelSrc?: string
toolsEnabled?: boolean
ctxSize?: number
device?: string
mainGpu?: string | number
gpuLayers?: number
onProgress?: (p: unknown) => void
onEvent?: (e: Record<string, unknown>) => void
signal?: AbortSignal | null
}): Promise<{ ok: boolean; final?: unknown }>
/**
* Host-resolved (and optional drive-bundled) Holepunch-style modules; absent when `BARE_OS_BARE_MODULES=0`.
* Includes `discordJS` (vendored `bare-discord-js` / official discord.js) when the Bare host can load it.
*/
bare?: Readonly<Record<string, unknown>>
/** Pear development surface (build, bundle, init helpers etc.). Populated from the pear tier of the manifest when bare modules are enabled. */
pear?: Readonly<Record<string, unknown>>
httpFetch?: typeof fetch
/**
* First-party guest TUI framework (`ctx.tui`). Absent when `BARE_OS_TUI=0` or attach fails.
* Raw JS only — guest scripts must not import modules.
*/
tui?: Readonly<{
version: string
isTTY(opts?: Record<string, unknown>): boolean
size(opts?: Record<string, unknown>): { width: number; height: number }
ansi: Record<string, unknown>
key: {
matches: (msg: unknown, ...chords: unknown[]) => boolean
binding: (opts?: { keys?: string[]; help?: unknown }) => {
keys: string[]
help: unknown
}
}
decode: (chunk: unknown) => unknown[]
createDecoder: () => {
push: (chunk: unknown) => void
take: () => unknown[]
flushEscape: () => unknown
pending: () => number
}
acquire: (opts?: Record<string, unknown>) => unknown
release: (opts?: Record<string, unknown>) => unknown
withSession: (
fn: () => unknown,
opts?: Record<string, unknown>
) => Promise<unknown>
screen: {
enter: (opts?: Record<string, unknown>) => void
leave: (opts?: Record<string, unknown>) => void
}
style: ((...args: unknown[]) => {
bold: (v?: boolean) => unknown
foreground: (c: unknown) => unknown
background: (c: unknown) => unknown
padding: (...n: number[]) => unknown
border: (chars: unknown, ...sides: unknown[]) => unknown
render: (text: string) => string
[key: string]: unknown
}) & {
borders: Record<string, unknown>
position: Record<string, number>
joinHorizontal: (...args: unknown[]) => string
joinVertical: (...args: unknown[]) => string
width: (s: string) => number
height: (s: string) => number
truncate: (s: string, w: number) => string
stripAnsi: (s: string) => string
}
theme: (opts?: Record<string, unknown>) => {
name: string
noColor: boolean
depth: string
tokens: Record<string, string>
}
buffer: {
create: (rows: number, cols: number) => unknown
fill: (grid: unknown, text: string) => unknown
blit: (grid: unknown, row: number, col: number, text: string) => unknown
plain: (grid: unknown) => string[]
}
run: (model: unknown, opts?: Record<string, unknown>) => Promise<unknown>
create: (model: unknown, opts?: Record<string, unknown>) => {
run: () => Promise<unknown>
send: (msg: unknown) => void
quit: () => void
setOverlay: (id: string, spec: unknown) => void
clearOverlay: (id?: string) => void
model: unknown
}
send: (msg: unknown) => void
quit: () => { type: 'quit' }
tick: (ms: number, fn?: (d: Date) => unknown) => () => Promise<unknown>
every: (ms: number, fn?: (d: Date) => unknown) => () => Promise<unknown>
batch: (...cmds: unknown[]) => unknown[]
sequence: (...cmds: unknown[]) => { __seq: unknown[] }
suspend: (fn: () => unknown) => { __suspend: unknown }
spinner: { create: (opts?: Record<string, unknown>) => unknown }
textinput: { create: (opts?: Record<string, unknown>) => unknown }
autocomplete: { create: (opts?: Record<string, unknown>) => unknown }
textarea: { create: (opts?: Record<string, unknown>) => unknown }
viewport: { create: (opts?: Record<string, unknown>) => unknown }
list: { create: (opts?: Record<string, unknown>) => unknown }
table: { create: (opts?: Record<string, unknown>) => unknown }
help: { create: () => unknown }
progress: { create: (opts?: Record<string, unknown>) => unknown }
paginator: { create: (opts?: Record<string, unknown>) => unknown }
stopwatch: { create: (opts?: Record<string, unknown>) => unknown }
timer: { create: (opts?: Record<string, unknown>) => unknown }
checkbox: { create: (opts?: Record<string, unknown>) => unknown }
radio: { create: (opts?: Record<string, unknown>) => unknown }
select: { create: (opts?: Record<string, unknown>) => unknown }
focus: { create: (opts?: Record<string, unknown>) => unknown }
filepicker: {
create: (opts?: Record<string, unknown>) => unknown
mock: (
tree: Record<string, unknown>,
opts?: Record<string, unknown>
) => { vfs: unknown; root: string }
}
form: {
create: (opts?: Record<string, unknown>) => unknown
run: (form: unknown, opts?: Record<string, unknown>) => Promise<unknown>
text: (opts?: Record<string, unknown>) => unknown
textarea: (opts?: Record<string, unknown>) => unknown
number: (opts?: Record<string, unknown>) => unknown
select: (opts?: Record<string, unknown>) => unknown
radio: (opts?: Record<string, unknown>) => unknown
confirm: (opts?: Record<string, unknown>) => unknown
}
confirm: ((opts?: Record<string, unknown>) => Promise<boolean>) & {
create: (opts?: Record<string, unknown>) => unknown
}
prompt: ((opts?: Record<string, unknown>) => Promise<string | null>) & {
create: (opts?: Record<string, unknown>) => unknown
}
choose: ((opts?: Record<string, unknown>) => Promise<unknown>) & {
create: (opts?: Record<string, unknown>) => unknown
}
tabs: { create: (opts?: Record<string, unknown>) => unknown }
modal: { create: (opts?: Record<string, unknown>) => unknown }
dialog: { create: (opts?: Record<string, unknown>) => unknown }
tree: { create: (opts?: Record<string, unknown>) => unknown }
statusbar: { create: (opts?: Record<string, unknown>) => unknown }
split: { create: (opts?: Record<string, unknown>) => unknown }
toast: { create: (opts?: Record<string, unknown>) => unknown }
markdown: {
create: (opts?: Record<string, unknown>) => unknown
render: (src: string) => string
}
}>
/** App-authoring facade (`ctx.sdk`); `sdk.tui` is the same object as `ctx.tui`. */
sdk?: Readonly<{
tui: BareOsKernelContext['tui']
theme: {
name: (opts?: Record<string, unknown>) => string
tokens: (opts?: Record<string, unknown>) => Record<string, string>
apply: (name?: string) => Promise<unknown>
}
env: {
get: (key: string) => string
has: (key: string) => boolean
term: () => string
colorDepth: () => string
noColor: () => boolean
}
proc: {
read: (name: string) => Promise<string | null>
}
ipc: {
pushJson: (name: string, obj: Record<string, unknown>) => boolean
takeJson: (name: string) => Promise<unknown>
}
app: {
run: (model: unknown, opts?: Record<string, unknown>) => Promise<unknown>
confirm: (opts?: Record<string, unknown>) => Promise<boolean>
prompt: (opts?: Record<string, unknown>) => Promise<string | null>
select: (opts?: Record<string, unknown>) => Promise<unknown>
form: (
spec: Record<string, unknown>,
opts?: Record<string, unknown>
) => Promise<unknown>
}
vfs: {
list: (path: string) => Promise<unknown>
readText: (path: string) => Promise<string | null>
writeText: (path: string, text: string) => Promise<boolean>
}
tty: {
isTTY(opts?: Record<string, unknown>): boolean
size(opts?: Record<string, unknown>): { width: number; height: number }
acquire: (opts?: Record<string, unknown>) => unknown
release: (opts?: Record<string, unknown>) => unknown
withSession: (
fn: () => unknown,
opts?: Record<string, unknown>
) => Promise<unknown>
}
}>
[key: string]: unknown
}
export type BareOsBinRun = (
ctx: BareOsKernelContext,
argv: string[]
) => void | Promise<void>
export type BareOsKernelStart = (
ctx: BareOsKernelContext
) => void | Promise<void>