@gajae-code/coding-agent 0.10.2 → 0.11.1
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 +58 -2
- package/dist/types/append-only-mode.d.ts +1 -1
- package/dist/types/async/job-manager.d.ts +46 -7
- package/dist/types/cli/args.d.ts +4 -5
- package/dist/types/cli/daemon-cli.d.ts +12 -1
- package/dist/types/cli/notify-cli.d.ts +21 -1
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/commands/daemon.d.ts +39 -0
- package/dist/types/commands/launch.d.ts +3 -0
- package/dist/types/commands/notify.d.ts +28 -1
- package/dist/types/commands/sdk.d.ts +33 -0
- package/dist/types/config/atomic-yaml-patch.d.ts +85 -0
- package/dist/types/config/model-profile-activation.d.ts +35 -15
- package/dist/types/config/model-profiles.d.ts +11 -5
- package/dist/types/config/model-registry.d.ts +3 -3
- package/dist/types/config/model-resolver.d.ts +39 -6
- package/dist/types/config/model-selector-value.d.ts +17 -0
- package/dist/types/config/models-config-schema.d.ts +10 -6
- package/dist/types/config/settings-schema.d.ts +133 -6
- package/dist/types/config/settings.d.ts +63 -35
- package/dist/types/coordinator-mcp/model-preset.d.ts +7 -6
- package/dist/types/coordinator-mcp/server.d.ts +6 -49
- package/dist/types/daemon/builtin.d.ts +6 -5
- package/dist/types/daemon/control-types.d.ts +1 -1
- package/dist/types/discovery/mcp-json.d.ts +12 -1
- package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
- package/dist/types/extensibility/extensions/compact-handler.d.ts +4 -2
- package/dist/types/extensibility/extensions/get-commands-handler.d.ts +2 -2
- package/dist/types/extensibility/extensions/loader.d.ts +10 -1
- package/dist/types/extensibility/extensions/runner.d.ts +3 -3
- package/dist/types/extensibility/extensions/types.d.ts +141 -16
- package/dist/types/extensibility/hooks/types.d.ts +1 -1
- package/dist/types/gjc-runtime/launch-tmux.d.ts +3 -2
- package/dist/types/gjc-runtime/psmux-detect.d.ts +3 -0
- package/dist/types/gjc-runtime/session-state-sidecar.d.ts +3 -0
- package/dist/types/gjc-runtime/team-runtime.d.ts +3 -4
- package/dist/types/gjc-runtime/tmux-owner-isolation-cli.d.ts +13 -0
- package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -1
- package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +11 -0
- package/dist/types/gjc-runtime/windows-powershell-command.d.ts +9 -0
- package/dist/types/harness-control-plane/operate.d.ts +5 -5
- package/dist/types/harness-control-plane/owner.d.ts +18 -4
- package/dist/types/harness-control-plane/receipts.d.ts +0 -1
- package/dist/types/harness-control-plane/sdk-transport.d.ts +43 -0
- package/dist/types/harness-control-plane/session-transport.d.ts +48 -0
- package/dist/types/harness-control-plane/types.d.ts +3 -4
- package/dist/types/lsp/index.d.ts +1 -1
- package/dist/types/main.d.ts +32 -38
- package/dist/types/modes/acp/acp-agent.d.ts +224 -53
- package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -0
- package/dist/types/modes/acp/acp-mode.d.ts +6 -15
- package/dist/types/modes/acp/permission-mode.d.ts +4 -0
- package/dist/types/modes/acp/startup-options.d.ts +6 -0
- package/dist/types/modes/components/agent-dashboard.d.ts +3 -0
- package/dist/types/modes/components/model-selector.d.ts +1 -0
- package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
- package/dist/types/modes/components/settings-selector.d.ts +6 -4
- package/dist/types/modes/components/welcome.d.ts +1 -1
- package/dist/types/modes/controllers/command-controller.d.ts +2 -2
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
- package/dist/types/modes/index.d.ts +0 -4
- package/dist/types/modes/interactive-mode.d.ts +5 -2
- package/dist/types/modes/runtime-init.d.ts +2 -2
- package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
- package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
- package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
- package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
- package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +170 -30
- package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
- package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
- package/dist/types/modes/types.d.ts +7 -2
- package/dist/types/runtime-mcp/client.d.ts +2 -0
- package/dist/types/runtime-mcp/config.d.ts +5 -1
- package/dist/types/runtime-mcp/manager.d.ts +8 -1
- package/dist/types/runtime-mcp/types.d.ts +4 -0
- package/dist/types/sdk/acp/adapter.d.ts +67 -0
- package/dist/types/sdk/acp/index.d.ts +2 -0
- package/dist/types/sdk/broker/broker.d.ts +53 -0
- package/dist/types/sdk/broker/discovery.d.ts +30 -0
- package/dist/types/sdk/broker/ensure.d.ts +42 -0
- package/dist/types/sdk/broker/identity.d.ts +3 -0
- package/dist/types/sdk/broker/index.d.ts +8 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
- package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
- package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
- package/dist/types/sdk/broker/runtime.d.ts +33 -0
- package/dist/types/sdk/broker/session-index.d.ts +57 -0
- package/dist/types/sdk/broker/state-version.d.ts +8 -0
- package/dist/types/sdk/broker/transport.d.ts +9 -0
- package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
- package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
- package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
- package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
- package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
- package/dist/types/sdk/bus/config.d.ts +274 -0
- package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
- package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +50 -0
- package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
- package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
- package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
- package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
- package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
- package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
- package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
- package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
- package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
- package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
- package/dist/types/sdk/bus/session-control.d.ts +83 -0
- package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
- package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
- package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
- package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
- package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
- package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
- package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
- package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +78 -17
- package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
- package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
- package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
- package/dist/types/sdk/cli/index.d.ts +1 -0
- package/dist/types/sdk/cli/session-cli.d.ts +19 -0
- package/dist/types/sdk/client/client.d.ts +1 -0
- package/dist/types/sdk/client/discovery.d.ts +27 -0
- package/dist/types/sdk/client/index.d.ts +2 -0
- package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
- package/dist/types/sdk/host/control/index.d.ts +2 -0
- package/dist/types/sdk/host/control/operations.d.ts +65 -0
- package/dist/types/sdk/host/events.d.ts +35 -0
- package/dist/types/sdk/host/host.d.ts +35 -0
- package/dist/types/sdk/host/index.d.ts +4 -0
- package/dist/types/sdk/host/query/cursor.d.ts +62 -0
- package/dist/types/sdk/host/query/handlers.d.ts +70 -0
- package/dist/types/sdk/host/query/index.d.ts +3 -0
- package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
- package/dist/types/sdk/host/types.d.ts +32 -0
- package/dist/types/sdk/index.d.ts +6 -0
- package/dist/types/sdk/lifecycle-session.d.ts +14 -0
- package/dist/types/sdk/mcp/index.d.ts +1 -0
- package/dist/types/sdk/mcp/server.d.ts +37 -0
- package/dist/types/sdk/models.d.ts +44 -0
- package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
- package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
- package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
- package/dist/types/sdk/startup-capability.d.ts +50 -0
- package/dist/types/session/agent-session.d.ts +114 -21
- package/dist/types/session/default-model-selection.d.ts +25 -0
- package/dist/types/session/fallback-chain-controller.d.ts +52 -0
- package/dist/types/session/session-manager.d.ts +58 -1
- package/dist/types/setup/credential-auto-import.d.ts +36 -6
- package/dist/types/tools/ask-answer-registry.d.ts +1 -1
- package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
- package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
- package/dist/types/tools/browser/launch.d.ts +22 -0
- package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
- package/dist/types/tools/browser/profile-posture.d.ts +37 -0
- package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
- package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
- package/dist/types/tools/browser/registry.d.ts +19 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
- package/dist/types/tools/index.d.ts +8 -8
- package/dist/types/tools/subagent-render.d.ts +1 -0
- package/dist/types/tools/subagent.d.ts +6 -1
- package/package.json +34 -13
- package/scripts/build-sdk-package-smoke.ts +99 -0
- package/scripts/capture-notifications-settings-showcase.ts +435 -0
- package/scripts/compile-args.ts +4 -2
- package/scripts/g005-daemon-smoke.ts +4 -5
- package/scripts/g011-daemon-path-smoke.ts +5 -5
- package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
- package/scripts/generate-sdk-operation-inventory.ts +867 -0
- package/scripts/generate-telegram-baseline-manifest.ts +128 -0
- package/scripts/manifest-schema.ts +124 -0
- package/scripts/run-test-manifest.ts +153 -0
- package/scripts/run-threat-model-check.ts +157 -0
- package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
- package/scripts/verify-gjc-sdk-rename.ts +90 -0
- package/src/append-only-mode.ts +1 -1
- package/src/async/job-manager.ts +406 -63
- package/src/cli/args.ts +43 -12
- package/src/cli/auth-gateway-cli.ts +2 -2
- package/src/cli/config-cli.ts +2 -1
- package/src/cli/daemon-cli.ts +63 -14
- package/src/cli/list-models.ts +1 -1
- package/src/cli/notify-cli.ts +288 -286
- package/src/cli.ts +21 -2
- package/src/commands/daemon.ts +50 -6
- package/src/commands/harness.ts +93 -36
- package/src/commands/launch.ts +5 -2
- package/src/commands/mcp-serve.ts +19 -12
- package/src/commands/notify.ts +36 -3
- package/src/commands/sdk.ts +426 -0
- package/src/commit/agentic/agent.ts +1 -0
- package/src/config/atomic-yaml-patch.ts +423 -0
- package/src/config/model-profile-activation.ts +240 -89
- package/src/config/model-profiles.ts +18 -15
- package/src/config/model-registry.ts +51 -26
- package/src/config/model-resolver.ts +138 -51
- package/src/config/model-selector-value.ts +50 -0
- package/src/config/models-config-schema.ts +14 -21
- package/src/config/settings-schema.ts +128 -10
- package/src/config/settings.ts +1120 -158
- package/src/coordinator-mcp/model-preset.ts +74 -20
- package/src/coordinator-mcp/server.ts +1597 -3052
- package/src/daemon/builtin.ts +8 -5
- package/src/daemon/control-types.ts +1 -1
- package/src/defaults/gjc/skills/team/SKILL.md +4 -4
- package/src/discovery/mcp-json.ts +327 -20
- package/src/extensibility/custom-tools/types.ts +1 -1
- package/src/extensibility/extensions/compact-handler.ts +3 -3
- package/src/extensibility/extensions/get-commands-handler.ts +2 -2
- package/src/extensibility/extensions/loader.ts +69 -5
- package/src/extensibility/extensions/runner.ts +112 -4
- package/src/extensibility/extensions/types.ts +176 -17
- package/src/extensibility/hooks/types.ts +1 -1
- package/src/gjc-runtime/launch-tmux.ts +170 -86
- package/src/gjc-runtime/psmux-detect.ts +82 -4
- package/src/gjc-runtime/session-state-sidecar.ts +41 -31
- package/src/gjc-runtime/team-runtime.ts +54 -35
- package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
- package/src/gjc-runtime/tmux-owner-isolation.ts +1 -1
- package/src/gjc-runtime/tmux-sessions.ts +19 -13
- package/src/gjc-runtime/ultragoal-guard.ts +108 -14
- package/src/gjc-runtime/ultragoal-receipt-freshness.ts +102 -1
- package/src/gjc-runtime/ultragoal-runtime.ts +227 -11
- package/src/gjc-runtime/windows-powershell-command.ts +58 -0
- package/src/harness-control-plane/operate.ts +9 -9
- package/src/harness-control-plane/owner.ts +283 -39
- package/src/harness-control-plane/receipts.ts +0 -1
- package/src/harness-control-plane/sdk-transport.ts +395 -0
- package/src/harness-control-plane/session-transport.ts +94 -0
- package/src/harness-control-plane/types.ts +1 -1
- package/src/internal-urls/docs-index.generated.ts +34 -35
- package/src/lsp/client.ts +42 -6
- package/src/lsp/index.ts +2 -2
- package/src/main.ts +299 -204
- package/src/modes/DESIGN.md +258 -0
- package/src/modes/acp/acp-agent.ts +1228 -2612
- package/src/modes/acp/acp-client-bridge.ts +2 -20
- package/src/modes/acp/acp-event-mapper.ts +18 -2
- package/src/modes/acp/acp-mode.ts +8 -36
- package/src/modes/acp/permission-mode.ts +25 -0
- package/src/modes/acp/startup-options.ts +6 -0
- package/src/modes/components/agent-dashboard.ts +37 -17
- package/src/modes/components/model-selector.ts +93 -35
- package/src/modes/components/notifications-settings-editor.ts +1379 -0
- package/src/modes/components/settings-selector.ts +60 -11
- package/src/modes/components/welcome.ts +4 -4
- package/src/modes/controllers/command-controller.ts +10 -17
- package/src/modes/controllers/event-controller.ts +11 -16
- package/src/modes/controllers/extension-ui-controller.ts +396 -28
- package/src/modes/controllers/selector-controller.ts +674 -36
- package/src/modes/index.ts +0 -22
- package/src/modes/interactive-mode.ts +87 -36
- package/src/modes/runtime-init.ts +298 -6
- package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
- package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
- package/src/modes/shared/agent-wire/event-contract.ts +7 -8
- package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
- package/src/modes/shared/agent-wire/event-observation.ts +16 -7
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1258 -87
- package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
- package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
- package/src/modes/types.ts +7 -2
- package/src/runtime-mcp/client.ts +94 -19
- package/src/runtime-mcp/config.ts +27 -15
- package/src/runtime-mcp/manager.ts +343 -105
- package/src/runtime-mcp/oauth-flow.ts +42 -12
- package/src/runtime-mcp/transports/http.ts +49 -19
- package/src/runtime-mcp/transports/stdio.ts +47 -28
- package/src/runtime-mcp/types.ts +10 -0
- package/src/sdk/acp/adapter.ts +418 -0
- package/src/sdk/acp/index.ts +2 -0
- package/src/sdk/broker/broker.ts +642 -0
- package/src/sdk/broker/discovery.ts +113 -0
- package/src/sdk/broker/ensure.ts +307 -0
- package/src/sdk/broker/identity.ts +42 -0
- package/src/sdk/broker/index.ts +8 -0
- package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
- package/src/sdk/broker/internal-source.bunfig.toml +1 -0
- package/src/sdk/broker/lifecycle-ledger.ts +286 -0
- package/src/sdk/broker/lifecycle.ts +2157 -0
- package/src/sdk/broker/process-incarnation.ts +159 -0
- package/src/sdk/broker/runtime.ts +164 -0
- package/src/sdk/broker/session-index.ts +318 -0
- package/src/sdk/broker/state-version.ts +23 -0
- package/src/sdk/broker/transport.ts +125 -0
- package/src/sdk/bus/chat-command-policy.ts +107 -0
- package/src/sdk/bus/chat-daemon-cli.ts +214 -0
- package/src/sdk/bus/chat-daemon-control.ts +713 -0
- package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
- package/src/sdk/bus/chat-effect-journal.ts +355 -0
- package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
- package/src/sdk/bus/config.ts +433 -0
- package/src/sdk/bus/conversation-store.ts +391 -0
- package/src/sdk/bus/discord-conversation.ts +85 -0
- package/src/sdk/bus/discord-daemon.ts +2292 -0
- package/src/sdk/bus/discord-live-provider.ts +521 -0
- package/src/sdk/bus/discord-provider.ts +56 -0
- package/src/{notifications → sdk/bus}/html-format.ts +2 -2
- package/src/sdk/bus/index.ts +3979 -0
- package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
- package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
- package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
- package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
- package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
- package/src/sdk/bus/natives-augment.d.ts +38 -0
- package/src/sdk/bus/notification-orchestration.ts +535 -0
- package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
- package/src/sdk/bus/session-control.ts +333 -0
- package/src/sdk/bus/slack-conversation.ts +74 -0
- package/src/sdk/bus/slack-daemon.ts +2144 -0
- package/src/sdk/bus/slack-live-provider.ts +380 -0
- package/src/sdk/bus/slack-provider.ts +76 -0
- package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
- package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
- package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
- package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
- package/src/{notifications → sdk/bus}/telegram-daemon.ts +603 -63
- package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
- package/src/sdk/bus/telegram-setup.ts +663 -0
- package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
- package/src/sdk/cli/index.ts +1 -0
- package/src/sdk/cli/session-cli.ts +275 -0
- package/src/sdk/client/client.ts +1 -0
- package/src/sdk/client/discovery.ts +108 -0
- package/src/sdk/client/index.ts +2 -0
- package/src/sdk/host/control/dispatch.ts +367 -0
- package/src/sdk/host/control/index.ts +10 -0
- package/src/sdk/host/control/operations.ts +63 -0
- package/src/sdk/host/events.ts +91 -0
- package/src/sdk/host/host.ts +296 -0
- package/src/sdk/host/index.ts +4 -0
- package/src/sdk/host/query/cursor.ts +189 -0
- package/src/sdk/host/query/handlers.ts +533 -0
- package/src/sdk/host/query/index.ts +3 -0
- package/src/sdk/host/query/revision-store.ts +1126 -0
- package/src/sdk/host/reverse-leases.ts +325 -0
- package/src/sdk/host/types.ts +29 -0
- package/src/sdk/index.ts +13 -0
- package/src/sdk/lifecycle-session.ts +39 -0
- package/src/sdk/mcp/index.ts +1 -0
- package/src/sdk/mcp/server.ts +332 -0
- package/src/sdk/models.ts +168 -0
- package/src/sdk/protocol/adapter-validation.ts +48 -0
- package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
- package/src/sdk/protocol/operation-registry.ts +312 -0
- package/src/{sdk.ts → sdk/session.ts} +339 -212
- package/src/sdk/startup-capability.ts +189 -0
- package/src/session/agent-session.ts +2650 -944
- package/src/session/default-model-selection.ts +93 -0
- package/src/session/fallback-chain-controller.ts +136 -0
- package/src/session/session-manager.ts +438 -11
- package/src/session/session-storage.ts +8 -1
- package/src/setup/credential-auto-import.ts +290 -35
- package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
- package/src/slash-commands/builtin-registry.ts +2 -1
- package/src/task/executor.ts +62 -13
- package/src/task/index.ts +26 -16
- package/src/tools/ask-answer-registry.ts +1 -1
- package/src/tools/ask.ts +13 -8
- package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
- package/src/tools/browser/benchmark/detector-report.ts +157 -0
- package/src/tools/browser/benchmark/run-suite.ts +39 -0
- package/src/tools/browser/launch.ts +124 -19
- package/src/tools/browser/profile-discovery.ts +63 -0
- package/src/tools/browser/profile-posture.ts +59 -0
- package/src/tools/browser/profile-reuse.ts +102 -0
- package/src/tools/browser/profile-warmup.ts +109 -0
- package/src/tools/browser/registry.ts +87 -11
- package/src/tools/browser/tab-protocol.ts +1 -0
- package/src/tools/browser/tab-supervisor.ts +1 -0
- package/src/tools/browser/tab-worker.ts +1 -1
- package/src/tools/browser.ts +6 -0
- package/src/tools/index.ts +8 -8
- package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
- package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
- package/src/tools/subagent-render.ts +19 -8
- package/src/tools/subagent.ts +84 -32
- package/src/tools/telegram-send.ts +2 -2
- package/vendor/insane-search/MANIFEST.json +2 -1
- package/vendor/insane-search/engine/bias_check.py +4 -1
- package/vendor/insane-search/engine/phase0.py +26 -1
- package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
- package/dist/types/modes/bridge/auth.d.ts +0 -12
- package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
- package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
- package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
- package/dist/types/modes/bridge/event-stream.d.ts +0 -8
- package/dist/types/modes/rpc/host-tools.d.ts +0 -1
- package/dist/types/modes/rpc/host-uris.d.ts +0 -1
- package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
- package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
- package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
- package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
- package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
- package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
- package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
- package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
- package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
- package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
- package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
- package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
- package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
- package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
- package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
- package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
- package/dist/types/notifications/config.d.ts +0 -132
- package/src/harness-control-plane/rpc-adapter.ts +0 -290
- package/src/modes/bridge/auth.ts +0 -41
- package/src/modes/bridge/bridge-client-bridge.ts +0 -47
- package/src/modes/bridge/bridge-mode.ts +0 -675
- package/src/modes/bridge/bridge-ui-context.ts +0 -200
- package/src/modes/bridge/event-stream.ts +0 -70
- package/src/modes/rpc/host-tools.ts +0 -1
- package/src/modes/rpc/host-uris.ts +0 -1
- package/src/modes/rpc/rpc-client.ts +0 -1166
- package/src/modes/rpc/rpc-mode.ts +0 -1029
- package/src/modes/rpc/rpc-socket-security.ts +0 -115
- package/src/modes/rpc/rpc-types.ts +0 -637
- package/src/modes/shared/agent-wire/command-contract.ts +0 -18
- package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
- package/src/modes/shared/agent-wire/command-validation.ts +0 -181
- package/src/modes/shared/agent-wire/handshake.ts +0 -157
- package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
- package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
- package/src/modes/shared/agent-wire/protocol.ts +0 -46
- package/src/modes/shared/agent-wire/responses.ts +0 -17
- package/src/modes/shared/agent-wire/scopes.ts +0 -94
- package/src/modes/shared/agent-wire/session-registry.ts +0 -109
- package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
- package/src/modes/shared/agent-wire/ui-result.ts +0 -48
- package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
- package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
- package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
- package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
- package/src/notifications/config.ts +0 -219
- package/src/notifications/index.ts +0 -1835
- package/src/notifications/telegram-daemon-cli.ts +0 -243
- package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
- /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
- /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
- /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
- /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
- /package/src/{notifications → sdk/bus}/engine.ts +0 -0
- /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
- /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
- /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
- /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
- /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
- /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
- /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
- /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
- /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/** Transport-neutral workflow gate contract used by SDK workflow coordination. */
|
|
2
|
+
/** Lifecycle stages that emit machine-addressable SDK workflow gates. */
|
|
3
|
+
export type WorkflowStage = "deep-interview" | "ralplan" | "ultragoal";
|
|
4
|
+
/** Reserved stage names that are explicitly not part of the v1 contract. */
|
|
5
|
+
export declare const RESERVED_WORKFLOW_STAGES: readonly string[];
|
|
6
|
+
export type WorkflowGateKind = "question" | "approval" | "execution";
|
|
7
|
+
/** The documented JSON Schema 2020-12 subset supported by the gate validator. */
|
|
8
|
+
export interface JsonSchema {
|
|
9
|
+
type?: "string" | "number" | "integer" | "boolean" | "object" | "array" | "null";
|
|
10
|
+
enum?: unknown[];
|
|
11
|
+
const?: unknown;
|
|
12
|
+
properties?: Record<string, JsonSchema>;
|
|
13
|
+
required?: string[];
|
|
14
|
+
additionalProperties?: boolean | JsonSchema;
|
|
15
|
+
items?: JsonSchema;
|
|
16
|
+
minLength?: number;
|
|
17
|
+
maxLength?: number;
|
|
18
|
+
pattern?: string;
|
|
19
|
+
minItems?: number;
|
|
20
|
+
maxItems?: number;
|
|
21
|
+
uniqueItems?: boolean;
|
|
22
|
+
minimum?: number;
|
|
23
|
+
maximum?: number;
|
|
24
|
+
title?: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
oneOf?: JsonSchema[];
|
|
27
|
+
anyOf?: JsonSchema[];
|
|
28
|
+
}
|
|
29
|
+
export interface WorkflowGateOption {
|
|
30
|
+
value: unknown;
|
|
31
|
+
label: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface WorkflowGateContext {
|
|
35
|
+
title?: string;
|
|
36
|
+
plan?: string;
|
|
37
|
+
source?: string;
|
|
38
|
+
prompt?: string;
|
|
39
|
+
summary?: string;
|
|
40
|
+
stage_state?: Record<string, unknown>;
|
|
41
|
+
artifact_refs?: Array<{
|
|
42
|
+
kind: string;
|
|
43
|
+
path?: string;
|
|
44
|
+
sha256?: string;
|
|
45
|
+
}>;
|
|
46
|
+
language?: string;
|
|
47
|
+
}
|
|
48
|
+
/** Outbound event: a machine-addressable workflow gate awaiting an answer. */
|
|
49
|
+
export interface WorkflowGate {
|
|
50
|
+
type: "workflow_gate";
|
|
51
|
+
gate_id: string;
|
|
52
|
+
stage: WorkflowStage;
|
|
53
|
+
kind: WorkflowGateKind;
|
|
54
|
+
schema: JsonSchema;
|
|
55
|
+
schema_hash: string;
|
|
56
|
+
options?: WorkflowGateOption[];
|
|
57
|
+
context: WorkflowGateContext;
|
|
58
|
+
created_at: string;
|
|
59
|
+
required: true;
|
|
60
|
+
}
|
|
61
|
+
/** Non-actionable durable-gate state retained for restart diagnostics. */
|
|
62
|
+
export interface WorkflowGateLifecycle {
|
|
63
|
+
state: "quarantined";
|
|
64
|
+
reason: "orphaned_after_process_restart" | "accepted_unadvanced_after_process_restart" | "continuation_owner_lost" | "opened_without_continuation" | "finalization_failed" | "advance_failed";
|
|
65
|
+
quarantinedAt: string;
|
|
66
|
+
supersededByGateId?: string;
|
|
67
|
+
}
|
|
68
|
+
/** A quarantined gate is diagnostic-only and must never be presented or answered. */
|
|
69
|
+
export interface WorkflowGateDiagnostic extends WorkflowGate {
|
|
70
|
+
id: string;
|
|
71
|
+
tag: "quarantined";
|
|
72
|
+
lifecycle: WorkflowGateLifecycle;
|
|
73
|
+
}
|
|
74
|
+
/** Stable Q12 row preserving the root WorkflowGate shape. */
|
|
75
|
+
export type WorkflowGateQueryRecord = (WorkflowGate & {
|
|
76
|
+
id: string;
|
|
77
|
+
tag: "pending";
|
|
78
|
+
lifecycle?: undefined;
|
|
79
|
+
}) | WorkflowGateDiagnostic;
|
|
80
|
+
/** Inbound: the agent's answer to a workflow gate. */
|
|
81
|
+
export interface WorkflowGateResponse {
|
|
82
|
+
gate_id: string;
|
|
83
|
+
answer: unknown;
|
|
84
|
+
idempotency_key?: string;
|
|
85
|
+
}
|
|
86
|
+
/** Outcome of resolving a gate, surfaced back to the answering client. */
|
|
87
|
+
export interface WorkflowGateResolution {
|
|
88
|
+
gate_id: string;
|
|
89
|
+
status: "accepted" | "rejected";
|
|
90
|
+
answer_hash: string;
|
|
91
|
+
resolved_at: string;
|
|
92
|
+
error?: WorkflowGateValidationError;
|
|
93
|
+
}
|
|
94
|
+
/** Typed error shape for schema validation failures. */
|
|
95
|
+
export interface WorkflowGateValidationError {
|
|
96
|
+
code: "invalid_workflow_gate_answer";
|
|
97
|
+
gate_id: string;
|
|
98
|
+
schema_hash: string;
|
|
99
|
+
errors: Array<{
|
|
100
|
+
path: string;
|
|
101
|
+
keyword: string;
|
|
102
|
+
message: string;
|
|
103
|
+
expected?: unknown;
|
|
104
|
+
}>;
|
|
105
|
+
}
|
|
@@ -9,6 +9,7 @@ import type { CompactOptions } from "../extensibility/extensions/types";
|
|
|
9
9
|
import type { Skill } from "../extensibility/skills";
|
|
10
10
|
import type { PlanApprovalDetails } from "../plan-mode/approved-plan";
|
|
11
11
|
import type { MCPManager } from "../runtime-mcp";
|
|
12
|
+
import type { NotificationSessionReconcileResult, NotificationSessionStatus } from "../sdk/bus/session-control";
|
|
12
13
|
import type { AgentSession, AgentSessionEvent } from "../session/agent-session";
|
|
13
14
|
import type { HistoryStorage } from "../session/history-storage";
|
|
14
15
|
import type { SessionContext, SessionManager } from "../session/session-manager";
|
|
@@ -80,6 +81,10 @@ export interface InteractiveModeContext {
|
|
|
80
81
|
historyStorage?: HistoryStorage;
|
|
81
82
|
mcpManager?: MCPManager;
|
|
82
83
|
lspServers?: LspStartupServerInfo[];
|
|
84
|
+
/** Shared controller query; absent in ACP/lightweight test contexts. */
|
|
85
|
+
getCurrentSessionNotificationStatus?(): NotificationSessionStatus | undefined;
|
|
86
|
+
/** Toggle only the current session; absent in ACP/lightweight test contexts. */
|
|
87
|
+
setCurrentSessionNotificationsEnabled?(enabled: boolean): Promise<NotificationSessionReconcileResult | undefined>;
|
|
83
88
|
readonly ircLedger: IrcObservationLedger;
|
|
84
89
|
isInitialized: boolean;
|
|
85
90
|
isBackgrounded: boolean;
|
|
@@ -234,9 +239,9 @@ export interface InteractiveModeContext {
|
|
|
234
239
|
handleContextCommand(): void;
|
|
235
240
|
handleDumpCommand(): void;
|
|
236
241
|
handleDebugTranscriptCommand(): Promise<void>;
|
|
237
|
-
handleClearCommand(): Promise<
|
|
242
|
+
handleClearCommand(): Promise<boolean>;
|
|
238
243
|
handleContextClearCommand(): Promise<void>;
|
|
239
|
-
handleDropCommand(): Promise<
|
|
244
|
+
handleDropCommand(): Promise<boolean>;
|
|
240
245
|
handleForkCommand(): Promise<void>;
|
|
241
246
|
handleBashCommand(command: string, excludeFromContext?: boolean): Promise<void>;
|
|
242
247
|
handlePythonCommand(code: string, excludeFromContext?: boolean): Promise<void>;
|
|
@@ -5,6 +5,8 @@ import type { MCPGetPromptResult, MCPPrompt, MCPRequestOptions, MCPResource, MCP
|
|
|
5
5
|
*/
|
|
6
6
|
export declare function connectToServer(name: string, config: MCPServerConfig, options?: {
|
|
7
7
|
signal?: AbortSignal;
|
|
8
|
+
/** Whether to advertise the roots/list capability (default: true). */
|
|
9
|
+
advertiseRoots?: boolean;
|
|
8
10
|
onNotification?: (method: string, params: unknown) => void;
|
|
9
11
|
onRequest?: (method: string, params: unknown) => Promise<unknown>;
|
|
10
12
|
}): Promise<MCPServerConnection>;
|
|
@@ -13,8 +13,10 @@ export interface LoadMCPConfigsOptions {
|
|
|
13
13
|
filterExa?: boolean;
|
|
14
14
|
/** Whether to filter out browser MCP servers when builtin browser tool is enabled (default: false) */
|
|
15
15
|
filterBrowser?: boolean;
|
|
16
|
-
/** Only include servers
|
|
16
|
+
/** Only include startup-eligible servers; exact-config sessions always enforce autoload !== false. */
|
|
17
17
|
autoloadOnly?: boolean;
|
|
18
|
+
/** Load only this explicit MCP config file. */
|
|
19
|
+
configPath?: string;
|
|
18
20
|
}
|
|
19
21
|
/** Result of loading MCP configs */
|
|
20
22
|
export interface LoadMCPConfigsResult {
|
|
@@ -24,6 +26,8 @@ export interface LoadMCPConfigsResult {
|
|
|
24
26
|
exaApiKeys: string[];
|
|
25
27
|
/** Source metadata for each server */
|
|
26
28
|
sources: Record<string, SourceMeta>;
|
|
29
|
+
/** Whether the explicit configuration was unavailable or contained invalid entries. */
|
|
30
|
+
configurationWarning: boolean;
|
|
27
31
|
}
|
|
28
32
|
/**
|
|
29
33
|
* Load all MCP server configs from standard locations.
|
|
@@ -42,6 +42,12 @@ export interface MCPDiscoverOptions {
|
|
|
42
42
|
autoloadOnly?: boolean;
|
|
43
43
|
/** Called when starting to connect to servers */
|
|
44
44
|
onConnecting?: (serverNames: string[]) => void;
|
|
45
|
+
/** Load only this explicit MCP config file. */
|
|
46
|
+
configPath?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface MCPManagerOptions {
|
|
49
|
+
/** Restrict this instance to tools from an explicit MCP config. */
|
|
50
|
+
toolsOnly?: boolean;
|
|
45
51
|
}
|
|
46
52
|
/**
|
|
47
53
|
* MCP Server Manager.
|
|
@@ -58,7 +64,8 @@ export declare class MCPManager {
|
|
|
58
64
|
static setInstance(value: MCPManager | undefined): void;
|
|
59
65
|
/** Reset the process-global instance. Test-only. */
|
|
60
66
|
static resetForTests(): void;
|
|
61
|
-
constructor(cwd: string, toolCache?: MCPToolCache | null);
|
|
67
|
+
constructor(cwd: string, toolCache?: MCPToolCache | null, options?: MCPManagerOptions);
|
|
68
|
+
isToolsOnly(): boolean;
|
|
62
69
|
/**
|
|
63
70
|
* Set a callback to receive all server notifications.
|
|
64
71
|
*/
|
|
@@ -187,6 +187,10 @@ export interface MCPToolCallResult {
|
|
|
187
187
|
content: MCPContent[];
|
|
188
188
|
isError?: boolean;
|
|
189
189
|
}
|
|
190
|
+
/** Expected configured-server transport or protocol failure. */
|
|
191
|
+
export declare class MCPExpectedFailure extends Error {
|
|
192
|
+
constructor(cause?: unknown);
|
|
193
|
+
}
|
|
190
194
|
export interface MCPRequestOptions {
|
|
191
195
|
/** Abort signal (e.g. Escape-to-interrupt) */
|
|
192
196
|
signal?: AbortSignal;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { SdkClient, SdkClientError, type SdkFrame } from "../client";
|
|
2
|
+
type JsonObject = Record<string, unknown>;
|
|
3
|
+
/** The small agent-side ACP surface used for reverse requests. */
|
|
4
|
+
export interface AcpReverseConnection {
|
|
5
|
+
request?(method: string, params: JsonObject): Promise<unknown>;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface AcpProviderRegistration {
|
|
9
|
+
capability: string;
|
|
10
|
+
definitions: unknown;
|
|
11
|
+
}
|
|
12
|
+
export interface AcpSdkAdapterOptions {
|
|
13
|
+
url: string;
|
|
14
|
+
token: string;
|
|
15
|
+
client?: SdkClient;
|
|
16
|
+
connection?: AcpReverseConnection;
|
|
17
|
+
providers?: AcpProviderRegistration[];
|
|
18
|
+
/** Lease IDs persisted by the ACP host across a WebSocket reconnect. */
|
|
19
|
+
expectedLeaseIds?: Record<string, string>;
|
|
20
|
+
heartbeatMs?: number;
|
|
21
|
+
reverseCancelTtlMs?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare class AcpSdkAdapterError extends Error {
|
|
24
|
+
readonly code: string;
|
|
25
|
+
constructor(code: string, message?: string);
|
|
26
|
+
}
|
|
27
|
+
export type AcpReconnectFailedHandler = (error: SdkClientError) => void;
|
|
28
|
+
export type AcpFrameHandler = (frame: SdkFrame) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Pure ACP-to-SDK adapter. It deliberately owns neither an AgentSession nor an
|
|
31
|
+
* ACP bridge: all session work is performed through authenticated v3 frames.
|
|
32
|
+
*/
|
|
33
|
+
export declare class AcpSdkAdapter {
|
|
34
|
+
#private;
|
|
35
|
+
constructor(options: AcpSdkAdapterOptions);
|
|
36
|
+
static connect(options: AcpSdkAdapterOptions): Promise<AcpSdkAdapter>;
|
|
37
|
+
get leaseIds(): ReadonlyMap<string, string>;
|
|
38
|
+
get connectionId(): string | undefined;
|
|
39
|
+
onReconnectFailed(handler: AcpReconnectFailedHandler): () => void;
|
|
40
|
+
onFrame(handler: AcpFrameHandler): () => void;
|
|
41
|
+
start(): Promise<void>;
|
|
42
|
+
close(): Promise<void>;
|
|
43
|
+
prompt(params: JsonObject | string): Promise<unknown>;
|
|
44
|
+
cancel(): Promise<unknown>;
|
|
45
|
+
setModel(params: JsonObject | string): Promise<unknown>;
|
|
46
|
+
control(operation: string, input?: JsonObject): Promise<unknown>;
|
|
47
|
+
query(query: string, input?: JsonObject, cursor?: string): Promise<unknown>;
|
|
48
|
+
global(operation: string, input?: JsonObject, idempotencyKey?: string): Promise<unknown>;
|
|
49
|
+
sdkControl(params: {
|
|
50
|
+
operation: string;
|
|
51
|
+
input?: JsonObject;
|
|
52
|
+
}): Promise<unknown>;
|
|
53
|
+
sdkQuery(params: {
|
|
54
|
+
query: string;
|
|
55
|
+
input?: JsonObject;
|
|
56
|
+
cursor?: string;
|
|
57
|
+
}): Promise<unknown>;
|
|
58
|
+
sdkGlobal(params: {
|
|
59
|
+
operation: string;
|
|
60
|
+
input?: JsonObject;
|
|
61
|
+
idempotencyKey?: string;
|
|
62
|
+
}): Promise<unknown>;
|
|
63
|
+
/** Dispatches the ACP extension method names without exposing endpoint credentials. */
|
|
64
|
+
handle(method: string, params?: JsonObject): Promise<unknown>;
|
|
65
|
+
registerProvider(provider: AcpProviderRegistration): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type BrokerDiscovery, redactBrokerDiscovery } from "./discovery";
|
|
2
|
+
import { type LifecycleDurableEffectsReceipt, LifecycleLedger, type LifecycleStartupFailureReceipt } from "./lifecycle-ledger";
|
|
3
|
+
import { SessionIndex } from "./session-index";
|
|
4
|
+
export interface BrokerSettings {
|
|
5
|
+
agentDir: string;
|
|
6
|
+
packageGeneration?: string;
|
|
7
|
+
port?: number;
|
|
8
|
+
heartbeatTtlMs?: number;
|
|
9
|
+
}
|
|
10
|
+
export type BrokerErrorCode = "idempotency_conflict" | "terminal_uncertain" | "broker_restarting" | "unavailable" | "endpoint_stale" | "resource_gone" | "invalid_input" | "spawn_failed" | "readiness_timeout" | "close_refused" | "not_found" | "live_session" | "cleanup_pending" | (string & {});
|
|
11
|
+
export type BrokerCleanupEvidence = {
|
|
12
|
+
phase: "artifacts" | "transcript" | "metadata";
|
|
13
|
+
artifactsIdentity?: {
|
|
14
|
+
dev: string;
|
|
15
|
+
ino: string;
|
|
16
|
+
};
|
|
17
|
+
transcriptIdentity?: {
|
|
18
|
+
dev: string;
|
|
19
|
+
ino: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export type BrokerResponse = {
|
|
23
|
+
ok: true;
|
|
24
|
+
result?: unknown;
|
|
25
|
+
indexSeq?: number;
|
|
26
|
+
} | {
|
|
27
|
+
ok: false;
|
|
28
|
+
error: {
|
|
29
|
+
code: BrokerErrorCode;
|
|
30
|
+
message: string;
|
|
31
|
+
endpoint?: "unavailable";
|
|
32
|
+
cleanup?: BrokerCleanupEvidence;
|
|
33
|
+
};
|
|
34
|
+
indexSeq?: number;
|
|
35
|
+
durableEffects?: LifecycleDurableEffectsReceipt;
|
|
36
|
+
startupFailure?: LifecycleStartupFailureReceipt;
|
|
37
|
+
};
|
|
38
|
+
export declare class Broker {
|
|
39
|
+
#private;
|
|
40
|
+
readonly settings: Required<BrokerSettings>;
|
|
41
|
+
readonly index: SessionIndex;
|
|
42
|
+
readonly ledger: LifecycleLedger;
|
|
43
|
+
discovery: BrokerDiscovery | null;
|
|
44
|
+
constructor(settings: BrokerSettings);
|
|
45
|
+
start(): Promise<BrokerDiscovery>;
|
|
46
|
+
get ownsDiscovery(): boolean;
|
|
47
|
+
status(): ReturnType<typeof redactBrokerDiscovery> | null;
|
|
48
|
+
heartbeat(): Promise<void>;
|
|
49
|
+
stop(): Promise<void>;
|
|
50
|
+
handleRequest(operation: string, input: Record<string, unknown>, idempotencyKey?: string): Promise<BrokerResponse>;
|
|
51
|
+
}
|
|
52
|
+
/** Test-only hook for simulating a process crash after terminal persistence verification. */
|
|
53
|
+
export declare function setTerminalPersistenceHookForTest(broker: Broker, hook: (() => void) | undefined): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { processIncarnation } from "./process-incarnation";
|
|
2
|
+
import { SDK_STATE_VERSION } from "./state-version";
|
|
3
|
+
export declare const BROKER_HEARTBEAT_TTL_MS = 15000;
|
|
4
|
+
export interface BrokerDiscovery {
|
|
5
|
+
version: typeof SDK_STATE_VERSION;
|
|
6
|
+
protocolVersion: 3;
|
|
7
|
+
packageGeneration: string;
|
|
8
|
+
ownerId: string;
|
|
9
|
+
pid: number;
|
|
10
|
+
incarnation: string;
|
|
11
|
+
host: "127.0.0.1";
|
|
12
|
+
port: number;
|
|
13
|
+
url: string;
|
|
14
|
+
token: string;
|
|
15
|
+
startedAt: number;
|
|
16
|
+
heartbeatAt: number;
|
|
17
|
+
}
|
|
18
|
+
export type RedactedBrokerDiscovery = Omit<BrokerDiscovery, "token"> & {
|
|
19
|
+
token: "[redacted]";
|
|
20
|
+
};
|
|
21
|
+
export type BrokerDiscoveryWrite = Omit<BrokerDiscovery, "incarnation"> & {
|
|
22
|
+
incarnation?: string;
|
|
23
|
+
};
|
|
24
|
+
export declare const brokerDiscoveryPath: (agentDir: string) => string;
|
|
25
|
+
export declare const newBrokerToken: () => string;
|
|
26
|
+
export declare const brokerProcessIncarnation: typeof processIncarnation;
|
|
27
|
+
export declare function isPidAlive(pid: number): boolean;
|
|
28
|
+
export declare function writeBrokerDiscovery(agentDir: string, discovery: BrokerDiscoveryWrite): Promise<void>;
|
|
29
|
+
export declare function readBrokerDiscovery(agentDir: string, ttlMs?: number): Promise<BrokerDiscovery | null>;
|
|
30
|
+
export declare function redactBrokerDiscovery(discovery: BrokerDiscovery): RedactedBrokerDiscovery;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type ChildProcess } from "node:child_process";
|
|
2
|
+
import { type BrokerDiscovery } from "./discovery";
|
|
3
|
+
import { type SdkInternalSpawnCommand } from "./runtime";
|
|
4
|
+
export interface EnsureBrokerSettings {
|
|
5
|
+
agentDir: string;
|
|
6
|
+
heartbeatTtlMs?: number;
|
|
7
|
+
/**
|
|
8
|
+
* Environment for the spawned detached broker. Defaults to `process.env`; tests
|
|
9
|
+
* that pre-start an isolated broker pass the same sanitized child env so the
|
|
10
|
+
* broker and the child that attaches to it share one owned root.
|
|
11
|
+
*/
|
|
12
|
+
env?: NodeJS.ProcessEnv;
|
|
13
|
+
}
|
|
14
|
+
export interface FixtureBrokerLease {
|
|
15
|
+
close(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface StartedFixtureBroker {
|
|
18
|
+
discovery: BrokerDiscovery;
|
|
19
|
+
lease: FixtureBrokerLease;
|
|
20
|
+
}
|
|
21
|
+
interface BrokerOwner {
|
|
22
|
+
stop(): Promise<void>;
|
|
23
|
+
canReuse(discovery: BrokerDiscovery | null): boolean;
|
|
24
|
+
markReady(discovery: BrokerDiscovery): boolean;
|
|
25
|
+
}
|
|
26
|
+
interface ReapTiming {
|
|
27
|
+
gracefulMs: number;
|
|
28
|
+
killVerifyMs: number;
|
|
29
|
+
}
|
|
30
|
+
/** Starts the detached broker entrypoint when discovery has no live owner. */
|
|
31
|
+
export declare function ensureBroker(settings: EnsureBrokerSettings): Promise<BrokerDiscovery>;
|
|
32
|
+
/** Starts one fresh fixture broker and returns its sole exact-child close lease. */
|
|
33
|
+
export declare function startFixtureBrokerWithLeaseForTest(settings: EnsureBrokerSettings): Promise<StartedFixtureBroker>;
|
|
34
|
+
/** Test hook: returns a stop handle for the detached broker this process spawned. */
|
|
35
|
+
export declare function brokerOwnerForTest(agentDir: string): BrokerOwner | undefined;
|
|
36
|
+
/** Test hook: drives the detached-broker reap on a controllable child surface. */
|
|
37
|
+
export declare function reapSpawnedBrokerForTest(child: ChildProcess, timing?: ReapTiming): Promise<void>;
|
|
38
|
+
/** Test hook: resolves the complete broker environment without spawning. */
|
|
39
|
+
export declare function brokerSpawnEnvironmentForTest(command: SdkInternalSpawnCommand, override?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
40
|
+
/** Test hook: installs an exact controllable owner to exercise replacement fencing. */
|
|
41
|
+
export declare function registerBrokerOwnerForTest(agentDir: string, child: ChildProcess, timing?: ReapTiming): BrokerOwner;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function brokerIdentityPath(agentDir: string): string;
|
|
2
|
+
export declare function getBrokerIdentityKey(agentDir: string): Promise<string>;
|
|
3
|
+
export declare function deriveIdempotencyIdentity(agentDir: string, operation: string, callerKey: string, canonicalTargetHash: string): Promise<string>;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { SdkStartupFailure, SdkStartupRollbackResult } from "../startup-capability";
|
|
2
|
+
import { SDK_STATE_VERSION } from "./state-version";
|
|
3
|
+
export type LifecycleState = "accepted" | "effect_started" | "awaiting_ready" | "terminal_ok" | "terminal_error" | "terminal_uncertain";
|
|
4
|
+
export interface LifecycleWorktreeIntent {
|
|
5
|
+
repoRoot: string;
|
|
6
|
+
worktreePath: string;
|
|
7
|
+
detached: boolean;
|
|
8
|
+
baseRef: string;
|
|
9
|
+
branchName?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface LifecycleEffectIntent {
|
|
12
|
+
sessionId: string;
|
|
13
|
+
stateRoot: string;
|
|
14
|
+
childOwnershipEstablished?: boolean;
|
|
15
|
+
worktree?: LifecycleWorktreeIntent;
|
|
16
|
+
}
|
|
17
|
+
/** Durable lifecycle effects retained for exact replay; never implies rollback authority. */
|
|
18
|
+
export interface LifecycleCleanupProof {
|
|
19
|
+
processExited: true;
|
|
20
|
+
endpointRemoved: true;
|
|
21
|
+
hostUnregistered: {
|
|
22
|
+
state: "unregistered";
|
|
23
|
+
indexSeq: number;
|
|
24
|
+
lifecycleRequestId?: string;
|
|
25
|
+
} | {
|
|
26
|
+
state: "not_registered";
|
|
27
|
+
};
|
|
28
|
+
rollback: {
|
|
29
|
+
endpointGeneration: number | null;
|
|
30
|
+
fenced: true;
|
|
31
|
+
runtimeRemoved: true;
|
|
32
|
+
hostStopped: true;
|
|
33
|
+
brokerRegistrationReleased: true;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface LifecycleStartupFailureReceipt extends SdkStartupFailure {
|
|
37
|
+
artifactDigest: string;
|
|
38
|
+
rollback: SdkStartupRollbackResult;
|
|
39
|
+
cleanupProof?: LifecycleCleanupProof;
|
|
40
|
+
}
|
|
41
|
+
export interface LifecycleDurableEffectsReceipt {
|
|
42
|
+
worktree?: {
|
|
43
|
+
cwdDigest: string;
|
|
44
|
+
created: boolean;
|
|
45
|
+
reused: boolean;
|
|
46
|
+
branchDigest?: string;
|
|
47
|
+
};
|
|
48
|
+
transcript?: {
|
|
49
|
+
identityDigest: string;
|
|
50
|
+
contentDigest: string;
|
|
51
|
+
};
|
|
52
|
+
startup?: LifecycleStartupFailureReceipt;
|
|
53
|
+
digest?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface LifecycleLedgerEntry {
|
|
56
|
+
version: typeof SDK_STATE_VERSION;
|
|
57
|
+
identity: string;
|
|
58
|
+
requestHash: string;
|
|
59
|
+
state: LifecycleState;
|
|
60
|
+
intendedSessionId?: string;
|
|
61
|
+
resultSessionId?: string;
|
|
62
|
+
effectMarker?: string;
|
|
63
|
+
effectIntent?: LifecycleEffectIntent;
|
|
64
|
+
durableEffects?: LifecycleDurableEffectsReceipt;
|
|
65
|
+
startupFailure?: LifecycleStartupFailureReceipt;
|
|
66
|
+
endpointGeneration?: number;
|
|
67
|
+
responseDigest?: string;
|
|
68
|
+
response?: unknown;
|
|
69
|
+
ts: number;
|
|
70
|
+
}
|
|
71
|
+
export type BeginResult = {
|
|
72
|
+
kind: "new";
|
|
73
|
+
entry: LifecycleLedgerEntry;
|
|
74
|
+
} | {
|
|
75
|
+
kind: "replay";
|
|
76
|
+
entry: LifecycleLedgerEntry;
|
|
77
|
+
} | {
|
|
78
|
+
kind: "idempotency_conflict";
|
|
79
|
+
} | {
|
|
80
|
+
kind: "terminal_uncertain";
|
|
81
|
+
entry: LifecycleLedgerEntry;
|
|
82
|
+
} | {
|
|
83
|
+
kind: "in_progress";
|
|
84
|
+
entry: LifecycleLedgerEntry;
|
|
85
|
+
};
|
|
86
|
+
export declare class LifecycleLedger {
|
|
87
|
+
#private;
|
|
88
|
+
constructor(agentDir: string);
|
|
89
|
+
open(): Promise<this>;
|
|
90
|
+
get warnings(): readonly string[];
|
|
91
|
+
begin(identity: string, requestHash: string): Promise<BeginResult>;
|
|
92
|
+
transition(identity: string, state: LifecycleState, fields?: Omit<Partial<LifecycleLedgerEntry>, "identity" | "requestHash" | "state" | "ts">): Promise<LifecycleLedgerEntry>;
|
|
93
|
+
assertSupportedStateVersions(): Promise<void>;
|
|
94
|
+
get(identity: string): LifecycleLedgerEntry | undefined;
|
|
95
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { SdkStartupFailure, SdkStartupRollbackResult } from "../startup-capability";
|
|
2
|
+
import type { Broker, BrokerResponse } from "./broker";
|
|
3
|
+
import type { LifecycleDurableEffectsReceipt, LifecycleStartupFailureReceipt } from "./lifecycle-ledger";
|
|
4
|
+
import { type ProcessIncarnationCommandRunner, type ProcessIncarnationOptions, parseDarwinProcessIncarnation, processIncarnation } from "./process-incarnation";
|
|
5
|
+
import { type SdkInternalSpawnCommand } from "./runtime";
|
|
6
|
+
export { type ProcessIncarnationCommandRunner, type ProcessIncarnationOptions, parseDarwinProcessIncarnation, processIncarnation, };
|
|
7
|
+
export interface LifecycleDeadlines {
|
|
8
|
+
receivedAt: number;
|
|
9
|
+
requestedReadinessTimeoutMs: number;
|
|
10
|
+
semanticReadyDeadlineAt: number;
|
|
11
|
+
terminationStartDeadlineAt: number;
|
|
12
|
+
lifecycleCleanupDeadlineAt: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function deriveLifecycleDeadlines(receivedAt: number, requestedReadinessTimeoutMs: number): LifecycleDeadlines;
|
|
15
|
+
export interface LifecycleTiming {
|
|
16
|
+
now(): number;
|
|
17
|
+
sleep(ms: number): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
type LifecycleCommand = SdkInternalSpawnCommand | {
|
|
20
|
+
file: string;
|
|
21
|
+
args: string[];
|
|
22
|
+
};
|
|
23
|
+
type LifecycleCommandResolver = () => LifecycleCommand;
|
|
24
|
+
export declare function setLifecycleCommandResolverForTest(broker: Broker, resolver: LifecycleCommandResolver | undefined): void;
|
|
25
|
+
export declare function setLifecycleTimingForTest(broker: Broker, timing: LifecycleTiming | undefined): void;
|
|
26
|
+
export declare function hasValidLifecycleDeadlines(value: LifecycleDeadlines, now?: number): boolean;
|
|
27
|
+
type Input = Record<string, unknown>;
|
|
28
|
+
export declare const isCanonicalSessionId: (value: string) => boolean;
|
|
29
|
+
export interface SessionLifecycleWorktreeTarget {
|
|
30
|
+
enabled: true;
|
|
31
|
+
name?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SessionLifecycleWorktreeReceipt {
|
|
34
|
+
enabled: true;
|
|
35
|
+
cwd: string;
|
|
36
|
+
created: boolean;
|
|
37
|
+
reused: boolean;
|
|
38
|
+
branch?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface SessionLifecycleTranscriptIdentity {
|
|
41
|
+
dev: string;
|
|
42
|
+
ino: string;
|
|
43
|
+
size: number;
|
|
44
|
+
mtimeMs: number;
|
|
45
|
+
mtimeNs: string;
|
|
46
|
+
}
|
|
47
|
+
export interface SessionLifecycleLaunchRequest {
|
|
48
|
+
operation: "session.create" | "session.fork" | "session.resume";
|
|
49
|
+
sessionId: string;
|
|
50
|
+
cwd: string;
|
|
51
|
+
stateRoot: string;
|
|
52
|
+
sourceSessionId?: string;
|
|
53
|
+
sourceSessionPath?: string;
|
|
54
|
+
sourceSessionIdentity?: SessionLifecycleTranscriptIdentity;
|
|
55
|
+
sourceCwd?: string;
|
|
56
|
+
sessionPath?: string;
|
|
57
|
+
sessionIdentity?: SessionLifecycleTranscriptIdentity;
|
|
58
|
+
/** Broker-issued effect marker which the child echoes only after host readiness. */
|
|
59
|
+
effectMarker?: string;
|
|
60
|
+
modelPreset?: string;
|
|
61
|
+
worktree?: SessionLifecycleWorktreeTarget;
|
|
62
|
+
receivedAt: number;
|
|
63
|
+
requestedReadinessTimeoutMs: number;
|
|
64
|
+
semanticReadyDeadlineAt: number;
|
|
65
|
+
terminationStartDeadlineAt: number;
|
|
66
|
+
lifecycleCleanupDeadlineAt: number;
|
|
67
|
+
}
|
|
68
|
+
export declare function readSessionLifecycleLaunchRequest(value: string | undefined, now?: number): SessionLifecycleLaunchRequest;
|
|
69
|
+
export declare function setProcessIncarnationForTest(broker: Broker, value: ((pid: number) => string | undefined) | undefined): void;
|
|
70
|
+
/** The child writes this only after its endpoint and semantic ready event are both live. */
|
|
71
|
+
export declare function writeSessionLifecycleReady(root: string, id: string, effectMarker: string): Promise<void>;
|
|
72
|
+
export interface LifecycleTranscriptEvidence {
|
|
73
|
+
digest: string;
|
|
74
|
+
identity: SessionLifecycleTranscriptIdentity;
|
|
75
|
+
}
|
|
76
|
+
/** The child writes bounded startup diagnostics before exiting without readiness. */
|
|
77
|
+
export declare function writeSessionLifecycleFailure(root: string, id: string, effectMarker: string, failure: SdkStartupFailure, rollback: SdkStartupRollbackResult, transcript?: LifecycleTranscriptEvidence, ownerIncarnation?: string): Promise<void>;
|
|
78
|
+
export interface LifecycleExecutionOutcome {
|
|
79
|
+
response: BrokerResponse;
|
|
80
|
+
durableEffects?: LifecycleDurableEffectsReceipt;
|
|
81
|
+
startupFailure?: LifecycleStartupFailureReceipt;
|
|
82
|
+
deferredArtifactCleanup?: () => Promise<void>;
|
|
83
|
+
}
|
|
84
|
+
/** Returns the response together with every durable lifecycle fact needed for truthful replay. */
|
|
85
|
+
export declare function executeLifecycle(broker: Broker, operation: string, input: Input, identity: string): Promise<LifecycleExecutionOutcome>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type ProcessIncarnationCommandResult = {
|
|
2
|
+
exitCode: number | null;
|
|
3
|
+
stdout: string;
|
|
4
|
+
} | undefined;
|
|
5
|
+
export type ProcessIncarnationCommandRunner = (command: string, args: readonly string[]) => ProcessIncarnationCommandResult;
|
|
6
|
+
export interface ProcessIncarnationOptions {
|
|
7
|
+
platform?: typeof process.platform;
|
|
8
|
+
runCommand?: ProcessIncarnationCommandRunner;
|
|
9
|
+
}
|
|
10
|
+
/** Parse the microsecond-resolution start timestamp returned by Darwin proc_pidinfo. */
|
|
11
|
+
export declare function parseDarwinProcessIncarnation(info: Uint8Array): string | undefined;
|
|
12
|
+
/** A PID is reusable; bind it to the strongest OS-provided process start incarnation available. */
|
|
13
|
+
export declare function processIncarnation(pid: number, options?: ProcessIncarnationOptions): string | undefined;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type SdkInternalAction = "broker-internal" | "session-host-internal";
|
|
2
|
+
export type SdkInternalSpawnCommand = {
|
|
3
|
+
kind: "bun-source";
|
|
4
|
+
file: string;
|
|
5
|
+
args: string[];
|
|
6
|
+
env: NodeJS.ProcessEnv;
|
|
7
|
+
cwd: string;
|
|
8
|
+
} | {
|
|
9
|
+
kind: "compiled";
|
|
10
|
+
file: string;
|
|
11
|
+
args: string[];
|
|
12
|
+
env: NodeJS.ProcessEnv;
|
|
13
|
+
cwd?: undefined;
|
|
14
|
+
};
|
|
15
|
+
type EmbeddedFile = Blob | {
|
|
16
|
+
name: string;
|
|
17
|
+
};
|
|
18
|
+
/** Test-only injectable inputs for hostile evidence and platform grammar coverage. */
|
|
19
|
+
export interface SdkInternalRuntimeDescriptorTestOptions {
|
|
20
|
+
execPath?: string;
|
|
21
|
+
environment?: NodeJS.ProcessEnv;
|
|
22
|
+
embeddedFiles?: readonly EmbeddedFile[];
|
|
23
|
+
markerPath?: string;
|
|
24
|
+
brokerDirectory?: string;
|
|
25
|
+
cliPath?: string;
|
|
26
|
+
configPath?: string;
|
|
27
|
+
bunAvailable?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/** Resolve the production descriptor from the statically imported marker and current Bun runtime evidence. */
|
|
30
|
+
export declare function resolveSdkInternalSpawnCommand(action: SdkInternalAction): SdkInternalSpawnCommand;
|
|
31
|
+
/** Test hook: injects runtime evidence without weakening the production marker authority. */
|
|
32
|
+
export declare function resolveSdkInternalSpawnCommandForTest(action: SdkInternalAction, options: SdkInternalRuntimeDescriptorTestOptions): SdkInternalSpawnCommand;
|
|
33
|
+
export {};
|