@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AgentSession - Core abstraction for agent lifecycle and session management.
|
|
3
3
|
*
|
|
4
|
-
* This class is shared
|
|
4
|
+
* This class is shared by interactive, print, ACP, and SDK-hosted session callers.
|
|
5
5
|
* It encapsulates:
|
|
6
6
|
* - Agent state access
|
|
7
7
|
* - Event subscription with automatic session persistence
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Modes use this class and add their own I/O layer on top.
|
|
14
14
|
*/
|
|
15
|
-
import { type Agent, type AgentEvent, type AgentMessage, type AgentState, type AgentTool, type
|
|
15
|
+
import { type Agent, type AgentContext, type AgentEvent, type AgentLoopConfig, type AgentMessage, type AgentState, type AgentTool, type MidRunMaintenanceOutcome, type StablePrefixSnapshot, ThinkingLevel } from "@gajae-code/agent-core";
|
|
16
16
|
import { type CompactionResult, type EmergencyCompactionSample } from "@gajae-code/agent-core/compaction";
|
|
17
17
|
import type { AssistantMessage, Effort, ImageContent, Message, MessageAttribution, Model, ProviderSessionState, ServiceTier, SimpleStreamOptions, TextContent, ToolCall, ToolChoice, Usage, UsageReport } from "@gajae-code/ai";
|
|
18
18
|
export interface ForkContextSeedMetadata {
|
|
@@ -60,23 +60,26 @@ import type { LoadedCustomCommand } from "../extensibility/custom-commands";
|
|
|
60
60
|
import type { CustomTool } from "../extensibility/custom-tools/types";
|
|
61
61
|
import type { ExtensionRunner } from "../extensibility/extensions";
|
|
62
62
|
import type { CompactOptions, ContextUsage } from "../extensibility/extensions/types";
|
|
63
|
-
import type
|
|
63
|
+
import { type Skill, type SkillWarning } from "../extensibility/skills";
|
|
64
64
|
import { type FileSlashCommand } from "../extensibility/slash-commands";
|
|
65
65
|
import { GoalRuntime } from "../goals/runtime";
|
|
66
66
|
import type { Goal, GoalModeState } from "../goals/state";
|
|
67
67
|
import type { HindsightSessionState } from "../hindsight/state";
|
|
68
|
-
import type
|
|
68
|
+
import { type WorkflowGateEmitter } from "../modes/shared/agent-wire/workflow-gate-broker";
|
|
69
69
|
import type { PlanModeState } from "../plan-mode/state";
|
|
70
70
|
import { type AgentRegistry } from "../registry/agent-registry";
|
|
71
71
|
import { type DiscoverableMCPSearchIndex, type DiscoverableMCPTool } from "../runtime-mcp/discoverable-tool-metadata";
|
|
72
72
|
import { MCPManager } from "../runtime-mcp/manager";
|
|
73
|
+
import type { NotificationSessionController } from "../sdk/bus/session-control";
|
|
73
74
|
import { type SecretObfuscator } from "../secrets/obfuscator";
|
|
74
75
|
import { type DiscoverableTool, type DiscoverableToolSearchIndex } from "../tool-discovery/tool-index";
|
|
75
76
|
import type { AskAnswerSource, ToolSession } from "../tools";
|
|
76
77
|
import type { CheckpointState } from "../tools/checkpoint";
|
|
77
78
|
import { type TodoItem, type TodoPhase } from "../tools/todo-write";
|
|
78
79
|
import { type WorkspaceTree } from "../workspace-tree";
|
|
79
|
-
import type
|
|
80
|
+
import { type DefaultModelSelectionResult } from "./default-model-selection";
|
|
81
|
+
export { DefaultModelSelectionRecoveryError } from "./default-model-selection";
|
|
82
|
+
import type { ClientBridge, ClientBridgePermissionOption, ClientBridgePermissionOutcome, ClientBridgePermissionToolCall } from "./client-bridge";
|
|
80
83
|
import { type ContributionPrepOptions, type ContributionPrepResult } from "./contribution-prep";
|
|
81
84
|
import { type CustomMessage } from "./messages";
|
|
82
85
|
import type { BranchSummaryEntry, CompactionEntry, NewSessionOptions, SessionContext, SessionManager, SessionManagerCloseOutcome } from "./session-manager";
|
|
@@ -111,14 +114,16 @@ export type AgentSessionEvent = AgentEvent | {
|
|
|
111
114
|
attempt: number;
|
|
112
115
|
finalError?: string;
|
|
113
116
|
} | {
|
|
114
|
-
type: "
|
|
117
|
+
type: "model_fallback_switched";
|
|
118
|
+
eventId: string;
|
|
115
119
|
from: string;
|
|
116
120
|
to: string;
|
|
121
|
+
reason: string;
|
|
117
122
|
role: string;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
123
|
+
scope: string;
|
|
124
|
+
activeIndex: number;
|
|
125
|
+
chainLength: number;
|
|
126
|
+
attemptsUsed: number;
|
|
122
127
|
} | {
|
|
123
128
|
type: "ttsr_triggered";
|
|
124
129
|
rules: Rule[];
|
|
@@ -164,6 +169,8 @@ export interface AgentSessionConfig {
|
|
|
164
169
|
agent: Agent;
|
|
165
170
|
sessionManager: SessionManager;
|
|
166
171
|
settings: Settings;
|
|
172
|
+
/** Shared Gate-A-eligible notification session controller, when this host supports it. */
|
|
173
|
+
notificationSessionController?: NotificationSessionController;
|
|
167
174
|
/** Models to cycle through with Alt+N (from --models flag) */
|
|
168
175
|
scopedModels?: ScopedModelSelection[];
|
|
169
176
|
/** Initial session thinking selector. */
|
|
@@ -202,7 +209,7 @@ export interface AgentSessionConfig {
|
|
|
202
209
|
/** Current session message-to-LLM conversion pipeline */
|
|
203
210
|
convertToLlm?: (messages: AgentMessage[]) => Message[] | Promise<Message[]>;
|
|
204
211
|
/** System prompt builder that can consider tool availability. Returns ordered provider-facing blocks. */
|
|
205
|
-
rebuildSystemPrompt?: (toolNames: string[], tools: Map<string, AgentTool
|
|
212
|
+
rebuildSystemPrompt?: (toolNames: string[], tools: Map<string, AgentTool>, candidateModel?: Model) => Promise<{
|
|
206
213
|
systemPrompt: string[];
|
|
207
214
|
}>;
|
|
208
215
|
/** Initial workspace tree snapshot used for the first volatile per-turn context message. */
|
|
@@ -268,6 +275,7 @@ export interface AgentSessionConfig {
|
|
|
268
275
|
/** Optional provider-facing cache identity, distinct from logical session identity. */
|
|
269
276
|
providerCacheSessionId?: string;
|
|
270
277
|
}
|
|
278
|
+
type MidRunMaintenanceLifecycle = Parameters<NonNullable<AgentLoopConfig["maintainContext"]>>[1];
|
|
271
279
|
/** Options for AgentSession.prompt() */
|
|
272
280
|
export interface PromptOptions {
|
|
273
281
|
/** Whether to expand file-based prompt templates (default: true) */
|
|
@@ -286,6 +294,11 @@ export interface PromptOptions {
|
|
|
286
294
|
attribution?: MessageAttribution;
|
|
287
295
|
/** Skip pre-send compaction checks for this prompt (internal use for maintenance flows). */
|
|
288
296
|
skipCompactionCheck?: boolean;
|
|
297
|
+
/**
|
|
298
|
+
* Invoked after all prompt preflight checks pass and immediately before agent execution begins.
|
|
299
|
+
* Cancellation before this callback rejects the prompt.
|
|
300
|
+
*/
|
|
301
|
+
onPreflightAccepted?: () => void;
|
|
289
302
|
}
|
|
290
303
|
/** Result from a handoff operation. */
|
|
291
304
|
export interface HandoffResult {
|
|
@@ -303,17 +316,18 @@ export interface ModelCycleResult {
|
|
|
303
316
|
/** Whether cycling through scoped models (--models flag) or all available */
|
|
304
317
|
isScoped: boolean;
|
|
305
318
|
}
|
|
319
|
+
export type ModelChangeCause = "user-selection" | "profile-activation" | "fallback-switch" | "restore" | "rollback" | "startup-override" | "temporary-operation";
|
|
320
|
+
export type TemporaryModelReason = "plan-mode" | "context-promotion" | "temporary-cycle" | "profile-preview" | "extension-temporary" | "other";
|
|
321
|
+
/** Opaque handle for a non-destructive temporary provider-session scope. */
|
|
322
|
+
export interface TemporaryProviderSessionScope {
|
|
323
|
+
readonly reason: TemporaryModelReason;
|
|
324
|
+
}
|
|
306
325
|
/** Result from cycleRoleModels() */
|
|
307
326
|
export interface RoleModelCycleResult {
|
|
308
327
|
model: Model;
|
|
309
328
|
thinkingLevel: ThinkingLevel | undefined;
|
|
310
329
|
role: string;
|
|
311
330
|
}
|
|
312
|
-
export interface DefaultModelSelectionResult {
|
|
313
|
-
readonly provider: string;
|
|
314
|
-
readonly modelId: string;
|
|
315
|
-
readonly thinkingLevel: ResolvedThinkingLevel;
|
|
316
|
-
}
|
|
317
331
|
/** Session statistics for /session command */
|
|
318
332
|
export interface SessionStats {
|
|
319
333
|
sessionFile: string | undefined;
|
|
@@ -394,6 +408,7 @@ export declare class AgentSession {
|
|
|
394
408
|
readonly agent: Agent;
|
|
395
409
|
readonly sessionManager: SessionManager;
|
|
396
410
|
readonly settings: Settings;
|
|
411
|
+
readonly notificationSessionController: NotificationSessionController | undefined;
|
|
397
412
|
readonly taskDepth: number;
|
|
398
413
|
readonly yieldQueue: YieldQueue;
|
|
399
414
|
readonly configWarnings: string[];
|
|
@@ -435,6 +450,12 @@ export declare class AgentSession {
|
|
|
435
450
|
setStandingResolveHandler(handler: ((input: unknown) => Promise<unknown> | unknown) | null): void;
|
|
436
451
|
/** Provider-scoped mutable state store for transport/session caches. */
|
|
437
452
|
get providerSessionState(): Map<string, ProviderSessionState>;
|
|
453
|
+
/** Suspend provider state without closing it while a temporary model is active. */
|
|
454
|
+
beginTemporaryProviderSessionScope(reason: TemporaryModelReason): TemporaryProviderSessionScope;
|
|
455
|
+
/** Restore a temporary scope, unwinding any auto-owned scopes above it. */
|
|
456
|
+
restoreTemporaryProviderSessionScope(token: TemporaryProviderSessionScope): boolean;
|
|
457
|
+
/** Promote a temporary scope. The suspended provider state is permanently closed. */
|
|
458
|
+
commitTemporaryProviderSessionScope(token: TemporaryProviderSessionScope): boolean;
|
|
438
459
|
buildForkContextSeed(options: ForkContextSeedOptions): Promise<ForkContextSeed>;
|
|
439
460
|
getHindsightSessionState(): HindsightSessionState | undefined;
|
|
440
461
|
setHindsightSessionState(state: HindsightSessionState | undefined): HindsightSessionState | undefined;
|
|
@@ -567,6 +588,12 @@ export declare class AgentSession {
|
|
|
567
588
|
* no fold target exists.
|
|
568
589
|
*/
|
|
569
590
|
hasForegroundBashBackgroundRequestHandler(): boolean;
|
|
591
|
+
/** Set the SDK permission policy used by guarded ACP tool execution. */
|
|
592
|
+
setSdkPermissionMode(mode: "prompt" | "allow" | "deny"): void;
|
|
593
|
+
/** Current SDK permission policy for guarded ACP tool execution. */
|
|
594
|
+
get sdkPermissionMode(): "prompt" | "allow" | "deny";
|
|
595
|
+
/** Register or clear the SDK reverse permission provider for this session. */
|
|
596
|
+
setSdkPermissionProvider(provider: ((toolCall: ClientBridgePermissionToolCall, options: ClientBridgePermissionOption[], signal?: AbortSignal) => Promise<ClientBridgePermissionOutcome>) | undefined): void;
|
|
570
597
|
/**
|
|
571
598
|
* Ask the active managed foreground bash call to return as a background job.
|
|
572
599
|
* Returns false when no supported foreground tool is currently backgroundable.
|
|
@@ -613,10 +640,6 @@ export declare class AgentSession {
|
|
|
613
640
|
* This allows /mcp add/remove/reauth to take effect without restarting the session.
|
|
614
641
|
*/
|
|
615
642
|
refreshMCPTools(mcpTools: CustomTool[]): Promise<void>;
|
|
616
|
-
/**
|
|
617
|
-
* Replace RPC host-owned tools and refresh the active tool set before the next model call.
|
|
618
|
-
*/
|
|
619
|
-
refreshRpcHostTools(rpcTools: AgentTool[]): Promise<void>;
|
|
620
643
|
/**
|
|
621
644
|
* Refresh plugin sub-skill tools after workflow/sub-skill activation or phase changes.
|
|
622
645
|
*/
|
|
@@ -657,7 +680,25 @@ export declare class AgentSession {
|
|
|
657
680
|
get scopedModels(): ReadonlyArray<ScopedModelSelection>;
|
|
658
681
|
/** Prompt templates */
|
|
659
682
|
getPlanModeState(): PlanModeState | undefined;
|
|
683
|
+
/** Live SDK configuration values exposed through the session query surface. */
|
|
684
|
+
getSdkConfigItems(): Record<string, string>;
|
|
660
685
|
setPlanModeState(state: PlanModeState | undefined): void;
|
|
686
|
+
invokeSkill(name: string, args?: string): Promise<{
|
|
687
|
+
name: string;
|
|
688
|
+
path: string;
|
|
689
|
+
args?: string;
|
|
690
|
+
lineCount?: number;
|
|
691
|
+
}>;
|
|
692
|
+
setSdkPlanMode(on: boolean): PlanModeState | undefined;
|
|
693
|
+
operateGoal(op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string): Promise<unknown>;
|
|
694
|
+
getTranscript(): Array<{
|
|
695
|
+
id: string;
|
|
696
|
+
role: string;
|
|
697
|
+
textSummary: string;
|
|
698
|
+
ts: string;
|
|
699
|
+
body: string;
|
|
700
|
+
}>;
|
|
701
|
+
getTranscriptBody(entryId: string): string | undefined;
|
|
661
702
|
getGoalModeState(): GoalModeState | undefined;
|
|
662
703
|
setGoalModeState(state: GoalModeState | undefined): void;
|
|
663
704
|
getWorkflowGateEmitter(): WorkflowGateEmitter | undefined;
|
|
@@ -738,6 +779,7 @@ export declare class AgentSession {
|
|
|
738
779
|
*/
|
|
739
780
|
sendUserMessage(content: string | (TextContent | ImageContent)[], options?: {
|
|
740
781
|
deliverAs?: "steer" | "followUp";
|
|
782
|
+
onPreflightAccepted?: () => void;
|
|
741
783
|
}): Promise<void>;
|
|
742
784
|
/**
|
|
743
785
|
* Clear queued messages and return them.
|
|
@@ -749,6 +791,12 @@ export declare class AgentSession {
|
|
|
749
791
|
};
|
|
750
792
|
/** Number of pending messages (includes steering, follow-up, and next-turn messages) */
|
|
751
793
|
get queuedMessageCount(): number;
|
|
794
|
+
/** Typed pending-message counts per queue (steering, follow-up, next-turn). */
|
|
795
|
+
get pendingMessageCounts(): {
|
|
796
|
+
steering: number;
|
|
797
|
+
followUp: number;
|
|
798
|
+
nextTurn: number;
|
|
799
|
+
};
|
|
752
800
|
/** Whether the agent has queued steering messages that a `user_interrupt`
|
|
753
801
|
* abort would resume into (steer-on-interrupt). Drives the Esc-on-steer UX:
|
|
754
802
|
* the first Esc consumes the steer and auto-continues, a second Esc aborts. */
|
|
@@ -779,6 +827,14 @@ export declare class AgentSession {
|
|
|
779
827
|
getTodoPhases(): TodoPhase[];
|
|
780
828
|
setTodoPhases(phases: TodoPhase[]): void;
|
|
781
829
|
applyCompactionPostAppendForTests(compactionEntryId: string, firstKeptEntryId: string, fromExtension?: boolean): Promise<CompactionEntry | undefined>;
|
|
830
|
+
/** Read-only test seam for active mid-run EventStream drain barriers. */
|
|
831
|
+
get activeMidRunBarrierCountForTests(): number;
|
|
832
|
+
/** Read-only test seam for active mid-run maintenance invocations. */
|
|
833
|
+
get activeMidRunMaintenanceCountForTests(): number;
|
|
834
|
+
/** Test seam: drive the cooperative mid-run maintenance checkpoint directly. */
|
|
835
|
+
runMidRunMaintenanceForTests(context: AgentContext, lifecycle?: MidRunMaintenanceLifecycle): Promise<MidRunMaintenanceOutcome>;
|
|
836
|
+
/** Test seam: estimate mid-run context tokens for a given context view. */
|
|
837
|
+
estimateMidRunContextTokensForTests(messages: readonly AgentMessage[]): number;
|
|
782
838
|
/**
|
|
783
839
|
* Abort current operation and wait for agent to become idle.
|
|
784
840
|
*/
|
|
@@ -824,9 +880,28 @@ export declare class AgentSession {
|
|
|
824
880
|
setModel(model: Model, role?: string, options?: {
|
|
825
881
|
selector?: string;
|
|
826
882
|
thinkingLevel?: ThinkingLevel;
|
|
883
|
+
cause?: ModelChangeCause;
|
|
827
884
|
}): Promise<void>;
|
|
828
885
|
setActiveModelProfile(name: string | undefined): void;
|
|
829
886
|
getActiveModelProfile(): string | undefined;
|
|
887
|
+
/** Return the persisted configured fallback selectors for a model role. */
|
|
888
|
+
getConfiguredModelChain(role: string): readonly string[] | undefined;
|
|
889
|
+
/** Persist the configured fallback selectors for a model role. */
|
|
890
|
+
setConfiguredModelChain(role: string, entries: readonly string[], origin: string, identity?: string, explicitHead?: boolean): void;
|
|
891
|
+
/**
|
|
892
|
+
* Replace only the in-memory default fallback controller. Used when startup
|
|
893
|
+
* falls through an unavailable persisted chain to the global default, which
|
|
894
|
+
* must not mutate the persisted configured intent.
|
|
895
|
+
*/
|
|
896
|
+
setDefaultFallbackRuntimeModel(selector: string): void;
|
|
897
|
+
/**
|
|
898
|
+
* Seed default fallback state after guarded auth-aware model resolution skips chain entries.
|
|
899
|
+
* The configured chain's role, origin, and identity are retained by the controller.
|
|
900
|
+
*/
|
|
901
|
+
seedDefaultFallbackResolution(activeIndex: number, skips: Array<{
|
|
902
|
+
selector: string;
|
|
903
|
+
reason: string;
|
|
904
|
+
}>): void;
|
|
830
905
|
/**
|
|
831
906
|
* The model selector ("provider/id") that resume restores as the session
|
|
832
907
|
* default — the latest session-log `model_change` with role="default".
|
|
@@ -858,7 +933,13 @@ export declare class AgentSession {
|
|
|
858
933
|
*/
|
|
859
934
|
setModelTemporary(model: Model, thinkingLevel?: ThinkingLevel, options?: {
|
|
860
935
|
persistAsSessionDefault?: boolean;
|
|
861
|
-
|
|
936
|
+
cause?: ModelChangeCause;
|
|
937
|
+
reason?: TemporaryModelReason;
|
|
938
|
+
providerSessionScope?: TemporaryProviderSessionScope;
|
|
939
|
+
signal?: AbortSignal;
|
|
940
|
+
}): Promise<TemporaryProviderSessionScope | void>;
|
|
941
|
+
/** Set a durable per-session model from a control surface without exposing credential errors. */
|
|
942
|
+
setModelTemporaryForControl(model: Model, expectedSessionId?: string): Promise<boolean>;
|
|
862
943
|
setDefaultModelSelection(model: Model, thinkingLevel: ThinkingLevel | undefined): Promise<DefaultModelSelectionResult>;
|
|
863
944
|
/**
|
|
864
945
|
* Cycle to next/previous model.
|
|
@@ -885,6 +966,17 @@ export declare class AgentSession {
|
|
|
885
966
|
* Saves the effective metadata-clamped level to the session, and to settings when requested.
|
|
886
967
|
*/
|
|
887
968
|
setThinkingLevel(level: ThinkingLevel | undefined, persist?: boolean): void;
|
|
969
|
+
/**
|
|
970
|
+
* Set thinking level from a control surface. Global changes are durable or rolled back.
|
|
971
|
+
*/
|
|
972
|
+
setThinkingLevelForControl(level: ThinkingLevel, persist: boolean): Promise<void>;
|
|
973
|
+
getThinkingScopeForControl(): "session" | "global config";
|
|
974
|
+
getThinkingVisibility(): "visible" | "hidden";
|
|
975
|
+
setThinkingVisibility(visibility: "visible" | "hidden", persist?: boolean): void;
|
|
976
|
+
/**
|
|
977
|
+
* Set thinking visibility from a control surface. Global changes are durable or rolled back.
|
|
978
|
+
*/
|
|
979
|
+
setThinkingVisibilityForControl(visibility: "visible" | "hidden", persist: boolean): Promise<void>;
|
|
888
980
|
/**
|
|
889
981
|
* Cycle to next thinking level.
|
|
890
982
|
* @returns New level, or undefined if model doesn't support thinking
|
|
@@ -1190,6 +1282,7 @@ export declare class AgentSession {
|
|
|
1190
1282
|
estimateCount: number;
|
|
1191
1283
|
};
|
|
1192
1284
|
fetchUsageReports(signal?: AbortSignal): Promise<UsageReport[] | null>;
|
|
1285
|
+
fetchUsageReportsForControl(): Promise<UsageReport[] | null>;
|
|
1193
1286
|
/**
|
|
1194
1287
|
* Export session to HTML.
|
|
1195
1288
|
* @param outputPath Optional output path (defaults to session directory)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ResolvedThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
+
export type DefaultModelSelectionRollbackStage = "durable" | "session" | "live";
|
|
3
|
+
export declare const DEFAULT_MODEL_SELECTION_RECOVERY_MESSAGE = "Default model selection could not be completed after durable selection.";
|
|
4
|
+
export type DefaultModelSelectionRecovery = {
|
|
5
|
+
readonly message: string;
|
|
6
|
+
readonly rollback: {
|
|
7
|
+
readonly disposition: "restored" | "partial" | "unknown";
|
|
8
|
+
readonly failures: readonly {
|
|
9
|
+
readonly stage: DefaultModelSelectionRollbackStage;
|
|
10
|
+
readonly message: string;
|
|
11
|
+
}[];
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export interface DefaultModelSelectionResult {
|
|
15
|
+
readonly provider: string;
|
|
16
|
+
readonly modelId: string;
|
|
17
|
+
readonly thinkingLevel: ResolvedThinkingLevel;
|
|
18
|
+
}
|
|
19
|
+
export declare function parseDefaultModelSelectionRecovery(value: unknown): DefaultModelSelectionRecovery | undefined;
|
|
20
|
+
export declare class DefaultModelSelectionRecoveryError extends Error {
|
|
21
|
+
readonly name = "DefaultModelSelectionRecoveryError";
|
|
22
|
+
readonly code = "default_model_selection_recovery";
|
|
23
|
+
readonly recovery: DefaultModelSelectionRecovery;
|
|
24
|
+
constructor(_message: string, recovery: DefaultModelSelectionRecovery);
|
|
25
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export type FallbackTriggerClass = "rate_limit" | "quota" | "auth" | "server" | "other";
|
|
2
|
+
/** Immutable configured fallback intent. Transient attempt state never belongs here. */
|
|
3
|
+
export interface ConfiguredFallbackChain {
|
|
4
|
+
role: string;
|
|
5
|
+
entries: readonly string[];
|
|
6
|
+
origin: string;
|
|
7
|
+
identity?: string;
|
|
8
|
+
explicitHead: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface FallbackFailure {
|
|
11
|
+
selector: string;
|
|
12
|
+
triggerClass: FallbackTriggerClass;
|
|
13
|
+
reason: string;
|
|
14
|
+
}
|
|
15
|
+
export type FallbackFailureResult = "retry" | "advance" | "exhausted";
|
|
16
|
+
/**
|
|
17
|
+
* In-memory policy state for one fallback-chain scope. A controller is deliberately
|
|
18
|
+
* not serializable: configured chain intent is durable, current position is not.
|
|
19
|
+
*/
|
|
20
|
+
export declare class FallbackChainController {
|
|
21
|
+
#private;
|
|
22
|
+
readonly chain: ConfiguredFallbackChain;
|
|
23
|
+
readonly maxAttempts: number;
|
|
24
|
+
activeIndex: number;
|
|
25
|
+
attemptsUsed: number;
|
|
26
|
+
tried: FallbackFailure[];
|
|
27
|
+
skips: Array<{
|
|
28
|
+
selector: string;
|
|
29
|
+
reason: string;
|
|
30
|
+
}>;
|
|
31
|
+
exhaustedForTurn: boolean;
|
|
32
|
+
constructor(chain: ConfiguredFallbackChain, maxAttempts: number);
|
|
33
|
+
currentSelector(): string | undefined;
|
|
34
|
+
onResolutionSkip(reason: string): boolean;
|
|
35
|
+
/** Charge an upstream request at its concrete transport boundary. */
|
|
36
|
+
onAttemptStarted(): void;
|
|
37
|
+
/** Start a logically new request without losing its sticky selected entry. */
|
|
38
|
+
resetAttemptBudget(): void;
|
|
39
|
+
/** Seed a controller from auth-aware resolution without charging requests. */
|
|
40
|
+
seedResolution(activeIndex: number, skips: Array<{
|
|
41
|
+
selector: string;
|
|
42
|
+
reason: string;
|
|
43
|
+
}>): void;
|
|
44
|
+
onAttemptFailure(triggerClass: FallbackTriggerClass, reason: string): FallbackFailureResult;
|
|
45
|
+
advance(): boolean;
|
|
46
|
+
isExhausted(): boolean;
|
|
47
|
+
resetForNewTurn(): void;
|
|
48
|
+
resetSticky(): void;
|
|
49
|
+
}
|
|
50
|
+
export declare function cappedExponentialWithFullJitter(baseDelayMs: number, maxDelayMs: number, attemptK: number, random?: () => number): number;
|
|
51
|
+
/** Retry-After is intentionally uncapped. */
|
|
52
|
+
export declare function effectiveFallbackDelay(baseDelayMs: number, maxDelayMs: number, attemptK: number, retryAfterMs: number | undefined, random?: () => number): number;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type AgentMessage } from "@gajae-code/agent-core";
|
|
2
|
+
import type { ConfiguredModelChainEntry as SharedConfiguredModelChainEntry } from "@gajae-code/agent-core/compaction";
|
|
2
3
|
import type { ImageContent, Message, MessageAttribution, ServiceTier, TextContent } from "@gajae-code/ai";
|
|
3
4
|
import type { TtsrInjectionRecord } from "../export/ttsr";
|
|
4
5
|
import { ArtifactManager } from "./artifacts";
|
|
@@ -97,6 +98,9 @@ export interface ModelChangeEntry extends SessionEntryBase {
|
|
|
97
98
|
/** Effective thinking level when the change was recorded. */
|
|
98
99
|
thinkingLevel?: string | null;
|
|
99
100
|
}
|
|
101
|
+
/** Persisted configured fallback chain for one model role. */
|
|
102
|
+
export type ConfiguredModelChainEntry = SharedConfiguredModelChainEntry;
|
|
103
|
+
export type ConfiguredModelChain = Pick<ConfiguredModelChainEntry, "role" | "entries" | "origin" | "identity" | "explicitHead" | "cleared">;
|
|
100
104
|
export interface ServiceTierChangeEntry extends SessionEntryBase {
|
|
101
105
|
type: "service_tier_change";
|
|
102
106
|
serviceTier: ServiceTier | null;
|
|
@@ -206,9 +210,27 @@ export interface CustomMessageEntry<T = unknown> extends SessionEntryBase {
|
|
|
206
210
|
evictedContent?: EvictedContentMarker;
|
|
207
211
|
}
|
|
208
212
|
/** Session entry - has id/parentId for tree structure (returned by "read" methods in SessionManager) */
|
|
209
|
-
export type SessionEntry = SessionMessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | ServiceTierChangeEntry | CompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | TtsrInjectionEntry | MCPToolSelectionEntry | SessionInitEntry | ModeChangeEntry;
|
|
213
|
+
export type SessionEntry = SessionMessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | ServiceTierChangeEntry | CompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | TtsrInjectionEntry | MCPToolSelectionEntry | SessionInitEntry | ModeChangeEntry | ConfiguredModelChainEntry;
|
|
210
214
|
/** Raw file entry (includes header) */
|
|
211
215
|
export type FileEntry = SessionHeader | SessionEntry;
|
|
216
|
+
export type DefaultModelSelectionStage = {
|
|
217
|
+
readonly entryRevision: number;
|
|
218
|
+
readonly headerExportRevision: number;
|
|
219
|
+
readonly sessionId: string;
|
|
220
|
+
readonly sessionFile: string | undefined;
|
|
221
|
+
readonly entries: readonly FileEntry[];
|
|
222
|
+
readonly tempPath: string | undefined;
|
|
223
|
+
readonly persistsToExistingFile: boolean;
|
|
224
|
+
};
|
|
225
|
+
export type DefaultModelSelectionPromotion = {
|
|
226
|
+
readonly kind: "promoted";
|
|
227
|
+
} | {
|
|
228
|
+
readonly kind: "not_promoted";
|
|
229
|
+
readonly error?: Error;
|
|
230
|
+
} | {
|
|
231
|
+
readonly kind: "unknown";
|
|
232
|
+
readonly error: Error;
|
|
233
|
+
};
|
|
212
234
|
/** Tree node for getTree() - defensive copy of session structure */
|
|
213
235
|
export interface SessionTreeNode {
|
|
214
236
|
entry: SessionEntry;
|
|
@@ -222,6 +244,8 @@ export interface SessionContext {
|
|
|
222
244
|
serviceTier?: ServiceTier;
|
|
223
245
|
/** Model roles: { default: "provider/modelId", small: "provider/modelId", ... } */
|
|
224
246
|
models: Record<string, string>;
|
|
247
|
+
/** Configured fallback chains for model roles on the active branch. */
|
|
248
|
+
configuredModelChains: Record<string, ConfiguredModelChain>;
|
|
225
249
|
/** Names of TTSR rules that have been injected this session */
|
|
226
250
|
injectedTtsrRules: string[];
|
|
227
251
|
/** Rich TTSR rule injection records for repeat resume. */
|
|
@@ -269,6 +293,21 @@ export interface StrictSessionOpenFailure {
|
|
|
269
293
|
kind: "error";
|
|
270
294
|
reason: ResumeTailError["reason"] | "identity-mismatch";
|
|
271
295
|
}
|
|
296
|
+
/** Exact transcript bytes and authority captured from one descriptor-bound read. */
|
|
297
|
+
export interface CapturedSessionTranscriptSnapshot {
|
|
298
|
+
sourcePath: string;
|
|
299
|
+
identity: ResumeSessionIdentity;
|
|
300
|
+
content: Uint8Array;
|
|
301
|
+
storage: SessionStorage;
|
|
302
|
+
}
|
|
303
|
+
export type StrictSessionCaptureResult = {
|
|
304
|
+
kind: "captured";
|
|
305
|
+
snapshot: CapturedSessionTranscriptSnapshot;
|
|
306
|
+
} | ResumeTailError;
|
|
307
|
+
export type StrictSessionForkResult = {
|
|
308
|
+
kind: "forked";
|
|
309
|
+
manager: SessionManager;
|
|
310
|
+
} | StrictSessionOpenFailure;
|
|
272
311
|
/** Result of opening an inspected session without create-or-rewrite fallback. */
|
|
273
312
|
export type StrictSessionOpenResult = StrictSessionOpenSuccess | StrictSessionOpenFailure;
|
|
274
313
|
export interface SessionInfo {
|
|
@@ -410,6 +449,7 @@ interface SessionManagerStateSnapshot {
|
|
|
410
449
|
titleSource: "auto" | "user" | undefined;
|
|
411
450
|
sessionFile: string | undefined;
|
|
412
451
|
flushed: boolean;
|
|
452
|
+
ensuredOnDisk: boolean;
|
|
413
453
|
needsFullRewriteOnNextPersist: boolean;
|
|
414
454
|
fileEntries: FileEntry[];
|
|
415
455
|
materializedFileEntries: FileEntry[];
|
|
@@ -459,6 +499,11 @@ export declare class SessionManager {
|
|
|
459
499
|
*/
|
|
460
500
|
moveTo(newCwd: string): Promise<void>;
|
|
461
501
|
isPersisted(): boolean;
|
|
502
|
+
stageDefaultModelSelection(model: string, thinkingLevel: string | undefined, options?: {
|
|
503
|
+
readonly appendThinkingLevel: boolean;
|
|
504
|
+
}): Promise<DefaultModelSelectionStage>;
|
|
505
|
+
promoteDefaultModelSelection(stage: DefaultModelSelectionStage): DefaultModelSelectionPromotion;
|
|
506
|
+
discardDefaultModelSelectionStage(stage: DefaultModelSelectionStage): Promise<void>;
|
|
462
507
|
/**
|
|
463
508
|
* Force-persist all current entries to disk, even when no assistant message exists yet.
|
|
464
509
|
* Used by ACP mode where session/new must create a discoverable session immediately.
|
|
@@ -543,6 +588,8 @@ export declare class SessionManager {
|
|
|
543
588
|
*/
|
|
544
589
|
setSessionName(name: string, source?: "auto" | "user"): Promise<boolean>;
|
|
545
590
|
_persist(entry: SessionEntry): void;
|
|
591
|
+
/** Append a configured fallback chain as child of current leaf, then advance leaf. Returns entry id. */
|
|
592
|
+
appendConfiguredModelChain(chain: ConfiguredModelChain): string;
|
|
546
593
|
/** Append a message as child of current leaf, then advance leaf. Returns entry id.
|
|
547
594
|
* Does not allow writing CompactionSummaryMessage and BranchSummaryMessage directly.
|
|
548
595
|
* Reason: we want these to be top-level entries in the session, not message session entries,
|
|
@@ -713,6 +760,8 @@ export declare class SessionManager {
|
|
|
713
760
|
* Resolve the canonical default session directory for a cwd.
|
|
714
761
|
*/
|
|
715
762
|
static getDefaultSessionDir(cwd: string, agentDir?: string, storage?: SessionStorage): string;
|
|
763
|
+
/** Resolve the default session directory without creating or migrating storage. */
|
|
764
|
+
static getDefaultSessionDirReadOnly(cwd: string, agentDir?: string): string;
|
|
716
765
|
/**
|
|
717
766
|
* Create a new session.
|
|
718
767
|
* @param cwd Working directory (stored in session header)
|
|
@@ -734,6 +783,14 @@ export declare class SessionManager {
|
|
|
734
783
|
* List sessions for the resume picker without recovery or other maintenance writes.
|
|
735
784
|
*/
|
|
736
785
|
static listForResumePickerReadOnly(cwd: string, sessionDir?: string, storage?: SessionStorage): Promise<SessionInfo[]>;
|
|
786
|
+
/** Capture exact source content for a strict fork without granting write ownership. */
|
|
787
|
+
static captureTranscriptStrict(filePath: string, storage?: SessionStorage): StrictSessionCaptureResult;
|
|
788
|
+
/**
|
|
789
|
+
* Fork strictly from captured source bytes. The source pathname is used only to
|
|
790
|
+
* revalidate captured authority before destination initialization and transcript
|
|
791
|
+
* persistence; destination history always comes from the captured bytes.
|
|
792
|
+
*/
|
|
793
|
+
static forkFromCaptured(snapshot: CapturedSessionTranscriptSnapshot, cwd: string, sessionDir?: string): Promise<StrictSessionForkResult>;
|
|
737
794
|
/** Inspect a selected session without acquiring write-capable ownership. */
|
|
738
795
|
static inspectSessionTailReadOnly(filePath: string, storage?: SessionStorage): Promise<ResumeTailInspection>;
|
|
739
796
|
/**
|
|
@@ -2,9 +2,40 @@ import type { AuthCredentialIfAbsentReason, AuthCredentialIfAbsentSnapshotResult
|
|
|
2
2
|
import type { ModelRegistry } from "../config/model-registry";
|
|
3
3
|
import { type CredentialDiscoveryResult, type CredentialOrigin, type DiscoveryOptions, type ImportableCredential } from "./credential-import";
|
|
4
4
|
export declare const CREDENTIAL_AUTO_IMPORT_ROTATION_WARNING = "Refreshing in gjc may log out the Claude/Codex CLI because OAuth refresh tokens can rotate.";
|
|
5
|
+
export declare const CREDENTIAL_AUTO_IMPORT_PERSISTENCE_WARNING = "Credential import preference could not be saved; external credentials may be offered again.";
|
|
6
|
+
export declare const CREDENTIAL_AUTO_IMPORT_REFRESH_WARNING = "Imported credentials were saved, but provider availability could not be refreshed.";
|
|
7
|
+
export declare const CREDENTIAL_AUTO_IMPORT_DISCOVERY_WARNING = "External credential discovery could not be completed. Use /provider to import credentials manually.";
|
|
8
|
+
export declare const CREDENTIAL_AUTO_IMPORT_RETRY_WARNING = "Some external credentials could not be imported. Use /provider to retry.";
|
|
9
|
+
export declare const CREDENTIAL_AUTO_IMPORT_STATE_UNREADABLE_WARNING = "Credential import preference could not be read. External credential discovery was skipped; use /provider to import credentials manually.";
|
|
5
10
|
export type CredentialAutoImportSourceLabel = "claude-code-file" | "claude-code-keychain" | "codex-file";
|
|
6
11
|
export type CredentialAutoImportTrigger = "startup" | "bare-login" | "setup-cli";
|
|
12
|
+
export type InitialImportResolution = "accepted" | "declined";
|
|
13
|
+
export type CredentialAutoImportStateProblem = "invalid-initial-import-resolution" | "invalid-last-import-version" | "malformed-json" | "malformed-root";
|
|
14
|
+
export interface CredentialAutoImportStateFile {
|
|
15
|
+
lastImportVersion?: string;
|
|
16
|
+
initialImportResolution?: InitialImportResolution;
|
|
17
|
+
}
|
|
18
|
+
export interface CredentialAutoImportStateReadResult {
|
|
19
|
+
state: CredentialAutoImportStateFile;
|
|
20
|
+
problems: CredentialAutoImportStateProblem[];
|
|
21
|
+
unreadable: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface CredentialAutoImportStateMutation {
|
|
24
|
+
lastImportVersion?: string;
|
|
25
|
+
initialImportResolution?: InitialImportResolution;
|
|
26
|
+
}
|
|
27
|
+
export interface CredentialAutoImportStateStore {
|
|
28
|
+
read: () => Promise<CredentialAutoImportStateReadResult>;
|
|
29
|
+
write: (mutation: CredentialAutoImportStateMutation) => Promise<boolean>;
|
|
30
|
+
}
|
|
31
|
+
export interface CredentialAutoImportStateStoreDependencies {
|
|
32
|
+
withFileLock?: <T>(filePath: string, transaction: () => Promise<T>) => Promise<T>;
|
|
33
|
+
rename?: (oldPath: string, newPath: string) => Promise<void>;
|
|
34
|
+
}
|
|
7
35
|
export declare function getCredentialAutoImportStatePath(agentDir?: string): string;
|
|
36
|
+
export declare function createCredentialAutoImportStateStore(agentDir?: string, dependencies?: CredentialAutoImportStateStoreDependencies): CredentialAutoImportStateStore;
|
|
37
|
+
export declare function readCredentialAutoImportState(agentDir?: string): Promise<CredentialAutoImportStateReadResult>;
|
|
38
|
+
export declare function isCredentialAutoImportStateResolvedForVersion(state: CredentialAutoImportStateFile, version: string): boolean;
|
|
8
39
|
export declare function readCredentialImportMarker(agentDir?: string): Promise<string | undefined>;
|
|
9
40
|
export declare function writeCredentialImportMarker(version: string, agentDir?: string): Promise<boolean>;
|
|
10
41
|
export declare enum CredentialAutoImportFailureClass {
|
|
@@ -37,6 +68,9 @@ export interface CredentialAutoImportResult {
|
|
|
37
68
|
discovery?: CredentialDiscoveryResult;
|
|
38
69
|
globalDiscoveryFailure?: CredentialAutoImportFailure;
|
|
39
70
|
}
|
|
71
|
+
export declare function formatCredentialAutoImportCandidateLabel(candidate: Pick<ImportableCredential, "provider" | "origin">): string;
|
|
72
|
+
export declare function formatCredentialAutoImportPrompt(candidates: readonly Pick<ImportableCredential, "provider" | "origin">[]): string;
|
|
73
|
+
export declare function logCredentialAutoImportFailures(trigger: CredentialAutoImportTrigger, failures: readonly Pick<CredentialAutoImportFailure, "failureClass">[]): void;
|
|
40
74
|
export type CredentialAutoImportAuthStorage = Pick<AuthStorage, "importCredentialIfAbsent">;
|
|
41
75
|
export interface CredentialAutoImportOptions {
|
|
42
76
|
authStorage: CredentialAutoImportAuthStorage;
|
|
@@ -48,16 +82,12 @@ export interface CredentialAutoImportOptions {
|
|
|
48
82
|
export declare function runExternalCredentialAutoImport({ authStorage, discover, discoveryOptions, }: CredentialAutoImportOptions): Promise<CredentialAutoImportResult>;
|
|
49
83
|
export declare function buildCredentialAutoImportNotice(result: Pick<CredentialAutoImportResult, "imported">): string | undefined;
|
|
50
84
|
export declare function formatCredentialAutoImportResult(result: CredentialAutoImportResult): string[];
|
|
51
|
-
export interface CredentialImportMarkerStore {
|
|
52
|
-
read: () => Promise<string | undefined> | string | undefined;
|
|
53
|
-
write: (version: string) => Promise<boolean> | boolean;
|
|
54
|
-
}
|
|
55
85
|
export interface StartupCredentialAutoImportOptions {
|
|
56
86
|
authStorage: CredentialAutoImportOptions["authStorage"];
|
|
57
87
|
modelRegistry: Pick<ModelRegistry, "refresh">;
|
|
58
88
|
discover?: CredentialAutoImportOptions["discover"];
|
|
59
89
|
version?: string;
|
|
60
90
|
agentDir?: string;
|
|
61
|
-
|
|
91
|
+
stateStore?: CredentialAutoImportStateStore;
|
|
62
92
|
}
|
|
63
|
-
export declare function runStartupCredentialAutoImportIfNeeded({ authStorage: activeAuthStorage, modelRegistry: activeModelRegistry, discover, version, agentDir,
|
|
93
|
+
export declare function runStartupCredentialAutoImportIfNeeded({ authStorage: activeAuthStorage, modelRegistry: activeModelRegistry, discover, version, agentDir, stateStore, }: StartupCredentialAutoImportOptions): Promise<string | undefined>;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* through the extension/runner/controller wiring. A session has at most one
|
|
7
7
|
* source; registering returns a disposer.
|
|
8
8
|
*/
|
|
9
|
-
import type { WorkflowGateEmitter } from "../modes/shared/agent-wire/
|
|
9
|
+
import type { WorkflowGateEmitter } from "../modes/shared/agent-wire/workflow-gate-broker";
|
|
10
10
|
import type { AskAnswerSource } from "./index";
|
|
11
11
|
/** Register `source` for `sessionId`. Returns a disposer that clears it. */
|
|
12
12
|
export declare function registerAskAnswerSource(sessionId: string, source: AskAnswerSource): () => void;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Offline stealth-detector benchmark model.
|
|
3
|
+
*
|
|
4
|
+
* Pure, deterministic logic for the anti-detection benchmark suite: it converts
|
|
5
|
+
* a browser-collected fingerprint probe into a normalized per-detector verdict,
|
|
6
|
+
* implements the falsifiable CI gate (see plan Phase 1 / R-T3), and renders a
|
|
7
|
+
* before/after report. No browser or network access lives here so it can be
|
|
8
|
+
* unit-tested deterministically; the harness that drives the real browser tool
|
|
9
|
+
* against vendored detector fixtures feeds its output into these functions.
|
|
10
|
+
*/
|
|
11
|
+
export type SignalStatus = "pass" | "fail";
|
|
12
|
+
/** A single boolean fingerprint signal, e.g. "navigator.webdriver is undefined". */
|
|
13
|
+
export interface DetectorSignal {
|
|
14
|
+
/** Stable identifier, used to diff across runs. */
|
|
15
|
+
id: string;
|
|
16
|
+
/** Human-readable label for the report. */
|
|
17
|
+
label: string;
|
|
18
|
+
/** `pass` means the signal looks human; `fail` means it leaks automation. */
|
|
19
|
+
status: SignalStatus;
|
|
20
|
+
/** Optional observed value for debugging. */
|
|
21
|
+
detail?: string;
|
|
22
|
+
}
|
|
23
|
+
export type AutomatedVerdict = "human" | "bot" | "unknown";
|
|
24
|
+
/** Normalized result for one detector (e.g. bot.sannysoft, CreepJS). */
|
|
25
|
+
export interface DetectorResult {
|
|
26
|
+
detector: string;
|
|
27
|
+
signals: DetectorSignal[];
|
|
28
|
+
/** Overall automated/not classification when the detector exposes one. */
|
|
29
|
+
automatedVerdict: AutomatedVerdict;
|
|
30
|
+
/** Absolute trust score (observability-only, never a hard gate). */
|
|
31
|
+
trustScore: number | null;
|
|
32
|
+
}
|
|
33
|
+
/** Shape emitted by the offline probe fixture on `window.__stealthProbe`. */
|
|
34
|
+
export interface RawProbe {
|
|
35
|
+
detector: string;
|
|
36
|
+
signals: Array<{
|
|
37
|
+
id: string;
|
|
38
|
+
label: string;
|
|
39
|
+
pass: boolean;
|
|
40
|
+
detail?: string;
|
|
41
|
+
}>;
|
|
42
|
+
automatedVerdict?: AutomatedVerdict;
|
|
43
|
+
trustScore?: number | null;
|
|
44
|
+
}
|
|
45
|
+
/** Convert a raw browser-collected probe into a normalized {@link DetectorResult}. */
|
|
46
|
+
export declare function parseProbe(raw: RawProbe): DetectorResult;
|
|
47
|
+
export interface GateOutcome {
|
|
48
|
+
pass: boolean;
|
|
49
|
+
reasons: string[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Falsifiable CI gate (plan Phase 1 / R-T3, R-C1, R-C2):
|
|
53
|
+
* (a) zero failing signals in the current run, AND
|
|
54
|
+
* current pass-count >= baseline pass-count (no silent regression), AND
|
|
55
|
+
* (b) either at least one signal that failed at baseline now passes,
|
|
56
|
+
* OR the baseline was already all-green (empty-gap regression lock).
|
|
57
|
+
* The absolute `trustScore` is never consulted here; it is observability-only.
|
|
58
|
+
*/
|
|
59
|
+
export declare function evaluateGate(baseline: DetectorResult, current: DetectorResult): GateOutcome;
|
|
60
|
+
/** Aggregate gate across every detector; passes only when all detectors pass. */
|
|
61
|
+
export declare function evaluateSuiteGate(baseline: readonly DetectorResult[], current: readonly DetectorResult[]): GateOutcome;
|
|
62
|
+
/** Render a deterministic before/after markdown report for one run. */
|
|
63
|
+
export declare function renderReport(baseline: readonly DetectorResult[], current: readonly DetectorResult[]): string;
|