@bastani/atomic 0.9.19-alpha.2 → 0.9.19-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/dist/builtin/intercom/CHANGELOG.md +15 -0
- package/dist/builtin/intercom/broker/broker.ts +8 -0
- package/dist/builtin/intercom/broker/client.ts +18 -0
- package/dist/builtin/intercom/broker/send-handler.ts +9 -0
- package/dist/builtin/intercom/index.bundle.mjs +161 -30
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/types.ts +2 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +18 -0
- package/dist/builtin/subagents/README.md +14 -14
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/skills/subagent/SKILL.md +14 -14
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +142 -60
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +33 -0
- package/dist/builtin/workflows/README.md +14 -15
- package/dist/builtin/workflows/builtin/{chunk-mygmtz6e.js → chunk-9k3ywfgd.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-r9qq7xfj.js → chunk-ahbntmx2.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-zggjyg5z.js → chunk-n8zysf1t.js} +1 -1
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +3 -3
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +5 -5
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +171 -207
- package/dist/builtin/workflows/src/index.js +33 -6
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +2 -1
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +1 -1
- package/dist/core/agent-session-auto-compaction.js +1 -1
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-compaction.js +1 -1
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +33 -2
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +1 -1
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +22 -8
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +7 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +13 -3
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +1 -1
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +83 -0
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
- package/dist/core/agent-session-queue-pause.js +11 -0
- package/dist/core/agent-session-queue-pause.js.map +1 -1
- package/dist/core/agent-session-tasks.d.ts +5 -0
- package/dist/core/agent-session-tasks.d.ts.map +1 -1
- package/dist/core/agent-session-tasks.js +8 -1
- package/dist/core/agent-session-tasks.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +2 -0
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +12 -0
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-transfer.d.ts.map +1 -1
- package/dist/core/agent-session-transfer.js +7 -0
- package/dist/core/agent-session-transfer.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +2 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js +2 -0
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +4 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +22 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +6 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +3 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-host-modules.d.ts +1 -1
- package/dist/core/extensions/loader-host-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-host-modules.js +2 -1
- package/dist/core/extensions/loader-host-modules.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +4 -1
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +1 -1
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +9 -3
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner.js +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/workflow-events.d.ts +1 -1
- package/dist/core/extensions/workflow-events.d.ts.map +1 -1
- package/dist/core/extensions/workflow-events.js.map +1 -1
- package/dist/core/retry-policy.d.ts +1 -0
- package/dist/core/retry-policy.d.ts.map +1 -1
- package/dist/core/retry-policy.js +2 -1
- package/dist/core/retry-policy.js.map +1 -1
- package/dist/core/sdk-exports.d.ts +1 -1
- package/dist/core/sdk-exports.d.ts.map +1 -1
- package/dist/core/sdk-exports.js +1 -1
- package/dist/core/sdk-exports.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +6 -3
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +25 -8
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-types.d.ts +6 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +4 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tasks/agent-adapter.d.ts +14 -2
- package/dist/core/tasks/agent-adapter.d.ts.map +1 -1
- package/dist/core/tasks/agent-adapter.js +45 -4
- package/dist/core/tasks/agent-adapter.js.map +1 -1
- package/dist/core/tasks/completion.d.ts.map +1 -1
- package/dist/core/tasks/completion.js +5 -1
- package/dist/core/tasks/completion.js.map +1 -1
- package/dist/core/tasks/pause.d.ts +4 -0
- package/dist/core/tasks/pause.d.ts.map +1 -0
- package/dist/core/tasks/pause.js +49 -0
- package/dist/core/tasks/pause.js.map +1 -0
- package/dist/core/tasks/supervisor.d.ts +3 -1
- package/dist/core/tasks/supervisor.d.ts.map +1 -1
- package/dist/core/tasks/supervisor.js +48 -22
- package/dist/core/tasks/supervisor.js.map +1 -1
- package/dist/core/tools/bash-pty-native.d.ts +16 -2
- package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
- package/dist/core/tools/bash-pty-native.js +82 -0
- package/dist/core/tools/bash-pty-native.js.map +1 -1
- package/dist/core/tools/bash.d.ts +15 -2
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +49 -4
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/index.d.ts +4 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +12 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/kill.d.ts +17 -0
- package/dist/core/tools/kill.d.ts.map +1 -0
- package/dist/core/tools/kill.js +49 -0
- package/dist/core/tools/kill.js.map +1 -0
- package/dist/core/tools/powershell.d.ts +84 -28
- package/dist/core/tools/powershell.d.ts.map +1 -1
- package/dist/core/tools/powershell.js +11 -3
- package/dist/core/tools/powershell.js.map +1 -1
- package/dist/core/tools/resource-selectors.d.ts +1 -1
- package/dist/core/tools/resource-selectors.d.ts.map +1 -1
- package/dist/core/tools/resource-selectors.js +7 -4
- package/dist/core/tools/resource-selectors.js.map +1 -1
- package/dist/core/workflow-stage-admission.d.ts +14 -0
- package/dist/core/workflow-stage-admission.d.ts.map +1 -1
- package/dist/core/workflow-stage-admission.js +63 -3
- package/dist/core/workflow-stage-admission.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +3 -2
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/task-row.d.ts.map +1 -1
- package/dist/modes/interactive/components/task-row.js +8 -1
- package/dist/modes/interactive/components/task-row.js.map +1 -1
- package/docs/background-tasks.md +31 -2
- package/docs/compaction.md +20 -0
- package/docs/computer-use.md +390 -0
- package/docs/development.md +23 -74
- package/docs/docs.json +1 -0
- package/docs/extensions.md +15 -1
- package/docs/herdr.md +26 -77
- package/docs/index.md +1 -0
- package/docs/intercom.md +14 -2
- package/docs/models/evals.md +2 -0
- package/docs/models/model-selection.md +10 -7
- package/docs/quickstart.md +1 -1
- package/docs/sdk.md +11 -1
- package/docs/settings.md +24 -0
- package/docs/subagents.md +10 -6
- package/docs/tmux.md +2 -0
- package/docs/tools.md +11 -1
- package/docs/usage.md +1 -1
- package/docs/workflows/api-reference.md +5 -4
- package/docs/workflows/authoring.md +3 -3
- package/docs/workflows/operations.md +44 -33
- package/docs/workflows/reliable-design.md +3 -3
- package/docs/workflows/verification.md +99 -40
- package/docs/workflows.md +4 -2
- package/npm-shrinkwrap.json +59 -59
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/core/tasks/supervisor.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncResource } from \"node:async_hooks\";\nimport type * as native from \"@bastani/atomic-natives\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { createModuleRequire } from \"../../utils/module-require.ts\";\nimport type { AgentSessionEvent } from \"../agent-session.js\";\nimport type { SessionManager } from \"../session-manager.ts\";\nimport { COMMAND_FOREGROUND_BUDGET_MS } from \"./command-output.js\";\nimport type { TaskCompletionSource } from \"./completion-ordering.js\";\nimport type * as C from \"./contracts.js\";\n\nexport type TaskTranscriptSource = Pick<SessionManager, \"getSessionId\" | \"getEntries\"> & {\n\treadonly completionSource?: TaskCompletionSource;\n\t/** Viewer-only subscription; updates never publish task lifecycle events. */\n\tsubscribe?(listener: (event: AgentSessionEvent) => void): () => void;\n\tgetStreamingMessage?(): AgentMessage | undefined;\n};\n\nexport const DEFAULT_AGENT_WAIT_BUDGET_MS = 30000;\n/** These objects are live authority, not DTOs, restart tokens or model arguments. */\nclass Capability {\n\t#live = true;\n\ttoJSON(): never {\n\t\tthrow new TypeError(`Task capability is not serializable (${this.#live ? \"live\" : \"closed\"})`);\n\t}\n}\nclass HostCapability extends Capability {\n\treadonly kind = \"host\";\n}\nclass OwnerCapability extends Capability {\n\treadonly kind = \"owner\";\n}\nclass TaskCapability extends Capability {\n\treadonly kind = \"task\";\n}\nclass WaitCapability extends Capability {\n\treadonly kind = \"wait\";\n}\nclass SubscriptionCapability extends Capability {\n\treadonly kind = \"subscription\";\n}\nclass StdinCapability extends Capability {\n\treadonly kind = \"stdin\";\n}\nexport type StdinLease = StdinCapability;\nexport type HostSession = HostCapability;\nexport type OwnerLease = OwnerCapability;\nexport type TaskLease = TaskCapability;\nexport type WaitLease = WaitCapability;\nexport type SubscriptionLease = SubscriptionCapability;\n\nexport type FakeRunnerContext = {\n\tref: C.NativeTaskRef;\n\tsignal: AbortSignal;\n\treportActivity(report: C.ActivityReport): C.Result<C.ReportReceipt, C.ReportError>;\n\t/** Bind existing child history while holding the admitted runner authority. */\n\tbindTranscript(session: TaskTranscriptSource): void;\n};\n/** Independent cleanup evidence: an outcome alone never proves resource release. */\nexport type FakeExecution = { result: Promise<C.TaskResult>; cleanup: Promise<C.Cleanup> };\nexport type TrustedTaskHost = {\n\tscope: C.OwnerScope;\n\t/** Owner-host observation settings; never an execution deadline. */\n\ttasks?: { wait?: C.TaskWaitConfiguration };\n\t/** The existing host/tool refusal throws here, before native admission. */\n\tauthorizeCommandLaunch?(intent: C.CommandIntent): void;\n\tauthorizeLaunch(intent: C.AgentIntent): void;\n\tonTaskSettled?(ref: C.NativeTaskRef, receipt: C.SettlementReceipt): void;\n\tcreateRunner(context: FakeRunnerContext, intent: C.AgentIntent): FakeExecution;\n};\ntype HostState = { native: native.HostSession; binding: TrustedTaskHost };\ntype OwnerState = {\n\tnative: native.OwnerLease;\n\thost: HostState;\n\ttasks: Map<C.TaskId, TaskLease>;\n\twatches: Set<TaskSubscription>;\n\tsettledTasks: Set<C.TaskId>;\n};\ntype TaskState = {\n\tnative: native.TaskLease;\n\towner: OwnerState;\n\tref: C.NativeTaskRef;\n\tcontroller: AbortController;\n\tkind?: \"command\";\n\texecution?: Promise<C.Result<C.Cleanup, C.ReportError>>;\n\ttranscript?: TaskTranscriptSource;\n};\ntype WaitState = { native: native.WaitLease; outcome: Promise<C.Result<C.WaitOutcome, C.WaitError>> };\n\n// Native supervisors share one actor per environment; their JS continuations must too.\nconst environment = {\n\thosts: new WeakMap<HostSession, HostState>(),\n\towners: new WeakMap<OwnerLease, OwnerState>(),\n\ttasks: new WeakMap<TaskLease, TaskState>(),\n\tinputs: new WeakMap<StdinLease, native.StdinLease>(),\n\twaits: new WeakMap<WaitLease, WaitState>(),\n\twaitRegistry: new Map<C.WaitId, WaitLease>(),\n\townerIds: new Map<C.OwnerId, OwnerLease>(),\n};\n\n/** Reads only history bound by the admitted runner, never a caller-selected session. */\nexport function taskTranscriptSource(\n\ttask: TaskLease,\n): C.Result<{ session: TaskTranscriptSource; taskId: C.TaskId }, C.Failure<\"UnknownTask\" | \"TranscriptUnavailable\">> {\n\tconst state = environment.tasks.get(task);\n\tif (!state) return { ok: false, error: { code: \"UnknownTask\", message: \"Unknown task\" } };\n\tif (!state.transcript)\n\t\treturn { ok: false, error: { code: \"TranscriptUnavailable\", message: \"Transcript unavailable\" } };\n\treturn { ok: true, value: { session: state.transcript, taskId: state.ref.taskId } };\n}\n\n/** Promise rejections, setup throws and consumer exceptions may be arbitrary JavaScript values. */\nfunction rejectionMessage<T>(reason: T): string {\n\ttry {\n\t\tconst message = reason instanceof Error ? reason.message : reason;\n\t\treturn typeof message === \"string\" ? message : String(message);\n\t} catch {\n\t\treturn \"Unprintable JavaScript rejection\";\n\t}\n}\nfunction mapped<T, U, Code extends string>(\n\tresult: C.Result<T, native.TaskFailure>,\n\tconvert: (value: T) => U,\n\tcodes: readonly Code[],\n): C.Result<U, C.Failure<Code>> {\n\tif (result.ok) return { ok: true, value: convert(result.value) };\n\tconst code = codes.find((candidate) => candidate === result.error.code);\n\tif (!code) throw new Error(`Unexpected native task refusal: ${result.error.code}: ${result.error.message}`);\n\treturn { ok: false, error: { code, message: result.error.message } };\n}\nconst ownerErrors = [\"ScopeMismatch\", \"EnvironmentClosing\"] as const;\nconst startErrors = [\n\t\"OwnerClosing\",\n\t\"UnknownAgent\",\n\t\"InvalidCwd\",\n\t\"DepthExceeded\",\n\t\"CapacityExhausted\",\n\t\"DispatchGuardBusy\",\n\t\"OperationConflict\",\n\t\"RunnerUnavailable\",\n\t\"SpawnFailed\",\n\t\"ContainmentUnavailable\",\n] as const;\nconst waitErrors = [\"UnknownTask\", \"OwnerClosed\", \"EnvironmentClosing\", \"ScopeMismatch\", \"ObserverCancelled\"] as const;\nconst reportErrors = [\"StaleAttempt\", \"OwnerClosing\", \"TaskTerminal\", \"ReportConflict\"] as const;\nconst watchErrors = [\"OwnerClosed\", \"StaleGeneration\", \"EnvironmentClosing\"] as const;\nfunction reference(value: native.NativeTaskRef): C.NativeTaskRef {\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tattemptId: value.attemptId as C.AttemptId,\n\t\tgeneration: value.generation as C.Generation,\n\t};\n}\nfunction cursor(value: native.Cursor): C.Cursor {\n\treturn { generation: value.generation as C.Generation, sequence: value.sequence as C.Sequence };\n}\nfunction output(value: native.OutputRef): C.OutputRef {\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tartifactId: value.artifactId,\n\t\tbyteCount: value.byteCount,\n\t\tomittedRanges: value.omittedRanges.map(({ start, end }) => ({ start, end })),\n\t};\n}\nfunction taskResult(value: native.TaskResult): C.TaskResult {\n\tswitch (value.kind) {\n\t\tcase \"completed\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\toutput: output(value.output),\n\t\t\t\t...(value.exitCode === undefined ? {} : { exitCode: value.exitCode }),\n\t\t\t};\n\t\tcase \"failed\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tcode: value.code,\n\t\t\t\tmessage: value.message,\n\t\t\t\t...(value.output === undefined ? {} : { output: output(value.output) }),\n\t\t\t\t...(value.exitCode === undefined ? {} : { exitCode: value.exitCode }),\n\t\t\t};\n\t\tcase \"cancelled\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tcause: value.cause,\n\t\t\t\t...(value.output === undefined ? {} : { output: output(value.output) }),\n\t\t\t};\n\t}\n}\nfunction execution(value: native.Execution): C.Execution {\n\treturn value.kind === \"settled\" ? { kind: \"settled\", result: taskResult(value.result) } : value;\n}\nfunction observation(value: native.HostObservation): C.HostObservation {\n\tif (value.kind === \"foreground\") return { kind: value.kind, waitId: value.waitId as C.WaitId };\n\tif (value.kind === \"none\" && (value.reason === \"task-settled\" || value.reason === \"owner-closing\"))\n\t\treturn { kind: value.kind, reason: value.reason };\n\tconst reasons = [\n\t\t\"explicit\",\n\t\t\"default-background\",\n\t\t\"elapsed\",\n\t\t\"intercom-coordination\",\n\t\t\"input-needed\",\n\t\t\"not-observed\",\n\t\t\"observer-cancelled\",\n\t] as const;\n\tconst reason = reasons.find((reason) => reason === value.reason);\n\tif (value.kind === \"background\" && reason) return { kind: value.kind, reason };\n\tthrow new Error(\"Invalid native host observation\");\n}\nfunction record(value: native.TaskRecord): C.TaskRecord {\n\tif (value.kind !== \"agent\" && value.kind !== \"command\") throw new Error(`Invalid native task kind: ${value.kind}`);\n\treturn {\n\t\tref: reference(value.ref),\n\t\tlaunchOperationId: value.launchOperationId as C.OperationId,\n\t\t...(value.parentTaskId === undefined ? {} : { parentTaskId: value.parentTaskId as C.TaskId }),\n\t\t...(value.launchGroupId === undefined ? {} : { launchGroupId: value.launchGroupId }),\n\t\tlaunchOrdinal: value.launchOrdinal,\n\t\tkind: value.kind,\n\t\ttitle: value.title,\n\t\t...(value.agentName === undefined ? {} : { agentName: value.agentName }),\n\t\t...(value.model === undefined ? {} : { model: value.model }),\n\t\t...(value.thinking === undefined ? {} : { thinking: value.thinking }),\n\t\texecution: execution(value.execution),\n\t\tobservation: observation(value.observation),\n\t\t...(value.wasBackground === undefined ? {} : { wasBackground: value.wasBackground }),\n\t\tattention: value.attention,\n\t\tcleanup: value.cleanup,\n\t\t...(value.currentAction === undefined\n\t\t\t? {}\n\t\t\t: { currentAction: { tool: value.currentAction.tool, text: value.currentAction.text } }),\n\t\t...(value.metrics === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tmetrics: {\n\t\t\t\t\t\t...(value.metrics.elapsedMs === undefined ? {} : { elapsedMs: value.metrics.elapsedMs }),\n\t\t\t\t\t\t...(value.metrics.toolCount === undefined ? {} : { toolCount: value.metrics.toolCount }),\n\t\t\t\t\t\t...(value.metrics.tokenCount === undefined ? {} : { tokenCount: value.metrics.tokenCount }),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\toutput: output(value.output),\n\t};\n}\nfunction snapshot(value: native.OwnerSnapshot): C.OwnerSnapshot {\n\tif (value.state !== \"open\" && value.state !== \"closing\" && value.state !== \"closed\")\n\t\tthrow new Error(`Invalid native owner state: ${value.state}`);\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\tscope: value.scope,\n\t\tgeneration: value.generation as C.Generation,\n\t\tstate: value.state,\n\t\ttasks: value.tasks.map(record),\n\t\tcursor: cursor(value.cursor),\n\t};\n}\nfunction activity(value: native.ActivityReport): C.ActivityReport {\n\tif (value.change.kind === \"attention-set\" && value.change.attention.kind === \"none\")\n\t\tthrow new Error(\"Native attention-set cannot clear attention\");\n\t// Native tagged variants are owned wire data; only attention-set has a wider generated declaration.\n\treturn value as C.ActivityReport;\n}\nfunction payload(value: native.TaskEvent): C.TaskEvent {\n\tswitch (value.kind) {\n\t\tcase \"task-admitted\":\n\t\t\treturn { kind: value.kind, task: record(value.task) };\n\t\tcase \"task-started\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref) };\n\t\tcase \"wait-started\": {\n\t\t\tif (value.observer !== \"sdk\" && value.observer !== \"host\") throw new Error(\"Invalid native observer\");\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tref: reference(value.ref),\n\t\t\t\twaitId: value.waitId as C.WaitId,\n\t\t\t\tobserver: value.observer,\n\t\t\t};\n\t\t}\n\t\tcase \"wait-yielded\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), waitId: value.waitId as C.WaitId, reason: value.reason };\n\t\tcase \"host-observation-changed\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), observation: observation(value.observation) };\n\t\tcase \"task-activity\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), activity: activity(value.activity) };\n\t\tcase \"task-cancelling\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), cause: value.cause };\n\t\tcase \"task-settled\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tref: reference(value.ref),\n\t\t\t\tresult: taskResult(value.result),\n\t\t\t\tcompletionId: value.completionId,\n\t\t\t};\n\t\tcase \"cleanup-changed\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), cleanup: value.cleanup };\n\t\tcase \"owner-closing\":\n\t\tcase \"owner-closed\":\n\t\t\treturn { kind: value.kind };\n\t}\n}\nfunction event(value: native.NativeEvent): C.NativeEvent {\n\tif (value.schemaVersion !== 1) throw new Error(\"Unsupported native task event schema\");\n\treturn {\n\t\tschemaVersion: 1,\n\t\tcursor: cursor(value.cursor),\n\t\townerId: value.ownerId as C.OwnerId,\n\t\t...(value.taskId === undefined ? {} : { taskId: value.taskId as C.TaskId }),\n\t\tpayload: payload(value.payload),\n\t};\n}\nfunction waitOutcome(value: native.WaitOutcome): C.WaitOutcome {\n\treturn value.kind === \"settled\"\n\t\t? { kind: value.kind, taskId: value.taskId as C.TaskId, result: taskResult(value.result) }\n\t\t: { kind: value.kind, taskId: value.taskId as C.TaskId, waitId: value.waitId as C.WaitId, reason: value.reason };\n}\nfunction cancelReceipt(value: native.CancelReceipt): C.CancelReceipt {\n\tif (value.decision !== \"already-settled\" && value.decision !== \"cancellation-requested\")\n\t\tthrow new Error(\"Invalid cancellation decision\");\n\treturn {\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tdecision: value.decision,\n\t\texecution: execution(value.execution),\n\t\tcleanup: value.cleanup,\n\t};\n}\n\nfunction reportReceipt(value: native.ReportReceipt): C.ReportReceipt {\n\tif (value.disposition !== \"accepted\" && value.disposition !== \"duplicate\")\n\t\tthrow new Error(\"Invalid report disposition\");\n\treturn { reportId: value.reportId, cursor: cursor(value.cursor), disposition: value.disposition };\n}\n/** Projection only: native ordering remains the sole lifecycle authority. */\nfunction applyEvent(current: C.OwnerSnapshot, value: C.NativeEvent): C.OwnerSnapshot {\n\tconst next: C.OwnerSnapshot = { ...current, tasks: [...current.tasks], cursor: value.cursor };\n\tconst change = value.payload;\n\tif (change.kind === \"owner-closing\") {\n\t\tnext.state = \"closing\";\n\t\tnext.tasks = next.tasks.map((task) =>\n\t\t\ttask.execution.kind === \"settled\" ? task : { ...task, attention: { kind: \"none\" } },\n\t\t);\n\t\treturn next;\n\t}\n\tif (change.kind === \"owner-closed\") {\n\t\tnext.state = \"closed\";\n\t\treturn next;\n\t}\n\tif (change.kind === \"task-admitted\") {\n\t\tnext.tasks.push(change.task);\n\t\treturn next;\n\t}\n\tconst index = next.tasks.findIndex((task) => task.ref.taskId === change.ref.taskId);\n\tif (index < 0) throw new Error(\"Native delta references a task absent from its snapshot\");\n\tconst task: C.TaskRecord = { ...next.tasks[index] };\n\tnext.tasks[index] = task;\n\tswitch (change.kind) {\n\t\tcase \"task-started\":\n\t\t\ttask.execution = { kind: \"running\" };\n\t\t\tbreak;\n\t\tcase \"host-observation-changed\":\n\t\t\ttask.observation = change.observation;\n\t\t\tif (change.observation.kind === \"background\" && change.observation.reason !== \"not-observed\")\n\t\t\t\ttask.wasBackground = true;\n\t\t\tbreak;\n\t\tcase \"task-cancelling\":\n\t\t\ttask.execution = { kind: \"cancelling\", cause: change.cause };\n\t\t\tbreak;\n\t\tcase \"task-settled\":\n\t\t\ttask.execution = { kind: \"settled\", result: change.result };\n\t\t\ttask.attention = { kind: \"none\" };\n\t\t\tif (change.result.output !== undefined) task.output = change.result.output;\n\t\t\tbreak;\n\t\tcase \"cleanup-changed\":\n\t\t\ttask.cleanup = change.cleanup;\n\t\t\tbreak;\n\t\tcase \"task-activity\": {\n\t\t\tconst activity = change.activity.change;\n\t\t\tswitch (activity.kind) {\n\t\t\t\tcase \"action\":\n\t\t\t\t\ttask.currentAction = { tool: activity.tool, text: activity.text };\n\t\t\t\t\tif (task.attention.kind === \"no-recent-activity\") task.attention = { kind: \"none\" };\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"model\":\n\t\t\t\t\ttask.model = activity.model;\n\t\t\t\t\ttask.thinking = activity.thinking;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"metrics\":\n\t\t\t\t\ttask.metrics = {\n\t\t\t\t\t\t...task.metrics,\n\t\t\t\t\t\t...(activity.elapsedMs === undefined ? {} : { elapsedMs: activity.elapsedMs }),\n\t\t\t\t\t\t...(activity.toolCount === undefined ? {} : { toolCount: activity.toolCount }),\n\t\t\t\t\t\t...(activity.tokenCount === undefined ? {} : { tokenCount: activity.tokenCount }),\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"attention-set\":\n\t\t\t\t\ttask.attention = activity.attention;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"attention-clear\":\n\t\t\t\t\tif (task.attention.kind === \"input-needed\" && task.attention.requestId === activity.requestId)\n\t\t\t\t\t\ttask.attention = { kind: \"none\" };\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"output\":\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"wait-started\":\n\t\tcase \"wait-yielded\":\n\t\t\tbreak;\n\t}\n\treturn next;\n}\n/** One bounded wake poll per live subscription, including a journal with no retained event. */\nconst RECONCILE_INTERVAL_MS = 25;\nconst MAX_PENDING_EVENTS = 64;\nexport class TaskSubscription {\n\t#native: native.TaskSupervisor;\n\t#lease: native.SubscriptionLease;\n\t#resource = new AsyncResource(\"TaskSubscription\");\n\t#timer?: ReturnType<typeof setTimeout>;\n\t#queue: C.NativeEvent[] = [];\n\t#epoch = 0;\n\t#next?: (value: IteratorResult<C.NativeEvent>) => void;\n\t#disposed = false;\n\t#snapshot: C.OwnerSnapshot;\n\t#cursor: C.Cursor;\n\t/** Reconciliation supplements the RFC snapshot/cursor/iterable contract. */\n\tonReconcile: (snapshot: C.OwnerSnapshot) => void = () => {};\n\t#onDispose: () => void;\n\t#failure?: Error;\n\treadonly events: AsyncIterable<C.NativeEvent>;\n\treadonly lease: SubscriptionLease = new SubscriptionCapability();\n\n\tconstructor(actor: native.TaskSupervisor, initial: native.NativeTaskSubscription, onDispose: () => void) {\n\t\tObject.freeze(this.lease);\n\t\tthis.#native = actor;\n\t\tthis.#lease = initial.lease;\n\t\tthis.#snapshot = snapshot(initial.snapshot);\n\t\tthis.#cursor = cursor(initial.cursor);\n\t\tthis.#onDispose = onDispose;\n\t\tthis.events = {\n\t\t\t[Symbol.asyncIterator]: () => {\n\t\t\t\tconst epoch = this.#epoch;\n\t\t\t\treturn {\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\tif (epoch !== this.#epoch) return Promise.resolve({ done: true, value: undefined });\n\t\t\t\t\t\tconst value = this.#queue.shift();\n\t\t\t\t\t\tif (value) return Promise.resolve({ done: false, value });\n\t\t\t\t\t\tif (this.#disposed) return Promise.resolve({ done: true, value: undefined });\n\t\t\t\t\t\tif (this.#next) return Promise.reject(new Error(\"Only one pending subscription read is supported\"));\n\t\t\t\t\t\treturn new Promise((resolve) => {\n\t\t\t\t\t\t\tthis.#next = resolve;\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\treturn: async () => {\n\t\t\t\t\t\tif (epoch === this.#epoch) this.dispose();\n\t\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t\tthis.#arm();\n\t}\n\tget snapshot(): C.OwnerSnapshot {\n\t\treturn this.#snapshot;\n\t}\n\tget cursor(): C.Cursor {\n\t\treturn this.#cursor;\n\t}\n\t/** Consumer exceptions are observable without breaking the native wake or fallback poll. */\n\tget failure(): Error | undefined {\n\t\treturn this.#failure;\n\t}\n\t/** Callback payloads are authentic hints; only the journal/snapshot is authoritative. */\n\twake(_hint: native.NativeEvent): void {\n\t\tthis.#resource.runInAsyncScope(() => this.drain());\n\t}\n\t#arm(): void {\n\t\tif (this.#disposed || this.#timer) return;\n\t\tthis.#timer = setTimeout(() => {\n\t\t\tthis.#timer = undefined;\n\t\t\tthis.#resource.runInAsyncScope(() => this.drain());\n\t\t\tthis.#arm();\n\t\t}, RECONCILE_INTERVAL_MS);\n\t\tthis.#timer.unref();\n\t}\n\tdrain(): void {\n\t\tif (this.#disposed) return;\n\t\tconst drained = this.#native.drainOwnerTasks(this.#lease);\n\t\tif (!drained.ok) {\n\t\t\tthis.dispose();\n\t\t\treturn;\n\t\t}\n\t\tconst events = drained.value.events.map(event);\n\t\tif (drained.value.snapshot) this.#snapshot = snapshot(drained.value.snapshot);\n\t\tfor (const value of events) {\n\t\t\tif (BigInt(value.cursor.sequence) > BigInt(this.#snapshot.cursor.sequence))\n\t\t\t\tthis.#snapshot = applyEvent(this.#snapshot, value);\n\t\t}\n\t\tthis.#cursor = cursor(drained.value.cursor);\n\t\tthis.#snapshot = { ...this.#snapshot, cursor: this.#cursor };\n\t\tconst overflow = this.#queue.length + events.length > MAX_PENDING_EVENTS;\n\t\tconst reset = drained.value.reset || overflow;\n\t\tif (reset) {\n\t\t\tthis.#queue = [];\n\t\t\tthis.#epoch++;\n\t\t\t// End the old iterator only after publishing the authoritative snapshot/cursor.\n\t\t\t// A new iterator on the same iterable observes subsequent authentic deltas.\n\t\t\tthis.#next?.({ done: true, value: undefined });\n\t\t\tthis.#next = undefined;\n\t\t}\n\t\tif (drained.value.snapshot || events.length) {\n\t\t\ttry {\n\t\t\t\tthis.#resource.runInAsyncScope(this.onReconcile, undefined, this.#snapshot);\n\t\t\t} catch (error) {\n\t\t\t\tthis.#failure = new Error(rejectionMessage(error));\n\t\t\t}\n\t\t}\n\t\tif (this.#disposed) return;\n\t\tif (!reset)\n\t\t\tfor (const value of events) {\n\t\t\t\tif (this.#next) {\n\t\t\t\t\tconst next = this.#next;\n\t\t\t\t\tthis.#next = undefined;\n\t\t\t\t\tnext({ done: false, value });\n\t\t\t\t} else this.#queue.push(value);\n\t\t\t}\n\t\tif (this.#snapshot.state === \"closed\") this.dispose(false);\n\t}\n\tdispose(clear = true): void {\n\t\tif (this.#disposed) return;\n\t\tthis.#disposed = true;\n\t\tif (this.#timer) clearTimeout(this.#timer);\n\t\tthis.#timer = undefined;\n\t\tthis.#native.disposeSubscription(this.#lease);\n\t\tif (clear) this.#queue = [];\n\t\tthis.#next?.({ done: true, value: undefined });\n\t\tthis.#next = undefined;\n\t\tthis.#resource.emitDestroy();\n\t\tthis.#onDispose();\n\t}\n}\n\nexport class TaskSupervisor {\n\t#native = new (createModuleRequire(import.meta.url)(\"@bastani/atomic-natives\") as typeof native).TaskSupervisor();\n\t#hosts = environment.hosts;\n\t#owners = environment.owners;\n\t#tasks = environment.tasks;\n\t#waits = environment.waits;\n\t#waitRegistry = environment.waitRegistry;\n\t#ownerIds = environment.ownerIds;\n\tbindHostSession(binding: TrustedTaskHost): HostSession {\n\t\tconst host = new HostCapability();\n\t\tObject.freeze(host);\n\t\tthis.#hosts.set(host, { native: this.#native.bindHostSession(binding.scope), binding });\n\t\treturn host;\n\t}\n\topenTaskOwner(host: HostSession, scope: C.OwnerScope): C.Result<OwnerLease, C.OwnerError> {\n\t\tconst state = this.#host(host);\n\t\treturn mapped(\n\t\t\tthis.#native.openTaskOwner(state.native, scope),\n\t\t\t(lease) => {\n\t\t\t\tconst probe = this.#native.watchOwnerTasks(lease, (_hint) => {});\n\t\t\t\tif (!probe.ok) throw new Error(probe.error.message);\n\t\t\t\tconst id = probe.value.snapshot.ownerId as C.OwnerId;\n\t\t\t\tthis.#native.disposeSubscription(probe.value.lease);\n\t\t\t\tconst existing = this.#ownerIds.get(id);\n\t\t\t\tif (existing) return existing;\n\t\t\t\tconst owner = new OwnerCapability();\n\t\t\t\tObject.freeze(owner);\n\t\t\t\tconst ownerState: OwnerState = {\n\t\t\t\t\tnative: lease,\n\t\t\t\t\thost: state,\n\t\t\t\t\ttasks: new Map(),\n\t\t\t\t\twatches: new Set(),\n\t\t\t\t\tsettledTasks: new Set(),\n\t\t\t\t};\n\t\t\t\tthis.#owners.set(owner, ownerState);\n\t\t\t\tthis.#ownerIds.set(id, owner);\n\t\t\t\tconst watched = this.watchOwnerTasks(owner);\n\t\t\t\tif (!watched.ok) throw new Error(watched.error.message);\n\t\t\t\twatched.value.onReconcile = (projection) => {\n\t\t\t\t\tif (projection.state === \"closed\") this.#ownerIds.delete(projection.ownerId);\n\t\t\t\t\tfor (const record of projection.tasks) {\n\t\t\t\t\t\tconst cause =\n\t\t\t\t\t\t\trecord.execution.kind === \"cancelling\"\n\t\t\t\t\t\t\t\t? record.execution.cause\n\t\t\t\t\t\t\t\t: projection.state !== \"open\" && record.cleanup.kind !== \"reaped\"\n\t\t\t\t\t\t\t\t\t? \"owner-close\"\n\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\tif (!cause) continue;\n\t\t\t\t\t\tconst task = this.#owner(owner).tasks.get(record.ref.taskId);\n\t\t\t\t\t\tif (task) this.#task(task).controller.abort(cause);\n\t\t\t\t\t}\n\t\t\t\t\tlet failure: Error | undefined;\n\t\t\t\t\tfor (const record of projection.tasks) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trecord.execution.kind !== \"settled\" ||\n\t\t\t\t\t\t\townerState.settledTasks.has(record.ref.taskId) ||\n\t\t\t\t\t\t\t!state.binding.onTaskSettled\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Cancellation settles at cleanup (or while queued), without a runner outcome.\n\t\t\t\t\t\t\t// Recover its authentic receipt even when the bounded journal has reset.\n\t\t\t\t\t\t\tconst task = this.#native.lookupTask(lease, record.ref.taskId);\n\t\t\t\t\t\t\tif (!task.ok) throw new Error(task.error.message);\n\t\t\t\t\t\t\tconst settled = this.#native.taskSettlement(task.value);\n\t\t\t\t\t\t\tif (!settled.ok) throw new Error(settled.error.message);\n\t\t\t\t\t\t\tthis.#notifyTaskSettled(ownerState, record.ref, settled.value);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tfailure ??= new Error(rejectionMessage(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (failure) throw failure;\n\t\t\t\t};\n\t\t\t\twatched.value.onReconcile(watched.value.snapshot);\n\t\t\t\treturn owner;\n\t\t\t},\n\t\t\townerErrors,\n\t\t);\n\t}\n\t#notifyTaskSettled(state: OwnerState, ref: C.NativeTaskRef, receipt: native.SettlementReceipt): void {\n\t\tif (!state.host.binding.onTaskSettled || state.settledTasks.has(ref.taskId)) return;\n\t\t// Runner outcomes and snapshot recovery share one delivery door. Mark before\n\t\t// host code so reentrant drains or callback failures cannot redeliver.\n\t\tstate.settledTasks.add(ref.taskId);\n\t\tstate.host.binding.onTaskSettled(ref, {\n\t\t\ttaskId: receipt.taskId as C.TaskId,\n\t\t\tcursor: cursor(receipt.cursor),\n\t\t\tresult: taskResult(receipt.result),\n\t\t\tcompletionId: receipt.completionId,\n\t\t});\n\t}\n\tasync startCommandTask(\n\t\towner: OwnerLease,\n\t\tintent: C.CommandIntent,\n\t\toperation: C.OperationId,\n\t): Promise<C.Result<TaskLease, C.StartFailure>> {\n\t\tconst state = this.#owner(owner);\n\t\tstate.host.binding.authorizeCommandLaunch?.(intent);\n\t\tconst admitted = mapped(\n\t\t\tawait this.#native.startCommandTask(state.native, intent, operation),\n\t\t\t(lease) => lease,\n\t\t\tstartErrors,\n\t\t);\n\t\tif (!admitted.ok) return admitted;\n\t\tconst ref = this.#native.taskReference(admitted.value);\n\t\tif (!ref.ok) throw new Error(ref.error.message);\n\t\tconst id = ref.value.taskId as C.TaskId;\n\t\tconst existing = state.tasks.get(id);\n\t\tif (existing) return { ok: true, value: existing };\n\t\tconst task = new TaskCapability();\n\t\tthis.#tasks.set(task, {\n\t\t\tnative: admitted.value,\n\t\t\towner: state,\n\t\t\tref: reference(ref.value),\n\t\t\tcontroller: new AbortController(),\n\t\t\tkind: \"command\",\n\t\t});\n\t\tstate.tasks.set(id, task);\n\t\treturn { ok: true, value: task };\n\t}\n\ttaskStdin(task: TaskLease): C.Result<StdinLease, C.InputError> {\n\t\treturn mapped(\n\t\t\tthis.#native.taskStdin(this.#task(task).native),\n\t\t\t(input) => {\n\t\t\t\tconst lease = new StdinCapability();\n\t\t\t\tenvironment.inputs.set(lease, input);\n\t\t\t\treturn lease;\n\t\t\t},\n\t\t\t[\"TaskTerminal\", \"StdinClosed\", \"UnknownTask\", \"OutputUnavailable\"] as const,\n\t\t);\n\t}\n\tasync writeTaskInput(\n\t\tinput: StdinLease,\n\t\toperation: C.OperationId,\n\t\tdata: C.InputData,\n\t): Promise<C.Result<C.InputReceipt, C.InputError>> {\n\t\tconst lease = environment.inputs.get(input);\n\t\tif (!lease) throw new TypeError(\"Foreign stdin capability\");\n\t\treturn mapped(\n\t\t\tawait this.#native.writeTaskInput(\n\t\t\t\tlease,\n\t\t\t\toperation,\n\t\t\t\tdata.kind === \"bytes\" ? { kind: \"bytes\", bytes: Buffer.from(data.bytes) } : data,\n\t\t\t),\n\t\t\t(value) => ({\n\t\t\t\toperationId: value.operationId as C.OperationId,\n\t\t\t\tacceptedBytes: value.acceptedBytes,\n\t\t\t\tkind: value.kind as \"bytes\" | \"eof\",\n\t\t\t}),\n\t\t\t[\"TaskTerminal\", \"StdinClosed\", \"InputBackpressure\", \"OperationConflict\", \"InputDeliveryUnknown\"] as const,\n\t\t);\n\t}\n\tasync readTaskOutput(task: TaskLease, range: C.OutputRange): Promise<C.Result<C.OutputPage, C.OutputError>> {\n\t\treturn mapped(\n\t\t\tawait this.#native.readTaskOutput(this.#task(task).native, range),\n\t\t\t(page) => ({\n\t\t\t\trequested: page.requested,\n\t\t\t\tchunks: page.chunks.map((chunk) => ({ offsets: chunk.offsets, bytes: new Uint8Array(chunk.bytes) })),\n\t\t\t\tomittedRanges: page.omittedRanges,\n\t\t\t\t...(page.nextOffset === undefined ? {} : { nextOffset: page.nextOffset }),\n\t\t\t}),\n\t\t\t[\"UnknownTask\", \"OutputUnavailable\"] as const,\n\t\t);\n\t}\n\tasync startAgentTask(\n\t\towner: OwnerLease,\n\t\tintent: C.AgentIntent,\n\t\toperation: C.OperationId,\n\t\tschedule?: (dispatch: () => Promise<void>) => void,\n\t): Promise<C.Result<TaskLease, C.StartFailure>> {\n\t\tconst state = this.#owner(owner);\n\t\tstate.host.binding.authorizeLaunch(intent);\n\t\tconst admitted = mapped(\n\t\t\tthis.#native.startAgentTask(state.native, intent, operation),\n\t\t\t(lease) => lease,\n\t\t\tstartErrors,\n\t\t);\n\t\tif (!admitted.ok) return admitted;\n\t\tconst ref = this.#native.taskReference(admitted.value);\n\t\tif (!ref.ok) throw new Error(ref.error.message);\n\t\tconst id = ref.value.taskId as C.TaskId;\n\t\tconst existing = state.tasks.get(id);\n\t\tif (existing) return { ok: true, value: existing };\n\t\tconst task = new TaskCapability();\n\t\tObject.freeze(task);\n\t\tconst taskState: TaskState = {\n\t\t\tnative: admitted.value,\n\t\t\towner: state,\n\t\t\tref: reference(ref.value),\n\t\t\tcontroller: new AbortController(),\n\t\t};\n\t\tthis.#tasks.set(task, taskState);\n\t\tstate.tasks.set(id, task);\n\t\tconst dispatch = AsyncResource.bind(async () => {\n\t\t\tif (taskState.controller.signal.aborted) return;\n\t\t\tconst runner = mapped(this.#native.claimTaskRunner(admitted.value), (lease) => lease, startErrors);\n\t\t\tif (!runner.ok) throw new Error(`${runner.error.code}: ${runner.error.message}`);\n\t\t\tlet execution: FakeExecution;\n\t\t\ttry {\n\t\t\t\texecution = state.host.binding.createRunner(\n\t\t\t\t\t{\n\t\t\t\t\t\tref: reference(taskState.ref),\n\t\t\t\t\t\tsignal: taskState.controller.signal,\n\t\t\t\t\t\tbindTranscript: (session) => {\n\t\t\t\t\t\t\ttaskState.transcript = session;\n\t\t\t\t\t\t},\n\t\t\t\t\t\treportActivity: (report) =>\n\t\t\t\t\t\t\tmapped(this.#native.reportTaskActivity(runner.value, report), reportReceipt, reportErrors),\n\t\t\t\t\t},\n\t\t\t\t\tintent,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = rejectionMessage(error);\n\t\t\t\texecution = {\n\t\t\t\t\tresult: Promise.resolve({ kind: \"failed\", code: \"SpawnFailed\", message }),\n\t\t\t\t\tcleanup: Promise.resolve({\n\t\t\t\t\t\tkind: \"failed\",\n\t\t\t\t\t\tresources: [{ resource: \"fake-runner-setup\", code: \"CleanupUnconfirmed\", message }],\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst outcome = execution.result\n\t\t\t\t.catch((error) => ({ kind: \"failed\" as const, code: \"RunnerFailed\", message: rejectionMessage(error) }))\n\t\t\t\t.then((result) => {\n\t\t\t\t\treturn mapped(\n\t\t\t\t\t\tthis.#native.reportRunnerOutcome(runner.value, result),\n\t\t\t\t\t\t(receipt) => this.#notifyTaskSettled(state, taskState.ref, receipt),\n\t\t\t\t\t\treportErrors,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\tconst cleanup = execution.cleanup.catch(\n\t\t\t\t(error): C.Cleanup => ({\n\t\t\t\t\tkind: \"failed\",\n\t\t\t\t\tresources: [{ resource: \"fake-runner\", code: \"CleanupFailed\", message: rejectionMessage(error) }],\n\t\t\t\t}),\n\t\t\t);\n\t\t\ttaskState.execution = cleanup.then(async (evidence) => {\n\t\t\t\t// Natural reaping follows its outcome; cancellation needs only confirmed stop.\n\t\t\t\t// A result may never arrive after abort, including when cleanup arrived first.\n\t\t\t\tconst signal = taskState.controller.signal;\n\t\t\t\tlet stopped!: () => void;\n\t\t\t\tconst cancelled = new Promise<undefined>((resolve) => {\n\t\t\t\t\tstopped = () => resolve(undefined);\n\t\t\t\t\tif (signal.aborted) stopped();\n\t\t\t\t\telse signal.addEventListener(\"abort\", stopped, { once: true });\n\t\t\t\t});\n\t\t\t\tconst reported = await Promise.race([outcome, cancelled]).finally(() => {\n\t\t\t\t\tsignal.removeEventListener(\"abort\", stopped);\n\t\t\t\t});\n\t\t\t\tconst acknowledged = mapped(\n\t\t\t\t\tthis.#native.acknowledgeTaskCleanup(runner.value, evidence),\n\t\t\t\t\t(cleanup) => cleanup,\n\t\t\t\t\treportErrors,\n\t\t\t\t);\n\t\t\t\tif (reported && !reported.ok && !(signal.aborted && reported.error.code === \"ReportConflict\"))\n\t\t\t\t\treturn reported;\n\t\t\t\treturn acknowledged;\n\t\t\t});\n\t\t\tawait taskState.execution;\n\t\t});\n\t\tif (schedule) schedule(dispatch);\n\t\telse void dispatch();\n\t\t// Setup is complete. Do not await execution; ready terminal microtasks may win observation.\n\t\tawait Promise.resolve();\n\t\treturn { ok: true, value: task };\n\t}\n\ttaskReference(task: TaskLease): C.NativeTaskRef {\n\t\treturn reference(this.#task(task).ref);\n\t}\n\tasync waitForTask(\n\t\ttask: TaskLease,\n\t\tbudgetMs?: number,\n\t\tdesignation?: HostSession,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tthis.#task(task).native,\n\t\t\t\tthis.#agentBudget(this.#task(task).owner, budgetMs, this.#task(task).kind === \"command\"),\n\t\t\t\tdesignation ? this.#host(designation).native : undefined,\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\treturn registered.ok ? this.observeTaskWait(registered.value) : registered;\n\t}\n\t/** Resolve only a task admitted under this live owner; IDs alone confer no authority. */\n\tlookupTask(owner: OwnerLease, taskId: C.TaskId): C.Result<TaskLease, C.WaitError> {\n\t\tconst state = this.#owner(owner);\n\t\tconst found = mapped(this.#native.lookupTask(state.native, taskId), () => state.tasks.get(taskId), waitErrors);\n\t\tif (!found.ok) return found;\n\t\tif (!found.value) return { ok: false, error: { code: \"UnknownTask\", message: \"No agent runner bound to task\" } };\n\t\treturn { ok: true, value: found.value };\n\t}\n\n\tasync waitForTaskId(\n\t\towner: OwnerLease,\n\t\ttaskId: C.TaskId,\n\t\tbudgetMs?: number,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst found = mapped(this.#native.lookupTask(this.#owner(owner).native, taskId), (lease) => lease, waitErrors);\n\t\tif (!found.ok) return found;\n\t\tconst known = this.#owner(owner).tasks.get(taskId);\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tfound.value,\n\t\t\t\tthis.#agentBudget(\n\t\t\t\t\tthis.#owner(owner),\n\t\t\t\t\tbudgetMs,\n\t\t\t\t\tknown !== undefined && this.#task(known).kind === \"command\",\n\t\t\t\t),\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\treturn registered.ok ? this.observeTaskWait(registered.value) : registered;\n\t}\n\tasync foregroundTask(task: TaskLease, budgetMs?: number): Promise<C.Result<C.WaitOutcome, C.ForegroundError>> {\n\t\tconst state = this.#task(task);\n\t\tconst errors = [\"TaskTerminal\", \"OwnerClosing\", \"UnknownTask\", \"ObserverCancelled\"] as const;\n\t\tconst registered = mapped(\n\t\t\tthis.#native.foregroundTask(\n\t\t\t\tstate.native,\n\t\t\t\tstate.owner.host.native,\n\t\t\t\tthis.#agentBudget(state.owner, budgetMs, state.kind === \"command\"),\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\terrors,\n\t\t);\n\t\treturn registered.ok\n\t\t\t? mapped(await this.observeTaskWait(registered.value), (outcome) => outcome, errors)\n\t\t\t: registered;\n\t}\n\twaitId(wait: WaitLease): C.WaitId {\n\t\treturn this.#wait(wait).native.waitId as C.WaitId;\n\t}\n\tfindWait(id: C.WaitId): WaitLease | undefined {\n\t\treturn this.#waitRegistry.get(id);\n\t}\n\tobserveTaskWait(wait: WaitLease): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\treturn this.#wait(wait).outcome;\n\t}\n\tyieldTaskWait(wait: WaitLease, reason: C.YieldReason): C.Result<C.WaitOutcome, C.YieldError> {\n\t\treturn mapped(this.#native.yieldTaskWait(this.#wait(wait).native, reason), waitOutcome, [\n\t\t\t\"UnknownWait\",\n\t\t\t\"StaleGeneration\",\n\t\t\t\"ObserverCancelled\",\n\t\t]);\n\t}\n\tdisposeTaskWait(wait: WaitLease): C.Result<void, C.WaitError> {\n\t\treturn mapped(this.#native.disposeTaskWait(this.#wait(wait).native), () => undefined, waitErrors);\n\t}\n\tasync initialObservation(\n\t\ttask: TaskLease,\n\t\tpolicy?: C.WaitPolicy,\n\t\tonRegistered?: (wait: WaitLease) => void,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst state = this.#task(task);\n\t\tpolicy ??= state.kind === \"command\" ? { kind: \"foreground\" } : undefined;\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tstate.native,\n\t\t\t\tpolicy?.kind === \"foreground\"\n\t\t\t\t\t? this.#agentBudget(state.owner, policy.budgetMs, state.kind === \"command\")\n\t\t\t\t\t: undefined,\n\t\t\t\tstate.owner.host.native,\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\tif (!registered.ok) return registered;\n\t\tonRegistered?.(registered.value);\n\t\tif (policy?.kind !== \"foreground\")\n\t\t\tthis.yieldTaskWait(registered.value, policy ? \"explicit\" : \"default-background\");\n\t\treturn this.observeTaskWait(registered.value);\n\t}\n\tasync cancelTask(task: TaskLease, cause: C.CancelCause): Promise<C.Result<C.CancelReceipt, C.CancelError>> {\n\t\tconst state = this.#task(task);\n\t\tconst result = mapped(this.#native.cancelTask(state.native, cause), cancelReceipt, [\n\t\t\t\"UnknownTask\",\n\t\t\t\"CleanupFailed\",\n\t\t]);\n\t\tif (result.ok && result.value.decision === \"cancellation-requested\") state.controller.abort(cause);\n\t\treturn result;\n\t}\n\tasync closeTaskOwner(\n\t\towner: OwnerLease,\n\t\tcause: C.OwnerCloseCause,\n\t): Promise<C.Result<C.OwnerCloseReceipt, C.CloseError>> {\n\t\tconst state = this.#owner(owner);\n\t\tconst closing = this.#native.closeTaskOwner(state.native, cause);\n\t\tfor (const task of state.tasks.values()) this.#task(task).controller.abort(\"owner-close\");\n\t\tconst result = mapped(\n\t\t\tawait closing,\n\t\t\t(receipt): C.OwnerCloseReceipt => ({\n\t\t\t\townerId: receipt.ownerId as C.OwnerId,\n\t\t\t\tstate: \"closed\",\n\t\t\t\ttasks: receipt.tasks.map(cancelReceipt),\n\t\t\t}),\n\t\t\t[\"CleanupFailed\", \"EnvironmentClosing\"],\n\t\t);\n\t\tif (result.ok)\n\t\t\tfor (const task of state.tasks.values()) {\n\t\t\t\tconst completed = await this.#task(task).execution;\n\t\t\t\tif (completed && !completed.ok)\n\t\t\t\t\tthrow new Error(`Runner protocol failed: ${completed.error.code}: ${completed.error.message}`);\n\t\t\t}\n\t\tif (result.ok)\n\t\t\tfor (const watch of state.watches) {\n\t\t\t\twatch.drain();\n\t\t\t\twatch.dispose(false);\n\t\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * The bounded stream carries only authentic deltas. Overflow/native reset publishes\n\t * snapshot/cursor then ends the current iterator, even with no surviving delta.\n\t * Reconcile on completion; obtain a new iterator on the same events iterable to\n\t * continue observing. Apply snapshots first and ignore deltas at/below their cursor.\n\t * onReconcile is optional; consumer failures never disable the fallback poll.\n\t */\n\twatchOwnerTasks(owner: OwnerLease, from?: C.Cursor): C.Result<TaskSubscription, C.WatchError> {\n\t\tconst state = this.#owner(owner);\n\t\tlet subscription: TaskSubscription | undefined;\n\t\treturn mapped(\n\t\t\tthis.#native.watchOwnerTasks(state.native, (hint) => subscription?.wake(hint), from),\n\t\t\t(initial) => {\n\t\t\t\tsubscription = new TaskSubscription(this.#native, initial, () => {\n\t\t\t\t\tif (subscription) state.watches.delete(subscription);\n\t\t\t\t});\n\t\t\t\tstate.watches.add(subscription);\n\t\t\t\treturn subscription;\n\t\t\t},\n\t\t\twatchErrors,\n\t\t);\n\t}\n\t#agentBudget(owner: OwnerState, budgetMs?: number, command = false): number | undefined {\n\t\tif (budgetMs !== undefined) return budgetMs;\n\t\tconst configuration = owner.host.binding.tasks?.wait;\n\t\tif (configuration?.kind === \"until-settled\") return undefined;\n\t\treturn command\n\t\t\t? (configuration?.commandBudgetMs ?? COMMAND_FOREGROUND_BUDGET_MS)\n\t\t\t: (configuration?.agentBudgetMs ?? DEFAULT_AGENT_WAIT_BUDGET_MS);\n\t}\n\t#register(lease: native.WaitLease): WaitLease {\n\t\tconst wait = new WaitCapability();\n\t\tObject.freeze(wait);\n\t\tconst id = lease.waitId as C.WaitId;\n\t\tthis.#waitRegistry.set(id, wait);\n\t\tconst outcome = this.#native\n\t\t\t.observeTaskWait(lease)\n\t\t\t.then((result) => mapped(result, waitOutcome, waitErrors))\n\t\t\t.finally(() => {\n\t\t\t\tthis.#waitRegistry.delete(id);\n\t\t\t});\n\t\tthis.#waits.set(wait, { native: lease, outcome });\n\t\treturn wait;\n\t}\n\t#host(host: HostSession): HostState {\n\t\tconst state = this.#hosts.get(host);\n\t\tif (!state) throw new TypeError(\"Foreign host capability\");\n\t\treturn state;\n\t}\n\t#owner(owner: OwnerLease): OwnerState {\n\t\tconst state = this.#owners.get(owner);\n\t\tif (!state) throw new TypeError(\"Foreign owner capability\");\n\t\treturn state;\n\t}\n\t#task(task: TaskLease): TaskState {\n\t\tconst state = this.#tasks.get(task);\n\t\tif (!state) throw new TypeError(\"Foreign task capability\");\n\t\treturn state;\n\t}\n\t#wait(wait: WaitLease): WaitState {\n\t\tconst state = this.#waits.get(wait);\n\t\tif (!state) throw new TypeError(\"Foreign wait capability\");\n\t\treturn state;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/core/tasks/supervisor.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncResource } from \"node:async_hooks\";\nimport type * as native from \"@bastani/atomic-natives\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { createModuleRequire } from \"../../utils/module-require.ts\";\nimport type { AgentSessionEvent } from \"../agent-session.js\";\nimport type { SessionManager } from \"../session-manager.ts\";\nimport { COMMAND_FOREGROUND_BUDGET_MS } from \"./command-output.js\";\nimport type { TaskCompletionSource } from \"./completion-ordering.js\";\nimport type * as C from \"./contracts.js\";\n\nexport type TaskTranscriptSource = Pick<SessionManager, \"getSessionId\" | \"getEntries\"> & {\n\treadonly completionSource?: TaskCompletionSource;\n\t/** Viewer-only subscription; updates never publish task lifecycle events. */\n\tsubscribe?(listener: (event: AgentSessionEvent) => void): () => void;\n\tgetStreamingMessage?(): AgentMessage | undefined;\n};\n\nexport const DEFAULT_AGENT_WAIT_BUDGET_MS = 30000;\n/** These objects are live authority, not DTOs, restart tokens or model arguments. */\nclass Capability {\n\t#live = true;\n\ttoJSON(): never {\n\t\tthrow new TypeError(`Task capability is not serializable (${this.#live ? \"live\" : \"closed\"})`);\n\t}\n}\nclass HostCapability extends Capability {\n\treadonly kind = \"host\";\n}\nclass OwnerCapability extends Capability {\n\treadonly kind = \"owner\";\n}\nclass TaskCapability extends Capability {\n\treadonly kind = \"task\";\n}\nclass WaitCapability extends Capability {\n\treadonly kind = \"wait\";\n}\nclass SubscriptionCapability extends Capability {\n\treadonly kind = \"subscription\";\n}\nclass StdinCapability extends Capability {\n\treadonly kind = \"stdin\";\n}\nexport type StdinLease = StdinCapability;\nexport type HostSession = HostCapability;\nexport type OwnerLease = OwnerCapability;\nexport type TaskLease = TaskCapability;\nexport type WaitLease = WaitCapability;\nexport type SubscriptionLease = SubscriptionCapability;\n\nexport type FakeRunnerContext = {\n\tref: C.NativeTaskRef;\n\tsignal: AbortSignal;\n\treportActivity(report: C.ActivityReport): C.Result<C.ReportReceipt, C.ReportError>;\n\t/** Bind existing child history while holding the admitted runner authority. */\n\tbindTranscript(session: TaskTranscriptSource): void;\n};\n/** Independent cleanup evidence: an outcome alone never proves resource release. */\nexport type FakeExecution = { result: Promise<C.TaskResult>; cleanup: Promise<C.Cleanup> };\nexport type TrustedTaskHost = {\n\tscope: C.OwnerScope;\n\t/** Owner-host observation settings; never an execution deadline. */\n\ttasks?: { wait?: C.TaskWaitConfiguration };\n\t/** The existing host/tool refusal throws here, before native admission. */\n\tauthorizeCommandLaunch?(intent: C.CommandIntent): void;\n\tauthorizeLaunch(intent: C.AgentIntent): void;\n\tonTaskSettled?(ref: C.NativeTaskRef, receipt: C.SettlementReceipt): void;\n\tcreateRunner(context: FakeRunnerContext, intent: C.AgentIntent): FakeExecution;\n};\ntype HostState = { native: native.HostSession; binding: TrustedTaskHost };\ntype OwnerState = {\n\tnative: native.OwnerLease;\n\thost: HostState;\n\ttasks: Map<C.TaskId, TaskLease>;\n\twatches: Set<TaskSubscription>;\n\tsettledTasks: Set<C.TaskId>;\n\tcommandAdmissions: Set<Promise<void>>;\n};\ntype TaskState = {\n\tnative: native.TaskLease;\n\towner: OwnerState;\n\tref: C.NativeTaskRef;\n\tcontroller: AbortController;\n\tkind?: \"command\";\n\texecution?: Promise<C.Result<C.Cleanup, C.ReportError>>;\n\ttranscript?: TaskTranscriptSource;\n};\ntype WaitState = { native: native.WaitLease; outcome: Promise<C.Result<C.WaitOutcome, C.WaitError>> };\n\n// Native supervisors share one actor per environment; their JS continuations must too.\nconst environment = {\n\thosts: new WeakMap<HostSession, HostState>(),\n\towners: new WeakMap<OwnerLease, OwnerState>(),\n\ttasks: new WeakMap<TaskLease, TaskState>(),\n\tinputs: new WeakMap<StdinLease, native.StdinLease>(),\n\twaits: new WeakMap<WaitLease, WaitState>(),\n\twaitRegistry: new Map<C.WaitId, WaitLease>(),\n\townerIds: new Map<C.OwnerId, OwnerLease>(),\n};\n\n/** Reads only history bound by the admitted runner, never a caller-selected session. */\nexport function taskTranscriptSource(\n\ttask: TaskLease,\n): C.Result<{ session: TaskTranscriptSource; taskId: C.TaskId }, C.Failure<\"UnknownTask\" | \"TranscriptUnavailable\">> {\n\tconst state = environment.tasks.get(task);\n\tif (!state) return { ok: false, error: { code: \"UnknownTask\", message: \"Unknown task\" } };\n\tif (!state.transcript)\n\t\treturn { ok: false, error: { code: \"TranscriptUnavailable\", message: \"Transcript unavailable\" } };\n\treturn { ok: true, value: { session: state.transcript, taskId: state.ref.taskId } };\n}\n\n/** Promise rejections, setup throws and consumer exceptions may be arbitrary JavaScript values. */\nfunction rejectionMessage<T>(reason: T): string {\n\ttry {\n\t\tconst message = reason instanceof Error ? reason.message : reason;\n\t\treturn typeof message === \"string\" ? message : String(message);\n\t} catch {\n\t\treturn \"Unprintable JavaScript rejection\";\n\t}\n}\nfunction mapped<T, U, Code extends string>(\n\tresult: C.Result<T, native.TaskFailure>,\n\tconvert: (value: T) => U,\n\tcodes: readonly Code[],\n): C.Result<U, C.Failure<Code>> {\n\tif (result.ok) return { ok: true, value: convert(result.value) };\n\tconst code = codes.find((candidate) => candidate === result.error.code);\n\tif (!code) throw new Error(`Unexpected native task refusal: ${result.error.code}: ${result.error.message}`);\n\treturn { ok: false, error: { code, message: result.error.message } };\n}\nconst ownerErrors = [\"ScopeMismatch\", \"EnvironmentClosing\"] as const;\nconst startErrors = [\n\t\"OwnerClosing\",\n\t\"UnknownAgent\",\n\t\"InvalidCwd\",\n\t\"DepthExceeded\",\n\t\"CapacityExhausted\",\n\t\"DispatchGuardBusy\",\n\t\"OperationConflict\",\n\t\"RunnerUnavailable\",\n\t\"SpawnFailed\",\n\t\"ContainmentUnavailable\",\n] as const;\nconst waitErrors = [\"UnknownTask\", \"OwnerClosed\", \"EnvironmentClosing\", \"ScopeMismatch\", \"ObserverCancelled\"] as const;\nconst reportErrors = [\"StaleAttempt\", \"OwnerClosing\", \"TaskTerminal\", \"ReportConflict\"] as const;\nconst watchErrors = [\"OwnerClosed\", \"StaleGeneration\", \"EnvironmentClosing\"] as const;\nfunction reference(value: native.NativeTaskRef): C.NativeTaskRef {\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tattemptId: value.attemptId as C.AttemptId,\n\t\tgeneration: value.generation as C.Generation,\n\t};\n}\nfunction cursor(value: native.Cursor): C.Cursor {\n\treturn { generation: value.generation as C.Generation, sequence: value.sequence as C.Sequence };\n}\nfunction output(value: native.OutputRef): C.OutputRef {\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tartifactId: value.artifactId,\n\t\tbyteCount: value.byteCount,\n\t\tomittedRanges: value.omittedRanges.map(({ start, end }) => ({ start, end })),\n\t};\n}\nfunction taskResult(value: native.TaskResult): C.TaskResult {\n\tswitch (value.kind) {\n\t\tcase \"completed\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\toutput: output(value.output),\n\t\t\t\t...(value.exitCode === undefined ? {} : { exitCode: value.exitCode }),\n\t\t\t};\n\t\tcase \"failed\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tcode: value.code,\n\t\t\t\tmessage: value.message,\n\t\t\t\t...(value.output === undefined ? {} : { output: output(value.output) }),\n\t\t\t\t...(value.exitCode === undefined ? {} : { exitCode: value.exitCode }),\n\t\t\t};\n\t\tcase \"cancelled\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tcause: value.cause,\n\t\t\t\t...(value.output === undefined ? {} : { output: output(value.output) }),\n\t\t\t};\n\t}\n}\nfunction execution(value: native.Execution): C.Execution {\n\treturn value.kind === \"settled\" ? { kind: \"settled\", result: taskResult(value.result) } : value;\n}\nfunction observation(value: native.HostObservation): C.HostObservation {\n\tif (value.kind === \"foreground\") return { kind: value.kind, waitId: value.waitId as C.WaitId };\n\tif (value.kind === \"none\" && (value.reason === \"task-settled\" || value.reason === \"owner-closing\"))\n\t\treturn { kind: value.kind, reason: value.reason };\n\tconst reasons = [\n\t\t\"explicit\",\n\t\t\"default-background\",\n\t\t\"elapsed\",\n\t\t\"intercom-coordination\",\n\t\t\"input-needed\",\n\t\t\"not-observed\",\n\t\t\"observer-cancelled\",\n\t] as const;\n\tconst reason = reasons.find((reason) => reason === value.reason);\n\tif (value.kind === \"background\" && reason) return { kind: value.kind, reason };\n\tthrow new Error(\"Invalid native host observation\");\n}\nfunction record(value: native.TaskRecord): C.TaskRecord {\n\tif (value.kind !== \"agent\" && value.kind !== \"command\") throw new Error(`Invalid native task kind: ${value.kind}`);\n\treturn {\n\t\tref: reference(value.ref),\n\t\tlaunchOperationId: value.launchOperationId as C.OperationId,\n\t\t...(value.parentTaskId === undefined ? {} : { parentTaskId: value.parentTaskId as C.TaskId }),\n\t\t...(value.launchGroupId === undefined ? {} : { launchGroupId: value.launchGroupId }),\n\t\tlaunchOrdinal: value.launchOrdinal,\n\t\tkind: value.kind,\n\t\ttitle: value.title,\n\t\t...(value.agentName === undefined ? {} : { agentName: value.agentName }),\n\t\t...(value.model === undefined ? {} : { model: value.model }),\n\t\t...(value.thinking === undefined ? {} : { thinking: value.thinking }),\n\t\texecution: execution(value.execution),\n\t\tobservation: observation(value.observation),\n\t\t...(value.wasBackground === undefined ? {} : { wasBackground: value.wasBackground }),\n\t\tattention: value.attention,\n\t\tcleanup: value.cleanup,\n\t\t...(value.currentAction === undefined\n\t\t\t? {}\n\t\t\t: { currentAction: { tool: value.currentAction.tool, text: value.currentAction.text } }),\n\t\t...(value.metrics === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tmetrics: {\n\t\t\t\t\t\t...(value.metrics.elapsedMs === undefined ? {} : { elapsedMs: value.metrics.elapsedMs }),\n\t\t\t\t\t\t...(value.metrics.toolCount === undefined ? {} : { toolCount: value.metrics.toolCount }),\n\t\t\t\t\t\t...(value.metrics.tokenCount === undefined ? {} : { tokenCount: value.metrics.tokenCount }),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\toutput: output(value.output),\n\t};\n}\nfunction snapshot(value: native.OwnerSnapshot): C.OwnerSnapshot {\n\tif (value.state !== \"open\" && value.state !== \"closing\" && value.state !== \"closed\")\n\t\tthrow new Error(`Invalid native owner state: ${value.state}`);\n\treturn {\n\t\townerId: value.ownerId as C.OwnerId,\n\t\tscope: value.scope,\n\t\tgeneration: value.generation as C.Generation,\n\t\tstate: value.state,\n\t\ttasks: value.tasks.map(record),\n\t\tcursor: cursor(value.cursor),\n\t};\n}\nfunction activity(value: native.ActivityReport): C.ActivityReport {\n\tif (value.change.kind === \"attention-set\" && value.change.attention.kind === \"none\")\n\t\tthrow new Error(\"Native attention-set cannot clear attention\");\n\t// Native tagged variants are owned wire data; only attention-set has a wider generated declaration.\n\treturn value as C.ActivityReport;\n}\nfunction payload(value: native.TaskEvent): C.TaskEvent {\n\tswitch (value.kind) {\n\t\tcase \"task-admitted\":\n\t\t\treturn { kind: value.kind, task: record(value.task) };\n\t\tcase \"task-started\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref) };\n\t\tcase \"wait-started\": {\n\t\t\tif (value.observer !== \"sdk\" && value.observer !== \"host\") throw new Error(\"Invalid native observer\");\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tref: reference(value.ref),\n\t\t\t\twaitId: value.waitId as C.WaitId,\n\t\t\t\tobserver: value.observer,\n\t\t\t};\n\t\t}\n\t\tcase \"wait-yielded\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), waitId: value.waitId as C.WaitId, reason: value.reason };\n\t\tcase \"host-observation-changed\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), observation: observation(value.observation) };\n\t\tcase \"task-activity\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), activity: activity(value.activity) };\n\t\tcase \"task-cancelling\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), cause: value.cause };\n\t\tcase \"task-settled\":\n\t\t\treturn {\n\t\t\t\tkind: value.kind,\n\t\t\t\tref: reference(value.ref),\n\t\t\t\tresult: taskResult(value.result),\n\t\t\t\tcompletionId: value.completionId,\n\t\t\t};\n\t\tcase \"cleanup-changed\":\n\t\t\treturn { kind: value.kind, ref: reference(value.ref), cleanup: value.cleanup };\n\t\tcase \"owner-closing\":\n\t\tcase \"owner-closed\":\n\t\t\treturn { kind: value.kind };\n\t}\n}\nfunction event(value: native.NativeEvent): C.NativeEvent {\n\tif (value.schemaVersion !== 1) throw new Error(\"Unsupported native task event schema\");\n\treturn {\n\t\tschemaVersion: 1,\n\t\tcursor: cursor(value.cursor),\n\t\townerId: value.ownerId as C.OwnerId,\n\t\t...(value.taskId === undefined ? {} : { taskId: value.taskId as C.TaskId }),\n\t\tpayload: payload(value.payload),\n\t};\n}\nfunction waitOutcome(value: native.WaitOutcome): C.WaitOutcome {\n\treturn value.kind === \"settled\"\n\t\t? { kind: value.kind, taskId: value.taskId as C.TaskId, result: taskResult(value.result) }\n\t\t: { kind: value.kind, taskId: value.taskId as C.TaskId, waitId: value.waitId as C.WaitId, reason: value.reason };\n}\nfunction cancelReceipt(value: native.CancelReceipt): C.CancelReceipt {\n\tif (value.decision !== \"already-settled\" && value.decision !== \"cancellation-requested\")\n\t\tthrow new Error(\"Invalid cancellation decision\");\n\treturn {\n\t\ttaskId: value.taskId as C.TaskId,\n\t\tdecision: value.decision,\n\t\texecution: execution(value.execution),\n\t\tcleanup: value.cleanup,\n\t};\n}\n\nfunction reportReceipt(value: native.ReportReceipt): C.ReportReceipt {\n\tif (value.disposition !== \"accepted\" && value.disposition !== \"duplicate\")\n\t\tthrow new Error(\"Invalid report disposition\");\n\treturn { reportId: value.reportId, cursor: cursor(value.cursor), disposition: value.disposition };\n}\n/** Projection only: native ordering remains the sole lifecycle authority. */\nfunction applyEvent(current: C.OwnerSnapshot, value: C.NativeEvent): C.OwnerSnapshot {\n\tconst next: C.OwnerSnapshot = { ...current, tasks: [...current.tasks], cursor: value.cursor };\n\tconst change = value.payload;\n\tif (change.kind === \"owner-closing\") {\n\t\tnext.state = \"closing\";\n\t\tnext.tasks = next.tasks.map((task) =>\n\t\t\ttask.execution.kind === \"settled\" ? task : { ...task, attention: { kind: \"none\" } },\n\t\t);\n\t\treturn next;\n\t}\n\tif (change.kind === \"owner-closed\") {\n\t\tnext.state = \"closed\";\n\t\treturn next;\n\t}\n\tif (change.kind === \"task-admitted\") {\n\t\tnext.tasks.push(change.task);\n\t\treturn next;\n\t}\n\tconst index = next.tasks.findIndex((task) => task.ref.taskId === change.ref.taskId);\n\tif (index < 0) throw new Error(\"Native delta references a task absent from its snapshot\");\n\tconst task: C.TaskRecord = { ...next.tasks[index] };\n\tnext.tasks[index] = task;\n\tswitch (change.kind) {\n\t\tcase \"task-started\":\n\t\t\ttask.execution = { kind: \"running\" };\n\t\t\tbreak;\n\t\tcase \"host-observation-changed\":\n\t\t\ttask.observation = change.observation;\n\t\t\tif (change.observation.kind === \"background\" && change.observation.reason !== \"not-observed\")\n\t\t\t\ttask.wasBackground = true;\n\t\t\tbreak;\n\t\tcase \"task-cancelling\":\n\t\t\ttask.execution = { kind: \"cancelling\", cause: change.cause };\n\t\t\tbreak;\n\t\tcase \"task-settled\":\n\t\t\ttask.execution = { kind: \"settled\", result: change.result };\n\t\t\ttask.attention = { kind: \"none\" };\n\t\t\tif (change.result.output !== undefined) task.output = change.result.output;\n\t\t\tbreak;\n\t\tcase \"cleanup-changed\":\n\t\t\ttask.cleanup = change.cleanup;\n\t\t\tbreak;\n\t\tcase \"task-activity\": {\n\t\t\tconst activity = change.activity.change;\n\t\t\tswitch (activity.kind) {\n\t\t\t\tcase \"action\":\n\t\t\t\t\ttask.currentAction = { tool: activity.tool, text: activity.text };\n\t\t\t\t\tif (task.attention.kind === \"no-recent-activity\") task.attention = { kind: \"none\" };\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"model\":\n\t\t\t\t\ttask.model = activity.model;\n\t\t\t\t\ttask.thinking = activity.thinking;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"metrics\":\n\t\t\t\t\ttask.metrics = {\n\t\t\t\t\t\t...task.metrics,\n\t\t\t\t\t\t...(activity.elapsedMs === undefined ? {} : { elapsedMs: activity.elapsedMs }),\n\t\t\t\t\t\t...(activity.toolCount === undefined ? {} : { toolCount: activity.toolCount }),\n\t\t\t\t\t\t...(activity.tokenCount === undefined ? {} : { tokenCount: activity.tokenCount }),\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"attention-set\":\n\t\t\t\t\ttask.attention = activity.attention;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"attention-clear\":\n\t\t\t\t\tif (task.attention.kind === \"input-needed\" && task.attention.requestId === activity.requestId)\n\t\t\t\t\t\ttask.attention = { kind: \"none\" };\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"output\":\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"wait-started\":\n\t\tcase \"wait-yielded\":\n\t\t\tbreak;\n\t}\n\treturn next;\n}\n/** One bounded wake poll per live subscription, including a journal with no retained event. */\nconst RECONCILE_INTERVAL_MS = 25;\nconst MAX_PENDING_EVENTS = 64;\nexport class TaskSubscription {\n\t#native: native.TaskSupervisor;\n\t#lease: native.SubscriptionLease;\n\t#resource = new AsyncResource(\"TaskSubscription\");\n\t#timer?: ReturnType<typeof setTimeout>;\n\t#queue: C.NativeEvent[] = [];\n\t#epoch = 0;\n\t#next?: (value: IteratorResult<C.NativeEvent>) => void;\n\t#disposed = false;\n\t#snapshot: C.OwnerSnapshot;\n\t#cursor: C.Cursor;\n\t/** Reconciliation supplements the RFC snapshot/cursor/iterable contract. */\n\tonReconcile: (snapshot: C.OwnerSnapshot) => void = () => {};\n\t#onDispose: () => void;\n\t#failure?: Error;\n\treadonly events: AsyncIterable<C.NativeEvent>;\n\treadonly lease: SubscriptionLease = new SubscriptionCapability();\n\n\tconstructor(actor: native.TaskSupervisor, initial: native.NativeTaskSubscription, onDispose: () => void) {\n\t\tObject.freeze(this.lease);\n\t\tthis.#native = actor;\n\t\tthis.#lease = initial.lease;\n\t\tthis.#snapshot = snapshot(initial.snapshot);\n\t\tthis.#cursor = cursor(initial.cursor);\n\t\tthis.#onDispose = onDispose;\n\t\tthis.events = {\n\t\t\t[Symbol.asyncIterator]: () => {\n\t\t\t\tconst epoch = this.#epoch;\n\t\t\t\treturn {\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\tif (epoch !== this.#epoch) return Promise.resolve({ done: true, value: undefined });\n\t\t\t\t\t\tconst value = this.#queue.shift();\n\t\t\t\t\t\tif (value) return Promise.resolve({ done: false, value });\n\t\t\t\t\t\tif (this.#disposed) return Promise.resolve({ done: true, value: undefined });\n\t\t\t\t\t\tif (this.#next) return Promise.reject(new Error(\"Only one pending subscription read is supported\"));\n\t\t\t\t\t\treturn new Promise((resolve) => {\n\t\t\t\t\t\t\tthis.#next = resolve;\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\treturn: async () => {\n\t\t\t\t\t\tif (epoch === this.#epoch) this.dispose();\n\t\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t\tthis.#arm();\n\t}\n\tget snapshot(): C.OwnerSnapshot {\n\t\treturn this.#snapshot;\n\t}\n\tget cursor(): C.Cursor {\n\t\treturn this.#cursor;\n\t}\n\t/** Consumer exceptions are observable without breaking the native wake or fallback poll. */\n\tget failure(): Error | undefined {\n\t\treturn this.#failure;\n\t}\n\t/** Callback payloads are authentic hints; only the journal/snapshot is authoritative. */\n\twake(_hint: native.NativeEvent): void {\n\t\tthis.#resource.runInAsyncScope(() => this.drain());\n\t}\n\t#arm(): void {\n\t\tif (this.#disposed || this.#timer) return;\n\t\tthis.#timer = setTimeout(() => {\n\t\t\tthis.#timer = undefined;\n\t\t\tthis.#resource.runInAsyncScope(() => this.drain());\n\t\t\tthis.#arm();\n\t\t}, RECONCILE_INTERVAL_MS);\n\t\tthis.#timer.unref();\n\t}\n\tdrain(): void {\n\t\tif (this.#disposed) return;\n\t\tconst drained = this.#native.drainOwnerTasks(this.#lease);\n\t\tif (!drained.ok) {\n\t\t\tthis.dispose();\n\t\t\treturn;\n\t\t}\n\t\tconst events = drained.value.events.map(event);\n\t\tif (drained.value.snapshot) this.#snapshot = snapshot(drained.value.snapshot);\n\t\tfor (const value of events) {\n\t\t\tif (BigInt(value.cursor.sequence) > BigInt(this.#snapshot.cursor.sequence))\n\t\t\t\tthis.#snapshot = applyEvent(this.#snapshot, value);\n\t\t}\n\t\tthis.#cursor = cursor(drained.value.cursor);\n\t\tthis.#snapshot = { ...this.#snapshot, cursor: this.#cursor };\n\t\tconst overflow = this.#queue.length + events.length > MAX_PENDING_EVENTS;\n\t\tconst reset = drained.value.reset || overflow;\n\t\tif (reset) {\n\t\t\tthis.#queue = [];\n\t\t\tthis.#epoch++;\n\t\t\t// End the old iterator only after publishing the authoritative snapshot/cursor.\n\t\t\t// A new iterator on the same iterable observes subsequent authentic deltas.\n\t\t\tthis.#next?.({ done: true, value: undefined });\n\t\t\tthis.#next = undefined;\n\t\t}\n\t\tif (drained.value.snapshot || events.length) {\n\t\t\ttry {\n\t\t\t\tthis.#resource.runInAsyncScope(this.onReconcile, undefined, this.#snapshot);\n\t\t\t} catch (error) {\n\t\t\t\tthis.#failure = new Error(rejectionMessage(error));\n\t\t\t}\n\t\t}\n\t\tif (this.#disposed) return;\n\t\tif (!reset)\n\t\t\tfor (const value of events) {\n\t\t\t\tif (this.#next) {\n\t\t\t\t\tconst next = this.#next;\n\t\t\t\t\tthis.#next = undefined;\n\t\t\t\t\tnext({ done: false, value });\n\t\t\t\t} else this.#queue.push(value);\n\t\t\t}\n\t\tif (this.#snapshot.state === \"closed\") this.dispose(false);\n\t}\n\tdispose(clear = true): void {\n\t\tif (this.#disposed) return;\n\t\tthis.#disposed = true;\n\t\tif (this.#timer) clearTimeout(this.#timer);\n\t\tthis.#timer = undefined;\n\t\tthis.#native.disposeSubscription(this.#lease);\n\t\tif (clear) this.#queue = [];\n\t\tthis.#next?.({ done: true, value: undefined });\n\t\tthis.#next = undefined;\n\t\tthis.#resource.emitDestroy();\n\t\tthis.#onDispose();\n\t}\n}\n\nfunction createNativeSupervisor(): native.TaskSupervisor {\n\t// Keep loading separate from `new`: type-assertion erasure in the build\n\t// must not move construction onto createModuleRequire instead of the class.\n\tconst binding = createModuleRequire(import.meta.url)(\"@bastani/atomic-natives\") as typeof native;\n\treturn new binding.TaskSupervisor();\n}\n\nexport class TaskSupervisor {\n\t#native = createNativeSupervisor();\n\t#hosts = environment.hosts;\n\t#owners = environment.owners;\n\t#tasks = environment.tasks;\n\t#waits = environment.waits;\n\t#waitRegistry = environment.waitRegistry;\n\t#ownerIds = environment.ownerIds;\n\tbindHostSession(binding: TrustedTaskHost): HostSession {\n\t\tconst host = new HostCapability();\n\t\tObject.freeze(host);\n\t\tthis.#hosts.set(host, { native: this.#native.bindHostSession(binding.scope), binding });\n\t\treturn host;\n\t}\n\topenTaskOwner(host: HostSession, scope: C.OwnerScope): C.Result<OwnerLease, C.OwnerError> {\n\t\tconst state = this.#host(host);\n\t\treturn mapped(\n\t\t\tthis.#native.openTaskOwner(state.native, scope),\n\t\t\t(lease) => {\n\t\t\t\tconst probe = this.#native.watchOwnerTasks(lease, (_hint) => {});\n\t\t\t\tif (!probe.ok) throw new Error(probe.error.message);\n\t\t\t\tconst id = probe.value.snapshot.ownerId as C.OwnerId;\n\t\t\t\tthis.#native.disposeSubscription(probe.value.lease);\n\t\t\t\tconst existing = this.#ownerIds.get(id);\n\t\t\t\tif (existing) return existing;\n\t\t\t\tconst owner = new OwnerCapability();\n\t\t\t\tObject.freeze(owner);\n\t\t\t\tconst ownerState: OwnerState = {\n\t\t\t\t\tnative: lease,\n\t\t\t\t\thost: state,\n\t\t\t\t\ttasks: new Map(),\n\t\t\t\t\twatches: new Set(),\n\t\t\t\t\tsettledTasks: new Set(),\n\t\t\t\t\tcommandAdmissions: new Set(),\n\t\t\t\t};\n\t\t\t\tthis.#owners.set(owner, ownerState);\n\t\t\t\tthis.#ownerIds.set(id, owner);\n\t\t\t\tconst watched = this.watchOwnerTasks(owner);\n\t\t\t\tif (!watched.ok) throw new Error(watched.error.message);\n\t\t\t\twatched.value.onReconcile = (projection) => {\n\t\t\t\t\tif (projection.state === \"closed\") this.#ownerIds.delete(projection.ownerId);\n\t\t\t\t\tfor (const record of projection.tasks) {\n\t\t\t\t\t\tconst cause =\n\t\t\t\t\t\t\trecord.execution.kind === \"cancelling\"\n\t\t\t\t\t\t\t\t? record.execution.cause\n\t\t\t\t\t\t\t\t: projection.state !== \"open\" && record.cleanup.kind !== \"reaped\"\n\t\t\t\t\t\t\t\t\t? \"owner-close\"\n\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\tif (!cause) continue;\n\t\t\t\t\t\tconst task = this.#owner(owner).tasks.get(record.ref.taskId);\n\t\t\t\t\t\tif (task) this.#task(task).controller.abort(cause);\n\t\t\t\t\t}\n\t\t\t\t\tlet failure: Error | undefined;\n\t\t\t\t\tfor (const record of projection.tasks) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trecord.execution.kind !== \"settled\" ||\n\t\t\t\t\t\t\townerState.settledTasks.has(record.ref.taskId) ||\n\t\t\t\t\t\t\t!state.binding.onTaskSettled\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Cancellation settles at cleanup (or while queued), without a runner outcome.\n\t\t\t\t\t\t\t// Recover its authentic receipt even when the bounded journal has reset.\n\t\t\t\t\t\t\tconst task = this.#native.lookupTask(lease, record.ref.taskId);\n\t\t\t\t\t\t\tif (!task.ok) throw new Error(task.error.message);\n\t\t\t\t\t\t\tconst settled = this.#native.taskSettlement(task.value);\n\t\t\t\t\t\t\tif (!settled.ok) throw new Error(settled.error.message);\n\t\t\t\t\t\t\tthis.#notifyTaskSettled(ownerState, record.ref, settled.value);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tfailure ??= new Error(rejectionMessage(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (failure) throw failure;\n\t\t\t\t};\n\t\t\t\twatched.value.onReconcile(watched.value.snapshot);\n\t\t\t\treturn owner;\n\t\t\t},\n\t\t\townerErrors,\n\t\t);\n\t}\n\t#notifyTaskSettled(state: OwnerState, ref: C.NativeTaskRef, receipt: native.SettlementReceipt): void {\n\t\tif (!state.host.binding.onTaskSettled || state.settledTasks.has(ref.taskId)) return;\n\t\t// Runner outcomes and snapshot recovery share one delivery door. Mark before\n\t\t// host code so reentrant drains or callback failures cannot redeliver.\n\t\tstate.settledTasks.add(ref.taskId);\n\t\tstate.host.binding.onTaskSettled(ref, {\n\t\t\ttaskId: receipt.taskId as C.TaskId,\n\t\t\tcursor: cursor(receipt.cursor),\n\t\t\tresult: taskResult(receipt.result),\n\t\t\tcompletionId: receipt.completionId,\n\t\t});\n\t}\n\tasync startCommandTask(\n\t\towner: OwnerLease,\n\t\tintent: C.CommandIntent,\n\t\toperation: C.OperationId,\n\t): Promise<C.Result<TaskLease, C.StartFailure>> {\n\t\tconst state = this.#owner(owner);\n\t\tstate.host.binding.authorizeCommandLaunch?.(intent);\n\t\t// Native command setup can be admitted before its task lease is visible in JS.\n\t\tlet finishAdmission!: () => void;\n\t\tconst admission = new Promise<void>((resolve) => {\n\t\t\tfinishAdmission = resolve;\n\t\t});\n\t\tstate.commandAdmissions.add(admission);\n\t\ttry {\n\t\t\tconst admitted = mapped(\n\t\t\t\tawait this.#native.startCommandTask(state.native, intent, operation),\n\t\t\t\t(lease) => lease,\n\t\t\t\tstartErrors,\n\t\t\t);\n\t\t\tif (!admitted.ok) return admitted;\n\t\t\tconst ref = this.#native.taskReference(admitted.value);\n\t\t\tif (!ref.ok) throw new Error(ref.error.message);\n\t\t\tconst id = ref.value.taskId as C.TaskId;\n\t\t\tconst existing = state.tasks.get(id);\n\t\t\tif (existing) return { ok: true, value: existing };\n\t\t\tconst task = new TaskCapability();\n\t\t\tthis.#tasks.set(task, {\n\t\t\t\tnative: admitted.value,\n\t\t\t\towner: state,\n\t\t\t\tref: reference(ref.value),\n\t\t\t\tcontroller: new AbortController(),\n\t\t\t\tkind: \"command\",\n\t\t\t});\n\t\t\tstate.tasks.set(id, task);\n\t\t\treturn { ok: true, value: task };\n\t\t} finally {\n\t\t\tstate.commandAdmissions.delete(admission);\n\t\t\tfinishAdmission();\n\t\t}\n\t}\n\t/** Caller must hold launch authorization closed while this snapshot drains. */\n\tasync drainCommandAdmissions(owner: OwnerLease): Promise<void> {\n\t\tawait Promise.all([...this.#owner(owner).commandAdmissions]);\n\t}\n\ttaskStdin(task: TaskLease): C.Result<StdinLease, C.InputError> {\n\t\treturn mapped(\n\t\t\tthis.#native.taskStdin(this.#task(task).native),\n\t\t\t(input) => {\n\t\t\t\tconst lease = new StdinCapability();\n\t\t\t\tenvironment.inputs.set(lease, input);\n\t\t\t\treturn lease;\n\t\t\t},\n\t\t\t[\"TaskTerminal\", \"StdinClosed\", \"UnknownTask\", \"OutputUnavailable\"] as const,\n\t\t);\n\t}\n\tasync writeTaskInput(\n\t\tinput: StdinLease,\n\t\toperation: C.OperationId,\n\t\tdata: C.InputData,\n\t): Promise<C.Result<C.InputReceipt, C.InputError>> {\n\t\tconst lease = environment.inputs.get(input);\n\t\tif (!lease) throw new TypeError(\"Foreign stdin capability\");\n\t\treturn mapped(\n\t\t\tawait this.#native.writeTaskInput(\n\t\t\t\tlease,\n\t\t\t\toperation,\n\t\t\t\tdata.kind === \"bytes\" ? { kind: \"bytes\", bytes: Buffer.from(data.bytes) } : data,\n\t\t\t),\n\t\t\t(value) => ({\n\t\t\t\toperationId: value.operationId as C.OperationId,\n\t\t\t\tacceptedBytes: value.acceptedBytes,\n\t\t\t\tkind: value.kind as \"bytes\" | \"eof\",\n\t\t\t}),\n\t\t\t[\"TaskTerminal\", \"StdinClosed\", \"InputBackpressure\", \"OperationConflict\", \"InputDeliveryUnknown\"] as const,\n\t\t);\n\t}\n\tasync readTaskOutput(task: TaskLease, range: C.OutputRange): Promise<C.Result<C.OutputPage, C.OutputError>> {\n\t\treturn mapped(\n\t\t\tawait this.#native.readTaskOutput(this.#task(task).native, range),\n\t\t\t(page) => ({\n\t\t\t\trequested: page.requested,\n\t\t\t\tchunks: page.chunks.map((chunk) => ({ offsets: chunk.offsets, bytes: new Uint8Array(chunk.bytes) })),\n\t\t\t\tomittedRanges: page.omittedRanges,\n\t\t\t\t...(page.nextOffset === undefined ? {} : { nextOffset: page.nextOffset }),\n\t\t\t}),\n\t\t\t[\"UnknownTask\", \"OutputUnavailable\"] as const,\n\t\t);\n\t}\n\tasync startAgentTask(\n\t\towner: OwnerLease,\n\t\tintent: C.AgentIntent,\n\t\toperation: C.OperationId,\n\t\tschedule?: (dispatch: () => Promise<void>) => void,\n\t): Promise<C.Result<TaskLease, C.StartFailure>> {\n\t\tconst state = this.#owner(owner);\n\t\tstate.host.binding.authorizeLaunch(intent);\n\t\tconst admitted = mapped(\n\t\t\tthis.#native.startAgentTask(state.native, intent, operation),\n\t\t\t(lease) => lease,\n\t\t\tstartErrors,\n\t\t);\n\t\tif (!admitted.ok) return admitted;\n\t\tconst ref = this.#native.taskReference(admitted.value);\n\t\tif (!ref.ok) throw new Error(ref.error.message);\n\t\tconst id = ref.value.taskId as C.TaskId;\n\t\tconst existing = state.tasks.get(id);\n\t\tif (existing) return { ok: true, value: existing };\n\t\tconst task = new TaskCapability();\n\t\tObject.freeze(task);\n\t\tconst taskState: TaskState = {\n\t\t\tnative: admitted.value,\n\t\t\towner: state,\n\t\t\tref: reference(ref.value),\n\t\t\tcontroller: new AbortController(),\n\t\t};\n\t\tthis.#tasks.set(task, taskState);\n\t\tstate.tasks.set(id, task);\n\t\tconst dispatch = AsyncResource.bind(async () => {\n\t\t\tif (taskState.controller.signal.aborted) return;\n\t\t\tconst runner = mapped(this.#native.claimTaskRunner(admitted.value), (lease) => lease, startErrors);\n\t\t\tif (!runner.ok) throw new Error(`${runner.error.code}: ${runner.error.message}`);\n\t\t\tlet execution: FakeExecution;\n\t\t\ttry {\n\t\t\t\texecution = state.host.binding.createRunner(\n\t\t\t\t\t{\n\t\t\t\t\t\tref: reference(taskState.ref),\n\t\t\t\t\t\tsignal: taskState.controller.signal,\n\t\t\t\t\t\tbindTranscript: (session) => {\n\t\t\t\t\t\t\ttaskState.transcript = session;\n\t\t\t\t\t\t},\n\t\t\t\t\t\treportActivity: (report) =>\n\t\t\t\t\t\t\tmapped(this.#native.reportTaskActivity(runner.value, report), reportReceipt, reportErrors),\n\t\t\t\t\t},\n\t\t\t\t\tintent,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = rejectionMessage(error);\n\t\t\t\texecution = {\n\t\t\t\t\tresult: Promise.resolve({ kind: \"failed\", code: \"SpawnFailed\", message }),\n\t\t\t\t\tcleanup: Promise.resolve({\n\t\t\t\t\t\tkind: \"failed\",\n\t\t\t\t\t\tresources: [{ resource: \"fake-runner-setup\", code: \"CleanupUnconfirmed\", message }],\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst outcome = execution.result\n\t\t\t\t.catch((error) => ({ kind: \"failed\" as const, code: \"RunnerFailed\", message: rejectionMessage(error) }))\n\t\t\t\t.then((result) => {\n\t\t\t\t\treturn mapped(\n\t\t\t\t\t\tthis.#native.reportRunnerOutcome(runner.value, result),\n\t\t\t\t\t\t(receipt) => this.#notifyTaskSettled(state, taskState.ref, receipt),\n\t\t\t\t\t\treportErrors,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\tconst cleanup = execution.cleanup.catch(\n\t\t\t\t(error): C.Cleanup => ({\n\t\t\t\t\tkind: \"failed\",\n\t\t\t\t\tresources: [{ resource: \"fake-runner\", code: \"CleanupFailed\", message: rejectionMessage(error) }],\n\t\t\t\t}),\n\t\t\t);\n\t\t\ttaskState.execution = cleanup.then(async (evidence) => {\n\t\t\t\t// Natural reaping follows its outcome; cancellation needs only confirmed stop.\n\t\t\t\t// A result may never arrive after abort, including when cleanup arrived first.\n\t\t\t\tconst signal = taskState.controller.signal;\n\t\t\t\tlet stopped!: () => void;\n\t\t\t\tconst cancelled = new Promise<undefined>((resolve) => {\n\t\t\t\t\tstopped = () => resolve(undefined);\n\t\t\t\t\tif (signal.aborted) stopped();\n\t\t\t\t\telse signal.addEventListener(\"abort\", stopped, { once: true });\n\t\t\t\t});\n\t\t\t\tconst reported = await Promise.race([outcome, cancelled]).finally(() => {\n\t\t\t\t\tsignal.removeEventListener(\"abort\", stopped);\n\t\t\t\t});\n\t\t\t\tconst acknowledged = mapped(\n\t\t\t\t\tthis.#native.acknowledgeTaskCleanup(runner.value, evidence),\n\t\t\t\t\t(cleanup) => cleanup,\n\t\t\t\t\treportErrors,\n\t\t\t\t);\n\t\t\t\tif (reported && !reported.ok && !(signal.aborted && reported.error.code === \"ReportConflict\"))\n\t\t\t\t\treturn reported;\n\t\t\t\treturn acknowledged;\n\t\t\t});\n\t\t\tawait taskState.execution;\n\t\t});\n\t\tif (schedule) schedule(dispatch);\n\t\telse void dispatch();\n\t\t// Setup is complete. Do not await execution; ready terminal microtasks may win observation.\n\t\tawait Promise.resolve();\n\t\treturn { ok: true, value: task };\n\t}\n\ttaskReference(task: TaskLease): C.NativeTaskRef {\n\t\treturn reference(this.#task(task).ref);\n\t}\n\tasync waitForTask(\n\t\ttask: TaskLease,\n\t\tbudgetMs?: number,\n\t\tdesignation?: HostSession,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tthis.#task(task).native,\n\t\t\t\tthis.#agentBudget(this.#task(task).owner, budgetMs, this.#task(task).kind === \"command\"),\n\t\t\t\tdesignation ? this.#host(designation).native : undefined,\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\treturn registered.ok ? this.observeTaskWait(registered.value) : registered;\n\t}\n\t/** Resolve only a task admitted under this live owner; IDs alone confer no authority. */\n\tlookupTask(owner: OwnerLease, taskId: C.TaskId): C.Result<TaskLease, C.WaitError> {\n\t\tconst state = this.#owner(owner);\n\t\tconst found = mapped(this.#native.lookupTask(state.native, taskId), () => state.tasks.get(taskId), waitErrors);\n\t\tif (!found.ok) return found;\n\t\tif (!found.value) return { ok: false, error: { code: \"UnknownTask\", message: \"No agent runner bound to task\" } };\n\t\treturn { ok: true, value: found.value };\n\t}\n\n\tasync waitForTaskId(\n\t\towner: OwnerLease,\n\t\ttaskId: C.TaskId,\n\t\tbudgetMs?: number,\n\t\tonRegistered?: (wait: WaitLease) => void,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst found = mapped(this.#native.lookupTask(this.#owner(owner).native, taskId), (lease) => lease, waitErrors);\n\t\tif (!found.ok) return found;\n\t\tconst known = this.#owner(owner).tasks.get(taskId);\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tfound.value,\n\t\t\t\tthis.#agentBudget(\n\t\t\t\t\tthis.#owner(owner),\n\t\t\t\t\tbudgetMs,\n\t\t\t\t\tknown !== undefined && this.#task(known).kind === \"command\",\n\t\t\t\t),\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\tif (!registered.ok) return registered;\n\t\tonRegistered?.(registered.value);\n\t\treturn this.observeTaskWait(registered.value);\n\t}\n\tasync foregroundTask(task: TaskLease, budgetMs?: number): Promise<C.Result<C.WaitOutcome, C.ForegroundError>> {\n\t\tconst state = this.#task(task);\n\t\tconst errors = [\"TaskTerminal\", \"OwnerClosing\", \"UnknownTask\", \"ObserverCancelled\"] as const;\n\t\tconst registered = mapped(\n\t\t\tthis.#native.foregroundTask(\n\t\t\t\tstate.native,\n\t\t\t\tstate.owner.host.native,\n\t\t\t\tthis.#agentBudget(state.owner, budgetMs, state.kind === \"command\"),\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\terrors,\n\t\t);\n\t\treturn registered.ok\n\t\t\t? mapped(await this.observeTaskWait(registered.value), (outcome) => outcome, errors)\n\t\t\t: registered;\n\t}\n\twaitId(wait: WaitLease): C.WaitId {\n\t\treturn this.#wait(wait).native.waitId as C.WaitId;\n\t}\n\tfindWait(id: C.WaitId): WaitLease | undefined {\n\t\treturn this.#waitRegistry.get(id);\n\t}\n\tobserveTaskWait(wait: WaitLease): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\treturn this.#wait(wait).outcome;\n\t}\n\tyieldTaskWait(wait: WaitLease, reason: C.YieldReason): C.Result<C.WaitOutcome, C.YieldError> {\n\t\treturn mapped(this.#native.yieldTaskWait(this.#wait(wait).native, reason), waitOutcome, [\n\t\t\t\"UnknownWait\",\n\t\t\t\"StaleGeneration\",\n\t\t\t\"ObserverCancelled\",\n\t\t]);\n\t}\n\tdisposeTaskWait(wait: WaitLease): C.Result<void, C.WaitError> {\n\t\treturn mapped(this.#native.disposeTaskWait(this.#wait(wait).native), () => undefined, waitErrors);\n\t}\n\tasync initialObservation(\n\t\ttask: TaskLease,\n\t\tpolicy?: C.WaitPolicy,\n\t\tonRegistered?: (wait: WaitLease) => void,\n\t): Promise<C.Result<C.WaitOutcome, C.WaitError>> {\n\t\tconst state = this.#task(task);\n\t\tpolicy ??= state.kind === \"command\" ? { kind: \"foreground\" } : undefined;\n\t\tconst registered = mapped(\n\t\t\tthis.#native.waitForTask(\n\t\t\t\tstate.native,\n\t\t\t\tpolicy?.kind === \"foreground\"\n\t\t\t\t\t? this.#agentBudget(state.owner, policy.budgetMs, state.kind === \"command\")\n\t\t\t\t\t: undefined,\n\t\t\t\tstate.owner.host.native,\n\t\t\t),\n\t\t\t(lease) => this.#register(lease),\n\t\t\twaitErrors,\n\t\t);\n\t\tif (!registered.ok) return registered;\n\t\tonRegistered?.(registered.value);\n\t\tif (policy?.kind !== \"foreground\")\n\t\t\tthis.yieldTaskWait(registered.value, policy ? \"explicit\" : \"default-background\");\n\t\treturn this.observeTaskWait(registered.value);\n\t}\n\tasync cancelTask(task: TaskLease, cause: C.CancelCause): Promise<C.Result<C.CancelReceipt, C.CancelError>> {\n\t\tconst state = this.#task(task);\n\t\tconst result = mapped(this.#native.cancelTask(state.native, cause), cancelReceipt, [\n\t\t\t\"UnknownTask\",\n\t\t\t\"CleanupFailed\",\n\t\t]);\n\t\tif (result.ok && result.value.decision === \"cancellation-requested\") state.controller.abort(cause);\n\t\treturn result;\n\t}\n\tasync closeTaskOwner(\n\t\towner: OwnerLease,\n\t\tcause: C.OwnerCloseCause,\n\t): Promise<C.Result<C.OwnerCloseReceipt, C.CloseError>> {\n\t\tconst state = this.#owner(owner);\n\t\tconst closing = this.#native.closeTaskOwner(state.native, cause);\n\t\tfor (const task of state.tasks.values()) this.#task(task).controller.abort(\"owner-close\");\n\t\tconst result = mapped(\n\t\t\tawait closing,\n\t\t\t(receipt): C.OwnerCloseReceipt => ({\n\t\t\t\townerId: receipt.ownerId as C.OwnerId,\n\t\t\t\tstate: \"closed\",\n\t\t\t\ttasks: receipt.tasks.map(cancelReceipt),\n\t\t\t}),\n\t\t\t[\"CleanupFailed\", \"EnvironmentClosing\"],\n\t\t);\n\t\tif (result.ok)\n\t\t\tfor (const task of state.tasks.values()) {\n\t\t\t\tconst completed = await this.#task(task).execution;\n\t\t\t\tif (completed && !completed.ok)\n\t\t\t\t\tthrow new Error(`Runner protocol failed: ${completed.error.code}: ${completed.error.message}`);\n\t\t\t}\n\t\tif (result.ok)\n\t\t\tfor (const watch of state.watches) {\n\t\t\t\twatch.drain();\n\t\t\t\twatch.dispose(false);\n\t\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * The bounded stream carries only authentic deltas. Overflow/native reset publishes\n\t * snapshot/cursor then ends the current iterator, even with no surviving delta.\n\t * Reconcile on completion; obtain a new iterator on the same events iterable to\n\t * continue observing. Apply snapshots first and ignore deltas at/below their cursor.\n\t * onReconcile is optional; consumer failures never disable the fallback poll.\n\t */\n\twatchOwnerTasks(owner: OwnerLease, from?: C.Cursor): C.Result<TaskSubscription, C.WatchError> {\n\t\tconst state = this.#owner(owner);\n\t\tlet subscription: TaskSubscription | undefined;\n\t\treturn mapped(\n\t\t\tthis.#native.watchOwnerTasks(state.native, (hint) => subscription?.wake(hint), from),\n\t\t\t(initial) => {\n\t\t\t\tsubscription = new TaskSubscription(this.#native, initial, () => {\n\t\t\t\t\tif (subscription) state.watches.delete(subscription);\n\t\t\t\t});\n\t\t\t\tstate.watches.add(subscription);\n\t\t\t\treturn subscription;\n\t\t\t},\n\t\t\twatchErrors,\n\t\t);\n\t}\n\t#agentBudget(owner: OwnerState, budgetMs?: number, command = false): number | undefined {\n\t\tif (budgetMs !== undefined) return budgetMs;\n\t\tconst configuration = owner.host.binding.tasks?.wait;\n\t\tif (configuration?.kind === \"until-settled\") return undefined;\n\t\treturn command\n\t\t\t? (configuration?.commandBudgetMs ?? COMMAND_FOREGROUND_BUDGET_MS)\n\t\t\t: (configuration?.agentBudgetMs ?? DEFAULT_AGENT_WAIT_BUDGET_MS);\n\t}\n\t#register(lease: native.WaitLease): WaitLease {\n\t\tconst wait = new WaitCapability();\n\t\tObject.freeze(wait);\n\t\tconst id = lease.waitId as C.WaitId;\n\t\tthis.#waitRegistry.set(id, wait);\n\t\tconst outcome = this.#native\n\t\t\t.observeTaskWait(lease)\n\t\t\t.then((result) => mapped(result, waitOutcome, waitErrors))\n\t\t\t.finally(() => {\n\t\t\t\tthis.#waitRegistry.delete(id);\n\t\t\t});\n\t\tthis.#waits.set(wait, { native: lease, outcome });\n\t\treturn wait;\n\t}\n\t#host(host: HostSession): HostState {\n\t\tconst state = this.#hosts.get(host);\n\t\tif (!state) throw new TypeError(\"Foreign host capability\");\n\t\treturn state;\n\t}\n\t#owner(owner: OwnerLease): OwnerState {\n\t\tconst state = this.#owners.get(owner);\n\t\tif (!state) throw new TypeError(\"Foreign owner capability\");\n\t\treturn state;\n\t}\n\t#task(task: TaskLease): TaskState {\n\t\tconst state = this.#tasks.get(task);\n\t\tif (!state) throw new TypeError(\"Foreign task capability\");\n\t\treturn state;\n\t}\n\t#wait(wait: WaitLease): WaitState {\n\t\tconst state = this.#waits.get(wait);\n\t\tif (!state) throw new TypeError(\"Foreign wait capability\");\n\t\treturn state;\n\t}\n}\n"]}
|
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
import { type ShellConfig } from "../../utils/shell.ts";
|
|
2
|
-
import type { WaitOutcome, WaitPolicy } from "../tasks/contracts.js";
|
|
3
|
-
import type { OwnerLease, TaskSupervisor } from "../tasks/supervisor.js";
|
|
2
|
+
import type { TaskId, WaitOutcome, WaitPolicy } from "../tasks/contracts.js";
|
|
3
|
+
import type { OwnerLease, TaskSupervisor, WaitLease } from "../tasks/supervisor.js";
|
|
4
|
+
import { type OutputAccumulatorOptions } from "./output-accumulator.ts";
|
|
4
5
|
export declare function resetNativePtyBindingCache(): void;
|
|
5
6
|
export interface SupervisedCommandOwner {
|
|
6
7
|
supervisor: TaskSupervisor;
|
|
7
8
|
owner: OwnerLease;
|
|
9
|
+
waitForTask?: (taskId: TaskId, budgetMs?: number, onRegistered?: (wait: WaitLease) => void) => ReturnType<TaskSupervisor["waitForTaskId"]>;
|
|
8
10
|
}
|
|
9
11
|
export interface SupervisedCommandResult {
|
|
10
12
|
exitCode: number | null;
|
|
11
13
|
observation?: WaitOutcome;
|
|
12
14
|
}
|
|
15
|
+
export declare function waitForSupervisedCommand(context: SupervisedCommandOwner | undefined, id: string, budgetMs?: number, signal?: AbortSignal, outputOptions?: OutputAccumulatorOptions): Promise<{
|
|
16
|
+
content: {
|
|
17
|
+
type: "text";
|
|
18
|
+
text: string;
|
|
19
|
+
}[];
|
|
20
|
+
details: {
|
|
21
|
+
observation: WaitOutcome;
|
|
22
|
+
exitCode?: number | undefined;
|
|
23
|
+
truncation?: import("./truncate.ts").TruncationResult | undefined;
|
|
24
|
+
fullOutputPath?: string | undefined;
|
|
25
|
+
};
|
|
26
|
+
}>;
|
|
13
27
|
export declare function validateBashWait(wait: WaitPolicy | undefined, ownerSupported?: boolean): void;
|
|
14
28
|
export declare function executeSupervisedCommand(command: string, cwd: string, options: NativePtyExecOptions, pty: boolean): Promise<SupervisedCommandResult>;
|
|
15
29
|
export interface NativePtyExecOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash-pty-native.d.ts","sourceRoot":"","sources":["../../../src/core/tools/bash-pty-native.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAe,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"bash-pty-native.d.ts","sourceRoot":"","sources":["../../../src/core/tools/bash-pty-native.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAe,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAa,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAqB,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AA0C3F,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAuBD,MAAM,WAAW,sBAAsB;IACtC,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,KACpC,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;CACjD;AACD,MAAM,WAAW,uBAAuB;IACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC1B;AAKD,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,sBAAsB,GAAG,SAAS,EAC3C,EAAE,EAAE,MAAM,EACV,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,EACpB,aAAa,CAAC,EAAE,wBAAwB;;cAsD9B,MAAM;;;;;;;;;GAgBhB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,cAAc,UAAO,GAAG,IAAI,CAc1F;AAED,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,oBAAoB,EAC7B,GAAG,EAAE,OAAO,GACV,OAAO,CAAC,uBAAuB,CAAC,CAkGlC;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACnC;AAED,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CA6ClC"}
|
|
@@ -2,6 +2,8 @@ import { setTimeout as poll } from "node:timers/promises";
|
|
|
2
2
|
import { createChildProcessEnvironment } from "../../utils/child-process.js";
|
|
3
3
|
import { createModuleRequire } from "../../utils/module-require.js";
|
|
4
4
|
import { getShellConfig, getShellEnv } from "../../utils/shell.js";
|
|
5
|
+
import { OutputAccumulator } from "./output-accumulator.js";
|
|
6
|
+
import { completeUtf8PrefixLength } from "./persisted-output-file.js";
|
|
5
7
|
const NATIVE_PACKAGE = "@bastani/atomic-natives";
|
|
6
8
|
let cachedLoadResult;
|
|
7
9
|
export function resetNativePtyBindingCache() {
|
|
@@ -27,6 +29,86 @@ function loadNativePtyBinding() {
|
|
|
27
29
|
return cachedLoadResult;
|
|
28
30
|
}
|
|
29
31
|
}
|
|
32
|
+
// Bind progress to the task capability, not a tool instance or replaceable session binding.
|
|
33
|
+
const yieldedOutputOffsets = new WeakMap();
|
|
34
|
+
export async function waitForSupervisedCommand(context, id, budgetMs, signal, outputOptions) {
|
|
35
|
+
if (!context)
|
|
36
|
+
throw new Error("Shell task wait requires a supported task owner");
|
|
37
|
+
if (signal?.aborted)
|
|
38
|
+
throw new Error("aborted");
|
|
39
|
+
const task = context.supervisor.lookupTask(context.owner, id);
|
|
40
|
+
if (!task.ok)
|
|
41
|
+
throw new Error(`${task.error.code}: ${task.error.message}`);
|
|
42
|
+
let lease;
|
|
43
|
+
const abort = () => {
|
|
44
|
+
if (lease)
|
|
45
|
+
context.supervisor.disposeTaskWait(lease);
|
|
46
|
+
};
|
|
47
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
48
|
+
const output = new OutputAccumulator(outputOptions);
|
|
49
|
+
try {
|
|
50
|
+
const registered = (wait) => {
|
|
51
|
+
lease = wait;
|
|
52
|
+
if (signal?.aborted)
|
|
53
|
+
abort();
|
|
54
|
+
};
|
|
55
|
+
const observed = await (context.waitForTask
|
|
56
|
+
? context.waitForTask(id, budgetMs, registered)
|
|
57
|
+
: context.supervisor.waitForTaskId(context.owner, id, budgetMs, registered));
|
|
58
|
+
if (signal?.aborted)
|
|
59
|
+
throw new Error("aborted");
|
|
60
|
+
if (!observed.ok)
|
|
61
|
+
throw new Error(`${observed.error.code}: ${observed.error.message}`);
|
|
62
|
+
let offset = observed.value.kind === "yielded" ? (yieldedOutputOffsets.get(task.value) ?? "0") : "0";
|
|
63
|
+
let nextOffset;
|
|
64
|
+
do {
|
|
65
|
+
const page = await context.supervisor.readTaskOutput(task.value, { start: offset, maximumBytes: 8192 });
|
|
66
|
+
if (!page.ok)
|
|
67
|
+
throw new Error(`${page.error.code}: ${page.error.message}`);
|
|
68
|
+
const segments = [
|
|
69
|
+
...page.value.chunks.map((chunk) => ({ offsets: chunk.offsets, bytes: Buffer.from(chunk.bytes) })),
|
|
70
|
+
...page.value.omittedRanges.map((offsets) => ({
|
|
71
|
+
offsets,
|
|
72
|
+
bytes: Buffer.from(`\n[Output omitted: bytes ${offsets.start}-${offsets.end}]\n`),
|
|
73
|
+
})),
|
|
74
|
+
].sort((a, b) => (BigInt(a.offsets.start) < BigInt(b.offsets.start) ? -1 : 1));
|
|
75
|
+
const bytes = Buffer.concat(segments.map((segment) => segment.bytes));
|
|
76
|
+
const completeBytes = observed.value.kind === "yielded" ? completeUtf8PrefixLength(bytes) : bytes.length;
|
|
77
|
+
output.append(bytes.subarray(0, completeBytes));
|
|
78
|
+
// Re-read an incomplete UTF-8 suffix next time, including at the current live tail.
|
|
79
|
+
nextOffset = page.value.nextOffset ?? segments.at(-1)?.offsets.end ?? offset;
|
|
80
|
+
nextOffset = (BigInt(nextOffset) - BigInt(bytes.length - completeBytes)).toString();
|
|
81
|
+
if (page.value.nextOffset !== undefined && observed.value.kind === "yielded")
|
|
82
|
+
output.append(Buffer.from("\n[Additional output not shown; wait again to retrieve retained output.]\n"));
|
|
83
|
+
offset = observed.value.kind === "yielded" ? undefined : page.value.nextOffset;
|
|
84
|
+
} while (offset !== undefined);
|
|
85
|
+
output.finish();
|
|
86
|
+
const snapshot = output.snapshot({ persistIfTruncated: true });
|
|
87
|
+
await output.closeTempFile();
|
|
88
|
+
if (observed.value.kind === "yielded" && BigInt(nextOffset) > BigInt(yieldedOutputOffsets.get(task.value) ?? "0"))
|
|
89
|
+
yieldedOutputOffsets.set(task.value, nextOffset);
|
|
90
|
+
const terminal = observed.value.kind === "settled" ? observed.value.result : undefined;
|
|
91
|
+
return {
|
|
92
|
+
content: [
|
|
93
|
+
{
|
|
94
|
+
type: "text",
|
|
95
|
+
text: `${snapshot.content || "(no output)"}${snapshot.truncation.truncated ? "\n[Output truncated.]" : ""}\n\n${JSON.stringify(observed.value)}${snapshot.fullOutputPath ? `\nFull output: ${snapshot.fullOutputPath}` : ""}`,
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
details: {
|
|
99
|
+
observation: observed.value,
|
|
100
|
+
...(terminal && "exitCode" in terminal ? { exitCode: terminal.exitCode } : {}),
|
|
101
|
+
...(snapshot.truncation.truncated
|
|
102
|
+
? { truncation: snapshot.truncation, fullOutputPath: snapshot.fullOutputPath }
|
|
103
|
+
: {}),
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
signal?.removeEventListener("abort", abort);
|
|
109
|
+
await output.closeTempFile();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
30
112
|
export function validateBashWait(wait, ownerSupported = true) {
|
|
31
113
|
if (wait === undefined)
|
|
32
114
|
return;
|