@gajae-code/coding-agent 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +70 -2
- package/dist/types/append-only-mode.d.ts +1 -1
- package/dist/types/cli/args.d.ts +4 -5
- package/dist/types/cli/daemon-cli.d.ts +12 -1
- package/dist/types/cli/notify-cli.d.ts +21 -1
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/commands/daemon.d.ts +39 -0
- package/dist/types/commands/launch.d.ts +3 -0
- package/dist/types/commands/notify.d.ts +28 -1
- package/dist/types/commands/sdk.d.ts +33 -0
- package/dist/types/config/atomic-yaml-patch.d.ts +85 -0
- package/dist/types/config/model-profile-activation.d.ts +35 -15
- package/dist/types/config/model-profiles.d.ts +11 -5
- package/dist/types/config/model-registry.d.ts +3 -3
- package/dist/types/config/model-resolver.d.ts +39 -6
- package/dist/types/config/model-selector-value.d.ts +17 -0
- package/dist/types/config/models-config-schema.d.ts +10 -6
- package/dist/types/config/settings-schema.d.ts +133 -6
- package/dist/types/config/settings.d.ts +63 -35
- package/dist/types/coordinator-mcp/model-preset.d.ts +7 -6
- package/dist/types/coordinator-mcp/server.d.ts +6 -49
- package/dist/types/daemon/builtin.d.ts +6 -5
- package/dist/types/daemon/control-types.d.ts +1 -1
- package/dist/types/discovery/mcp-json.d.ts +12 -1
- package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
- package/dist/types/extensibility/extensions/compact-handler.d.ts +4 -2
- package/dist/types/extensibility/extensions/get-commands-handler.d.ts +2 -2
- package/dist/types/extensibility/extensions/loader.d.ts +10 -1
- package/dist/types/extensibility/extensions/runner.d.ts +3 -3
- package/dist/types/extensibility/extensions/types.d.ts +141 -16
- package/dist/types/extensibility/hooks/types.d.ts +1 -1
- package/dist/types/gjc-runtime/launch-tmux.d.ts +3 -2
- package/dist/types/gjc-runtime/psmux-detect.d.ts +3 -0
- package/dist/types/gjc-runtime/session-state-sidecar.d.ts +3 -0
- package/dist/types/gjc-runtime/team-runtime.d.ts +3 -4
- package/dist/types/gjc-runtime/tmux-owner-isolation-cli.d.ts +13 -0
- package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -1
- package/dist/types/gjc-runtime/windows-powershell-command.d.ts +9 -0
- package/dist/types/harness-control-plane/operate.d.ts +5 -5
- package/dist/types/harness-control-plane/owner.d.ts +18 -4
- package/dist/types/harness-control-plane/receipts.d.ts +0 -1
- package/dist/types/harness-control-plane/sdk-transport.d.ts +43 -0
- package/dist/types/harness-control-plane/session-transport.d.ts +48 -0
- package/dist/types/harness-control-plane/types.d.ts +3 -4
- package/dist/types/lsp/index.d.ts +1 -1
- package/dist/types/main.d.ts +32 -38
- package/dist/types/modes/acp/acp-agent.d.ts +224 -53
- package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -0
- package/dist/types/modes/acp/acp-mode.d.ts +6 -15
- package/dist/types/modes/acp/permission-mode.d.ts +4 -0
- package/dist/types/modes/acp/startup-options.d.ts +6 -0
- package/dist/types/modes/components/agent-dashboard.d.ts +3 -0
- package/dist/types/modes/components/gajae-pet-widget.d.ts +1 -0
- package/dist/types/modes/components/model-selector.d.ts +1 -0
- package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
- package/dist/types/modes/components/pet-capability.d.ts +37 -0
- package/dist/types/modes/components/pet-selector.d.ts +1 -1
- package/dist/types/modes/components/settings-selector.d.ts +15 -4
- package/dist/types/modes/components/welcome.d.ts +1 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
- package/dist/types/modes/index.d.ts +0 -4
- package/dist/types/modes/interactive-mode.d.ts +5 -1
- package/dist/types/modes/runtime-init.d.ts +2 -2
- package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
- package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
- package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
- package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
- package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +169 -30
- package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
- package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
- package/dist/types/modes/types.d.ts +16 -1
- package/dist/types/runtime-mcp/client.d.ts +2 -0
- package/dist/types/runtime-mcp/config.d.ts +5 -1
- package/dist/types/runtime-mcp/manager.d.ts +8 -1
- package/dist/types/runtime-mcp/types.d.ts +4 -0
- package/dist/types/sdk/acp/adapter.d.ts +67 -0
- package/dist/types/sdk/acp/index.d.ts +2 -0
- package/dist/types/sdk/broker/broker.d.ts +53 -0
- package/dist/types/sdk/broker/discovery.d.ts +30 -0
- package/dist/types/sdk/broker/ensure.d.ts +33 -0
- package/dist/types/sdk/broker/identity.d.ts +3 -0
- package/dist/types/sdk/broker/index.d.ts +8 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
- package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
- package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
- package/dist/types/sdk/broker/runtime.d.ts +33 -0
- package/dist/types/sdk/broker/session-index.d.ts +57 -0
- package/dist/types/sdk/broker/state-version.d.ts +8 -0
- package/dist/types/sdk/broker/transport.d.ts +9 -0
- package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
- package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
- package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
- package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
- package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
- package/dist/types/sdk/bus/config.d.ts +274 -0
- package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
- package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +45 -0
- package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
- package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
- package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
- package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
- package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
- package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
- package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
- package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
- package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
- package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
- package/dist/types/sdk/bus/session-control.d.ts +83 -0
- package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
- package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
- package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
- package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
- package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
- package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
- package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
- package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +55 -17
- package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
- package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
- package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
- package/dist/types/sdk/cli/index.d.ts +1 -0
- package/dist/types/sdk/cli/session-cli.d.ts +19 -0
- package/dist/types/sdk/client/client.d.ts +1 -0
- package/dist/types/sdk/client/discovery.d.ts +27 -0
- package/dist/types/sdk/client/index.d.ts +2 -0
- package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
- package/dist/types/sdk/host/control/index.d.ts +2 -0
- package/dist/types/sdk/host/control/operations.d.ts +65 -0
- package/dist/types/sdk/host/events.d.ts +35 -0
- package/dist/types/sdk/host/host.d.ts +35 -0
- package/dist/types/sdk/host/index.d.ts +4 -0
- package/dist/types/sdk/host/query/cursor.d.ts +62 -0
- package/dist/types/sdk/host/query/handlers.d.ts +70 -0
- package/dist/types/sdk/host/query/index.d.ts +3 -0
- package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
- package/dist/types/sdk/host/types.d.ts +32 -0
- package/dist/types/sdk/index.d.ts +6 -0
- package/dist/types/sdk/lifecycle-session.d.ts +14 -0
- package/dist/types/sdk/mcp/index.d.ts +1 -0
- package/dist/types/sdk/mcp/server.d.ts +37 -0
- package/dist/types/sdk/models.d.ts +44 -0
- package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
- package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
- package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
- package/dist/types/sdk/startup-capability.d.ts +50 -0
- package/dist/types/session/agent-session.d.ts +114 -21
- package/dist/types/session/default-model-selection.d.ts +25 -0
- package/dist/types/session/fallback-chain-controller.d.ts +52 -0
- package/dist/types/session/session-manager.d.ts +58 -1
- package/dist/types/setup/credential-auto-import.d.ts +36 -6
- package/dist/types/tools/ask-answer-registry.d.ts +1 -1
- package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
- package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
- package/dist/types/tools/browser/launch.d.ts +22 -0
- package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
- package/dist/types/tools/browser/profile-posture.d.ts +37 -0
- package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
- package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
- package/dist/types/tools/browser/registry.d.ts +19 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
- package/dist/types/tools/index.d.ts +8 -8
- package/package.json +34 -13
- package/scripts/build-sdk-package-smoke.ts +94 -0
- package/scripts/capture-notifications-settings-showcase.ts +435 -0
- package/scripts/compile-args.ts +4 -2
- package/scripts/g005-daemon-smoke.ts +4 -5
- package/scripts/g011-daemon-path-smoke.ts +5 -5
- package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
- package/scripts/generate-sdk-operation-inventory.ts +867 -0
- package/scripts/generate-telegram-baseline-manifest.ts +128 -0
- package/scripts/manifest-schema.ts +124 -0
- package/scripts/run-test-manifest.ts +153 -0
- package/scripts/run-threat-model-check.ts +157 -0
- package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
- package/scripts/verify-gjc-sdk-rename.ts +90 -0
- package/src/append-only-mode.ts +1 -1
- package/src/cli/args.ts +43 -12
- package/src/cli/auth-gateway-cli.ts +2 -2
- package/src/cli/config-cli.ts +2 -1
- package/src/cli/daemon-cli.ts +63 -14
- package/src/cli/list-models.ts +1 -1
- package/src/cli/notify-cli.ts +288 -286
- package/src/cli.ts +21 -2
- package/src/commands/daemon.ts +50 -6
- package/src/commands/harness.ts +93 -36
- package/src/commands/launch.ts +5 -2
- package/src/commands/mcp-serve.ts +19 -12
- package/src/commands/notify.ts +36 -3
- package/src/commands/sdk.ts +426 -0
- package/src/commit/agentic/agent.ts +1 -0
- package/src/config/atomic-yaml-patch.ts +423 -0
- package/src/config/model-profile-activation.ts +240 -89
- package/src/config/model-profiles.ts +37 -34
- package/src/config/model-registry.ts +51 -26
- package/src/config/model-resolver.ts +138 -51
- package/src/config/model-selector-value.ts +50 -0
- package/src/config/models-config-schema.ts +14 -21
- package/src/config/settings-schema.ts +128 -10
- package/src/config/settings.ts +1120 -158
- package/src/coordinator-mcp/model-preset.ts +74 -20
- package/src/coordinator-mcp/server.ts +1597 -3052
- package/src/daemon/builtin.ts +8 -5
- package/src/daemon/control-types.ts +1 -1
- package/src/defaults/gjc/skills/team/SKILL.md +4 -4
- package/src/discovery/mcp-json.ts +327 -20
- package/src/extensibility/custom-tools/types.ts +1 -1
- package/src/extensibility/extensions/compact-handler.ts +3 -3
- package/src/extensibility/extensions/get-commands-handler.ts +2 -2
- package/src/extensibility/extensions/loader.ts +69 -5
- package/src/extensibility/extensions/runner.ts +112 -4
- package/src/extensibility/extensions/types.ts +176 -17
- package/src/extensibility/hooks/types.ts +1 -1
- package/src/extensibility/slash-commands.ts +3 -3
- package/src/gjc-runtime/launch-tmux.ts +170 -86
- package/src/gjc-runtime/psmux-detect.ts +82 -4
- package/src/gjc-runtime/session-state-sidecar.ts +41 -31
- package/src/gjc-runtime/team-runtime.ts +54 -35
- package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
- package/src/gjc-runtime/tmux-owner-isolation.ts +5 -2
- package/src/gjc-runtime/tmux-sessions.ts +19 -13
- package/src/gjc-runtime/ultragoal-guard.ts +53 -6
- package/src/gjc-runtime/ultragoal-runtime.ts +155 -3
- package/src/gjc-runtime/windows-powershell-command.ts +58 -0
- package/src/harness-control-plane/operate.ts +9 -9
- package/src/harness-control-plane/owner.ts +283 -39
- package/src/harness-control-plane/receipts.ts +0 -1
- package/src/harness-control-plane/sdk-transport.ts +395 -0
- package/src/harness-control-plane/session-transport.ts +94 -0
- package/src/harness-control-plane/types.ts +1 -1
- package/src/internal-urls/docs-index.generated.ts +36 -37
- package/src/lsp/client.ts +42 -6
- package/src/lsp/index.ts +2 -2
- package/src/main.ts +299 -204
- package/src/modes/DESIGN.md +258 -0
- package/src/modes/acp/acp-agent.ts +1228 -2612
- package/src/modes/acp/acp-client-bridge.ts +2 -20
- package/src/modes/acp/acp-event-mapper.ts +18 -2
- package/src/modes/acp/acp-mode.ts +8 -36
- package/src/modes/acp/permission-mode.ts +25 -0
- package/src/modes/acp/startup-options.ts +6 -0
- package/src/modes/components/agent-dashboard.ts +37 -17
- package/src/modes/components/custom-editor.ts +1 -0
- package/src/modes/components/gajae-pet-widget.ts +169 -20
- package/src/modes/components/model-selector.ts +93 -35
- package/src/modes/components/notifications-settings-editor.ts +1379 -0
- package/src/modes/components/pet-capability.ts +115 -0
- package/src/modes/components/pet-selector.ts +4 -6
- package/src/modes/components/settings-selector.ts +86 -11
- package/src/modes/components/welcome.ts +4 -4
- package/src/modes/controllers/command-controller.ts +1 -2
- package/src/modes/controllers/event-controller.ts +11 -16
- package/src/modes/controllers/extension-ui-controller.ts +357 -12
- package/src/modes/controllers/input-controller.ts +43 -13
- package/src/modes/controllers/selector-controller.ts +671 -44
- package/src/modes/index.ts +0 -22
- package/src/modes/interactive-mode.ts +108 -24
- package/src/modes/runtime-init.ts +298 -6
- package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
- package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
- package/src/modes/shared/agent-wire/event-contract.ts +7 -8
- package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
- package/src/modes/shared/agent-wire/event-observation.ts +16 -7
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1254 -87
- package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
- package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
- package/src/modes/types.ts +16 -1
- package/src/runtime-mcp/client.ts +94 -19
- package/src/runtime-mcp/config.ts +27 -15
- package/src/runtime-mcp/manager.ts +343 -105
- package/src/runtime-mcp/oauth-flow.ts +42 -12
- package/src/runtime-mcp/transports/http.ts +49 -19
- package/src/runtime-mcp/transports/stdio.ts +47 -28
- package/src/runtime-mcp/types.ts +10 -0
- package/src/sdk/acp/adapter.ts +418 -0
- package/src/sdk/acp/index.ts +2 -0
- package/src/sdk/broker/broker.ts +642 -0
- package/src/sdk/broker/discovery.ts +94 -0
- package/src/sdk/broker/ensure.ts +249 -0
- package/src/sdk/broker/identity.ts +42 -0
- package/src/sdk/broker/index.ts +8 -0
- package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
- package/src/sdk/broker/internal-source.bunfig.toml +1 -0
- package/src/sdk/broker/lifecycle-ledger.ts +286 -0
- package/src/sdk/broker/lifecycle.ts +2157 -0
- package/src/sdk/broker/process-incarnation.ts +159 -0
- package/src/sdk/broker/runtime.ts +164 -0
- package/src/sdk/broker/session-index.ts +318 -0
- package/src/sdk/broker/state-version.ts +23 -0
- package/src/sdk/broker/transport.ts +125 -0
- package/src/sdk/bus/chat-command-policy.ts +107 -0
- package/src/sdk/bus/chat-daemon-cli.ts +214 -0
- package/src/sdk/bus/chat-daemon-control.ts +713 -0
- package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
- package/src/sdk/bus/chat-effect-journal.ts +353 -0
- package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
- package/src/sdk/bus/config.ts +433 -0
- package/src/sdk/bus/conversation-store.ts +391 -0
- package/src/sdk/bus/discord-conversation.ts +85 -0
- package/src/sdk/bus/discord-daemon.ts +2275 -0
- package/src/sdk/bus/discord-live-provider.ts +521 -0
- package/src/sdk/bus/discord-provider.ts +56 -0
- package/src/{notifications → sdk/bus}/html-format.ts +2 -2
- package/src/sdk/bus/index.ts +3943 -0
- package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
- package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
- package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
- package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
- package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
- package/src/sdk/bus/natives-augment.d.ts +38 -0
- package/src/sdk/bus/notification-orchestration.ts +535 -0
- package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
- package/src/sdk/bus/session-control.ts +333 -0
- package/src/sdk/bus/slack-conversation.ts +74 -0
- package/src/sdk/bus/slack-daemon.ts +2144 -0
- package/src/sdk/bus/slack-live-provider.ts +380 -0
- package/src/sdk/bus/slack-provider.ts +76 -0
- package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
- package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
- package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
- package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
- package/src/{notifications → sdk/bus}/telegram-daemon.ts +502 -54
- package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
- package/src/sdk/bus/telegram-setup.ts +663 -0
- package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
- package/src/sdk/cli/index.ts +1 -0
- package/src/sdk/cli/session-cli.ts +275 -0
- package/src/sdk/client/client.ts +1 -0
- package/src/sdk/client/discovery.ts +108 -0
- package/src/sdk/client/index.ts +2 -0
- package/src/sdk/host/control/dispatch.ts +367 -0
- package/src/sdk/host/control/index.ts +10 -0
- package/src/sdk/host/control/operations.ts +63 -0
- package/src/sdk/host/events.ts +91 -0
- package/src/sdk/host/host.ts +296 -0
- package/src/sdk/host/index.ts +4 -0
- package/src/sdk/host/query/cursor.ts +189 -0
- package/src/sdk/host/query/handlers.ts +533 -0
- package/src/sdk/host/query/index.ts +3 -0
- package/src/sdk/host/query/revision-store.ts +1126 -0
- package/src/sdk/host/reverse-leases.ts +325 -0
- package/src/sdk/host/types.ts +29 -0
- package/src/sdk/index.ts +13 -0
- package/src/sdk/lifecycle-session.ts +39 -0
- package/src/sdk/mcp/index.ts +1 -0
- package/src/sdk/mcp/server.ts +332 -0
- package/src/sdk/models.ts +168 -0
- package/src/sdk/protocol/adapter-validation.ts +48 -0
- package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
- package/src/sdk/protocol/operation-registry.ts +312 -0
- package/src/{sdk.ts → sdk/session.ts} +339 -212
- package/src/sdk/startup-capability.ts +189 -0
- package/src/session/agent-session.ts +2470 -866
- package/src/session/default-model-selection.ts +93 -0
- package/src/session/fallback-chain-controller.ts +136 -0
- package/src/session/session-manager.ts +447 -13
- package/src/session/session-storage.ts +8 -1
- package/src/setup/credential-auto-import.ts +290 -35
- package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
- package/src/slash-commands/builtin-registry.ts +33 -30
- package/src/task/executor.ts +62 -13
- package/src/tools/ask-answer-registry.ts +1 -1
- package/src/tools/ask.ts +13 -8
- package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
- package/src/tools/browser/benchmark/detector-report.ts +157 -0
- package/src/tools/browser/benchmark/run-suite.ts +39 -0
- package/src/tools/browser/launch.ts +124 -19
- package/src/tools/browser/profile-discovery.ts +63 -0
- package/src/tools/browser/profile-posture.ts +59 -0
- package/src/tools/browser/profile-reuse.ts +102 -0
- package/src/tools/browser/profile-warmup.ts +109 -0
- package/src/tools/browser/registry.ts +87 -11
- package/src/tools/browser/tab-protocol.ts +1 -0
- package/src/tools/browser/tab-supervisor.ts +1 -0
- package/src/tools/browser/tab-worker.ts +1 -1
- package/src/tools/browser.ts +6 -0
- package/src/tools/index.ts +8 -8
- package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
- package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
- package/src/tools/telegram-send.ts +2 -2
- package/vendor/insane-search/MANIFEST.json +2 -1
- package/vendor/insane-search/engine/bias_check.py +4 -1
- package/vendor/insane-search/engine/phase0.py +26 -1
- package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
- package/dist/types/modes/bridge/auth.d.ts +0 -12
- package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
- package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
- package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
- package/dist/types/modes/bridge/event-stream.d.ts +0 -8
- package/dist/types/modes/rpc/host-tools.d.ts +0 -1
- package/dist/types/modes/rpc/host-uris.d.ts +0 -1
- package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
- package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
- package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
- package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
- package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
- package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
- package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
- package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
- package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
- package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
- package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
- package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
- package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
- package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
- package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
- package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
- package/dist/types/notifications/config.d.ts +0 -132
- package/src/harness-control-plane/rpc-adapter.ts +0 -290
- package/src/modes/bridge/auth.ts +0 -41
- package/src/modes/bridge/bridge-client-bridge.ts +0 -47
- package/src/modes/bridge/bridge-mode.ts +0 -675
- package/src/modes/bridge/bridge-ui-context.ts +0 -200
- package/src/modes/bridge/event-stream.ts +0 -70
- package/src/modes/rpc/host-tools.ts +0 -1
- package/src/modes/rpc/host-uris.ts +0 -1
- package/src/modes/rpc/rpc-client.ts +0 -1166
- package/src/modes/rpc/rpc-mode.ts +0 -1029
- package/src/modes/rpc/rpc-socket-security.ts +0 -115
- package/src/modes/rpc/rpc-types.ts +0 -637
- package/src/modes/shared/agent-wire/command-contract.ts +0 -18
- package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
- package/src/modes/shared/agent-wire/command-validation.ts +0 -181
- package/src/modes/shared/agent-wire/handshake.ts +0 -157
- package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
- package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
- package/src/modes/shared/agent-wire/protocol.ts +0 -46
- package/src/modes/shared/agent-wire/responses.ts +0 -17
- package/src/modes/shared/agent-wire/scopes.ts +0 -94
- package/src/modes/shared/agent-wire/session-registry.ts +0 -109
- package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
- package/src/modes/shared/agent-wire/ui-result.ts +0 -48
- package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
- package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
- package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
- package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
- package/src/notifications/config.ts +0 -219
- package/src/notifications/index.ts +0 -1835
- package/src/notifications/telegram-daemon-cli.ts +0 -243
- package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
- /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
- /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
- /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
- /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
- /package/src/{notifications → sdk/bus}/engine.ts +0 -0
- /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
- /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
- /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
- /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
- /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
- /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
- /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
- /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
- /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
|
|
5
|
+
const repoRoot = process.env.GJC_SDK_RENAME_SCAN_ROOT
|
|
6
|
+
? path.resolve(process.env.GJC_SDK_RENAME_SCAN_ROOT)
|
|
7
|
+
: path.resolve(import.meta.dir, "..", "..", "..");
|
|
8
|
+
const scannerPath = "packages/coding-agent/scripts/verify-gjc-sdk-rename.ts";
|
|
9
|
+
const pinnedRollbackFixturePaths = new Set([
|
|
10
|
+
"packages/coding-agent/test/manifests/sdk-pretrain-binary.json",
|
|
11
|
+
"packages/coding-agent/test/sdk-downgrade-rollback.test.ts",
|
|
12
|
+
"scripts/transform-sdk-state-for-rollback.ts",
|
|
13
|
+
]);
|
|
14
|
+
const forbidden = [
|
|
15
|
+
{ label: "gjc-notifications", pattern: /\bgjc-notifications\b/i },
|
|
16
|
+
{ label: "gjc_notifications", pattern: /\bgjc_notifications\b/ },
|
|
17
|
+
{ label: "@gajae-code/notifications", pattern: /@gajae-code[/_-]notifications\b/i },
|
|
18
|
+
{ label: "notifications SDK", pattern: /\bnotifications[\s_-]+sdk\b/i },
|
|
19
|
+
{ label: "src/notifications/", pattern: /\bsrc[/\\]notifications(?:[/\\]|\b)/i },
|
|
20
|
+
{ label: "state/notifications", pattern: /\bstate[/\\]notifications(?:[/\\]|\b)/i },
|
|
21
|
+
{ label: "src/sdk.ts", pattern: /\bsrc[/\\]sdk\.ts\b/i },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
function isAllowed(file: string): boolean {
|
|
25
|
+
return (
|
|
26
|
+
file.startsWith("artifacts/") ||
|
|
27
|
+
file === "REPORT.md" ||
|
|
28
|
+
path.basename(file).toLowerCase() === "changelog.md" ||
|
|
29
|
+
pinnedRollbackFixturePaths.has(file)
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const filesResult = Bun.spawnSync(["git", "ls-files", "-z", "--cached", "--others", "--exclude-standard"], {
|
|
34
|
+
cwd: repoRoot,
|
|
35
|
+
stdout: "pipe",
|
|
36
|
+
stderr: "pipe",
|
|
37
|
+
});
|
|
38
|
+
if (filesResult.exitCode !== 0) {
|
|
39
|
+
process.stderr.write(`Unable to list repository files: ${new TextDecoder().decode(filesResult.stderr)}\n`);
|
|
40
|
+
process.exit(2);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Files deleted in the working tree (e.g. staged/unstaged deletions mid-rename)
|
|
44
|
+
// are excluded explicitly: they have no content to scan and must not abort the gate.
|
|
45
|
+
const deletedResult = Bun.spawnSync(["git", "ls-files", "-z", "--deleted"], {
|
|
46
|
+
cwd: repoRoot,
|
|
47
|
+
stdout: "pipe",
|
|
48
|
+
stderr: "pipe",
|
|
49
|
+
});
|
|
50
|
+
if (deletedResult.exitCode !== 0) {
|
|
51
|
+
process.stderr.write(`Unable to list deleted files: ${new TextDecoder().decode(deletedResult.stderr)}\n`);
|
|
52
|
+
process.exit(2);
|
|
53
|
+
}
|
|
54
|
+
const deleted = new Set(new TextDecoder().decode(deletedResult.stdout).split("\0").filter(Boolean));
|
|
55
|
+
|
|
56
|
+
const files = new TextDecoder()
|
|
57
|
+
.decode(filesResult.stdout)
|
|
58
|
+
.split("\0")
|
|
59
|
+
.filter(file => file.length > 0 && !deleted.has(file));
|
|
60
|
+
const violations: string[] = [];
|
|
61
|
+
for (const file of files) {
|
|
62
|
+
if (file === scannerPath || isAllowed(file)) continue;
|
|
63
|
+
for (const { label, pattern } of forbidden) {
|
|
64
|
+
if (pattern.test(file)) violations.push(`${file}: forbidden filename ${JSON.stringify(label)}`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const filePath = path.join(repoRoot, file);
|
|
68
|
+
let contents: string;
|
|
69
|
+
try {
|
|
70
|
+
contents = await Bun.file(filePath).text();
|
|
71
|
+
} catch (error) {
|
|
72
|
+
process.stderr.write(
|
|
73
|
+
`Unable to scan tracked file ${file}: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
74
|
+
);
|
|
75
|
+
process.exit(2);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
for (const [index, line] of contents.split(/\r?\n/).entries()) {
|
|
79
|
+
for (const { label, pattern } of forbidden) {
|
|
80
|
+
if (pattern.test(line)) violations.push(`${file}:${index + 1}: forbidden ${JSON.stringify(label)}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (violations.length > 0) {
|
|
86
|
+
process.stderr.write(`Forbidden pre-rename SDK references found:\n${violations.join("\n")}\n`);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
process.stdout.write("GJC SDK rename verification passed.\n");
|
package/src/append-only-mode.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Single source of truth for append-only context-mode resolution and manager
|
|
3
|
-
* construction. Both the initial session build (`sdk.ts`) and the runtime
|
|
3
|
+
* construction. Both the initial session build (`sdk/session.ts`) and the runtime
|
|
4
4
|
* model/setting-change path (`agent-session.ts`), plus the status UI, resolve
|
|
5
5
|
* through here so the auto allowlist and prefix-reset diagnostics never drift.
|
|
6
6
|
*/
|
package/src/cli/args.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI argument parsing and help display
|
|
3
3
|
*/
|
|
4
|
+
import * as path from "node:path";
|
|
4
5
|
import { type Effort, THINKING_EFFORTS } from "@gajae-code/ai";
|
|
5
6
|
import { APP_NAME, CONFIG_DIR_NAME, logger } from "@gajae-code/utils";
|
|
6
7
|
import { CliParseError } from "@gajae-code/utils/cli";
|
|
@@ -8,7 +9,7 @@ import chalk from "chalk";
|
|
|
8
9
|
import { parseEffort } from "../thinking";
|
|
9
10
|
import { BUILTIN_TOOLS } from "../tools";
|
|
10
11
|
|
|
11
|
-
export type Mode = "text" | "json" | "
|
|
12
|
+
export type Mode = "text" | "json" | "acp";
|
|
12
13
|
|
|
13
14
|
export interface Args {
|
|
14
15
|
cwd?: string;
|
|
@@ -24,6 +25,7 @@ export interface Args {
|
|
|
24
25
|
credential?: string;
|
|
25
26
|
systemPrompt?: string;
|
|
26
27
|
appendSystemPrompt?: string;
|
|
28
|
+
mcpConfig?: string;
|
|
27
29
|
thinking?: Effort;
|
|
28
30
|
continue?: boolean;
|
|
29
31
|
resume?: string | true;
|
|
@@ -32,7 +34,6 @@ export interface Args {
|
|
|
32
34
|
mode?: Mode;
|
|
33
35
|
noSession?: boolean;
|
|
34
36
|
sessionDir?: string;
|
|
35
|
-
rpcListen?: string;
|
|
36
37
|
providerSessionId?: string;
|
|
37
38
|
fork?: string;
|
|
38
39
|
models?: string[];
|
|
@@ -58,6 +59,8 @@ export interface Args {
|
|
|
58
59
|
fileArgs: string[];
|
|
59
60
|
/** Retained for test/runtime compatibility; extension-defined flags are no longer parsed. */
|
|
60
61
|
unknownFlags: Map<string, boolean | string>;
|
|
62
|
+
/** Exact interactive startup login intent, recognized before model-profile activation. */
|
|
63
|
+
authBootstrap?: true;
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
function isStartupSlashCommandArg(arg: string | undefined): boolean {
|
|
@@ -69,6 +72,13 @@ function isStartupSlashCommandArg(arg: string | undefined): boolean {
|
|
|
69
72
|
);
|
|
70
73
|
}
|
|
71
74
|
|
|
75
|
+
function isStartupLoginCommandArg(args: readonly string[], index: number): boolean {
|
|
76
|
+
const command = args[index];
|
|
77
|
+
if (command !== "/login" && command !== "login") return false;
|
|
78
|
+
const argumentCount = args.length - index - 1;
|
|
79
|
+
return argumentCount === 0 || (argumentCount === 1 && !args[index + 1].startsWith("-"));
|
|
80
|
+
}
|
|
81
|
+
|
|
72
82
|
export function parseArgs(args: string[]): Args {
|
|
73
83
|
const result: Args = {
|
|
74
84
|
messages: [],
|
|
@@ -79,6 +89,12 @@ export function parseArgs(args: string[]): Args {
|
|
|
79
89
|
for (let i = 0; i < args.length; i++) {
|
|
80
90
|
let arg = args[i];
|
|
81
91
|
|
|
92
|
+
if (isStartupLoginCommandArg(args, i)) {
|
|
93
|
+
result.authBootstrap = true;
|
|
94
|
+
const loginCommand = arg === "login" ? "/login" : arg;
|
|
95
|
+
result.messages.push([loginCommand, ...args.slice(i + 1)].join(" "));
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
82
98
|
if (isStartupSlashCommandArg(arg)) {
|
|
83
99
|
result.messages.push(args.slice(i).join(" "));
|
|
84
100
|
break;
|
|
@@ -101,15 +117,15 @@ export function parseArgs(args: string[]): Args {
|
|
|
101
117
|
result.allowHome = true;
|
|
102
118
|
} else if (arg === "--mode" && i + 1 < args.length) {
|
|
103
119
|
const mode = args[++i];
|
|
104
|
-
if (
|
|
105
|
-
mode === "text" ||
|
|
106
|
-
mode === "json" ||
|
|
107
|
-
mode === "rpc" ||
|
|
108
|
-
mode === "acp" ||
|
|
109
|
-
mode === "rpc-ui" ||
|
|
110
|
-
mode === "bridge"
|
|
111
|
-
) {
|
|
120
|
+
if (mode === "text" || mode === "json" || mode === "acp") {
|
|
112
121
|
result.mode = mode;
|
|
122
|
+
} else {
|
|
123
|
+
const removed = mode === "rpc" || mode === "rpc-ui" || mode === "bridge";
|
|
124
|
+
throw new CliParseError(
|
|
125
|
+
removed
|
|
126
|
+
? `--mode ${mode} was removed; external control now uses the Gajae-Code SDK (docs/sdk.md)`
|
|
127
|
+
: `invalid --mode value: ${mode} (expected text, json, or acp)`,
|
|
128
|
+
);
|
|
113
129
|
}
|
|
114
130
|
} else if (arg === "--continue" || arg === "-c") {
|
|
115
131
|
result.continue = true;
|
|
@@ -148,14 +164,21 @@ export function parseArgs(args: string[]): Args {
|
|
|
148
164
|
result.systemPrompt = args[++i];
|
|
149
165
|
} else if (arg === "--append-system-prompt" && i + 1 < args.length) {
|
|
150
166
|
result.appendSystemPrompt = args[++i];
|
|
167
|
+
} else if (arg === "--mcp-config") {
|
|
168
|
+
if (result.mcpConfig !== undefined) {
|
|
169
|
+
throw new CliParseError("--mcp-config can only be specified once");
|
|
170
|
+
}
|
|
171
|
+
const next = args[i + 1];
|
|
172
|
+
if (!next || next.startsWith("-") || !path.isAbsolute(next)) {
|
|
173
|
+
throw new CliParseError("--mcp-config requires <absolute-path>");
|
|
174
|
+
}
|
|
175
|
+
result.mcpConfig = args[++i];
|
|
151
176
|
} else if (arg === "--provider-session-id" && i + 1 < args.length) {
|
|
152
177
|
result.providerSessionId = args[++i];
|
|
153
178
|
} else if (arg === "--no-session") {
|
|
154
179
|
result.noSession = true;
|
|
155
180
|
} else if (arg === "--session-dir" && i + 1 < args.length) {
|
|
156
181
|
result.sessionDir = args[++i];
|
|
157
|
-
} else if (arg === "--listen" && i + 1 < args.length) {
|
|
158
|
-
result.rpcListen = args[++i];
|
|
159
182
|
} else if (arg === "--models" && i + 1 < args.length) {
|
|
160
183
|
result.models = args[++i].split(",").map(s => s.trim());
|
|
161
184
|
} else if (arg === "--no-tools") {
|
|
@@ -219,6 +242,14 @@ export function parseArgs(args: string[]): Args {
|
|
|
219
242
|
if (result.default && !result.mpreset) {
|
|
220
243
|
throw new Error("--default requires --mpreset <name>");
|
|
221
244
|
}
|
|
245
|
+
if (
|
|
246
|
+
result.mcpConfig !== undefined &&
|
|
247
|
+
(result.mode === "acp" || result.listModels !== undefined || result.export !== undefined)
|
|
248
|
+
) {
|
|
249
|
+
throw new CliParseError(
|
|
250
|
+
"--mcp-config is only supported in standalone interactive, tmux, print, text, or json modes.",
|
|
251
|
+
);
|
|
252
|
+
}
|
|
222
253
|
|
|
223
254
|
return result;
|
|
224
255
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* `gjc auth-gateway` command handlers.
|
|
3
3
|
*
|
|
4
4
|
* Boots a forward-proxy server that lets less-trusted clients (the macOS
|
|
5
|
-
* usage widget
|
|
5
|
+
* usage widget and containerized deployments) make provider API calls without ever
|
|
6
6
|
* seeing the access token. The gateway is itself a broker client and
|
|
7
7
|
* resolves credentials through the configured broker (via the same
|
|
8
8
|
* `GJC_AUTH_BROKER_URL` / `auth.broker.url` precedence used elsewhere).
|
|
@@ -139,7 +139,7 @@ async function runServe(flags: AuthGatewayCommandArgs["flags"]): Promise<void> {
|
|
|
139
139
|
const gatewayToken = flags.noAuth ? null : await ensureToken();
|
|
140
140
|
|
|
141
141
|
// Build a broker-backed AuthStorage — same pattern as discoverAuthStorage()
|
|
142
|
-
// in sdk.ts. The gateway never touches local SQLite.
|
|
142
|
+
// in sdk/session.ts. The gateway never touches local SQLite.
|
|
143
143
|
const client = createBrokerClient(brokerConfig);
|
|
144
144
|
const initialSnapshot = await fetchBrokerSnapshot(client);
|
|
145
145
|
const store = new RemoteAuthCredentialStore({ client, initialSnapshot });
|
package/src/cli/config-cli.ts
CHANGED
|
@@ -429,7 +429,8 @@ async function handleReset(key: string | undefined, flags: { json?: boolean }):
|
|
|
429
429
|
|
|
430
430
|
const path = def.path as SettingPath;
|
|
431
431
|
const defaultValue = getDefault(path);
|
|
432
|
-
|
|
432
|
+
if (defaultValue === undefined) settings.unset(path);
|
|
433
|
+
else settings.set(path, defaultValue as SettingValue<typeof path>);
|
|
433
434
|
|
|
434
435
|
if (flags.json) {
|
|
435
436
|
console.log(JSON.stringify({ key: def.path, value: defaultValue }));
|
package/src/cli/daemon-cli.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { Settings } from "../config/settings";
|
|
9
|
-
import { selectDaemonControllers } from "../daemon/builtin";
|
|
9
|
+
import { BUILT_IN_DAEMON_KINDS, selectDaemonControllers } from "../daemon/builtin";
|
|
10
10
|
import type {
|
|
11
11
|
BuiltInDaemonController,
|
|
12
12
|
DaemonKind,
|
|
@@ -20,11 +20,28 @@ import {
|
|
|
20
20
|
formatDaemonStatus,
|
|
21
21
|
resolveDaemonAction,
|
|
22
22
|
} from "../daemon/operator-contract";
|
|
23
|
+
import { runChatDaemonInternal } from "../sdk/bus/chat-daemon-cli";
|
|
23
24
|
|
|
24
25
|
export type DaemonCliAction = "list" | "status" | "stop" | "reload";
|
|
26
|
+
export type DaemonInternalCliAction = "discord-internal" | "slack-internal";
|
|
27
|
+
export type DaemonCommandAction = DaemonCliAction | DaemonInternalCliAction;
|
|
28
|
+
|
|
29
|
+
export class UnknownDaemonKindError extends Error {
|
|
30
|
+
constructor(
|
|
31
|
+
readonly kinds: readonly string[],
|
|
32
|
+
readonly knownKinds: readonly DaemonKind[],
|
|
33
|
+
) {
|
|
34
|
+
super(`Unknown daemon kind(s): ${kinds.join(", ")}. Known kinds: ${knownKinds.join(", ")}.`);
|
|
35
|
+
this.name = "UnknownDaemonKindError";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function isDaemonInternalAction(action: DaemonCommandAction): action is DaemonInternalCliAction {
|
|
40
|
+
return action === "discord-internal" || action === "slack-internal";
|
|
41
|
+
}
|
|
25
42
|
|
|
26
43
|
export interface DaemonCommandArgs {
|
|
27
|
-
action:
|
|
44
|
+
action: DaemonCommandAction;
|
|
28
45
|
kinds: DaemonKind[];
|
|
29
46
|
all: boolean;
|
|
30
47
|
json: boolean;
|
|
@@ -32,6 +49,9 @@ export interface DaemonCommandArgs {
|
|
|
32
49
|
gracefulTimeoutMs?: number;
|
|
33
50
|
killTimeoutMs?: number;
|
|
34
51
|
spawnIfStopped?: boolean;
|
|
52
|
+
smoke?: boolean;
|
|
53
|
+
ownerId?: string;
|
|
54
|
+
agentDir?: string;
|
|
35
55
|
/** Show runtime detail and the full roots list in human output. */
|
|
36
56
|
verbose?: boolean;
|
|
37
57
|
}
|
|
@@ -41,14 +61,21 @@ export interface DaemonCommandDeps {
|
|
|
41
61
|
controllers?: BuiltInDaemonController[];
|
|
42
62
|
}
|
|
43
63
|
|
|
44
|
-
const
|
|
64
|
+
const INTERNAL_ACTIONS: DaemonInternalCliAction[] = ["discord-internal", "slack-internal"];
|
|
65
|
+
const KNOWN_KINDS = BUILT_IN_DAEMON_KINDS;
|
|
45
66
|
|
|
46
67
|
export function parseDaemonArgs(argv: string[]): DaemonCommandArgs | undefined {
|
|
47
68
|
if (argv.length === 0 || argv[0] !== "daemon") return undefined;
|
|
48
69
|
const rest = argv.slice(1);
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
const action = (resolved ??
|
|
70
|
+
const actionToken = rest[0];
|
|
71
|
+
const resolved = resolveDaemonAction(actionToken);
|
|
72
|
+
const action = (resolved ??
|
|
73
|
+
((INTERNAL_ACTIONS as readonly string[]).includes(actionToken ?? "")
|
|
74
|
+
? actionToken
|
|
75
|
+
: "status")) as DaemonCommandAction;
|
|
76
|
+
const isActionToken =
|
|
77
|
+
(DAEMON_ACTION_TOKENS as readonly string[]).includes(actionToken ?? "") ||
|
|
78
|
+
(INTERNAL_ACTIONS as readonly string[]).includes(actionToken ?? "");
|
|
52
79
|
const positional = isActionToken ? rest.slice(1) : rest;
|
|
53
80
|
const kinds: DaemonKind[] = [];
|
|
54
81
|
let all = false;
|
|
@@ -58,6 +85,9 @@ export function parseDaemonArgs(argv: string[]): DaemonCommandArgs | undefined {
|
|
|
58
85
|
let gracefulTimeoutMs: number | undefined;
|
|
59
86
|
let killTimeoutMs: number | undefined;
|
|
60
87
|
let spawnIfStopped: boolean | undefined;
|
|
88
|
+
let smoke = false;
|
|
89
|
+
let ownerId: string | undefined;
|
|
90
|
+
let agentDir: string | undefined;
|
|
61
91
|
for (let i = 0; i < positional.length; i++) {
|
|
62
92
|
const arg = positional[i];
|
|
63
93
|
if (arg === "--all") all = true;
|
|
@@ -65,21 +95,40 @@ export function parseDaemonArgs(argv: string[]): DaemonCommandArgs | undefined {
|
|
|
65
95
|
else if (arg === "--force") force = true;
|
|
66
96
|
else if (arg === "--verbose" || arg === "-v") verbose = true;
|
|
67
97
|
else if (arg === "--spawn-if-stopped") spawnIfStopped = true;
|
|
98
|
+
else if (arg === "--smoke") smoke = true;
|
|
99
|
+
else if (arg === "--owner-id") ownerId = positional[++i];
|
|
100
|
+
else if (arg === "--agent-dir") agentDir = positional[++i];
|
|
68
101
|
else if (arg === "--graceful-timeout-ms") gracefulTimeoutMs = Number.parseInt(positional[++i], 10);
|
|
69
102
|
else if (arg === "--kill-timeout-ms") killTimeoutMs = Number.parseInt(positional[++i], 10);
|
|
70
|
-
else if (!arg.startsWith("--")
|
|
103
|
+
else if (!arg.startsWith("--")) kinds.push(arg as DaemonKind);
|
|
71
104
|
}
|
|
72
|
-
return {
|
|
105
|
+
return {
|
|
106
|
+
action,
|
|
107
|
+
kinds,
|
|
108
|
+
all,
|
|
109
|
+
json,
|
|
110
|
+
force,
|
|
111
|
+
verbose,
|
|
112
|
+
gracefulTimeoutMs,
|
|
113
|
+
killTimeoutMs,
|
|
114
|
+
spawnIfStopped,
|
|
115
|
+
smoke,
|
|
116
|
+
ownerId,
|
|
117
|
+
agentDir,
|
|
118
|
+
};
|
|
73
119
|
}
|
|
74
120
|
export async function runDaemonCommand(cmd: DaemonCommandArgs, deps: DaemonCommandDeps = {}): Promise<void> {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
121
|
+
if (isDaemonInternalAction(cmd.action)) {
|
|
122
|
+
const args = [
|
|
123
|
+
...(cmd.smoke ? ["--smoke"] : []),
|
|
124
|
+
...(cmd.ownerId ? ["--owner-id", cmd.ownerId] : []),
|
|
125
|
+
...(cmd.agentDir ? ["--agent-dir", cmd.agentDir] : []),
|
|
126
|
+
];
|
|
127
|
+
await runChatDaemonInternal(cmd.action === "discord-internal" ? "discord" : "slack", args);
|
|
81
128
|
return;
|
|
82
129
|
}
|
|
130
|
+
const unknownKinds = cmd.kinds.filter(kind => !(KNOWN_KINDS as readonly string[]).includes(kind));
|
|
131
|
+
if (unknownKinds.length > 0) throw new UnknownDaemonKindError(unknownKinds, KNOWN_KINDS);
|
|
83
132
|
const settings = deps.settings ?? (await Settings.init());
|
|
84
133
|
const controllers = deps.controllers ?? selectDaemonControllers(settings, cmd.kinds, cmd.all);
|
|
85
134
|
|
package/src/cli/list-models.ts
CHANGED
|
@@ -191,7 +191,7 @@ export async function runListModelsCommand(options: RunListModelsOptions): Promi
|
|
|
191
191
|
process.stderr.write(`Failed to load extension: ${extPath}: ${error}\n`);
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
// Mirror sdk.ts: drain pending provider registrations into the registry.
|
|
194
|
+
// Mirror sdk/session.ts: drain pending provider registrations into the registry.
|
|
195
195
|
const activeSources = extensionsResult.extensions.map(extension => extension.path);
|
|
196
196
|
modelRegistry.syncExtensionSources(activeSources);
|
|
197
197
|
for (const sourceId of new Set(activeSources)) {
|