@gajae-code/coding-agent 0.11.1 → 0.11.3
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 +64 -0
- package/dist/types/cli/config-cli.d.ts +11 -1
- package/dist/types/cli/launch-disposition.d.ts +23 -0
- 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 +141 -11
- 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-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 +4 -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/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 +19 -17
- package/dist/types/modes/jobs-observer.d.ts +2 -0
- package/dist/types/modes/prompt-action-autocomplete.d.ts +4 -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 +20 -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 +20 -13
- 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/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/html-format.d.ts +3 -2
- package/dist/types/sdk/bus/index.d.ts +29 -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 +46 -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/sdk/session.d.ts +2 -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 +5 -0
- package/dist/types/tools/search-tool-bm25.d.ts +3 -4
- package/dist/types/tools/subagent.d.ts +1 -0
- package/dist/types/utils/event-bus.d.ts +1 -1
- package/dist/types/utils/file-mentions.d.ts +3 -3
- package/dist/types/web/search/index.d.ts +3 -1
- package/package.json +21 -9
- package/scripts/build-sdk-package-smoke.ts +34 -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 +49 -6
- package/src/cli/config-cli.ts +75 -2
- package/src/cli/launch-disposition.ts +42 -0
- 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 +214 -12
- 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 +327 -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 +29 -5
- package/src/gjc-runtime/ultragoal-pipeline.ts +306 -0
- package/src/gjc-runtime/ultragoal-runtime.ts +84 -1311
- 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 +127 -30
- 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/event-controller.ts +3 -2
- package/src/modes/controllers/extension-ui-controller.ts +24 -1
- 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 +289 -1150
- package/src/modes/jobs-observer.ts +3 -0
- package/src/modes/prompt-action-autocomplete.ts +7 -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 +71 -16
- 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 +45 -18
- 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 +1 -1
- package/src/sdk/broker/ensure.ts +3 -1
- 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 +10 -2
- 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/html-format.ts +20 -3
- package/src/sdk/bus/index.ts +782 -94
- package/src/sdk/bus/lifecycle-control-runtime.ts +91 -33
- 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 +1389 -237
- 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 +44 -2
- 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 +462 -480
- package/src/session/agent-session.ts +1700 -583
- 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 +36 -21
- 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 +19 -7
- package/src/tools/read.ts +219 -64
- package/src/tools/resource-gc.ts +2 -2
- package/src/tools/search-tool-bm25.ts +11 -74
- package/src/tools/subagent.ts +43 -2
- package/src/utils/event-bus.ts +9 -4
- package/src/utils/file-mentions.ts +4 -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/index.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { AgentTelemetryConfig, AgentTool } from "@gajae-code/agent-core";
|
|
2
2
|
import type { Model, ServiceTier, ToolChoice } from "@gajae-code/ai";
|
|
3
|
-
import { $env,
|
|
3
|
+
import { $env, logger } from "@gajae-code/utils";
|
|
4
4
|
import type { PromptTemplate } from "../config/prompt-templates";
|
|
5
5
|
import type { Settings } from "../config/settings";
|
|
6
6
|
import { EditTool } from "../edit";
|
|
7
|
+
import { isTruthyPythonFlag } from "../eval/py/env";
|
|
7
8
|
import { checkPythonKernelAvailability } from "../eval/py/kernel";
|
|
8
9
|
import type { Skill } from "../extensibility/skills";
|
|
9
10
|
import type { GoalModeState, GoalRuntime } from "../goals";
|
|
@@ -114,7 +115,6 @@ export type ContextFileEntry = {
|
|
|
114
115
|
depth?: number;
|
|
115
116
|
};
|
|
116
117
|
|
|
117
|
-
export type { DiscoverableMCPTool } from "../runtime-mcp/discoverable-tool-metadata";
|
|
118
118
|
export type {
|
|
119
119
|
DiscoverableTool,
|
|
120
120
|
DiscoverableToolSearchIndex,
|
|
@@ -278,6 +278,8 @@ export interface ToolSession {
|
|
|
278
278
|
bashRestrictionProfile?: BashRestrictionProfile;
|
|
279
279
|
/** Optional per-session allowlist for tools exposed through search_tool_bm25. */
|
|
280
280
|
discoverableToolAllowedNames?: readonly string[];
|
|
281
|
+
/** Throw instead of warn when toolNames contains an unknown name. */
|
|
282
|
+
strictToolNames?: boolean;
|
|
281
283
|
/** Get artifacts directory for artifact:// URLs */
|
|
282
284
|
getArtifactsDir?: () => string | null;
|
|
283
285
|
/** Get the ArtifactManager backing this session (shared across parent + subagents). */
|
|
@@ -326,18 +328,6 @@ export interface ToolSession {
|
|
|
326
328
|
getTodoPhases?: () => TodoPhase[];
|
|
327
329
|
/** Replace cached todo phases for this session. */
|
|
328
330
|
setTodoPhases?: (phases: TodoPhase[]) => void;
|
|
329
|
-
/** Whether MCP tool discovery is active for this session. */
|
|
330
|
-
isMCPDiscoveryEnabled?: () => boolean;
|
|
331
|
-
/** Get hidden-but-discoverable MCP tools for search_tool_bm25 prompts and fallbacks.
|
|
332
|
-
* @deprecated Use getDiscoverableTools with source filter instead. */
|
|
333
|
-
getDiscoverableMCPTools?: () => import("../runtime-mcp/discoverable-tool-metadata").DiscoverableMCPTool[];
|
|
334
|
-
/** Get the cached discoverable MCP search index for search_tool_bm25 execution.
|
|
335
|
-
* @deprecated Use getDiscoverableToolSearchIndex instead. */
|
|
336
|
-
getDiscoverableMCPSearchIndex?: () => import("../tool-discovery/tool-index").DiscoverableMCPSearchIndex;
|
|
337
|
-
/** Get MCP tools activated by prior search_tool_bm25 calls. */
|
|
338
|
-
getSelectedMCPToolNames?: () => string[];
|
|
339
|
-
/** Merge MCP tool selections into the active session tool set. */
|
|
340
|
-
activateDiscoveredMCPTools?: (toolNames: string[]) => Promise<string[]>;
|
|
341
331
|
// ── Generic tool discovery (unified — covers built-in + MCP + extension) ──
|
|
342
332
|
/** Whether any form of tool discovery is active (tools.discoveryMode !== "off" or mcp.discoveryMode). */
|
|
343
333
|
isToolDiscoveryEnabled?: () => boolean;
|
|
@@ -511,20 +501,67 @@ export interface EvalBackendsAllowance {
|
|
|
511
501
|
}
|
|
512
502
|
|
|
513
503
|
/**
|
|
514
|
-
* Parse
|
|
515
|
-
*
|
|
504
|
+
* Parse the `GJC_PY` multi-value token into per-backend booleans.
|
|
505
|
+
*
|
|
506
|
+
* Tokens (case-insensitive):
|
|
507
|
+
* - `0` / `bash` → JavaScript only (`{ py: false, js: true }`)
|
|
508
|
+
* - `1` / `py` → Python only (`{ py: true, js: false }`)
|
|
509
|
+
* - `js` → JavaScript only (`{ py: false, js: true }`)
|
|
510
|
+
* - `mix` / `both` → both backends (`{ py: true, js: true }`)
|
|
511
|
+
*
|
|
512
|
+
* Returns `null` when `GJC_PY` is unset, empty, or holds an unrecognized
|
|
513
|
+
* token, so the caller can fall back to the legacy `PI_PY` / `PI_JS` flags or
|
|
514
|
+
* per-key settings. This matches the documented contract that invalid values
|
|
515
|
+
* are ignored.
|
|
516
|
+
*/
|
|
517
|
+
export function parseGjcPy(env: Record<string, string | undefined>): { py: boolean; js: boolean } | null {
|
|
518
|
+
const raw = env.GJC_PY;
|
|
519
|
+
if (raw === undefined) return null;
|
|
520
|
+
const token = raw.trim().toLowerCase();
|
|
521
|
+
if (token === "") return null;
|
|
522
|
+
switch (token) {
|
|
523
|
+
case "0":
|
|
524
|
+
case "bash":
|
|
525
|
+
return { py: false, js: true };
|
|
526
|
+
case "1":
|
|
527
|
+
case "py":
|
|
528
|
+
return { py: true, js: false };
|
|
529
|
+
case "js":
|
|
530
|
+
return { py: false, js: true };
|
|
531
|
+
case "mix":
|
|
532
|
+
case "both":
|
|
533
|
+
return { py: true, js: true };
|
|
534
|
+
default:
|
|
535
|
+
return null;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* Parse legacy `PI_PY` / `PI_JS` boolean flags. Each is a boolean flag; unset
|
|
541
|
+
* means "not specified, defer to settings". Returns `null` when neither is set
|
|
516
542
|
* so the caller can fall through to `readEvalBackendsAllowance` per key.
|
|
517
543
|
*/
|
|
518
|
-
function
|
|
519
|
-
const pyEnv =
|
|
520
|
-
const jsEnv =
|
|
544
|
+
function parseLegacyEvalEnvFlags(env: Record<string, string | undefined>): EvalBackendsAllowance | null {
|
|
545
|
+
const pyEnv = env.PI_PY;
|
|
546
|
+
const jsEnv = env.PI_JS;
|
|
521
547
|
if (pyEnv === undefined && jsEnv === undefined) return null;
|
|
522
548
|
return {
|
|
523
|
-
python: pyEnv === undefined ? true :
|
|
524
|
-
js: jsEnv === undefined ? true :
|
|
549
|
+
python: pyEnv === undefined ? true : isTruthyPythonFlag(pyEnv),
|
|
550
|
+
js: jsEnv === undefined ? true : isTruthyPythonFlag(jsEnv),
|
|
525
551
|
};
|
|
526
552
|
}
|
|
527
553
|
|
|
554
|
+
/**
|
|
555
|
+
* Resolve eval-backend allowance from environment only. `GJC_PY` wins when set
|
|
556
|
+
* to a recognized token; otherwise the legacy `PI_PY` / `PI_JS` flags apply.
|
|
557
|
+
* Returns `null` when no env override is set so the caller can defer to settings.
|
|
558
|
+
*/
|
|
559
|
+
export function resolveEvalBackendsFromEnv(env: Record<string, string | undefined>): EvalBackendsAllowance | null {
|
|
560
|
+
const gjc = parseGjcPy(env);
|
|
561
|
+
if (gjc) return { python: gjc.py, js: gjc.js };
|
|
562
|
+
return parseLegacyEvalEnvFlags(env);
|
|
563
|
+
}
|
|
564
|
+
|
|
528
565
|
/** Read per-backend allowance from settings (defaults true). */
|
|
529
566
|
export function readEvalBackendsAllowance(session: ToolSession): EvalBackendsAllowance {
|
|
530
567
|
return {
|
|
@@ -534,13 +571,20 @@ export function readEvalBackendsAllowance(session: ToolSession): EvalBackendsAll
|
|
|
534
571
|
}
|
|
535
572
|
|
|
536
573
|
/**
|
|
537
|
-
* Materialize the active eval backend allowance
|
|
538
|
-
*
|
|
574
|
+
* Materialize the active eval backend allowance. `GJC_PY` takes precedence
|
|
575
|
+
* over the legacy `PI_PY` / `PI_JS` env flags, which in turn override the
|
|
576
|
+
* per-key settings (defaults true). When no env override is set, settings win.
|
|
539
577
|
*/
|
|
540
578
|
export function resolveEvalBackends(session: ToolSession): EvalBackendsAllowance {
|
|
541
|
-
return
|
|
579
|
+
return resolveEvalBackendsFromEnv($env) ?? readEvalBackendsAllowance(session);
|
|
542
580
|
}
|
|
543
581
|
|
|
582
|
+
export {
|
|
583
|
+
resolvePythonIntegrationGate,
|
|
584
|
+
resolvePythonIpcTrace,
|
|
585
|
+
resolvePythonSkipCheck,
|
|
586
|
+
} from "../eval/py/env";
|
|
587
|
+
|
|
544
588
|
/**
|
|
545
589
|
* Create tools from BUILTIN_TOOLS registry.
|
|
546
590
|
*/
|
|
@@ -670,6 +714,14 @@ export async function createTools(session: ToolSession, toolNames?: string[]): P
|
|
|
670
714
|
requestedTools.push("yield");
|
|
671
715
|
}
|
|
672
716
|
|
|
717
|
+
if (requestedTools) {
|
|
718
|
+
const unknownToolNames = requestedTools.filter(name => !allToolsByRequestName.has(name));
|
|
719
|
+
if (unknownToolNames.length > 0) {
|
|
720
|
+
const message = `Unknown tool name${unknownToolNames.length === 1 ? "" : "s"}: ${unknownToolNames.join(", ")}`;
|
|
721
|
+
if (session.strictToolNames) throw new Error(message);
|
|
722
|
+
logger.warn(message);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
673
725
|
const filteredRequestedTools = requestedTools
|
|
674
726
|
?.map(name => allToolsByRequestName.get(name))
|
|
675
727
|
.filter((entry): entry is [string, ToolFactory] => entry !== undefined)
|
package/src/tools/output-meta.ts
CHANGED
|
@@ -15,6 +15,7 @@ import type { ImageContent, TextContent } from "@gajae-code/ai";
|
|
|
15
15
|
import { getDefault, type Settings } from "../config/settings";
|
|
16
16
|
import { formatGroupedDiagnosticMessages } from "../lsp/utils";
|
|
17
17
|
import type { Theme } from "../modes/theme/theme";
|
|
18
|
+
import { sessionArtifactCapability } from "../session/session-manager";
|
|
18
19
|
import { type OutputSummary, type TruncationResult, truncateMiddle, truncateTail } from "../session/streaming-output";
|
|
19
20
|
import { formatBytes, wrapBrackets } from "./render-utils";
|
|
20
21
|
import { renderError } from "./tool-errors";
|
|
@@ -103,6 +104,7 @@ export interface TruncationTextOptions {
|
|
|
103
104
|
totalLines?: number;
|
|
104
105
|
totalBytes?: number;
|
|
105
106
|
maxBytes?: number;
|
|
107
|
+
artifactId?: string;
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
/**
|
|
@@ -288,6 +290,7 @@ export class OutputMetaBuilder {
|
|
|
288
290
|
outputLines,
|
|
289
291
|
outputBytes,
|
|
290
292
|
maxBytes: options.maxBytes,
|
|
293
|
+
artifactId: options.artifactId,
|
|
291
294
|
shownRange: { start: shownStart, end: shownEnd },
|
|
292
295
|
nextOffset: options.direction === "head" ? shownEnd + 1 : undefined,
|
|
293
296
|
};
|
|
@@ -593,13 +596,21 @@ export function resolveOutputMaxColumns(s: Settings | undefined): number {
|
|
|
593
596
|
* is 0, falls back to tail-only truncation. Skips when the tool already
|
|
594
597
|
* saved its own artifact (e.g. bash/python via OutputSink).
|
|
595
598
|
*/
|
|
599
|
+
function artifactCapabilityForContext(context: AgentToolContext | undefined) {
|
|
600
|
+
return sessionArtifactCapability(context?.sessionManager);
|
|
601
|
+
}
|
|
602
|
+
|
|
596
603
|
async function spillLargeResultToArtifact(
|
|
597
604
|
result: AgentToolResult,
|
|
598
605
|
toolName: string,
|
|
599
606
|
context: AgentToolContext | undefined,
|
|
600
607
|
): Promise<AgentToolResult> {
|
|
601
|
-
|
|
602
|
-
|
|
608
|
+
if (toolName === "read" && (result.details as { spillEligible?: boolean } | undefined)?.spillEligible !== true) {
|
|
609
|
+
return result;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
const artifactCapability = artifactCapabilityForContext(context);
|
|
613
|
+
if (!artifactCapability) return result;
|
|
603
614
|
const { threshold, readThreshold, tailBytes, tailLines, headBytes } = getSpillConfig(context?.settings);
|
|
604
615
|
// `read` manages its own per-range truncation, but the combined multi-range
|
|
605
616
|
// output has no cap — enforce a read-specific (higher) combined threshold
|
|
@@ -625,7 +636,7 @@ async function spillLargeResultToArtifact(
|
|
|
625
636
|
if (totalBytes <= effectiveThreshold) return result;
|
|
626
637
|
|
|
627
638
|
// Save full output as artifact
|
|
628
|
-
const artifactId = await
|
|
639
|
+
const artifactId = await artifactCapability.saveArtifact(fullText, toolName);
|
|
629
640
|
if (!artifactId) return result;
|
|
630
641
|
|
|
631
642
|
// Truncate: middle elision when a head budget is configured, otherwise tail-only.
|
|
@@ -702,8 +713,8 @@ async function spillLargeResultToArtifact(
|
|
|
702
713
|
/**
|
|
703
714
|
* Absolute inline-size backstop enforced after {@link spillLargeResultToArtifact}.
|
|
704
715
|
*
|
|
705
|
-
* The threshold-based spill above has escape hatches: it
|
|
706
|
-
*
|
|
716
|
+
* The threshold-based spill above has escape hatches: it skips ineligible `read`
|
|
717
|
+
* results and results that already carry an `artifactId` (a tool may set
|
|
707
718
|
* partial truncation meta yet still emit oversized inline text). This backstop
|
|
708
719
|
* closes those gaps: when `tools.maxInlineResultBytes` is configured (> 0), any
|
|
709
720
|
* final result whose inline text exceeds the cap is force-saved to an artifact
|
|
@@ -735,8 +746,9 @@ async function enforceInlineResultBackstop(
|
|
|
735
746
|
// full output so the truncated view keeps a reference to the complete text.
|
|
736
747
|
const existingMeta: OutputMeta | undefined = result.details?.meta;
|
|
737
748
|
let artifactId = existingMeta?.truncation?.artifactId;
|
|
738
|
-
|
|
739
|
-
|
|
749
|
+
const artifactCapability = artifactCapabilityForContext(context);
|
|
750
|
+
if (!artifactId && artifactCapability) {
|
|
751
|
+
artifactId = (await artifactCapability.saveArtifact(fullText, toolName)) ?? undefined;
|
|
740
752
|
}
|
|
741
753
|
|
|
742
754
|
// Budget head+tail below the cap, reserving room for the elision marker so the
|