@gajae-code/coding-agent 0.10.1 → 0.11.0
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 +70 -2
- package/dist/types/append-only-mode.d.ts +1 -1
- 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/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/gajae-pet-widget.d.ts +1 -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/pet-capability.d.ts +37 -0
- package/dist/types/modes/components/pet-selector.d.ts +1 -1
- package/dist/types/modes/components/settings-selector.d.ts +15 -4
- package/dist/types/modes/components/welcome.d.ts +1 -1
- 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 -1
- 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 +169 -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 +16 -1
- 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 +33 -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 +45 -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 +55 -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/package.json +34 -13
- package/scripts/build-sdk-package-smoke.ts +94 -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/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 +37 -34
- 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/extensibility/slash-commands.ts +3 -3
- 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 +5 -2
- package/src/gjc-runtime/tmux-sessions.ts +19 -13
- package/src/gjc-runtime/ultragoal-guard.ts +53 -6
- package/src/gjc-runtime/ultragoal-runtime.ts +155 -3
- 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 +36 -37
- 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/custom-editor.ts +1 -0
- package/src/modes/components/gajae-pet-widget.ts +169 -20
- package/src/modes/components/model-selector.ts +93 -35
- package/src/modes/components/notifications-settings-editor.ts +1379 -0
- package/src/modes/components/pet-capability.ts +115 -0
- package/src/modes/components/pet-selector.ts +4 -6
- package/src/modes/components/settings-selector.ts +86 -11
- package/src/modes/components/welcome.ts +4 -4
- package/src/modes/controllers/command-controller.ts +1 -2
- package/src/modes/controllers/event-controller.ts +11 -16
- package/src/modes/controllers/extension-ui-controller.ts +357 -12
- package/src/modes/controllers/input-controller.ts +43 -13
- package/src/modes/controllers/selector-controller.ts +671 -44
- package/src/modes/index.ts +0 -22
- package/src/modes/interactive-mode.ts +108 -24
- 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 +1254 -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 +16 -1
- 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 +94 -0
- package/src/sdk/broker/ensure.ts +249 -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 +353 -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 +2275 -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 +3943 -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 +502 -54
- 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 +2470 -866
- package/src/session/default-model-selection.ts +93 -0
- package/src/session/fallback-chain-controller.ts +136 -0
- package/src/session/session-manager.ts +447 -13
- 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 +33 -30
- package/src/task/executor.ts +62 -13
- 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/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,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,33 @@
|
|
|
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
|
+
interface BrokerOwner {
|
|
15
|
+
stop(): Promise<void>;
|
|
16
|
+
canReuse(discovery: BrokerDiscovery | null): boolean;
|
|
17
|
+
markReady(discovery: BrokerDiscovery): boolean;
|
|
18
|
+
}
|
|
19
|
+
interface ReapTiming {
|
|
20
|
+
gracefulMs: number;
|
|
21
|
+
killVerifyMs: number;
|
|
22
|
+
}
|
|
23
|
+
/** Starts the detached broker entrypoint when discovery has no live owner. */
|
|
24
|
+
export declare function ensureBroker(settings: EnsureBrokerSettings): Promise<BrokerDiscovery>;
|
|
25
|
+
/** Test hook: returns a stop handle for the detached broker this process spawned. */
|
|
26
|
+
export declare function brokerOwnerForTest(agentDir: string): BrokerOwner | undefined;
|
|
27
|
+
/** Test hook: drives the detached-broker reap on a controllable child surface. */
|
|
28
|
+
export declare function reapSpawnedBrokerForTest(child: ChildProcess, timing?: ReapTiming): Promise<void>;
|
|
29
|
+
/** Test hook: resolves the complete broker environment without spawning. */
|
|
30
|
+
export declare function brokerSpawnEnvironmentForTest(command: SdkInternalSpawnCommand, override?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
31
|
+
/** Test hook: installs an exact controllable owner to exercise replacement fencing. */
|
|
32
|
+
export declare function registerBrokerOwnerForTest(agentDir: string, child: ChildProcess, timing?: ReapTiming): BrokerOwner;
|
|
33
|
+
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 {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { SDK_STATE_VERSION } from "./state-version";
|
|
2
|
+
export type SessionIndexEventType = "host_registered" | "host_heartbeat" | "host_unregistered" | "lifecycle_started" | "lifecycle_terminal" | "session_closed" | "record_reconciled";
|
|
3
|
+
export interface SessionIndexEvent {
|
|
4
|
+
version: typeof SDK_STATE_VERSION;
|
|
5
|
+
indexSeq: number;
|
|
6
|
+
type: SessionIndexEventType;
|
|
7
|
+
sessionId: string;
|
|
8
|
+
locator: {
|
|
9
|
+
repo: string;
|
|
10
|
+
stateRoot: string;
|
|
11
|
+
};
|
|
12
|
+
endpointGeneration: number;
|
|
13
|
+
pid: number;
|
|
14
|
+
endpointMtimeMs?: number;
|
|
15
|
+
lifecycleRequestId?: string;
|
|
16
|
+
terminalUncertain?: boolean;
|
|
17
|
+
ts: number;
|
|
18
|
+
checksum: string;
|
|
19
|
+
}
|
|
20
|
+
export interface IndexedSession {
|
|
21
|
+
sessionId: string;
|
|
22
|
+
locator: {
|
|
23
|
+
repo: string;
|
|
24
|
+
stateRoot: string;
|
|
25
|
+
};
|
|
26
|
+
endpointGeneration: number;
|
|
27
|
+
pid: number;
|
|
28
|
+
endpointMtimeMs?: number;
|
|
29
|
+
live: boolean;
|
|
30
|
+
indexSeq: number;
|
|
31
|
+
lifecycleRequestId?: string;
|
|
32
|
+
terminalUncertain?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface SessionList {
|
|
35
|
+
indexSeq: number;
|
|
36
|
+
sessions: IndexedSession[];
|
|
37
|
+
warnings: string[];
|
|
38
|
+
}
|
|
39
|
+
export declare const sessionIndexChecksum: (event: Omit<SessionIndexEvent, "checksum">) => string;
|
|
40
|
+
export declare class SessionIndex {
|
|
41
|
+
#private;
|
|
42
|
+
constructor(agentDir: string);
|
|
43
|
+
open(): Promise<this>;
|
|
44
|
+
replay(): Promise<void>;
|
|
45
|
+
refresh(): Promise<void>;
|
|
46
|
+
get indexSeq(): number;
|
|
47
|
+
append(input: Omit<SessionIndexEvent, "version" | "indexSeq" | "checksum" | "ts"> & Partial<Pick<SessionIndexEvent, "ts">>): Promise<SessionIndexEvent>;
|
|
48
|
+
snapshot(): Promise<void>;
|
|
49
|
+
assertSupportedStateVersions(): Promise<void>;
|
|
50
|
+
listSessions(): SessionList;
|
|
51
|
+
hostUnregisteredAfter(registration: Pick<IndexedSession, "sessionId" | "endpointGeneration" | "pid" | "indexSeq" | "lifecycleRequestId">): {
|
|
52
|
+
indexSeq: number;
|
|
53
|
+
lifecycleRequestId?: string;
|
|
54
|
+
} | undefined;
|
|
55
|
+
findHostRegistration(sessionId: string, endpointGeneration: number, pid: number, lifecycleRequestId?: string): IndexedSession | undefined;
|
|
56
|
+
hasHostRegistrationForLifecycle(sessionId: string, pid: number, lifecycleRequestId: string): boolean;
|
|
57
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const SDK_STATE_VERSION = 1;
|
|
2
|
+
export declare class UnsupportedStateVersionError extends Error {
|
|
3
|
+
readonly file: string;
|
|
4
|
+
readonly version: number;
|
|
5
|
+
readonly code = "unsupported_state_version";
|
|
6
|
+
constructor(file: string, version: number);
|
|
7
|
+
}
|
|
8
|
+
export declare function assertSupportedStateVersion(file: string, value: unknown): void;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Broker } from "./broker";
|
|
2
|
+
/** Loopback-only WebSocket transport for the agent-global SDK broker. */
|
|
3
|
+
export declare class BrokerTransport {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(broker: Broker, token: string, port?: number);
|
|
6
|
+
get port(): number;
|
|
7
|
+
start(): Promise<number>;
|
|
8
|
+
stop(): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type Adapter, type OperationKind } from "../protocol/operation-registry";
|
|
2
|
+
export type ChatTransport = Extract<Adapter, "telegram" | "discord" | "slack">;
|
|
3
|
+
export type ChatOperationDisposition = "allowed" | "unsupported_on_chat";
|
|
4
|
+
export interface ChatCommandError {
|
|
5
|
+
code: "unsupported_on_chat" | "secret_input_forbidden";
|
|
6
|
+
message: string;
|
|
7
|
+
}
|
|
8
|
+
export type ChatCommandDecision = {
|
|
9
|
+
ok: true;
|
|
10
|
+
} | {
|
|
11
|
+
ok: false;
|
|
12
|
+
error: ChatCommandError;
|
|
13
|
+
};
|
|
14
|
+
export interface ChatOperationRequest {
|
|
15
|
+
kind: OperationKind;
|
|
16
|
+
operation: string;
|
|
17
|
+
input?: unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Chat authorization follows each transport's canonical registry disposition.
|
|
21
|
+
* Explicit policy prohibitions remain as defense in depth for shell execution,
|
|
22
|
+
* callback-provider registration, and endpoint credentials.
|
|
23
|
+
*/
|
|
24
|
+
export declare const CHAT_OPERATION_POLICY: Readonly<Record<ChatTransport, Readonly<Record<string, ChatOperationDisposition>>>>;
|
|
25
|
+
/** Reject unsafe or unknown commands before their SDK request can be sent. */
|
|
26
|
+
export declare function authorizeChatOperation(transport: ChatTransport, request: ChatOperationRequest): ChatCommandDecision;
|
|
27
|
+
/** Execute only an authorized command, ensuring rejected payloads produce no SDK send. */
|
|
28
|
+
export declare function sendAuthorizedChatOperation<T>(transport: ChatTransport, request: ChatOperationRequest, send: () => Promise<T>): Promise<{
|
|
29
|
+
ok: true;
|
|
30
|
+
result: T;
|
|
31
|
+
} | {
|
|
32
|
+
ok: false;
|
|
33
|
+
error: ChatCommandError;
|
|
34
|
+
}>;
|
|
35
|
+
export type ChatCommandOutcome = {
|
|
36
|
+
ok: true;
|
|
37
|
+
result: unknown;
|
|
38
|
+
} | {
|
|
39
|
+
ok: false;
|
|
40
|
+
error: {
|
|
41
|
+
code: string;
|
|
42
|
+
message: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* The chat transport is an untrusted presentation surface, not a general SDK
|
|
47
|
+
* result renderer. Never serialize SDK result bodies or provider error text.
|
|
48
|
+
*/
|
|
49
|
+
export declare function projectChatCommandOutcome(request: Pick<ChatOperationRequest, "kind" | "operation">, outcome: ChatCommandOutcome): Record<string, unknown>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ChatDaemonKind } from "./chat-daemon-control";
|
|
2
|
+
import { type ChatDaemonRuntimeConfig } from "./chat-daemon-runtime";
|
|
3
|
+
export interface ChatDaemonRuntimeHandle {
|
|
4
|
+
start(): Promise<void>;
|
|
5
|
+
stop(): Promise<void>;
|
|
6
|
+
transportHealthy?(): boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface RunChatDaemonInternalDeps {
|
|
9
|
+
processPid?: number;
|
|
10
|
+
pidAlive?: (pid: number) => boolean;
|
|
11
|
+
createRuntime?: (input: {
|
|
12
|
+
kind: ChatDaemonKind;
|
|
13
|
+
agentDir: string;
|
|
14
|
+
config: ChatDaemonConfig;
|
|
15
|
+
}) => Promise<ChatDaemonRuntimeHandle> | ChatDaemonRuntimeHandle;
|
|
16
|
+
setInterval?: typeof setInterval;
|
|
17
|
+
clearInterval?: typeof clearInterval;
|
|
18
|
+
}
|
|
19
|
+
export type ChatDaemonConfig = ChatDaemonRuntimeConfig;
|
|
20
|
+
/** Hidden worker entrypoint. It owns only lock/state/control lifecycle; transport creation remains injectable. */
|
|
21
|
+
export declare function runChatDaemonInternal(kind: ChatDaemonKind, argv: string[], deps?: RunChatDaemonInternalDeps): Promise<void>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { Settings } from "../../config/settings";
|
|
2
|
+
import type { BuiltInDaemonController, DaemonOperationOptions, DaemonOperationResult, DaemonRuntimeInfo, DaemonStatus } from "../../daemon/control-types";
|
|
3
|
+
export type ChatDaemonKind = "discord" | "slack";
|
|
4
|
+
export type ChatDaemonAction = "stop" | "reload";
|
|
5
|
+
export interface ChatDaemonState {
|
|
6
|
+
version: 1;
|
|
7
|
+
kind: ChatDaemonKind;
|
|
8
|
+
pid: number;
|
|
9
|
+
ownerId: string;
|
|
10
|
+
identity: string;
|
|
11
|
+
incarnation: string;
|
|
12
|
+
startedAt: number;
|
|
13
|
+
heartbeatAt: number;
|
|
14
|
+
transportHealthy: boolean;
|
|
15
|
+
stoppedAt?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ChatDaemonControlRequest {
|
|
18
|
+
version: 1;
|
|
19
|
+
requestId: string;
|
|
20
|
+
action: ChatDaemonAction;
|
|
21
|
+
ownerId: string;
|
|
22
|
+
pid: number;
|
|
23
|
+
createdAt: number;
|
|
24
|
+
incarnation: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ChatDaemonControlDeps {
|
|
27
|
+
pidAlive?: (pid: number) => boolean;
|
|
28
|
+
sendSignal?: (pid: number, signal: NodeJS.Signals) => void;
|
|
29
|
+
spawn?: (command: string, args: string[], opts: {
|
|
30
|
+
detached: boolean;
|
|
31
|
+
stdio: "ignore";
|
|
32
|
+
}) => {
|
|
33
|
+
unref?: () => void;
|
|
34
|
+
};
|
|
35
|
+
execPath?: string;
|
|
36
|
+
ownerPid?: number;
|
|
37
|
+
randomId?: () => string;
|
|
38
|
+
pidIncarnation?: (pid: number) => string | undefined;
|
|
39
|
+
sleep?: (ms: number) => Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
export declare function chatDaemonPaths(agentDir: string, kind: ChatDaemonKind): {
|
|
42
|
+
dir: string;
|
|
43
|
+
lock: string;
|
|
44
|
+
state: string;
|
|
45
|
+
control: string;
|
|
46
|
+
};
|
|
47
|
+
export declare function readChatDaemonState(agentDir: string, kind: ChatDaemonKind): Promise<ChatDaemonState | undefined>;
|
|
48
|
+
export declare function readChatDaemonControlRequest(agentDir: string, kind: ChatDaemonKind): Promise<ChatDaemonControlRequest | undefined>;
|
|
49
|
+
export declare function writeChatDaemonControlRequest(agentDir: string, kind: ChatDaemonKind, request: ChatDaemonControlRequest): Promise<void>;
|
|
50
|
+
export declare function clearChatDaemonControlRequest(agentDir: string, kind: ChatDaemonKind, requestId?: string): Promise<void>;
|
|
51
|
+
export declare function buildChatDaemonSpawnArgs(input: {
|
|
52
|
+
kind: ChatDaemonKind;
|
|
53
|
+
ownerId: string;
|
|
54
|
+
agentDir: string;
|
|
55
|
+
execPath?: string;
|
|
56
|
+
}): {
|
|
57
|
+
command: string;
|
|
58
|
+
args: string[];
|
|
59
|
+
runtime: DaemonRuntimeInfo;
|
|
60
|
+
};
|
|
61
|
+
export declare class ChatDaemonController implements BuiltInDaemonController {
|
|
62
|
+
private readonly settings;
|
|
63
|
+
private readonly deps;
|
|
64
|
+
readonly kind: ChatDaemonKind;
|
|
65
|
+
constructor(settings: Settings, kind: ChatDaemonKind, deps?: ChatDaemonControlDeps);
|
|
66
|
+
private identity;
|
|
67
|
+
private alive;
|
|
68
|
+
status(): Promise<DaemonStatus>;
|
|
69
|
+
stop(opts?: DaemonOperationOptions): Promise<DaemonOperationResult>;
|
|
70
|
+
reload(opts?: DaemonOperationOptions): Promise<DaemonOperationResult>;
|
|
71
|
+
ensure(): Promise<EnsureChatDaemonResult>;
|
|
72
|
+
private operate;
|
|
73
|
+
private incarnation;
|
|
74
|
+
private isLiveState;
|
|
75
|
+
private stopForReplacement;
|
|
76
|
+
private ownsCapturedState;
|
|
77
|
+
private signalIfOwner;
|
|
78
|
+
private ownerChanged;
|
|
79
|
+
private result;
|
|
80
|
+
private waitForDeath;
|
|
81
|
+
private sleep;
|
|
82
|
+
private spawn;
|
|
83
|
+
}
|
|
84
|
+
export type EnsureChatDaemonResult = "disabled" | "owner_spawned" | "attached";
|
|
85
|
+
export declare function ensureDiscordDaemon(settings: Settings, deps?: ChatDaemonControlDeps): Promise<EnsureChatDaemonResult>;
|
|
86
|
+
export declare function ensureSlackDaemon(settings: Settings, deps?: ChatDaemonControlDeps): Promise<EnsureChatDaemonResult>;
|
|
87
|
+
export declare function acquireChatDaemonOwnership(input: {
|
|
88
|
+
agentDir: string;
|
|
89
|
+
kind: ChatDaemonKind;
|
|
90
|
+
ownerId: string;
|
|
91
|
+
pid?: number;
|
|
92
|
+
identity: string;
|
|
93
|
+
incarnation?: string;
|
|
94
|
+
pidAlive?: (pid: number) => boolean;
|
|
95
|
+
pidIncarnation?: (pid: number) => string | undefined;
|
|
96
|
+
}): Promise<boolean>;
|
|
97
|
+
export declare function renewChatDaemonHeartbeat(input: {
|
|
98
|
+
agentDir: string;
|
|
99
|
+
kind: ChatDaemonKind;
|
|
100
|
+
ownerId: string;
|
|
101
|
+
pid?: number;
|
|
102
|
+
incarnation?: string;
|
|
103
|
+
transportHealthy: boolean;
|
|
104
|
+
}): Promise<boolean>;
|
|
105
|
+
export declare function releaseChatDaemonOwnership(input: {
|
|
106
|
+
agentDir: string;
|
|
107
|
+
kind: ChatDaemonKind;
|
|
108
|
+
ownerId: string;
|
|
109
|
+
pid?: number;
|
|
110
|
+
incarnation?: string;
|
|
111
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { SessionIndex } from "../broker/session-index";
|
|
2
|
+
import { type SdkSessionEndpoint } from "../client/discovery";
|
|
3
|
+
import type { ChatDaemonKind } from "./chat-daemon-control";
|
|
4
|
+
import type { DiscordProvider } from "./discord-provider";
|
|
5
|
+
import { type SlackProviderClient } from "./slack-provider";
|
|
6
|
+
export interface ChatDaemonRuntimeConfig {
|
|
7
|
+
identity: string;
|
|
8
|
+
notifications: {
|
|
9
|
+
discord?: {
|
|
10
|
+
botToken: string;
|
|
11
|
+
applicationId: string;
|
|
12
|
+
guildId: string;
|
|
13
|
+
parentChannelId: string;
|
|
14
|
+
};
|
|
15
|
+
slack?: {
|
|
16
|
+
botToken: string;
|
|
17
|
+
appToken: string;
|
|
18
|
+
workspaceId: string;
|
|
19
|
+
channelId: string;
|
|
20
|
+
authorizedUserId?: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
presentation?: {
|
|
24
|
+
redact: boolean;
|
|
25
|
+
verbosity: "lean" | "verbose";
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface ChatDaemonSdkClient {
|
|
29
|
+
onFrame(handler: (frame: Record<string, unknown>) => void): () => void;
|
|
30
|
+
request(frame: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
31
|
+
close(): Promise<void>;
|
|
32
|
+
send(frame: Record<string, unknown>): void;
|
|
33
|
+
}
|
|
34
|
+
export type ChatDeliveryPhase = "pre_send" | "ambiguous";
|
|
35
|
+
/** An authorized SDK command could not be conclusively delivered. */
|
|
36
|
+
export declare class ChatDeliveryError extends Error {
|
|
37
|
+
readonly phase: ChatDeliveryPhase;
|
|
38
|
+
constructor(phase: ChatDeliveryPhase);
|
|
39
|
+
}
|
|
40
|
+
export interface ChatDaemonRuntimeDeps {
|
|
41
|
+
createDiscordProvider?: (config: NonNullable<ChatDaemonRuntimeConfig["notifications"]["discord"]>) => DiscordProvider;
|
|
42
|
+
createSlackProvider?: (config: NonNullable<ChatDaemonRuntimeConfig["notifications"]["slack"]>) => SlackProviderClient;
|
|
43
|
+
createClient?: (endpoint: SdkSessionEndpoint) => Promise<ChatDaemonSdkClient>;
|
|
44
|
+
createIndex?: (agentDir: string) => SessionIndex;
|
|
45
|
+
createBrokerClient?: (endpoint: {
|
|
46
|
+
url: string;
|
|
47
|
+
token: string;
|
|
48
|
+
}) => Promise<ChatDaemonSdkClient>;
|
|
49
|
+
onReconciled?: () => void;
|
|
50
|
+
setInterval?: typeof setInterval;
|
|
51
|
+
clearInterval?: typeof clearInterval;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Worker-owned session discovery and event fanout. It connects only through the
|
|
55
|
+
* public SDK transport and retains endpoint tokens solely in live client objects.
|
|
56
|
+
*/
|
|
57
|
+
export declare class ChatDaemonRuntime {
|
|
58
|
+
#private;
|
|
59
|
+
private readonly input;
|
|
60
|
+
private readonly deps;
|
|
61
|
+
constructor(input: {
|
|
62
|
+
kind: ChatDaemonKind;
|
|
63
|
+
agentDir: string;
|
|
64
|
+
config: ChatDaemonRuntimeConfig;
|
|
65
|
+
}, deps?: ChatDaemonRuntimeDeps);
|
|
66
|
+
start(): Promise<void>;
|
|
67
|
+
transportHealthy(): boolean;
|
|
68
|
+
stop(): Promise<void>;
|
|
69
|
+
private reconcile;
|
|
70
|
+
private attach;
|
|
71
|
+
private resolveEndpoint;
|
|
72
|
+
private schedule;
|
|
73
|
+
private enqueueFrame;
|
|
74
|
+
private handleFrame;
|
|
75
|
+
private close;
|
|
76
|
+
private resume;
|
|
77
|
+
}
|