@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
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { AgentMessage, AgentToolResult, AgentToolUpdateCallback, ThinkingLevel } from "@gajae-code/agent-core";
|
|
11
11
|
import type { CompactionResult } from "@gajae-code/agent-core/compaction";
|
|
12
|
-
import type { Api, AssistantMessageEvent, AssistantMessageEventStream, Context, ImageContent, Model, ProviderResponseMetadata, SimpleStreamOptions, Static, TextContent, TSchema } from "@gajae-code/ai";
|
|
12
|
+
import type { Api, AssistantMessageEvent, AssistantMessageEventStream, Context, ImageContent, Model, ProviderResponseMetadata, SimpleStreamOptions, Static, TextContent, TSchema, UsageReport } from "@gajae-code/ai";
|
|
13
13
|
import type { OAuthCredentials, OAuthLoginCallbacks } from "@gajae-code/ai/utils/oauth/types";
|
|
14
14
|
import type * as piCodingAgent from "@gajae-code/coding-agent";
|
|
15
15
|
import type { AutocompleteItem, Component, EditorTheme, KeyId, TUI } from "@gajae-code/tui";
|
|
@@ -20,8 +20,9 @@ import type { PythonResult } from "../../eval/py/executor";
|
|
|
20
20
|
import type { BashResult } from "../../exec/bash-executor";
|
|
21
21
|
import type { ExecOptions, ExecResult } from "../../exec/exec";
|
|
22
22
|
import type { CustomEditor } from "../../modes/components/custom-editor";
|
|
23
|
-
import type { WorkflowGateEmitter } from "../../modes/shared/agent-wire/
|
|
23
|
+
import type { WorkflowGateEmitter } from "../../modes/shared/agent-wire/workflow-gate-broker";
|
|
24
24
|
import type { Theme } from "../../modes/theme/theme";
|
|
25
|
+
import type { ClientBridgePermissionOption, ClientBridgePermissionOutcome, ClientBridgePermissionToolCall } from "../../session/client-bridge";
|
|
25
26
|
import type { CustomMessage } from "../../session/messages";
|
|
26
27
|
import type { ReadonlySessionManager, SessionManager } from "../../session/session-manager";
|
|
27
28
|
import type { BashToolDetails, BashToolInput, FindToolDetails, FindToolInput, ReadToolDetails, ReadToolInput, SearchToolDetails, SearchToolInput, WriteToolInput } from "../../tools";
|
|
@@ -54,7 +55,7 @@ export interface ExtensionUIDialogOptions {
|
|
|
54
55
|
/**
|
|
55
56
|
* For interactive TUI select dialogs, render the focused option across
|
|
56
57
|
* multiple rows instead of truncating it. This is a select-only rendering
|
|
57
|
-
* hint; non-TUI
|
|
58
|
+
* hint; non-TUI clients (SDK, ACP) drop it and do not serialize it.
|
|
58
59
|
*/
|
|
59
60
|
wrapFocused?: boolean;
|
|
60
61
|
/**
|
|
@@ -68,7 +69,7 @@ export interface ExtensionUIDialogOptions {
|
|
|
68
69
|
* inline: selecting it keeps the title and option list on screen and opens
|
|
69
70
|
* a free-text input below the list. Submitting calls `onSubmit` with the
|
|
70
71
|
* typed text and resolves the select with `optionLabel`; Escape returns to
|
|
71
|
-
* option selection. Non-TUI
|
|
72
|
+
* option selection. Non-TUI clients (SDK, ACP) drop it; callers must keep
|
|
72
73
|
* a fallback path for selects that resolve `optionLabel` without invoking
|
|
73
74
|
* `onSubmit`.
|
|
74
75
|
*/
|
|
@@ -104,7 +105,7 @@ export type ExtensionUiComponentFactory = (tui: TUI, theme: Theme) => ExtensionU
|
|
|
104
105
|
export type ExtensionWidgetContent = string[] | ExtensionUiComponentFactory | undefined;
|
|
105
106
|
/**
|
|
106
107
|
* UI context for extensions to request interactive UI.
|
|
107
|
-
*
|
|
108
|
+
* Interactive, SDK, and headless callers provide their own implementation.
|
|
108
109
|
*/
|
|
109
110
|
export interface ExtensionUIContext {
|
|
110
111
|
/** Show a selector and return the user's choice. */
|
|
@@ -175,6 +176,13 @@ export interface ExtensionUIContext {
|
|
|
175
176
|
/** Set tool output expansion state. */
|
|
176
177
|
setToolsExpanded(expanded: boolean): void;
|
|
177
178
|
}
|
|
179
|
+
export interface ExtensionTranscriptEntry {
|
|
180
|
+
id: string;
|
|
181
|
+
role: string;
|
|
182
|
+
textSummary: string;
|
|
183
|
+
ts: string;
|
|
184
|
+
body?: string;
|
|
185
|
+
}
|
|
178
186
|
export interface ContextUsage {
|
|
179
187
|
/** Context tokens, or null if unknown (e.g. right after compaction, before next LLM response). */
|
|
180
188
|
tokens: number | null;
|
|
@@ -204,7 +212,7 @@ export interface ExtensionContext {
|
|
|
204
212
|
getContextUsage(): ContextUsage | undefined;
|
|
205
213
|
/** Compact the session context (interactive mode shows UI). */
|
|
206
214
|
compact(instructionsOrOptions?: string | CompactOptions): Promise<void>;
|
|
207
|
-
/** Whether UI is available
|
|
215
|
+
/** Whether an interactive UI is available */
|
|
208
216
|
hasUI: boolean;
|
|
209
217
|
/** Current working directory */
|
|
210
218
|
cwd: string;
|
|
@@ -222,17 +230,60 @@ export interface ExtensionContext {
|
|
|
222
230
|
abort(): void;
|
|
223
231
|
/** Whether there are queued messages waiting */
|
|
224
232
|
hasPendingMessages(): boolean;
|
|
233
|
+
/** Typed pending-message counts per queue (steering, follow-up, next-turn). */
|
|
234
|
+
getPendingMessageCounts(): {
|
|
235
|
+
steering: number;
|
|
236
|
+
followUp: number;
|
|
237
|
+
nextTurn: number;
|
|
238
|
+
};
|
|
239
|
+
/** Read-only session data exposed to extensions and the SDK host. */
|
|
240
|
+
getTranscript(): ExtensionTranscriptEntry[];
|
|
241
|
+
getTranscriptBody(entryId: string): string | undefined;
|
|
242
|
+
getGoalState(): unknown;
|
|
243
|
+
getTodoState(): unknown;
|
|
244
|
+
getQueuedMessages(): unknown[];
|
|
245
|
+
getActiveTools(): string[];
|
|
246
|
+
getAllTools(): string[];
|
|
247
|
+
/** Session control seams used by the SDK host. */
|
|
248
|
+
cycleModel(): Promise<{
|
|
249
|
+
model: Model;
|
|
250
|
+
thinkingLevel: ThinkingLevel | undefined;
|
|
251
|
+
} | undefined>;
|
|
252
|
+
cycleThinkingLevel(): ThinkingLevel | undefined;
|
|
253
|
+
setQueueMode(kind: "steering" | "follow_up" | "interrupt", mode: unknown): boolean;
|
|
254
|
+
getSkillState(): unknown;
|
|
255
|
+
getConfigItems(): unknown;
|
|
256
|
+
getBranchCandidates(): unknown;
|
|
257
|
+
getExtensions(): unknown;
|
|
258
|
+
getArtifact(id: string): Uint8Array | string | undefined | Promise<Uint8Array | string | undefined>;
|
|
259
|
+
getArtifactRange?(id: string, offset: number, length: number): {
|
|
260
|
+
bytes: Uint8Array;
|
|
261
|
+
totalBytes: number;
|
|
262
|
+
} | undefined | Promise<{
|
|
263
|
+
bytes: Uint8Array;
|
|
264
|
+
totalBytes: number;
|
|
265
|
+
} | undefined>;
|
|
266
|
+
getJobs(): unknown;
|
|
267
|
+
/** Typed skill and mode controls exposed to the SDK host. */
|
|
268
|
+
invokeSkill?(name: string, args?: string): Promise<unknown>;
|
|
269
|
+
setPlanMode?(on: boolean): unknown;
|
|
270
|
+
operateGoal?(op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string): Promise<unknown>;
|
|
271
|
+
/** Typed nonvisual session controls exposed to the SDK host. */
|
|
272
|
+
sdkControl?(operation: string, input: Record<string, unknown>): unknown | Promise<unknown>;
|
|
273
|
+
/** Install a permission callback backed by a live SDK reverse provider lease. */
|
|
274
|
+
setSdkPermissionProvider?(provider: ((toolCall: ClientBridgePermissionToolCall, options: ClientBridgePermissionOption[], signal?: AbortSignal) => Promise<ClientBridgePermissionOutcome>) | undefined): void;
|
|
275
|
+
/** Names of session SDK seams actually installed by the active runtime. */
|
|
276
|
+
sdkBindings?(): readonly string[];
|
|
225
277
|
/** Gracefully shutdown and exit. */
|
|
226
278
|
shutdown(): void;
|
|
227
279
|
/** Get the current effective system prompt. */
|
|
228
280
|
getSystemPrompt(): string[];
|
|
229
281
|
/** @deprecated Use hasPendingMessages() instead */
|
|
230
282
|
hasQueuedMessages(): boolean;
|
|
231
|
-
/**
|
|
232
|
-
* Unattended workflow-gate bridge. Present only when the session runs in
|
|
233
|
-
* unattended/RPC mode; `undefined` in interactive/TUI mode (notify-only).
|
|
234
|
-
*/
|
|
283
|
+
/** SDK workflow-gate bridge, when a session has a remote gate responder. */
|
|
235
284
|
workflowGate?: WorkflowGateEmitter;
|
|
285
|
+
/** Clear the active conversation while preserving the saved session identity. */
|
|
286
|
+
clearContext(): Promise<boolean>;
|
|
236
287
|
}
|
|
237
288
|
/**
|
|
238
289
|
* Extended context for command handlers.
|
|
@@ -419,12 +470,12 @@ export interface UserPythonEvent {
|
|
|
419
470
|
/** Current working directory */
|
|
420
471
|
cwd: string;
|
|
421
472
|
}
|
|
422
|
-
/** Fired when
|
|
473
|
+
/** Fired when input enters through an interactive, SDK, or extension source. */
|
|
423
474
|
export interface InputEvent {
|
|
424
475
|
type: "input";
|
|
425
476
|
text: string;
|
|
426
477
|
images?: ImageContent[];
|
|
427
|
-
source: "interactive" | "
|
|
478
|
+
source: "interactive" | "sdk" | "extension";
|
|
428
479
|
}
|
|
429
480
|
interface ToolCallEventBase {
|
|
430
481
|
type: "tool_call";
|
|
@@ -662,7 +713,8 @@ export interface ExtensionAPI {
|
|
|
662
713
|
/** Send a user message to the agent, or queue it when deliverAs is set. */
|
|
663
714
|
sendUserMessage(content: string | (TextContent | ImageContent)[], options?: {
|
|
664
715
|
deliverAs?: "steer" | "followUp";
|
|
665
|
-
|
|
716
|
+
onPreflightAccepted?: () => void;
|
|
717
|
+
}): Promise<void>;
|
|
666
718
|
/** Append a custom entry to the session for state persistence (not sent to LLM). */
|
|
667
719
|
appendEntry<T = unknown>(customType: string, data?: T): void;
|
|
668
720
|
/** Execute a shell command. */
|
|
@@ -680,7 +732,23 @@ export interface ExtensionAPI {
|
|
|
680
732
|
/** Get current thinking level. */
|
|
681
733
|
getThinkingLevel(): ThinkingLevel | undefined;
|
|
682
734
|
/** Set thinking level for the current session. */
|
|
683
|
-
setThinkingLevel(level: ThinkingLevel): void;
|
|
735
|
+
setThinkingLevel(level: ThinkingLevel, persist?: boolean): void;
|
|
736
|
+
/** Get whether thinking output is visible in the current session. */
|
|
737
|
+
getThinkingVisibility(): "visible" | "hidden";
|
|
738
|
+
/** Set whether thinking output is visible for the current session. */
|
|
739
|
+
setThinkingVisibility(visibility: "visible" | "hidden", persist?: boolean): void;
|
|
740
|
+
/** Cycle the current model's available thinking levels. */
|
|
741
|
+
cycleThinkingLevel(): ThinkingLevel | undefined;
|
|
742
|
+
/** Set thinking level from a session or durable global control surface. */
|
|
743
|
+
setThinkingLevelForControl(level: ThinkingLevel, persist: boolean): Promise<void>;
|
|
744
|
+
/** Set thinking visibility from a session or durable global control surface. */
|
|
745
|
+
setThinkingVisibilityForControl(visibility: "visible" | "hidden", persist: boolean): Promise<void>;
|
|
746
|
+
/** Set the model for this session only. Returns false when it is unavailable. */
|
|
747
|
+
setModelTemporaryForControl(model: Model, expectedSessionId?: string): Promise<boolean>;
|
|
748
|
+
/** Fetch provider usage through the session's canonical provider resolution. */
|
|
749
|
+
fetchUsageReportsForControl(): Promise<UsageReport[] | null>;
|
|
750
|
+
/** Report whether the current effort follows global config or a session override. */
|
|
751
|
+
getThinkingScopeForControl(): "session" | "global config";
|
|
684
752
|
/** Get the current session name. */
|
|
685
753
|
getSessionName(): string | undefined;
|
|
686
754
|
/** Set the session name. Persists to the session file. */
|
|
@@ -816,15 +884,24 @@ options?: {
|
|
|
816
884
|
}) => void;
|
|
817
885
|
export type SendUserMessageHandler = (content: string | (TextContent | ImageContent)[], options?: {
|
|
818
886
|
deliverAs?: "steer" | "followUp";
|
|
819
|
-
|
|
887
|
+
onPreflightAccepted?: () => void;
|
|
888
|
+
}) => void | Promise<void>;
|
|
820
889
|
export type AppendEntryHandler = <T = unknown>(customType: string, data?: T) => void;
|
|
821
890
|
export type GetActiveToolsHandler = () => string[];
|
|
822
891
|
export type GetAllToolsHandler = () => string[];
|
|
823
892
|
export type GetCommandsHandler = () => SlashCommandInfo[];
|
|
824
893
|
export type SetActiveToolsHandler = (toolNames: string[]) => Promise<void>;
|
|
825
894
|
export type SetModelHandler = (model: Model) => Promise<boolean>;
|
|
895
|
+
export type CycleThinkingLevelHandler = () => ThinkingLevel | undefined;
|
|
896
|
+
export type SetThinkingLevelForControlHandler = (level: ThinkingLevel, persist: boolean) => Promise<void>;
|
|
897
|
+
export type SetThinkingVisibilityForControlHandler = (visibility: "visible" | "hidden", persist: boolean) => Promise<void>;
|
|
898
|
+
export type SetModelTemporaryForControlHandler = (model: Model, expectedSessionId?: string) => Promise<boolean>;
|
|
899
|
+
export type FetchUsageReportsForControlHandler = () => Promise<UsageReport[] | null>;
|
|
900
|
+
export type GetThinkingScopeForControlHandler = () => "session" | "global config";
|
|
826
901
|
export type GetThinkingLevelHandler = () => ThinkingLevel | undefined;
|
|
827
902
|
export type SetThinkingLevelHandler = (level: ThinkingLevel, persist?: boolean) => void;
|
|
903
|
+
export type GetThinkingVisibilityHandler = () => "visible" | "hidden";
|
|
904
|
+
export type SetThinkingVisibilityHandler = (visibility: "visible" | "hidden", persist?: boolean) => void;
|
|
828
905
|
/** Shared state created by loader, used during registration and runtime. */
|
|
829
906
|
export interface ExtensionRuntimeState {
|
|
830
907
|
flagValues: Map<string, boolean | string>;
|
|
@@ -848,6 +925,14 @@ export interface ExtensionActions {
|
|
|
848
925
|
setModel: SetModelHandler;
|
|
849
926
|
getThinkingLevel: GetThinkingLevelHandler;
|
|
850
927
|
setThinkingLevel: SetThinkingLevelHandler;
|
|
928
|
+
getThinkingVisibility: GetThinkingVisibilityHandler;
|
|
929
|
+
setThinkingVisibility: SetThinkingVisibilityHandler;
|
|
930
|
+
cycleThinkingLevel: CycleThinkingLevelHandler;
|
|
931
|
+
setThinkingLevelForControl: SetThinkingLevelForControlHandler;
|
|
932
|
+
setThinkingVisibilityForControl: SetThinkingVisibilityForControlHandler;
|
|
933
|
+
setModelTemporaryForControl: SetModelTemporaryForControlHandler;
|
|
934
|
+
fetchUsageReportsForControl: FetchUsageReportsForControlHandler;
|
|
935
|
+
getThinkingScopeForControl: GetThinkingScopeForControlHandler;
|
|
851
936
|
getSessionName: () => string | undefined;
|
|
852
937
|
setSessionName: (name: string) => Promise<void>;
|
|
853
938
|
}
|
|
@@ -857,12 +942,52 @@ export interface ExtensionContextActions {
|
|
|
857
942
|
isIdle: () => boolean;
|
|
858
943
|
abort: () => void;
|
|
859
944
|
hasPendingMessages: () => boolean;
|
|
945
|
+
/** Typed pending-message counts per queue; optional for embedders without a counted queue. */
|
|
946
|
+
getPendingMessageCounts?: () => {
|
|
947
|
+
steering: number;
|
|
948
|
+
followUp: number;
|
|
949
|
+
nextTurn: number;
|
|
950
|
+
};
|
|
951
|
+
getTranscript?: () => ExtensionTranscriptEntry[];
|
|
952
|
+
getTranscriptBody?: (entryId: string) => string | undefined;
|
|
953
|
+
getGoalState?: () => unknown;
|
|
954
|
+
getTodoState?: () => unknown;
|
|
955
|
+
getQueuedMessages?: () => unknown[];
|
|
956
|
+
getActiveTools?: () => string[];
|
|
957
|
+
getAllTools?: () => string[];
|
|
860
958
|
shutdown: () => void;
|
|
861
959
|
getContextUsage: () => ContextUsage | undefined;
|
|
862
960
|
compact: (instructionsOrOptions?: string | CompactOptions) => Promise<void>;
|
|
863
961
|
getSystemPrompt: () => string[];
|
|
864
|
-
/**
|
|
962
|
+
/** SDK workflow-gate bridge, when a session has a remote gate responder. */
|
|
865
963
|
getWorkflowGate?: () => WorkflowGateEmitter | undefined;
|
|
964
|
+
/** Clear the active conversation while preserving the saved session identity. */
|
|
965
|
+
clearContext?: () => Promise<boolean>;
|
|
966
|
+
/** Session control and query seams exposed to the per-session SDK host. */
|
|
967
|
+
cycleModel?: () => Promise<{
|
|
968
|
+
model: Model;
|
|
969
|
+
thinkingLevel: ThinkingLevel | undefined;
|
|
970
|
+
} | undefined>;
|
|
971
|
+
cycleThinkingLevel?: () => ThinkingLevel | undefined;
|
|
972
|
+
setQueueMode?: (kind: "steering" | "follow_up" | "interrupt", mode: unknown) => boolean;
|
|
973
|
+
getSkillState?: () => unknown;
|
|
974
|
+
getConfigItems?: () => unknown;
|
|
975
|
+
getBranchCandidates?: () => unknown;
|
|
976
|
+
getExtensions?: () => unknown;
|
|
977
|
+
getArtifact?: (id: string) => Uint8Array | string | undefined | Promise<Uint8Array | string | undefined>;
|
|
978
|
+
getArtifactRange?: (id: string, offset: number, length: number) => {
|
|
979
|
+
bytes: Uint8Array;
|
|
980
|
+
totalBytes: number;
|
|
981
|
+
} | undefined | Promise<{
|
|
982
|
+
bytes: Uint8Array;
|
|
983
|
+
totalBytes: number;
|
|
984
|
+
} | undefined>;
|
|
985
|
+
getJobs?: () => unknown;
|
|
986
|
+
setSdkPermissionProvider?: (provider: ((toolCall: ClientBridgePermissionToolCall, options: ClientBridgePermissionOption[], signal?: AbortSignal) => Promise<ClientBridgePermissionOutcome>) | undefined) => void;
|
|
987
|
+
sdkControl?: (operation: string, input: Record<string, unknown>) => unknown | Promise<unknown>;
|
|
988
|
+
invokeSkill?: (name: string, args?: string) => Promise<unknown>;
|
|
989
|
+
setPlanMode?: (on: boolean) => unknown;
|
|
990
|
+
operateGoal?: (op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string) => Promise<unknown>;
|
|
866
991
|
}
|
|
867
992
|
/** Actions for ExtensionCommandContext (ctx.* in command handlers). */
|
|
868
993
|
export interface ExtensionCommandContextActions {
|
|
@@ -11,7 +11,7 @@ import type { AgentEndEvent, AgentStartEvent, AutoCompactionEndEvent, AutoCompac
|
|
|
11
11
|
export type { ExecOptions, ExecResult } from "../../exec/exec";
|
|
12
12
|
/**
|
|
13
13
|
* UI context for hooks to request interactive UI from the harness.
|
|
14
|
-
*
|
|
14
|
+
* Interactive and headless callers provide their own implementation.
|
|
15
15
|
*/
|
|
16
16
|
export interface HookUIContext {
|
|
17
17
|
/**
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Args } from "../cli/args";
|
|
2
2
|
import { buildGjcTmuxExactSessionTarget, buildGjcTmuxProfileCommands, GJC_DEFAULT_TMUX_SESSION, GJC_TMUX_COMMAND_ENV, GJC_TMUX_MOUSE_ENV, GJC_TMUX_PROFILE_ENV, GJC_TMUX_SESSION_PREFIX, type GjcTmuxProfileCommand } from "./tmux-common";
|
|
3
3
|
import { type OwnerIsolationProbeSync } from "./tmux-owner-isolation";
|
|
4
|
-
|
|
5
|
-
export
|
|
4
|
+
import { buildWindowsPowerShellInnerCommand, GJC_TMUX_LAUNCHED_ENV, type WindowsPowerShellInnerCommandOptions } from "./windows-powershell-command";
|
|
5
|
+
export type { WindowsPowerShellInnerCommandOptions };
|
|
6
|
+
export { buildGjcTmuxExactSessionTarget, buildGjcTmuxProfileCommands, buildWindowsPowerShellInnerCommand, GJC_DEFAULT_TMUX_SESSION, GJC_TMUX_COMMAND_ENV, GJC_TMUX_LAUNCHED_ENV, GJC_TMUX_MOUSE_ENV, GJC_TMUX_PROFILE_ENV, GJC_TMUX_SESSION_PREFIX, };
|
|
6
7
|
export declare const GJC_LAUNCH_POLICY_ENV = "GJC_LAUNCH_POLICY";
|
|
7
8
|
export declare const GJC_TMUX_WINDOW_LABEL_MAX_WIDTH = 48;
|
|
8
9
|
interface TtyState {
|
|
@@ -36,6 +36,9 @@ export type PsmuxSpawnRunner = (command: string, args: string[]) => {
|
|
|
36
36
|
export type BinaryResolver = (candidate: string) => string | null;
|
|
37
37
|
/** @internal Test-only seam; production code never calls this. */
|
|
38
38
|
export declare function __setBinaryResolverForTests(resolver: BinaryResolver | null): void;
|
|
39
|
+
export type ExecutableIdentityResolver = (path: string) => string | null;
|
|
40
|
+
/** @internal Test-only seam; production code never calls this. */
|
|
41
|
+
export declare function __setExecutableIdentityResolverForTests(resolver: ExecutableIdentityResolver | null): void;
|
|
39
42
|
export declare function envDisabled(value: string | undefined): boolean;
|
|
40
43
|
/**
|
|
41
44
|
* Decide whether command resolves to a psmux binary by probing its version
|
|
@@ -41,6 +41,8 @@ export interface RuntimeStateContext {
|
|
|
41
41
|
sessionId: string;
|
|
42
42
|
cwd: string;
|
|
43
43
|
sessionFile?: string | null;
|
|
44
|
+
/** Optional platform seam for deterministic cross-platform path identity checks. */
|
|
45
|
+
platform?: NodeJS.Platform;
|
|
44
46
|
branch?: string | null;
|
|
45
47
|
/** Public-safe owner metadata used to persist the canonical terminal verdict. */
|
|
46
48
|
ownerTerminal?: OwnerTerminalContext | null;
|
|
@@ -60,6 +62,7 @@ export declare function readTerminalRuntimeStateMarker(input: {
|
|
|
60
62
|
sessionId?: string | null;
|
|
61
63
|
cwd?: string | null;
|
|
62
64
|
sessionFile?: string | null;
|
|
65
|
+
platform?: NodeJS.Platform;
|
|
63
66
|
}): Promise<TerminalRuntimeStateStatus>;
|
|
64
67
|
export declare function stateForEvent(event: RuntimeStateEvent): RuntimeState | null;
|
|
65
68
|
export declare function eventAffectsCoordinatorRuntimeState(event: RuntimeStateEvent): boolean;
|
|
@@ -146,7 +146,7 @@ export interface GjcTeamWorkerLifecycle {
|
|
|
146
146
|
}
|
|
147
147
|
export type GjcTeamNotificationDeliveryState = "pending" | "sent" | "queued" | "deferred" | "failed" | "delivered" | "acknowledged";
|
|
148
148
|
export type GjcTeamPaneAttemptResult = "sent" | "queued" | "deferred" | "failed";
|
|
149
|
-
export type GjcTeamMailboxDeliveryTransportKind = "
|
|
149
|
+
export type GjcTeamMailboxDeliveryTransportKind = "sdk" | "pane";
|
|
150
150
|
export interface GjcTeamNotification {
|
|
151
151
|
id: string;
|
|
152
152
|
kind: "mailbox_message" | "worker_lifecycle" | "invalid_attempt";
|
|
@@ -175,7 +175,7 @@ export interface GjcTeamMailboxDeliveryInput {
|
|
|
175
175
|
env: NodeJS.ProcessEnv;
|
|
176
176
|
}
|
|
177
177
|
export type GjcTeamMailboxDeliveryResult = {
|
|
178
|
-
transport: "
|
|
178
|
+
transport: "sdk";
|
|
179
179
|
state: GjcTeamNotificationDeliveryState;
|
|
180
180
|
reason?: string;
|
|
181
181
|
} | {
|
|
@@ -314,8 +314,7 @@ export declare function resolveWorkerWorktreePath(input: {
|
|
|
314
314
|
platform: NodeJS.Platform;
|
|
315
315
|
isPsmux: boolean;
|
|
316
316
|
}): string;
|
|
317
|
-
|
|
318
|
-
export declare function resolveGjcWorkerCommand(cwd?: string, env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform, argv?: string[], execPath?: string, which?: CommandPathResolver): string;
|
|
317
|
+
export declare function resolveGjcWorkerCommand(cwd?: string, env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform, argv?: string[], execPath?: string): string;
|
|
319
318
|
/** @internal Exported for unit tests. */
|
|
320
319
|
export declare function buildWorkerCommand(config: GjcTeamConfig, worker: GjcTeamWorker, platform?: NodeJS.Platform): string;
|
|
321
320
|
export type GjcWorkerCheckpointClassification = {
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
import { type TmuxServerProof } from "./tmux-owner-isolation";
|
|
1
2
|
/** Matches the sole argv shape allowed to enter the owner-isolation JSON-line protocol. */
|
|
2
3
|
export declare function isTmuxOwnerIsolationCliArgv(argv: readonly string[]): boolean;
|
|
4
|
+
interface TmuxListSessionsResult {
|
|
5
|
+
exitCode: number | null;
|
|
6
|
+
stdout: string;
|
|
7
|
+
stderr: string;
|
|
8
|
+
}
|
|
9
|
+
interface TmuxServerProofOptions {
|
|
10
|
+
platform?: NodeJS.Platform;
|
|
11
|
+
runListSessions?: (argv: string[]) => TmuxListSessionsResult;
|
|
12
|
+
}
|
|
13
|
+
/** Probes a tmux server using an injectable list-sessions runner for platform-bounded callers. */
|
|
14
|
+
export declare function tmuxServerProof(socketKey: string, tmuxControlArgv?: string[], options?: TmuxServerProofOptions): Promise<TmuxServerProof>;
|
|
3
15
|
/** Reads exactly one bounded JSON line and writes exactly one JSON response line. */
|
|
4
16
|
export declare function runTmuxOwnerIsolationCli(stdin: string): Promise<string>;
|
|
5
17
|
export declare function runTmuxOwnerIsolationCliFromStdin(): Promise<void>;
|
|
18
|
+
export {};
|
|
@@ -65,6 +65,9 @@ export interface ForceCloseOwnerDependencies {
|
|
|
65
65
|
sleep(ms: number): Promise<void>;
|
|
66
66
|
listPanePids(sessionName: string, env: NodeJS.ProcessEnv): number[];
|
|
67
67
|
}
|
|
68
|
+
export interface CreateGjcTmuxSessionOptions {
|
|
69
|
+
platform?: NodeJS.Platform;
|
|
70
|
+
}
|
|
68
71
|
export type CreateOwnerIsolationTestDependencies = {
|
|
69
72
|
probe?: Partial<OwnerIsolationProbeSync>;
|
|
70
73
|
execute?: (plan: PlanResponse, deps: TmuxOwnerIsolationExecutionDependencies) => TmuxOwnerIsolationExecutionResult;
|
|
@@ -80,7 +83,7 @@ export declare function findGjcTmuxSessionByBranch(branch: string, env?: NodeJS.
|
|
|
80
83
|
export declare function findGjcTmuxSessionByName(sessionName: string, env?: NodeJS.ProcessEnv): GjcTmuxSessionStatus | undefined;
|
|
81
84
|
export declare function findGjcTmuxSessionByScope(project: string, branch: string | null | undefined, env?: NodeJS.ProcessEnv): GjcTmuxSessionStatus | undefined;
|
|
82
85
|
export declare function statusGjcTmuxSession(sessionName: string, env?: NodeJS.ProcessEnv): GjcTmuxSessionStatus;
|
|
83
|
-
export declare function createGjcTmuxSession(env?: NodeJS.ProcessEnv): GjcTmuxSessionStatus;
|
|
86
|
+
export declare function createGjcTmuxSession(env?: NodeJS.ProcessEnv, options?: CreateGjcTmuxSessionOptions): GjcTmuxSessionStatus;
|
|
84
87
|
/** Proves a managed reusable name still resolves to one immutable session on one server. */
|
|
85
88
|
export declare function proveGjcTmuxSessionMutationTarget(sessionName: string, env?: NodeJS.ProcessEnv): ProvenTmuxSessionIdentity;
|
|
86
89
|
/** @internal */
|
|
@@ -26,6 +26,17 @@ export declare function validateReceiptFreshBase(input: {
|
|
|
26
26
|
receipt: UltragoalCompletionVerification;
|
|
27
27
|
receiptKind: UltragoalReceiptKind;
|
|
28
28
|
}): UltragoalReceiptFreshnessDiagnostic | null;
|
|
29
|
+
/**
|
|
30
|
+
* Validate a final-aggregate receipt that was legitimately superseded — its
|
|
31
|
+
* aggregate claim staled by later plan growth (e.g. `steer add_subgoal`
|
|
32
|
+
* appending goals after a terminal run) — as historical evidence for its own
|
|
33
|
+
* goal. Returns null when the receipt stands.
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateSupersededFinalAggregateReceipt(input: {
|
|
36
|
+
ledger: readonly UltragoalLedgerEvent[];
|
|
37
|
+
goal: UltragoalGoal;
|
|
38
|
+
receipt: UltragoalCompletionVerification;
|
|
39
|
+
}): UltragoalReceiptFreshnessDiagnostic | null;
|
|
29
40
|
export declare function findFreshBatchCloseReceipt(input: {
|
|
30
41
|
plan: UltragoalPlan;
|
|
31
42
|
ledger: readonly UltragoalLedgerEvent[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const GJC_TMUX_LAUNCHED_ENV = "GJC_TMUX_LAUNCHED";
|
|
2
|
+
export interface WindowsPowerShellInnerCommandOptions {
|
|
3
|
+
command: readonly string[];
|
|
4
|
+
args?: readonly string[];
|
|
5
|
+
environment?: Record<string, string>;
|
|
6
|
+
tmuxExitMarkerPath?: string;
|
|
7
|
+
}
|
|
8
|
+
/** Builds the shared BOM-free UTF-16LE command for native Windows tmux-compatible panes. */
|
|
9
|
+
export declare function buildWindowsPowerShellInnerCommand({ command, args, environment, tmuxExitMarkerPath, }: WindowsPowerShellInnerCommandOptions): string;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { type FinalizeChecks, type FinalizeResult, type ValidationCommandSpec } from "./finalize";
|
|
2
2
|
import { type PreserveResult } from "./preserve";
|
|
3
|
-
import { type
|
|
3
|
+
import { type HarnessSessionTransport } from "./session-transport";
|
|
4
4
|
import { type HarnessLifecycle, type Observation, type RecoveryClassification, type RetryBudget, type Severity } from "./types";
|
|
5
5
|
export interface OperateOptions {
|
|
6
6
|
root: string;
|
|
7
7
|
sessionId: string;
|
|
8
8
|
workspace: string;
|
|
9
9
|
branch: string;
|
|
10
|
-
|
|
11
|
-
/** Factory used to
|
|
12
|
-
|
|
13
|
-
/** Bounded observation provider (scripted in tests; real = git +
|
|
10
|
+
transport: HarnessSessionTransport;
|
|
11
|
+
/** Factory used to recreate an SDK transport on restart recovery. Defaults to reusing `transport`. */
|
|
12
|
+
transportFactory?: () => HarnessSessionTransport;
|
|
13
|
+
/** Bounded observation provider (scripted in tests; real = git + SDK session state). */
|
|
14
14
|
observe: () => Promise<Observation>;
|
|
15
15
|
/** Real dirty-worktree preservation; injectable for tests. Defaults to git stash/diff capture. */
|
|
16
16
|
preserve?: (workspace: string) => PreserveResult;
|
|
@@ -3,20 +3,22 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Responsibilities:
|
|
5
5
|
* - hold the {@link SessionLease} (single writer),
|
|
6
|
-
* - own
|
|
6
|
+
* - own an injected SDK session transport,
|
|
7
7
|
* - serve owner-routed primitives over the {@link ControlServer} endpoint,
|
|
8
8
|
* - be the SOLE writer of the severity event stream,
|
|
9
9
|
* - heartbeat the lease.
|
|
10
10
|
*
|
|
11
11
|
* Stateless `gjc harness` CLI calls reach the owner via {@link resolveOwner} + the endpoint.
|
|
12
12
|
*/
|
|
13
|
+
import { ControlServer, type EndpointHandler } from "./control-endpoint";
|
|
13
14
|
import { type FinalizeChecks, type ValidationCommandSpec } from "./finalize";
|
|
14
|
-
import { type
|
|
15
|
-
import { type
|
|
15
|
+
import { releaseLease, type SessionLease } from "./session-lease";
|
|
16
|
+
import { type HarnessSessionTransport } from "./session-transport";
|
|
17
|
+
import { appendEvent, writeSessionState } from "./storage";
|
|
16
18
|
export interface OwnerOptions {
|
|
17
19
|
root: string;
|
|
18
20
|
sessionId: string;
|
|
19
|
-
|
|
21
|
+
transport: HarnessSessionTransport;
|
|
20
22
|
ownerId?: string;
|
|
21
23
|
ttlMs?: number;
|
|
22
24
|
heartbeatMs?: number;
|
|
@@ -24,6 +26,18 @@ export interface OwnerOptions {
|
|
|
24
26
|
clock?: () => number;
|
|
25
27
|
finalizeChecks?: FinalizeChecks;
|
|
26
28
|
validationCommands?: ValidationCommandSpec[];
|
|
29
|
+
/** Test seam for deterministic control-endpoint teardown failures. */
|
|
30
|
+
controlServerFactory?: (socketPath: string, handler: EndpointHandler) => ControlServer;
|
|
31
|
+
/** Test seam for deterministic lease-release teardown failures. */
|
|
32
|
+
leaseRelease?: typeof releaseLease;
|
|
33
|
+
/** Test seams for frame persistence failures. */
|
|
34
|
+
framePersistence?: {
|
|
35
|
+
appendEvent?: typeof appendEvent;
|
|
36
|
+
writeSessionState?: typeof writeSessionState;
|
|
37
|
+
};
|
|
38
|
+
/** Test seams; production retries verified shutdown without a finite limit. */
|
|
39
|
+
cleanupRetryMs?: number;
|
|
40
|
+
cleanupRetryLimit?: number;
|
|
27
41
|
}
|
|
28
42
|
export interface OwnerStartInfo {
|
|
29
43
|
ownerId: string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SdkClient } from "../sdk/client";
|
|
2
|
+
import type { HarnessSessionTransport } from "./session-transport";
|
|
3
|
+
export declare class HarnessSdkTransportError extends Error {
|
|
4
|
+
readonly code: "endpoint_unavailable" | "invalid_response";
|
|
5
|
+
readonly cause?: unknown;
|
|
6
|
+
constructor(code: "endpoint_unavailable" | "invalid_response", message: string, cause?: unknown);
|
|
7
|
+
}
|
|
8
|
+
export interface SpawnedHarnessSession {
|
|
9
|
+
stop(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export interface CreateSdkSessionTransportOptions {
|
|
12
|
+
repo: string;
|
|
13
|
+
sessionId: string;
|
|
14
|
+
/** Starts the normal GJC session before discovery. Test callers may provide a deterministic SDK host. */
|
|
15
|
+
spawn?: () => SpawnedHarnessSession | Promise<SpawnedHarnessSession>;
|
|
16
|
+
discoveryTimeoutMs?: number;
|
|
17
|
+
/** Test seam: inject SDK client/endpoint resolution to avoid a process-global module mock. */
|
|
18
|
+
connect?: typeof SdkClient.connect;
|
|
19
|
+
readEndpoint?: (repo: string, sessionId: string) => Promise<{
|
|
20
|
+
url: string;
|
|
21
|
+
token: string;
|
|
22
|
+
} | null>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Connects an owner to the child session's public SDK endpoint. The SDK client owns
|
|
26
|
+
* hello-gated reconnects; this adapter only owns the bounded discovery wait and child
|
|
27
|
+
* lifecycle.
|
|
28
|
+
*/
|
|
29
|
+
export declare function createSdkSessionTransport(options: CreateSdkSessionTransportOptions): Promise<HarnessSessionTransport>;
|
|
30
|
+
export interface ReapableHarnessChild {
|
|
31
|
+
kill(signal?: number | NodeJS.Signals): void;
|
|
32
|
+
readonly exited: Promise<number>;
|
|
33
|
+
readonly exitCode: number | null;
|
|
34
|
+
}
|
|
35
|
+
export declare function spawnNormalHarnessSession(repo: string, sessionId: string, options?: {
|
|
36
|
+
termGraceMs?: number;
|
|
37
|
+
killVerifyMs?: number;
|
|
38
|
+
}): SpawnedHarnessSession;
|
|
39
|
+
/** Test hook for exact-child stop serialization and retry semantics. */
|
|
40
|
+
export declare function ownedHarnessSessionForTest(child: ReapableHarnessChild, options?: {
|
|
41
|
+
termGraceMs?: number;
|
|
42
|
+
killVerifyMs?: number;
|
|
43
|
+
}): SpawnedHarnessSession;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface SessionStateSnapshot {
|
|
2
|
+
isStreaming: boolean;
|
|
3
|
+
steeringQueueDepth: number;
|
|
4
|
+
followupQueueDepth: number;
|
|
5
|
+
}
|
|
6
|
+
export interface HarnessSessionTransportCloseContext {
|
|
7
|
+
/**
|
|
8
|
+
* Immediate cycle-break acknowledgment for the exact direct close path.
|
|
9
|
+
*
|
|
10
|
+
* Invoke this method synchronously before an async close() reaches its first await
|
|
11
|
+
* (or before a non-async close() returns its promise); the returned promise may be
|
|
12
|
+
* awaited later. It does NOT signal that RuntimeOwner teardown has completed.
|
|
13
|
+
*/
|
|
14
|
+
acknowledgeDirectOwnerStopReentry(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/** SDK-backed transport contract for a live harness session. */
|
|
17
|
+
export interface HarnessSessionTransport {
|
|
18
|
+
getState(): Promise<SessionStateSnapshot>;
|
|
19
|
+
sendPrompt(prompt: string): Promise<{
|
|
20
|
+
commandId: string;
|
|
21
|
+
ack: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
eventCursor(): number;
|
|
24
|
+
waitForAgentStart(afterCursor: number, timeoutMs: number): Promise<{
|
|
25
|
+
cursor: number;
|
|
26
|
+
} | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Await every transport-owned cleanup step. close() MUST NOT call public
|
|
29
|
+
* RuntimeOwner.stop(), which would circularly await this close and hang. A transport
|
|
30
|
+
* that needs that direct cycle break must synchronously invoke
|
|
31
|
+
* `context.acknowledgeDirectOwnerStopReentry()` before its first await.
|
|
32
|
+
*/
|
|
33
|
+
close(context?: HarnessSessionTransportCloseContext): Promise<void>;
|
|
34
|
+
/** Return a synchronous disposer that fully severs this event subscription. */
|
|
35
|
+
onEventFrame?(listener: (frame: Record<string, unknown>) => void): () => void;
|
|
36
|
+
isLive?(): boolean;
|
|
37
|
+
lastFrameAt?(): string | null;
|
|
38
|
+
getLastAssistantText?(): Promise<string | null>;
|
|
39
|
+
}
|
|
40
|
+
export interface AcceptanceResult {
|
|
41
|
+
accepted: boolean;
|
|
42
|
+
reason: string;
|
|
43
|
+
commandId: string | null;
|
|
44
|
+
preSubmitCursor: number;
|
|
45
|
+
agentStartCursor: number | null;
|
|
46
|
+
preSubmitState: SessionStateSnapshot;
|
|
47
|
+
}
|
|
48
|
+
export declare function singleFlightAccept(transport: HarnessSessionTransport, prompt: string, timeoutMs: number): Promise<AcceptanceResult>;
|
|
@@ -81,10 +81,9 @@ export interface SessionHandle {
|
|
|
81
81
|
ownerId: string | null;
|
|
82
82
|
pid: number | null;
|
|
83
83
|
};
|
|
84
|
-
|
|
85
|
-
kind: "
|
|
86
|
-
|
|
87
|
-
sessionDir: string;
|
|
84
|
+
sdkHandle: {
|
|
85
|
+
kind: "sdk-session-endpoint";
|
|
86
|
+
sessionId: string;
|
|
88
87
|
};
|
|
89
88
|
ownerHandle: {
|
|
90
89
|
leasePath: string;
|
|
@@ -9,7 +9,7 @@ export type { LspServerStatus } from "./client";
|
|
|
9
9
|
export type { LspToolDetails } from "./types";
|
|
10
10
|
export interface LspStartupServerInfo {
|
|
11
11
|
name: string;
|
|
12
|
-
status: "connecting" | "ready" | "error";
|
|
12
|
+
status: "idle" | "connecting" | "ready" | "error";
|
|
13
13
|
fileTypes: string[];
|
|
14
14
|
error?: string;
|
|
15
15
|
}
|