@gajae-code/coding-agent 0.11.0 → 0.11.2
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 +63 -1
- package/dist/types/async/job-manager.d.ts +46 -7
- package/dist/types/cli/config-cli.d.ts +11 -1
- package/dist/types/cli/notify-cli.d.ts +1 -0
- package/dist/types/cli/session-picker.d.ts +2 -1
- package/dist/types/cli/setup-cli.d.ts +1 -1
- package/dist/types/commands/mcp-serve.d.ts +33 -0
- package/dist/types/commands/mcp.d.ts +1 -1
- package/dist/types/commands/notify.d.ts +0 -2
- package/dist/types/commands/sdk.d.ts +1 -1
- package/dist/types/config/atomic-yaml-patch.d.ts +18 -0
- package/dist/types/config/file-lock.d.ts +14 -4
- package/dist/types/config/keybindings.d.ts +42 -1
- package/dist/types/config/model-auth.d.ts +3 -0
- package/dist/types/config/model-bindings-applier.d.ts +13 -0
- package/dist/types/config/model-discovery-manager.d.ts +49 -0
- package/dist/types/config/model-equivalence.d.ts +20 -0
- package/dist/types/config/model-registry.d.ts +16 -15
- package/dist/types/config/model-resolver.d.ts +28 -18
- package/dist/types/config/models-config-schema.d.ts +11 -0
- package/dist/types/config/settings-schema.d.ts +56 -1
- package/dist/types/config/settings.d.ts +14 -11
- package/dist/types/coordinator-mcp/policy.d.ts +5 -0
- package/dist/types/coordinator-mcp/question-gate-codec.d.ts +129 -0
- package/dist/types/coordinator-mcp/question-state.d.ts +356 -0
- package/dist/types/coordinator-mcp/server.d.ts +4 -0
- package/dist/types/discovery/helpers.d.ts +0 -6
- package/dist/types/edit/index.d.ts +3 -0
- package/dist/types/eval/py/env.d.ts +9 -0
- package/dist/types/extensibility/extensions/loader.d.ts +2 -1
- package/dist/types/extensibility/extensions/runner.d.ts +2 -2
- package/dist/types/extensibility/extensions/types.d.ts +34 -3
- package/dist/types/extensibility/hooks/runner.d.ts +1 -1
- package/dist/types/extensibility/shared-events.d.ts +2 -0
- package/dist/types/gjc-runtime/deep-interview-recorder.d.ts +10 -1
- package/dist/types/gjc-runtime/deep-interview-state.d.ts +44 -0
- package/dist/types/gjc-runtime/goal-mode-request.d.ts +11 -1
- package/dist/types/gjc-runtime/launch-worktree.d.ts +4 -2
- package/dist/types/gjc-runtime/linux-proc.d.ts +29 -0
- package/dist/types/gjc-runtime/session-resolution.d.ts +2 -2
- package/dist/types/gjc-runtime/state-migrations.d.ts +1 -1
- package/dist/types/gjc-runtime/state-writer.d.ts +2 -1
- package/dist/types/gjc-runtime/team-launch.d.ts +59 -0
- package/dist/types/gjc-runtime/team-notify.d.ts +45 -0
- package/dist/types/gjc-runtime/team-runtime.d.ts +29 -121
- package/dist/types/gjc-runtime/team-store.d.ts +160 -0
- package/dist/types/gjc-runtime/team-workers.d.ts +78 -0
- package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +8 -0
- package/dist/types/gjc-runtime/ultragoal-change-set.d.ts +13 -0
- package/dist/types/gjc-runtime/ultragoal-evidence.d.ts +38 -0
- package/dist/types/gjc-runtime/ultragoal-guard.d.ts +7 -0
- package/dist/types/gjc-runtime/ultragoal-pipeline.d.ts +23 -0
- package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +11 -0
- package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +55 -33
- package/dist/types/gjc-runtime/workflow-cli-common.d.ts +8 -0
- package/dist/types/gjc-runtime/workflow-manifest.d.ts +3 -0
- package/dist/types/goals/continuation-timeout-guard.d.ts +22 -0
- package/dist/types/goals/runtime.d.ts +1 -0
- package/dist/types/goals/state.d.ts +8 -0
- package/dist/types/harness-control-plane/lifecycle-reconciliation.d.ts +17 -0
- package/dist/types/harness-control-plane/phase-rollup.d.ts +4 -7
- package/dist/types/harness-control-plane/receipt-ingest.d.ts +5 -0
- package/dist/types/harness-control-plane/receipt-spool.d.ts +4 -0
- package/dist/types/hindsight/state.d.ts +11 -4
- package/dist/types/lsp/lspmux.d.ts +5 -3
- package/dist/types/lsp/path-trust.d.ts +1 -0
- package/dist/types/main.d.ts +3 -2
- package/dist/types/memories/storage.d.ts +1 -0
- package/dist/types/modes/action-registry.d.ts +29 -0
- package/dist/types/modes/components/chrome.d.ts +14 -0
- package/dist/types/modes/components/command-palette.d.ts +27 -0
- package/dist/types/modes/components/custom-provider-wizard.d.ts +1 -0
- package/dist/types/modes/components/index.d.ts +2 -1
- package/dist/types/modes/components/pet-selector.d.ts +1 -1
- package/dist/types/modes/components/plan-preview-overlay.d.ts +43 -0
- package/dist/types/modes/components/queue-mode-selector.d.ts +1 -1
- package/dist/types/modes/components/queue-pane.d.ts +12 -0
- package/dist/types/modes/components/read-tool-group.d.ts +6 -0
- package/dist/types/modes/components/session-observer-overlay.d.ts +3 -4
- package/dist/types/modes/components/sessions-dashboard.d.ts +32 -0
- package/dist/types/modes/components/settings-selector.d.ts +1 -1
- package/dist/types/modes/components/show-images-selector.d.ts +1 -1
- package/dist/types/modes/components/status-line/types.d.ts +1 -1
- package/dist/types/modes/components/status-line.d.ts +1 -94
- package/dist/types/modes/components/tasks-pane.d.ts +15 -0
- package/dist/types/modes/components/theme-selector.d.ts +1 -1
- package/dist/types/modes/components/tool-execution.d.ts +15 -0
- package/dist/types/modes/components/tool-status-header.d.ts +111 -0
- package/dist/types/modes/components/transcript-viewer-overlay.d.ts +42 -0
- package/dist/types/modes/controllers/command-controller.d.ts +2 -2
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -0
- package/dist/types/modes/controllers/goal-mode-controller.d.ts +62 -0
- package/dist/types/modes/controllers/input-controller.d.ts +8 -1
- package/dist/types/modes/controllers/mode-gate.d.ts +8 -0
- package/dist/types/modes/controllers/plan-mode-controller.d.ts +65 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +15 -3
- package/dist/types/modes/controllers/stt-controller.d.ts +26 -0
- package/dist/types/modes/interactive-mode.d.ts +21 -19
- package/dist/types/modes/jobs-observer.d.ts +2 -0
- package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -11
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +21 -2
- package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +31 -0
- package/dist/types/modes/tasks-aggregator.d.ts +39 -0
- package/dist/types/modes/transcript-item-registry.d.ts +60 -0
- package/dist/types/modes/types.d.ts +22 -15
- package/dist/types/modes/utils/ui-helpers.d.ts +2 -2
- package/dist/types/runtime-mcp/manager.d.ts +1 -1
- package/dist/types/sdk/broker/broker.d.ts +78 -12
- package/dist/types/sdk/broker/ensure.d.ts +9 -0
- package/dist/types/sdk/broker/lifecycle-codec.d.ts +4 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +15 -1
- package/dist/types/sdk/broker/lifecycle.d.ts +6 -2
- package/dist/types/sdk/broker/process-incarnation.d.ts +2 -0
- package/dist/types/sdk/broker/session-index.d.ts +0 -1
- package/dist/types/sdk/broker/state-version.d.ts +2 -0
- package/dist/types/sdk/bus/chat-effect-journal.d.ts +1 -0
- package/dist/types/sdk/bus/config-commands.d.ts +1 -1
- package/dist/types/sdk/bus/config.d.ts +11 -0
- package/dist/types/sdk/bus/daemon-paths.d.ts +1 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +5 -0
- package/dist/types/sdk/bus/html-format.d.ts +3 -2
- package/dist/types/sdk/bus/index.d.ts +27 -0
- package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +4 -0
- package/dist/types/sdk/bus/notification-service.d.ts +20 -0
- package/dist/types/sdk/bus/rate-limit-pool.d.ts +13 -2
- package/dist/types/sdk/bus/recent-activity.d.ts +21 -12
- package/dist/types/sdk/bus/rich-document.d.ts +7 -0
- package/dist/types/sdk/bus/rich-render.d.ts +18 -41
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +9 -4
- package/dist/types/sdk/bus/telegram-daemon.d.ts +69 -3
- package/dist/types/sdk/bus/threaded-inbound.d.ts +1 -1
- package/dist/types/sdk/bus/threaded-render.d.ts +13 -0
- package/dist/types/sdk/bus/topic-registry.d.ts +24 -2
- package/dist/types/sdk/host/control/operations.d.ts +1 -1
- package/dist/types/sdk/host/host.d.ts +2 -0
- package/dist/types/sdk/index.d.ts +1 -0
- package/dist/types/sdk/session-directory.d.ts +56 -0
- package/dist/types/session/agent-session.d.ts +82 -47
- package/dist/types/session/agent-storage.d.ts +7 -0
- package/dist/types/session/fallback-chain-controller.d.ts +10 -2
- package/dist/types/session/internal/managed-session-scope.d.ts +102 -0
- package/dist/types/session/internal/managed-session-storage.d.ts +38 -0
- package/dist/types/session/messages.d.ts +16 -0
- package/dist/types/session/session-manager-internal.d.ts +14 -0
- package/dist/types/session/session-manager.d.ts +82 -12
- package/dist/types/session/session-storage.d.ts +43 -3
- package/dist/types/session/volatile-context-pruning.d.ts +15 -0
- package/dist/types/skill-state/{deep-interview-mutation-guard.d.ts → workflow-mutation-guard.d.ts} +24 -8
- package/dist/types/skill-state/workflow-state-contract.d.ts +1 -3
- package/dist/types/slash-commands/builtin-registry.d.ts +4 -1
- package/dist/types/system-prompt.d.ts +2 -11
- package/dist/types/task/executor.d.ts +3 -1
- package/dist/types/thinking.d.ts +7 -0
- package/dist/types/tool-discovery/tool-index.d.ts +1 -50
- package/dist/types/tools/ask.d.ts +64 -2
- package/dist/types/tools/bash.d.ts +3 -0
- package/dist/types/tools/browser/dead-tab-recovery.d.ts +24 -0
- package/dist/types/tools/browser/tab-supervisor.d.ts +21 -0
- package/dist/types/tools/cron.d.ts +2 -0
- package/dist/types/tools/fetch.d.ts +1 -0
- package/dist/types/tools/index.d.ts +30 -15
- package/dist/types/tools/output-meta.d.ts +1 -0
- package/dist/types/tools/read.d.ts +3 -0
- package/dist/types/tools/search-tool-bm25.d.ts +3 -4
- package/dist/types/tools/subagent-render.d.ts +1 -0
- package/dist/types/tools/subagent.d.ts +6 -1
- package/dist/types/utils/event-bus.d.ts +1 -1
- package/dist/types/web/search/index.d.ts +3 -1
- package/package.json +21 -9
- package/scripts/build-sdk-package-smoke.ts +39 -1
- package/scripts/generate-hotkeys-docs.ts +74 -0
- package/scripts/generate-sdk-operation-inventory.ts +64 -20
- package/scripts/verify-gjc-sdk-canonicalization.ts +182 -2
- package/src/async/job-manager.ts +455 -69
- package/src/cli/config-cli.ts +75 -2
- package/src/cli/notify-cli.ts +92 -26
- package/src/cli/session-picker.ts +20 -3
- package/src/cli/setup-cli.ts +1 -1
- package/src/cli.ts +1 -1
- package/src/commands/config.ts +1 -1
- package/src/commands/harness.ts +34 -106
- package/src/commands/launch.ts +6 -4
- package/src/commands/mcp-serve.ts +85 -8
- package/src/commands/mcp.ts +2 -2
- package/src/commands/notify.ts +8 -4
- package/src/commands/sdk.ts +61 -40
- package/src/commands/ultragoal.ts +4 -1
- package/src/config/atomic-yaml-patch.ts +80 -13
- package/src/config/file-lock.ts +105 -43
- package/src/config/keybindings.ts +64 -20
- package/src/config/model-auth.ts +9 -0
- package/src/config/model-bindings-applier.ts +139 -0
- package/src/config/model-discovery-manager.ts +224 -0
- package/src/config/model-equivalence.ts +66 -0
- package/src/config/model-registry.ts +169 -302
- package/src/config/model-resolver.ts +361 -369
- package/src/config/models-config-schema.ts +5 -4
- package/src/config/settings-schema.ts +159 -2
- package/src/config/settings.ts +458 -482
- package/src/coordinator-mcp/policy.ts +76 -11
- package/src/coordinator-mcp/question-gate-codec.ts +274 -0
- package/src/coordinator-mcp/question-state.ts +778 -0
- package/src/coordinator-mcp/server.ts +1702 -238
- package/src/debug/index.ts +1 -1
- package/src/defaults/gjc/skills/deep-interview/SKILL.md +13 -1
- package/src/defaults/gjc/skills/team/SKILL.md +16 -0
- package/src/discovery/helpers.ts +1 -50
- package/src/edit/index.ts +64 -0
- package/src/eval/py/env.ts +26 -0
- package/src/eval/py/kernel.ts +5 -3
- package/src/extensibility/extensions/loader.ts +9 -1
- package/src/extensibility/extensions/runner.ts +12 -3
- package/src/extensibility/extensions/types.ts +39 -1
- package/src/extensibility/gjc-plugins/installer.ts +16 -16
- package/src/extensibility/hooks/runner.ts +2 -2
- package/src/extensibility/runtime-skill-discovery.ts +33 -13
- package/src/extensibility/shared-events.ts +2 -0
- package/src/gjc-runtime/deep-interview-recorder.ts +63 -3
- package/src/gjc-runtime/deep-interview-runtime.ts +76 -27
- package/src/gjc-runtime/deep-interview-state.ts +317 -5
- package/src/gjc-runtime/goal-mode-request.ts +55 -8
- package/src/gjc-runtime/launch-tmux.ts +2 -5
- package/src/gjc-runtime/launch-worktree.ts +5 -5
- package/src/gjc-runtime/linux-proc.ts +71 -0
- package/src/gjc-runtime/ralplan-runtime.ts +74 -90
- package/src/gjc-runtime/session-resolution.ts +18 -3
- package/src/gjc-runtime/session-state-sidecar.ts +6 -107
- package/src/gjc-runtime/state-migrations.ts +1 -1
- package/src/gjc-runtime/state-runtime.ts +320 -249
- package/src/gjc-runtime/state-writer.ts +36 -40
- package/src/gjc-runtime/team-launch.ts +319 -0
- package/src/gjc-runtime/team-notify.ts +326 -0
- package/src/gjc-runtime/team-runtime.ts +1099 -1482
- package/src/gjc-runtime/team-store.ts +828 -0
- package/src/gjc-runtime/team-workers.ts +962 -0
- package/src/gjc-runtime/tmux-owner-isolation-cli.ts +2 -11
- package/src/gjc-runtime/tmux-owner-isolation.ts +14 -9
- package/src/gjc-runtime/tmux-sessions.ts +4 -21
- package/src/gjc-runtime/ultragoal-change-set.ts +172 -0
- package/src/gjc-runtime/ultragoal-evidence.ts +874 -0
- package/src/gjc-runtime/ultragoal-guard.ts +83 -12
- package/src/gjc-runtime/ultragoal-pipeline.ts +306 -0
- package/src/gjc-runtime/ultragoal-receipt-freshness.ts +102 -1
- package/src/gjc-runtime/ultragoal-runtime.ts +156 -1319
- package/src/gjc-runtime/workflow-cli-common.ts +30 -0
- package/src/gjc-runtime/workflow-manifest.generated.json +58 -0
- package/src/gjc-runtime/workflow-manifest.ts +18 -0
- package/src/goals/continuation-timeout-guard.ts +79 -0
- package/src/goals/runtime.ts +7 -5
- package/src/goals/state.ts +18 -0
- package/src/harness-control-plane/lifecycle-reconciliation.ts +64 -0
- package/src/harness-control-plane/phase-rollup.ts +4 -7
- package/src/harness-control-plane/receipt-ingest.ts +5 -0
- package/src/harness-control-plane/receipt-spool.ts +51 -7
- package/src/harness-control-plane/session-lease.ts +12 -130
- package/src/hindsight/backend.ts +26 -27
- package/src/hindsight/state.ts +101 -32
- package/src/hooks/skill-state.ts +17 -11
- package/src/internal-urls/docs-index.generated.ts +21 -18
- package/src/lsp/client.ts +1 -1
- package/src/lsp/config.ts +145 -26
- package/src/lsp/index.ts +1 -1
- package/src/lsp/lspmux.ts +39 -10
- package/src/lsp/path-trust.ts +81 -0
- package/src/main.ts +28 -8
- package/src/memories/index.ts +1 -0
- package/src/memories/storage.ts +6 -2
- package/src/modes/action-registry.ts +165 -0
- package/src/modes/components/chrome.ts +40 -0
- package/src/modes/components/command-palette.ts +168 -0
- package/src/modes/components/custom-editor.ts +1 -1
- package/src/modes/components/custom-provider-wizard.ts +51 -14
- package/src/modes/components/index.ts +2 -1
- package/src/modes/components/pet-selector.ts +11 -17
- package/src/modes/components/plan-preview-overlay.ts +295 -0
- package/src/modes/components/queue-mode-selector.ts +10 -27
- package/src/modes/components/queue-pane.ts +79 -0
- package/src/modes/components/read-tool-group.ts +13 -0
- package/src/modes/components/session-observer-overlay.ts +207 -772
- package/src/modes/components/sessions-dashboard.ts +181 -0
- package/src/modes/components/settings-selector.ts +1 -1
- package/src/modes/components/show-images-selector.ts +10 -24
- package/src/modes/components/status-line/types.ts +1 -1
- package/src/modes/components/status-line.ts +1 -969
- package/src/modes/components/tasks-pane.ts +73 -0
- package/src/modes/components/theme-selector.ts +11 -31
- package/src/modes/components/tool-execution.ts +22 -0
- package/src/modes/components/tool-status-header.ts +1056 -0
- package/src/modes/components/transcript-viewer-overlay.ts +384 -0
- package/src/modes/controllers/btw-controller.ts +1 -0
- package/src/modes/controllers/command-controller.ts +9 -15
- package/src/modes/controllers/event-controller.ts +3 -2
- package/src/modes/controllers/extension-ui-controller.ts +72 -25
- package/src/modes/controllers/goal-mode-controller.ts +474 -0
- package/src/modes/controllers/input-controller.ts +764 -229
- package/src/modes/controllers/mode-gate.ts +24 -0
- package/src/modes/controllers/plan-mode-controller.ts +517 -0
- package/src/modes/controllers/selector-controller.ts +225 -10
- package/src/modes/controllers/stt-controller.ts +125 -0
- package/src/modes/interactive-mode.ts +302 -1151
- package/src/modes/jobs-observer.ts +3 -0
- package/src/modes/runtime-init.ts +8 -0
- package/src/modes/shared/agent-wire/deep-interview-gate.ts +31 -106
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +78 -19
- package/src/modes/shared/agent-wire/workflow-gate-types.ts +177 -0
- package/src/modes/tasks-aggregator.ts +199 -0
- package/src/modes/transcript-item-registry.ts +229 -0
- package/src/modes/types.ts +47 -20
- package/src/modes/utils/ui-helpers.ts +17 -9
- package/src/prompts/agent-fragments/ralplan-persistence.md +6 -0
- package/src/prompts/agent-fragments/restricted-bash.md +1 -0
- package/src/prompts/agents/architect.md +2 -8
- package/src/prompts/agents/critic.md +2 -8
- package/src/prompts/agents/executor.md +3 -0
- package/src/prompts/agents/planner.md +4 -12
- package/src/prompts/system/custom-system-prompt.md +1 -23
- package/src/prompts/system/plan-mode-approved.md +8 -0
- package/src/prompts/system/system-prompt.md +17 -96
- package/src/prompts/tools/bash.md +4 -4
- package/src/prompts/tools/browser.md +15 -52
- package/src/prompts/tools/find.md +2 -2
- package/src/prompts/tools/hashline.md +13 -55
- package/src/prompts/tools/read.md +3 -6
- package/src/prompts/tools/search-tool-bm25.md +0 -2
- package/src/prompts/tools/search.md +2 -4
- package/src/prompts/tools/skill-discovery.md +1 -2
- package/src/prompts/tools/task.md +1 -1
- package/src/runtime-mcp/manager.ts +1 -1
- package/src/sdk/broker/broker.ts +206 -78
- package/src/sdk/broker/discovery.ts +21 -2
- package/src/sdk/broker/ensure.ts +85 -25
- package/src/sdk/broker/lifecycle-codec.ts +11 -0
- package/src/sdk/broker/lifecycle-ledger.ts +371 -74
- package/src/sdk/broker/lifecycle.ts +1399 -142
- package/src/sdk/broker/process-incarnation.ts +5 -13
- package/src/sdk/broker/session-index.ts +145 -56
- package/src/sdk/broker/state-version.ts +21 -0
- package/src/sdk/broker/transport.ts +1 -1
- package/src/sdk/bus/chat-daemon-cli.ts +2 -0
- package/src/sdk/bus/chat-daemon-control.ts +8 -28
- package/src/sdk/bus/chat-effect-journal.ts +14 -4
- package/src/sdk/bus/config-commands.ts +5 -4
- package/src/sdk/bus/config.ts +98 -0
- package/src/sdk/bus/conversation-store.ts +5 -29
- package/src/sdk/bus/daemon-paths.ts +2 -0
- package/src/sdk/bus/discord-daemon.ts +25 -8
- package/src/sdk/bus/html-format.ts +20 -3
- package/src/sdk/bus/index.ts +834 -113
- package/src/sdk/bus/lifecycle-control-runtime.ts +91 -33
- package/src/sdk/bus/native-runtime-compatibility.ts +1 -1
- package/src/sdk/bus/natives-augment.d.ts +26 -1
- package/src/sdk/bus/notification-service.ts +168 -20
- package/src/sdk/bus/rate-limit-pool.ts +58 -14
- package/src/sdk/bus/recent-activity.ts +188 -74
- package/src/sdk/bus/rich-document.ts +258 -0
- package/src/sdk/bus/rich-render.ts +62 -70
- package/src/sdk/bus/telegram-daemon-cli.ts +15 -59
- package/src/sdk/bus/telegram-daemon-contract.ts +9 -4
- package/src/sdk/bus/telegram-daemon.ts +1491 -247
- package/src/sdk/bus/threaded-inbound.ts +8 -3
- package/src/sdk/bus/threaded-render.ts +57 -1
- package/src/sdk/bus/topic-registry.ts +120 -13
- package/src/sdk/host/control/dispatch.ts +14 -2
- package/src/sdk/host/control/operations.ts +6 -1
- package/src/sdk/host/host.ts +31 -1
- package/src/sdk/host/query/handlers.ts +20 -22
- package/src/sdk/host/query/revision-store.ts +80 -57
- package/src/sdk/index.ts +1 -0
- package/src/sdk/protocol/operation-inventory.generated.json +943 -1907
- package/src/sdk/session-directory.ts +141 -0
- package/src/sdk/session.ts +458 -479
- package/src/session/agent-session.ts +1901 -637
- package/src/session/agent-storage.ts +18 -0
- package/src/session/cache-economics.ts +25 -8
- package/src/session/fallback-chain-controller.ts +53 -3
- package/src/session/internal/managed-session-scope.ts +2226 -0
- package/src/session/internal/managed-session-storage.ts +453 -0
- package/src/session/messages.ts +91 -2
- package/src/session/session-manager-internal.ts +33 -0
- package/src/session/session-manager.ts +1112 -333
- package/src/session/session-storage.ts +444 -39
- package/src/session/volatile-context-pruning.ts +78 -0
- package/src/setup/credential-auto-import.ts +2 -1
- package/src/setup/hermes/templates/operator-instructions.v1.md +1 -1
- package/src/setup/provider-onboarding.ts +36 -61
- package/src/setup/provider-presets.json +5 -0
- package/src/skill-state/active-state.ts +3 -13
- package/src/skill-state/{deep-interview-mutation-guard.ts → workflow-mutation-guard.ts} +47 -29
- package/src/skill-state/workflow-state-contract.ts +6 -41
- package/src/slash-commands/builtin-registry.ts +46 -11
- package/src/system-prompt.ts +37 -44
- package/src/task/agents.ts +19 -1
- package/src/task/executor.ts +90 -6
- package/src/task/index.ts +62 -37
- package/src/thinking.ts +21 -6
- package/src/tool-discovery/tool-index.ts +2 -134
- package/src/tools/ask.ts +157 -21
- package/src/tools/ast-edit.ts +1 -1
- package/src/tools/bash.ts +38 -0
- package/src/tools/browser/dead-tab-recovery.ts +78 -0
- package/src/tools/browser/tab-supervisor.ts +282 -36
- package/src/tools/computer.ts +10 -3
- package/src/tools/cron.ts +30 -16
- package/src/tools/eval.ts +1 -2
- package/src/tools/fetch.ts +11 -4
- package/src/tools/index.ts +76 -24
- package/src/tools/output-meta.ts +13 -5
- package/src/tools/read.ts +37 -1
- package/src/tools/resource-gc.ts +2 -2
- package/src/tools/search-tool-bm25.ts +11 -74
- package/src/tools/subagent-render.ts +19 -8
- package/src/tools/subagent.ts +84 -32
- package/src/utils/event-bus.ts +9 -4
- package/src/web/search/index.ts +3 -3
- package/dist/types/discovery/plugin-dir-roots.d.ts +0 -15
- package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +0 -7
- package/src/discovery/plugin-dir-roots.ts +0 -28
- package/src/runtime-mcp/discoverable-tool-metadata.ts +0 -25
package/src/tools/subagent.ts
CHANGED
|
@@ -80,8 +80,17 @@ export interface SubagentSnapshot {
|
|
|
80
80
|
modelFellBack?: boolean;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
export type SubagentAwaitOutcome = "completed" | "timed_out" | "interrupted";
|
|
84
|
+
|
|
85
|
+
const AWAIT_INTERRUPTED_GUIDANCE =
|
|
86
|
+
"Await interrupted; this subagent continues. Inspect its current state or cancel it only when necessary.";
|
|
87
|
+
|
|
83
88
|
export interface SubagentToolDetails {
|
|
84
89
|
subagents: SubagentSnapshot[];
|
|
90
|
+
/** Await outcome for a live await receipt; omitted when no wait was started. */
|
|
91
|
+
awaitOutcome?: SubagentAwaitOutcome;
|
|
92
|
+
/** True only when the parent await was interrupted; the child was not cancelled. */
|
|
93
|
+
interrupted?: true;
|
|
85
94
|
}
|
|
86
95
|
|
|
87
96
|
export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentToolDetails> {
|
|
@@ -370,35 +379,50 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
|
|
|
370
379
|
// the viewport (the source of the await-panel repaint storms).
|
|
371
380
|
emitIfChanged(true);
|
|
372
381
|
|
|
373
|
-
let
|
|
382
|
+
let awaitOutcome: SubagentAwaitOutcome;
|
|
383
|
+
const { promise: timeoutPromise, resolve: resolveTimeout } = Promise.withResolvers<SubagentAwaitOutcome>();
|
|
384
|
+
const timeoutTimer = setTimeout(() => resolveTimeout("timed_out"), timeoutMs);
|
|
385
|
+
const completionPromise = Promise.all(runningJobs.map(job => job.promise)).then(() => "completed" as const);
|
|
386
|
+
let onAbort: (() => void) | undefined;
|
|
374
387
|
try {
|
|
375
|
-
const completionPromise = Promise.all(runningJobs.map(job => job.promise));
|
|
376
|
-
const timeoutPromise = Bun.sleep(timeoutMs).then(() => {
|
|
377
|
-
timedOut = true;
|
|
378
|
-
});
|
|
379
388
|
if (signal) {
|
|
380
|
-
const { promise: abortPromise, resolve:
|
|
381
|
-
|
|
382
|
-
signal.
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
} finally {
|
|
386
|
-
signal.removeEventListener("abort", onAbort);
|
|
387
|
-
}
|
|
389
|
+
const { promise: abortPromise, resolve: resolveAbort } = Promise.withResolvers<SubagentAwaitOutcome>();
|
|
390
|
+
onAbort = () => resolveAbort("interrupted");
|
|
391
|
+
if (signal.aborted) onAbort();
|
|
392
|
+
else signal.addEventListener("abort", onAbort, { once: true });
|
|
393
|
+
awaitOutcome = await Promise.race([completionPromise, timeoutPromise, abortPromise]);
|
|
388
394
|
} else {
|
|
389
|
-
await Promise.race([completionPromise, timeoutPromise]);
|
|
395
|
+
awaitOutcome = await Promise.race([completionPromise, timeoutPromise]);
|
|
390
396
|
}
|
|
391
397
|
} finally {
|
|
392
|
-
|
|
398
|
+
clearTimeout(timeoutTimer);
|
|
399
|
+
if (signal && onAbort) signal.removeEventListener("abort", onAbort);
|
|
393
400
|
if (progressTimer) clearInterval(progressTimer);
|
|
394
401
|
}
|
|
402
|
+
if (awaitOutcome !== "interrupted") {
|
|
403
|
+
const terminalWatchedJobIds = watchedJobIds.filter(jobId => {
|
|
404
|
+
const status = manager.getJob(jobId)?.status;
|
|
405
|
+
return status === "completed" || status === "failed" || status === "cancelled";
|
|
406
|
+
});
|
|
407
|
+
manager.acknowledgeDeliveries(terminalWatchedJobIds);
|
|
408
|
+
}
|
|
409
|
+
manager.unwatchJobs(watchedJobIds);
|
|
395
410
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
411
|
+
const finalRecords = this.#visibleRecordsByIds(
|
|
412
|
+
manager,
|
|
413
|
+
records.map(record => record.subagentId),
|
|
414
|
+
ownerFilter,
|
|
415
|
+
);
|
|
416
|
+
const finalNotFoundIds = [...new Set([...notFoundIds, ...records.map(record => record.subagentId)])].filter(
|
|
417
|
+
id => !finalRecords.some(record => record.subagentId === id),
|
|
418
|
+
);
|
|
419
|
+
return await this.#buildRecordResult(manager, finalRecords, {
|
|
420
|
+
title: awaitOutcome === "interrupted" ? "Subagent await interrupted" : "Subagent await",
|
|
421
|
+
notFoundIds: finalNotFoundIds,
|
|
422
|
+
timedOut: awaitOutcome === "timed_out",
|
|
400
423
|
verbosity: params.verbosity ?? "receipt",
|
|
401
424
|
attachLiveProgress: true,
|
|
425
|
+
awaitOutcome,
|
|
402
426
|
});
|
|
403
427
|
}
|
|
404
428
|
|
|
@@ -516,6 +540,7 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
|
|
|
516
540
|
timedOut?: boolean;
|
|
517
541
|
verbosity?: SubagentParams["verbosity"];
|
|
518
542
|
attachLiveProgress?: boolean;
|
|
543
|
+
awaitOutcome?: SubagentAwaitOutcome;
|
|
519
544
|
},
|
|
520
545
|
): Promise<AgentToolResult<SubagentToolDetails>> {
|
|
521
546
|
const verifiedOutputIds = await this.#verifiedOutputIds(records);
|
|
@@ -530,18 +555,34 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
|
|
|
530
555
|
for (const id of options.notFoundIds ?? []) {
|
|
531
556
|
snapshots.push(this.#missingSnapshot(id, "not_found", "No visible detached subagent matches this id."));
|
|
532
557
|
}
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
s
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
558
|
+
if (options.awaitOutcome !== "interrupted") {
|
|
559
|
+
manager.acknowledgeDeliveries(
|
|
560
|
+
snapshots
|
|
561
|
+
.filter(
|
|
562
|
+
s =>
|
|
563
|
+
s.status !== "running" &&
|
|
564
|
+
s.status !== "paused" &&
|
|
565
|
+
s.status !== "queued" &&
|
|
566
|
+
s.status !== "not_found",
|
|
567
|
+
)
|
|
568
|
+
.map(s => s.jobId),
|
|
569
|
+
);
|
|
570
|
+
}
|
|
571
|
+
if (options.awaitOutcome === "interrupted") {
|
|
572
|
+
for (const snapshot of snapshots) {
|
|
573
|
+
if (snapshot.status === "running" || snapshot.status === "paused" || snapshot.status === "queued") {
|
|
574
|
+
snapshot.guidance = AWAIT_INTERRUPTED_GUIDANCE;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
return this.#buildSnapshotResult(snapshots, options.title, options.awaitOutcome);
|
|
542
579
|
}
|
|
543
580
|
|
|
544
|
-
#buildSnapshotResult(
|
|
581
|
+
#buildSnapshotResult(
|
|
582
|
+
snapshots: SubagentSnapshot[],
|
|
583
|
+
title: string,
|
|
584
|
+
awaitOutcome?: SubagentAwaitOutcome,
|
|
585
|
+
): AgentToolResult<SubagentToolDetails> {
|
|
545
586
|
const lines = [`## ${title} (${snapshots.length})`, ""];
|
|
546
587
|
for (const snapshot of snapshots) {
|
|
547
588
|
lines.push(`### ${snapshot.id} — ${snapshot.status}`);
|
|
@@ -571,7 +612,11 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
|
|
|
571
612
|
}
|
|
572
613
|
return {
|
|
573
614
|
content: [{ type: "text", text: lines.join("\n").trimEnd() }],
|
|
574
|
-
details: {
|
|
615
|
+
details: {
|
|
616
|
+
subagents: snapshots,
|
|
617
|
+
...(awaitOutcome ? { awaitOutcome } : {}),
|
|
618
|
+
...(awaitOutcome === "interrupted" ? { interrupted: true } : {}),
|
|
619
|
+
},
|
|
575
620
|
};
|
|
576
621
|
}
|
|
577
622
|
|
|
@@ -778,8 +823,15 @@ function previewJobOutput(
|
|
|
778
823
|
* countdown ticking is sacrificed by design; every real transition still changes
|
|
779
824
|
* the signature.
|
|
780
825
|
*/
|
|
781
|
-
export function subagentAwaitRenderedStateSignature(
|
|
782
|
-
|
|
826
|
+
export function subagentAwaitRenderedStateSignature(
|
|
827
|
+
subagents: readonly SubagentSnapshot[],
|
|
828
|
+
receipt?: Pick<SubagentToolDetails, "awaitOutcome" | "interrupted">,
|
|
829
|
+
): string {
|
|
830
|
+
return JSON.stringify({
|
|
831
|
+
awaitOutcome: receipt?.awaitOutcome ?? null,
|
|
832
|
+
interrupted: receipt?.interrupted === true,
|
|
833
|
+
subagents: subagents.map(canonicalizeSnapshotForSignature),
|
|
834
|
+
});
|
|
783
835
|
}
|
|
784
836
|
|
|
785
837
|
function canonicalizeSnapshotForSignature(snapshot: SubagentSnapshot): unknown {
|
package/src/utils/event-bus.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { logger } from "@gajae-code/utils";
|
|
2
2
|
|
|
3
3
|
export class EventBus {
|
|
4
|
-
readonly #listeners = new Map<string, Set<(data: unknown) => void
|
|
4
|
+
readonly #listeners = new Map<string, Set<(data: unknown) => void | PromiseLike<void>>>();
|
|
5
5
|
|
|
6
6
|
emit(channel: string, data: unknown): void {
|
|
7
7
|
const handlers = this.#listeners.get(channel);
|
|
@@ -12,13 +12,18 @@ export class EventBus {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
on(channel: string, handler: (data: unknown) => void): () => void {
|
|
15
|
+
on(channel: string, handler: (data: unknown) => void | PromiseLike<void>): () => void {
|
|
16
16
|
if (!this.#listeners.has(channel)) {
|
|
17
17
|
this.#listeners.set(channel, new Set());
|
|
18
18
|
}
|
|
19
|
-
const safeHandler =
|
|
19
|
+
const safeHandler = (data: unknown): void => {
|
|
20
20
|
try {
|
|
21
|
-
|
|
21
|
+
const result = handler(data);
|
|
22
|
+
if (result && typeof result.then === "function") {
|
|
23
|
+
Promise.resolve(result).catch(err => {
|
|
24
|
+
logger.error("Event handler error", { channel, error: String(err) });
|
|
25
|
+
});
|
|
26
|
+
}
|
|
22
27
|
} catch (err) {
|
|
23
28
|
logger.error("Event handler error", { channel, error: String(err) });
|
|
24
29
|
}
|
package/src/web/search/index.ts
CHANGED
|
@@ -91,7 +91,7 @@ function formatCount(label: string, count: number): string {
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
/** Format response for LLM consumption */
|
|
94
|
-
function
|
|
94
|
+
export function formatSearchResponseForLlm(response: SearchResponse): string {
|
|
95
95
|
const parts: string[] = [];
|
|
96
96
|
|
|
97
97
|
if (response.answer) {
|
|
@@ -138,7 +138,7 @@ function formatForLLM(response: SearchResponse): string {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
return parts.join("\n")
|
|
141
|
+
return `<untrusted-content>\n${parts.join("\n").replace(/<\/untrusted-content>/gi, "</untrusted-content>")}\n</untrusted-content>`;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
interface ExecuteSearchOptions {
|
|
@@ -248,7 +248,7 @@ async function executeSearch(
|
|
|
248
248
|
response = await provider.search({ ...baseSearchParams, signal });
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
const text =
|
|
251
|
+
const text = formatSearchResponseForLlm(response);
|
|
252
252
|
const warning = failures.length > 0 ? formatFallbackWarning(failures, provider) : undefined;
|
|
253
253
|
|
|
254
254
|
return {
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/** Synthetic plugin root for a --plugin-dir path. Shape-compatible with Anthropic modelPluginRoot. */
|
|
2
|
-
export interface PluginDirRoot {
|
|
3
|
-
id: string;
|
|
4
|
-
marketplace: string;
|
|
5
|
-
plugin: string;
|
|
6
|
-
version: string;
|
|
7
|
-
path: string;
|
|
8
|
-
scope: "user" | "project";
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Build a synthetic plugin root from a --plugin-dir resolved path.
|
|
12
|
-
* @param resolvedPath Absolute path to the plugin directory
|
|
13
|
-
* @param manifestName Plugin name from manifest; falls back to directory basename
|
|
14
|
-
*/
|
|
15
|
-
export declare function buildPluginDirRoot(resolvedPath: string, manifestName?: string): PluginDirRoot;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Back-compat re-export layer.
|
|
3
|
-
* All types and functions have moved to src/tool-discovery/tool-index.ts.
|
|
4
|
-
* This file exists solely so existing imports continue to compile without changes.
|
|
5
|
-
*/
|
|
6
|
-
export type { DiscoverableMCPSearchDocument, DiscoverableMCPSearchIndex, DiscoverableMCPSearchResult, DiscoverableMCPTool, DiscoverableMCPToolServerSummary, DiscoverableMCPToolSummary, } from "../tool-discovery/tool-index";
|
|
7
|
-
export { buildDiscoverableMCPSearchIndex, collectDiscoverableMCPTools, formatDiscoverableMCPToolServerSummary, getDiscoverableMCPTool, isMCPBridgeTool, isMCPToolName, searchDiscoverableMCPTools, selectDiscoverableMCPToolNamesByServer, summarizeDiscoverableMCPTools, } from "../tool-discovery/tool-index";
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
|
|
3
|
-
/** Synthetic plugin root for a --plugin-dir path. Shape-compatible with Anthropic modelPluginRoot. */
|
|
4
|
-
export interface PluginDirRoot {
|
|
5
|
-
id: string;
|
|
6
|
-
marketplace: string;
|
|
7
|
-
plugin: string;
|
|
8
|
-
version: string;
|
|
9
|
-
path: string;
|
|
10
|
-
scope: "user" | "project";
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Build a synthetic plugin root from a --plugin-dir resolved path.
|
|
15
|
-
* @param resolvedPath Absolute path to the plugin directory
|
|
16
|
-
* @param manifestName Plugin name from manifest; falls back to directory basename
|
|
17
|
-
*/
|
|
18
|
-
export function buildPluginDirRoot(resolvedPath: string, manifestName?: string): PluginDirRoot {
|
|
19
|
-
const pluginName = manifestName || path.basename(resolvedPath);
|
|
20
|
-
return {
|
|
21
|
-
id: `${pluginName}@__local__`,
|
|
22
|
-
marketplace: "__local__",
|
|
23
|
-
plugin: pluginName,
|
|
24
|
-
version: "local",
|
|
25
|
-
path: resolvedPath,
|
|
26
|
-
scope: "user",
|
|
27
|
-
};
|
|
28
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Back-compat re-export layer.
|
|
3
|
-
* All types and functions have moved to src/tool-discovery/tool-index.ts.
|
|
4
|
-
* This file exists solely so existing imports continue to compile without changes.
|
|
5
|
-
*/
|
|
6
|
-
export type {
|
|
7
|
-
DiscoverableMCPSearchDocument,
|
|
8
|
-
DiscoverableMCPSearchIndex,
|
|
9
|
-
DiscoverableMCPSearchResult,
|
|
10
|
-
DiscoverableMCPTool,
|
|
11
|
-
DiscoverableMCPToolServerSummary,
|
|
12
|
-
DiscoverableMCPToolSummary,
|
|
13
|
-
} from "../tool-discovery/tool-index";
|
|
14
|
-
|
|
15
|
-
export {
|
|
16
|
-
buildDiscoverableMCPSearchIndex,
|
|
17
|
-
collectDiscoverableMCPTools,
|
|
18
|
-
formatDiscoverableMCPToolServerSummary,
|
|
19
|
-
getDiscoverableMCPTool,
|
|
20
|
-
isMCPBridgeTool,
|
|
21
|
-
isMCPToolName,
|
|
22
|
-
searchDiscoverableMCPTools,
|
|
23
|
-
selectDiscoverableMCPToolNamesByServer,
|
|
24
|
-
summarizeDiscoverableMCPTools,
|
|
25
|
-
} from "../tool-discovery/tool-index";
|