@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
package/src/tools/subagent.ts
CHANGED
|
@@ -80,8 +80,17 @@ export interface SubagentSnapshot {
|
|
|
80
80
|
modelFellBack?: boolean;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
export type SubagentAwaitOutcome = "completed" | "timed_out" | "interrupted";
|
|
84
|
+
|
|
85
|
+
const AWAIT_INTERRUPTED_GUIDANCE =
|
|
86
|
+
"Await interrupted; this subagent continues. Inspect its current state or cancel it only when necessary.";
|
|
87
|
+
|
|
83
88
|
export interface SubagentToolDetails {
|
|
84
89
|
subagents: SubagentSnapshot[];
|
|
90
|
+
/** Await outcome for a live await receipt; omitted when no wait was started. */
|
|
91
|
+
awaitOutcome?: SubagentAwaitOutcome;
|
|
92
|
+
/** True only when the parent await was interrupted; the child was not cancelled. */
|
|
93
|
+
interrupted?: true;
|
|
85
94
|
}
|
|
86
95
|
|
|
87
96
|
export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentToolDetails> {
|
|
@@ -370,35 +379,50 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
|
|
|
370
379
|
// the viewport (the source of the await-panel repaint storms).
|
|
371
380
|
emitIfChanged(true);
|
|
372
381
|
|
|
373
|
-
let
|
|
382
|
+
let awaitOutcome: SubagentAwaitOutcome;
|
|
383
|
+
const { promise: timeoutPromise, resolve: resolveTimeout } = Promise.withResolvers<SubagentAwaitOutcome>();
|
|
384
|
+
const timeoutTimer = setTimeout(() => resolveTimeout("timed_out"), timeoutMs);
|
|
385
|
+
const completionPromise = Promise.all(runningJobs.map(job => job.promise)).then(() => "completed" as const);
|
|
386
|
+
let onAbort: (() => void) | undefined;
|
|
374
387
|
try {
|
|
375
|
-
const completionPromise = Promise.all(runningJobs.map(job => job.promise));
|
|
376
|
-
const timeoutPromise = Bun.sleep(timeoutMs).then(() => {
|
|
377
|
-
timedOut = true;
|
|
378
|
-
});
|
|
379
388
|
if (signal) {
|
|
380
|
-
const { promise: abortPromise, resolve:
|
|
381
|
-
|
|
382
|
-
signal.
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
} finally {
|
|
386
|
-
signal.removeEventListener("abort", onAbort);
|
|
387
|
-
}
|
|
389
|
+
const { promise: abortPromise, resolve: resolveAbort } = Promise.withResolvers<SubagentAwaitOutcome>();
|
|
390
|
+
onAbort = () => resolveAbort("interrupted");
|
|
391
|
+
if (signal.aborted) onAbort();
|
|
392
|
+
else signal.addEventListener("abort", onAbort, { once: true });
|
|
393
|
+
awaitOutcome = await Promise.race([completionPromise, timeoutPromise, abortPromise]);
|
|
388
394
|
} else {
|
|
389
|
-
await Promise.race([completionPromise, timeoutPromise]);
|
|
395
|
+
awaitOutcome = await Promise.race([completionPromise, timeoutPromise]);
|
|
390
396
|
}
|
|
391
397
|
} finally {
|
|
392
|
-
|
|
398
|
+
clearTimeout(timeoutTimer);
|
|
399
|
+
if (signal && onAbort) signal.removeEventListener("abort", onAbort);
|
|
393
400
|
if (progressTimer) clearInterval(progressTimer);
|
|
394
401
|
}
|
|
402
|
+
if (awaitOutcome !== "interrupted") {
|
|
403
|
+
const terminalWatchedJobIds = watchedJobIds.filter(jobId => {
|
|
404
|
+
const status = manager.getJob(jobId)?.status;
|
|
405
|
+
return status === "completed" || status === "failed" || status === "cancelled";
|
|
406
|
+
});
|
|
407
|
+
manager.acknowledgeDeliveries(terminalWatchedJobIds);
|
|
408
|
+
}
|
|
409
|
+
manager.unwatchJobs(watchedJobIds);
|
|
395
410
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
411
|
+
const finalRecords = this.#visibleRecordsByIds(
|
|
412
|
+
manager,
|
|
413
|
+
records.map(record => record.subagentId),
|
|
414
|
+
ownerFilter,
|
|
415
|
+
);
|
|
416
|
+
const finalNotFoundIds = [...new Set([...notFoundIds, ...records.map(record => record.subagentId)])].filter(
|
|
417
|
+
id => !finalRecords.some(record => record.subagentId === id),
|
|
418
|
+
);
|
|
419
|
+
return await this.#buildRecordResult(manager, finalRecords, {
|
|
420
|
+
title: awaitOutcome === "interrupted" ? "Subagent await interrupted" : "Subagent await",
|
|
421
|
+
notFoundIds: finalNotFoundIds,
|
|
422
|
+
timedOut: awaitOutcome === "timed_out",
|
|
400
423
|
verbosity: params.verbosity ?? "receipt",
|
|
401
424
|
attachLiveProgress: true,
|
|
425
|
+
awaitOutcome,
|
|
402
426
|
});
|
|
403
427
|
}
|
|
404
428
|
|
|
@@ -516,6 +540,7 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
|
|
|
516
540
|
timedOut?: boolean;
|
|
517
541
|
verbosity?: SubagentParams["verbosity"];
|
|
518
542
|
attachLiveProgress?: boolean;
|
|
543
|
+
awaitOutcome?: SubagentAwaitOutcome;
|
|
519
544
|
},
|
|
520
545
|
): Promise<AgentToolResult<SubagentToolDetails>> {
|
|
521
546
|
const verifiedOutputIds = await this.#verifiedOutputIds(records);
|
|
@@ -530,18 +555,34 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
|
|
|
530
555
|
for (const id of options.notFoundIds ?? []) {
|
|
531
556
|
snapshots.push(this.#missingSnapshot(id, "not_found", "No visible detached subagent matches this id."));
|
|
532
557
|
}
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
s
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
558
|
+
if (options.awaitOutcome !== "interrupted") {
|
|
559
|
+
manager.acknowledgeDeliveries(
|
|
560
|
+
snapshots
|
|
561
|
+
.filter(
|
|
562
|
+
s =>
|
|
563
|
+
s.status !== "running" &&
|
|
564
|
+
s.status !== "paused" &&
|
|
565
|
+
s.status !== "queued" &&
|
|
566
|
+
s.status !== "not_found",
|
|
567
|
+
)
|
|
568
|
+
.map(s => s.jobId),
|
|
569
|
+
);
|
|
570
|
+
}
|
|
571
|
+
if (options.awaitOutcome === "interrupted") {
|
|
572
|
+
for (const snapshot of snapshots) {
|
|
573
|
+
if (snapshot.status === "running" || snapshot.status === "paused" || snapshot.status === "queued") {
|
|
574
|
+
snapshot.guidance = AWAIT_INTERRUPTED_GUIDANCE;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
return this.#buildSnapshotResult(snapshots, options.title, options.awaitOutcome);
|
|
542
579
|
}
|
|
543
580
|
|
|
544
|
-
#buildSnapshotResult(
|
|
581
|
+
#buildSnapshotResult(
|
|
582
|
+
snapshots: SubagentSnapshot[],
|
|
583
|
+
title: string,
|
|
584
|
+
awaitOutcome?: SubagentAwaitOutcome,
|
|
585
|
+
): AgentToolResult<SubagentToolDetails> {
|
|
545
586
|
const lines = [`## ${title} (${snapshots.length})`, ""];
|
|
546
587
|
for (const snapshot of snapshots) {
|
|
547
588
|
lines.push(`### ${snapshot.id} — ${snapshot.status}`);
|
|
@@ -571,7 +612,11 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
|
|
|
571
612
|
}
|
|
572
613
|
return {
|
|
573
614
|
content: [{ type: "text", text: lines.join("\n").trimEnd() }],
|
|
574
|
-
details: {
|
|
615
|
+
details: {
|
|
616
|
+
subagents: snapshots,
|
|
617
|
+
...(awaitOutcome ? { awaitOutcome } : {}),
|
|
618
|
+
...(awaitOutcome === "interrupted" ? { interrupted: true } : {}),
|
|
619
|
+
},
|
|
575
620
|
};
|
|
576
621
|
}
|
|
577
622
|
|
|
@@ -778,8 +823,15 @@ function previewJobOutput(
|
|
|
778
823
|
* countdown ticking is sacrificed by design; every real transition still changes
|
|
779
824
|
* the signature.
|
|
780
825
|
*/
|
|
781
|
-
export function subagentAwaitRenderedStateSignature(
|
|
782
|
-
|
|
826
|
+
export function subagentAwaitRenderedStateSignature(
|
|
827
|
+
subagents: readonly SubagentSnapshot[],
|
|
828
|
+
receipt?: Pick<SubagentToolDetails, "awaitOutcome" | "interrupted">,
|
|
829
|
+
): string {
|
|
830
|
+
return JSON.stringify({
|
|
831
|
+
awaitOutcome: receipt?.awaitOutcome ?? null,
|
|
832
|
+
interrupted: receipt?.interrupted === true,
|
|
833
|
+
subagents: subagents.map(canonicalizeSnapshotForSignature),
|
|
834
|
+
});
|
|
783
835
|
}
|
|
784
836
|
|
|
785
837
|
function canonicalizeSnapshotForSignature(snapshot: SubagentSnapshot): unknown {
|
|
@@ -2,8 +2,8 @@ import * as fs from "node:fs";
|
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import type { AgentTool, AgentToolContext, AgentToolResult, AgentToolUpdateCallback } from "@gajae-code/agent-core";
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
|
-
import { getTelegramFileSink } from "../
|
|
6
|
-
import { getNotificationConfig, isGloballyConfigured } from "../
|
|
5
|
+
import { getTelegramFileSink } from "../sdk/bus/attachment-registry";
|
|
6
|
+
import { getNotificationConfig, isGloballyConfigured } from "../sdk/bus/config";
|
|
7
7
|
import type { ToolSession } from "./index";
|
|
8
8
|
|
|
9
9
|
const TELEGRAM_SEND_MAX_FILE_BYTES = 50 * 1024 * 1024;
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
],
|
|
21
21
|
"exclusionRationale": "Excludes upstream install hooks (SessionStart settings.json mutation), GitHub star-baiting (gh api user/starred), the update-notifier, and the past-session transcript-language scanner. Only the runtime Phase 0-3 engine and its Playwright/stealth templates are vendored.",
|
|
22
22
|
"localPatches": [
|
|
23
|
-
"engine/content_safety.py + FetchResult trust/risk metadata (content_trust, prompt_injection_risk, prompt_injection_signals, untrusted_content_boundary) and to_untrusted_text(): cherry-picked from insane-search a16f7c1 (upstream PR #5, v0.9.0). Adds prompt-injection labelling to the JSON surface (to_dict); the default CLI text output is intentionally left unchanged (plain content preserved, no envelope)."
|
|
23
|
+
"engine/content_safety.py + FetchResult trust/risk metadata (content_trust, prompt_injection_risk, prompt_injection_signals, untrusted_content_boundary) and to_untrusted_text(): cherry-picked from insane-search a16f7c1 (upstream PR #5, v0.9.0). Adds prompt-injection labelling to the JSON surface (to_dict); the default CLI text output is intentionally left unchanged (plain content preserved, no envelope).",
|
|
24
|
+
"engine/phase0.py _ytdlp_argv() console-script→module fallback + engine/bias_check.py rel.as_posix() Windows exemption + engine/tests/test_u9.py: cherry-picked from insane-search 33f898d (upstream PR #6, released v0.9.2). Cross-platform yt-dlp resolution; no capability or site logic added."
|
|
24
25
|
],
|
|
25
26
|
"notes": "Runtime engine is invoked via `python3 -m engine \"<url>\" --json` with cwd=this directory and PYTHONPATH pointed at this directory. Phase 0-2 require python3 + curl_cffi; Phase 3 requires node + playwright/playwright-extra/puppeteer-extra-plugin-stealth installed under engine/templates. GJC never auto-installs these dependencies."
|
|
26
27
|
}
|
|
@@ -98,7 +98,10 @@ def _line_is_exempt(line: str, ext: str) -> bool:
|
|
|
98
98
|
def _scan_file(path: Path, root: Path) -> list[str]:
|
|
99
99
|
"""Return list of violation strings for this file."""
|
|
100
100
|
rel = path.relative_to(root.parent)
|
|
101
|
-
|
|
101
|
+
# Compare with forward slashes so the exemption matches on Windows too —
|
|
102
|
+
# `str(rel)` yields backslashes there, silently defeating the phase0.py
|
|
103
|
+
# exemption (EXPLICIT_ALLOW_FILES uses POSIX-style paths).
|
|
104
|
+
if rel.as_posix() in EXPLICIT_ALLOW_FILES:
|
|
102
105
|
return []
|
|
103
106
|
|
|
104
107
|
ext = path.suffix.lower()
|
|
@@ -24,8 +24,11 @@ Each attempt dict: {"route","platform","ok","status","bytes","note"}.
|
|
|
24
24
|
"""
|
|
25
25
|
from __future__ import annotations
|
|
26
26
|
|
|
27
|
+
import importlib.util
|
|
27
28
|
import re
|
|
29
|
+
import shutil
|
|
28
30
|
import subprocess
|
|
31
|
+
import sys
|
|
29
32
|
from typing import Optional
|
|
30
33
|
from urllib.parse import urlsplit
|
|
31
34
|
|
|
@@ -182,11 +185,33 @@ def _x(url: str, timeout: int) -> dict:
|
|
|
182
185
|
|
|
183
186
|
|
|
184
187
|
# --- youtube -----------------------------------------------------------------
|
|
188
|
+
def _ytdlp_argv() -> Optional[list[str]]:
|
|
189
|
+
"""Best yt-dlp invocation for this environment, or None if unavailable.
|
|
190
|
+
|
|
191
|
+
Prefers the ``yt-dlp`` console script on PATH; falls back to
|
|
192
|
+
``<python> -m yt_dlp`` when the script dir is not on PATH but the module is
|
|
193
|
+
importable — the common case for ``pip install --user`` and Windows / venv
|
|
194
|
+
installs, where the Scripts/bin dir is frequently absent from PATH. Mirrors
|
|
195
|
+
the ``which yt-dlp || python3 -m yt_dlp`` fallback already documented in
|
|
196
|
+
references/media.md."""
|
|
197
|
+
exe = shutil.which("yt-dlp")
|
|
198
|
+
if exe:
|
|
199
|
+
return [exe]
|
|
200
|
+
if importlib.util.find_spec("yt_dlp") is not None:
|
|
201
|
+
return [sys.executable, "-m", "yt_dlp"]
|
|
202
|
+
return None
|
|
203
|
+
|
|
204
|
+
|
|
185
205
|
def _youtube(url: str, timeout: int) -> dict:
|
|
186
206
|
attempts: list[dict] = []
|
|
207
|
+
argv = _ytdlp_argv()
|
|
208
|
+
if argv is None:
|
|
209
|
+
attempts.append(_attempt("youtube", "yt-dlp", False, 0, "", "yt-dlp not installed"))
|
|
210
|
+
return {"platform": "youtube", "ok": False, "route": None, "content": "",
|
|
211
|
+
"final_url": url, "attempts": attempts}
|
|
187
212
|
try:
|
|
188
213
|
p = subprocess.run(
|
|
189
|
-
["
|
|
214
|
+
argv + ["--dump-json", "--skip-download", url],
|
|
190
215
|
capture_output=True, text=True, timeout=max(timeout, 60),
|
|
191
216
|
)
|
|
192
217
|
ok = p.returncode == 0 and p.stdout.strip().startswith("{")
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
export interface RpcStateSnapshot {
|
|
2
|
-
isStreaming: boolean;
|
|
3
|
-
steeringQueueDepth: number;
|
|
4
|
-
followupQueueDepth: number;
|
|
5
|
-
}
|
|
6
|
-
/** Abstract handle to a live gajae-code RPC session. */
|
|
7
|
-
export interface HarnessRpc {
|
|
8
|
-
getState(): Promise<RpcStateSnapshot>;
|
|
9
|
-
/** Send a prompt; resolves with the RPC command id and whether it was acked. Does NOT await agent_start. */
|
|
10
|
-
sendPrompt(prompt: string): Promise<{
|
|
11
|
-
commandId: string;
|
|
12
|
-
ack: boolean;
|
|
13
|
-
}>;
|
|
14
|
-
/** Monotonic count of events observed so far (the acceptance cursor). */
|
|
15
|
-
eventCursor(): number;
|
|
16
|
-
/** Resolve when an `agent_start` event arrives strictly after `afterCursor`, else null on timeout. */
|
|
17
|
-
waitForAgentStart(afterCursor: number, timeoutMs: number): Promise<{
|
|
18
|
-
cursor: number;
|
|
19
|
-
} | null>;
|
|
20
|
-
close(): Promise<void>;
|
|
21
|
-
/** Subscribe to parsed event frames (non-ready, non-response), fired AFTER the cursor advances. Returns unsubscribe. */
|
|
22
|
-
onEventFrame?(listener: (frame: Record<string, unknown>) => void): () => void;
|
|
23
|
-
/** Whether the underlying RPC subprocess is still alive. */
|
|
24
|
-
isLive?(): boolean;
|
|
25
|
-
/** ISO timestamp of the last observed event frame, or null. */
|
|
26
|
-
lastFrameAt?(): string | null;
|
|
27
|
-
/** Final assistant text from the live session (for review-verdict extraction); null when unavailable. */
|
|
28
|
-
getLastAssistantText?(): Promise<string | null>;
|
|
29
|
-
}
|
|
30
|
-
export interface AcceptanceResult {
|
|
31
|
-
accepted: boolean;
|
|
32
|
-
reason: string;
|
|
33
|
-
commandId: string | null;
|
|
34
|
-
preSubmitCursor: number;
|
|
35
|
-
agentStartCursor: number | null;
|
|
36
|
-
preSubmitState: RpcStateSnapshot;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Single-flight acceptance: idle + empty-queue pre-state, ack, then the NEXT
|
|
40
|
-
* `agent_start` after the pre-submit cursor within `timeoutMs`.
|
|
41
|
-
*/
|
|
42
|
-
export declare function singleFlightAccept(rpc: HarnessRpc, prompt: string, timeoutMs: number): Promise<AcceptanceResult>;
|
|
43
|
-
/**
|
|
44
|
-
* Real adapter: spawns `gjc --mode rpc --session-dir <dir>` and speaks the JSONL
|
|
45
|
-
* protocol from docs/rpc.md. Verified end-to-end in the M10 suite.
|
|
46
|
-
*/
|
|
47
|
-
export declare class GajaeCodeRpc implements HarnessRpc {
|
|
48
|
-
#private;
|
|
49
|
-
constructor(opts: {
|
|
50
|
-
sessionDir: string;
|
|
51
|
-
command?: string[];
|
|
52
|
-
cwd?: string;
|
|
53
|
-
env?: NodeJS.ProcessEnv;
|
|
54
|
-
});
|
|
55
|
-
onEventFrame(listener: (frame: Record<string, unknown>) => void): () => void;
|
|
56
|
-
isLive(): boolean;
|
|
57
|
-
lastFrameAt(): string | null;
|
|
58
|
-
getState(): Promise<RpcStateSnapshot>;
|
|
59
|
-
getLastAssistantText(): Promise<string | null>;
|
|
60
|
-
sendPrompt(prompt: string): Promise<{
|
|
61
|
-
commandId: string;
|
|
62
|
-
ack: boolean;
|
|
63
|
-
}>;
|
|
64
|
-
eventCursor(): number;
|
|
65
|
-
waitForAgentStart(afterCursor: number, timeoutMs: number): Promise<{
|
|
66
|
-
cursor: number;
|
|
67
|
-
} | null>;
|
|
68
|
-
close(): Promise<void>;
|
|
69
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface BridgeAuthConfig {
|
|
2
|
-
token: string;
|
|
3
|
-
}
|
|
4
|
-
export interface BridgeBindConfig {
|
|
5
|
-
hostname: string;
|
|
6
|
-
port: number;
|
|
7
|
-
tlsConfigured: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare function extractBearerToken(authorization: string | null | undefined): string | undefined;
|
|
10
|
-
export declare function isBridgeTokenAuthorized(authorization: string | null | undefined, config: BridgeAuthConfig): boolean;
|
|
11
|
-
export declare function isLoopbackHost(hostname: string): boolean;
|
|
12
|
-
export declare function assertSafeBridgeBind(config: BridgeBindConfig): void;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ClientBridge, ClientBridgePermissionOption, ClientBridgePermissionOutcome, ClientBridgePermissionToolCall } from "../../session/client-bridge";
|
|
2
|
-
import type { UiRequestBroker } from "../shared/agent-wire/ui-request-broker";
|
|
3
|
-
export interface BridgePermissionRequestPayload {
|
|
4
|
-
kind: "permission";
|
|
5
|
-
toolCall: ClientBridgePermissionToolCall;
|
|
6
|
-
options: ClientBridgePermissionOption[];
|
|
7
|
-
}
|
|
8
|
-
export type BridgePermissionBroker = UiRequestBroker<BridgePermissionRequestPayload, ClientBridgePermissionOutcome>;
|
|
9
|
-
export declare function createBridgeClientBridge(broker: BridgePermissionBroker): ClientBridge;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { ExtensionUIContext } from "../../extensibility/extensions";
|
|
2
|
-
import type { AgentSession } from "../../session/agent-session";
|
|
3
|
-
import type { ClientBridgePermissionOutcome } from "../../session/client-bridge";
|
|
4
|
-
import type { RpcCommand, RpcResponse } from "../rpc/rpc-types";
|
|
5
|
-
import { RpcHostToolBridge } from "../shared/agent-wire/host-tool-bridge";
|
|
6
|
-
import { RpcHostUriBridge } from "../shared/agent-wire/host-uri-bridge";
|
|
7
|
-
import { type BridgeCommandScope } from "../shared/agent-wire/scopes";
|
|
8
|
-
import { UiRequestBroker } from "../shared/agent-wire/ui-request-broker";
|
|
9
|
-
import type { BridgeUiResult } from "../shared/agent-wire/ui-result";
|
|
10
|
-
import { UnattendedSessionControlPlane } from "../shared/agent-wire/unattended-session";
|
|
11
|
-
import { type BridgePermissionRequestPayload } from "./bridge-client-bridge";
|
|
12
|
-
import { type BridgeUiRequestPayload } from "./bridge-ui-context";
|
|
13
|
-
import { BridgeEventStream } from "./event-stream";
|
|
14
|
-
interface BridgeEndpointMatrix {
|
|
15
|
-
events: boolean;
|
|
16
|
-
commands: boolean;
|
|
17
|
-
control: boolean;
|
|
18
|
-
uiResponses: boolean;
|
|
19
|
-
hostToolResults: boolean;
|
|
20
|
-
hostUriResults: boolean;
|
|
21
|
-
}
|
|
22
|
-
interface BridgeFetchHandlerOptions {
|
|
23
|
-
sessionId: string;
|
|
24
|
-
token: string;
|
|
25
|
-
eventStream?: BridgeEventStream;
|
|
26
|
-
commandDispatcher?: (command: RpcCommand) => Promise<RpcResponse>;
|
|
27
|
-
commandScopes?: readonly BridgeCommandScope[];
|
|
28
|
-
idempotencyCache?: BridgeIdempotencyCache;
|
|
29
|
-
permissionBroker?: UiRequestBroker<BridgePermissionRequestPayload, ClientBridgePermissionOutcome>;
|
|
30
|
-
uiBroker?: UiRequestBroker<BridgeUiRequestPayload, BridgeUiResult<unknown>>;
|
|
31
|
-
hostToolBridge?: RpcHostToolBridge;
|
|
32
|
-
hostUriBridge?: RpcHostUriBridge;
|
|
33
|
-
endpointMatrix?: Partial<BridgeEndpointMatrix>;
|
|
34
|
-
unattendedControlPlane?: UnattendedSessionControlPlane;
|
|
35
|
-
}
|
|
36
|
-
interface BridgeIdempotencyRecord {
|
|
37
|
-
route: string;
|
|
38
|
-
ownerToken?: string;
|
|
39
|
-
body: string | Promise<string>;
|
|
40
|
-
response: unknown | Promise<unknown>;
|
|
41
|
-
pending?: boolean;
|
|
42
|
-
}
|
|
43
|
-
type BridgeIdempotencyCache = Map<string, BridgeIdempotencyRecord>;
|
|
44
|
-
export declare function parseBridgeEndpoints(value: string | undefined): Partial<BridgeEndpointMatrix> | undefined;
|
|
45
|
-
export declare function createBridgeFetchHandler(options: BridgeFetchHandlerOptions): (request: Request) => Promise<Response>;
|
|
46
|
-
export declare function runBridgeMode(session: AgentSession, setToolUIContext?: (uiContext: ExtensionUIContext, hasUI: boolean) => void): Promise<never>;
|
|
47
|
-
export {};
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type { ExtensionUIContext, ExtensionUIDialogOptions, ExtensionWidgetContent, ExtensionWidgetOptions, TerminalInputHandler } from "../../extensibility/extensions";
|
|
2
|
-
import type { UiRequestBroker } from "../shared/agent-wire/ui-request-broker";
|
|
3
|
-
import type { BridgeUiResult } from "../shared/agent-wire/ui-result";
|
|
4
|
-
import { type Theme } from "../theme/theme";
|
|
5
|
-
export type BridgeUiRequestPayload = {
|
|
6
|
-
kind: "select";
|
|
7
|
-
title: string;
|
|
8
|
-
options: string[];
|
|
9
|
-
timeout?: number;
|
|
10
|
-
} | {
|
|
11
|
-
kind: "confirm";
|
|
12
|
-
title: string;
|
|
13
|
-
message: string;
|
|
14
|
-
timeout?: number;
|
|
15
|
-
} | {
|
|
16
|
-
kind: "input";
|
|
17
|
-
title: string;
|
|
18
|
-
placeholder?: string;
|
|
19
|
-
timeout?: number;
|
|
20
|
-
} | {
|
|
21
|
-
kind: "editor";
|
|
22
|
-
title: string;
|
|
23
|
-
prefill?: string;
|
|
24
|
-
promptStyle?: boolean;
|
|
25
|
-
} | {
|
|
26
|
-
kind: "notify";
|
|
27
|
-
message: string;
|
|
28
|
-
type?: "info" | "warning" | "error";
|
|
29
|
-
} | {
|
|
30
|
-
kind: "status";
|
|
31
|
-
key: string;
|
|
32
|
-
text: string | undefined;
|
|
33
|
-
} | {
|
|
34
|
-
kind: "widget";
|
|
35
|
-
key: string;
|
|
36
|
-
lines: string[] | undefined;
|
|
37
|
-
placement?: "aboveEditor" | "belowEditor";
|
|
38
|
-
} | {
|
|
39
|
-
kind: "title";
|
|
40
|
-
title: string;
|
|
41
|
-
} | {
|
|
42
|
-
kind: "set_editor_text";
|
|
43
|
-
text: string;
|
|
44
|
-
} | {
|
|
45
|
-
kind: "unsupported";
|
|
46
|
-
capability: string;
|
|
47
|
-
reason: string;
|
|
48
|
-
};
|
|
49
|
-
export type BridgeUiBroker = UiRequestBroker<BridgeUiRequestPayload, BridgeUiResult<unknown>>;
|
|
50
|
-
export type BridgeUiEmitter = (payload: BridgeUiRequestPayload) => void;
|
|
51
|
-
export declare class BridgeExtensionUIContext implements ExtensionUIContext {
|
|
52
|
-
#private;
|
|
53
|
-
constructor(options: {
|
|
54
|
-
broker: BridgeUiBroker;
|
|
55
|
-
emit: BridgeUiEmitter;
|
|
56
|
-
});
|
|
57
|
-
select(title: string, options: string[], dialogOptions?: ExtensionUIDialogOptions): Promise<string | undefined>;
|
|
58
|
-
confirm(title: string, message: string, dialogOptions?: ExtensionUIDialogOptions): Promise<boolean>;
|
|
59
|
-
input(title: string, placeholder?: string, dialogOptions?: ExtensionUIDialogOptions): Promise<string | undefined>;
|
|
60
|
-
notify(message: string, type?: "info" | "warning" | "error"): void;
|
|
61
|
-
onTerminalInput(_handler: TerminalInputHandler): () => void;
|
|
62
|
-
setStatus(key: string, text: string | undefined): void;
|
|
63
|
-
setWorkingMessage(message?: string): void;
|
|
64
|
-
setWidget(key: string, content: ExtensionWidgetContent, options?: ExtensionWidgetOptions): void;
|
|
65
|
-
setFooter(_factory?: unknown): void;
|
|
66
|
-
setHeader(_factory?: unknown): void;
|
|
67
|
-
setTitle(title: string): void;
|
|
68
|
-
custom<T>(): Promise<T>;
|
|
69
|
-
setEditorText(text: string): void;
|
|
70
|
-
pasteToEditor(text: string): void;
|
|
71
|
-
getEditorText(): string;
|
|
72
|
-
editor(title: string, prefill?: string, dialogOptions?: ExtensionUIDialogOptions, editorOptions?: {
|
|
73
|
-
promptStyle?: boolean;
|
|
74
|
-
}): Promise<string | undefined>;
|
|
75
|
-
setEditorComponent(_factory?: unknown): void;
|
|
76
|
-
get theme(): Theme;
|
|
77
|
-
getAllThemes(): Promise<{
|
|
78
|
-
name: string;
|
|
79
|
-
path: string | undefined;
|
|
80
|
-
}[]>;
|
|
81
|
-
getTheme(_name: string): Promise<Theme | undefined>;
|
|
82
|
-
setTheme(_theme: string | Theme): Promise<{
|
|
83
|
-
success: boolean;
|
|
84
|
-
error?: string;
|
|
85
|
-
}>;
|
|
86
|
-
getToolsExpanded(): boolean;
|
|
87
|
-
setToolsExpanded(_expanded: boolean): void;
|
|
88
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { BridgeFrameEnvelope } from "../shared/agent-wire/protocol";
|
|
2
|
-
export declare class BridgeEventStream {
|
|
3
|
-
#private;
|
|
4
|
-
constructor(replayLimit?: number);
|
|
5
|
-
get frameCount(): number;
|
|
6
|
-
publish(frame: BridgeFrameEnvelope): void;
|
|
7
|
-
response(lastSeq?: number): Response;
|
|
8
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "../shared/agent-wire/host-tool-bridge";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "../shared/agent-wire/host-uri-bridge";
|