@gajae-code/coding-agent 0.17.2 → 0.17.5
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 +267 -0
- package/dist/types/cli/daemon-cli.d.ts +3 -1
- package/dist/types/cli/github-release.d.ts +17 -0
- package/dist/types/cli/public-command-entry.d.ts +56 -0
- package/dist/types/cli/public-command-errors.d.ts +126 -0
- package/dist/types/cli/public-command-evidence.d.ts +99 -0
- package/dist/types/cli/public-command-help.d.ts +65 -0
- package/dist/types/cli/public-command-registry.d.ts +69 -0
- package/dist/types/cli/session-picker.d.ts +1 -1
- package/dist/types/cli/setup-cli.d.ts +1 -0
- package/dist/types/cli/skills-cli.d.ts +5 -0
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/commands/daemon.d.ts +4 -50
- package/dist/types/commands/sdk.d.ts +20 -37
- package/dist/types/commands/setup.d.ts +3 -0
- package/dist/types/commands/skills.d.ts +9 -0
- package/dist/types/config/autorouting-tier-map.d.ts +1049 -3
- package/dist/types/config/file-lock.d.ts +13 -3
- package/dist/types/config/model-profile-activation.d.ts +45 -1
- package/dist/types/config/model-registry.d.ts +14 -3
- package/dist/types/config/model-resolver.d.ts +1 -1
- package/dist/types/config/settings-schema.d.ts +11 -0
- package/dist/types/coordinator-mcp/question-state.d.ts +6 -1
- package/dist/types/daemon/operator-contract.d.ts +5 -1
- package/dist/types/eval/js/worker-protocol.d.ts +2 -0
- package/dist/types/exec/bash-executor.d.ts +2 -0
- package/dist/types/extensibility/extensions/types.d.ts +12 -0
- package/dist/types/extensibility/gjc-plugins/registry.d.ts +4 -0
- package/dist/types/extensibility/gjc-plugins/runtime-adapters.d.ts +11 -2
- package/dist/types/extensibility/runtime-skill-discovery.d.ts +18 -0
- package/dist/types/extensibility/shared-events.d.ts +3 -1
- package/dist/types/gjc-runtime/session-state-lock.d.ts +61 -0
- package/dist/types/gjc-runtime/state-writer.d.ts +14 -1
- package/dist/types/harness-control-plane/control-endpoint.d.ts +4 -1
- package/dist/types/harness-control-plane/finalize.d.ts +14 -3
- package/dist/types/internal-urls/embedded-protocol.d.ts +9 -0
- package/dist/types/internal-urls/index.d.ts +1 -0
- package/dist/types/internal-urls/parse.d.ts +9 -1
- package/dist/types/main.d.ts +23 -1
- package/dist/types/modes/acp/acp-agent.d.ts +55 -1
- package/dist/types/modes/acp/startup-provenance.d.ts +16 -0
- package/dist/types/modes/components/custom-provider-wizard.d.ts +19 -1
- package/dist/types/modes/components/session-selector.d.ts +5 -2
- package/dist/types/modes/components/user-message-selector.d.ts +5 -2
- package/dist/types/modes/controllers/command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +1 -1
- package/dist/types/modes/interactive-mode.d.ts +1 -1
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +11 -1
- package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +14 -1
- package/dist/types/modes/types.d.ts +2 -2
- package/dist/types/runtime/process-lifecycle.d.ts +2 -0
- package/dist/types/runtime-mcp/loader.d.ts +2 -0
- package/dist/types/runtime-mcp/manager.d.ts +69 -6
- package/dist/types/runtime-mcp/pool.d.ts +17 -0
- package/dist/types/runtime-mcp/redaction.d.ts +20 -0
- package/dist/types/runtime-mcp/startup-policy.d.ts +6 -0
- package/dist/types/runtime-mcp/tool-bridge.d.ts +9 -0
- package/dist/types/runtime-mcp/transports/http.d.ts +11 -0
- package/dist/types/sdk/broker/broker.d.ts +17 -4
- package/dist/types/sdk/broker/ensure.d.ts +3 -0
- package/dist/types/sdk/broker/identity.d.ts +5 -1
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +23 -3
- package/dist/types/sdk/broker/lifecycle.d.ts +15 -8
- package/dist/types/sdk/broker/managed-task-dag.d.ts +1335 -0
- package/dist/types/sdk/broker/managed-task-verification.d.ts +37 -0
- package/dist/types/sdk/broker/runtime.d.ts +1 -1
- package/dist/types/sdk/broker/session-index.d.ts +22 -3
- package/dist/types/sdk/broker/spawn-authority.d.ts +12 -0
- package/dist/types/sdk/broker/startup-failure.d.ts +4 -0
- package/dist/types/sdk/broker/stderr-drainer.d.ts +13 -0
- package/dist/types/sdk/bus/index.d.ts +19 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +7 -1
- package/dist/types/sdk/bus/telegram-daemon.d.ts +5 -0
- package/dist/types/sdk/cli/master-cli.d.ts +6 -10
- package/dist/types/sdk/cli/rows.d.ts +19 -1
- package/dist/types/sdk/cli/session-cli.d.ts +22 -5
- package/dist/types/sdk/client/client.d.ts +2 -0
- package/dist/types/sdk/guides/cli.d.ts +3 -4
- package/dist/types/sdk/guides/verify.d.ts +2 -0
- package/dist/types/sdk/host/host.d.ts +9 -0
- package/dist/types/sdk/host/session-runtime.d.ts +31 -0
- package/dist/types/sdk/host/types.d.ts +10 -0
- package/dist/types/sdk/index.d.ts +1 -0
- package/dist/types/sdk/prompt-deadline-flush.d.ts +85 -0
- package/dist/types/sdk/prompt-deadline-manager.d.ts +37 -0
- package/dist/types/sdk/prompt-tool-boundary.d.ts +73 -0
- package/dist/types/sdk/router/session-router.d.ts +2 -0
- package/dist/types/sdk/session.d.ts +3 -3
- package/dist/types/sdk/startup-capability.d.ts +2 -0
- package/dist/types/sdk/transport/relay.d.ts +1 -0
- package/dist/types/sdk/transport/serve-cli.d.ts +48 -4
- package/dist/types/sdk/transport/stdio.d.ts +5 -1
- package/dist/types/session/agent-session.d.ts +175 -23
- package/dist/types/session/fallback-chain-controller.d.ts +6 -6
- package/dist/types/session/fold-coordinator.d.ts +17 -3
- package/dist/types/session/internal/managed-session-storage.d.ts +7 -1
- package/dist/types/session/session-manager.d.ts +64 -1
- package/dist/types/session/session-work-lease.d.ts +14 -0
- package/dist/types/setup/model-onboarding-guidance.d.ts +1 -1
- package/dist/types/setup/provider-onboarding.d.ts +81 -1
- package/dist/types/task/types.d.ts +2 -0
- package/dist/types/tools/bash-interactive.d.ts +1 -0
- package/dist/types/tools/bash.d.ts +37 -11
- package/dist/types/tools/fetch.d.ts +10 -1
- package/dist/types/tools/job.d.ts +1 -1
- package/dist/types/tools/steer-fold.d.ts +31 -0
- package/dist/types/tools/subagent.d.ts +8 -1
- package/dist/types/utils/git.d.ts +28 -2
- package/dist/types/utils/mupdf-embedded.d.ts +2 -0
- package/dist/types/utils/mupdf.d.ts +4 -0
- package/dist/types/utils/session-title-generation.d.ts +6 -0
- package/dist/types/utils/title-generator.d.ts +11 -2
- package/dist/types/web/scrapers/types.d.ts +3 -0
- package/package.json +18 -10
- package/scripts/build-binary.ts +9 -3
- package/scripts/compile-args.ts +0 -9
- package/scripts/embed-mupdf.ts +52 -0
- package/scripts/generate-sdk-operation-inventory.ts +31 -1
- package/scripts/vendor-markit.ts +196 -0
- package/src/async/job-manager.ts +22 -1
- package/src/cli/daemon-cli.ts +53 -18
- package/src/cli/github-release.ts +87 -5
- package/src/cli/mcp-cli.ts +38 -4
- package/src/cli/public-command-entry.ts +450 -0
- package/src/cli/public-command-errors.ts +581 -0
- package/src/cli/public-command-evidence.ts +717 -0
- package/src/cli/public-command-help.ts +360 -0
- package/src/cli/public-command-registry.ts +541 -0
- package/src/cli/session-picker.ts +2 -1
- package/src/cli/setup-cli.ts +10 -1
- package/src/cli/skills-cli.ts +46 -2
- package/src/cli/stats-cli.ts +11 -1
- package/src/cli.ts +61 -1
- package/src/commands/daemon.ts +65 -69
- package/src/commands/sdk.ts +175 -117
- package/src/commands/setup.ts +2 -0
- package/src/commands/skills.ts +11 -0
- package/src/config/autorouting-tier-map.ts +543 -3
- package/src/config/file-lock.ts +206 -65
- package/src/config/model-discovery-manager.ts +4 -4
- package/src/config/model-profile-activation.ts +417 -66
- package/src/config/model-registry.ts +254 -36
- package/src/config/model-resolver.ts +6 -1
- package/src/config/settings-schema.ts +26 -2
- package/src/coordinator-mcp/policy.ts +10 -5
- package/src/coordinator-mcp/question-gate-codec.ts +17 -0
- package/src/coordinator-mcp/question-state.ts +179 -9
- package/src/coordinator-mcp/server.ts +521 -87
- package/src/coordinator-mcp/session-reaper.ts +6 -4
- package/src/crash/record-loader.ts +6 -2
- package/src/daemon/operator-contract.ts +26 -12
- package/src/defaults/gjc/skills/ultragoal/SKILL.md +1 -1
- package/src/eval/js/context-manager.ts +8 -8
- package/src/eval/js/worker-core.ts +9 -4
- package/src/eval/js/worker-protocol.ts +2 -0
- package/src/exec/bash-executor.ts +3 -0
- package/src/extensibility/extensions/runner.ts +52 -4
- package/src/extensibility/extensions/types.ts +10 -0
- package/src/extensibility/gjc-plugins/registry.ts +196 -37
- package/src/extensibility/gjc-plugins/runtime-adapters.ts +46 -8
- package/src/extensibility/runtime-skill-discovery.ts +61 -3
- package/src/extensibility/shared-events.ts +3 -1
- package/src/gjc-runtime/session-state-lock.ts +165 -24
- package/src/gjc-runtime/state-writer.ts +317 -6
- package/src/gjc-runtime/ultragoal-succession.ts +31 -3
- package/src/harness-control-plane/control-endpoint.ts +24 -6
- package/src/harness-control-plane/finalize.ts +312 -25
- package/src/harness-control-plane/owner.ts +323 -89
- package/src/internal-urls/docs-index.generated.ts +23 -20
- package/src/internal-urls/embedded-protocol.ts +83 -0
- package/src/internal-urls/index.ts +1 -0
- package/src/internal-urls/parse.ts +21 -1
- package/src/internal-urls/router.ts +4 -2
- package/src/main.ts +192 -74
- package/src/modes/acp/acp-agent.ts +973 -56
- package/src/modes/acp/startup-provenance.ts +59 -0
- package/src/modes/components/custom-provider-wizard.ts +308 -7
- package/src/modes/components/gjc-bundle-settings.ts +21 -1
- package/src/modes/components/oauth-selector.ts +9 -0
- package/src/modes/components/session-selector.ts +47 -4
- package/src/modes/components/tool-status-header.ts +72 -6
- package/src/modes/components/user-message-selector.ts +57 -15
- package/src/modes/controllers/command-controller.ts +58 -32
- package/src/modes/controllers/extension-ui-controller.ts +33 -7
- package/src/modes/controllers/input-controller.ts +4 -0
- package/src/modes/controllers/runtime-mcp-command-controller.ts +1 -1
- package/src/modes/controllers/selector-controller.ts +161 -15
- package/src/modes/interactive-mode.ts +21 -7
- package/src/modes/runtime-init.ts +1 -0
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +124 -7
- package/src/modes/shared/agent-wire/workflow-gate-types.ts +16 -2
- package/src/modes/types.ts +2 -2
- package/src/prompts/agent-fragments/browser-aside.md +1 -0
- package/src/prompts/system/title-system.md +1 -1
- package/src/prompts/tools/bash.md +1 -1
- package/src/prompts/tools/job.md +1 -1
- package/src/prompts/tools/read.md +2 -0
- package/src/runtime/network-prewarm-service.test.ts +36 -1
- package/src/runtime/network-prewarm-service.ts +28 -3
- package/src/runtime/process-lifecycle.ts +22 -11
- package/src/runtime-mcp/config.ts +16 -1
- package/src/runtime-mcp/loader.ts +6 -3
- package/src/runtime-mcp/manager.ts +845 -109
- package/src/runtime-mcp/pool.test.ts +31 -0
- package/src/runtime-mcp/pool.ts +304 -28
- package/src/runtime-mcp/redaction.ts +42 -0
- package/src/runtime-mcp/startup-policy.ts +7 -0
- package/src/runtime-mcp/tool-bridge.ts +71 -0
- package/src/runtime-mcp/transports/http.ts +108 -25
- package/src/sdk/acp/adapter.ts +27 -8
- package/src/sdk/broker/broker.ts +1431 -198
- package/src/sdk/broker/ensure.ts +21 -3
- package/src/sdk/broker/identity.ts +22 -1
- package/src/sdk/broker/lifecycle-ledger.ts +95 -31
- package/src/sdk/broker/lifecycle.ts +690 -141
- package/src/sdk/broker/managed-task-dag.ts +1927 -0
- package/src/sdk/broker/managed-task-verification.ts +642 -0
- package/src/sdk/broker/runtime.ts +1 -1
- package/src/sdk/broker/session-index.ts +97 -4
- package/src/sdk/broker/spawn-authority.ts +175 -14
- package/src/sdk/broker/startup-failure.ts +80 -1
- package/src/sdk/broker/stderr-drainer.ts +59 -0
- package/src/sdk/broker/transport.ts +1 -0
- package/src/sdk/bus/chat-daemon-control.ts +2 -2
- package/src/sdk/bus/chat-daemon-runtime.ts +1 -0
- package/src/sdk/bus/index.ts +707 -81
- package/src/sdk/bus/telegram-daemon-cli.ts +31 -2
- package/src/sdk/bus/telegram-daemon-contract.ts +7 -1
- package/src/sdk/bus/telegram-daemon.ts +10 -3
- package/src/sdk/cli/master-cli.ts +47 -36
- package/src/sdk/cli/rows.ts +30 -7
- package/src/sdk/cli/session-cli.ts +705 -184
- package/src/sdk/client/client.ts +18 -0
- package/src/sdk/guides/catalog.ts +2 -2
- package/src/sdk/guides/cli.ts +20 -62
- package/src/sdk/guides/verify.ts +14 -0
- package/src/sdk/host/host.ts +49 -5
- package/src/sdk/host/session-runtime.test.ts +184 -2
- package/src/sdk/host/session-runtime.ts +322 -101
- package/src/sdk/host/types.ts +12 -1
- package/src/sdk/host/websocket-transport.lifecycle.test.ts +84 -0
- package/src/sdk/host/websocket-transport.ts +40 -6
- package/src/sdk/index.ts +11 -0
- package/src/sdk/lifecycle/service.ts +2 -0
- package/src/sdk/prompt-deadline-flush.ts +356 -0
- package/src/sdk/prompt-deadline-manager.ts +133 -1
- package/src/sdk/prompt-tool-boundary.ts +121 -0
- package/src/sdk/protocol/operation-inventory.generated.json +106 -0
- package/src/sdk/router/session-router.ts +9 -1
- package/src/sdk/session.ts +763 -116
- package/src/sdk/startup-capability.ts +1 -1
- package/src/sdk/transport/relay.ts +71 -6
- package/src/sdk/transport/serve-cli.ts +397 -42
- package/src/sdk/transport/socket.ts +12 -11
- package/src/sdk/transport/stdio.ts +7 -3
- package/src/session/agent-session.ts +2472 -407
- package/src/session/fallback-chain-controller.ts +6 -7
- package/src/session/fold-coordinator.ts +24 -5
- package/src/session/internal/managed-session-scope.ts +68 -18
- package/src/session/internal/managed-session-storage.ts +334 -12
- package/src/session/session-manager.ts +382 -44
- package/src/session/session-work-lease.ts +34 -0
- package/src/setup/model-onboarding-guidance.ts +1 -1
- package/src/setup/provider-onboarding.ts +397 -24
- package/src/setup/provider-presets.json +2 -1
- package/src/slash-commands/builtin-registry.ts +259 -15
- package/src/task/executor.ts +46 -17
- package/src/task/index.ts +14 -2
- package/src/task/types.ts +2 -0
- package/src/tools/bash-interactive.ts +2 -0
- package/src/tools/bash.ts +118 -78
- package/src/tools/fetch.ts +140 -25
- package/src/tools/job.ts +151 -25
- package/src/tools/output-meta.ts +15 -2
- package/src/tools/path-utils.ts +27 -3
- package/src/tools/read.ts +3 -3
- package/src/tools/steer-fold.ts +107 -0
- package/src/tools/subagent-render.ts +24 -1
- package/src/tools/subagent.ts +27 -1
- package/src/tools/tool-catalog.generated.ts +29 -2
- package/src/tools/tool-errors.ts +4 -0
- package/src/utils/git.ts +53 -3
- package/src/utils/markit.ts +55 -41
- package/src/utils/mupdf-assets.d.ts +4 -0
- package/src/utils/mupdf-embedded.ts +4 -0
- package/src/utils/mupdf.ts +136 -0
- package/src/utils/session-title-generation.ts +29 -0
- package/src/utils/title-generator.ts +46 -2
- package/src/web/scrapers/types.ts +24 -3
- package/vendor/markit-ai/LICENSE +21 -0
- package/vendor/markit-ai/MANIFEST.json +412 -0
- package/vendor/markit-ai/dist/commands/config.d.ts +4 -0
- package/vendor/markit-ai/dist/commands/config.js +139 -0
- package/vendor/markit-ai/dist/commands/convert.d.ts +6 -0
- package/vendor/markit-ai/dist/commands/convert.js +113 -0
- package/vendor/markit-ai/dist/commands/formats.d.ts +2 -0
- package/vendor/markit-ai/dist/commands/formats.js +92 -0
- package/vendor/markit-ai/dist/commands/init.d.ts +2 -0
- package/vendor/markit-ai/dist/commands/init.js +29 -0
- package/vendor/markit-ai/dist/commands/onboard.d.ts +2 -0
- package/vendor/markit-ai/dist/commands/onboard.js +61 -0
- package/vendor/markit-ai/dist/commands/plugin.d.ts +4 -0
- package/vendor/markit-ai/dist/commands/plugin.js +58 -0
- package/vendor/markit-ai/dist/config.d.ts +26 -0
- package/vendor/markit-ai/dist/config.js +42 -0
- package/vendor/markit-ai/dist/converters/audio.d.ts +7 -0
- package/vendor/markit-ai/dist/converters/audio.js +104 -0
- package/vendor/markit-ai/dist/converters/csv.d.ts +7 -0
- package/vendor/markit-ai/dist/converters/csv.js +83 -0
- package/vendor/markit-ai/dist/converters/docx.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/docx.js +57 -0
- package/vendor/markit-ai/dist/converters/epub.d.ts +8 -0
- package/vendor/markit-ai/dist/converters/epub.js +128 -0
- package/vendor/markit-ai/dist/converters/github.d.ts +18 -0
- package/vendor/markit-ai/dist/converters/github.js +148 -0
- package/vendor/markit-ai/dist/converters/html.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/html.js +30 -0
- package/vendor/markit-ai/dist/converters/image.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/image.js +124 -0
- package/vendor/markit-ai/dist/converters/ipynb.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/ipynb.js +75 -0
- package/vendor/markit-ai/dist/converters/iwork.d.ts +20 -0
- package/vendor/markit-ai/dist/converters/iwork.js +391 -0
- package/vendor/markit-ai/dist/converters/json.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/json.js +21 -0
- package/vendor/markit-ai/dist/converters/pdf/columns.d.ts +35 -0
- package/vendor/markit-ai/dist/converters/pdf/columns.js +93 -0
- package/vendor/markit-ai/dist/converters/pdf/extract.d.ts +19 -0
- package/vendor/markit-ai/dist/converters/pdf/extract.js +514 -0
- package/vendor/markit-ai/dist/converters/pdf/grid.d.ts +25 -0
- package/vendor/markit-ai/dist/converters/pdf/grid.js +795 -0
- package/vendor/markit-ai/dist/converters/pdf/headers.d.ts +24 -0
- package/vendor/markit-ai/dist/converters/pdf/headers.js +108 -0
- package/vendor/markit-ai/dist/converters/pdf/index.d.ts +19 -0
- package/vendor/markit-ai/dist/converters/pdf/index.js +136 -0
- package/vendor/markit-ai/dist/converters/pdf/mupdf-loader.js +9 -0
- package/vendor/markit-ai/dist/converters/pdf/render.d.ts +24 -0
- package/vendor/markit-ai/dist/converters/pdf/render.js +513 -0
- package/vendor/markit-ai/dist/converters/pdf/types.d.ts +75 -0
- package/vendor/markit-ai/dist/converters/pdf/types.js +1 -0
- package/vendor/markit-ai/dist/converters/plain-text.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/plain-text.js +87 -0
- package/vendor/markit-ai/dist/converters/pptx.d.ts +8 -0
- package/vendor/markit-ai/dist/converters/pptx.js +289 -0
- package/vendor/markit-ai/dist/converters/rss.d.ts +11 -0
- package/vendor/markit-ai/dist/converters/rss.js +138 -0
- package/vendor/markit-ai/dist/converters/wikipedia.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/wikipedia.js +33 -0
- package/vendor/markit-ai/dist/converters/xlsx.d.ts +8 -0
- package/vendor/markit-ai/dist/converters/xlsx.js +147 -0
- package/vendor/markit-ai/dist/converters/xml.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/xml.js +18 -0
- package/vendor/markit-ai/dist/converters/yaml.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/yaml.js +17 -0
- package/vendor/markit-ai/dist/converters/zip.d.ts +8 -0
- package/vendor/markit-ai/dist/converters/zip.js +57 -0
- package/vendor/markit-ai/dist/index.d.ts +30 -0
- package/vendor/markit-ai/dist/index.js +26 -0
- package/vendor/markit-ai/dist/main.d.ts +2 -0
- package/vendor/markit-ai/dist/main.js +191 -0
- package/vendor/markit-ai/dist/markit.d.ts +45 -0
- package/vendor/markit-ai/dist/markit.js +267 -0
- package/vendor/markit-ai/dist/plugins/api.d.ts +7 -0
- package/vendor/markit-ai/dist/plugins/api.js +42 -0
- package/vendor/markit-ai/dist/plugins/index.d.ts +4 -0
- package/vendor/markit-ai/dist/plugins/index.js +3 -0
- package/vendor/markit-ai/dist/plugins/installer.d.ts +25 -0
- package/vendor/markit-ai/dist/plugins/installer.js +176 -0
- package/vendor/markit-ai/dist/plugins/loader.d.ts +6 -0
- package/vendor/markit-ai/dist/plugins/loader.js +61 -0
- package/vendor/markit-ai/dist/plugins/types.d.ts +25 -0
- package/vendor/markit-ai/dist/plugins/types.js +1 -0
- package/vendor/markit-ai/dist/providers/anthropic.d.ts +2 -0
- package/vendor/markit-ai/dist/providers/anthropic.js +47 -0
- package/vendor/markit-ai/dist/providers/index.d.ts +21 -0
- package/vendor/markit-ai/dist/providers/index.js +56 -0
- package/vendor/markit-ai/dist/providers/openai.d.ts +2 -0
- package/vendor/markit-ai/dist/providers/openai.js +76 -0
- package/vendor/markit-ai/dist/providers/types.d.ts +26 -0
- package/vendor/markit-ai/dist/providers/types.js +1 -0
- package/vendor/markit-ai/dist/types.d.ts +36 -0
- package/vendor/markit-ai/dist/types.js +1 -0
- package/vendor/markit-ai/dist/utils/exit-codes.d.ts +4 -0
- package/vendor/markit-ai/dist/utils/exit-codes.js +4 -0
- package/vendor/markit-ai/dist/utils/output.d.ts +22 -0
- package/vendor/markit-ai/dist/utils/output.js +31 -0
- package/vendor/markit-ai/dist/utils/turndown.d.ts +8 -0
- package/vendor/markit-ai/dist/utils/turndown.js +70 -0
- package/vendor/markit-ai/package.json +74 -0
- package/vendor/markit-ai.patch +49 -0
package/dist/types/main.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* createAgentSession() options. The SDK does the heavy lifting.
|
|
6
6
|
*/
|
|
7
7
|
import type { ImageContent } from "@gajae-code/ai/core";
|
|
8
|
+
import { postmortem } from "@gajae-code/utils";
|
|
8
9
|
import type { Args } from "./cli/args";
|
|
9
10
|
import { ModelRegistry } from "./config/model-registry";
|
|
10
11
|
import { Settings } from "./config/settings";
|
|
@@ -17,6 +18,8 @@ import { initTheme } from "./modes/theme/theme";
|
|
|
17
18
|
import type { SubmittedUserInput } from "./modes/types";
|
|
18
19
|
import type { MCPManager } from "./runtime-mcp";
|
|
19
20
|
import { type CreateAgentSessionOptions, type CreateAgentSessionResult, createAgentSession, discoverAuthStorage } from "./sdk";
|
|
21
|
+
import { processIncarnation } from "./sdk/broker/process-incarnation";
|
|
22
|
+
import { SessionIndex } from "./sdk/broker/session-index";
|
|
20
23
|
import type { AgentSession } from "./session/agent-session";
|
|
21
24
|
import { type ResumeSessionIdentity, type SessionDestination, type SessionDirectoryMigrationPolicy, type SessionInfo, SessionManager, type StrictSessionOpenResult } from "./session/session-manager";
|
|
22
25
|
import { resolveStartupAuthConfig } from "./session/startup-auth-config";
|
|
@@ -55,7 +58,7 @@ type StartupModelProfileArgs = {
|
|
|
55
58
|
session: AgentSession;
|
|
56
59
|
settings: Settings;
|
|
57
60
|
modelRegistry: ModelRegistry;
|
|
58
|
-
parsedArgs: Pick<Args, "default" | "model" | "mpreset" | "thinking">;
|
|
61
|
+
parsedArgs: Pick<Args, "continue" | "default" | "fork" | "model" | "mpreset" | "resume" | "thinking">;
|
|
59
62
|
startupModel?: CreateAgentSessionOptions["model"];
|
|
60
63
|
startupThinkingLevel?: CreateAgentSessionOptions["thinkingLevel"];
|
|
61
64
|
preferCachedModels?: boolean;
|
|
@@ -117,6 +120,7 @@ export declare class SessionNotFoundError extends Error {
|
|
|
117
120
|
get sessionId(): string;
|
|
118
121
|
}
|
|
119
122
|
export declare function operatorFacingSessionOpenMessage(value: unknown): string | undefined;
|
|
123
|
+
export declare function shouldNotifyModelFallback(authBootstrap: boolean | undefined, isInteractive: boolean): boolean;
|
|
120
124
|
export declare function runInteractiveMode(session: AgentSession, version: string, changelogMarkdown: string | undefined, notifs: (InteractiveModeNotify | null)[], startupUpdate: StartupUpdateOrchestrator, initialMessages: string[], setExtensionUIContext: (uiContext: ExtensionUIContext, hasUI: boolean) => void, lspServers: LspStartupServerInfo[] | undefined, mcpManager: MCPManager | undefined, eventBus?: EventBus, initialMessage?: string, initialImages?: ImageContent[], createInteractiveMode?: CreateInteractiveMode, resumeAction?: "continue-tail" | "open-idle", startDeferredMcpConfig?: CreateAgentSessionResult["startDeferredMcpConfig"], startDeferredModelProfiles?: DeferredModelProfileStartup, options?: {
|
|
121
125
|
stopAfterFirstPaint?: boolean;
|
|
122
126
|
}): Promise<void>;
|
|
@@ -153,6 +157,24 @@ export interface RunRootCommandDependencies {
|
|
|
153
157
|
initializeSettings?: typeof Settings.init;
|
|
154
158
|
loadSettingsForScope?: typeof Settings.loadForScope;
|
|
155
159
|
}
|
|
160
|
+
type DirectSessionManager = Pick<SessionManager, "getCwd" | "getSessionFile" | "getSessionId">;
|
|
161
|
+
/**
|
|
162
|
+
* Direct CLI liveness is meaningful only for sessions with a durable transcript.
|
|
163
|
+
* An in-memory manager has no artifacts for GC to fence and must not touch the
|
|
164
|
+
* shared SDK session-index lock.
|
|
165
|
+
*/
|
|
166
|
+
export declare function directSessionRegistrationId(sessionManager: DirectSessionManager | undefined, lifecycleRequestId: string | undefined): string | undefined;
|
|
167
|
+
interface DirectSessionRegistrationDependencies {
|
|
168
|
+
createIndex?: (agentDir: string) => SessionIndex;
|
|
169
|
+
processIncarnation?: typeof processIncarnation;
|
|
170
|
+
registerPostmortem?: typeof postmortem.register;
|
|
171
|
+
masterRole?: {
|
|
172
|
+
ownerSessionId: string;
|
|
173
|
+
attestationEpoch: string;
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/** Register a durable direct CLI session while leaving ephemeral sessions lock-free. */
|
|
177
|
+
export declare function registerDirectSession(sessionManager: DirectSessionManager | undefined, agentDir: string, lifecycleRequestId: string | undefined, dependencies?: DirectSessionRegistrationDependencies): Promise<void>;
|
|
156
178
|
export interface ModelRoleOverrides {
|
|
157
179
|
smol?: string;
|
|
158
180
|
slow?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Agent, type AgentSideConnection, type AuthenticateRequest, type AuthenticateResponse, type AvailableCommand, type CancelNotification, type ClientCapabilities, type CloseSessionRequest, type CloseSessionResponse, type DeleteSessionRequest, type DeleteSessionResponse, type ForkSessionRequest, type ForkSessionResponse, type InitializeRequest, type InitializeResponse, type ListSessionsRequest, type ListSessionsResponse, type LoadSessionRequest, type LoadSessionResponse, type NewSessionRequest, type NewSessionResponse, type PromptRequest, type PromptResponse, type ResumeSessionRequest, type ResumeSessionResponse, type SetSessionConfigOptionRequest, type SetSessionConfigOptionResponse, type SetSessionModeRequest, type SetSessionModeResponse } from "@agentclientprotocol/sdk";
|
|
2
2
|
import { type AcpProviderRegistration, type AcpReverseConnection, AcpSdkAdapter, AcpSdkAdapterError } from "../../sdk/acp";
|
|
3
|
-
import type { SdkPromptTerminalOutcome } from "../../sdk/prompt-status";
|
|
3
|
+
import type { SdkPromptFailureCategory, SdkPromptFailurePhase, SdkPromptTerminalOutcome } from "../../sdk/prompt-status";
|
|
4
4
|
import { type PromptWatchdogClock } from "../../sdk/prompt-watchdog";
|
|
5
5
|
import type { AcpStartupOptions } from "./startup-options";
|
|
6
6
|
/**
|
|
@@ -58,6 +58,60 @@ export declare class AcpPromptFailureError extends AcpSdkAdapterError {
|
|
|
58
58
|
readonly failure: SdkPromptFailedOutcome;
|
|
59
59
|
constructor(failure: SdkPromptFailedOutcome);
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* The wire projection of a prompt terminal's classification (issue #5615).
|
|
63
|
+
*
|
|
64
|
+
* `super(failure.code, failure.message)` above narrows the error to the generic
|
|
65
|
+
* `prompt_failed` plus its fixed redacted message, so the classification the
|
|
66
|
+
* terminal already computed used to die at the JSON-RPC boundary: an ACP client
|
|
67
|
+
* saw only `-32603 {code, details}` and could not tell a transient provider blip
|
|
68
|
+
* from a dead session without parsing English. These fields carry it across.
|
|
69
|
+
*
|
|
70
|
+
* `providerCode` is re-checked against the safe-token rule rather than trusted:
|
|
71
|
+
* `terminalOutcome` accepts the host's `providerCode` on a `typeof` check alone,
|
|
72
|
+
* and this is the first path that puts it on the wire, so an unbounded value is
|
|
73
|
+
* dropped instead of becoming a leak of provider text (the redaction contract in
|
|
74
|
+
* `sanitizePromptFailure`). A dropped or absent code is omitted, never nulled.
|
|
75
|
+
*/
|
|
76
|
+
export declare const OPERATOR_UPSTREAM_LABEL = "Upstream provider failure";
|
|
77
|
+
export declare const OPERATOR_UPSTREAM_SUFFIX = ": the model provider ended this turn.";
|
|
78
|
+
/**
|
|
79
|
+
* `post_start` proves execution began, so tools may already have run and had effects before the
|
|
80
|
+
* provider died. The wording therefore qualifies the turn rather than absolving the task: saying
|
|
81
|
+
* the task was unaffected would assert something the bounded classifiers do not establish.
|
|
82
|
+
*/
|
|
83
|
+
export declare const OPERATOR_PARTIAL_WORK_NOTE = " Work this turn had already performed may have taken effect; check before retrying.";
|
|
84
|
+
/**
|
|
85
|
+
* Operator-facing wording for a post-start terminal, assembled ONLY from bounded safe tokens: the
|
|
86
|
+
* classifier `phase`, the `category`, and a `providerCode` that passes `isSafePromptFailureCode`.
|
|
87
|
+
* Raw provider text never reaches this function and must never reach it.
|
|
88
|
+
*
|
|
89
|
+
* Gated on BOTH `phase === "post_start"` and `category === "provider_transport"`. A submission-phase
|
|
90
|
+
* provider failure is rejected by the phase gate: nothing executed, so wording about a turn the
|
|
91
|
+
* provider ended would describe an event that never occurred.
|
|
92
|
+
*
|
|
93
|
+
* It claims only what those tokens prove — that the upstream provider ended the turn — and says
|
|
94
|
+
* nothing about whether the operator's work survived. `post_start` proves execution began, so the
|
|
95
|
+
* wording qualifies that earlier work may already have taken effect instead of absolving the task.
|
|
96
|
+
*
|
|
97
|
+
* This is additive. The wire `code`/`details` pair and every `PROMPT_FAILURE_MESSAGE_*` constant
|
|
98
|
+
* stay exactly as they are — pinned ACP core-v1 conformance asserts on them — so this wording
|
|
99
|
+
* travels alongside the redacted message instead of repurposing it.
|
|
100
|
+
*
|
|
101
|
+
* It says NOTHING about the worktree, deliberately. Nothing on this path inspects the worktree, so
|
|
102
|
+
* any sentence about uncommitted work would assert a check that never ran — reporting an
|
|
103
|
+
* uninspected tree as clean is the absence-of-evidence-as-evidence-of-absence error, and an
|
|
104
|
+
* operator who believed it would sweep work away. Silence is the only honest option until something
|
|
105
|
+
* actually looks.
|
|
106
|
+
*
|
|
107
|
+
* Returns `undefined` for every other category: `phase` and `category` are already on the wire, so
|
|
108
|
+
* restating them in prose tells an operator nothing they do not already have.
|
|
109
|
+
*/
|
|
110
|
+
export declare function postStartOperatorMessage(input: {
|
|
111
|
+
phase: SdkPromptFailurePhase;
|
|
112
|
+
category: SdkPromptFailureCategory;
|
|
113
|
+
providerCode?: string;
|
|
114
|
+
}): string | undefined;
|
|
61
115
|
/**
|
|
62
116
|
* What an ACP `plan` update said the turn intended to do. Structural rather than the SDK's
|
|
63
117
|
* `PlanEntry` so only the fields this evidence reads are depended on.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type JsonObject = Record<string, unknown>;
|
|
2
|
+
export type PrimaryControlSurface = "cli" | "sdk";
|
|
3
|
+
/**
|
|
4
|
+
* Startup-control provenance is the authority record ACP needs before it may take
|
|
5
|
+
* permission, provider, and lifecycle ownership of a session. Hosts serving that
|
|
6
|
+
* record report capabilities carrying `promptTerminalOutcomeVersion`
|
|
7
|
+
* and `primaryControlSurface`; a host that predates the record reports neither, and a
|
|
8
|
+
* host that cannot answer at all reports nothing. Those are three different operator
|
|
9
|
+
* problems, so they get three different messages instead of one "restart the session".
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveStartupProvenance(input: {
|
|
12
|
+
sessionId: string;
|
|
13
|
+
capabilities: JsonObject | undefined;
|
|
14
|
+
queryFailure: unknown;
|
|
15
|
+
}): PrimaryControlSurface;
|
|
16
|
+
export {};
|
|
@@ -2,10 +2,28 @@ import { Container } from "@gajae-code/tui";
|
|
|
2
2
|
import type { ProviderSetupInput } from "../../setup/provider-onboarding";
|
|
3
3
|
export type CustomProviderCredentialSource = "env" | "literal";
|
|
4
4
|
export type CustomProviderWizardSubmit = ProviderSetupInput;
|
|
5
|
+
export interface CustomProviderWizardDiscoveryDeps {
|
|
6
|
+
discoverModels?: (input: {
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
apiKeyEnv?: string;
|
|
9
|
+
apiKey?: string;
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
}) => Promise<{
|
|
12
|
+
models: string[];
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
5
15
|
export declare class CustomProviderWizardComponent extends Container {
|
|
6
16
|
#private;
|
|
7
|
-
constructor(onSubmit: (input: CustomProviderWizardSubmit) => void, onCancel: () => void, onRender?: () => void);
|
|
17
|
+
constructor(onSubmit: (input: CustomProviderWizardSubmit) => void, onCancel: () => void, onRender?: () => void, discoveryDeps?: CustomProviderWizardDiscoveryDeps);
|
|
8
18
|
setSubmitError(error: string): void;
|
|
9
19
|
handleInput(keyData: string): void;
|
|
10
20
|
complete(): void;
|
|
21
|
+
/** Generation token for the latest submit attempt. */
|
|
22
|
+
currentSubmitGeneration(): number;
|
|
23
|
+
/**
|
|
24
|
+
* Whether a submit attempt is still current: same generation and not
|
|
25
|
+
* dismissed. Revision or cancel invalidates pending completions so a
|
|
26
|
+
* stale refresh cannot report success or rerender over new inputs.
|
|
27
|
+
*/
|
|
28
|
+
isSubmitCurrent(generation: number): boolean;
|
|
11
29
|
}
|
|
@@ -19,14 +19,16 @@ declare class SessionList implements Component {
|
|
|
19
19
|
onCancel?: () => void;
|
|
20
20
|
onExit: () => void;
|
|
21
21
|
onDeleteRequest?: (session: SessionInfo) => void;
|
|
22
|
+
onToggleStarRequest?: (session: SessionInfo) => void;
|
|
22
23
|
constructor(allSessions: SessionInfo[], showCwd?: boolean);
|
|
23
24
|
setInputFrozen(frozen: boolean): void;
|
|
24
25
|
removeSession(sessionPath: string): void;
|
|
26
|
+
setSessionStarred(sessionPath: string, starred: boolean): void;
|
|
25
27
|
invalidate(): void;
|
|
26
28
|
render(width: number): string[];
|
|
27
29
|
handleInput(keyData: string): void;
|
|
28
30
|
}
|
|
29
|
-
/** A one-shot resume consent selector
|
|
31
|
+
/** A one-shot resume consent selector with host-owned deletion and star persistence. */
|
|
30
32
|
export declare class SessionSelectorComponent extends Container {
|
|
31
33
|
#private;
|
|
32
34
|
private readonly onSelect;
|
|
@@ -35,7 +37,8 @@ export declare class SessionSelectorComponent extends Container {
|
|
|
35
37
|
private readonly onDelete?;
|
|
36
38
|
private readonly inspector?;
|
|
37
39
|
private readonly onSelection?;
|
|
38
|
-
|
|
40
|
+
private readonly onSetStarred?;
|
|
41
|
+
constructor(sessions: SessionInfo[], onSelect: (sessionPath: string) => void | Promise<void>, onCancel: () => void, onExit: () => void, onDelete?: ((session: SessionInfo) => Promise<boolean>) | undefined, inspector?: SessionInspector | undefined, onSelection?: ((selection: SessionSelectionResult) => void) | undefined, onSetStarred?: ((session: SessionInfo, starred: boolean) => Promise<void>) | undefined);
|
|
39
42
|
setOnRequestRender(callback: () => void): void;
|
|
40
43
|
handleInput(keyData: string): void;
|
|
41
44
|
getSessionList(): SessionList;
|
|
@@ -13,16 +13,19 @@ declare class UserMessageList implements Component {
|
|
|
13
13
|
onSelect?: (entryId: string) => void;
|
|
14
14
|
onCancel?: () => void;
|
|
15
15
|
constructor(messages: UserMessageItem[]);
|
|
16
|
+
setAvailableRows(rows: number): void;
|
|
16
17
|
invalidate(): void;
|
|
17
18
|
render(width: number): string[];
|
|
18
19
|
handleInput(keyData: string): void;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
|
-
* Component that renders a
|
|
22
|
+
* Component that renders a prompt selector for creating a new session
|
|
22
23
|
*/
|
|
23
24
|
export declare class UserMessageSelectorComponent extends Container {
|
|
24
25
|
#private;
|
|
25
|
-
|
|
26
|
+
private readonly getViewportRows;
|
|
27
|
+
constructor(messages: UserMessageItem[], onSelect: (entryId: string) => void, onCancel: () => void, getViewportRows: () => number);
|
|
28
|
+
render(width: number): string[];
|
|
26
29
|
getMessageList(): UserMessageList;
|
|
27
30
|
}
|
|
28
31
|
export {};
|
|
@@ -30,7 +30,7 @@ export declare class CommandController {
|
|
|
30
30
|
handleDropCommand(): Promise<boolean>;
|
|
31
31
|
handleForkCommand(): Promise<void>;
|
|
32
32
|
handleMoveCommand(targetPath: string): Promise<void>;
|
|
33
|
-
handleRenameCommand(title
|
|
33
|
+
handleRenameCommand(title?: string): Promise<void>;
|
|
34
34
|
handleBashCommand(command: string, excludeFromContext?: boolean): Promise<void>;
|
|
35
35
|
handlePythonCommand(code: string, excludeFromContext?: boolean): Promise<void>;
|
|
36
36
|
handleCompactCommand(customInstructions?: string): Promise<CompactionOutcome>;
|
|
@@ -131,7 +131,7 @@ export declare class SelectorController {
|
|
|
131
131
|
smartRoutingOnly?: boolean;
|
|
132
132
|
}): void;
|
|
133
133
|
showPluginSelector(mode?: "install" | "uninstall"): Promise<void>;
|
|
134
|
-
showUserMessageSelector(): void;
|
|
134
|
+
showUserMessageSelector(onCommitted?: () => void): void;
|
|
135
135
|
showTreeSelector(): void;
|
|
136
136
|
showSessionSelector(): Promise<void>;
|
|
137
137
|
handleResumeSession(sessionPath: string): Promise<void>;
|
|
@@ -257,7 +257,7 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
257
257
|
handleDropCommand(): Promise<boolean>;
|
|
258
258
|
handleForkCommand(): Promise<void>;
|
|
259
259
|
handleMoveCommand(targetPath: string): Promise<void>;
|
|
260
|
-
handleRenameCommand(title
|
|
260
|
+
handleRenameCommand(title?: string): Promise<void>;
|
|
261
261
|
handleMemoryCommand(text: string): Promise<void>;
|
|
262
262
|
handleSTTToggle(): Promise<void>;
|
|
263
263
|
showDebugSelector(): void;
|
|
@@ -8,6 +8,8 @@ export type PersistedResolutionOrigin = {
|
|
|
8
8
|
kind: "telegram_notification";
|
|
9
9
|
interactionActionId: string;
|
|
10
10
|
};
|
|
11
|
+
/** Keep accepted diagnostics below the coordinator's cumulative Q12 snapshot cap. */
|
|
12
|
+
export declare const MAX_ACCEPTED_WORKFLOW_GATE_QUERY_RECORDS = 32;
|
|
11
13
|
export type PersistedAckPolicy = {
|
|
12
14
|
kind: "none";
|
|
13
15
|
reason: "non_telegram" | "semantic_noncommit" | "legacy_unproven";
|
|
@@ -95,7 +97,7 @@ export interface WorkflowGateEmitter {
|
|
|
95
97
|
*/
|
|
96
98
|
export declare class BrokerWorkflowGateEmitter implements WorkflowGateEmitter {
|
|
97
99
|
#private;
|
|
98
|
-
constructor(runId: string, store: GateStore, emitterHooks?: Pick<BrokerHooks, "advance">);
|
|
100
|
+
constructor(runId: string, store: GateStore, emitterHooks?: Pick<BrokerHooks, "advance" | "continuationLost">);
|
|
99
101
|
supportsRemoteGateAnswers(): boolean;
|
|
100
102
|
setRuntimeTurnProvider(provider: (() => string | undefined) | null): void;
|
|
101
103
|
emitGate(input: OpenGateInput): Promise<unknown>;
|
|
@@ -193,6 +195,11 @@ export type GateAuditEvent = {
|
|
|
193
195
|
} | {
|
|
194
196
|
event: "gate_response_idempotent_replay";
|
|
195
197
|
gate_id: string;
|
|
198
|
+
}
|
|
199
|
+
/** An idempotent replay refused because this runtime cannot prove the continuation ran. */
|
|
200
|
+
| {
|
|
201
|
+
event: "gate_response_replay_unproven";
|
|
202
|
+
gate_id: string;
|
|
196
203
|
} | {
|
|
197
204
|
event: "gate_response_idempotency_conflict";
|
|
198
205
|
gate_id: string;
|
|
@@ -225,6 +232,8 @@ export interface BrokerHooks {
|
|
|
225
232
|
terminalizeAccepted?(record: PersistedGate): WorkflowGateTerminalProof | Promise<WorkflowGateTerminalProof>;
|
|
226
233
|
/** Runs only after a successful advance has been durably marked advanced. */
|
|
227
234
|
completeAccepted?(record: PersistedGate): void | Promise<void>;
|
|
235
|
+
/** Notifies the owning runtime when the accepted answer cannot reach its continuation. */
|
|
236
|
+
continuationLost?(record: PersistedGate): void;
|
|
228
237
|
/** Append-only audit sink. */
|
|
229
238
|
audit?(event: GateAuditEvent): void;
|
|
230
239
|
}
|
|
@@ -277,6 +286,7 @@ export declare class WorkflowGateBroker {
|
|
|
277
286
|
lookupCompletedResolution(response: WorkflowGateResponse): WorkflowGateCompletedResolutionLookup;
|
|
278
287
|
private runShort;
|
|
279
288
|
private hasLiveContinuation;
|
|
289
|
+
private recordContinuationLoss;
|
|
280
290
|
hasRecoverableAcceptedGate(): boolean;
|
|
281
291
|
prepareTerminalization(gateId: string, proof: WorkflowGateTerminalProof): boolean;
|
|
282
292
|
clearPreparedTerminalization(gateId: string): void;
|
|
@@ -117,13 +117,26 @@ export interface WorkflowGateDiagnostic extends WorkflowGate {
|
|
|
117
117
|
id: string;
|
|
118
118
|
tag: "quarantined";
|
|
119
119
|
lifecycle: WorkflowGateLifecycle;
|
|
120
|
+
/** Whether the durable broker retained an answer for this gate. */
|
|
121
|
+
answer_recorded: boolean;
|
|
122
|
+
}
|
|
123
|
+
/** Durable acceptance evidence for a gate that is no longer pending. */
|
|
124
|
+
export interface WorkflowGateResolutionDiagnostic extends WorkflowGate {
|
|
125
|
+
id: string;
|
|
126
|
+
tag: "accepted";
|
|
127
|
+
/** True when the accepted record contains the answer body. */
|
|
128
|
+
answer_recorded: true;
|
|
129
|
+
resolved_at: string;
|
|
130
|
+
/** Single post-accept disposition; raw answers and derived answer values stay private. */
|
|
131
|
+
post_accept_disposition: "accepted" | "terminalized" | "advanced" | "continuation_lost" | "unknown";
|
|
120
132
|
}
|
|
121
133
|
/** Stable Q12 row preserving the root WorkflowGate shape. */
|
|
122
134
|
export type WorkflowGateQueryRecord = (WorkflowGate & {
|
|
123
135
|
id: string;
|
|
124
136
|
tag: "pending";
|
|
125
137
|
lifecycle?: undefined;
|
|
126
|
-
|
|
138
|
+
answer_recorded: false;
|
|
139
|
+
}) | WorkflowGateDiagnostic | WorkflowGateResolutionDiagnostic;
|
|
127
140
|
/** Inbound: the agent's answer to a workflow gate. */
|
|
128
141
|
export interface WorkflowGateResponse {
|
|
129
142
|
gate_id: string;
|
|
@@ -303,7 +303,7 @@ export interface InteractiveModeContext {
|
|
|
303
303
|
handleHandoffCommand(customInstructions?: string): Promise<void>;
|
|
304
304
|
handleContributionPrepCommand(customInstructions?: string): Promise<void>;
|
|
305
305
|
handleMoveCommand(targetPath: string): Promise<void>;
|
|
306
|
-
handleRenameCommand(title
|
|
306
|
+
handleRenameCommand(title?: string): Promise<void>;
|
|
307
307
|
handleMemoryCommand(text: string): Promise<void>;
|
|
308
308
|
handleSTTToggle(): Promise<void>;
|
|
309
309
|
executeCompaction(customInstructionsOrOptions?: string | CompactOptions, isAuto?: boolean): Promise<CompactionOutcome>;
|
|
@@ -367,7 +367,7 @@ export interface InteractiveModeContext {
|
|
|
367
367
|
initHooksAndCustomTools(): Promise<void>;
|
|
368
368
|
emitCustomToolSessionEvent(reason: "start" | "switch" | "branch" | "tree" | "shutdown", previousSessionFile?: string): Promise<void>;
|
|
369
369
|
planModeController: Pick<import("./controllers/plan-mode-controller").PlanModeController, "enabled" | "paused" | "planFilePath" | "handleCommand" | "handleApproval" | "flushPendingModelSwitch">;
|
|
370
|
-
goalModeController: Pick<import("./controllers/goal-mode-controller").GoalModeController, "enabled" | "paused" | "handleCommand">;
|
|
370
|
+
goalModeController: Pick<import("./controllers/goal-mode-controller").GoalModeController, "enabled" | "paused" | "handleCommand" | "cancelContinuation" | "scheduleContinuation">;
|
|
371
371
|
setHookWidget(key: string, content: ExtensionWidgetContent, options?: ExtensionWidgetOptions): void;
|
|
372
372
|
setHookStatus(key: string, text: string | undefined): void;
|
|
373
373
|
showHookSelector(title: string, options: string[], dialogOptions?: ExtensionUIDialogOptions): Promise<string | undefined>;
|
|
@@ -80,6 +80,8 @@ type ResourceDisposer = () => void | Promise<void>;
|
|
|
80
80
|
export declare function registerResourceOwner(name: string, disposer: ResourceDisposer): () => void;
|
|
81
81
|
/** Number of registered resource owners. Exposed for leak assertions/tests. */
|
|
82
82
|
export declare function resourceOwnerCount(): number;
|
|
83
|
+
/** True while a process-level resource-owner sweep is in progress. */
|
|
84
|
+
export declare function isResourceOwnerDisposalActive(): boolean;
|
|
83
85
|
/**
|
|
84
86
|
* Run and clear every registered resource disposer. Attempts all disposers even
|
|
85
87
|
* if some throw, then surfaces the failures as an `AggregateError` so callers
|
|
@@ -2,6 +2,7 @@ import type { LoadedCustomTool } from "../extensibility/custom-tools/types";
|
|
|
2
2
|
import { AgentStorage } from "../session/agent-storage";
|
|
3
3
|
import type { AuthStorage } from "../session/auth-storage";
|
|
4
4
|
import { MCPManager } from "./manager";
|
|
5
|
+
import { MCPToolCache } from "./tool-cache";
|
|
5
6
|
/** Result from loading MCP tools */
|
|
6
7
|
export interface MCPToolsLoadResult {
|
|
7
8
|
/** MCP manager (for lifecycle management) */
|
|
@@ -37,6 +38,7 @@ export interface MCPToolsLoadOptions {
|
|
|
37
38
|
/** Idle retention for shared MCP pool entries. */
|
|
38
39
|
sharedPoolIdleMs?: number;
|
|
39
40
|
}
|
|
41
|
+
export declare function resolveMCPToolCache(storage?: AgentStorage | null, dbPath?: string): Promise<MCPToolCache | null>;
|
|
40
42
|
/**
|
|
41
43
|
* Discover and load MCP tools from .mcp.json files.
|
|
42
44
|
*
|
|
@@ -14,6 +14,7 @@ import type { MCPProtocolObservation } from "./protocol";
|
|
|
14
14
|
import type { MCPToolDetails } from "./tool-bridge";
|
|
15
15
|
import type { MCPToolCache } from "./tool-cache";
|
|
16
16
|
import type { MCPGetPromptResult, MCPInputRequestHandler, MCPPrompt, MCPRequestOptions, MCPResource, MCPResourceReadResult, MCPResourceTemplate, MCPServerConfig, MCPServerConnection } from "./types";
|
|
17
|
+
export declare function isMCPStartupTimeoutError(error: unknown): boolean;
|
|
17
18
|
export declare function resolveStartupTimeoutMs(configs: MCPServerConfig[], maxStartupTimeoutMs?: number): number;
|
|
18
19
|
export declare function resolveExactConfigStartupTimeoutMs(configs: MCPServerConfig[]): number;
|
|
19
20
|
/**
|
|
@@ -56,6 +57,20 @@ export interface MCPLoadResult {
|
|
|
56
57
|
/** Extracted Exa API keys from filtered MCP servers */
|
|
57
58
|
exaApiKeys: string[];
|
|
58
59
|
}
|
|
60
|
+
export type MCPToolCatalogPublication = "unpublished" | "published" | "fenced";
|
|
61
|
+
/**
|
|
62
|
+
* Atomic view of the manager's fenced tool catalog and its publication state.
|
|
63
|
+
*
|
|
64
|
+
* `unpublished` is reserved for the initial deferred window where no manager
|
|
65
|
+
* catalog has been published and no exact control is fencing it. An empty
|
|
66
|
+
* `published` or `fenced` catalog is authoritative and must not be replaced
|
|
67
|
+
* with an in-flight discovery result.
|
|
68
|
+
*/
|
|
69
|
+
export interface MCPToolCatalogSnapshot {
|
|
70
|
+
tools: CustomTool<TSchema, MCPToolDetails>[];
|
|
71
|
+
publication: MCPToolCatalogPublication;
|
|
72
|
+
generation: number;
|
|
73
|
+
}
|
|
59
74
|
/** Options for discovering and connecting to MCP servers */
|
|
60
75
|
export interface MCPDiscoverOptions {
|
|
61
76
|
/** Whether to load project-level config (default: true) */
|
|
@@ -83,10 +98,10 @@ export interface MCPManagerOptions {
|
|
|
83
98
|
/** Restrict this instance to tools from an explicit MCP config. */
|
|
84
99
|
toolsOnly?: boolean;
|
|
85
100
|
/**
|
|
86
|
-
* Ceiling for the startup wait, in milliseconds.
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
101
|
+
* Ceiling for the startup wait, in milliseconds. ACP lifecycle launches and
|
|
102
|
+
* plugin MCP startup use bounded caller-owned budgets; other consumers keep
|
|
103
|
+
* the short default. Non-positive or non-finite values are ignored and the
|
|
104
|
+
* default applies.
|
|
90
105
|
*/
|
|
91
106
|
maxStartupTimeoutMs?: number;
|
|
92
107
|
/** Connection pool used for every physical MCP open/close. */
|
|
@@ -95,11 +110,37 @@ export interface MCPManagerOptions {
|
|
|
95
110
|
sessionId?: string;
|
|
96
111
|
/** Idle retention for shared pool entries. */
|
|
97
112
|
sharedPoolIdleMs?: number;
|
|
113
|
+
/** Limit tool-cache reads and writes to this manager's conventional servers. */
|
|
114
|
+
toolCacheServerNames?: ReadonlySet<string>;
|
|
98
115
|
/** Test seam for deterministic reconnect backoff scheduling. */
|
|
99
116
|
sleep?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
100
117
|
/** Test seam for fencing the acquisition-to-registration replacement race. */
|
|
101
118
|
afterLeaseAcquiredForTests?: (name: string, lease: MCPPoolLease) => void | Promise<void>;
|
|
102
119
|
}
|
|
120
|
+
export type ExactMcpServerControlStatus = "suspended" | "already-suspended" | "resumed" | "not-suspended" | "reconnected" | "unavailable" | "unknown-server";
|
|
121
|
+
export interface ExactMcpServerControlResult {
|
|
122
|
+
readonly name: string;
|
|
123
|
+
readonly status: ExactMcpServerControlStatus;
|
|
124
|
+
readonly toolCount: number;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* A staged catalog the caller can validate against before it is published.
|
|
128
|
+
* `commit` is the single publication point; `abort` releases anything the
|
|
129
|
+
* preparation opened and leaves the manager on its predecessor.
|
|
130
|
+
*/
|
|
131
|
+
export interface PreparedExactMcpCatalog {
|
|
132
|
+
readonly tools: CustomTool<TSchema, MCPToolDetails>[];
|
|
133
|
+
canCommit(): boolean;
|
|
134
|
+
commit(): Promise<void>;
|
|
135
|
+
abort(): Promise<void>;
|
|
136
|
+
}
|
|
137
|
+
export interface PreparedExactMcpServerControl extends PreparedExactMcpCatalog {
|
|
138
|
+
readonly result: ExactMcpServerControlResult;
|
|
139
|
+
/** Validate a resumed replacement before an atomic multi-server publication. */
|
|
140
|
+
precommit?(): void;
|
|
141
|
+
/** Publish after every replacement in the catalog has passed precommit. */
|
|
142
|
+
publish?(): void;
|
|
143
|
+
}
|
|
103
144
|
/**
|
|
104
145
|
* MCP Server Manager.
|
|
105
146
|
*
|
|
@@ -118,7 +159,10 @@ export declare class MCPManager {
|
|
|
118
159
|
static setInstance(value: MCPManager | undefined): void;
|
|
119
160
|
/** Reset the process-global instance. Test-only. */
|
|
120
161
|
static resetForTests(): void;
|
|
162
|
+
/** Block config mutations and reloads while keeping existing servers reconnectable. */
|
|
163
|
+
freezeConnectionSet(): void;
|
|
121
164
|
sealConnectionSet(): void;
|
|
165
|
+
isConnectionSetMutationBlocked(): boolean;
|
|
122
166
|
isConnectionSetSealed(): boolean;
|
|
123
167
|
constructor(cwd: string, toolCache?: MCPToolCache | null, options?: MCPManagerOptions);
|
|
124
168
|
isToolsOnly(): boolean;
|
|
@@ -127,9 +171,11 @@ export declare class MCPManager {
|
|
|
127
171
|
*/
|
|
128
172
|
setOnNotification(handler: (serverName: string, method: string, params: unknown) => void): void;
|
|
129
173
|
/**
|
|
130
|
-
* Set a callback to
|
|
174
|
+
* Set a callback to receive a read-only catalog snapshot when server tools change.
|
|
131
175
|
*/
|
|
132
|
-
setOnToolsChanged(handler: (tools: CustomTool<TSchema, MCPToolDetails
|
|
176
|
+
setOnToolsChanged(handler: (tools: readonly Readonly<CustomTool<TSchema, MCPToolDetails>>[]) => void): void;
|
|
177
|
+
/** Subscribe to readonly catalog snapshots without replacing the manager owner's callback. */
|
|
178
|
+
subscribeToToolsChanged(handler: (tools: readonly Readonly<CustomTool<TSchema, MCPToolDetails>>[]) => void): () => void;
|
|
133
179
|
/**
|
|
134
180
|
* Set a callback to fire when any server's resources change.
|
|
135
181
|
*/
|
|
@@ -164,6 +210,23 @@ export declare class MCPManager {
|
|
|
164
210
|
* Get all loaded tools.
|
|
165
211
|
*/
|
|
166
212
|
getTools(): CustomTool<TSchema, MCPToolDetails>[];
|
|
213
|
+
/**
|
|
214
|
+
* Read the fenced catalog and publication state atomically.
|
|
215
|
+
*
|
|
216
|
+
* An empty catalog is still authoritative after publication or while an
|
|
217
|
+
* exact control is in flight. Deferred startup may fall back to its discovery
|
|
218
|
+
* result only for the explicit `unpublished` state.
|
|
219
|
+
*/
|
|
220
|
+
getToolCatalogSnapshot(): MCPToolCatalogSnapshot;
|
|
221
|
+
isExactServerSuppressed(name: string): boolean;
|
|
222
|
+
/**
|
|
223
|
+
* Prepare one exact-config control without publishing manager state. Session
|
|
224
|
+
* registry and prompt validation run against `tools`; commit is the single
|
|
225
|
+
* publication point and abort releases only an unpublished candidate.
|
|
226
|
+
*/
|
|
227
|
+
prepareExactServerControl(action: "suspend" | "resume" | "reconnect", name: string): Promise<PreparedExactMcpServerControl>;
|
|
228
|
+
/** Clear all session-local suppression before this owner adopts a new identity. */
|
|
229
|
+
prepareExactServerControlReset(): Promise<PreparedExactMcpCatalog>;
|
|
167
230
|
/**
|
|
168
231
|
* Get a specific connection.
|
|
169
232
|
*/
|
|
@@ -145,6 +145,13 @@ export interface MCPPoolLease {
|
|
|
145
145
|
onEvent(listener: LeaseListener): () => void;
|
|
146
146
|
release(): Promise<void>;
|
|
147
147
|
}
|
|
148
|
+
export interface MCPPreparedReplacement {
|
|
149
|
+
readonly lease: MCPPoolLease;
|
|
150
|
+
canCommit(): boolean;
|
|
151
|
+
publish(): void;
|
|
152
|
+
commit(): void;
|
|
153
|
+
abort(): Promise<void>;
|
|
154
|
+
}
|
|
148
155
|
declare class MCPPoolLeaseImpl implements MCPPoolLease {
|
|
149
156
|
#private;
|
|
150
157
|
readonly generation: number;
|
|
@@ -187,7 +194,11 @@ export declare class MCPConnectionPool {
|
|
|
187
194
|
awaitRestart(key: string): Promise<boolean>;
|
|
188
195
|
finishRestart(key: string, error?: unknown): void;
|
|
189
196
|
releaseRestart(key: string): void;
|
|
197
|
+
private retiredCleanupId;
|
|
198
|
+
private getRetiredAcquisitionCleanup;
|
|
199
|
+
private getRetiredAcquisitionCleanupForKey;
|
|
190
200
|
private retainCancelledAcquireCleanup;
|
|
201
|
+
private retainPreparedCleanup;
|
|
191
202
|
private notifyPendingAcquireCleanup;
|
|
192
203
|
/** @internal Whether this pool still owns the notified abandoned-acquire flight. */
|
|
193
204
|
hasPendingAcquireCleanup(error: MCPPoolAcquireAbortError): boolean;
|
|
@@ -202,6 +213,12 @@ export declare class MCPConnectionPool {
|
|
|
202
213
|
/** @internal Join and retry one generation of abandoned acquisition cleanup. */
|
|
203
214
|
closePendingAcquireCleanup(key: string, generation: number): Promise<void>;
|
|
204
215
|
acquire(name: string, config: MCPServerConfig, options?: MCPPoolAcquireOptions): Promise<MCPPoolLease>;
|
|
216
|
+
/**
|
|
217
|
+
* Prepared MCP replacements fence and retain acquisition cleanup ownership
|
|
218
|
+
* The caller validates its catalog first, then commits the key swap
|
|
219
|
+
* synchronously or aborts and closes only the candidate.
|
|
220
|
+
*/
|
|
221
|
+
prepareReplacement(name: string, config: MCPServerConfig, options?: MCPPoolAcquireOptions): Promise<MCPPreparedReplacement>;
|
|
205
222
|
private waitForPendingEntry;
|
|
206
223
|
private scheduleZeroClaimCleanup;
|
|
207
224
|
private cancelPendingEntry;
|
|
@@ -1,2 +1,22 @@
|
|
|
1
|
+
import type { AgentSession } from "../session/agent-session";
|
|
1
2
|
export declare function redactMCPEndpoint(value: string | undefined): string | undefined;
|
|
2
3
|
export declare function redactMCPDiagnosticValue(value: unknown): unknown;
|
|
4
|
+
/**
|
|
5
|
+
* Capability granted to a session that the root interactive entry point created
|
|
6
|
+
* with an explicit `--mcp-config` path. Holding it is the only way to read exact
|
|
7
|
+
* MCP status; it carries no manager, transport, or configuration reference.
|
|
8
|
+
*/
|
|
9
|
+
export interface ExactMcpControls {
|
|
10
|
+
readonly grantSource: "root-interactive-exact-config";
|
|
11
|
+
/**
|
|
12
|
+
* The exact config this session was started with. Status needs it because a
|
|
13
|
+
* tools-only manager deletes a server from its own bookkeeping when the
|
|
14
|
+
* connection fails, so the manager alone can never report a server that did
|
|
15
|
+
* not come up — the very case an operator runs `/mcp` to see.
|
|
16
|
+
*/
|
|
17
|
+
readonly configPath: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function attachExactMcpControls(session: AgentSession, controls: ExactMcpControls): void;
|
|
20
|
+
export declare function getExactMcpControls(session: AgentSession): ExactMcpControls | undefined;
|
|
21
|
+
/** Revoke controls when the AgentSession object adopts a new logical identity. */
|
|
22
|
+
export declare function revokeExactMcpControls(session: AgentSession): void;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { MCPServerConfig } from "./types";
|
|
2
2
|
export type AutoloadStatus = "autoload" | "autoload-off" | "disabled";
|
|
3
|
+
/** Ordinary standalone sessions stop blocking on MCP startup after this wait. */
|
|
4
|
+
export declare const DEFAULT_MCP_STARTUP_WAIT_MS = 250;
|
|
5
|
+
/** Grace added to the largest declared per-server startup window. */
|
|
6
|
+
export declare const MCP_STARTUP_WAIT_GRACE_MS = 500;
|
|
7
|
+
/** Ordinary startup never blocks longer than this batch ceiling. */
|
|
8
|
+
export declare const MAX_MCP_STARTUP_WAIT_MS = 1750;
|
|
3
9
|
/** Pure startup policy shared by runtime-facing CLI inspection and doctor. */
|
|
4
10
|
export declare function computeAutoloadStatus(name: string, config: Pick<MCPServerConfig, "enabled" | "autoload">, disabledServers: ReadonlySet<string>): AutoloadStatus;
|
|
@@ -22,6 +22,13 @@ export interface MCPToolOptions {
|
|
|
22
22
|
* owning manager/runtime. Resolved per call so late registration still applies.
|
|
23
23
|
*/
|
|
24
24
|
inputHandler?: () => MCPInputRequestHandler | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Exact MCP session control: false while the owning manager has this server
|
|
27
|
+
* suspended. Checked alongside `#sessionControlInvalidated` so a wrapper that
|
|
28
|
+
* outlives a resume/reconnect still fails locally instead of reaching the
|
|
29
|
+
* transport for a server this session no longer has active.
|
|
30
|
+
*/
|
|
31
|
+
isAvailable?: () => boolean;
|
|
25
32
|
}
|
|
26
33
|
export declare function isRetriableConnectionError(error: unknown): boolean;
|
|
27
34
|
/** Details included in MCP tool results for rendering */
|
|
@@ -66,6 +73,7 @@ export declare class MCPTool implements CustomTool<TSchema, MCPToolDetails> {
|
|
|
66
73
|
/** Server name */
|
|
67
74
|
readonly mcpServerName: string;
|
|
68
75
|
private connection;
|
|
76
|
+
invalidateForSessionControl(): void;
|
|
69
77
|
/** Create MCPTool instances for all tools from an MCP server lease/connection. */
|
|
70
78
|
static fromTools(target: MCPToolTarget, tools: MCPToolDefinition[], reconnect?: MCPReconnect, options?: MCPToolOptions): MCPTool[];
|
|
71
79
|
constructor(target: MCPToolTarget, tool: MCPToolDefinition, reconnect?: MCPReconnect | undefined, options?: MCPToolOptions);
|
|
@@ -90,6 +98,7 @@ export declare class DeferredMCPTool implements CustomTool<TSchema, MCPToolDetai
|
|
|
90
98
|
readonly mcpToolName: string;
|
|
91
99
|
/** Server name */
|
|
92
100
|
readonly mcpServerName: string;
|
|
101
|
+
invalidateForSessionControl(): void;
|
|
93
102
|
/** Create DeferredMCPTool instances for all tools from an MCP server */
|
|
94
103
|
static fromTools(serverName: string, tools: MCPToolDefinition[], getConnection: () => Promise<MCPServerConnection>, source?: SourceMeta, reconnect?: MCPReconnect, options?: MCPToolOptions): DeferredMCPTool[];
|
|
95
104
|
constructor(serverName: string, tool: MCPToolDefinition, getConnection: () => Promise<MCPServerConnection>, source?: SourceMeta, reconnect?: MCPReconnect | undefined, options?: MCPToolOptions);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { MCPHttpServerConfig, MCPRequestOptions, MCPSseServerConfig, MCPTransport } from "../../runtime-mcp/types";
|
|
2
2
|
import { type MCPModernClientContext, type MCPProtocolEra } from "../protocol";
|
|
3
|
+
/** Live HTTP/SSE MCP transports awaiting postmortem release. Exposed for leak assertions/tests. */
|
|
4
|
+
export declare function liveHttpTransportCount(): number;
|
|
3
5
|
/**
|
|
4
6
|
* HTTP transport for MCP servers.
|
|
5
7
|
* Uses POST for requests, supports SSE responses.
|
|
@@ -38,6 +40,15 @@ export declare class HttpTransport implements MCPTransport {
|
|
|
38
40
|
startSSEListener(): Promise<void>;
|
|
39
41
|
request<T = unknown>(method: string, params?: Record<string, unknown>, options?: MCPRequestOptions): Promise<T>;
|
|
40
42
|
notify(method: string, params?: Record<string, unknown>): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Terminate the server-side session on a signal or fatal exit, without the
|
|
45
|
+
* reader drain `close()` does: postmortem runs inside the signal handler,
|
|
46
|
+
* where an aborted SSE body read is never observed by JS, so awaiting the
|
|
47
|
+
* readers there never settles and the DELETE stays unreachable. `onClose` is
|
|
48
|
+
* deliberately not fired - the manager reacts to it by reconnecting, which
|
|
49
|
+
* would open a fresh server session on the way out.
|
|
50
|
+
*/
|
|
51
|
+
releaseForPostmortem(signal: AbortSignal): Promise<void>;
|
|
41
52
|
close(): Promise<void>;
|
|
42
53
|
}
|
|
43
54
|
/**
|