@gajae-code/coding-agent 0.10.2 → 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 +50 -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/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/selector-controller.d.ts +35 -1
- package/dist/types/modes/index.d.ts +0 -4
- package/dist/types/modes/interactive-mode.d.ts +3 -0
- 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 +5 -0
- 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 +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 +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 +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 +1 -2
- package/src/modes/controllers/event-controller.ts +11 -16
- package/src/modes/controllers/extension-ui-controller.ts +348 -4
- package/src/modes/controllers/selector-controller.ts +674 -36
- package/src/modes/index.ts +0 -22
- package/src/modes/interactive-mode.ts +59 -20
- 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 +5 -0
- 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 +2453 -894
- 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/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
|
@@ -4,9 +4,16 @@
|
|
|
4
4
|
import { ThinkingLevel } from "@gajae-code/agent-core";
|
|
5
5
|
import { type Api, type KnownProvider, type Model } from "@gajae-code/ai";
|
|
6
6
|
import { type ModelRegistry, type ModelRole } from "./model-registry";
|
|
7
|
+
import { type ModelSelectorValue } from "./model-selector-value";
|
|
7
8
|
import type { Settings } from "./settings";
|
|
8
9
|
/** Default model IDs for each known provider */
|
|
9
10
|
export declare const defaultModelPerProvider: Record<KnownProvider, string>;
|
|
11
|
+
/**
|
|
12
|
+
* Cursor's current RPC transport executes its exec protocol while streaming and
|
|
13
|
+
* has no client-side tool-call mode. Managed fallback attempts must not enable
|
|
14
|
+
* that irreversible path.
|
|
15
|
+
*/
|
|
16
|
+
export declare function managedCursorFallbackUnavailableReason(model: Model<Api>, selector: string): string | undefined;
|
|
10
17
|
export interface ScopedModelSelection {
|
|
11
18
|
model: Model<Api>;
|
|
12
19
|
thinkingLevel?: ThinkingLevel;
|
|
@@ -61,10 +68,10 @@ export declare function parseModelPattern(pattern: string, availableModels: Mode
|
|
|
61
68
|
* Expand a role alias like "pi/default" to the configured model string.
|
|
62
69
|
*/
|
|
63
70
|
export declare function expandRoleAlias(value: string, settings?: Settings): string;
|
|
64
|
-
export declare function resolveConfiguredModelPatterns(value:
|
|
71
|
+
export declare function resolveConfiguredModelPatterns(value: ModelSelectorValue | undefined, settings?: Settings): string[];
|
|
65
72
|
export interface AgentModelPatternResolutionOptions {
|
|
66
|
-
settingsOverride?:
|
|
67
|
-
agentModel?:
|
|
73
|
+
settingsOverride?: ModelSelectorValue;
|
|
74
|
+
agentModel?: ModelSelectorValue;
|
|
68
75
|
settings?: Settings;
|
|
69
76
|
activeModelPattern?: string;
|
|
70
77
|
fallbackModelPattern?: string;
|
|
@@ -79,12 +86,12 @@ export interface ResolvedModelRoleValue {
|
|
|
79
86
|
explicitThinkingLevel: boolean;
|
|
80
87
|
warning: string | undefined;
|
|
81
88
|
}
|
|
82
|
-
export declare function resolveModelRoleValue(roleValue:
|
|
89
|
+
export declare function resolveModelRoleValue(roleValue: ModelSelectorValue | undefined, availableModels: Model<Api>[], options?: {
|
|
83
90
|
settings?: Settings;
|
|
84
91
|
matchPreferences?: ModelMatchPreferences;
|
|
85
92
|
modelRegistry?: CanonicalModelRegistry;
|
|
86
93
|
}): ResolvedModelRoleValue;
|
|
87
|
-
export declare function extractExplicitThinkingSelector(value:
|
|
94
|
+
export declare function extractExplicitThinkingSelector(value: ModelSelectorValue | undefined, settings?: Settings): ThinkingLevel | undefined;
|
|
88
95
|
/**
|
|
89
96
|
* Resolve a model identifier or pattern to a Model instance.
|
|
90
97
|
*/
|
|
@@ -107,6 +114,26 @@ export declare function resolveModelOverride(modelPatterns: string[], modelRegis
|
|
|
107
114
|
thinkingLevel?: ThinkingLevel;
|
|
108
115
|
explicitThinkingLevel: boolean;
|
|
109
116
|
};
|
|
117
|
+
/**
|
|
118
|
+
* Resolve a configured fallback chain to its first callable entry without
|
|
119
|
+
* charging requests. For retryable chains, consumers MUST pass
|
|
120
|
+
* `{ managedFallback: true }` so unsuitable entries (including Cursor's
|
|
121
|
+
* provider-side tool mode) fail closed during resolution before any request
|
|
122
|
+
* is attempted. Single-entry chains remain non-managed selections.
|
|
123
|
+
*/
|
|
124
|
+
export interface ModelChainResolutionOptions {
|
|
125
|
+
managedFallback?: boolean;
|
|
126
|
+
}
|
|
127
|
+
export declare function resolveModelChainWithAuth(modelPatterns: readonly string[], modelRegistry: ModelLookupRegistry & Pick<ModelRegistry, "getApiKey">, settings?: Settings, sessionId?: string, options?: ModelChainResolutionOptions): Promise<{
|
|
128
|
+
model?: Model<Api>;
|
|
129
|
+
thinkingLevel?: ThinkingLevel;
|
|
130
|
+
explicitThinkingLevel: boolean;
|
|
131
|
+
activeIndex: number;
|
|
132
|
+
skips: Array<{
|
|
133
|
+
selector: string;
|
|
134
|
+
reason: string;
|
|
135
|
+
}>;
|
|
136
|
+
}>;
|
|
110
137
|
/**
|
|
111
138
|
* Resolve a list of override patterns to the first matching model, with an
|
|
112
139
|
* auth-aware fallback to the parent session's active model.
|
|
@@ -128,13 +155,19 @@ export declare function resolveModelOverride(modelPatterns: string[], modelRegis
|
|
|
128
155
|
* primary resolution unchanged so the existing error path still surfaces
|
|
129
156
|
* a meaningful failure downstream.
|
|
130
157
|
*/
|
|
131
|
-
export declare function resolveModelOverrideWithAuthFallback(modelPatterns: string[], parentActiveModelPattern: string | undefined, modelRegistry: ModelLookupRegistry & Pick<ModelRegistry, "getApiKey">, settings?: Settings, sessionId?: string): Promise<{
|
|
158
|
+
export declare function resolveModelOverrideWithAuthFallback(modelPatterns: string[], parentActiveModelPattern: string | undefined, modelRegistry: ModelLookupRegistry & Pick<ModelRegistry, "getApiKey">, settings?: Settings, sessionId?: string, options?: ModelChainResolutionOptions): Promise<{
|
|
132
159
|
model?: Model<Api>;
|
|
133
160
|
thinkingLevel?: ThinkingLevel;
|
|
134
161
|
explicitThinkingLevel: boolean;
|
|
135
162
|
authFallbackUsed: boolean;
|
|
136
163
|
requestedModel?: Model<Api>;
|
|
137
164
|
fallbackReason?: "auth_unavailable";
|
|
165
|
+
activeIndex?: number;
|
|
166
|
+
parentFallbackSelector?: string;
|
|
167
|
+
skips: Array<{
|
|
168
|
+
selector: string;
|
|
169
|
+
reason: string;
|
|
170
|
+
}>;
|
|
138
171
|
}>;
|
|
139
172
|
/**
|
|
140
173
|
* Resolve a list of role patterns to the first matching model.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
/** A model selector or an ordered fallback chain of selectors. */
|
|
3
|
+
export type ModelSelectorValue = string | readonly string[];
|
|
4
|
+
/**
|
|
5
|
+
* Accept one validated selector or a non-empty ordered chain of validated selectors.
|
|
6
|
+
* Element schemas own each configuration surface's selector grammar.
|
|
7
|
+
*/
|
|
8
|
+
export declare function stringOrNonEmptyArray<T extends z.ZodType<string>>(elementSchema: T): z.ZodUnion<readonly [T, z.ZodArray<T>]>;
|
|
9
|
+
/** Return whether a value is a non-blank selector or a non-empty selector chain. */
|
|
10
|
+
export declare function isModelSelectorValue(value: unknown): value is ModelSelectorValue;
|
|
11
|
+
/**
|
|
12
|
+
* Preserve compatibility with comma-delimited selector strings while flattening
|
|
13
|
+
* configured chains in their declared order.
|
|
14
|
+
*/
|
|
15
|
+
export declare function normalizeModelSelectorValue(value: ModelSelectorValue | undefined): string[];
|
|
16
|
+
/** Return the first configured selector for consumers that need one selector. */
|
|
17
|
+
export declare function selectorHead(value: ModelSelectorValue | undefined): string | undefined;
|
|
@@ -62,6 +62,10 @@ export declare const OpenAICompatSchema: z.ZodObject<{
|
|
|
62
62
|
none: "none";
|
|
63
63
|
}>>;
|
|
64
64
|
}, z.core.$strip>;
|
|
65
|
+
export declare const ModelBindingsSchema: z.ZodObject<{
|
|
66
|
+
modelRoles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
67
|
+
agentModelOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
68
|
+
}, z.core.$strip>;
|
|
65
69
|
export declare const ProfileRoleSchema: z.ZodEnum<{
|
|
66
70
|
architect: "architect";
|
|
67
71
|
critic: "critic";
|
|
@@ -76,7 +80,7 @@ export declare const ProfileModelMappingSchema: z.ZodRecord<z.ZodEnum<{
|
|
|
76
80
|
default: "default";
|
|
77
81
|
executor: "executor";
|
|
78
82
|
planner: "planner";
|
|
79
|
-
}> & z.core.$partial, z.ZodString
|
|
83
|
+
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
80
84
|
export declare const ProfileDefinitionSchema: z.ZodObject<{
|
|
81
85
|
required_providers: z.ZodArray<z.ZodString>;
|
|
82
86
|
display_name: z.ZodOptional<z.ZodString>;
|
|
@@ -86,7 +90,7 @@ export declare const ProfileDefinitionSchema: z.ZodObject<{
|
|
|
86
90
|
default: "default";
|
|
87
91
|
executor: "executor";
|
|
88
92
|
planner: "planner";
|
|
89
|
-
}> & z.core.$partial, z.ZodString
|
|
93
|
+
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
90
94
|
}, z.core.$strict>;
|
|
91
95
|
export declare const ProfilesSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
92
96
|
required_providers: z.ZodArray<z.ZodString>;
|
|
@@ -97,7 +101,7 @@ export declare const ProfilesSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
|
97
101
|
default: "default";
|
|
98
102
|
executor: "executor";
|
|
99
103
|
planner: "planner";
|
|
100
|
-
}> & z.core.$partial, z.ZodString
|
|
104
|
+
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
101
105
|
}, z.core.$strict>>;
|
|
102
106
|
export declare const ModelOverrideSchema: z.ZodObject<{
|
|
103
107
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -676,8 +680,8 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
676
680
|
}, z.core.$strict>>;
|
|
677
681
|
}, z.core.$strict>>>;
|
|
678
682
|
modelBindings: z.ZodOptional<z.ZodObject<{
|
|
679
|
-
modelRoles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString
|
|
680
|
-
agentModelOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString
|
|
683
|
+
modelRoles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
684
|
+
agentModelOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
681
685
|
}, z.core.$strip>>;
|
|
682
686
|
equivalence: z.ZodOptional<z.ZodObject<{
|
|
683
687
|
overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
@@ -692,7 +696,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
692
696
|
default: "default";
|
|
693
697
|
executor: "executor";
|
|
694
698
|
planner: "planner";
|
|
695
|
-
}> & z.core.$partial, z.ZodString
|
|
699
|
+
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
696
700
|
}, z.core.$strict>>>;
|
|
697
701
|
}, z.core.$strict>;
|
|
698
702
|
export type ModelsConfig = z.infer<typeof ModelsConfigSchema>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Effort } from "@gajae-code/ai/model-thinking";
|
|
2
|
+
import type { ModelSelectorValue } from "./model-selector-value";
|
|
2
3
|
import { type SkillDiscoverySettings } from "./skill-settings-defaults";
|
|
3
4
|
/** Unified settings schema - single source of truth for all settings.
|
|
4
5
|
*
|
|
@@ -10,7 +11,7 @@ import { type SkillDiscoverySettings } from "./skill-settings-defaults";
|
|
|
10
11
|
* settings.get("compaction.enabled") // => boolean
|
|
11
12
|
* settings.set("theme.dark", "red-claw") // sync, saves in background
|
|
12
13
|
*/
|
|
13
|
-
export type SettingTab = "appearance" | "model" | "interaction" | "context" | "memory" | "editing" | "tools" | "tasks" | "providers";
|
|
14
|
+
export type SettingTab = "appearance" | "model" | "interaction" | "context" | "memory" | "editing" | "tools" | "tasks" | "providers" | "notifications";
|
|
14
15
|
/** Tab display metadata - icon is resolved via theme.symbol() */
|
|
15
16
|
export type TabMetadata = {
|
|
16
17
|
label: string;
|
|
@@ -37,6 +38,11 @@ interface UiBase {
|
|
|
37
38
|
description: string;
|
|
38
39
|
/** Condition function name - setting only shown when true */
|
|
39
40
|
condition?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Persistence owner for settings which must not use the generic immediate
|
|
43
|
+
* settings-list write path.
|
|
44
|
+
*/
|
|
45
|
+
editing?: "notification-atomic";
|
|
40
46
|
}
|
|
41
47
|
interface UiBoolean extends UiBase {
|
|
42
48
|
}
|
|
@@ -91,9 +97,13 @@ interface ArrayDef<T> {
|
|
|
91
97
|
};
|
|
92
98
|
ui?: UiBase;
|
|
93
99
|
}
|
|
100
|
+
interface RecordValueDef {
|
|
101
|
+
type: "model-selector-value";
|
|
102
|
+
}
|
|
94
103
|
interface RecordDef<T> {
|
|
95
104
|
type: "record";
|
|
96
105
|
default: Record<string, T>;
|
|
106
|
+
valueSchema?: RecordValueDef;
|
|
97
107
|
ui?: UiBase;
|
|
98
108
|
}
|
|
99
109
|
type SettingDef = BooleanDef | StringDef | NumberDef | EnumDef<readonly string[]> | ArrayDef<unknown> | RecordDef<unknown>;
|
|
@@ -130,13 +140,29 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
130
140
|
readonly type: "string";
|
|
131
141
|
readonly default: undefined;
|
|
132
142
|
};
|
|
143
|
+
readonly "notifications.telegram.activation": {
|
|
144
|
+
readonly type: "record";
|
|
145
|
+
readonly default: Record<string, unknown>;
|
|
146
|
+
};
|
|
133
147
|
readonly "notifications.telegram.rich.enabled": {
|
|
134
148
|
readonly type: "boolean";
|
|
135
149
|
readonly default: true;
|
|
150
|
+
readonly ui: {
|
|
151
|
+
readonly tab: "notifications";
|
|
152
|
+
readonly label: "Telegram Rich Messages";
|
|
153
|
+
readonly description: "Format Telegram notifications with rich message content.";
|
|
154
|
+
readonly editing: "notification-atomic";
|
|
155
|
+
};
|
|
136
156
|
};
|
|
137
157
|
readonly "notifications.telegram.richDraft.enabled": {
|
|
138
158
|
readonly type: "boolean";
|
|
139
159
|
readonly default: false;
|
|
160
|
+
readonly ui: {
|
|
161
|
+
readonly tab: "notifications";
|
|
162
|
+
readonly label: "Telegram Rich Drafts";
|
|
163
|
+
readonly description: "Include rich draft updates in Telegram notifications.";
|
|
164
|
+
readonly editing: "notification-atomic";
|
|
165
|
+
};
|
|
140
166
|
};
|
|
141
167
|
readonly "notifications.telegram.topics.nameTemplate": {
|
|
142
168
|
readonly type: "string";
|
|
@@ -146,7 +172,15 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
146
172
|
readonly type: "string";
|
|
147
173
|
readonly default: undefined;
|
|
148
174
|
};
|
|
149
|
-
readonly "notifications.discord.
|
|
175
|
+
readonly "notifications.discord.applicationId": {
|
|
176
|
+
readonly type: "string";
|
|
177
|
+
readonly default: undefined;
|
|
178
|
+
};
|
|
179
|
+
readonly "notifications.discord.guildId": {
|
|
180
|
+
readonly type: "string";
|
|
181
|
+
readonly default: undefined;
|
|
182
|
+
};
|
|
183
|
+
readonly "notifications.discord.parentChannelId": {
|
|
150
184
|
readonly type: "string";
|
|
151
185
|
readonly default: undefined;
|
|
152
186
|
};
|
|
@@ -154,23 +188,71 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
154
188
|
readonly type: "string";
|
|
155
189
|
readonly default: undefined;
|
|
156
190
|
};
|
|
191
|
+
readonly "notifications.slack.appToken": {
|
|
192
|
+
readonly type: "string";
|
|
193
|
+
readonly default: undefined;
|
|
194
|
+
};
|
|
195
|
+
readonly "notifications.slack.workspaceId": {
|
|
196
|
+
readonly type: "string";
|
|
197
|
+
readonly default: undefined;
|
|
198
|
+
};
|
|
157
199
|
readonly "notifications.slack.channelId": {
|
|
158
200
|
readonly type: "string";
|
|
159
201
|
readonly default: undefined;
|
|
160
202
|
};
|
|
203
|
+
readonly "notifications.slack.authorizedUserId": {
|
|
204
|
+
readonly type: "string";
|
|
205
|
+
readonly default: undefined;
|
|
206
|
+
};
|
|
161
207
|
readonly "notifications.redact": {
|
|
162
208
|
readonly type: "boolean";
|
|
163
209
|
readonly default: false;
|
|
210
|
+
readonly ui: {
|
|
211
|
+
readonly tab: "notifications";
|
|
212
|
+
readonly label: "Redact Notification Content";
|
|
213
|
+
readonly description: "Redact sensitive content before notifications are delivered.";
|
|
214
|
+
readonly editing: "notification-atomic";
|
|
215
|
+
};
|
|
164
216
|
};
|
|
165
217
|
readonly "notifications.verbosity": {
|
|
166
218
|
readonly type: "string";
|
|
167
219
|
readonly default: "lean";
|
|
168
220
|
readonly validate: (value: string) => value is "lean" | "verbose";
|
|
221
|
+
readonly ui: {
|
|
222
|
+
readonly tab: "notifications";
|
|
223
|
+
readonly label: "Notification Verbosity";
|
|
224
|
+
readonly description: "Choose concise or detailed notification messages.";
|
|
225
|
+
readonly options: readonly [{
|
|
226
|
+
readonly value: "lean";
|
|
227
|
+
readonly label: "Lean";
|
|
228
|
+
readonly description: "Send concise notification messages";
|
|
229
|
+
}, {
|
|
230
|
+
readonly value: "verbose";
|
|
231
|
+
readonly label: "Verbose";
|
|
232
|
+
readonly description: "Send detailed notification messages";
|
|
233
|
+
}];
|
|
234
|
+
readonly editing: "notification-atomic";
|
|
235
|
+
};
|
|
169
236
|
};
|
|
170
237
|
readonly "notifications.sessionScope": {
|
|
171
238
|
readonly type: "string";
|
|
172
239
|
readonly default: "all";
|
|
173
240
|
readonly validate: (value: string) => value is "all" | "primary";
|
|
241
|
+
readonly ui: {
|
|
242
|
+
readonly tab: "notifications";
|
|
243
|
+
readonly label: "Notification Session Scope";
|
|
244
|
+
readonly description: "Send notifications from all sessions or only the primary session.";
|
|
245
|
+
readonly options: readonly [{
|
|
246
|
+
readonly value: "all";
|
|
247
|
+
readonly label: "All Sessions";
|
|
248
|
+
readonly description: "Allow eligible sessions";
|
|
249
|
+
}, {
|
|
250
|
+
readonly value: "primary";
|
|
251
|
+
readonly label: "Primary Session";
|
|
252
|
+
readonly description: "Limit automatic notifications to the primary session";
|
|
253
|
+
}];
|
|
254
|
+
readonly editing: "notification-atomic";
|
|
255
|
+
};
|
|
174
256
|
};
|
|
175
257
|
readonly "notifications.daemon.idleTimeoutMs": {
|
|
176
258
|
readonly type: "number";
|
|
@@ -285,7 +367,10 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
285
367
|
};
|
|
286
368
|
readonly modelRoles: {
|
|
287
369
|
readonly type: "record";
|
|
288
|
-
readonly default: Record<string,
|
|
370
|
+
readonly default: Record<string, ModelSelectorValue>;
|
|
371
|
+
readonly valueSchema: {
|
|
372
|
+
readonly type: "model-selector-value";
|
|
373
|
+
};
|
|
289
374
|
};
|
|
290
375
|
readonly "modelProfile.default": {
|
|
291
376
|
readonly type: "string";
|
|
@@ -1240,6 +1325,11 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1240
1325
|
}];
|
|
1241
1326
|
};
|
|
1242
1327
|
};
|
|
1328
|
+
readonly "fallback.maxAttempts": {
|
|
1329
|
+
readonly type: "number";
|
|
1330
|
+
readonly default: 3;
|
|
1331
|
+
readonly validate: (value: number) => boolean;
|
|
1332
|
+
};
|
|
1243
1333
|
readonly "retry.enabled": {
|
|
1244
1334
|
readonly type: "boolean";
|
|
1245
1335
|
readonly default: true;
|
|
@@ -2802,6 +2892,34 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2802
2892
|
readonly description: "Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)";
|
|
2803
2893
|
};
|
|
2804
2894
|
};
|
|
2895
|
+
readonly "browser.profileReuse": {
|
|
2896
|
+
readonly type: "string";
|
|
2897
|
+
readonly default: "auto";
|
|
2898
|
+
readonly validate: (value: string) => value is "auto" | "opt-in";
|
|
2899
|
+
readonly ui: {
|
|
2900
|
+
readonly tab: "tools";
|
|
2901
|
+
readonly label: "Profile reuse posture";
|
|
2902
|
+
readonly description: "'auto' (default): when a usable real Chrome profile is available, the browser tool uses an isolated copy of it (cookies/session/cache) for stronger stealth, warns, and falls back to synthetic. 'opt-in': stay synthetic unless a real profile is explicitly requested.";
|
|
2903
|
+
};
|
|
2904
|
+
};
|
|
2905
|
+
readonly "browser.geo.timezone": {
|
|
2906
|
+
readonly type: "string";
|
|
2907
|
+
readonly default: undefined;
|
|
2908
|
+
readonly ui: {
|
|
2909
|
+
readonly tab: "tools";
|
|
2910
|
+
readonly label: "Geo timezone override";
|
|
2911
|
+
readonly description: "Optional IANA timezone (e.g. 'America/New_York') for headless sessions. Default unset preserves the real timezone. Only set this to a value coherent with your egress (e.g. a proxy region); an incoherent timezone increases bot detection.";
|
|
2912
|
+
};
|
|
2913
|
+
};
|
|
2914
|
+
readonly "browser.geo.locale": {
|
|
2915
|
+
readonly type: "string";
|
|
2916
|
+
readonly default: undefined;
|
|
2917
|
+
readonly ui: {
|
|
2918
|
+
readonly tab: "tools";
|
|
2919
|
+
readonly label: "Geo locale override";
|
|
2920
|
+
readonly description: "Optional UI locale (e.g. 'en-US') for headless sessions. Default unset preserves the real locale. Only set this coherently with your egress region.";
|
|
2921
|
+
};
|
|
2922
|
+
};
|
|
2805
2923
|
readonly "browser.gc.enabled": {
|
|
2806
2924
|
readonly type: "boolean";
|
|
2807
2925
|
readonly default: true;
|
|
@@ -3337,7 +3455,10 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3337
3455
|
};
|
|
3338
3456
|
readonly "task.agentModelOverrides": {
|
|
3339
3457
|
readonly type: "record";
|
|
3340
|
-
readonly default: Record<string,
|
|
3458
|
+
readonly default: Record<string, ModelSelectorValue>;
|
|
3459
|
+
readonly valueSchema: {
|
|
3460
|
+
readonly type: "model-selector-value";
|
|
3461
|
+
};
|
|
3341
3462
|
};
|
|
3342
3463
|
readonly "tasks.todoClearDelay": {
|
|
3343
3464
|
readonly type: "number";
|
|
@@ -3909,13 +4030,19 @@ export interface NotificationsSettings {
|
|
|
3909
4030
|
};
|
|
3910
4031
|
discord: {
|
|
3911
4032
|
botToken: string | undefined;
|
|
3912
|
-
|
|
4033
|
+
applicationId: string | undefined;
|
|
4034
|
+
guildId: string | undefined;
|
|
4035
|
+
parentChannelId: string | undefined;
|
|
3913
4036
|
};
|
|
3914
4037
|
slack: {
|
|
3915
4038
|
botToken: string | undefined;
|
|
4039
|
+
appToken: string | undefined;
|
|
4040
|
+
workspaceId: string | undefined;
|
|
3916
4041
|
channelId: string | undefined;
|
|
3917
4042
|
};
|
|
3918
4043
|
redact: boolean;
|
|
4044
|
+
verbosity: "lean" | "verbose";
|
|
4045
|
+
sessionScope: "all" | "primary";
|
|
3919
4046
|
daemon: {
|
|
3920
4047
|
idleTimeoutMs: number;
|
|
3921
4048
|
};
|
|
@@ -3934,7 +4061,7 @@ export interface GroupTypeMap {
|
|
|
3934
4061
|
statusLine: StatusLineSettings;
|
|
3935
4062
|
thinkingBudgets: ThinkingBudgetsSettings;
|
|
3936
4063
|
stt: SttSettings;
|
|
3937
|
-
modelRoles: Record<string,
|
|
4064
|
+
modelRoles: Record<string, ModelSelectorValue>;
|
|
3938
4065
|
modelTags: ModelTagsSettings;
|
|
3939
4066
|
cycleOrder: string[];
|
|
3940
4067
|
shellMinimizer: ShellMinimizerSettings;
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Settings singleton with sync get/set and background persistence.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* import { settings } from "./settings";
|
|
6
|
-
*
|
|
7
|
-
* const enabled = settings.get("compaction.enabled"); // sync read
|
|
8
|
-
* settings.set("theme.dark", "red-claw"); // sync write, saves in background
|
|
9
|
-
*
|
|
10
|
-
* For tests:
|
|
11
|
-
* const isolated = Settings.isolated({ "compaction.enabled": false });
|
|
12
|
-
*/
|
|
13
1
|
import { procmgr } from "@gajae-code/utils";
|
|
14
2
|
import type { ModelRole } from "../config/model-registry";
|
|
3
|
+
import type { NotificationSettingsReader, NotificationSettingsSnapshot } from "../sdk/bus/config";
|
|
15
4
|
import { AgentStorage } from "../session/agent-storage";
|
|
16
5
|
import { type EditMode } from "../utils/edit-mode";
|
|
6
|
+
import { type CasReceipt } from "./atomic-yaml-patch";
|
|
7
|
+
import { type ModelSelectorValue } from "./model-selector-value";
|
|
17
8
|
import { type BashInterceptorRule, type GroupPrefix, type GroupTypeMap, type SettingPath, type SettingValue } from "./settings-schema";
|
|
18
9
|
export type * from "./settings-schema";
|
|
19
10
|
export * from "./settings-schema";
|
|
@@ -21,6 +12,22 @@ export * from "./settings-schema";
|
|
|
21
12
|
export interface RawSettings {
|
|
22
13
|
[key: string]: unknown;
|
|
23
14
|
}
|
|
15
|
+
export type SettingsAtomicPatch = {
|
|
16
|
+
path: SettingPath;
|
|
17
|
+
op: "set";
|
|
18
|
+
value: unknown;
|
|
19
|
+
} | {
|
|
20
|
+
path: SettingPath;
|
|
21
|
+
op: "unset";
|
|
22
|
+
};
|
|
23
|
+
export type SettingsAtomicReceipt = CasReceipt;
|
|
24
|
+
export interface GlobalDefaultModelRoleCommit {
|
|
25
|
+
readonly previousDefault: ModelSelectorValue | undefined;
|
|
26
|
+
readonly previousModelRolesExisted: boolean;
|
|
27
|
+
readonly committedDefault: ModelSelectorValue | undefined;
|
|
28
|
+
readonly committedConfigVersion?: string;
|
|
29
|
+
readonly defaultRevision: number;
|
|
30
|
+
}
|
|
24
31
|
export interface SettingsOptions {
|
|
25
32
|
/** Current working directory for project settings discovery */
|
|
26
33
|
cwd?: string;
|
|
@@ -31,7 +38,17 @@ export interface SettingsOptions {
|
|
|
31
38
|
/** Initial overrides */
|
|
32
39
|
overrides?: Partial<Record<SettingPath, unknown>>;
|
|
33
40
|
}
|
|
34
|
-
|
|
41
|
+
/** Additional layer setup for {@link Settings.isolated}. */
|
|
42
|
+
export interface IsolatedSettingsOptions {
|
|
43
|
+
/** Initial runtime overrides. Notification paths are rejected. */
|
|
44
|
+
overrides?: Partial<Record<SettingPath, unknown>>;
|
|
45
|
+
}
|
|
46
|
+
/** Raised when an ephemeral override attempts to change global-only notification settings. */
|
|
47
|
+
export declare class NotificationSettingsOverrideError extends Error {
|
|
48
|
+
readonly path: SettingPath;
|
|
49
|
+
constructor(path: SettingPath);
|
|
50
|
+
}
|
|
51
|
+
export declare class Settings implements NotificationSettingsReader {
|
|
35
52
|
#private;
|
|
36
53
|
private constructor();
|
|
37
54
|
/**
|
|
@@ -40,10 +57,10 @@ export declare class Settings {
|
|
|
40
57
|
*/
|
|
41
58
|
static init(options?: SettingsOptions): Promise<Settings>;
|
|
42
59
|
/**
|
|
43
|
-
* Create an isolated instance for testing.
|
|
60
|
+
* Create an isolated instance for testing with explicit user/global settings.
|
|
44
61
|
* Does not affect the global singleton.
|
|
45
62
|
*/
|
|
46
|
-
static isolated(
|
|
63
|
+
static isolated(globalSettings?: Partial<Record<SettingPath, unknown>>, options?: IsolatedSettingsOptions): Settings;
|
|
47
64
|
/**
|
|
48
65
|
* Get the global singleton.
|
|
49
66
|
* Throws if not initialized.
|
|
@@ -61,14 +78,32 @@ export declare class Settings {
|
|
|
61
78
|
* activated by project-scoped config files.
|
|
62
79
|
*/
|
|
63
80
|
getGlobal<P extends SettingPath>(path: P): SettingValue<P> | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Read the remote-notification settings from the user/global layer only.
|
|
83
|
+
* Schema defaults are applied per path; project settings and runtime overrides
|
|
84
|
+
* are deliberately excluded from this trust boundary.
|
|
85
|
+
*/
|
|
86
|
+
getNotificationSettingsSnapshot(): NotificationSettingsSnapshot;
|
|
64
87
|
/** Check whether a setting is present in loaded settings/overrides rather than coming from schema defaults. */
|
|
65
88
|
has(path: SettingPath): boolean;
|
|
66
89
|
/**
|
|
67
90
|
* Set a setting value (sync).
|
|
68
|
-
* Updates global settings and
|
|
69
|
-
*
|
|
91
|
+
* Updates global settings and reserves its background persistence slot before
|
|
92
|
+
* returning, so later durable batches cannot overtake this mutation.
|
|
70
93
|
*/
|
|
71
|
-
set<P extends SettingPath>(path: P, value: SettingValue<P>): void;
|
|
94
|
+
set<P extends SettingPath>(path: P, value: SettingValue<P> | undefined): void;
|
|
95
|
+
/**
|
|
96
|
+
* Delete a global setting (sync), rather than serializing an ambiguous YAML
|
|
97
|
+
* `undefined` value. Defaults/project settings become visible immediately.
|
|
98
|
+
*/
|
|
99
|
+
unset<P extends SettingPath>(path: P): void;
|
|
100
|
+
/**
|
|
101
|
+
* Persist a tagged batch as one atomic YAML replacement. Unlike ordinary
|
|
102
|
+
* {@link set}, canonical state and hooks change only after the rename succeeds.
|
|
103
|
+
*/
|
|
104
|
+
commitAtomicBatch(patches: readonly SettingsAtomicPatch[]): Promise<CasReceipt>;
|
|
105
|
+
/** Build a durable batch from the current on-disk YAML under the shared queue and file lock. */
|
|
106
|
+
commitAtomicBatchWithCurrent(buildPatches: (current: Readonly<RawSettings>) => Promise<readonly SettingsAtomicPatch[]> | readonly SettingsAtomicPatch[]): Promise<CasReceipt>;
|
|
72
107
|
/**
|
|
73
108
|
* Apply runtime overrides (not persisted).
|
|
74
109
|
*/
|
|
@@ -77,17 +112,9 @@ export declare class Settings {
|
|
|
77
112
|
* Clear a runtime override.
|
|
78
113
|
*/
|
|
79
114
|
clearOverride(path: SettingPath): void;
|
|
80
|
-
/**
|
|
81
|
-
* Flush any pending saves to disk.
|
|
82
|
-
* Call before exit to ensure all changes are persisted.
|
|
83
|
-
*/
|
|
115
|
+
/** Flush a reserved debounced save without allowing it to be overtaken. */
|
|
84
116
|
flush(): Promise<void>;
|
|
85
|
-
/**
|
|
86
|
-
* Like {@link flush}, but rejects if the durable save fails instead of
|
|
87
|
-
* swallowing the error. Use where the caller must confirm persistence before
|
|
88
|
-
* reporting success (e.g. the Telegram `/rich` toggle). In-memory instances
|
|
89
|
-
* ({@link isolated}) short-circuit in {@link #saveNow} and never throw.
|
|
90
|
-
*/
|
|
117
|
+
/** Like {@link flush}, but reports a durable save failure to the caller. */
|
|
91
118
|
flushOrThrow(): Promise<void>;
|
|
92
119
|
cloneForCwd(cwd: string): Promise<Settings>;
|
|
93
120
|
getStorage(): AgentStorage | null;
|
|
@@ -114,9 +141,10 @@ export declare class Settings {
|
|
|
114
141
|
/**
|
|
115
142
|
* Set a model role (helper for modelRoles record).
|
|
116
143
|
*/
|
|
117
|
-
setModelRole(role: ModelRole | string, modelId:
|
|
118
|
-
setGlobalModelRole(role: ModelRole | string, modelId:
|
|
119
|
-
setGlobalModelRoleAndFlush(role: ModelRole | string, modelId:
|
|
144
|
+
setModelRole(role: ModelRole | string, modelId: ModelSelectorValue): void;
|
|
145
|
+
setGlobalModelRole(role: ModelRole | string, modelId: ModelSelectorValue | undefined): void;
|
|
146
|
+
setGlobalModelRoleAndFlush(role: ModelRole | string, modelId: ModelSelectorValue | undefined): Promise<GlobalDefaultModelRoleCommit>;
|
|
147
|
+
restoreGlobalDefaultModelRoleIfCurrent(commit: GlobalDefaultModelRoleCommit): Promise<boolean>;
|
|
120
148
|
/**
|
|
121
149
|
* Set an agent model override while keeping any live runtime override aligned.
|
|
122
150
|
*
|
|
@@ -124,16 +152,16 @@ export declare class Settings {
|
|
|
124
152
|
* session. A user-selected role assignment must win immediately in that same
|
|
125
153
|
* session, but only the explicit agent change should be persisted.
|
|
126
154
|
*/
|
|
127
|
-
setAgentModelOverride(agentName: string, modelId:
|
|
155
|
+
setAgentModelOverride(agentName: string, modelId: ModelSelectorValue): void;
|
|
128
156
|
/**
|
|
129
157
|
* Get a model role (helper for modelRoles record).
|
|
130
158
|
*/
|
|
131
|
-
getModelRole(role: ModelRole | string):
|
|
159
|
+
getModelRole(role: ModelRole | string): ModelSelectorValue | undefined;
|
|
132
160
|
/**
|
|
133
161
|
* Get all model roles (helper for modelRoles record).
|
|
134
162
|
*/
|
|
135
|
-
getModelRoles():
|
|
136
|
-
overrideModelRoles(roles:
|
|
163
|
+
getModelRoles(): Readonly<Record<string, ModelSelectorValue>>;
|
|
164
|
+
overrideModelRoles(roles: Readonly<Record<string, ModelSelectorValue>>): void;
|
|
137
165
|
/**
|
|
138
166
|
* Set disabled providers (for compatibility with discovery system).
|
|
139
167
|
*/
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
export interface CoordinatorModelProfile {
|
|
2
|
+
name: string;
|
|
3
|
+
}
|
|
2
4
|
/**
|
|
3
|
-
* Loads the merged built-in + custom model-profile
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* in the shared models config, which the child inherits, so both sides agree.
|
|
5
|
+
* Loads the merged built-in + custom model-profile names from `models.yml`
|
|
6
|
+
* without loading the session-host model registry. The child still owns
|
|
7
|
+
* profile activation; this validates the selection before session creation.
|
|
7
8
|
*/
|
|
8
|
-
export type CoordinatorModelProfileLoader = () => Map<string,
|
|
9
|
+
export type CoordinatorModelProfileLoader = () => Map<string, CoordinatorModelProfile> | Promise<Map<string, CoordinatorModelProfile>>;
|
|
9
10
|
/**
|
|
10
11
|
* Thrown by the default loader when `models.yml` exists but is invalid or
|
|
11
12
|
* unreadable. This lets the resolver fail closed with a distinct, stable reason
|