@jawcode-dev/coding-agent 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +376 -0
- package/README.md +37 -0
- package/dist/types/async/index.d.ts +2 -0
- package/dist/types/async/job-manager.d.ts +294 -0
- package/dist/types/async/support.d.ts +2 -0
- package/dist/types/autoresearch/dashboard.d.ts +4 -0
- package/dist/types/autoresearch/git.d.ts +36 -0
- package/dist/types/autoresearch/helpers.d.ts +24 -0
- package/dist/types/autoresearch/index.d.ts +2 -0
- package/dist/types/autoresearch/state.d.ts +17 -0
- package/dist/types/autoresearch/storage.d.ts +142 -0
- package/dist/types/autoresearch/tools/init-experiment.d.ts +31 -0
- package/dist/types/autoresearch/tools/log-experiment.d.ts +23 -0
- package/dist/types/autoresearch/tools/run-experiment.d.ts +8 -0
- package/dist/types/autoresearch/tools/update-notes.d.ts +12 -0
- package/dist/types/autoresearch/types.d.ts +154 -0
- package/dist/types/capability/context-file.d.ts +17 -0
- package/dist/types/capability/extension-module.d.ts +15 -0
- package/dist/types/capability/extension.d.ts +28 -0
- package/dist/types/capability/fs.d.ts +20 -0
- package/dist/types/capability/hook.d.ts +19 -0
- package/dist/types/capability/index.d.ts +80 -0
- package/dist/types/capability/instruction.d.ts +17 -0
- package/dist/types/capability/mcp.d.ts +45 -0
- package/dist/types/capability/prompt.d.ts +15 -0
- package/dist/types/capability/rule.d.ts +61 -0
- package/dist/types/capability/settings.d.ts +15 -0
- package/dist/types/capability/skill.d.ts +36 -0
- package/dist/types/capability/slash-command.d.ts +17 -0
- package/dist/types/capability/ssh.d.ts +23 -0
- package/dist/types/capability/system-prompt.d.ts +15 -0
- package/dist/types/capability/tool.d.ts +19 -0
- package/dist/types/capability/types.d.ts +154 -0
- package/dist/types/cli/agents-cli.d.ts +12 -0
- package/dist/types/cli/args.d.ts +56 -0
- package/dist/types/cli/auth-broker-cli.d.ts +25 -0
- package/dist/types/cli/auth-gateway-cli.d.ts +18 -0
- package/dist/types/cli/classify-install-target.d.ts +18 -0
- package/dist/types/cli/commands/init-xdg.d.ts +1 -0
- package/dist/types/cli/config-cli.d.ts +22 -0
- package/dist/types/cli/fast-help.d.ts +1 -0
- package/dist/types/cli/file-processor.d.ts +11 -0
- package/dist/types/cli/grep-cli.d.ts +17 -0
- package/dist/types/cli/initial-message.d.ts +17 -0
- package/dist/types/cli/list-models.d.ts +30 -0
- package/dist/types/cli/notify-cli.d.ts +29 -0
- package/dist/types/cli/plugin-cli.d.ts +32 -0
- package/dist/types/cli/read-cli.d.ts +4 -0
- package/dist/types/cli/session-picker.d.ts +3 -0
- package/dist/types/cli/setup-cli.d.ts +45 -0
- package/dist/types/cli/shell-cli.d.ts +8 -0
- package/dist/types/cli/skills-cli.d.ts +9 -0
- package/dist/types/cli/ssh-cli.d.ts +21 -0
- package/dist/types/cli/stats-cli.d.ts +17 -0
- package/dist/types/cli/update-cli.d.ts +41 -0
- package/dist/types/cli/web-search-cli.d.ts +20 -0
- package/dist/types/cli/worktree-cli.d.ts +26 -0
- package/dist/types/cli.d.ts +4 -0
- package/dist/types/commands/acp.d.ts +12 -0
- package/dist/types/commands/agents.d.ts +34 -0
- package/dist/types/commands/auth-broker.d.ts +54 -0
- package/dist/types/commands/auth-gateway.d.ts +32 -0
- package/dist/types/commands/chat.d.ts +18 -0
- package/dist/types/commands/codex-native-hook.d.ts +6 -0
- package/dist/types/commands/commit.d.ts +27 -0
- package/dist/types/commands/config.d.ts +30 -0
- package/dist/types/commands/contribution-prep.d.ts +18 -0
- package/dist/types/commands/coordinator.d.ts +19 -0
- package/dist/types/commands/goal.d.ts +31 -0
- package/dist/types/commands/grep.d.ts +42 -0
- package/dist/types/commands/harness.d.ts +50 -0
- package/dist/types/commands/interview.d.ts +51 -0
- package/dist/types/commands/launch.d.ts +127 -0
- package/dist/types/commands/mcp-serve.d.ts +24 -0
- package/dist/types/commands/memory.d.ts +19 -0
- package/dist/types/commands/notify.d.ts +30 -0
- package/dist/types/commands/orchestrate.d.ts +48 -0
- package/dist/types/commands/planphase.d.ts +7 -0
- package/dist/types/commands/plugin.d.ts +52 -0
- package/dist/types/commands/ralplan.d.ts +7 -0
- package/dist/types/commands/read.d.ts +15 -0
- package/dist/types/commands/session.d.ts +24 -0
- package/dist/types/commands/setup.d.ts +95 -0
- package/dist/types/commands/shell.d.ts +21 -0
- package/dist/types/commands/skills.d.ts +26 -0
- package/dist/types/commands/ssh.d.ts +48 -0
- package/dist/types/commands/state.d.ts +7 -0
- package/dist/types/commands/stats.d.ts +25 -0
- package/dist/types/commands/team.d.ts +24 -0
- package/dist/types/commands/ultragoal.d.ts +8 -0
- package/dist/types/commands/update.d.ts +20 -0
- package/dist/types/commands/web-search.d.ts +33 -0
- package/dist/types/commands/worktree.d.ts +31 -0
- package/dist/types/commit/agentic/agent.d.ts +31 -0
- package/dist/types/commit/agentic/fallback.d.ts +5 -0
- package/dist/types/commit/agentic/index.d.ts +2 -0
- package/dist/types/commit/agentic/state.d.ts +58 -0
- package/dist/types/commit/agentic/tools/analyze-file.d.ts +19 -0
- package/dist/types/commit/agentic/tools/git-file-diff.d.ts +10 -0
- package/dist/types/commit/agentic/tools/git-hunk.d.ts +9 -0
- package/dist/types/commit/agentic/tools/git-overview.d.ts +9 -0
- package/dist/types/commit/agentic/tools/index.d.ts +16 -0
- package/dist/types/commit/agentic/tools/propose-changelog.d.ts +28 -0
- package/dist/types/commit/agentic/tools/propose-commit.d.ts +36 -0
- package/dist/types/commit/agentic/tools/recent-commits.d.ts +7 -0
- package/dist/types/commit/agentic/tools/schemas.d.ts +27 -0
- package/dist/types/commit/agentic/tools/split-commit.d.ts +53 -0
- package/dist/types/commit/agentic/topo-sort.d.ts +4 -0
- package/dist/types/commit/agentic/trivial.d.ts +7 -0
- package/dist/types/commit/agentic/validation.d.ts +20 -0
- package/dist/types/commit/analysis/conventional.d.ts +22 -0
- package/dist/types/commit/analysis/index.d.ts +4 -0
- package/dist/types/commit/analysis/scope.d.ts +6 -0
- package/dist/types/commit/analysis/summary.d.ts +19 -0
- package/dist/types/commit/analysis/validation.d.ts +8 -0
- package/dist/types/commit/changelog/detect.d.ts +2 -0
- package/dist/types/commit/changelog/generate.d.ts +30 -0
- package/dist/types/commit/changelog/index.d.ts +30 -0
- package/dist/types/commit/changelog/parse.d.ts +2 -0
- package/dist/types/commit/cli.d.ts +3 -0
- package/dist/types/commit/git/diff.d.ts +5 -0
- package/dist/types/commit/index.d.ts +4 -0
- package/dist/types/commit/map-reduce/index.d.ts +28 -0
- package/dist/types/commit/map-reduce/map-phase.d.ts +17 -0
- package/dist/types/commit/map-reduce/reduce-phase.d.ts +13 -0
- package/dist/types/commit/map-reduce/utils.d.ts +2 -0
- package/dist/types/commit/message.d.ts +2 -0
- package/dist/types/commit/model-selection.d.ts +15 -0
- package/dist/types/commit/pipeline.d.ts +5 -0
- package/dist/types/commit/shared-llm.d.ts +54 -0
- package/dist/types/commit/types.d.ts +78 -0
- package/dist/types/commit/utils/exclusions.d.ts +4 -0
- package/dist/types/commit/utils.d.ts +20 -0
- package/dist/types/config/config-file.d.ts +58 -0
- package/dist/types/config/file-lock.d.ts +6 -0
- package/dist/types/config/keybindings.d.ts +359 -0
- package/dist/types/config/model-equivalence.d.ts +24 -0
- package/dist/types/config/model-profile-activation.d.ts +36 -0
- package/dist/types/config/model-profiles.d.ts +19 -0
- package/dist/types/config/model-registry.d.ts +445 -0
- package/dist/types/config/model-resolver.d.ts +217 -0
- package/dist/types/config/models-config-schema.d.ts +652 -0
- package/dist/types/config/oauth-provider-aliases.d.ts +1 -0
- package/dist/types/config/prompt-templates.d.ts +32 -0
- package/dist/types/config/resolve-config-value.d.ts +17 -0
- package/dist/types/config/settings-schema.d.ts +3683 -0
- package/dist/types/config/settings.d.ts +134 -0
- package/dist/types/config/skill-settings-defaults.d.ts +21 -0
- package/dist/types/config.d.ts +66 -0
- package/dist/types/coordinator/contract.d.ts +4 -0
- package/dist/types/coordinator-mcp/policy.d.ts +24 -0
- package/dist/types/coordinator-mcp/safety.d.ts +26 -0
- package/dist/types/coordinator-mcp/server.d.ts +52 -0
- package/dist/types/cursor.d.ts +24 -0
- package/dist/types/dap/client.d.ts +38 -0
- package/dist/types/dap/config.d.ts +6 -0
- package/dist/types/dap/index.d.ts +4 -0
- package/dist/types/dap/session.d.ts +108 -0
- package/dist/types/dap/types.d.ts +524 -0
- package/dist/types/debug/crash-diagnostics.d.ts +45 -0
- package/dist/types/debug/index.d.ts +15 -0
- package/dist/types/debug/log-formatting.d.ts +4 -0
- package/dist/types/debug/log-viewer.d.ts +68 -0
- package/dist/types/debug/profiler.d.ts +24 -0
- package/dist/types/debug/raw-sse-buffer.d.ts +44 -0
- package/dist/types/debug/raw-sse.d.ts +16 -0
- package/dist/types/debug/report-bundle.d.ts +55 -0
- package/dist/types/debug/runtime-gauges.d.ts +6 -0
- package/dist/types/debug/system-info.d.ts +26 -0
- package/dist/types/defaults/jwc-defaults.d.ts +69 -0
- package/dist/types/discovery/agents-md.d.ts +1 -0
- package/dist/types/discovery/agents.d.ts +12 -0
- package/dist/types/discovery/builtin.d.ts +1 -0
- package/dist/types/discovery/claude-plugins.d.ts +1 -0
- package/dist/types/discovery/claude.d.ts +1 -0
- package/dist/types/discovery/cli-jaw.d.ts +1 -0
- package/dist/types/discovery/cline.d.ts +1 -0
- package/dist/types/discovery/codex.d.ts +1 -0
- package/dist/types/discovery/cursor.d.ts +16 -0
- package/dist/types/discovery/gemini.d.ts +1 -0
- package/dist/types/discovery/github.d.ts +1 -0
- package/dist/types/discovery/helpers.d.ts +278 -0
- package/dist/types/discovery/index.d.ts +49 -0
- package/dist/types/discovery/mcp-json.d.ts +1 -0
- package/dist/types/discovery/opencode.d.ts +1 -0
- package/dist/types/discovery/plugin-dir-roots.d.ts +15 -0
- package/dist/types/discovery/ssh.d.ts +1 -0
- package/dist/types/discovery/substitute-plugin-root.d.ts +5 -0
- package/dist/types/discovery/vscode.d.ts +1 -0
- package/dist/types/discovery/windsurf.d.ts +13 -0
- package/dist/types/edit/apply-patch/index.d.ts +35 -0
- package/dist/types/edit/apply-patch/parser.d.ts +34 -0
- package/dist/types/edit/diff.d.ts +75 -0
- package/dist/types/edit/file-read-cache.d.ts +25 -0
- package/dist/types/edit/index.d.ts +58 -0
- package/dist/types/edit/modes/apply-patch.d.ts +24 -0
- package/dist/types/edit/modes/patch.d.ts +99 -0
- package/dist/types/edit/modes/replace.d.ts +149 -0
- package/dist/types/edit/normalize.d.ts +43 -0
- package/dist/types/edit/notebook.d.ts +23 -0
- package/dist/types/edit/read-file.d.ts +2 -0
- package/dist/types/edit/renderer.d.ts +110 -0
- package/dist/types/edit/streaming.d.ts +66 -0
- package/dist/types/eval/backend.d.ts +40 -0
- package/dist/types/eval/index.d.ts +4 -0
- package/dist/types/eval/js/context-manager.d.ts +24 -0
- package/dist/types/eval/js/executor.d.ts +28 -0
- package/dist/types/eval/js/index.d.ts +10 -0
- package/dist/types/eval/js/shared/helpers.d.ts +38 -0
- package/dist/types/eval/js/shared/indirect-eval.d.ts +14 -0
- package/dist/types/eval/js/shared/prelude.d.ts +1 -0
- package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -0
- package/dist/types/eval/js/shared/runtime.d.ts +47 -0
- package/dist/types/eval/js/shared/types.d.ts +24 -0
- package/dist/types/eval/js/tool-bridge.d.ts +18 -0
- package/dist/types/eval/js/worker-core.d.ts +5 -0
- package/dist/types/eval/js/worker-entry.d.ts +1 -0
- package/dist/types/eval/js/worker-protocol.d.ts +77 -0
- package/dist/types/eval/py/display.d.ts +25 -0
- package/dist/types/eval/py/executor.d.ts +85 -0
- package/dist/types/eval/py/index.d.ts +10 -0
- package/dist/types/eval/py/kernel.d.ts +63 -0
- package/dist/types/eval/py/prelude.d.ts +1 -0
- package/dist/types/eval/py/runtime.d.ts +21 -0
- package/dist/types/eval/py/tool-bridge.d.ts +20 -0
- package/dist/types/eval/types.d.ts +52 -0
- package/dist/types/exa/factory.d.ts +13 -0
- package/dist/types/exa/index.d.ts +20 -0
- package/dist/types/exa/mcp-client.d.ts +45 -0
- package/dist/types/exa/render.d.ts +19 -0
- package/dist/types/exa/researcher.d.ts +9 -0
- package/dist/types/exa/search.d.ts +9 -0
- package/dist/types/exa/types.d.ts +155 -0
- package/dist/types/exa/websets.d.ts +9 -0
- package/dist/types/exec/bash-executor.d.ts +58 -0
- package/dist/types/exec/exec.d.ts +25 -0
- package/dist/types/exec/idle-timeout-watchdog.d.ts +18 -0
- package/dist/types/exec/non-interactive-env.d.ts +4 -0
- package/dist/types/export/custom-share.d.ts +20 -0
- package/dist/types/export/html/index.d.ts +10 -0
- package/dist/types/export/html/template.generated.d.ts +1 -0
- package/dist/types/export/html/template.macro.d.ts +5 -0
- package/dist/types/export/ttsr.d.ts +44 -0
- package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +9 -0
- package/dist/types/extensibility/custom-commands/bundled/review/index.d.ts +10 -0
- package/dist/types/extensibility/custom-commands/index.d.ts +2 -0
- package/dist/types/extensibility/custom-commands/loader.d.ts +29 -0
- package/dist/types/extensibility/custom-commands/types.d.ts +106 -0
- package/dist/types/extensibility/custom-tools/index.d.ts +6 -0
- package/dist/types/extensibility/custom-tools/loader.d.ts +69 -0
- package/dist/types/extensibility/custom-tools/types.d.ts +227 -0
- package/dist/types/extensibility/custom-tools/wrapper.d.ts +23 -0
- package/dist/types/extensibility/extensions/compact-handler.d.ts +26 -0
- package/dist/types/extensibility/extensions/get-commands-handler.d.ts +29 -0
- package/dist/types/extensibility/extensions/index.d.ts +8 -0
- package/dist/types/extensibility/extensions/loader.d.ts +43 -0
- package/dist/types/extensibility/extensions/runner.d.ts +134 -0
- package/dist/types/extensibility/extensions/types.d.ts +916 -0
- package/dist/types/extensibility/extensions/wrapper.d.ts +54 -0
- package/dist/types/extensibility/hooks/index.d.ts +5 -0
- package/dist/types/extensibility/hooks/loader.d.ts +89 -0
- package/dist/types/extensibility/hooks/runner.d.ts +126 -0
- package/dist/types/extensibility/hooks/tool-wrapper.d.ts +25 -0
- package/dist/types/extensibility/hooks/types.d.ts +431 -0
- package/dist/types/extensibility/jwc-plugins/activation.d.ts +14 -0
- package/dist/types/extensibility/jwc-plugins/index.d.ts +9 -0
- package/dist/types/extensibility/jwc-plugins/injection.d.ts +31 -0
- package/dist/types/extensibility/jwc-plugins/loader.d.ts +3 -0
- package/dist/types/extensibility/jwc-plugins/paths.d.ts +8 -0
- package/dist/types/extensibility/jwc-plugins/schema.d.ts +3 -0
- package/dist/types/extensibility/jwc-plugins/state.d.ts +9 -0
- package/dist/types/extensibility/jwc-plugins/tools.d.ts +8 -0
- package/dist/types/extensibility/jwc-plugins/types.d.ts +64 -0
- package/dist/types/extensibility/jwc-plugins/validation.d.ts +4 -0
- package/dist/types/extensibility/plugins/doctor.d.ts +3 -0
- package/dist/types/extensibility/plugins/git-url.d.ts +34 -0
- package/dist/types/extensibility/plugins/index.d.ts +7 -0
- package/dist/types/extensibility/plugins/installer.d.ts +5 -0
- package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +2 -0
- package/dist/types/extensibility/plugins/loader.d.ts +31 -0
- package/dist/types/extensibility/plugins/manager.d.ts +65 -0
- package/dist/types/extensibility/plugins/marketplace/cache.d.ts +41 -0
- package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +48 -0
- package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -0
- package/dist/types/extensibility/plugins/marketplace/manager.d.ts +57 -0
- package/dist/types/extensibility/plugins/marketplace/registry.d.ts +34 -0
- package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +28 -0
- package/dist/types/extensibility/plugins/marketplace/types.d.ts +130 -0
- package/dist/types/extensibility/plugins/parser.d.ts +52 -0
- package/dist/types/extensibility/plugins/types.d.ts +149 -0
- package/dist/types/extensibility/shared-events.d.ts +280 -0
- package/dist/types/extensibility/skills.d.ts +82 -0
- package/dist/types/extensibility/slash-commands.d.ts +49 -0
- package/dist/types/extensibility/tool-proxy.d.ts +4 -0
- package/dist/types/extensibility/typebox.d.ts +155 -0
- package/dist/types/extensibility/utils.d.ts +12 -0
- package/dist/types/goals/goal-planning-start.d.ts +7 -0
- package/dist/types/goals/index.d.ts +3 -0
- package/dist/types/goals/runtime.d.ts +62 -0
- package/dist/types/goals/state.d.ts +40 -0
- package/dist/types/goals/tools/goal-tool.d.ts +62 -0
- package/dist/types/harness-control-plane/classifier.d.ts +13 -0
- package/dist/types/harness-control-plane/control-endpoint.d.ts +31 -0
- package/dist/types/harness-control-plane/finalize.d.ts +55 -0
- package/dist/types/harness-control-plane/operate.d.ts +35 -0
- package/dist/types/harness-control-plane/owner.d.ts +46 -0
- package/dist/types/harness-control-plane/phase-rollup.d.ts +23 -0
- package/dist/types/harness-control-plane/preserve.d.ts +19 -0
- package/dist/types/harness-control-plane/receipt-ingest.d.ts +19 -0
- package/dist/types/harness-control-plane/receipt-spool.d.ts +26 -0
- package/dist/types/harness-control-plane/receipts.d.ts +132 -0
- package/dist/types/harness-control-plane/rpc-adapter.d.ts +66 -0
- package/dist/types/harness-control-plane/seams.d.ts +21 -0
- package/dist/types/harness-control-plane/session-lease.d.ts +65 -0
- package/dist/types/harness-control-plane/state-machine.d.ts +24 -0
- package/dist/types/harness-control-plane/storage.d.ts +60 -0
- package/dist/types/harness-control-plane/types.d.ts +179 -0
- package/dist/types/hashline/anchors.d.ts +20 -0
- package/dist/types/hashline/apply.d.ts +14 -0
- package/dist/types/hashline/constants.d.ts +19 -0
- package/dist/types/hashline/diff-preview.d.ts +2 -0
- package/dist/types/hashline/diff.d.ts +17 -0
- package/dist/types/hashline/execute.d.ts +4 -0
- package/dist/types/hashline/hash.d.ts +123 -0
- package/dist/types/hashline/index.d.ts +13 -0
- package/dist/types/hashline/input.d.ts +11 -0
- package/dist/types/hashline/parser.d.ts +7 -0
- package/dist/types/hashline/prefixes.d.ts +7 -0
- package/dist/types/hashline/recovery.d.ts +27 -0
- package/dist/types/hashline/stream.d.ts +2 -0
- package/dist/types/hashline/types.d.ts +77 -0
- package/dist/types/hindsight/backend.d.ts +13 -0
- package/dist/types/hindsight/bank.d.ts +54 -0
- package/dist/types/hindsight/client.d.ts +224 -0
- package/dist/types/hindsight/config.d.ts +51 -0
- package/dist/types/hindsight/content.d.ts +71 -0
- package/dist/types/hindsight/index.d.ts +8 -0
- package/dist/types/hindsight/mental-models.d.ts +125 -0
- package/dist/types/hindsight/state.d.ts +99 -0
- package/dist/types/hindsight/transcript.d.ts +28 -0
- package/dist/types/hooks/codex-native-hooks-config.d.ts +29 -0
- package/dist/types/hooks/native-skill-hook.d.ts +16 -0
- package/dist/types/hooks/skill-keywords.d.ts +18 -0
- package/dist/types/hooks/skill-state.d.ts +88 -0
- package/dist/types/index.d.ts +33 -0
- package/dist/types/internal-urls/agent-protocol.d.ts +12 -0
- package/dist/types/internal-urls/artifact-protocol.d.ts +6 -0
- package/dist/types/internal-urls/docs-index.generated.d.ts +2 -0
- package/dist/types/internal-urls/index.d.ts +20 -0
- package/dist/types/internal-urls/issue-pr-protocol.d.ts +17 -0
- package/dist/types/internal-urls/json-query.d.ts +30 -0
- package/dist/types/internal-urls/jwc-protocol.d.ts +19 -0
- package/dist/types/internal-urls/local-protocol.d.ts +39 -0
- package/dist/types/internal-urls/mcp-protocol.d.ts +12 -0
- package/dist/types/internal-urls/memory-protocol.d.ts +23 -0
- package/dist/types/internal-urls/parse.d.ts +19 -0
- package/dist/types/internal-urls/registry-helpers.d.ts +11 -0
- package/dist/types/internal-urls/router.d.ts +14 -0
- package/dist/types/internal-urls/rule-protocol.d.ts +6 -0
- package/dist/types/internal-urls/skill-protocol.d.ts +13 -0
- package/dist/types/internal-urls/types.d.ts +109 -0
- package/dist/types/jaw-interview/structured-renderer.d.ts +20 -0
- package/dist/types/jwc-runtime/actor-registry.d.ts +76 -0
- package/dist/types/jwc-runtime/agent-identity.d.ts +6 -0
- package/dist/types/jwc-runtime/cli-jaw-home.d.ts +1 -0
- package/dist/types/jwc-runtime/cli-jaw-vocab.d.ts +15 -0
- package/dist/types/jwc-runtime/cli-write-receipt.d.ts +24 -0
- package/dist/types/jwc-runtime/goal-cli.d.ts +7 -0
- package/dist/types/jwc-runtime/goal-engine.d.ts +193 -0
- package/dist/types/jwc-runtime/goal-guard.d.ts +26 -0
- package/dist/types/jwc-runtime/goal-mode-request.d.ts +78 -0
- package/dist/types/jwc-runtime/jaw-interview-runtime.d.ts +41 -0
- package/dist/types/jwc-runtime/launch-tmux.d.ts +70 -0
- package/dist/types/jwc-runtime/launch-worktree.d.ts +46 -0
- package/dist/types/jwc-runtime/legacy-storage.d.ts +19 -0
- package/dist/types/jwc-runtime/memory-runtime.d.ts +16 -0
- package/dist/types/jwc-runtime/orchestrate-runtime.d.ts +12 -0
- package/dist/types/jwc-runtime/orchestrate-state.d.ts +246 -0
- package/dist/types/jwc-runtime/plan-writer.d.ts +26 -0
- package/dist/types/jwc-runtime/restricted-role-agent-bash.d.ts +2 -0
- package/dist/types/jwc-runtime/session-state-sidecar.d.ts +17 -0
- package/dist/types/jwc-runtime/stage-skill-map.d.ts +7 -0
- package/dist/types/jwc-runtime/state-graph.d.ts +4 -0
- package/dist/types/jwc-runtime/state-migrations.d.ts +34 -0
- package/dist/types/jwc-runtime/state-renderer.d.ts +65 -0
- package/dist/types/jwc-runtime/state-runtime.d.ts +37 -0
- package/dist/types/jwc-runtime/state-schema.d.ts +324 -0
- package/dist/types/jwc-runtime/state-validation.d.ts +6 -0
- package/dist/types/jwc-runtime/state-writer.d.ts +147 -0
- package/dist/types/jwc-runtime/team-runtime.d.ts +349 -0
- package/dist/types/jwc-runtime/tmux-common.d.ts +49 -0
- package/dist/types/jwc-runtime/tmux-sessions.d.ts +17 -0
- package/dist/types/jwc-runtime/workflow-command-ref.d.ts +43 -0
- package/dist/types/jwc-runtime/workflow-manifest.d.ts +54 -0
- package/dist/types/lsp/client.d.ts +66 -0
- package/dist/types/lsp/clients/biome-client.d.ts +16 -0
- package/dist/types/lsp/clients/index.d.ts +19 -0
- package/dist/types/lsp/clients/lsp-linter-client.d.ts +16 -0
- package/dist/types/lsp/clients/swiftlint-client.d.ts +20 -0
- package/dist/types/lsp/config.d.ts +65 -0
- package/dist/types/lsp/edits.d.ts +23 -0
- package/dist/types/lsp/index.d.ts +130 -0
- package/dist/types/lsp/lspmux.d.ts +58 -0
- package/dist/types/lsp/render.d.ts +32 -0
- package/dist/types/lsp/startup-events.d.ts +11 -0
- package/dist/types/lsp/types.d.ts +302 -0
- package/dist/types/lsp/utils.d.ts +108 -0
- package/dist/types/main.d.ts +72 -0
- package/dist/types/mem0/backend.d.ts +2 -0
- package/dist/types/mem0/client.d.ts +49 -0
- package/dist/types/mem0/config.d.ts +24 -0
- package/dist/types/mem0/index.d.ts +5 -0
- package/dist/types/mem0/scope.d.ts +12 -0
- package/dist/types/mem0/state.d.ts +36 -0
- package/dist/types/memories/index.d.ts +28 -0
- package/dist/types/memories/local-query.d.ts +112 -0
- package/dist/types/memories/memory-config.d.ts +46 -0
- package/dist/types/memories/memory-fts.d.ts +51 -0
- package/dist/types/memories/memory-model-resolution.d.ts +20 -0
- package/dist/types/memories/memory-quality.d.ts +27 -0
- package/dist/types/memories/storage.d.ts +110 -0
- package/dist/types/memory-backend/index.d.ts +4 -0
- package/dist/types/memory-backend/local-backend.d.ts +9 -0
- package/dist/types/memory-backend/off-backend.d.ts +7 -0
- package/dist/types/memory-backend/resolve.d.ts +16 -0
- package/dist/types/memory-backend/types.d.ts +64 -0
- package/dist/types/migrate-config-dir-startup.d.ts +1 -0
- package/dist/types/migrate-config-dir.d.ts +22 -0
- package/dist/types/modes/acp/acp-agent.d.ts +61 -0
- package/dist/types/modes/acp/acp-client-bridge.d.ts +9 -0
- package/dist/types/modes/acp/acp-event-mapper.d.ts +34 -0
- package/dist/types/modes/acp/acp-mode.d.ts +5 -0
- package/dist/types/modes/acp/index.d.ts +2 -0
- package/dist/types/modes/acp/terminal-auth.d.ts +6 -0
- package/dist/types/modes/background-row-model.d.ts +3 -0
- package/dist/types/modes/bridge/auth.d.ts +12 -0
- package/dist/types/modes/bridge/bridge-client-bridge.d.ts +9 -0
- package/dist/types/modes/bridge/bridge-mode.d.ts +46 -0
- package/dist/types/modes/bridge/bridge-ui-context.d.ts +88 -0
- package/dist/types/modes/bridge/event-stream.d.ts +8 -0
- package/dist/types/modes/components/_cli-jaw-entry.d.ts +31 -0
- package/dist/types/modes/components/agent-dashboard.d.ts +21 -0
- package/dist/types/modes/components/assistant-message.d.ts +33 -0
- package/dist/types/modes/components/background-footer-detail.d.ts +6 -0
- package/dist/types/modes/components/background-footer-panel-model.d.ts +18 -0
- package/dist/types/modes/components/background-footer-panel.d.ts +19 -0
- package/dist/types/modes/components/bash-execution.d.ts +37 -0
- package/dist/types/modes/components/bordered-loader.d.ts +11 -0
- package/dist/types/modes/components/branch-summary-message.d.ts +15 -0
- package/dist/types/modes/components/btw-panel.d.ts +16 -0
- package/dist/types/modes/components/compaction-summary-message.d.ts +15 -0
- package/dist/types/modes/components/composer-chrome.d.ts +7 -0
- package/dist/types/modes/components/composer-footer.d.ts +43 -0
- package/dist/types/modes/components/countdown-timer.d.ts +14 -0
- package/dist/types/modes/components/custom-editor.d.ts +80 -0
- package/dist/types/modes/components/custom-message.d.ts +17 -0
- package/dist/types/modes/components/custom-provider-wizard.d.ts +10 -0
- package/dist/types/modes/components/diff.d.ts +11 -0
- package/dist/types/modes/components/dynamic-border.d.ts +14 -0
- package/dist/types/modes/components/eval-execution.d.ts +31 -0
- package/dist/types/modes/components/execution-shared.d.ts +46 -0
- package/dist/types/modes/components/extensions/extension-dashboard.d.ts +26 -0
- package/dist/types/modes/components/extensions/extension-list.d.ts +39 -0
- package/dist/types/modes/components/extensions/index.d.ts +8 -0
- package/dist/types/modes/components/extensions/inspector-panel.d.ts +8 -0
- package/dist/types/modes/components/extensions/state-manager.d.ts +50 -0
- package/dist/types/modes/components/extensions/types.d.ts +151 -0
- package/dist/types/modes/components/footer.d.ts +30 -0
- package/dist/types/modes/components/full-transcript-overlay.d.ts +21 -0
- package/dist/types/modes/components/help-selector.d.ts +38 -0
- package/dist/types/modes/components/history-search.d.ts +7 -0
- package/dist/types/modes/components/hook-editor.d.ts +18 -0
- package/dist/types/modes/components/hook-input.d.ts +15 -0
- package/dist/types/modes/components/hook-message.d.ts +15 -0
- package/dist/types/modes/components/hook-selector.d.ts +64 -0
- package/dist/types/modes/components/index.d.ts +35 -0
- package/dist/types/modes/components/jobs-overlay-model.d.ts +31 -0
- package/dist/types/modes/components/jobs-overlay.d.ts +30 -0
- package/dist/types/modes/components/keybinding-hints.d.ts +40 -0
- package/dist/types/modes/components/login-dialog.d.ts +32 -0
- package/dist/types/modes/components/message-frame.d.ts +42 -0
- package/dist/types/modes/components/model-selector.d.ts +53 -0
- package/dist/types/modes/components/oauth-selector.d.ts +14 -0
- package/dist/types/modes/components/pabcd-border.d.ts +8 -0
- package/dist/types/modes/components/plugin-selector.d.ts +26 -0
- package/dist/types/modes/components/plugin-settings.d.ts +66 -0
- package/dist/types/modes/components/provider-onboarding-selector.d.ts +7 -0
- package/dist/types/modes/components/queue-mode-selector.d.ts +9 -0
- package/dist/types/modes/components/quota-panel.d.ts +21 -0
- package/dist/types/modes/components/read-tool-group.d.ts +34 -0
- package/dist/types/modes/components/runtime-mcp-add-wizard.d.ts +25 -0
- package/dist/types/modes/components/session-observer-overlay.d.ts +11 -0
- package/dist/types/modes/components/session-selector.d.ts +30 -0
- package/dist/types/modes/components/settings-defs.d.ts +50 -0
- package/dist/types/modes/components/settings-selector.d.ts +56 -0
- package/dist/types/modes/components/show-images-selector.d.ts +9 -0
- package/dist/types/modes/components/skill-hud/render.d.ts +2 -0
- package/dist/types/modes/components/skill-message.d.ts +11 -0
- package/dist/types/modes/components/status-line/context-thresholds.d.ts +4 -0
- package/dist/types/modes/components/status-line/git-utils.d.ts +22 -0
- package/dist/types/modes/components/status-line/index.d.ts +4 -0
- package/dist/types/modes/components/status-line/presets.d.ts +3 -0
- package/dist/types/modes/components/status-line/segments.d.ts +5 -0
- package/dist/types/modes/components/status-line/separators.d.ts +3 -0
- package/dist/types/modes/components/status-line/token-rate.d.ts +10 -0
- package/dist/types/modes/components/status-line/types.d.ts +92 -0
- package/dist/types/modes/components/status-line/workflow-readers.d.ts +21 -0
- package/dist/types/modes/components/status-line.d.ts +82 -0
- package/dist/types/modes/components/theme-selector.d.ts +10 -0
- package/dist/types/modes/components/thinking-selector.d.ts +10 -0
- package/dist/types/modes/components/todo-reminder.d.ts +13 -0
- package/dist/types/modes/components/tool-execution.d.ts +69 -0
- package/dist/types/modes/components/tool-transcript-overlay.d.ts +18 -0
- package/dist/types/modes/components/tree-selector.d.ts +31 -0
- package/dist/types/modes/components/ttsr-notification.d.ts +15 -0
- package/dist/types/modes/components/user-message-selector.d.ts +28 -0
- package/dist/types/modes/components/user-message.d.ts +8 -0
- package/dist/types/modes/components/visual-truncate.d.ts +19 -0
- package/dist/types/modes/components/welcome.d.ts +42 -0
- package/dist/types/modes/controllers/btw-controller.d.ts +10 -0
- package/dist/types/modes/controllers/command-controller-shared.d.ts +47 -0
- package/dist/types/modes/controllers/command-controller.d.ts +39 -0
- package/dist/types/modes/controllers/event-controller.d.ts +12 -0
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +80 -0
- package/dist/types/modes/controllers/input-controller.d.ts +49 -0
- package/dist/types/modes/controllers/runtime-mcp-command-controller.d.ts +10 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +78 -0
- package/dist/types/modes/controllers/ssh-command-controller.d.ts +10 -0
- package/dist/types/modes/controllers/todo-command-controller.d.ts +7 -0
- package/dist/types/modes/emoji-autocomplete.d.ts +16 -0
- package/dist/types/modes/index.d.ts +10 -0
- package/dist/types/modes/interactive-mode.d.ts +295 -0
- package/dist/types/modes/jobs-observer.d.ts +67 -0
- package/dist/types/modes/oauth-manual-input.d.ts +8 -0
- package/dist/types/modes/print-mode.d.ts +27 -0
- package/dist/types/modes/prompt-action-autocomplete.d.ts +46 -0
- package/dist/types/modes/rpc/host-tools.d.ts +1 -0
- package/dist/types/modes/rpc/host-uris.d.ts +1 -0
- package/dist/types/modes/rpc/rpc-client.d.ts +267 -0
- package/dist/types/modes/rpc/rpc-mode.d.ts +67 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +765 -0
- package/dist/types/modes/runtime-init.d.ts +21 -0
- package/dist/types/modes/session-observer-registry.d.ts +26 -0
- package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +57 -0
- package/dist/types/modes/shared/agent-wire/command-contract.d.ts +18 -0
- package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +35 -0
- package/dist/types/modes/shared/agent-wire/command-validation.d.ts +2 -0
- package/dist/types/modes/shared/agent-wire/event-contract.d.ts +84 -0
- package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +38 -0
- package/dist/types/modes/shared/agent-wire/event-observation.d.ts +37 -0
- package/dist/types/modes/shared/agent-wire/handshake.d.ts +56 -0
- package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +16 -0
- package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +17 -0
- package/dist/types/modes/shared/agent-wire/jaw-interview-gate.d.ts +58 -0
- package/dist/types/modes/shared/agent-wire/protocol.d.ts +25 -0
- package/dist/types/modes/shared/agent-wire/responses.d.ts +4 -0
- package/dist/types/modes/shared/agent-wire/scopes.d.ts +18 -0
- package/dist/types/modes/shared/agent-wire/session-registry.d.ts +25 -0
- package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +42 -0
- package/dist/types/modes/shared/agent-wire/ui-result.d.ts +27 -0
- package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +27 -0
- package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +68 -0
- package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +161 -0
- package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +61 -0
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +114 -0
- package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +39 -0
- package/dist/types/modes/shared.d.ts +15 -0
- package/dist/types/modes/theme/defaults/index.d.ts +499 -0
- package/dist/types/modes/theme/mermaid-cache.d.ts +9 -0
- package/dist/types/modes/theme/shimmer.d.ts +38 -0
- package/dist/types/modes/theme/theme.d.ts +274 -0
- package/dist/types/modes/types.d.ts +311 -0
- package/dist/types/modes/utils/abort-message.d.ts +4 -0
- package/dist/types/modes/utils/compaction-progress.d.ts +20 -0
- package/dist/types/modes/utils/context-usage.d.ts +53 -0
- package/dist/types/modes/utils/help-markdown.d.ts +17 -0
- package/dist/types/modes/utils/hotkeys-markdown.d.ts +5 -0
- package/dist/types/modes/utils/keybinding-matchers.d.ts +10 -0
- package/dist/types/modes/utils/session-transcript-replay.d.ts +24 -0
- package/dist/types/modes/utils/tools-markdown.d.ts +5 -0
- package/dist/types/modes/utils/ui-helpers.d.ts +77 -0
- package/dist/types/notifications/ask-bridge.d.ts +36 -0
- package/dist/types/notifications/config-command-parser.d.ts +27 -0
- package/dist/types/notifications/config.d.ts +37 -0
- package/dist/types/notifications/daemon-control.d.ts +29 -0
- package/dist/types/notifications/daemon-engine.d.ts +64 -0
- package/dist/types/notifications/daemon-inbound.d.ts +93 -0
- package/dist/types/notifications/daemon-loop.d.ts +28 -0
- package/dist/types/notifications/daemon-owner.d.ts +25 -0
- package/dist/types/notifications/daemon-runtime.d.ts +32 -0
- package/dist/types/notifications/discovery.d.ts +45 -0
- package/dist/types/notifications/index.d.ts +34 -0
- package/dist/types/notifications/lifecycle-audit.d.ts +60 -0
- package/dist/types/notifications/lifecycle-command-parser.d.ts +19 -0
- package/dist/types/notifications/lifecycle-control-runtime.d.ts +45 -0
- package/dist/types/notifications/notification-redaction.d.ts +36 -0
- package/dist/types/notifications/protocol.d.ts +43 -0
- package/dist/types/notifications/remote-answer.d.ts +78 -0
- package/dist/types/notifications/reply-bridge.d.ts +21 -0
- package/dist/types/notifications/server.d.ts +38 -0
- package/dist/types/notifications/session-lifecycle.d.ts +22 -0
- package/dist/types/notifications/session-registry.d.ts +31 -0
- package/dist/types/notifications/telegram-api.d.ts +93 -0
- package/dist/types/notifications/telegram-ask-keyboard.d.ts +57 -0
- package/dist/types/notifications/telegram-callback-ingest.d.ts +49 -0
- package/dist/types/notifications/telegram-inbound-router.d.ts +57 -0
- package/dist/types/notifications/telegram-media-policy.d.ts +27 -0
- package/dist/types/notifications/telegram-media-render.d.ts +29 -0
- package/dist/types/notifications/telegram-message-ingest.d.ts +54 -0
- package/dist/types/notifications/telegram-pairing.d.ts +21 -0
- package/dist/types/notifications/threaded-lifecycle.d.ts +23 -0
- package/dist/types/notifications/threaded-shutdown.d.ts +19 -0
- package/dist/types/notifications/threaded-surface.d.ts +71 -0
- package/dist/types/notifications/transport-shell.d.ts +47 -0
- package/dist/types/notifications/transport-state.d.ts +44 -0
- package/dist/types/notifications/workspace-path-confinement.d.ts +12 -0
- package/dist/types/plan-mode/approved-plan.d.ts +49 -0
- package/dist/types/plan-mode/state.d.ts +6 -0
- package/dist/types/registry/agent-registry.d.ts +62 -0
- package/dist/types/reminders/star-reminder.d.ts +115 -0
- package/dist/types/runtime-mcp/client.d.ts +74 -0
- package/dist/types/runtime-mcp/config-writer.d.ts +53 -0
- package/dist/types/runtime-mcp/config.d.ts +75 -0
- package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +7 -0
- package/dist/types/runtime-mcp/index.d.ts +18 -0
- package/dist/types/runtime-mcp/json-rpc.d.ts +22 -0
- package/dist/types/runtime-mcp/loader.d.ts +43 -0
- package/dist/types/runtime-mcp/manager.d.ts +193 -0
- package/dist/types/runtime-mcp/oauth-discovery.d.ts +40 -0
- package/dist/types/runtime-mcp/oauth-flow.d.ts +59 -0
- package/dist/types/runtime-mcp/render.d.ts +25 -0
- package/dist/types/runtime-mcp/smithery-auth.d.ts +16 -0
- package/dist/types/runtime-mcp/smithery-connect.d.ts +38 -0
- package/dist/types/runtime-mcp/smithery-registry.d.ts +51 -0
- package/dist/types/runtime-mcp/tool-bridge.d.ts +86 -0
- package/dist/types/runtime-mcp/tool-cache.d.ts +8 -0
- package/dist/types/runtime-mcp/transports/http.d.ts +36 -0
- package/dist/types/runtime-mcp/transports/index.d.ts +5 -0
- package/dist/types/runtime-mcp/transports/stdio.d.ts +28 -0
- package/dist/types/runtime-mcp/types.d.ts +333 -0
- package/dist/types/sdk.d.ts +234 -0
- package/dist/types/secrets/index.d.ts +10 -0
- package/dist/types/secrets/obfuscator.d.ts +23 -0
- package/dist/types/secrets/regex.d.ts +2 -0
- package/dist/types/session/agent-session.d.ts +1052 -0
- package/dist/types/session/agent-storage.d.ts +100 -0
- package/dist/types/session/artifacts.d.ts +61 -0
- package/dist/types/session/auth-broker-config.d.ts +13 -0
- package/dist/types/session/auth-storage.d.ts +6 -0
- package/dist/types/session/blob-store.d.ts +112 -0
- package/dist/types/session/client-bridge.d.ts +88 -0
- package/dist/types/session/contribution-prep.d.ts +47 -0
- package/dist/types/session/history-storage.d.ts +16 -0
- package/dist/types/session/messages.d.ts +165 -0
- package/dist/types/session/pabcd-stage-header.d.ts +18 -0
- package/dist/types/session/session-dump-format.d.ts +22 -0
- package/dist/types/session/session-manager.d.ts +571 -0
- package/dist/types/session/session-storage.d.ts +88 -0
- package/dist/types/session/streaming-output.d.ts +196 -0
- package/dist/types/session/tool-choice-queue.d.ts +78 -0
- package/dist/types/session/yield-queue.d.ts +24 -0
- package/dist/types/setup/hermes-setup.d.ts +71 -0
- package/dist/types/setup/model-onboarding-guidance.d.ts +9 -0
- package/dist/types/setup/provider-onboarding.d.ts +52 -0
- package/dist/types/skill-state/active-state.d.ts +115 -0
- package/dist/types/skill-state/initial-phase.d.ts +12 -0
- package/dist/types/skill-state/jaw-interview-mutation-guard.d.ts +33 -0
- package/dist/types/skill-state/workflow-hud.d.ts +76 -0
- package/dist/types/skill-state/workflow-state-contract.d.ts +60 -0
- package/dist/types/skill-state/workflow-state-version.d.ts +3 -0
- package/dist/types/slash-commands/acp-builtins.d.ts +18 -0
- package/dist/types/slash-commands/builtin-registry.d.ts +24 -0
- package/dist/types/slash-commands/helpers/context-report.d.ts +7 -0
- package/dist/types/slash-commands/helpers/format.d.ts +10 -0
- package/dist/types/slash-commands/helpers/mcp.d.ts +3 -0
- package/dist/types/slash-commands/helpers/parse.d.ts +33 -0
- package/dist/types/slash-commands/helpers/ssh.d.ts +3 -0
- package/dist/types/slash-commands/helpers/todo.d.ts +3 -0
- package/dist/types/slash-commands/helpers/usage-report.d.ts +11 -0
- package/dist/types/slash-commands/types.d.ts +120 -0
- package/dist/types/ssh/config-writer.d.ts +49 -0
- package/dist/types/ssh/connection-manager.d.ts +33 -0
- package/dist/types/ssh/ssh-executor.d.ts +37 -0
- package/dist/types/ssh/sshfs-mount.d.ts +6 -0
- package/dist/types/ssh/utils.d.ts +2 -0
- package/dist/types/stt/downloader.d.ts +9 -0
- package/dist/types/stt/index.d.ts +3 -0
- package/dist/types/stt/recorder.d.ts +13 -0
- package/dist/types/stt/setup.d.ts +18 -0
- package/dist/types/stt/stt-controller.d.ts +16 -0
- package/dist/types/stt/transcriber.d.ts +16 -0
- package/dist/types/system-prompt.d.ts +100 -0
- package/dist/types/task/agents.d.ts +28 -0
- package/dist/types/task/commands.d.ts +35 -0
- package/dist/types/task/discovery.d.ts +19 -0
- package/dist/types/task/executor.d.ts +113 -0
- package/dist/types/task/fork-context-advisory.d.ts +13 -0
- package/dist/types/task/id.d.ts +7 -0
- package/dist/types/task/index.d.ts +43 -0
- package/dist/types/task/jwc-command.d.ts +7 -0
- package/dist/types/task/model-presets.d.ts +17 -0
- package/dist/types/task/name-generator.d.ts +16 -0
- package/dist/types/task/output-manager.d.ts +36 -0
- package/dist/types/task/parallel.d.ts +34 -0
- package/dist/types/task/receipt.d.ts +86 -0
- package/dist/types/task/render.d.ts +28 -0
- package/dist/types/task/roi-reconciliation.d.ts +27 -0
- package/dist/types/task/simple-mode.d.ts +8 -0
- package/dist/types/task/spawn-gate.d.ts +38 -0
- package/dist/types/task/subprocess-tool-registry.d.ts +72 -0
- package/dist/types/task/types.d.ts +506 -0
- package/dist/types/task/worktree.d.ts +94 -0
- package/dist/types/thinking.d.ts +31 -0
- package/dist/types/tool-discovery/tool-index.d.ts +113 -0
- package/dist/types/tools/archive-reader.d.ts +40 -0
- package/dist/types/tools/ask.d.ts +152 -0
- package/dist/types/tools/ast-edit.d.ts +77 -0
- package/dist/types/tools/ast-grep.d.ts +69 -0
- package/dist/types/tools/auto-generated-guard.d.ts +17 -0
- package/dist/types/tools/background.d.ts +124 -0
- package/dist/types/tools/bash-allowed-prefixes.d.ts +5 -0
- package/dist/types/tools/bash-command-fixup.d.ts +11 -0
- package/dist/types/tools/bash-interactive.d.ts +16 -0
- package/dist/types/tools/bash-interceptor.d.ts +24 -0
- package/dist/types/tools/bash-pty-selection.d.ts +7 -0
- package/dist/types/tools/bash-skill-urls.d.ts +31 -0
- package/dist/types/tools/bash.d.ts +156 -0
- package/dist/types/tools/browser/actions.d.ts +54 -0
- package/dist/types/tools/browser/attach.d.ts +34 -0
- package/dist/types/tools/browser/launch.d.ts +62 -0
- package/dist/types/tools/browser/readable.d.ts +17 -0
- package/dist/types/tools/browser/registry.d.ts +42 -0
- package/dist/types/tools/browser/render.d.ts +50 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +144 -0
- package/dist/types/tools/browser/tab-supervisor.d.ts +63 -0
- package/dist/types/tools/browser/tab-worker-entry.d.ts +1 -0
- package/dist/types/tools/browser/tab-worker.d.ts +19 -0
- package/dist/types/tools/browser.d.ts +194 -0
- package/dist/types/tools/calculator.d.ts +76 -0
- package/dist/types/tools/checkpoint.d.ts +63 -0
- package/dist/types/tools/computer-use-backend.d.ts +6 -0
- package/dist/types/tools/computer-use.d.ts +100 -0
- package/dist/types/tools/conflict-detect.d.ts +205 -0
- package/dist/types/tools/context.d.ts +19 -0
- package/dist/types/tools/cron.d.ts +116 -0
- package/dist/types/tools/debug.d.ts +209 -0
- package/dist/types/tools/eval.d.ts +108 -0
- package/dist/types/tools/fetch.d.ts +61 -0
- package/dist/types/tools/file-recorder.d.ts +13 -0
- package/dist/types/tools/find.d.ts +95 -0
- package/dist/types/tools/fs-cache-invalidation.d.ts +15 -0
- package/dist/types/tools/gh-format.d.ts +6 -0
- package/dist/types/tools/gh-renderer.d.ts +25 -0
- package/dist/types/tools/gh.d.ts +356 -0
- package/dist/types/tools/github-cache.d.ts +103 -0
- package/dist/types/tools/grouped-file-output.d.ts +36 -0
- package/dist/types/tools/hindsight-recall.d.ts +21 -0
- package/dist/types/tools/hindsight-reflect.d.ts +23 -0
- package/dist/types/tools/hindsight-retain.d.ts +27 -0
- package/dist/types/tools/image-gen.d.ts +79 -0
- package/dist/types/tools/index.d.ts +281 -0
- package/dist/types/tools/inspect-image-renderer.d.ts +26 -0
- package/dist/types/tools/inspect-image.d.ts +31 -0
- package/dist/types/tools/irc.d.ts +79 -0
- package/dist/types/tools/job.d.ts +65 -0
- package/dist/types/tools/json-tree.d.ts +23 -0
- package/dist/types/tools/jtd-to-json-schema.d.ts +29 -0
- package/dist/types/tools/jtd-to-typescript.d.ts +26 -0
- package/dist/types/tools/jtd-utils.d.ts +42 -0
- package/dist/types/tools/list-limit.d.ts +12 -0
- package/dist/types/tools/match-line-format.d.ts +11 -0
- package/dist/types/tools/monitor.d.ts +65 -0
- package/dist/types/tools/output-meta.d.ts +204 -0
- package/dist/types/tools/path-utils.d.ts +147 -0
- package/dist/types/tools/plan-mode-guard.d.ts +18 -0
- package/dist/types/tools/read.d.ts +85 -0
- package/dist/types/tools/recipe/index.d.ts +45 -0
- package/dist/types/tools/recipe/render.d.ts +36 -0
- package/dist/types/tools/recipe/runner.d.ts +60 -0
- package/dist/types/tools/recipe/runners/cargo.d.ts +16 -0
- package/dist/types/tools/recipe/runners/index.d.ts +2 -0
- package/dist/types/tools/recipe/runners/just.d.ts +2 -0
- package/dist/types/tools/recipe/runners/make.d.ts +2 -0
- package/dist/types/tools/recipe/runners/pkg.d.ts +2 -0
- package/dist/types/tools/recipe/runners/task.d.ts +2 -0
- package/dist/types/tools/render-mermaid.d.ts +37 -0
- package/dist/types/tools/render-utils.d.ts +158 -0
- package/dist/types/tools/renderers.d.ts +26 -0
- package/dist/types/tools/resolve.d.ts +90 -0
- package/dist/types/tools/review.d.ts +63 -0
- package/dist/types/tools/search-tool-bm25.d.ts +65 -0
- package/dist/types/tools/search.d.ts +93 -0
- package/dist/types/tools/skill.d.ts +47 -0
- package/dist/types/tools/sqlite-reader.d.ts +93 -0
- package/dist/types/tools/ssh.d.ts +67 -0
- package/dist/types/tools/subagent-render.d.ts +25 -0
- package/dist/types/tools/subagent.d.ts +87 -0
- package/dist/types/tools/telegram-send.d.ts +53 -0
- package/dist/types/tools/todo-write.d.ts +120 -0
- package/dist/types/tools/tool-errors.d.ts +33 -0
- package/dist/types/tools/tool-result.d.ts +30 -0
- package/dist/types/tools/tool-timeouts.d.ts +51 -0
- package/dist/types/tools/vim.d.ts +58 -0
- package/dist/types/tools/write.d.ts +59 -0
- package/dist/types/tools/yield.d.ts +25 -0
- package/dist/types/tui/code-cell.d.ts +32 -0
- package/dist/types/tui/file-list.d.ts +22 -0
- package/dist/types/tui/hyperlink.d.ts +42 -0
- package/dist/types/tui/index.d.ts +11 -0
- package/dist/types/tui/output-block.d.ts +28 -0
- package/dist/types/tui/status-line.d.ts +18 -0
- package/dist/types/tui/tree-list.d.ts +19 -0
- package/dist/types/tui/types.d.ts +13 -0
- package/dist/types/tui/utils.d.ts +36 -0
- package/dist/types/utils/changelog.d.ts +36 -0
- package/dist/types/utils/clipboard.d.ts +22 -0
- package/dist/types/utils/command-args.d.ts +9 -0
- package/dist/types/utils/commit-message-generator.d.ts +7 -0
- package/dist/types/utils/edit-mode.d.ts +13 -0
- package/dist/types/utils/event-bus.d.ts +6 -0
- package/dist/types/utils/external-editor.d.ts +17 -0
- package/dist/types/utils/file-display-mode.d.ts +27 -0
- package/dist/types/utils/file-mentions.d.ts +11 -0
- package/dist/types/utils/git.d.ts +361 -0
- package/dist/types/utils/image-loading.d.ts +26 -0
- package/dist/types/utils/image-resize.d.ts +39 -0
- package/dist/types/utils/lang-from-path.d.ts +8 -0
- package/dist/types/utils/markit.d.ts +7 -0
- package/dist/types/utils/open.d.ts +2 -0
- package/dist/types/utils/session-color.d.ts +10 -0
- package/dist/types/utils/shell-snapshot.d.ts +5 -0
- package/dist/types/utils/sixel.d.ts +21 -0
- package/dist/types/utils/title-generator.d.ts +31 -0
- package/dist/types/utils/tokenizer-download.d.ts +4 -0
- package/dist/types/utils/tokenizer-encoding.d.ts +7 -0
- package/dist/types/utils/tool-choice.d.ts +20 -0
- package/dist/types/utils/tools-manager.d.ts +9 -0
- package/dist/types/vim/buffer.d.ts +41 -0
- package/dist/types/vim/commands.d.ts +6 -0
- package/dist/types/vim/engine.d.ts +47 -0
- package/dist/types/vim/parser.d.ts +3 -0
- package/dist/types/vim/render.d.ts +25 -0
- package/dist/types/vim/types.d.ts +182 -0
- package/dist/types/web/kagi.d.ts +23 -0
- package/dist/types/web/parallel.d.ts +58 -0
- package/dist/types/web/public-fetch-url.d.ts +1 -0
- package/dist/types/web/scrapers/artifacthub.d.ts +6 -0
- package/dist/types/web/scrapers/arxiv.d.ts +5 -0
- package/dist/types/web/scrapers/aur.d.ts +5 -0
- package/dist/types/web/scrapers/biorxiv.d.ts +5 -0
- package/dist/types/web/scrapers/bluesky.d.ts +5 -0
- package/dist/types/web/scrapers/brew.d.ts +5 -0
- package/dist/types/web/scrapers/cheatsh.d.ts +8 -0
- package/dist/types/web/scrapers/chocolatey.d.ts +5 -0
- package/dist/types/web/scrapers/choosealicense.d.ts +2 -0
- package/dist/types/web/scrapers/cisa-kev.d.ts +5 -0
- package/dist/types/web/scrapers/clojars.d.ts +5 -0
- package/dist/types/web/scrapers/coingecko.d.ts +5 -0
- package/dist/types/web/scrapers/crates-io.d.ts +5 -0
- package/dist/types/web/scrapers/crossref.d.ts +2 -0
- package/dist/types/web/scrapers/devto.d.ts +5 -0
- package/dist/types/web/scrapers/discogs.d.ts +8 -0
- package/dist/types/web/scrapers/discourse.d.ts +5 -0
- package/dist/types/web/scrapers/dockerhub.d.ts +5 -0
- package/dist/types/web/scrapers/docs-rs.d.ts +2 -0
- package/dist/types/web/scrapers/fdroid.d.ts +5 -0
- package/dist/types/web/scrapers/firefox-addons.d.ts +2 -0
- package/dist/types/web/scrapers/flathub.d.ts +2 -0
- package/dist/types/web/scrapers/github-gist.d.ts +5 -0
- package/dist/types/web/scrapers/github.d.ts +12 -0
- package/dist/types/web/scrapers/gitlab.d.ts +5 -0
- package/dist/types/web/scrapers/go-pkg.d.ts +5 -0
- package/dist/types/web/scrapers/hackage.d.ts +5 -0
- package/dist/types/web/scrapers/hackernews.d.ts +2 -0
- package/dist/types/web/scrapers/hex.d.ts +5 -0
- package/dist/types/web/scrapers/huggingface.d.ts +2 -0
- package/dist/types/web/scrapers/iacr.d.ts +5 -0
- package/dist/types/web/scrapers/index.d.ts +84 -0
- package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +2 -0
- package/dist/types/web/scrapers/lemmy.d.ts +2 -0
- package/dist/types/web/scrapers/lobsters.d.ts +5 -0
- package/dist/types/web/scrapers/mastodon.d.ts +5 -0
- package/dist/types/web/scrapers/maven.d.ts +6 -0
- package/dist/types/web/scrapers/mdn.d.ts +2 -0
- package/dist/types/web/scrapers/metacpan.d.ts +5 -0
- package/dist/types/web/scrapers/musicbrainz.d.ts +5 -0
- package/dist/types/web/scrapers/npm.d.ts +5 -0
- package/dist/types/web/scrapers/nuget.d.ts +5 -0
- package/dist/types/web/scrapers/nvd.d.ts +5 -0
- package/dist/types/web/scrapers/ollama.d.ts +2 -0
- package/dist/types/web/scrapers/open-vsx.d.ts +5 -0
- package/dist/types/web/scrapers/opencorporates.d.ts +5 -0
- package/dist/types/web/scrapers/openlibrary.d.ts +5 -0
- package/dist/types/web/scrapers/orcid.d.ts +5 -0
- package/dist/types/web/scrapers/osv.d.ts +5 -0
- package/dist/types/web/scrapers/packagist.d.ts +5 -0
- package/dist/types/web/scrapers/pub-dev.d.ts +5 -0
- package/dist/types/web/scrapers/pubmed.d.ts +5 -0
- package/dist/types/web/scrapers/pypi.d.ts +5 -0
- package/dist/types/web/scrapers/rawg.d.ts +2 -0
- package/dist/types/web/scrapers/readthedocs.d.ts +2 -0
- package/dist/types/web/scrapers/reddit.d.ts +5 -0
- package/dist/types/web/scrapers/repology.d.ts +5 -0
- package/dist/types/web/scrapers/rfc.d.ts +5 -0
- package/dist/types/web/scrapers/rubygems.d.ts +5 -0
- package/dist/types/web/scrapers/searchcode.d.ts +2 -0
- package/dist/types/web/scrapers/sec-edgar.d.ts +5 -0
- package/dist/types/web/scrapers/semantic-scholar.d.ts +2 -0
- package/dist/types/web/scrapers/snapcraft.d.ts +2 -0
- package/dist/types/web/scrapers/sourcegraph.d.ts +2 -0
- package/dist/types/web/scrapers/spdx.d.ts +5 -0
- package/dist/types/web/scrapers/spotify.d.ts +8 -0
- package/dist/types/web/scrapers/stackoverflow.d.ts +6 -0
- package/dist/types/web/scrapers/terraform.d.ts +5 -0
- package/dist/types/web/scrapers/tldr.d.ts +7 -0
- package/dist/types/web/scrapers/twitter.d.ts +5 -0
- package/dist/types/web/scrapers/types.d.ts +78 -0
- package/dist/types/web/scrapers/utils.d.ts +26 -0
- package/dist/types/web/scrapers/vimeo.d.ts +5 -0
- package/dist/types/web/scrapers/vscode-marketplace.d.ts +5 -0
- package/dist/types/web/scrapers/w3c.d.ts +2 -0
- package/dist/types/web/scrapers/wikidata.d.ts +5 -0
- package/dist/types/web/scrapers/wikipedia.d.ts +5 -0
- package/dist/types/web/scrapers/youtube.d.ts +5 -0
- package/dist/types/web/search/index.d.ts +95 -0
- package/dist/types/web/search/provider.d.ts +35 -0
- package/dist/types/web/search/providers/anthropic.d.ts +32 -0
- package/dist/types/web/search/providers/base.d.ts +90 -0
- package/dist/types/web/search/providers/brave.d.ts +27 -0
- package/dist/types/web/search/providers/codex.d.ts +35 -0
- package/dist/types/web/search/providers/duckduckgo.d.ts +57 -0
- package/dist/types/web/search/providers/exa.d.ts +52 -0
- package/dist/types/web/search/providers/gemini.d.ts +59 -0
- package/dist/types/web/search/providers/jina.d.ts +26 -0
- package/dist/types/web/search/providers/kagi.d.ts +24 -0
- package/dist/types/web/search/providers/kimi.d.ts +27 -0
- package/dist/types/web/search/providers/parallel.d.ts +15 -0
- package/dist/types/web/search/providers/perplexity.d.ts +38 -0
- package/dist/types/web/search/providers/searxng.d.ts +44 -0
- package/dist/types/web/search/providers/synthetic.d.ts +21 -0
- package/dist/types/web/search/providers/tavily.d.ts +29 -0
- package/dist/types/web/search/providers/utils.d.ts +52 -0
- package/dist/types/web/search/providers/xai.d.ts +62 -0
- package/dist/types/web/search/providers/zai.d.ts +28 -0
- package/dist/types/web/search/render.d.ts +35 -0
- package/dist/types/web/search/types.d.ts +348 -0
- package/dist/types/web/search/utils.d.ts +4 -0
- package/dist/types/workspace-tree.d.ts +42 -0
- package/examples/README.md +21 -0
- package/examples/custom-tools/README.md +104 -0
- package/examples/custom-tools/hello/index.ts +20 -0
- package/examples/extensions/README.md +120 -0
- package/examples/extensions/api-demo.ts +79 -0
- package/examples/extensions/chalk-logger.ts +25 -0
- package/examples/extensions/hello.ts +31 -0
- package/examples/extensions/pirate.ts +43 -0
- package/examples/extensions/plan-mode.ts +549 -0
- package/examples/extensions/reload-runtime.ts +38 -0
- package/examples/extensions/tools.ts +144 -0
- package/examples/extensions/with-deps/index.ts +36 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +16 -0
- package/examples/hooks/README.md +56 -0
- package/examples/hooks/auto-commit-on-exit.ts +48 -0
- package/examples/hooks/confirm-destructive.ts +58 -0
- package/examples/hooks/custom-compaction.ts +115 -0
- package/examples/hooks/dirty-repo-guard.ts +51 -0
- package/examples/hooks/file-trigger.ts +40 -0
- package/examples/hooks/git-checkpoint.ts +52 -0
- package/examples/hooks/handoff.ts +149 -0
- package/examples/hooks/permission-gate.ts +33 -0
- package/examples/hooks/protected-paths.ts +29 -0
- package/examples/hooks/qna.ts +118 -0
- package/examples/hooks/status-line.ts +39 -0
- package/examples/sdk/01-minimal.ts +21 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +46 -0
- package/examples/sdk/04-skills.ts +43 -0
- package/examples/sdk/06-extensions.ts +82 -0
- package/examples/sdk/06-hooks.ts +61 -0
- package/examples/sdk/07-context-files.ts +35 -0
- package/examples/sdk/08-prompt-templates.ts +41 -0
- package/examples/sdk/08-slash-commands.ts +46 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +54 -0
- package/examples/sdk/11-sessions.ts +47 -0
- package/examples/sdk/README.md +172 -0
- package/package.json +539 -0
- package/scripts/build-binary.ts +84 -0
- package/scripts/format-prompts.ts +68 -0
- package/scripts/generate-docs-index.ts +71 -0
- package/scripts/generate-template.ts +33 -0
- package/src/async/index.ts +2 -0
- package/src/async/job-manager.ts +1299 -0
- package/src/async/support.ts +6 -0
- package/src/autoresearch/command-resume.md +14 -0
- package/src/autoresearch/dashboard.ts +446 -0
- package/src/autoresearch/git.ts +319 -0
- package/src/autoresearch/helpers.ts +218 -0
- package/src/autoresearch/index.ts +536 -0
- package/src/autoresearch/prompt-setup.md +43 -0
- package/src/autoresearch/prompt.md +103 -0
- package/src/autoresearch/resume-message.md +10 -0
- package/src/autoresearch/state.ts +273 -0
- package/src/autoresearch/storage.ts +699 -0
- package/src/autoresearch/tools/init-experiment.ts +272 -0
- package/src/autoresearch/tools/log-experiment.ts +524 -0
- package/src/autoresearch/tools/run-experiment.ts +475 -0
- package/src/autoresearch/tools/update-notes.ts +109 -0
- package/src/autoresearch/types.ts +168 -0
- package/src/bun-imports.d.ts +28 -0
- package/src/capability/context-file.ts +44 -0
- package/src/capability/extension-module.ts +34 -0
- package/src/capability/extension.ts +47 -0
- package/src/capability/fs.ts +107 -0
- package/src/capability/hook.ts +40 -0
- package/src/capability/index.ts +436 -0
- package/src/capability/instruction.ts +37 -0
- package/src/capability/mcp.ts +74 -0
- package/src/capability/prompt.ts +35 -0
- package/src/capability/rule.ts +244 -0
- package/src/capability/settings.ts +34 -0
- package/src/capability/skill.ts +56 -0
- package/src/capability/slash-command.ts +40 -0
- package/src/capability/ssh.ts +41 -0
- package/src/capability/system-prompt.ts +34 -0
- package/src/capability/tool.ts +38 -0
- package/src/capability/types.ts +168 -0
- package/src/cli/agents-cli.ts +141 -0
- package/src/cli/args.ts +309 -0
- package/src/cli/auth-broker-cli.ts +747 -0
- package/src/cli/auth-gateway-cli.ts +411 -0
- package/src/cli/classify-install-target.ts +50 -0
- package/src/cli/commands/init-xdg.ts +27 -0
- package/src/cli/config-cli.ts +426 -0
- package/src/cli/fast-help.ts +80 -0
- package/src/cli/file-processor.ts +123 -0
- package/src/cli/grep-cli.ts +160 -0
- package/src/cli/initial-message.ts +58 -0
- package/src/cli/list-models.ts +194 -0
- package/src/cli/notify-cli.ts +135 -0
- package/src/cli/plugin-cli.ts +942 -0
- package/src/cli/read-cli.ts +57 -0
- package/src/cli/session-picker.ts +52 -0
- package/src/cli/setup-cli.ts +537 -0
- package/src/cli/shell-cli.ts +176 -0
- package/src/cli/skills-cli.ts +88 -0
- package/src/cli/ssh-cli.ts +179 -0
- package/src/cli/stats-cli.ts +238 -0
- package/src/cli/update-cli.ts +468 -0
- package/src/cli/web-search-cli.ts +133 -0
- package/src/cli/worktree-cli.ts +291 -0
- package/src/cli.ts +150 -0
- package/src/commands/acp.ts +24 -0
- package/src/commands/agents.ts +57 -0
- package/src/commands/auth-broker.ts +96 -0
- package/src/commands/auth-gateway.ts +63 -0
- package/src/commands/chat.ts +25 -0
- package/src/commands/codex-native-hook.ts +12 -0
- package/src/commands/commit.ts +46 -0
- package/src/commands/config.ts +51 -0
- package/src/commands/contribution-prep.ts +41 -0
- package/src/commands/coordinator.ts +71 -0
- package/src/commands/goal.ts +37 -0
- package/src/commands/grep.ts +48 -0
- package/src/commands/harness.ts +1137 -0
- package/src/commands/interview.ts +42 -0
- package/src/commands/launch.ts +178 -0
- package/src/commands/mcp-serve.ts +63 -0
- package/src/commands/memory.ts +34 -0
- package/src/commands/notify.ts +45 -0
- package/src/commands/orchestrate.ts +55 -0
- package/src/commands/planphase.ts +19 -0
- package/src/commands/plugin.ts +78 -0
- package/src/commands/ralplan.ts +25 -0
- package/src/commands/read.ts +35 -0
- package/src/commands/session.ts +151 -0
- package/src/commands/setup.ts +85 -0
- package/src/commands/shell.ts +29 -0
- package/src/commands/skills.ts +49 -0
- package/src/commands/ssh.ts +60 -0
- package/src/commands/state.ts +25 -0
- package/src/commands/stats.ts +29 -0
- package/src/commands/team.ts +217 -0
- package/src/commands/ultragoal.ts +40 -0
- package/src/commands/update.ts +21 -0
- package/src/commands/web-search.ts +42 -0
- package/src/commands/worktree.ts +57 -0
- package/src/commit/agentic/agent.ts +316 -0
- package/src/commit/agentic/fallback.ts +96 -0
- package/src/commit/agentic/index.ts +356 -0
- package/src/commit/agentic/prompts/analyze-file.md +22 -0
- package/src/commit/agentic/prompts/session-user.md +25 -0
- package/src/commit/agentic/prompts/split-confirm.md +1 -0
- package/src/commit/agentic/prompts/system.md +38 -0
- package/src/commit/agentic/state.ts +60 -0
- package/src/commit/agentic/tools/analyze-file.ts +127 -0
- package/src/commit/agentic/tools/git-file-diff.ts +191 -0
- package/src/commit/agentic/tools/git-hunk.ts +50 -0
- package/src/commit/agentic/tools/git-overview.ts +81 -0
- package/src/commit/agentic/tools/index.ts +54 -0
- package/src/commit/agentic/tools/propose-changelog.ts +144 -0
- package/src/commit/agentic/tools/propose-commit.ts +109 -0
- package/src/commit/agentic/tools/recent-commits.ts +81 -0
- package/src/commit/agentic/tools/schemas.ts +23 -0
- package/src/commit/agentic/tools/split-commit.ts +238 -0
- package/src/commit/agentic/topo-sort.ts +44 -0
- package/src/commit/agentic/trivial.ts +51 -0
- package/src/commit/agentic/validation.ts +183 -0
- package/src/commit/analysis/conventional.ts +64 -0
- package/src/commit/analysis/index.ts +4 -0
- package/src/commit/analysis/scope.ts +242 -0
- package/src/commit/analysis/summary.ts +105 -0
- package/src/commit/analysis/validation.ts +66 -0
- package/src/commit/changelog/detect.ts +40 -0
- package/src/commit/changelog/generate.ts +97 -0
- package/src/commit/changelog/index.ts +234 -0
- package/src/commit/changelog/parse.ts +44 -0
- package/src/commit/cli.ts +85 -0
- package/src/commit/git/diff.ts +148 -0
- package/src/commit/index.ts +5 -0
- package/src/commit/map-reduce/index.ts +69 -0
- package/src/commit/map-reduce/map-phase.ts +193 -0
- package/src/commit/map-reduce/reduce-phase.ts +49 -0
- package/src/commit/map-reduce/utils.ts +9 -0
- package/src/commit/message.ts +11 -0
- package/src/commit/model-selection.ts +51 -0
- package/src/commit/pipeline.ts +244 -0
- package/src/commit/prompts/analysis-system.md +148 -0
- package/src/commit/prompts/analysis-user.md +38 -0
- package/src/commit/prompts/changelog-system.md +50 -0
- package/src/commit/prompts/changelog-user.md +18 -0
- package/src/commit/prompts/file-observer-system.md +24 -0
- package/src/commit/prompts/file-observer-user.md +8 -0
- package/src/commit/prompts/reduce-system.md +50 -0
- package/src/commit/prompts/reduce-user.md +17 -0
- package/src/commit/prompts/summary-retry.md +3 -0
- package/src/commit/prompts/summary-system.md +38 -0
- package/src/commit/prompts/summary-user.md +13 -0
- package/src/commit/prompts/types-description.md +2 -0
- package/src/commit/shared-llm.ts +77 -0
- package/src/commit/types.ts +118 -0
- package/src/commit/utils/exclusions.ts +42 -0
- package/src/commit/utils.ts +58 -0
- package/src/config/config-file.ts +232 -0
- package/src/config/file-lock.ts +121 -0
- package/src/config/keybindings.ts +553 -0
- package/src/config/mcp-schema.json +230 -0
- package/src/config/model-equivalence.ts +816 -0
- package/src/config/model-profile-activation.ts +165 -0
- package/src/config/model-profiles.ts +188 -0
- package/src/config/model-registry.ts +2751 -0
- package/src/config/model-resolver.ts +1355 -0
- package/src/config/models-config-schema.ts +254 -0
- package/src/config/oauth-provider-aliases.ts +49 -0
- package/src/config/prompt-templates.ts +310 -0
- package/src/config/resolve-config-value.ts +94 -0
- package/src/config/settings-schema.ts +3235 -0
- package/src/config/settings.ts +979 -0
- package/src/config/skill-settings-defaults.ts +35 -0
- package/src/config.ts +212 -0
- package/src/coordinator/contract.ts +20 -0
- package/src/coordinator-mcp/policy.ts +174 -0
- package/src/coordinator-mcp/safety.ts +80 -0
- package/src/coordinator-mcp/server.ts +1319 -0
- package/src/cursor.ts +372 -0
- package/src/dap/client.ts +689 -0
- package/src/dap/config.ts +150 -0
- package/src/dap/defaults.json +211 -0
- package/src/dap/index.ts +4 -0
- package/src/dap/session.ts +1306 -0
- package/src/dap/types.ts +600 -0
- package/src/debug/crash-diagnostics.ts +223 -0
- package/src/debug/index.ts +459 -0
- package/src/debug/log-formatting.ts +58 -0
- package/src/debug/log-viewer.ts +908 -0
- package/src/debug/profiler.ts +162 -0
- package/src/debug/raw-sse-buffer.ts +270 -0
- package/src/debug/raw-sse.ts +213 -0
- package/src/debug/report-bundle.ts +365 -0
- package/src/debug/runtime-gauges.ts +20 -0
- package/src/debug/system-info.ts +111 -0
- package/src/defaults/jwc/mcp-defaults.json +8 -0
- package/src/defaults/jwc/skill-fragments/browse/web-ai.md +130 -0
- package/src/defaults/jwc/skills/browse/SKILL.md +113 -0
- package/src/defaults/jwc/skills/goal/SKILL.md +323 -0
- package/src/defaults/jwc/skills/goal/ai-slop-cleaner.md +61 -0
- package/src/defaults/jwc/skills/jaw-interview/SKILL.md +891 -0
- package/src/defaults/jwc/skills/jaw-interview/auto-answer-uncertain.md +37 -0
- package/src/defaults/jwc/skills/jaw-interview/auto-research-greenfield.md +42 -0
- package/src/defaults/jwc/skills/plan/SKILL.md +201 -0
- package/src/defaults/jwc/skills/search/SKILL.md +120 -0
- package/src/defaults/jwc/skills/team/SKILL.md +441 -0
- package/src/defaults/jwc-defaults.ts +316 -0
- package/src/discovery/agents-md.ts +67 -0
- package/src/discovery/agents.ts +230 -0
- package/src/discovery/builtin.ts +932 -0
- package/src/discovery/claude-plugins.ts +407 -0
- package/src/discovery/claude.ts +313 -0
- package/src/discovery/cli-jaw.ts +36 -0
- package/src/discovery/cline.ts +83 -0
- package/src/discovery/codex.ts +330 -0
- package/src/discovery/cursor.ts +220 -0
- package/src/discovery/gemini.ts +383 -0
- package/src/discovery/github.ts +118 -0
- package/src/discovery/helpers.ts +1010 -0
- package/src/discovery/index.ts +77 -0
- package/src/discovery/mcp-json.ts +171 -0
- package/src/discovery/opencode.ts +398 -0
- package/src/discovery/plugin-dir-roots.ts +28 -0
- package/src/discovery/ssh.ts +153 -0
- package/src/discovery/substitute-plugin-root.ts +29 -0
- package/src/discovery/vscode.ts +105 -0
- package/src/discovery/windsurf.ts +147 -0
- package/src/edit/apply-patch/index.ts +87 -0
- package/src/edit/apply-patch/parser.ts +174 -0
- package/src/edit/diff.ts +873 -0
- package/src/edit/file-read-cache.ts +95 -0
- package/src/edit/index.ts +528 -0
- package/src/edit/modes/apply-patch.lark +19 -0
- package/src/edit/modes/apply-patch.ts +53 -0
- package/src/edit/modes/patch.ts +1835 -0
- package/src/edit/modes/replace.ts +1161 -0
- package/src/edit/normalize.ts +375 -0
- package/src/edit/notebook.ts +222 -0
- package/src/edit/read-file.ts +25 -0
- package/src/edit/renderer.ts +683 -0
- package/src/edit/streaming.ts +561 -0
- package/src/eval/backend.ts +43 -0
- package/src/eval/index.ts +4 -0
- package/src/eval/js/context-manager.ts +414 -0
- package/src/eval/js/executor.ts +134 -0
- package/src/eval/js/index.ts +46 -0
- package/src/eval/js/shared/helpers.ts +237 -0
- package/src/eval/js/shared/indirect-eval.ts +30 -0
- package/src/eval/js/shared/prelude.ts +2 -0
- package/src/eval/js/shared/prelude.txt +70 -0
- package/src/eval/js/shared/rewrite-imports.ts +415 -0
- package/src/eval/js/shared/runtime.ts +301 -0
- package/src/eval/js/shared/types.ts +18 -0
- package/src/eval/js/tool-bridge.ts +144 -0
- package/src/eval/js/worker-core.ts +146 -0
- package/src/eval/js/worker-entry.ts +24 -0
- package/src/eval/js/worker-protocol.ts +41 -0
- package/src/eval/py/display.ts +71 -0
- package/src/eval/py/executor.ts +622 -0
- package/src/eval/py/index.ts +58 -0
- package/src/eval/py/kernel.ts +683 -0
- package/src/eval/py/prelude.py +462 -0
- package/src/eval/py/prelude.ts +3 -0
- package/src/eval/py/runner.py +910 -0
- package/src/eval/py/runtime.ts +210 -0
- package/src/eval/py/tool-bridge.ts +137 -0
- package/src/eval/types.ts +48 -0
- package/src/exa/factory.ts +60 -0
- package/src/exa/index.ts +27 -0
- package/src/exa/mcp-client.ts +364 -0
- package/src/exa/render.ts +244 -0
- package/src/exa/researcher.ts +36 -0
- package/src/exa/search.ts +47 -0
- package/src/exa/types.ts +166 -0
- package/src/exa/websets.ts +248 -0
- package/src/exec/bash-executor.ts +362 -0
- package/src/exec/exec.ts +53 -0
- package/src/exec/idle-timeout-watchdog.ts +126 -0
- package/src/exec/non-interactive-env.ts +73 -0
- package/src/export/custom-share.ts +65 -0
- package/src/export/html/index.ts +168 -0
- package/src/export/html/template.css +1060 -0
- package/src/export/html/template.generated.ts +2 -0
- package/src/export/html/template.html +47 -0
- package/src/export/html/template.js +2268 -0
- package/src/export/html/template.macro.ts +25 -0
- package/src/export/html/vendor/highlight.min.js +1213 -0
- package/src/export/html/vendor/marked.min.js +6 -0
- package/src/export/ttsr.ts +444 -0
- package/src/extensibility/custom-commands/bundled/ci-green/index.ts +25 -0
- package/src/extensibility/custom-commands/bundled/review/index.ts +456 -0
- package/src/extensibility/custom-commands/index.ts +2 -0
- package/src/extensibility/custom-commands/loader.ts +238 -0
- package/src/extensibility/custom-commands/types.ts +113 -0
- package/src/extensibility/custom-tools/index.ts +7 -0
- package/src/extensibility/custom-tools/loader.ts +245 -0
- package/src/extensibility/custom-tools/types.ts +255 -0
- package/src/extensibility/custom-tools/wrapper.ts +47 -0
- package/src/extensibility/extensions/compact-handler.ts +40 -0
- package/src/extensibility/extensions/get-commands-handler.ts +80 -0
- package/src/extensibility/extensions/index.ts +15 -0
- package/src/extensibility/extensions/loader.ts +555 -0
- package/src/extensibility/extensions/runner.ts +900 -0
- package/src/extensibility/extensions/types.ts +1314 -0
- package/src/extensibility/extensions/wrapper.ts +189 -0
- package/src/extensibility/hooks/index.ts +5 -0
- package/src/extensibility/hooks/loader.ts +257 -0
- package/src/extensibility/hooks/runner.ts +425 -0
- package/src/extensibility/hooks/tool-wrapper.ts +107 -0
- package/src/extensibility/hooks/types.ts +599 -0
- package/src/extensibility/jwc-plugins/activation.ts +87 -0
- package/src/extensibility/jwc-plugins/index.ts +9 -0
- package/src/extensibility/jwc-plugins/injection.ts +114 -0
- package/src/extensibility/jwc-plugins/loader.ts +131 -0
- package/src/extensibility/jwc-plugins/paths.ts +66 -0
- package/src/extensibility/jwc-plugins/schema.ts +79 -0
- package/src/extensibility/jwc-plugins/state.ts +29 -0
- package/src/extensibility/jwc-plugins/tools.ts +47 -0
- package/src/extensibility/jwc-plugins/types.ts +97 -0
- package/src/extensibility/jwc-plugins/validation.ts +76 -0
- package/src/extensibility/plugins/doctor.ts +66 -0
- package/src/extensibility/plugins/git-url.ts +281 -0
- package/src/extensibility/plugins/index.ts +9 -0
- package/src/extensibility/plugins/installer.ts +192 -0
- package/src/extensibility/plugins/legacy-pi-compat.ts +336 -0
- package/src/extensibility/plugins/loader.ts +288 -0
- package/src/extensibility/plugins/manager.ts +739 -0
- package/src/extensibility/plugins/marketplace/cache.ts +136 -0
- package/src/extensibility/plugins/marketplace/fetcher.ts +317 -0
- package/src/extensibility/plugins/marketplace/index.ts +6 -0
- package/src/extensibility/plugins/marketplace/manager.ts +770 -0
- package/src/extensibility/plugins/marketplace/registry.ts +196 -0
- package/src/extensibility/plugins/marketplace/source-resolver.ts +147 -0
- package/src/extensibility/plugins/marketplace/types.ts +191 -0
- package/src/extensibility/plugins/parser.ts +105 -0
- package/src/extensibility/plugins/types.ts +194 -0
- package/src/extensibility/shared-events.ts +344 -0
- package/src/extensibility/skills.ts +449 -0
- package/src/extensibility/slash-commands.ts +249 -0
- package/src/extensibility/tool-proxy.ts +25 -0
- package/src/extensibility/typebox.ts +418 -0
- package/src/extensibility/utils.ts +44 -0
- package/src/goals/goal-planning-start.ts +21 -0
- package/src/goals/index.ts +3 -0
- package/src/goals/runtime.ts +418 -0
- package/src/goals/state.ts +70 -0
- package/src/goals/tools/goal-tool.ts +230 -0
- package/src/harness-control-plane/classifier.ts +128 -0
- package/src/harness-control-plane/control-endpoint.ts +148 -0
- package/src/harness-control-plane/finalize.ts +306 -0
- package/src/harness-control-plane/operate.ts +225 -0
- package/src/harness-control-plane/owner.ts +664 -0
- package/src/harness-control-plane/phase-rollup.ts +96 -0
- package/src/harness-control-plane/preserve.ts +102 -0
- package/src/harness-control-plane/receipt-ingest.ts +127 -0
- package/src/harness-control-plane/receipt-spool.ts +147 -0
- package/src/harness-control-plane/receipts.ts +320 -0
- package/src/harness-control-plane/rpc-adapter.ts +282 -0
- package/src/harness-control-plane/seams.ts +39 -0
- package/src/harness-control-plane/session-lease.ts +388 -0
- package/src/harness-control-plane/state-machine.ts +119 -0
- package/src/harness-control-plane/storage.ts +423 -0
- package/src/harness-control-plane/types.ts +240 -0
- package/src/hashline/anchors.ts +113 -0
- package/src/hashline/apply.ts +737 -0
- package/src/hashline/bigrams.json +649 -0
- package/src/hashline/constants.ts +25 -0
- package/src/hashline/diff-preview.ts +43 -0
- package/src/hashline/diff.ts +56 -0
- package/src/hashline/execute.ts +267 -0
- package/src/hashline/grammar.lark +21 -0
- package/src/hashline/hash.ts +196 -0
- package/src/hashline/index.ts +13 -0
- package/src/hashline/input.ts +130 -0
- package/src/hashline/parser.ts +246 -0
- package/src/hashline/prefixes.ts +101 -0
- package/src/hashline/recovery.ts +113 -0
- package/src/hashline/stream.ts +123 -0
- package/src/hashline/types.ts +68 -0
- package/src/hindsight/backend.ts +205 -0
- package/src/hindsight/bank.ts +131 -0
- package/src/hindsight/client.ts +598 -0
- package/src/hindsight/config.ts +175 -0
- package/src/hindsight/content.ts +211 -0
- package/src/hindsight/index.ts +8 -0
- package/src/hindsight/mental-models.ts +382 -0
- package/src/hindsight/seeds.json +32 -0
- package/src/hindsight/state.ts +469 -0
- package/src/hindsight/transcript.ts +71 -0
- package/src/hooks/codex-native-hooks-config.ts +143 -0
- package/src/hooks/native-skill-hook.ts +305 -0
- package/src/hooks/skill-keywords.ts +95 -0
- package/src/hooks/skill-state.ts +654 -0
- package/src/index.ts +56 -0
- package/src/internal-urls/agent-protocol.ts +176 -0
- package/src/internal-urls/artifact-protocol.ts +75 -0
- package/src/internal-urls/docs-index.generated.ts +92 -0
- package/src/internal-urls/index.ts +21 -0
- package/src/internal-urls/issue-pr-protocol.ts +577 -0
- package/src/internal-urls/json-query.ts +126 -0
- package/src/internal-urls/jwc-protocol.ts +91 -0
- package/src/internal-urls/local-protocol.ts +249 -0
- package/src/internal-urls/mcp-protocol.ts +151 -0
- package/src/internal-urls/memory-protocol.ts +165 -0
- package/src/internal-urls/parse.ts +72 -0
- package/src/internal-urls/registry-helpers.ts +28 -0
- package/src/internal-urls/router.ts +79 -0
- package/src/internal-urls/rule-protocol.ts +38 -0
- package/src/internal-urls/skill-protocol.ts +103 -0
- package/src/internal-urls/types.ts +114 -0
- package/src/jaw-interview/structured-renderer.ts +83 -0
- package/src/jwc-runtime/actor-registry.ts +365 -0
- package/src/jwc-runtime/agent-identity.ts +16 -0
- package/src/jwc-runtime/cli-jaw-home.ts +14 -0
- package/src/jwc-runtime/cli-jaw-vocab.ts +69 -0
- package/src/jwc-runtime/cli-write-receipt.ts +31 -0
- package/src/jwc-runtime/goal-cli.ts +428 -0
- package/src/jwc-runtime/goal-engine.ts +2214 -0
- package/src/jwc-runtime/goal-guard.ts +300 -0
- package/src/jwc-runtime/goal-mode-request.ts +331 -0
- package/src/jwc-runtime/jaw-interview-runtime.ts +809 -0
- package/src/jwc-runtime/launch-tmux.ts +296 -0
- package/src/jwc-runtime/launch-worktree.ts +291 -0
- package/src/jwc-runtime/legacy-storage.ts +132 -0
- package/src/jwc-runtime/memory-runtime.ts +434 -0
- package/src/jwc-runtime/orchestrate-runtime.ts +612 -0
- package/src/jwc-runtime/orchestrate-state.ts +395 -0
- package/src/jwc-runtime/plan-writer.ts +661 -0
- package/src/jwc-runtime/restricted-role-agent-bash.ts +5 -0
- package/src/jwc-runtime/session-state-sidecar.ts +89 -0
- package/src/jwc-runtime/stage-skill-map.ts +48 -0
- package/src/jwc-runtime/state-graph.ts +86 -0
- package/src/jwc-runtime/state-migrations.ts +183 -0
- package/src/jwc-runtime/state-renderer.ts +340 -0
- package/src/jwc-runtime/state-runtime.ts +1978 -0
- package/src/jwc-runtime/state-schema.ts +218 -0
- package/src/jwc-runtime/state-validation.ts +50 -0
- package/src/jwc-runtime/state-writer.ts +765 -0
- package/src/jwc-runtime/team-runtime.ts +4181 -0
- package/src/jwc-runtime/tmux-common.ts +130 -0
- package/src/jwc-runtime/tmux-sessions.ts +169 -0
- package/src/jwc-runtime/workflow-command-ref.ts +240 -0
- package/src/jwc-runtime/workflow-manifest.generated.json +1606 -0
- package/src/jwc-runtime/workflow-manifest.ts +427 -0
- package/src/lsp/client.ts +974 -0
- package/src/lsp/clients/biome-client.ts +202 -0
- package/src/lsp/clients/index.ts +50 -0
- package/src/lsp/clients/lsp-linter-client.ts +93 -0
- package/src/lsp/clients/swiftlint-client.ts +120 -0
- package/src/lsp/config.ts +492 -0
- package/src/lsp/defaults.json +493 -0
- package/src/lsp/edits.ts +166 -0
- package/src/lsp/index.ts +2282 -0
- package/src/lsp/lspmux.ts +233 -0
- package/src/lsp/render.ts +692 -0
- package/src/lsp/startup-events.ts +13 -0
- package/src/lsp/types.ts +443 -0
- package/src/lsp/utils.ts +678 -0
- package/src/main.ts +1159 -0
- package/src/mem0/backend.ts +75 -0
- package/src/mem0/client.ts +122 -0
- package/src/mem0/config.ts +82 -0
- package/src/mem0/index.ts +5 -0
- package/src/mem0/scope.ts +54 -0
- package/src/mem0/state.ts +142 -0
- package/src/memories/index.ts +1111 -0
- package/src/memories/local-query.ts +699 -0
- package/src/memories/memory-config.ts +175 -0
- package/src/memories/memory-fts.ts +179 -0
- package/src/memories/memory-model-resolution.ts +84 -0
- package/src/memories/memory-quality.ts +163 -0
- package/src/memories/storage.ts +588 -0
- package/src/memory-backend/index.ts +4 -0
- package/src/memory-backend/local-backend.ts +50 -0
- package/src/memory-backend/off-backend.ts +16 -0
- package/src/memory-backend/resolve.ts +27 -0
- package/src/memory-backend/types.ts +82 -0
- package/src/migrate-config-dir-startup.ts +15 -0
- package/src/migrate-config-dir.ts +80 -0
- package/src/modes/acp/acp-agent.ts +2218 -0
- package/src/modes/acp/acp-client-bridge.ts +154 -0
- package/src/modes/acp/acp-event-mapper.ts +912 -0
- package/src/modes/acp/acp-mode.ts +23 -0
- package/src/modes/acp/index.ts +2 -0
- package/src/modes/acp/terminal-auth.ts +37 -0
- package/src/modes/background-row-model.ts +17 -0
- package/src/modes/bridge/auth.ts +41 -0
- package/src/modes/bridge/bridge-client-bridge.ts +47 -0
- package/src/modes/bridge/bridge-mode.ts +644 -0
- package/src/modes/bridge/bridge-ui-context.ts +200 -0
- package/src/modes/bridge/event-stream.ts +70 -0
- package/src/modes/components/_cli-jaw-entry.ts +36 -0
- package/src/modes/components/agent-dashboard.ts +1120 -0
- package/src/modes/components/assistant-message.ts +361 -0
- package/src/modes/components/background-footer-detail.ts +27 -0
- package/src/modes/components/background-footer-panel-model.ts +96 -0
- package/src/modes/components/background-footer-panel.ts +89 -0
- package/src/modes/components/bash-execution.ts +261 -0
- package/src/modes/components/bordered-loader.ts +41 -0
- package/src/modes/components/branch-summary-message.ts +65 -0
- package/src/modes/components/btw-panel.ts +104 -0
- package/src/modes/components/compaction-summary-message.ts +71 -0
- package/src/modes/components/composer-chrome.ts +42 -0
- package/src/modes/components/composer-footer.ts +113 -0
- package/src/modes/components/countdown-timer.ts +75 -0
- package/src/modes/components/custom-editor.ts +515 -0
- package/src/modes/components/custom-message.ts +85 -0
- package/src/modes/components/custom-provider-wizard.ts +318 -0
- package/src/modes/components/diff.ts +363 -0
- package/src/modes/components/dynamic-border.ts +25 -0
- package/src/modes/components/eval-execution.ts +196 -0
- package/src/modes/components/execution-shared.ts +112 -0
- package/src/modes/components/extensions/extension-dashboard.ts +350 -0
- package/src/modes/components/extensions/extension-list.ts +492 -0
- package/src/modes/components/extensions/index.ts +9 -0
- package/src/modes/components/extensions/inspector-panel.ts +317 -0
- package/src/modes/components/extensions/state-manager.ts +628 -0
- package/src/modes/components/extensions/types.ts +191 -0
- package/src/modes/components/footer.ts +270 -0
- package/src/modes/components/full-transcript-overlay.ts +133 -0
- package/src/modes/components/help-selector.ts +274 -0
- package/src/modes/components/history-search.ts +158 -0
- package/src/modes/components/hook-editor.ts +151 -0
- package/src/modes/components/hook-input.ts +79 -0
- package/src/modes/components/hook-message.ts +68 -0
- package/src/modes/components/hook-selector.ts +873 -0
- package/src/modes/components/index.ts +36 -0
- package/src/modes/components/jobs-overlay-model.ts +109 -0
- package/src/modes/components/jobs-overlay.ts +172 -0
- package/src/modes/components/keybinding-hints.ts +65 -0
- package/src/modes/components/login-dialog.ts +164 -0
- package/src/modes/components/message-frame.ts +88 -0
- package/src/modes/components/model-selector.ts +1653 -0
- package/src/modes/components/oauth-selector.ts +248 -0
- package/src/modes/components/pabcd-border.ts +98 -0
- package/src/modes/components/plugin-selector.ts +95 -0
- package/src/modes/components/plugin-settings.ts +489 -0
- package/src/modes/components/provider-onboarding-selector.ts +94 -0
- package/src/modes/components/queue-mode-selector.ts +56 -0
- package/src/modes/components/quota-panel.ts +101 -0
- package/src/modes/components/read-tool-group.ts +295 -0
- package/src/modes/components/runtime-mcp-add-wizard.ts +1341 -0
- package/src/modes/components/session-observer-overlay.ts +839 -0
- package/src/modes/components/session-selector.ts +343 -0
- package/src/modes/components/settings-defs.ts +175 -0
- package/src/modes/components/settings-selector.ts +644 -0
- package/src/modes/components/show-images-selector.ts +45 -0
- package/src/modes/components/skill-hud/render.ts +93 -0
- package/src/modes/components/skill-message.ts +110 -0
- package/src/modes/components/status-line/context-thresholds.ts +68 -0
- package/src/modes/components/status-line/git-utils.ts +42 -0
- package/src/modes/components/status-line/index.ts +4 -0
- package/src/modes/components/status-line/presets.ts +107 -0
- package/src/modes/components/status-line/segments.ts +657 -0
- package/src/modes/components/status-line/separators.ts +55 -0
- package/src/modes/components/status-line/token-rate.ts +66 -0
- package/src/modes/components/status-line/types.ts +102 -0
- package/src/modes/components/status-line/workflow-readers.ts +97 -0
- package/src/modes/components/status-line.ts +917 -0
- package/src/modes/components/theme-selector.ts +63 -0
- package/src/modes/components/thinking-selector.ts +52 -0
- package/src/modes/components/todo-reminder.ts +40 -0
- package/src/modes/components/tool-execution.ts +990 -0
- package/src/modes/components/tool-transcript-overlay.ts +81 -0
- package/src/modes/components/tree-selector.ts +930 -0
- package/src/modes/components/ttsr-notification.ts +100 -0
- package/src/modes/components/user-message-selector.ts +141 -0
- package/src/modes/components/user-message.ts +53 -0
- package/src/modes/components/visual-truncate.ts +63 -0
- package/src/modes/components/welcome.ts +522 -0
- package/src/modes/controllers/btw-controller.ts +105 -0
- package/src/modes/controllers/command-controller-shared.ts +108 -0
- package/src/modes/controllers/command-controller.ts +1703 -0
- package/src/modes/controllers/event-controller.ts +1054 -0
- package/src/modes/controllers/extension-ui-controller.ts +1010 -0
- package/src/modes/controllers/input-controller.ts +1422 -0
- package/src/modes/controllers/runtime-mcp-command-controller.ts +1934 -0
- package/src/modes/controllers/selector-controller.ts +1605 -0
- package/src/modes/controllers/ssh-command-controller.ts +384 -0
- package/src/modes/controllers/todo-command-controller.ts +485 -0
- package/src/modes/data/emojis.json +1 -0
- package/src/modes/emoji-autocomplete.ts +285 -0
- package/src/modes/index.ts +35 -0
- package/src/modes/interactive-mode.ts +2938 -0
- package/src/modes/jobs-observer.ts +352 -0
- package/src/modes/oauth-manual-input.ts +42 -0
- package/src/modes/print-mode.ts +121 -0
- package/src/modes/prompt-action-autocomplete.ts +409 -0
- package/src/modes/rpc/host-tools.ts +1 -0
- package/src/modes/rpc/host-uris.ts +1 -0
- package/src/modes/rpc/rpc-client.ts +914 -0
- package/src/modes/rpc/rpc-mode.ts +784 -0
- package/src/modes/rpc/rpc-types.ts +601 -0
- package/src/modes/runtime-init.ts +116 -0
- package/src/modes/session-observer-registry.ts +146 -0
- package/src/modes/shared/agent-wire/approval-gate.ts +151 -0
- package/src/modes/shared/agent-wire/command-contract.ts +18 -0
- package/src/modes/shared/agent-wire/command-dispatch.ts +438 -0
- package/src/modes/shared/agent-wire/command-validation.ts +164 -0
- package/src/modes/shared/agent-wire/event-contract.ts +148 -0
- package/src/modes/shared/agent-wire/event-envelope.ts +141 -0
- package/src/modes/shared/agent-wire/event-observation.ts +424 -0
- package/src/modes/shared/agent-wire/handshake.ts +157 -0
- package/src/modes/shared/agent-wire/host-tool-bridge.ts +194 -0
- package/src/modes/shared/agent-wire/host-uri-bridge.ts +236 -0
- package/src/modes/shared/agent-wire/jaw-interview-gate.ts +253 -0
- package/src/modes/shared/agent-wire/protocol.ts +46 -0
- package/src/modes/shared/agent-wire/responses.ts +17 -0
- package/src/modes/shared/agent-wire/scopes.ts +91 -0
- package/src/modes/shared/agent-wire/session-registry.ts +109 -0
- package/src/modes/shared/agent-wire/ui-request-broker.ts +150 -0
- package/src/modes/shared/agent-wire/ui-result.ts +48 -0
- package/src/modes/shared/agent-wire/unattended-action-policy.ts +341 -0
- package/src/modes/shared/agent-wire/unattended-audit.ts +175 -0
- package/src/modes/shared/agent-wire/unattended-run-controller.ts +406 -0
- package/src/modes/shared/agent-wire/unattended-session.ts +180 -0
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +324 -0
- package/src/modes/shared/agent-wire/workflow-gate-schema.ts +331 -0
- package/src/modes/shared.ts +55 -0
- package/src/modes/theme/defaults/abyss-bite-light.json +124 -0
- package/src/modes/theme/defaults/abyss-bite.json +124 -0
- package/src/modes/theme/defaults/blue-crab.json +126 -0
- package/src/modes/theme/defaults/index.ts +11 -0
- package/src/modes/theme/defaults/red-claw.json +123 -0
- package/src/modes/theme/mermaid-cache.ts +29 -0
- package/src/modes/theme/shimmer.ts +219 -0
- package/src/modes/theme/theme-schema.json +429 -0
- package/src/modes/theme/theme.ts +2472 -0
- package/src/modes/types.ts +343 -0
- package/src/modes/utils/abort-message.ts +41 -0
- package/src/modes/utils/compaction-progress.ts +174 -0
- package/src/modes/utils/context-usage.ts +398 -0
- package/src/modes/utils/help-markdown.ts +50 -0
- package/src/modes/utils/hotkeys-markdown.ts +61 -0
- package/src/modes/utils/keybinding-matchers.ts +30 -0
- package/src/modes/utils/session-transcript-replay.ts +520 -0
- package/src/modes/utils/tools-markdown.ts +27 -0
- package/src/modes/utils/ui-helpers.ts +846 -0
- package/src/notifications/ask-bridge.ts +74 -0
- package/src/notifications/config-command-parser.ts +76 -0
- package/src/notifications/config.ts +102 -0
- package/src/notifications/daemon-control.ts +73 -0
- package/src/notifications/daemon-engine.ts +165 -0
- package/src/notifications/daemon-inbound.ts +220 -0
- package/src/notifications/daemon-loop.ts +60 -0
- package/src/notifications/daemon-owner.ts +53 -0
- package/src/notifications/daemon-runtime.ts +84 -0
- package/src/notifications/discovery.ts +119 -0
- package/src/notifications/index.ts +34 -0
- package/src/notifications/lifecycle-audit.ts +94 -0
- package/src/notifications/lifecycle-command-parser.ts +51 -0
- package/src/notifications/lifecycle-control-runtime.ts +127 -0
- package/src/notifications/notification-redaction.ts +57 -0
- package/src/notifications/protocol.ts +61 -0
- package/src/notifications/remote-answer.ts +241 -0
- package/src/notifications/reply-bridge.ts +85 -0
- package/src/notifications/server.ts +280 -0
- package/src/notifications/session-lifecycle.ts +46 -0
- package/src/notifications/session-registry.ts +164 -0
- package/src/notifications/telegram-api.ts +259 -0
- package/src/notifications/telegram-ask-keyboard.ts +137 -0
- package/src/notifications/telegram-callback-ingest.ts +126 -0
- package/src/notifications/telegram-inbound-router.ts +166 -0
- package/src/notifications/telegram-media-policy.ts +50 -0
- package/src/notifications/telegram-media-render.ts +40 -0
- package/src/notifications/telegram-message-ingest.ts +121 -0
- package/src/notifications/telegram-pairing.ts +69 -0
- package/src/notifications/threaded-lifecycle.ts +27 -0
- package/src/notifications/threaded-shutdown.ts +37 -0
- package/src/notifications/threaded-surface.ts +187 -0
- package/src/notifications/transport-shell.ts +152 -0
- package/src/notifications/transport-state.ts +161 -0
- package/src/notifications/workspace-path-confinement.ts +65 -0
- package/src/plan-mode/approved-plan.ts +163 -0
- package/src/plan-mode/state.ts +6 -0
- package/src/prompts/agents/architect.md +95 -0
- package/src/prompts/agents/critic.md +68 -0
- package/src/prompts/agents/executor.md +64 -0
- package/src/prompts/agents/explore.md +58 -0
- package/src/prompts/agents/frontmatter.md +14 -0
- package/src/prompts/agents/init.md +34 -0
- package/src/prompts/agents/plan.md +49 -0
- package/src/prompts/agents/planner.md +63 -0
- package/src/prompts/agents/reviewer.md +141 -0
- package/src/prompts/agents/task.md +16 -0
- package/src/prompts/ci-green-request.md +36 -0
- package/src/prompts/goals/goal-continuation.md +33 -0
- package/src/prompts/goals/goal-mode-active.md +23 -0
- package/src/prompts/jaw/orchestrate-a.md +20 -0
- package/src/prompts/jaw/orchestrate-audit-architect.md +17 -0
- package/src/prompts/jaw/orchestrate-audit-planner.md +17 -0
- package/src/prompts/jaw/orchestrate-b.md +17 -0
- package/src/prompts/jaw/orchestrate-c.md +18 -0
- package/src/prompts/jaw/orchestrate-d.md +32 -0
- package/src/prompts/jaw/orchestrate-i.md +17 -0
- package/src/prompts/jaw/orchestrate-p.md +23 -0
- package/src/prompts/memories/consolidation.md +30 -0
- package/src/prompts/memories/read-path.md +10 -0
- package/src/prompts/memories/stage_one_input.md +6 -0
- package/src/prompts/memories/stage_one_system.md +21 -0
- package/src/prompts/memories/unavailable.md +9 -0
- package/src/prompts/review-request.md +70 -0
- package/src/prompts/system/agent-creation-architect.md +75 -0
- package/src/prompts/system/agent-creation-user.md +6 -0
- package/src/prompts/system/auto-continue.md +1 -0
- package/src/prompts/system/btw-user.md +8 -0
- package/src/prompts/system/commit-message-system.md +2 -0
- package/src/prompts/system/custom-system-prompt.md +64 -0
- package/src/prompts/system/eager-todo.md +13 -0
- package/src/prompts/system/executor-self-fork.md +3 -0
- package/src/prompts/system/irc-incoming.md +8 -0
- package/src/prompts/system/plan-mode-active.md +116 -0
- package/src/prompts/system/plan-mode-approved.md +28 -0
- package/src/prompts/system/plan-mode-compact-instructions.md +16 -0
- package/src/prompts/system/plan-mode-reference.md +14 -0
- package/src/prompts/system/plan-mode-subagent.md +34 -0
- package/src/prompts/system/plan-mode-tool-decision-reminder.md +9 -0
- package/src/prompts/system/project-prompt.md +46 -0
- package/src/prompts/system/subagent-system-prompt.md +89 -0
- package/src/prompts/system/subagent-user-prompt.md +3 -0
- package/src/prompts/system/subagent-yield-reminder.md +12 -0
- package/src/prompts/system/system-prompt.md +409 -0
- package/src/prompts/system/title-system.md +2 -0
- package/src/prompts/system/ttsr-interrupt.md +7 -0
- package/src/prompts/system/ttsr-tool-reminder.md +5 -0
- package/src/prompts/system/web-search.md +25 -0
- package/src/prompts/tools/apply-patch.md +65 -0
- package/src/prompts/tools/ask.md +29 -0
- package/src/prompts/tools/ast-edit.md +39 -0
- package/src/prompts/tools/ast-grep.md +42 -0
- package/src/prompts/tools/async-result.md +8 -0
- package/src/prompts/tools/background.md +19 -0
- package/src/prompts/tools/bash.md +50 -0
- package/src/prompts/tools/browser.md +14 -0
- package/src/prompts/tools/calculator.md +10 -0
- package/src/prompts/tools/checkpoint.md +16 -0
- package/src/prompts/tools/computer-use.md +15 -0
- package/src/prompts/tools/cron.md +25 -0
- package/src/prompts/tools/debug.md +33 -0
- package/src/prompts/tools/eval.md +75 -0
- package/src/prompts/tools/find.md +34 -0
- package/src/prompts/tools/github.md +20 -0
- package/src/prompts/tools/goal.md +20 -0
- package/src/prompts/tools/hashline.md +130 -0
- package/src/prompts/tools/image-gen.md +7 -0
- package/src/prompts/tools/inspect-image-system.md +20 -0
- package/src/prompts/tools/inspect-image.md +32 -0
- package/src/prompts/tools/irc.md +49 -0
- package/src/prompts/tools/job.md +22 -0
- package/src/prompts/tools/lsp.md +42 -0
- package/src/prompts/tools/monitor.md +32 -0
- package/src/prompts/tools/patch.md +70 -0
- package/src/prompts/tools/read.md +82 -0
- package/src/prompts/tools/recall.md +6 -0
- package/src/prompts/tools/recipe.md +16 -0
- package/src/prompts/tools/reflect.md +6 -0
- package/src/prompts/tools/render-mermaid.md +9 -0
- package/src/prompts/tools/replace.md +36 -0
- package/src/prompts/tools/resolve.md +9 -0
- package/src/prompts/tools/retain.md +7 -0
- package/src/prompts/tools/rewind.md +13 -0
- package/src/prompts/tools/search-tool-bm25.md +37 -0
- package/src/prompts/tools/search.md +25 -0
- package/src/prompts/tools/skill.md +28 -0
- package/src/prompts/tools/ssh.md +35 -0
- package/src/prompts/tools/subagent.md +56 -0
- package/src/prompts/tools/task-summary.md +22 -0
- package/src/prompts/tools/task.md +106 -0
- package/src/prompts/tools/todo-write.md +50 -0
- package/src/prompts/tools/vim.md +98 -0
- package/src/prompts/tools/web-search.md +10 -0
- package/src/prompts/tools/write.md +14 -0
- package/src/registry/agent-registry.ts +140 -0
- package/src/reminders/star-reminder.ts +422 -0
- package/src/runtime-mcp/client.ts +485 -0
- package/src/runtime-mcp/config-writer.ts +225 -0
- package/src/runtime-mcp/config.ts +365 -0
- package/src/runtime-mcp/discoverable-tool-metadata.ts +25 -0
- package/src/runtime-mcp/index.ts +29 -0
- package/src/runtime-mcp/json-rpc.ts +84 -0
- package/src/runtime-mcp/loader.ts +124 -0
- package/src/runtime-mcp/manager.ts +1211 -0
- package/src/runtime-mcp/oauth-discovery.ts +349 -0
- package/src/runtime-mcp/oauth-flow.ts +409 -0
- package/src/runtime-mcp/render.ts +123 -0
- package/src/runtime-mcp/smithery-auth.ts +104 -0
- package/src/runtime-mcp/smithery-connect.ts +145 -0
- package/src/runtime-mcp/smithery-registry.ts +477 -0
- package/src/runtime-mcp/tool-bridge.ts +416 -0
- package/src/runtime-mcp/tool-cache.ts +117 -0
- package/src/runtime-mcp/transports/http.ts +503 -0
- package/src/runtime-mcp/transports/index.ts +6 -0
- package/src/runtime-mcp/transports/stdio.ts +326 -0
- package/src/runtime-mcp/types.ts +423 -0
- package/src/sdk.ts +2248 -0
- package/src/secrets/index.ts +120 -0
- package/src/secrets/obfuscator.ts +352 -0
- package/src/secrets/regex.ts +21 -0
- package/src/session/agent-session.ts +10343 -0
- package/src/session/agent-storage.ts +466 -0
- package/src/session/artifacts.ts +135 -0
- package/src/session/auth-broker-config.ts +102 -0
- package/src/session/auth-storage.ts +23 -0
- package/src/session/blob-store.ts +372 -0
- package/src/session/client-bridge.ts +85 -0
- package/src/session/contribution-prep.ts +320 -0
- package/src/session/history-storage.ts +311 -0
- package/src/session/messages.ts +406 -0
- package/src/session/pabcd-stage-header.ts +77 -0
- package/src/session/session-dump-format.ts +209 -0
- package/src/session/session-manager.ts +3914 -0
- package/src/session/session-storage.ts +415 -0
- package/src/session/streaming-output.ts +1114 -0
- package/src/session/tool-choice-queue.ts +213 -0
- package/src/session/yield-queue.ts +155 -0
- package/src/setup/hermes/templates/operator-instructions.v1.md +29 -0
- package/src/setup/hermes-setup.ts +429 -0
- package/src/setup/model-onboarding-guidance.ts +41 -0
- package/src/setup/provider-onboarding.ts +358 -0
- package/src/skill-state/active-state.ts +788 -0
- package/src/skill-state/initial-phase.ts +21 -0
- package/src/skill-state/jaw-interview-mutation-guard.ts +490 -0
- package/src/skill-state/workflow-hud.ts +208 -0
- package/src/skill-state/workflow-state-contract.ts +167 -0
- package/src/skill-state/workflow-state-version.ts +3 -0
- package/src/slash-commands/acp-builtins.ts +55 -0
- package/src/slash-commands/builtin-registry.ts +1879 -0
- package/src/slash-commands/helpers/context-report.ts +149 -0
- package/src/slash-commands/helpers/format.ts +46 -0
- package/src/slash-commands/helpers/mcp.ts +532 -0
- package/src/slash-commands/helpers/parse.ts +85 -0
- package/src/slash-commands/helpers/ssh.ts +195 -0
- package/src/slash-commands/helpers/todo.ts +279 -0
- package/src/slash-commands/helpers/usage-report.ts +105 -0
- package/src/slash-commands/types.ts +127 -0
- package/src/ssh/config-writer.ts +183 -0
- package/src/ssh/connection-manager.ts +482 -0
- package/src/ssh/ssh-executor.ts +133 -0
- package/src/ssh/sshfs-mount.ts +140 -0
- package/src/ssh/utils.ts +8 -0
- package/src/stt/downloader.ts +71 -0
- package/src/stt/index.ts +3 -0
- package/src/stt/recorder.ts +351 -0
- package/src/stt/setup.ts +52 -0
- package/src/stt/stt-controller.ts +160 -0
- package/src/stt/transcribe.py +70 -0
- package/src/stt/transcriber.ts +91 -0
- package/src/system-prompt.ts +661 -0
- package/src/task/agents.ts +189 -0
- package/src/task/commands.ts +131 -0
- package/src/task/discovery.ts +136 -0
- package/src/task/executor.ts +1664 -0
- package/src/task/fork-context-advisory.ts +99 -0
- package/src/task/id.ts +33 -0
- package/src/task/index.ts +2173 -0
- package/src/task/jwc-command.ts +26 -0
- package/src/task/model-presets.ts +53 -0
- package/src/task/name-generator.ts +1577 -0
- package/src/task/output-manager.ts +108 -0
- package/src/task/parallel.ts +116 -0
- package/src/task/receipt.ts +304 -0
- package/src/task/render.ts +1075 -0
- package/src/task/roi-reconciliation.ts +90 -0
- package/src/task/simple-mode.ts +27 -0
- package/src/task/spawn-gate.ts +132 -0
- package/src/task/subprocess-tool-registry.ts +88 -0
- package/src/task/types.ts +433 -0
- package/src/task/worktree.ts +506 -0
- package/src/thinking.ts +93 -0
- package/src/tool-discovery/tool-index.ts +408 -0
- package/src/tools/archive-reader.ts +321 -0
- package/src/tools/ask.ts +1011 -0
- package/src/tools/ast-edit.ts +555 -0
- package/src/tools/ast-grep.ts +424 -0
- package/src/tools/auto-generated-guard.ts +305 -0
- package/src/tools/background.ts +500 -0
- package/src/tools/bash-allowed-prefixes.ts +169 -0
- package/src/tools/bash-command-fixup.ts +37 -0
- package/src/tools/bash-interactive.ts +388 -0
- package/src/tools/bash-interceptor.ts +67 -0
- package/src/tools/bash-pty-selection.ts +15 -0
- package/src/tools/bash-skill-urls.ts +248 -0
- package/src/tools/bash.ts +1242 -0
- package/src/tools/browser/actions.ts +189 -0
- package/src/tools/browser/attach.ts +175 -0
- package/src/tools/browser/launch.ts +651 -0
- package/src/tools/browser/readable.ts +95 -0
- package/src/tools/browser/registry.ts +194 -0
- package/src/tools/browser/render.ts +212 -0
- package/src/tools/browser/tab-protocol.ts +105 -0
- package/src/tools/browser/tab-supervisor.ts +577 -0
- package/src/tools/browser/tab-worker-entry.ts +21 -0
- package/src/tools/browser/tab-worker.ts +1054 -0
- package/src/tools/browser.ts +380 -0
- package/src/tools/calculator.ts +540 -0
- package/src/tools/checkpoint.ts +134 -0
- package/src/tools/computer-use-backend.ts +75 -0
- package/src/tools/computer-use.ts +228 -0
- package/src/tools/conflict-detect.ts +672 -0
- package/src/tools/context.ts +39 -0
- package/src/tools/cron.ts +713 -0
- package/src/tools/debug.ts +1014 -0
- package/src/tools/eval.ts +1101 -0
- package/src/tools/fetch.ts +1485 -0
- package/src/tools/file-recorder.ts +35 -0
- package/src/tools/find.ts +543 -0
- package/src/tools/fs-cache-invalidation.ts +28 -0
- package/src/tools/gh-format.ts +12 -0
- package/src/tools/gh-renderer.ts +428 -0
- package/src/tools/gh.ts +3737 -0
- package/src/tools/github-cache.ts +548 -0
- package/src/tools/grouped-file-output.ts +96 -0
- package/src/tools/hindsight-recall.ts +66 -0
- package/src/tools/hindsight-reflect.ts +55 -0
- package/src/tools/hindsight-retain.ts +54 -0
- package/src/tools/image-gen.ts +1284 -0
- package/src/tools/index.ts +580 -0
- package/src/tools/inspect-image-renderer.ts +103 -0
- package/src/tools/inspect-image.ts +167 -0
- package/src/tools/irc.ts +239 -0
- package/src/tools/job.ts +530 -0
- package/src/tools/json-tree.ts +243 -0
- package/src/tools/jtd-to-json-schema.ts +219 -0
- package/src/tools/jtd-to-typescript.ts +136 -0
- package/src/tools/jtd-utils.ts +102 -0
- package/src/tools/list-limit.ts +40 -0
- package/src/tools/match-line-format.ts +22 -0
- package/src/tools/monitor.ts +255 -0
- package/src/tools/output-meta.ts +754 -0
- package/src/tools/path-utils.ts +741 -0
- package/src/tools/plan-mode-guard.ts +68 -0
- package/src/tools/puppeteer/00_stealth_tampering.txt +63 -0
- package/src/tools/puppeteer/01_stealth_activity.txt +20 -0
- package/src/tools/puppeteer/02_stealth_hairline.txt +11 -0
- package/src/tools/puppeteer/03_stealth_botd.txt +384 -0
- package/src/tools/puppeteer/04_stealth_iframe.txt +81 -0
- package/src/tools/puppeteer/05_stealth_webgl.txt +75 -0
- package/src/tools/puppeteer/06_stealth_screen.txt +72 -0
- package/src/tools/puppeteer/07_stealth_fonts.txt +97 -0
- package/src/tools/puppeteer/08_stealth_audio.txt +51 -0
- package/src/tools/puppeteer/09_stealth_locale.txt +46 -0
- package/src/tools/puppeteer/10_stealth_plugins.txt +206 -0
- package/src/tools/puppeteer/11_stealth_hardware.txt +8 -0
- package/src/tools/puppeteer/12_stealth_codecs.txt +40 -0
- package/src/tools/puppeteer/13_stealth_worker.txt +74 -0
- package/src/tools/read.ts +2333 -0
- package/src/tools/recipe/index.ts +80 -0
- package/src/tools/recipe/render.ts +19 -0
- package/src/tools/recipe/runner.ts +219 -0
- package/src/tools/recipe/runners/cargo.ts +131 -0
- package/src/tools/recipe/runners/index.ts +8 -0
- package/src/tools/recipe/runners/just.ts +73 -0
- package/src/tools/recipe/runners/make.ts +101 -0
- package/src/tools/recipe/runners/pkg.ts +167 -0
- package/src/tools/recipe/runners/task.ts +72 -0
- package/src/tools/render-mermaid.ts +68 -0
- package/src/tools/render-utils.ts +774 -0
- package/src/tools/renderers.ts +79 -0
- package/src/tools/resolve.ts +258 -0
- package/src/tools/review.ts +252 -0
- package/src/tools/search-tool-bm25.ts +364 -0
- package/src/tools/search.ts +787 -0
- package/src/tools/skill.ts +170 -0
- package/src/tools/sqlite-reader.ts +736 -0
- package/src/tools/ssh.ts +310 -0
- package/src/tools/subagent-render.ts +160 -0
- package/src/tools/subagent.ts +698 -0
- package/src/tools/telegram-send.ts +178 -0
- package/src/tools/todo-write.ts +695 -0
- package/src/tools/tool-errors.ts +62 -0
- package/src/tools/tool-result.ts +86 -0
- package/src/tools/tool-timeouts.ts +30 -0
- package/src/tools/vim.ts +949 -0
- package/src/tools/write.ts +953 -0
- package/src/tools/yield.ts +268 -0
- package/src/tui/code-cell.ts +201 -0
- package/src/tui/file-list.ts +55 -0
- package/src/tui/hyperlink.ts +126 -0
- package/src/tui/index.ts +12 -0
- package/src/tui/output-block.ts +150 -0
- package/src/tui/status-line.ts +39 -0
- package/src/tui/tree-list.ts +84 -0
- package/src/tui/types.ts +15 -0
- package/src/tui/utils.ts +103 -0
- package/src/utils/changelog.ts +121 -0
- package/src/utils/clipboard.ts +156 -0
- package/src/utils/command-args.ts +76 -0
- package/src/utils/commit-message-generator.ts +135 -0
- package/src/utils/edit-mode.ts +42 -0
- package/src/utils/event-bus.ts +33 -0
- package/src/utils/external-editor.ts +65 -0
- package/src/utils/file-display-mode.ts +45 -0
- package/src/utils/file-mentions.ts +376 -0
- package/src/utils/git.ts +1536 -0
- package/src/utils/image-loading.ts +102 -0
- package/src/utils/image-resize.ts +309 -0
- package/src/utils/lang-from-path.ts +239 -0
- package/src/utils/markit.ts +89 -0
- package/src/utils/open.ts +20 -0
- package/src/utils/session-color.ts +43 -0
- package/src/utils/shell-snapshot.ts +187 -0
- package/src/utils/sixel.ts +69 -0
- package/src/utils/title-generator.ts +237 -0
- package/src/utils/tokenizer-download.ts +106 -0
- package/src/utils/tokenizer-encoding.ts +29 -0
- package/src/utils/tool-choice.ts +62 -0
- package/src/utils/tools-manager.ts +363 -0
- package/src/vim/buffer.ts +309 -0
- package/src/vim/commands.ts +382 -0
- package/src/vim/engine.ts +2409 -0
- package/src/vim/parser.ts +134 -0
- package/src/vim/render.ts +252 -0
- package/src/vim/types.ts +197 -0
- package/src/web/kagi.ts +183 -0
- package/src/web/parallel.ts +349 -0
- package/src/web/public-fetch-url.ts +74 -0
- package/src/web/scrapers/artifacthub.ts +207 -0
- package/src/web/scrapers/arxiv.ts +83 -0
- package/src/web/scrapers/aur.ts +162 -0
- package/src/web/scrapers/biorxiv.ts +133 -0
- package/src/web/scrapers/bluesky.ts +262 -0
- package/src/web/scrapers/brew.ts +172 -0
- package/src/web/scrapers/cheatsh.ts +68 -0
- package/src/web/scrapers/chocolatey.ts +196 -0
- package/src/web/scrapers/choosealicense.ts +95 -0
- package/src/web/scrapers/cisa-kev.ts +87 -0
- package/src/web/scrapers/clojars.ts +154 -0
- package/src/web/scrapers/coingecko.ts +177 -0
- package/src/web/scrapers/crates-io.ts +97 -0
- package/src/web/scrapers/crossref.ts +136 -0
- package/src/web/scrapers/devto.ts +147 -0
- package/src/web/scrapers/discogs.ts +306 -0
- package/src/web/scrapers/discourse.ts +197 -0
- package/src/web/scrapers/dockerhub.ts +138 -0
- package/src/web/scrapers/docs-rs.ts +653 -0
- package/src/web/scrapers/fdroid.ts +134 -0
- package/src/web/scrapers/firefox-addons.ts +191 -0
- package/src/web/scrapers/flathub.ts +223 -0
- package/src/web/scrapers/github-gist.ts +58 -0
- package/src/web/scrapers/github.ts +452 -0
- package/src/web/scrapers/gitlab.ts +401 -0
- package/src/web/scrapers/go-pkg.ts +266 -0
- package/src/web/scrapers/hackage.ts +140 -0
- package/src/web/scrapers/hackernews.ts +189 -0
- package/src/web/scrapers/hex.ts +105 -0
- package/src/web/scrapers/huggingface.ts +321 -0
- package/src/web/scrapers/iacr.ts +89 -0
- package/src/web/scrapers/index.ts +252 -0
- package/src/web/scrapers/jetbrains-marketplace.ts +159 -0
- package/src/web/scrapers/lemmy.ts +203 -0
- package/src/web/scrapers/lobsters.ts +175 -0
- package/src/web/scrapers/mastodon.ts +292 -0
- package/src/web/scrapers/maven.ts +138 -0
- package/src/web/scrapers/mdn.ts +173 -0
- package/src/web/scrapers/metacpan.ts +222 -0
- package/src/web/scrapers/musicbrainz.ts +250 -0
- package/src/web/scrapers/npm.ts +98 -0
- package/src/web/scrapers/nuget.ts +183 -0
- package/src/web/scrapers/nvd.ts +222 -0
- package/src/web/scrapers/ollama.ts +239 -0
- package/src/web/scrapers/open-vsx.ts +106 -0
- package/src/web/scrapers/opencorporates.ts +292 -0
- package/src/web/scrapers/openlibrary.ts +336 -0
- package/src/web/scrapers/orcid.ts +286 -0
- package/src/web/scrapers/osv.ts +176 -0
- package/src/web/scrapers/packagist.ts +160 -0
- package/src/web/scrapers/pub-dev.ts +143 -0
- package/src/web/scrapers/pubmed.ts +211 -0
- package/src/web/scrapers/pypi.ts +112 -0
- package/src/web/scrapers/rawg.ts +110 -0
- package/src/web/scrapers/readthedocs.ts +120 -0
- package/src/web/scrapers/reddit.ts +95 -0
- package/src/web/scrapers/repology.ts +251 -0
- package/src/web/scrapers/rfc.ts +201 -0
- package/src/web/scrapers/rubygems.ts +103 -0
- package/src/web/scrapers/searchcode.ts +189 -0
- package/src/web/scrapers/sec-edgar.ts +261 -0
- package/src/web/scrapers/semantic-scholar.ts +171 -0
- package/src/web/scrapers/snapcraft.ts +187 -0
- package/src/web/scrapers/sourcegraph.ts +336 -0
- package/src/web/scrapers/spdx.ts +108 -0
- package/src/web/scrapers/spotify.ts +198 -0
- package/src/web/scrapers/stackoverflow.ts +120 -0
- package/src/web/scrapers/terraform.ts +277 -0
- package/src/web/scrapers/tldr.ts +47 -0
- package/src/web/scrapers/twitter.ts +93 -0
- package/src/web/scrapers/types.ts +358 -0
- package/src/web/scrapers/utils.ts +133 -0
- package/src/web/scrapers/vimeo.ts +133 -0
- package/src/web/scrapers/vscode-marketplace.ts +187 -0
- package/src/web/scrapers/w3c.ts +156 -0
- package/src/web/scrapers/wikidata.ts +344 -0
- package/src/web/scrapers/wikipedia.ts +84 -0
- package/src/web/scrapers/youtube.ts +319 -0
- package/src/web/search/index.ts +416 -0
- package/src/web/search/provider.ts +236 -0
- package/src/web/search/providers/anthropic.ts +319 -0
- package/src/web/search/providers/base.ts +102 -0
- package/src/web/search/providers/brave.ts +149 -0
- package/src/web/search/providers/codex.ts +598 -0
- package/src/web/search/providers/duckduckgo.ts +279 -0
- package/src/web/search/providers/exa.ts +193 -0
- package/src/web/search/providers/gemini.ts +462 -0
- package/src/web/search/providers/jina.ts +101 -0
- package/src/web/search/providers/kagi.ts +75 -0
- package/src/web/search/providers/kimi.ts +171 -0
- package/src/web/search/providers/parallel.ts +210 -0
- package/src/web/search/providers/perplexity.ts +575 -0
- package/src/web/search/providers/searxng.ts +309 -0
- package/src/web/search/providers/synthetic.ts +108 -0
- package/src/web/search/providers/tavily.ts +173 -0
- package/src/web/search/providers/utils.ts +128 -0
- package/src/web/search/providers/xai.ts +174 -0
- package/src/web/search/providers/zai.ts +320 -0
- package/src/web/search/render.ts +299 -0
- package/src/web/search/types.ts +445 -0
- package/src/web/search/utils.ts +17 -0
- package/src/workspace-tree.ts +286 -0
|
@@ -0,0 +1,1879 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import type { ThinkingLevel } from "@jawcode-dev/agent-core";
|
|
4
|
+
import { type AuthStorage, type Model, modelsAreEqual } from "@jawcode-dev/ai";
|
|
5
|
+
import { APP_NAME, getAgentDir, setProjectDir } from "@jawcode-dev/utils";
|
|
6
|
+
import {
|
|
7
|
+
JWC_MODEL_ASSIGNMENT_TARGET_IDS,
|
|
8
|
+
JWC_MODEL_ASSIGNMENT_TARGETS,
|
|
9
|
+
type JwcModelAssignmentTargetId,
|
|
10
|
+
} from "../config/model-registry";
|
|
11
|
+
import { extractExplicitThinkingSelector, formatModelSelectorValue, parseModelPattern } from "../config/model-resolver";
|
|
12
|
+
import { resolveOAuthProviderId } from "../config/oauth-provider-aliases";
|
|
13
|
+
import { clearPluginRootsAndCaches, isJawBrand, resolveActiveProjectRegistryPath } from "../discovery/helpers.js";
|
|
14
|
+
import { buildGoalPlanningStart } from "../goals/goal-planning-start";
|
|
15
|
+
import { runNativeGoalCommand } from "../jwc-runtime/goal-cli";
|
|
16
|
+
import { createGoalPlan, startNextGoal } from "../jwc-runtime/goal-engine";
|
|
17
|
+
import { runNativeOrchestrateCommand } from "../jwc-runtime/orchestrate-runtime";
|
|
18
|
+
import { resolveMemoryBackend } from "../memory-backend";
|
|
19
|
+
import { MCPCommandController } from "../modes/controllers/runtime-mcp-command-controller";
|
|
20
|
+
import type { InteractiveModeContext } from "../modes/types";
|
|
21
|
+
import { formatModelOnboardingGuidance } from "../setup/model-onboarding-guidance";
|
|
22
|
+
import {
|
|
23
|
+
addApiCompatibleProvider,
|
|
24
|
+
formatProviderPresetList,
|
|
25
|
+
formatProviderSetupResult,
|
|
26
|
+
parseProviderCompatibility,
|
|
27
|
+
} from "../setup/provider-onboarding";
|
|
28
|
+
import { parseThinkingLevel } from "../thinking";
|
|
29
|
+
import { getSearchProvider, nativeSearchProviderFor, setPreferredSearchProvider } from "../web/search/provider";
|
|
30
|
+
import { isSearchProviderPreference, type SearchProviderId } from "../web/search/types";
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 083.4: parse a /effort argument, accepting Codex ReasoningEffort vocabulary
|
|
34
|
+
* (none/minimal) as aliases for jwc thinking levels (off/min).
|
|
35
|
+
*/
|
|
36
|
+
function parseEffortArg(raw: string): ThinkingLevel | undefined {
|
|
37
|
+
const normalized = raw === "none" ? "off" : raw === "minimal" ? "min" : raw;
|
|
38
|
+
const level = parseThinkingLevel(normalized);
|
|
39
|
+
// "inherit" is a model-selector concept, not a session effort.
|
|
40
|
+
return level === "inherit" ? undefined : level;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
import { buildContextReportText } from "./helpers/context-report";
|
|
44
|
+
import { formatDuration } from "./helpers/format";
|
|
45
|
+
import { handleMcpAcp } from "./helpers/mcp";
|
|
46
|
+
import { commandConsumed, errorMessage, parseSlashCommand, usage } from "./helpers/parse";
|
|
47
|
+
import { handleSshAcp } from "./helpers/ssh";
|
|
48
|
+
import { buildQuotaText, buildUsageReportText } from "./helpers/usage-report";
|
|
49
|
+
import type {
|
|
50
|
+
BuiltinSlashCommand,
|
|
51
|
+
ParsedSlashCommand,
|
|
52
|
+
SlashCommandResult,
|
|
53
|
+
SlashCommandRuntime,
|
|
54
|
+
SlashCommandSpec,
|
|
55
|
+
TuiSlashCommandRuntime,
|
|
56
|
+
} from "./types";
|
|
57
|
+
|
|
58
|
+
export type { BuiltinSlashCommand, SubcommandDef } from "./types";
|
|
59
|
+
|
|
60
|
+
/** TUI-specific runtime accepted by `executeBuiltinSlashCommand`. */
|
|
61
|
+
export type BuiltinSlashCommandRuntime = TuiSlashCommandRuntime;
|
|
62
|
+
|
|
63
|
+
function parseProviderSetupSlashArgs(args: string): {
|
|
64
|
+
preset?: string;
|
|
65
|
+
compat?: string;
|
|
66
|
+
provider?: string;
|
|
67
|
+
baseUrl?: string;
|
|
68
|
+
apiKeyEnv?: string;
|
|
69
|
+
rejectedRawApiKey: boolean;
|
|
70
|
+
force: boolean;
|
|
71
|
+
models: string[];
|
|
72
|
+
} {
|
|
73
|
+
const tokens = args.split(/\s+/).filter(Boolean);
|
|
74
|
+
const result: {
|
|
75
|
+
preset?: string;
|
|
76
|
+
compat?: string;
|
|
77
|
+
provider?: string;
|
|
78
|
+
baseUrl?: string;
|
|
79
|
+
apiKeyEnv?: string;
|
|
80
|
+
rejectedRawApiKey: boolean;
|
|
81
|
+
force: boolean;
|
|
82
|
+
models: string[];
|
|
83
|
+
} = {
|
|
84
|
+
force: false,
|
|
85
|
+
models: [],
|
|
86
|
+
rejectedRawApiKey: false,
|
|
87
|
+
};
|
|
88
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
89
|
+
const token = tokens[i];
|
|
90
|
+
if (token === "--force" || token === "-f") {
|
|
91
|
+
result.force = true;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (!token.startsWith("-") && !result.preset) {
|
|
95
|
+
result.preset = token;
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
const value = tokens[i + 1];
|
|
99
|
+
if (!value) continue;
|
|
100
|
+
if (token === "--preset") {
|
|
101
|
+
result.preset = value;
|
|
102
|
+
i += 1;
|
|
103
|
+
} else if (token === "--compat") {
|
|
104
|
+
result.compat = value;
|
|
105
|
+
i += 1;
|
|
106
|
+
} else if (token === "--provider") {
|
|
107
|
+
result.provider = value;
|
|
108
|
+
i += 1;
|
|
109
|
+
} else if (token === "--base-url") {
|
|
110
|
+
result.baseUrl = value;
|
|
111
|
+
i += 1;
|
|
112
|
+
} else if (token === "--api-key") {
|
|
113
|
+
result.rejectedRawApiKey = true;
|
|
114
|
+
i += 1;
|
|
115
|
+
} else if (token === "--api-key-env") {
|
|
116
|
+
result.apiKeyEnv = value;
|
|
117
|
+
i += 1;
|
|
118
|
+
} else if (token === "--model" || token === "--models") {
|
|
119
|
+
result.models.push(value);
|
|
120
|
+
i += 1;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function providerSetupUsage(): string {
|
|
127
|
+
return [
|
|
128
|
+
"Provider onboarding",
|
|
129
|
+
"Presets: /provider add --preset <minimax|minimax-cn|glm> [--force]",
|
|
130
|
+
"Aliases: /provider add minimax, /provider add minimax-cn, /provider add glm, /provider add zai (writes glm-proxy)",
|
|
131
|
+
"API providers: /provider add --compat <openai|anthropic> --provider <id> --base-url <url> --api-key-env <ENV> --model <model> [--force]",
|
|
132
|
+
`Available presets:\n${formatProviderPresetList()}`,
|
|
133
|
+
"OAuth/subscription providers: /provider login [provider-id|alias] or /login [provider-id|alias]",
|
|
134
|
+
"Headless OAuth callbacks can be pasted with /login <redirect URL or code>.",
|
|
135
|
+
].join("\n");
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function formatModelAssignmentSummary(runtime: SlashCommandRuntime): string {
|
|
139
|
+
const agentModelOverrides = runtime.settings.get("task.agentModelOverrides");
|
|
140
|
+
const lines = ["Model assignments:"];
|
|
141
|
+
for (const targetId of JWC_MODEL_ASSIGNMENT_TARGET_IDS) {
|
|
142
|
+
const target = JWC_MODEL_ASSIGNMENT_TARGETS[targetId];
|
|
143
|
+
const modelSelector =
|
|
144
|
+
target.settingsPath === "modelRoles" ? runtime.settings.getModelRole(targetId) : agentModelOverrides[targetId];
|
|
145
|
+
lines.push(` ${target.tag ?? target.id.toUpperCase()} (${target.name}): ${modelSelector ?? "(unset)"}`);
|
|
146
|
+
}
|
|
147
|
+
return lines.join("\n");
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function parseModelCommandArgs(args: string): { targetId: JwcModelAssignmentTargetId; selector: string } {
|
|
151
|
+
const tokens = args.trim().split(/\s+/).filter(Boolean);
|
|
152
|
+
const first = tokens[0]?.toLowerCase();
|
|
153
|
+
const explicitTarget = JWC_MODEL_ASSIGNMENT_TARGET_IDS.includes(first as JwcModelAssignmentTargetId)
|
|
154
|
+
? (first as JwcModelAssignmentTargetId)
|
|
155
|
+
: undefined;
|
|
156
|
+
if (explicitTarget) {
|
|
157
|
+
return { targetId: explicitTarget, selector: tokens.slice(1).join(" ") };
|
|
158
|
+
}
|
|
159
|
+
if (first === "set") {
|
|
160
|
+
const second = tokens[1]?.toLowerCase();
|
|
161
|
+
if (JWC_MODEL_ASSIGNMENT_TARGET_IDS.includes(second as JwcModelAssignmentTargetId)) {
|
|
162
|
+
return { targetId: second as JwcModelAssignmentTargetId, selector: tokens.slice(2).join(" ") };
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return { targetId: "default", selector: args.trim() };
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function splitExplicitThinkingSelector(selector: string): { baseSelector: string; thinkingLevel?: ThinkingLevel } {
|
|
169
|
+
const trimmed = selector.trim();
|
|
170
|
+
const colonIndex = trimmed.lastIndexOf(":");
|
|
171
|
+
if (colonIndex === -1) {
|
|
172
|
+
return { baseSelector: trimmed };
|
|
173
|
+
}
|
|
174
|
+
const thinkingLevel = parseThinkingLevel(trimmed.slice(colonIndex + 1));
|
|
175
|
+
return thinkingLevel ? { baseSelector: trimmed.slice(0, colonIndex), thinkingLevel } : { baseSelector: trimmed };
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function resolveModelCommandSelection(
|
|
179
|
+
runtime: SlashCommandRuntime,
|
|
180
|
+
selector: string,
|
|
181
|
+
): { model: Model; selector: string; thinkingLevel?: ThinkingLevel } | undefined {
|
|
182
|
+
const availableModels = runtime.session.getAvailableModels?.() ?? [];
|
|
183
|
+
const matchPreferences = { usageOrder: runtime.settings.getStorage()?.getModelUsageOrder() };
|
|
184
|
+
const resolved = parseModelPattern(selector, availableModels, matchPreferences, {
|
|
185
|
+
modelRegistry: runtime.session.modelRegistry,
|
|
186
|
+
});
|
|
187
|
+
if (!resolved.model) {
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const splitSelector = splitExplicitThinkingSelector(selector);
|
|
192
|
+
const canonicalModel = runtime.session.modelRegistry.resolveCanonicalModel?.(splitSelector.baseSelector, {
|
|
193
|
+
availableOnly: false,
|
|
194
|
+
candidates: availableModels,
|
|
195
|
+
});
|
|
196
|
+
const persistedSelector =
|
|
197
|
+
canonicalModel && modelsAreEqual(canonicalModel, resolved.model)
|
|
198
|
+
? splitSelector.baseSelector
|
|
199
|
+
: `${resolved.model.provider}/${resolved.model.id}`;
|
|
200
|
+
return {
|
|
201
|
+
model: resolved.model,
|
|
202
|
+
selector: persistedSelector,
|
|
203
|
+
thinkingLevel: resolved.explicitThinkingLevel ? resolved.thinkingLevel : undefined,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Operator-facing aliases for /searchengine. Canonical ids pass through via
|
|
209
|
+
* `isSearchProviderPreference`; only convenience names live here.
|
|
210
|
+
*/
|
|
211
|
+
const SEARCH_ENGINE_ALIASES: Record<string, SearchProviderId | "auto"> = {
|
|
212
|
+
active: "auto",
|
|
213
|
+
native: "auto",
|
|
214
|
+
default: "auto",
|
|
215
|
+
chatgpt: "codex",
|
|
216
|
+
openai: "codex",
|
|
217
|
+
claude: "anthropic",
|
|
218
|
+
google: "gemini",
|
|
219
|
+
grok: "xai",
|
|
220
|
+
x: "xai",
|
|
221
|
+
ddg: "duckduckgo",
|
|
222
|
+
duck: "duckduckgo",
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
function normalizeSearchEngineArg(raw: string): SearchProviderId | "auto" | undefined {
|
|
226
|
+
const value = raw.trim().toLowerCase();
|
|
227
|
+
if (!value) return undefined;
|
|
228
|
+
const alias = SEARCH_ENGINE_ALIASES[value];
|
|
229
|
+
if (alias) return alias;
|
|
230
|
+
return isSearchProviderPreference(value) ? value : undefined;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function describeAutoSearchTarget(activeModelProvider: string | undefined): string {
|
|
234
|
+
const native = nativeSearchProviderFor(activeModelProvider);
|
|
235
|
+
return native ? `active model native search: ${native}` : "active model has no native search; DuckDuckGo";
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const SEARCH_ENGINE_IDS: ReadonlyArray<SearchProviderId> = [
|
|
239
|
+
"duckduckgo",
|
|
240
|
+
"codex",
|
|
241
|
+
"anthropic",
|
|
242
|
+
"gemini",
|
|
243
|
+
"xai",
|
|
244
|
+
"perplexity",
|
|
245
|
+
"kimi",
|
|
246
|
+
"zai",
|
|
247
|
+
"exa",
|
|
248
|
+
"brave",
|
|
249
|
+
"jina",
|
|
250
|
+
"tavily",
|
|
251
|
+
"parallel",
|
|
252
|
+
"kagi",
|
|
253
|
+
"synthetic",
|
|
254
|
+
"searxng",
|
|
255
|
+
];
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Activation guidance per provider. OAuth-capable providers unlock via
|
|
259
|
+
* /login; keyed providers activate only when their API key/credential is
|
|
260
|
+
* present (mirrors the model layer's OAuth-vs-key gating for
|
|
261
|
+
* openai/xai/anthropic).
|
|
262
|
+
*/
|
|
263
|
+
const SEARCH_ENGINE_SETUP_HINTS: Record<SearchProviderId, string> = {
|
|
264
|
+
duckduckgo: "keyless — always available",
|
|
265
|
+
codex: "OAuth — run /login codex (or /login openai-codex)",
|
|
266
|
+
gemini: "OAuth — run /login gemini (or /login google-gemini-cli)",
|
|
267
|
+
anthropic: "set ANTHROPIC_SEARCH_API_KEY or store anthropic auth",
|
|
268
|
+
perplexity: "set PERPLEXITY_API_KEY / PERPLEXITY_COOKIES, or /login perplexity (OAuth)",
|
|
269
|
+
kimi: "set MOONSHOT_SEARCH_API_KEY / KIMI_SEARCH_API_KEY, or /login kimi (OAuth)",
|
|
270
|
+
zai: "set ZAI_API_KEY",
|
|
271
|
+
exa: "set EXA_API_KEY (and keep exa.enabled on)",
|
|
272
|
+
brave: "set BRAVE_API_KEY",
|
|
273
|
+
jina: "set JINA_API_KEY",
|
|
274
|
+
tavily: "set TAVILY_API_KEY",
|
|
275
|
+
parallel: "set PARALLEL_API_KEY",
|
|
276
|
+
kagi: "store kagi credential (auth storage only — no env var)",
|
|
277
|
+
synthetic: "set SYNTHETIC_API_KEY",
|
|
278
|
+
searxng: "set SEARXNG_ENDPOINT (or the searxng.endpoint setting)",
|
|
279
|
+
xai: "OAuth — run grok login (or set XAI_API_KEY) — Grok web + X search",
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
async function isSearchEngineAvailable(id: SearchProviderId, authStorage: AuthStorage): Promise<boolean> {
|
|
283
|
+
try {
|
|
284
|
+
const provider = await getSearchProvider(id);
|
|
285
|
+
return await provider.isAvailable(authStorage);
|
|
286
|
+
} catch {
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function formatSearchEngineCandidates(): string {
|
|
292
|
+
return [
|
|
293
|
+
`Providers: auto, ${SEARCH_ENGINE_IDS.join(", ")}`,
|
|
294
|
+
"Aliases: chatgpt/openai → codex, claude → anthropic, google → gemini, grok/x → xai, ddg/duck → duckduckgo, active/native/default → auto",
|
|
295
|
+
].join("\n");
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
async function formatSearchEngineStatus(
|
|
299
|
+
current: SearchProviderId | "auto",
|
|
300
|
+
activeModelProvider: string | undefined,
|
|
301
|
+
authStorage: AuthStorage | undefined,
|
|
302
|
+
): Promise<string> {
|
|
303
|
+
const lines = [
|
|
304
|
+
current === "auto"
|
|
305
|
+
? `Search engine: auto (${describeAutoSearchTarget(activeModelProvider)})`
|
|
306
|
+
: `Search engine: ${current}`,
|
|
307
|
+
"Fallback: duckduckgo (always appended)",
|
|
308
|
+
];
|
|
309
|
+
if (authStorage) {
|
|
310
|
+
const probes = await Promise.all(
|
|
311
|
+
SEARCH_ENGINE_IDS.map(async id => ({ id, available: await isSearchEngineAvailable(id, authStorage) })),
|
|
312
|
+
);
|
|
313
|
+
const activated = probes.filter(p => p.available).map(p => p.id);
|
|
314
|
+
const locked = probes.filter(p => !p.available);
|
|
315
|
+
lines.push(`Activated: auto, ${activated.join(", ")}`);
|
|
316
|
+
if (locked.length > 0) {
|
|
317
|
+
lines.push("Needs setup:");
|
|
318
|
+
for (const { id } of locked) {
|
|
319
|
+
lines.push(` ${id} — ${SEARCH_ENGINE_SETUP_HINTS[id]}`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
} else {
|
|
323
|
+
lines.push(formatSearchEngineCandidates());
|
|
324
|
+
}
|
|
325
|
+
return lines.join("\n");
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
function modelSelectionUsage(runtime: SlashCommandRuntime, currentModelLine?: string): string {
|
|
329
|
+
return [
|
|
330
|
+
currentModelLine,
|
|
331
|
+
formatModelAssignmentSummary(runtime),
|
|
332
|
+
"ACP/text mode: use /model <model> for DEFAULT, or /model <target> <model> for EXECUTOR, ARCHITECT, PLANNER, or CRITIC.",
|
|
333
|
+
formatModelOnboardingGuidance(),
|
|
334
|
+
]
|
|
335
|
+
.filter((line): line is string => Boolean(line))
|
|
336
|
+
.join("\n\n");
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
function refreshStatusLine(ctx: InteractiveModeContext): void {
|
|
340
|
+
ctx.statusLine.invalidate();
|
|
341
|
+
ctx.updateEditorTopBorder();
|
|
342
|
+
ctx.ui.requestRender();
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
const GOAL_PAUSED_DIAGNOSTIC = "Resume the current goal first, or drop it before setting a new objective.";
|
|
346
|
+
|
|
347
|
+
function goalCommandVerb(args: string): { verb: string; rest: string } {
|
|
348
|
+
const trimmed = args.trim();
|
|
349
|
+
if (!trimmed) return { verb: "", rest: "" };
|
|
350
|
+
const spaceIndex = trimmed.search(/\s/);
|
|
351
|
+
if (spaceIndex === -1) return { verb: trimmed.toLowerCase(), rest: "" };
|
|
352
|
+
return { verb: trimmed.slice(0, spaceIndex).toLowerCase(), rest: trimmed.slice(spaceIndex + 1).trim() };
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
async function addGoalTool(runtime: SlashCommandRuntime): Promise<void> {
|
|
356
|
+
const previousTools = runtime.session.getActiveToolNames().filter(name => name !== "goal");
|
|
357
|
+
await runtime.session.setActiveToolsByName([...new Set([...previousTools, "goal"])]);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
async function removeGoalTool(runtime: SlashCommandRuntime): Promise<void> {
|
|
361
|
+
await runtime.session.setActiveToolsByName(runtime.session.getActiveToolNames().filter(name => name !== "goal"));
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
async function showNativeGoalStatus(runtime: SlashCommandRuntime): Promise<SlashCommandResult> {
|
|
365
|
+
const result = await runNativeGoalCommand(["status"], runtime.cwd);
|
|
366
|
+
if (result.stderr) await runtime.output(result.stderr.trimEnd());
|
|
367
|
+
if (result.stdout) await runtime.output(result.stdout.trimEnd());
|
|
368
|
+
return commandConsumed();
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
async function startTextGoalPlan(runtime: SlashCommandRuntime, hint: string): Promise<SlashCommandResult> {
|
|
372
|
+
const current = runtime.session.getGoalModeState();
|
|
373
|
+
if (current?.goal.status === "paused") {
|
|
374
|
+
await runtime.output("Resume the current goal first, or drop it before starting goal planning.");
|
|
375
|
+
return commandConsumed();
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
const { brief, prompt } = buildGoalPlanningStart(hint);
|
|
379
|
+
await createGoalPlan({ cwd: runtime.cwd, brief });
|
|
380
|
+
await startNextGoal({ cwd: runtime.cwd });
|
|
381
|
+
const replacingActive = current?.enabled && current.goal.status === "active";
|
|
382
|
+
const state = replacingActive
|
|
383
|
+
? await runtime.session.goalRuntime.replaceGoal({ objective: brief })
|
|
384
|
+
: await runtime.session.goalRuntime.createGoal({ objective: brief });
|
|
385
|
+
await addGoalTool(runtime);
|
|
386
|
+
runtime.session.setGoalModeState(state);
|
|
387
|
+
return { prompt };
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
async function startTextGoal(runtime: SlashCommandRuntime, objective: string): Promise<SlashCommandResult> {
|
|
391
|
+
const trimmedObjective = objective.trim();
|
|
392
|
+
if (!trimmedObjective) {
|
|
393
|
+
await runtime.output("usage: /goal <objective>");
|
|
394
|
+
return commandConsumed();
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
const current = runtime.session.getGoalModeState();
|
|
398
|
+
if (current?.goal.status === "paused") {
|
|
399
|
+
await runtime.output(GOAL_PAUSED_DIAGNOSTIC);
|
|
400
|
+
return commandConsumed();
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
await createGoalPlan({ cwd: runtime.cwd, brief: trimmedObjective });
|
|
404
|
+
await startNextGoal({ cwd: runtime.cwd });
|
|
405
|
+
const replacingActive = current?.enabled && current.goal.status === "active";
|
|
406
|
+
const state = replacingActive
|
|
407
|
+
? await runtime.session.goalRuntime.replaceGoal({ objective: trimmedObjective })
|
|
408
|
+
: await runtime.session.goalRuntime.createGoal({ objective: trimmedObjective });
|
|
409
|
+
await addGoalTool(runtime);
|
|
410
|
+
runtime.session.setGoalModeState(state);
|
|
411
|
+
return { prompt: trimmedObjective };
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
async function handleGoalTextCommand(
|
|
415
|
+
command: ParsedSlashCommand,
|
|
416
|
+
runtime: SlashCommandRuntime,
|
|
417
|
+
): Promise<SlashCommandResult> {
|
|
418
|
+
const args = (command.args ?? "").trim();
|
|
419
|
+
if (!args) return await showNativeGoalStatus(runtime);
|
|
420
|
+
|
|
421
|
+
const { verb, rest } = goalCommandVerb(args);
|
|
422
|
+
switch (verb) {
|
|
423
|
+
case "plan":
|
|
424
|
+
return await startTextGoalPlan(runtime, rest);
|
|
425
|
+
case "set":
|
|
426
|
+
return await startTextGoal(runtime, rest);
|
|
427
|
+
case "show":
|
|
428
|
+
case "status":
|
|
429
|
+
return await showNativeGoalStatus(runtime);
|
|
430
|
+
case "pause": {
|
|
431
|
+
const state = await runtime.session.goalRuntime.pauseGoal();
|
|
432
|
+
if (!state) {
|
|
433
|
+
await runtime.output("No active goal to pause.");
|
|
434
|
+
return commandConsumed();
|
|
435
|
+
}
|
|
436
|
+
runtime.session.setGoalModeState(state);
|
|
437
|
+
await removeGoalTool(runtime);
|
|
438
|
+
await runtime.output("Goal mode paused.");
|
|
439
|
+
return commandConsumed();
|
|
440
|
+
}
|
|
441
|
+
case "resume": {
|
|
442
|
+
const state = await runtime.session.goalRuntime.resumeGoal();
|
|
443
|
+
await addGoalTool(runtime);
|
|
444
|
+
runtime.session.setGoalModeState(state);
|
|
445
|
+
await runtime.output("Goal mode resumed.");
|
|
446
|
+
return commandConsumed();
|
|
447
|
+
}
|
|
448
|
+
case "drop":
|
|
449
|
+
case "cancel":
|
|
450
|
+
await runtime.session.goalRuntime.dropGoal();
|
|
451
|
+
runtime.session.setGoalModeState(undefined);
|
|
452
|
+
await removeGoalTool(runtime);
|
|
453
|
+
await runtime.output("Goal dropped.");
|
|
454
|
+
return commandConsumed();
|
|
455
|
+
default:
|
|
456
|
+
return await startTextGoal(runtime, args);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
const shutdownHandlerTui = (_command: ParsedSlashCommand, runtime: TuiSlashCommandRuntime): SlashCommandResult => {
|
|
461
|
+
runtime.ctx.editor.setText("");
|
|
462
|
+
void runtime.ctx.shutdown();
|
|
463
|
+
return commandConsumed();
|
|
464
|
+
};
|
|
465
|
+
|
|
466
|
+
/** Providers with a local CLI token detector (`/login <provider> local`). */
|
|
467
|
+
const LOCAL_IMPORT_PROVIDERS = new Set<string>(["anthropic", "openai-codex", "xai"]);
|
|
468
|
+
|
|
469
|
+
const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
|
|
470
|
+
{
|
|
471
|
+
name: "settings",
|
|
472
|
+
description: "Open settings menu",
|
|
473
|
+
handleTui: (_command, runtime) => {
|
|
474
|
+
runtime.ctx.showSettingsSelector();
|
|
475
|
+
runtime.ctx.editor.setText("");
|
|
476
|
+
},
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
name: "theme",
|
|
480
|
+
description: "Open theme selector",
|
|
481
|
+
handleTui: (_command, runtime) => {
|
|
482
|
+
runtime.ctx.showThemeSelector();
|
|
483
|
+
runtime.ctx.editor.setText("");
|
|
484
|
+
},
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
name: "identity",
|
|
488
|
+
description: "Show agent identity settings and where to configure them",
|
|
489
|
+
handle: async (_command, runtime) => {
|
|
490
|
+
const configPath = path.join(getAgentDir(), "config.yml");
|
|
491
|
+
const value = (key: "identity.name" | "identity.emoji" | "identity.vibe" | "identity.language") =>
|
|
492
|
+
runtime.settings.get(key) ?? "(unset)";
|
|
493
|
+
await runtime.output(
|
|
494
|
+
[
|
|
495
|
+
"Identity settings (rendered into the system prompt identity block when set):",
|
|
496
|
+
` identity.name = ${value("identity.name")}`,
|
|
497
|
+
` identity.emoji = ${value("identity.emoji")}`,
|
|
498
|
+
` identity.vibe = ${value("identity.vibe")}`,
|
|
499
|
+
` identity.language = ${value("identity.language")}`,
|
|
500
|
+
"",
|
|
501
|
+
"Configure via:",
|
|
502
|
+
" /settings → Identity tab",
|
|
503
|
+
" /identity-auto — the agent interviews you, then saves the answers",
|
|
504
|
+
` ${APP_NAME} config set identity.name "<value>" — CLI`,
|
|
505
|
+
` ${configPath} — identity.* keys`,
|
|
506
|
+
" SYSTEM.md (project or user level) — free-form prompt customization beyond identity",
|
|
507
|
+
].join("\n"),
|
|
508
|
+
);
|
|
509
|
+
return commandConsumed();
|
|
510
|
+
},
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
name: "identity-auto",
|
|
514
|
+
description: "Interview-style identity setup: answer a few questions, the agent saves them",
|
|
515
|
+
handle: async (_command, runtime) => {
|
|
516
|
+
const configPath = path.join(getAgentDir(), "config.yml");
|
|
517
|
+
const instruction = [
|
|
518
|
+
"Help me set up my agent identity settings interactively.",
|
|
519
|
+
"Ask me, in the language I have been using, a few short questions (one compact message) covering:",
|
|
520
|
+
"1. display name for the agent (identity.name)",
|
|
521
|
+
"2. signature emoji, optional (identity.emoji)",
|
|
522
|
+
"3. tone/personality lines (identity.vibe — separate multiple traits with ;)",
|
|
523
|
+
"4. preferred response language (identity.language)",
|
|
524
|
+
"Wait for my answers. Skip any field I decline.",
|
|
525
|
+
`Then persist each answered field with: ${APP_NAME} config set <key> "<value>"`,
|
|
526
|
+
`(settings file: ${configPath})`,
|
|
527
|
+
"Finish with a one-line summary of what was saved, and note that the identity block applies to new prompts.",
|
|
528
|
+
].join("\n");
|
|
529
|
+
await runtime.session.prompt(instruction);
|
|
530
|
+
return commandConsumed();
|
|
531
|
+
},
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
name: "goal",
|
|
535
|
+
description: "Toggle goal-ledger mode — durable autonomous objective (IPABCD D-stage target or standalone goal)",
|
|
536
|
+
subcommands: [
|
|
537
|
+
{ name: "set", description: "Set or replace the goal", usage: "<objective>" },
|
|
538
|
+
{ name: "plan", description: "Start AI-driven goal planning", usage: "[hint]" },
|
|
539
|
+
{ name: "show", description: "Show current goal details" },
|
|
540
|
+
{ name: "pause", description: "Pause the current goal" },
|
|
541
|
+
{ name: "resume", description: "Resume a paused goal" },
|
|
542
|
+
{ name: "drop", description: "Drop the current goal" },
|
|
543
|
+
],
|
|
544
|
+
inlineHint: "[objective]",
|
|
545
|
+
allowArgs: true,
|
|
546
|
+
handle: handleGoalTextCommand,
|
|
547
|
+
handleTui: async (command, runtime) => {
|
|
548
|
+
const hadArgs = !!command.args;
|
|
549
|
+
// Capture state BEFORE the call (see /plan above for rationale).
|
|
550
|
+
const wasGoalModeEnabled = runtime.ctx.goalModeEnabled;
|
|
551
|
+
await runtime.ctx.handleGoalModeCommand(command.args || undefined);
|
|
552
|
+
if (hadArgs && wasGoalModeEnabled) {
|
|
553
|
+
runtime.ctx.editor.addToHistory(command.text);
|
|
554
|
+
}
|
|
555
|
+
runtime.ctx.editor.setText("");
|
|
556
|
+
},
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
name: "orchestrate",
|
|
560
|
+
aliases: ["pabcd"],
|
|
561
|
+
description: "Native IPABCD orchestration — enter a stage (jaw brand only)",
|
|
562
|
+
subcommands: [
|
|
563
|
+
{ name: "i", description: "I-stage: interview — gather requirements (jaw-interview engine)" },
|
|
564
|
+
{ name: "p", description: "P-stage: plan — main session drafts, Critic 1-pass review" },
|
|
565
|
+
{ name: "a", description: "A-stage: plan audit — Planner ∥ Architect read-only auditors" },
|
|
566
|
+
{ name: "b", description: "B-stage: build — main session implements, subagent verifies" },
|
|
567
|
+
{ name: "c", description: "C-stage: check — mechanical gates + adversarial review" },
|
|
568
|
+
{ name: "d", description: "D-stage: done — summary + WONDER/REFLECT, close out" },
|
|
569
|
+
{ name: "status", description: "Show current orchestration state" },
|
|
570
|
+
],
|
|
571
|
+
inlineHint: "<i|p|a|b|c|d|status>",
|
|
572
|
+
allowArgs: true,
|
|
573
|
+
handle: async (command, runtime) => {
|
|
574
|
+
const args = (command.args ?? "").trim();
|
|
575
|
+
const argv = args.length > 0 ? args.split(/\s+/) : [];
|
|
576
|
+
const sessionId = runtime.session.sessionManager.getSessionId?.();
|
|
577
|
+
if (sessionId) argv.push("--session-id", sessionId);
|
|
578
|
+
const result = await runNativeOrchestrateCommand(argv, runtime.session.sessionManager.getCwd());
|
|
579
|
+
if (result.stderr) await runtime.output(result.stderr.trimEnd());
|
|
580
|
+
const sub = argv[0]?.toLowerCase();
|
|
581
|
+
const stageEntered = result.status === 0 && !!sub && sub !== "status" && sub !== "verdict";
|
|
582
|
+
if (stageEntered && result.stdout) {
|
|
583
|
+
await runtime.output(result.stdout.trimEnd());
|
|
584
|
+
await runtime.session.sendPabcdStageContext({ deliverAs: "nextTurn" });
|
|
585
|
+
} else if (result.stdout) {
|
|
586
|
+
await runtime.output(result.stdout.trimEnd());
|
|
587
|
+
}
|
|
588
|
+
return commandConsumed();
|
|
589
|
+
},
|
|
590
|
+
handleTui: async (command, runtime) => {
|
|
591
|
+
const args = (command.args ?? "").trim();
|
|
592
|
+
const argv = args.length > 0 ? args.split(/\s+/) : [];
|
|
593
|
+
const sessionId = runtime.ctx.session.sessionManager.getSessionId?.();
|
|
594
|
+
if (sessionId) argv.push("--session-id", sessionId);
|
|
595
|
+
const result = await runNativeOrchestrateCommand(argv, runtime.ctx.session.sessionManager.getCwd());
|
|
596
|
+
const sub = argv[0]?.toLowerCase();
|
|
597
|
+
const stageEntered = result.status === 0 && !!sub && sub !== "status" && sub !== "verdict";
|
|
598
|
+
if (stageEntered) {
|
|
599
|
+
await runtime.ctx.session.sendPabcdStageContext({ deliverAs: "nextTurn" });
|
|
600
|
+
runtime.ctx.statusLine.refreshPabcdNow();
|
|
601
|
+
}
|
|
602
|
+
runtime.ctx.editor.setText("");
|
|
603
|
+
},
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
name: "interview",
|
|
607
|
+
aliases: ["jaw-interview", "deep-interview"],
|
|
608
|
+
description: "Socratic requirements gathering — IPABCD I-stage (jaw-interview engine)",
|
|
609
|
+
inlineHint: "[request]",
|
|
610
|
+
allowArgs: true,
|
|
611
|
+
handle: async (command, runtime) => {
|
|
612
|
+
const args = (command.args ?? "").trim();
|
|
613
|
+
const argv = ["i", ...(args ? [args] : [])];
|
|
614
|
+
const sessionId = runtime.session.sessionManager.getSessionId?.();
|
|
615
|
+
if (sessionId) argv.push("--session-id", sessionId);
|
|
616
|
+
const result = await runNativeOrchestrateCommand(argv, runtime.session.sessionManager.getCwd());
|
|
617
|
+
if (result.stderr) await runtime.output(result.stderr.trimEnd());
|
|
618
|
+
const sub = argv[0]?.toLowerCase();
|
|
619
|
+
const entered = result.status === 0 && !!sub && sub !== "status";
|
|
620
|
+
if (result.stdout) await runtime.output(result.stdout.trimEnd());
|
|
621
|
+
if (!entered) return commandConsumed();
|
|
622
|
+
await runtime.session.sendPabcdStageContext({ deliverAs: "nextTurn" });
|
|
623
|
+
return { prompt: args || "i" };
|
|
624
|
+
},
|
|
625
|
+
handleTui: async (command, runtime) => {
|
|
626
|
+
const args = (command.args ?? "").trim();
|
|
627
|
+
const argv = ["i", ...(args ? [args] : [])];
|
|
628
|
+
const sessionId = runtime.ctx.session.sessionManager.getSessionId?.();
|
|
629
|
+
if (sessionId) argv.push("--session-id", sessionId);
|
|
630
|
+
const result = await runNativeOrchestrateCommand(argv, runtime.ctx.session.sessionManager.getCwd());
|
|
631
|
+
const entered = result.status === 0 && argv[0]?.toLowerCase() === "i";
|
|
632
|
+
if (result.stderr) runtime.ctx.showError(result.stderr.trimEnd());
|
|
633
|
+
if (result.stdout) runtime.ctx.showStatus(result.stdout.trimEnd());
|
|
634
|
+
runtime.ctx.editor.setText("");
|
|
635
|
+
if (!entered) return commandConsumed();
|
|
636
|
+
await runtime.ctx.session.sendPabcdStageContext({ deliverAs: "nextTurn" });
|
|
637
|
+
runtime.ctx.statusLine.refreshPabcdNow();
|
|
638
|
+
return { prompt: args || "i" };
|
|
639
|
+
},
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
name: "goalplan",
|
|
643
|
+
aliases: ["goal-plan"],
|
|
644
|
+
description: "AI-driven goal planning — agent analyzes context and sets goal autonomously",
|
|
645
|
+
inlineHint: "[hint]",
|
|
646
|
+
allowArgs: true,
|
|
647
|
+
handle: async (command, runtime) => {
|
|
648
|
+
return await startTextGoalPlan(runtime, (command.args ?? "").trim());
|
|
649
|
+
},
|
|
650
|
+
handleTui: async (command, runtime) => {
|
|
651
|
+
const args = (command.args ?? "").trim();
|
|
652
|
+
const goalArgs = args ? `plan ${args}` : "plan";
|
|
653
|
+
await runtime.ctx.handleGoalModeCommand(goalArgs);
|
|
654
|
+
runtime.ctx.editor.setText("");
|
|
655
|
+
},
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
name: "model",
|
|
659
|
+
aliases: ["models"],
|
|
660
|
+
description: "Select model (opens selector UI)",
|
|
661
|
+
acpDescription: "Show current model selection",
|
|
662
|
+
inlineHint: "[target] <model>",
|
|
663
|
+
acpInputHint: "[target] <model>",
|
|
664
|
+
// Without allowArgs the TUI dispatcher refuses "/model sonnet" and the
|
|
665
|
+
// input silently falls through to the LLM as chat (cmd_audit P1).
|
|
666
|
+
allowArgs: true,
|
|
667
|
+
handle: async (command, runtime) => {
|
|
668
|
+
if (command.args) {
|
|
669
|
+
const parsedArgs = parseModelCommandArgs(command.args);
|
|
670
|
+
const modelId = parsedArgs.selector;
|
|
671
|
+
if (!modelId) {
|
|
672
|
+
return usage(
|
|
673
|
+
modelSelectionUsage(runtime, `Missing model for ${parsedArgs.targetId.toUpperCase()}.`),
|
|
674
|
+
runtime,
|
|
675
|
+
);
|
|
676
|
+
}
|
|
677
|
+
const selection = resolveModelCommandSelection(runtime, modelId);
|
|
678
|
+
if (!selection) {
|
|
679
|
+
return usage(
|
|
680
|
+
modelSelectionUsage(
|
|
681
|
+
runtime,
|
|
682
|
+
`Unknown model: ${modelId}. Configure or login to a provider first, then list/select models with /model.`,
|
|
683
|
+
),
|
|
684
|
+
runtime,
|
|
685
|
+
);
|
|
686
|
+
}
|
|
687
|
+
try {
|
|
688
|
+
const persistedSelector = formatModelSelectorValue(selection.selector, selection.thinkingLevel);
|
|
689
|
+
if (parsedArgs.targetId === "default") {
|
|
690
|
+
await runtime.session.setModel(selection.model, "default", {
|
|
691
|
+
selector: selection.selector,
|
|
692
|
+
thinkingLevel: selection.thinkingLevel,
|
|
693
|
+
});
|
|
694
|
+
if (selection.thinkingLevel) {
|
|
695
|
+
runtime.session.setThinkingLevel(selection.thinkingLevel);
|
|
696
|
+
}
|
|
697
|
+
await runtime.output(`Default model set to ${persistedSelector}.`);
|
|
698
|
+
await runtime.notifyTitleChanged?.();
|
|
699
|
+
} else {
|
|
700
|
+
const apiKey = await runtime.session.modelRegistry.getApiKey(
|
|
701
|
+
selection.model,
|
|
702
|
+
runtime.session.sessionId,
|
|
703
|
+
);
|
|
704
|
+
if (!apiKey) {
|
|
705
|
+
throw new Error(`No API key for ${selection.model.provider}/${selection.model.id}`);
|
|
706
|
+
}
|
|
707
|
+
const overrides = runtime.settings.get("task.agentModelOverrides");
|
|
708
|
+
const thinkingLevel =
|
|
709
|
+
selection.thinkingLevel ??
|
|
710
|
+
extractExplicitThinkingSelector(overrides[parsedArgs.targetId], runtime.settings);
|
|
711
|
+
const roleSelector = formatModelSelectorValue(selection.selector, thinkingLevel);
|
|
712
|
+
runtime.settings.set("task.agentModelOverrides", {
|
|
713
|
+
...overrides,
|
|
714
|
+
[parsedArgs.targetId]: roleSelector,
|
|
715
|
+
});
|
|
716
|
+
runtime.settings.getStorage()?.recordModelUsage(`${selection.model.provider}/${selection.model.id}`);
|
|
717
|
+
await runtime.output(`${parsedArgs.targetId} agent model set to ${roleSelector}.`);
|
|
718
|
+
}
|
|
719
|
+
await runtime.notifyConfigChanged?.();
|
|
720
|
+
return commandConsumed();
|
|
721
|
+
} catch (err) {
|
|
722
|
+
return usage(`Failed to set model: ${errorMessage(err)}`, runtime);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
const model = runtime.session.model;
|
|
727
|
+
await runtime.output(
|
|
728
|
+
modelSelectionUsage(
|
|
729
|
+
runtime,
|
|
730
|
+
model ? `Current model: ${model.provider}/${model.id}` : "No model is currently selected.",
|
|
731
|
+
),
|
|
732
|
+
);
|
|
733
|
+
return commandConsumed();
|
|
734
|
+
},
|
|
735
|
+
handleTui: async (command, runtime) => {
|
|
736
|
+
// Args form runs the same parsing path as ACP (cmd_audit P1): the
|
|
737
|
+
// selector is the bare-invocation UX only.
|
|
738
|
+
if (command.args.trim()) {
|
|
739
|
+
const handle = lookupBuiltinSlashCommand("model")?.handle;
|
|
740
|
+
if (handle) {
|
|
741
|
+
const result = await handle(command, adaptTuiSlashRuntime(runtime.ctx));
|
|
742
|
+
runtime.ctx.editor.setText("");
|
|
743
|
+
return result && typeof result === "object" && "prompt" in result ? result : undefined;
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
runtime.ctx.showModelSelector();
|
|
747
|
+
runtime.ctx.editor.setText("");
|
|
748
|
+
},
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
name: "searchengine",
|
|
752
|
+
description: "Select web search engine provider",
|
|
753
|
+
acpDescription: "Select web search engine provider",
|
|
754
|
+
inlineHint: "[provider|status]",
|
|
755
|
+
acpInputHint: "[provider|status]",
|
|
756
|
+
// Args form must dispatch ("/searchengine chatgpt") instead of falling
|
|
757
|
+
// through to LLM chat — same trap as /model (cmd_audit P1).
|
|
758
|
+
allowArgs: true,
|
|
759
|
+
subcommands: [
|
|
760
|
+
{ name: "status", description: "Show current search engine" },
|
|
761
|
+
{ name: "auto", description: "Active model's native search, DuckDuckGo fallback" },
|
|
762
|
+
{ name: "chatgpt", description: "ChatGPT/OpenAI native search (codex)" },
|
|
763
|
+
{ name: "claude", description: "Anthropic native search" },
|
|
764
|
+
{ name: "gemini", description: "Google Gemini native search" },
|
|
765
|
+
{ name: "grok", description: "xAI Grok unified web + X search (xai)" },
|
|
766
|
+
{ name: "duckduckgo", description: "Keyless DuckDuckGo (always available)" },
|
|
767
|
+
{ name: "perplexity", description: "Perplexity search" },
|
|
768
|
+
{ name: "exa", description: "Exa keyed search API" },
|
|
769
|
+
{ name: "brave", description: "Brave keyed search API" },
|
|
770
|
+
{ name: "tavily", description: "Tavily keyed search API" },
|
|
771
|
+
],
|
|
772
|
+
handle: async (command, runtime) => {
|
|
773
|
+
const current = runtime.settings.get("providers.webSearch");
|
|
774
|
+
const authStorage = runtime.session.modelRegistry?.authStorage;
|
|
775
|
+
const raw = command.args.trim();
|
|
776
|
+
if (!raw || raw.toLowerCase() === "status") {
|
|
777
|
+
await runtime.output(await formatSearchEngineStatus(current, runtime.session.model?.provider, authStorage));
|
|
778
|
+
return commandConsumed();
|
|
779
|
+
}
|
|
780
|
+
const next = normalizeSearchEngineArg(raw);
|
|
781
|
+
if (!next) {
|
|
782
|
+
return usage(`Unknown search engine: ${raw}\n${formatSearchEngineCandidates()}`, runtime);
|
|
783
|
+
}
|
|
784
|
+
runtime.settings.set("providers.webSearch", next);
|
|
785
|
+
setPreferredSearchProvider(next);
|
|
786
|
+
await runtime.notifyConfigChanged?.();
|
|
787
|
+
// Explicit keyed/OAuth providers selected without credentials still
|
|
788
|
+
// persist (operator may set the key next), but warn so the choice
|
|
789
|
+
// isn't silently a no-op behind the DuckDuckGo fallback.
|
|
790
|
+
let setupNote = "";
|
|
791
|
+
if (next !== "auto" && next !== "duckduckgo" && authStorage) {
|
|
792
|
+
const available = await isSearchEngineAvailable(next, authStorage);
|
|
793
|
+
if (!available) {
|
|
794
|
+
setupNote = `\n⚠ ${next} is not activated yet — ${SEARCH_ENGINE_SETUP_HINTS[next]}. Searches use DuckDuckGo until then.`;
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
await runtime.output(
|
|
798
|
+
(next === "auto"
|
|
799
|
+
? `Search engine set to auto (${describeAutoSearchTarget(runtime.session.model?.provider)}). Fallback remains DuckDuckGo.`
|
|
800
|
+
: `Search engine set to ${next}. Fallback remains DuckDuckGo.`) + setupNote,
|
|
801
|
+
);
|
|
802
|
+
return commandConsumed();
|
|
803
|
+
},
|
|
804
|
+
handleTui: (command, runtime) => {
|
|
805
|
+
const raw = command.args.trim();
|
|
806
|
+
// No args → interactive bottom selector (parity with /effort, /model).
|
|
807
|
+
if (!raw) {
|
|
808
|
+
runtime.ctx.showSearchEngineSelector();
|
|
809
|
+
runtime.ctx.editor.setText("");
|
|
810
|
+
return;
|
|
811
|
+
}
|
|
812
|
+
if (raw.toLowerCase() === "status") {
|
|
813
|
+
const current = runtime.ctx.settings.get("providers.webSearch");
|
|
814
|
+
runtime.ctx.showStatus(`Search engine: ${current ?? "auto"}. Fallback remains DuckDuckGo.`);
|
|
815
|
+
runtime.ctx.editor.setText("");
|
|
816
|
+
return;
|
|
817
|
+
}
|
|
818
|
+
const next = normalizeSearchEngineArg(raw);
|
|
819
|
+
if (!next) {
|
|
820
|
+
runtime.ctx.showError(`Unknown search engine: ${raw}\n${formatSearchEngineCandidates()}`);
|
|
821
|
+
runtime.ctx.editor.setText("");
|
|
822
|
+
return;
|
|
823
|
+
}
|
|
824
|
+
runtime.ctx.settings.set("providers.webSearch", next);
|
|
825
|
+
setPreferredSearchProvider(next);
|
|
826
|
+
void runtime.ctx.notifyConfigChanged?.();
|
|
827
|
+
refreshStatusLine(runtime.ctx);
|
|
828
|
+
runtime.ctx.showStatus(`Search engine set to ${next}. Fallback remains DuckDuckGo.`);
|
|
829
|
+
runtime.ctx.editor.setText("");
|
|
830
|
+
},
|
|
831
|
+
},
|
|
832
|
+
{
|
|
833
|
+
name: "effort",
|
|
834
|
+
description: "Set reasoning effort for the current session",
|
|
835
|
+
acpDescription: "Set reasoning effort",
|
|
836
|
+
acpInputHint: "[off|minimal|low|medium|high|xhigh|max]",
|
|
837
|
+
subcommands: [
|
|
838
|
+
{ name: "off", description: "No reasoning" },
|
|
839
|
+
{ name: "minimal", description: "Very brief reasoning (~1k tokens)" },
|
|
840
|
+
{ name: "low", description: "Light reasoning (~2k tokens)" },
|
|
841
|
+
{ name: "medium", description: "Moderate reasoning (~8k tokens)" },
|
|
842
|
+
{ name: "high", description: "Deep reasoning (~16k tokens)" },
|
|
843
|
+
{ name: "xhigh", description: "Maximum reasoning (~32k tokens)" },
|
|
844
|
+
{ name: "max", description: "Unrestricted reasoning" },
|
|
845
|
+
{ name: "status", description: "Show current reasoning effort" },
|
|
846
|
+
],
|
|
847
|
+
allowArgs: true,
|
|
848
|
+
handle: async (command, runtime) => {
|
|
849
|
+
const raw = command.args.trim().toLowerCase();
|
|
850
|
+
if (!raw || raw === "status") {
|
|
851
|
+
await runtime.output(
|
|
852
|
+
`Reasoning effort: ${runtime.session.thinkingLevel ?? "off"}. Options: off, minimal, low, medium, high, xhigh, max.`,
|
|
853
|
+
);
|
|
854
|
+
return commandConsumed();
|
|
855
|
+
}
|
|
856
|
+
const level = parseEffortArg(raw);
|
|
857
|
+
if (!level) {
|
|
858
|
+
await runtime.output(
|
|
859
|
+
`Unknown effort "${command.args.trim()}". Options: off, minimal, low, medium, high, xhigh, max.`,
|
|
860
|
+
);
|
|
861
|
+
return commandConsumed();
|
|
862
|
+
}
|
|
863
|
+
runtime.session.setThinkingLevel(level);
|
|
864
|
+
await runtime.output(`Reasoning effort set to ${runtime.session.thinkingLevel ?? "off"}.`);
|
|
865
|
+
return commandConsumed();
|
|
866
|
+
},
|
|
867
|
+
handleTui: (command, runtime) => {
|
|
868
|
+
const raw = command.args.trim().toLowerCase();
|
|
869
|
+
if (!raw) {
|
|
870
|
+
runtime.ctx.showEffortSelector();
|
|
871
|
+
runtime.ctx.editor.setText("");
|
|
872
|
+
return;
|
|
873
|
+
}
|
|
874
|
+
if (raw === "status") {
|
|
875
|
+
runtime.ctx.showStatus(
|
|
876
|
+
`Reasoning effort: ${runtime.ctx.session.thinkingLevel ?? "off"} (off|minimal|low|medium|high|xhigh|max)`,
|
|
877
|
+
);
|
|
878
|
+
runtime.ctx.editor.setText("");
|
|
879
|
+
return;
|
|
880
|
+
}
|
|
881
|
+
const level = parseEffortArg(raw);
|
|
882
|
+
if (!level) {
|
|
883
|
+
runtime.ctx.showError(`Unknown effort "${command.args.trim()}" (off|minimal|low|medium|high|xhigh|max)`);
|
|
884
|
+
runtime.ctx.editor.setText("");
|
|
885
|
+
return;
|
|
886
|
+
}
|
|
887
|
+
runtime.ctx.session.setThinkingLevel(level);
|
|
888
|
+
refreshStatusLine(runtime.ctx);
|
|
889
|
+
runtime.ctx.showStatus(`Reasoning effort set to ${runtime.ctx.session.thinkingLevel ?? "off"}.`);
|
|
890
|
+
runtime.ctx.editor.setText("");
|
|
891
|
+
},
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
// jwc fork (devlog 086.2): manual escape hatch for stale TUI fragments left
|
|
895
|
+
// in terminal scrollback (VS Code reflow, IME cursor drift, resize races).
|
|
896
|
+
// Forces requestRender(true) → full clear (2J/H/3J) + repaint of the whole
|
|
897
|
+
// transcript, the same recovery path used after Ctrl-Z/external-editor resume.
|
|
898
|
+
name: "redraw",
|
|
899
|
+
description: "Force a full screen repaint (clears stale TUI fragments)",
|
|
900
|
+
handleTui: (_command, runtime) => {
|
|
901
|
+
runtime.ctx.editor.setText("");
|
|
902
|
+
runtime.ctx.ui.requestRender(true);
|
|
903
|
+
},
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
name: "fast",
|
|
907
|
+
description: "Toggle priority service tier (OpenAI service_tier=priority, Anthropic speed=fast)",
|
|
908
|
+
acpDescription: "Toggle fast mode",
|
|
909
|
+
acpInputHint: "[on|off|status]",
|
|
910
|
+
subcommands: [
|
|
911
|
+
{ name: "on", description: "Enable fast mode" },
|
|
912
|
+
{ name: "off", description: "Disable fast mode" },
|
|
913
|
+
{ name: "status", description: "Show fast mode status" },
|
|
914
|
+
],
|
|
915
|
+
allowArgs: true,
|
|
916
|
+
handle: async (command, runtime) => {
|
|
917
|
+
const arg = command.args.toLowerCase();
|
|
918
|
+
if (!arg || arg === "toggle") {
|
|
919
|
+
const enabled = runtime.session.toggleFastMode();
|
|
920
|
+
await runtime.output(`Fast mode ${enabled ? "enabled" : "disabled"}.`);
|
|
921
|
+
return commandConsumed();
|
|
922
|
+
}
|
|
923
|
+
if (arg === "on") {
|
|
924
|
+
runtime.session.setFastMode(true);
|
|
925
|
+
await runtime.output("Fast mode enabled.");
|
|
926
|
+
return commandConsumed();
|
|
927
|
+
}
|
|
928
|
+
if (arg === "off") {
|
|
929
|
+
runtime.session.setFastMode(false);
|
|
930
|
+
await runtime.output("Fast mode disabled.");
|
|
931
|
+
return commandConsumed();
|
|
932
|
+
}
|
|
933
|
+
if (arg === "status") {
|
|
934
|
+
await runtime.output(`Fast mode is ${runtime.session.isFastModeEnabled() ? "on" : "off"}.`);
|
|
935
|
+
return commandConsumed();
|
|
936
|
+
}
|
|
937
|
+
return usage("Usage: /fast [on|off|status]", runtime);
|
|
938
|
+
},
|
|
939
|
+
handleTui: (command, runtime) => {
|
|
940
|
+
const arg = command.args.trim().toLowerCase();
|
|
941
|
+
if (!arg || arg === "toggle") {
|
|
942
|
+
const enabled = runtime.ctx.session.toggleFastMode();
|
|
943
|
+
refreshStatusLine(runtime.ctx);
|
|
944
|
+
runtime.ctx.showStatus(`Fast mode ${enabled ? "enabled" : "disabled"}.`);
|
|
945
|
+
runtime.ctx.editor.setText("");
|
|
946
|
+
return;
|
|
947
|
+
}
|
|
948
|
+
if (arg === "on") {
|
|
949
|
+
runtime.ctx.session.setFastMode(true);
|
|
950
|
+
refreshStatusLine(runtime.ctx);
|
|
951
|
+
runtime.ctx.showStatus("Fast mode enabled.");
|
|
952
|
+
runtime.ctx.editor.setText("");
|
|
953
|
+
return;
|
|
954
|
+
}
|
|
955
|
+
if (arg === "off") {
|
|
956
|
+
runtime.ctx.session.setFastMode(false);
|
|
957
|
+
refreshStatusLine(runtime.ctx);
|
|
958
|
+
runtime.ctx.showStatus("Fast mode disabled.");
|
|
959
|
+
runtime.ctx.editor.setText("");
|
|
960
|
+
return;
|
|
961
|
+
}
|
|
962
|
+
if (arg === "status") {
|
|
963
|
+
const enabled = runtime.ctx.session.isFastModeEnabled();
|
|
964
|
+
runtime.ctx.showStatus(`Fast mode is ${enabled ? "on" : "off"}.`);
|
|
965
|
+
runtime.ctx.editor.setText("");
|
|
966
|
+
return;
|
|
967
|
+
}
|
|
968
|
+
runtime.ctx.showStatus("Usage: /fast [on|off|status]");
|
|
969
|
+
runtime.ctx.editor.setText("");
|
|
970
|
+
},
|
|
971
|
+
},
|
|
972
|
+
{
|
|
973
|
+
name: "export",
|
|
974
|
+
description: "Export session to HTML file",
|
|
975
|
+
inlineHint: "[path]",
|
|
976
|
+
allowArgs: true,
|
|
977
|
+
handle: async (command, runtime) => {
|
|
978
|
+
const arg = command.args.trim();
|
|
979
|
+
// Match the interactive `/export` behavior: clipboard aliases are not a
|
|
980
|
+
// valid export target. Without this, the literal value (`copy`,
|
|
981
|
+
// `--copy`, `clipboard`) is passed to `exportToHtml` and becomes the
|
|
982
|
+
// output filename.
|
|
983
|
+
if (arg === "--copy" || arg === "clipboard" || arg === "copy") {
|
|
984
|
+
return usage("Use /dump to copy the session to clipboard.", runtime);
|
|
985
|
+
}
|
|
986
|
+
try {
|
|
987
|
+
const filePath = await runtime.session.exportToHtml(arg || undefined);
|
|
988
|
+
await runtime.output(`Session exported to: ${filePath}`);
|
|
989
|
+
return commandConsumed();
|
|
990
|
+
} catch (err) {
|
|
991
|
+
return usage(`Failed to export session: ${errorMessage(err)}`, runtime);
|
|
992
|
+
}
|
|
993
|
+
},
|
|
994
|
+
handleTui: async (command, runtime) => {
|
|
995
|
+
await runtime.ctx.handleExportCommand(command.text);
|
|
996
|
+
runtime.ctx.editor.setText("");
|
|
997
|
+
},
|
|
998
|
+
},
|
|
999
|
+
{
|
|
1000
|
+
name: "dump",
|
|
1001
|
+
description: "Copy session transcript to clipboard",
|
|
1002
|
+
acpDescription: "Return full transcript as plain text",
|
|
1003
|
+
handle: async (_command, runtime) => {
|
|
1004
|
+
const text = runtime.session.formatSessionAsText();
|
|
1005
|
+
await runtime.output(text || "No messages to dump yet.");
|
|
1006
|
+
return commandConsumed();
|
|
1007
|
+
},
|
|
1008
|
+
handleTui: async (_command, runtime) => {
|
|
1009
|
+
await runtime.ctx.handleDumpCommand();
|
|
1010
|
+
runtime.ctx.editor.setText("");
|
|
1011
|
+
},
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
name: "session",
|
|
1015
|
+
description: "Session management commands",
|
|
1016
|
+
acpDescription: "Show session information",
|
|
1017
|
+
acpInputHint: "info|delete",
|
|
1018
|
+
subcommands: [
|
|
1019
|
+
{ name: "info", description: "Show session info and stats" },
|
|
1020
|
+
{ name: "delete", description: "Delete current session and return to selector" },
|
|
1021
|
+
],
|
|
1022
|
+
allowArgs: true,
|
|
1023
|
+
handle: async (command, runtime) => {
|
|
1024
|
+
if (!command.args || command.args === "info") {
|
|
1025
|
+
await runtime.output(
|
|
1026
|
+
[
|
|
1027
|
+
`Session: ${runtime.session.sessionId}`,
|
|
1028
|
+
`Title: ${runtime.session.sessionName}`,
|
|
1029
|
+
`CWD: ${runtime.cwd}`,
|
|
1030
|
+
].join("\n"),
|
|
1031
|
+
);
|
|
1032
|
+
return commandConsumed();
|
|
1033
|
+
}
|
|
1034
|
+
if (command.args === "delete") {
|
|
1035
|
+
if (runtime.session.isStreaming) return usage("Cannot delete the session while streaming.", runtime);
|
|
1036
|
+
const sessionFile = runtime.sessionManager.getSessionFile();
|
|
1037
|
+
if (!sessionFile) return usage("No session file to delete (in-memory session).", runtime);
|
|
1038
|
+
// Route through the active SessionManager so the persist writer is
|
|
1039
|
+
// closed before the file is deleted. Constructing a fresh
|
|
1040
|
+
// FileSessionStorage and calling deleteSessionWithArtifacts leaves
|
|
1041
|
+
// the active writer attached to the now-deleted path, so the next
|
|
1042
|
+
// prompt would silently resurrect or corrupt the "deleted" file.
|
|
1043
|
+
try {
|
|
1044
|
+
await runtime.sessionManager.dropSession(sessionFile);
|
|
1045
|
+
} catch (err) {
|
|
1046
|
+
return usage(`Failed to delete session: ${errorMessage(err)}`, runtime);
|
|
1047
|
+
}
|
|
1048
|
+
await runtime.output(
|
|
1049
|
+
`Session deleted: ${sessionFile}. Use ACP \`session/load\` to switch to another session.`,
|
|
1050
|
+
);
|
|
1051
|
+
return commandConsumed();
|
|
1052
|
+
}
|
|
1053
|
+
return usage("Usage: /session [info|delete]", runtime);
|
|
1054
|
+
},
|
|
1055
|
+
handleTui: async (command, runtime) => {
|
|
1056
|
+
const sub = command.args.trim().toLowerCase() || "info";
|
|
1057
|
+
if (sub === "delete") {
|
|
1058
|
+
runtime.ctx.editor.setText("");
|
|
1059
|
+
await runtime.ctx.handleSessionDeleteCommand();
|
|
1060
|
+
return;
|
|
1061
|
+
}
|
|
1062
|
+
// Default: show session info
|
|
1063
|
+
await runtime.ctx.handleSessionCommand();
|
|
1064
|
+
runtime.ctx.editor.setText("");
|
|
1065
|
+
},
|
|
1066
|
+
},
|
|
1067
|
+
{
|
|
1068
|
+
name: "jobs",
|
|
1069
|
+
description: "Show async background jobs status",
|
|
1070
|
+
acpDescription: "Show background jobs",
|
|
1071
|
+
handle: async (_command, runtime) => {
|
|
1072
|
+
const snapshot = runtime.session.getAsyncJobSnapshot({ recentLimit: 5 });
|
|
1073
|
+
if (!snapshot || (snapshot.running.length === 0 && snapshot.recent.length === 0)) {
|
|
1074
|
+
await runtime.output(
|
|
1075
|
+
"No background jobs running. (Background jobs run async tools — e.g. long-running bash, debug, or task subagents that would otherwise tie up a turn. They appear here while alive and for ~5 minutes after.)",
|
|
1076
|
+
);
|
|
1077
|
+
return commandConsumed();
|
|
1078
|
+
}
|
|
1079
|
+
const now = Date.now();
|
|
1080
|
+
const lines: string[] = ["Background Jobs", `Running: ${snapshot.running.length}`];
|
|
1081
|
+
if (snapshot.running.length > 0) {
|
|
1082
|
+
lines.push("", "Running Jobs");
|
|
1083
|
+
for (const job of snapshot.running) {
|
|
1084
|
+
lines.push(` [${job.id}] ${job.type} (${job.status}) — ${formatDuration(now - job.startTime)}`);
|
|
1085
|
+
lines.push(` ${job.label}`);
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
if (snapshot.recent.length > 0) {
|
|
1089
|
+
lines.push("", "Recent Jobs");
|
|
1090
|
+
for (const job of snapshot.recent) {
|
|
1091
|
+
lines.push(` [${job.id}] ${job.type} (${job.status}) — ${formatDuration(now - job.startTime)}`);
|
|
1092
|
+
lines.push(` ${job.label}`);
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
await runtime.output(lines.join("\n"));
|
|
1096
|
+
return commandConsumed();
|
|
1097
|
+
},
|
|
1098
|
+
handleTui: async (_command, runtime) => {
|
|
1099
|
+
await runtime.ctx.handleJobsCommand();
|
|
1100
|
+
runtime.ctx.editor.setText("");
|
|
1101
|
+
},
|
|
1102
|
+
},
|
|
1103
|
+
{
|
|
1104
|
+
name: "context",
|
|
1105
|
+
description: "Show active context token usage breakdown",
|
|
1106
|
+
acpDescription: "Show active context token usage breakdown",
|
|
1107
|
+
handle: async (_command, runtime) => {
|
|
1108
|
+
await runtime.output(buildContextReportText(runtime));
|
|
1109
|
+
return commandConsumed();
|
|
1110
|
+
},
|
|
1111
|
+
handleTui: (_command, runtime) => {
|
|
1112
|
+
runtime.ctx.handleContextCommand();
|
|
1113
|
+
runtime.ctx.editor.setText("");
|
|
1114
|
+
},
|
|
1115
|
+
},
|
|
1116
|
+
{
|
|
1117
|
+
name: "usage",
|
|
1118
|
+
description: "Show provider usage and limits",
|
|
1119
|
+
acpDescription: "Show token usage",
|
|
1120
|
+
handle: async (_command, runtime) => {
|
|
1121
|
+
await runtime.output(await buildUsageReportText(runtime));
|
|
1122
|
+
return commandConsumed();
|
|
1123
|
+
},
|
|
1124
|
+
handleTui: async (_command, runtime) => {
|
|
1125
|
+
await runtime.ctx.handleUsageCommand();
|
|
1126
|
+
runtime.ctx.editor.setText("");
|
|
1127
|
+
},
|
|
1128
|
+
},
|
|
1129
|
+
{
|
|
1130
|
+
name: "quota",
|
|
1131
|
+
description: "Show provider quota and usage limits",
|
|
1132
|
+
acpDescription: "Show quota for an OAuth provider",
|
|
1133
|
+
acpInputHint: "[provider]",
|
|
1134
|
+
subcommands: [
|
|
1135
|
+
{ name: "anthropic", description: "Anthropic (Claude Pro/Max)" },
|
|
1136
|
+
{ name: "openai-codex", description: "OpenAI (Codex/ChatGPT Plus)" },
|
|
1137
|
+
{ name: "xai", description: "xAI (Grok)" },
|
|
1138
|
+
{ name: "kiro", description: "Kiro" },
|
|
1139
|
+
],
|
|
1140
|
+
allowArgs: true,
|
|
1141
|
+
handle: async (command, runtime) => {
|
|
1142
|
+
const provider = command.args.trim() || null;
|
|
1143
|
+
if (provider) {
|
|
1144
|
+
const text = await buildQuotaText(runtime, provider);
|
|
1145
|
+
await runtime.output(text);
|
|
1146
|
+
} else {
|
|
1147
|
+
await runtime.output(await buildUsageReportText(runtime));
|
|
1148
|
+
}
|
|
1149
|
+
return commandConsumed();
|
|
1150
|
+
},
|
|
1151
|
+
handleTui: (command, runtime) => {
|
|
1152
|
+
const provider = command.args.trim();
|
|
1153
|
+
if (provider) {
|
|
1154
|
+
void runtime.ctx.handleQuotaForProvider(provider);
|
|
1155
|
+
} else {
|
|
1156
|
+
runtime.ctx.showQuotaSelector();
|
|
1157
|
+
}
|
|
1158
|
+
runtime.ctx.editor.setText("");
|
|
1159
|
+
},
|
|
1160
|
+
},
|
|
1161
|
+
{
|
|
1162
|
+
name: "help",
|
|
1163
|
+
description: "Show usage help and all available commands",
|
|
1164
|
+
acpDescription: "List available commands",
|
|
1165
|
+
// Text/ACP path: plain command catalog (builtin only — file/skill
|
|
1166
|
+
// commands are advertised separately via available_commands_update).
|
|
1167
|
+
handle: async (_command, runtime) => {
|
|
1168
|
+
const lines = ACTIVE_BUILTIN_SLASH_COMMAND_REGISTRY.map(
|
|
1169
|
+
cmd => `/${cmd.name} — ${cmd.acpDescription ?? cmd.description}`,
|
|
1170
|
+
);
|
|
1171
|
+
await runtime.output(lines.join("\n"));
|
|
1172
|
+
return commandConsumed();
|
|
1173
|
+
},
|
|
1174
|
+
handleTui: (_command, runtime) => {
|
|
1175
|
+
runtime.ctx.handleHelpCommand();
|
|
1176
|
+
runtime.ctx.editor.setText("");
|
|
1177
|
+
},
|
|
1178
|
+
},
|
|
1179
|
+
{
|
|
1180
|
+
name: "hotkeys",
|
|
1181
|
+
description: "Show all keyboard shortcuts",
|
|
1182
|
+
handleTui: (_command, runtime) => {
|
|
1183
|
+
runtime.ctx.handleHotkeysCommand();
|
|
1184
|
+
runtime.ctx.editor.setText("");
|
|
1185
|
+
},
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
name: "tools",
|
|
1189
|
+
description: "Show tools currently visible to the agent",
|
|
1190
|
+
acpDescription: "Show available tools",
|
|
1191
|
+
handle: async (_command, runtime) => {
|
|
1192
|
+
const active = runtime.session.getActiveToolNames();
|
|
1193
|
+
const all = runtime.session.getAllToolNames();
|
|
1194
|
+
if (all.length === 0) {
|
|
1195
|
+
await runtime.output("No tools are available.");
|
|
1196
|
+
return commandConsumed();
|
|
1197
|
+
}
|
|
1198
|
+
await runtime.output(all.map(name => `${active.includes(name) ? "*" : "-"} ${name}`).join("\n"));
|
|
1199
|
+
return commandConsumed();
|
|
1200
|
+
},
|
|
1201
|
+
handleTui: (_command, runtime) => {
|
|
1202
|
+
runtime.ctx.handleToolsCommand();
|
|
1203
|
+
runtime.ctx.editor.setText("");
|
|
1204
|
+
},
|
|
1205
|
+
},
|
|
1206
|
+
{
|
|
1207
|
+
name: "agents",
|
|
1208
|
+
description: "Open Agent Control Center dashboard",
|
|
1209
|
+
handleTui: (_command, runtime) => {
|
|
1210
|
+
runtime.ctx.showAgentsDashboard();
|
|
1211
|
+
runtime.ctx.editor.setText("");
|
|
1212
|
+
},
|
|
1213
|
+
},
|
|
1214
|
+
{
|
|
1215
|
+
name: "monitors",
|
|
1216
|
+
description: "Open the monitor/cron jobs overlay",
|
|
1217
|
+
handleTui: (_command, runtime) => {
|
|
1218
|
+
runtime.ctx.showJobsOverlay();
|
|
1219
|
+
runtime.ctx.editor.setText("");
|
|
1220
|
+
},
|
|
1221
|
+
},
|
|
1222
|
+
{
|
|
1223
|
+
name: "tree",
|
|
1224
|
+
description: "Navigate session tree (switch branches)",
|
|
1225
|
+
handleTui: (_command, runtime) => {
|
|
1226
|
+
runtime.ctx.showTreeSelector();
|
|
1227
|
+
runtime.ctx.editor.setText("");
|
|
1228
|
+
},
|
|
1229
|
+
},
|
|
1230
|
+
|
|
1231
|
+
{
|
|
1232
|
+
name: "provider",
|
|
1233
|
+
description: "Set up API-compatible providers or login providers",
|
|
1234
|
+
inlineHint: "add|login",
|
|
1235
|
+
allowArgs: true,
|
|
1236
|
+
handle: async (command, runtime) => {
|
|
1237
|
+
const args = command.args.trim();
|
|
1238
|
+
if (!args || args === "help") {
|
|
1239
|
+
await runtime.output(providerSetupUsage());
|
|
1240
|
+
return commandConsumed();
|
|
1241
|
+
}
|
|
1242
|
+
if (args === "login" || args.startsWith("login ")) {
|
|
1243
|
+
await runtime.output(
|
|
1244
|
+
"Use the terminal UI /login selector for browser, device-code, or manual callback provider login.",
|
|
1245
|
+
);
|
|
1246
|
+
return commandConsumed();
|
|
1247
|
+
}
|
|
1248
|
+
if (!args.startsWith("add ")) return usage(providerSetupUsage(), runtime);
|
|
1249
|
+
const parsed = parseProviderSetupSlashArgs(args.slice(4));
|
|
1250
|
+
const missing: string[] = [];
|
|
1251
|
+
if (!parsed.preset) {
|
|
1252
|
+
if (!parsed.compat) missing.push("--compat");
|
|
1253
|
+
if (!parsed.provider) missing.push("--provider");
|
|
1254
|
+
if (!parsed.baseUrl) missing.push("--base-url");
|
|
1255
|
+
}
|
|
1256
|
+
if (parsed.rejectedRawApiKey) {
|
|
1257
|
+
return usage("Provider setup rejects raw --api-key values; use --api-key-env <ENV> instead.", runtime);
|
|
1258
|
+
}
|
|
1259
|
+
if (!parsed.preset) {
|
|
1260
|
+
if (!parsed.apiKeyEnv) missing.push("--api-key-env");
|
|
1261
|
+
if (parsed.models.length === 0) missing.push("--model");
|
|
1262
|
+
}
|
|
1263
|
+
if (missing.length > 0) {
|
|
1264
|
+
return usage(
|
|
1265
|
+
`Missing required option(s): ${missing.join(", ")}. Or use /provider add --preset <preset>.`,
|
|
1266
|
+
runtime,
|
|
1267
|
+
);
|
|
1268
|
+
}
|
|
1269
|
+
try {
|
|
1270
|
+
const result = await addApiCompatibleProvider({
|
|
1271
|
+
compatibility: parsed.compat ? parseProviderCompatibility(parsed.compat) : undefined,
|
|
1272
|
+
preset: parsed.preset,
|
|
1273
|
+
providerId: parsed.provider,
|
|
1274
|
+
baseUrl: parsed.baseUrl,
|
|
1275
|
+
apiKeyEnv: parsed.apiKeyEnv,
|
|
1276
|
+
models: parsed.models,
|
|
1277
|
+
force: parsed.force,
|
|
1278
|
+
});
|
|
1279
|
+
await runtime.session.modelRegistry.refresh("offline");
|
|
1280
|
+
await runtime.output(formatProviderSetupResult(result));
|
|
1281
|
+
await runtime.notifyConfigChanged?.();
|
|
1282
|
+
return commandConsumed();
|
|
1283
|
+
} catch (err) {
|
|
1284
|
+
return usage(`Provider setup failed: ${errorMessage(err)}`, runtime);
|
|
1285
|
+
}
|
|
1286
|
+
},
|
|
1287
|
+
handleTui: async (command, runtime) => {
|
|
1288
|
+
const args = command.args.trim();
|
|
1289
|
+
if (!args) {
|
|
1290
|
+
runtime.ctx.showProviderOnboarding();
|
|
1291
|
+
runtime.ctx.editor.setText("");
|
|
1292
|
+
return;
|
|
1293
|
+
}
|
|
1294
|
+
if (args === "help") {
|
|
1295
|
+
runtime.ctx.showStatus(providerSetupUsage());
|
|
1296
|
+
runtime.ctx.editor.setText("");
|
|
1297
|
+
return;
|
|
1298
|
+
}
|
|
1299
|
+
if (args === "login" || args.startsWith("login ")) {
|
|
1300
|
+
const providerId = args.slice("login".length).trim() || undefined;
|
|
1301
|
+
await runtime.ctx.showOAuthSelector("login", providerId);
|
|
1302
|
+
runtime.ctx.editor.setText("");
|
|
1303
|
+
return;
|
|
1304
|
+
}
|
|
1305
|
+
if (args.startsWith("add ")) {
|
|
1306
|
+
const parsed = parseProviderSetupSlashArgs(args.slice(4));
|
|
1307
|
+
try {
|
|
1308
|
+
if (parsed.rejectedRawApiKey) {
|
|
1309
|
+
throw new Error("Provider setup rejects raw --api-key values; use --api-key-env <ENV> instead.");
|
|
1310
|
+
}
|
|
1311
|
+
const result = await addApiCompatibleProvider({
|
|
1312
|
+
compatibility: parsed.compat ? parseProviderCompatibility(parsed.compat) : undefined,
|
|
1313
|
+
preset: parsed.preset,
|
|
1314
|
+
providerId: parsed.provider,
|
|
1315
|
+
baseUrl: parsed.baseUrl,
|
|
1316
|
+
apiKeyEnv: parsed.apiKeyEnv,
|
|
1317
|
+
models: parsed.models,
|
|
1318
|
+
force: parsed.force,
|
|
1319
|
+
});
|
|
1320
|
+
await runtime.ctx.session.modelRegistry.refresh("offline");
|
|
1321
|
+
runtime.ctx.showStatus(formatProviderSetupResult(result));
|
|
1322
|
+
} catch (err) {
|
|
1323
|
+
runtime.ctx.showError(`Provider setup failed: ${errorMessage(err)}`);
|
|
1324
|
+
}
|
|
1325
|
+
runtime.ctx.editor.setText("");
|
|
1326
|
+
return;
|
|
1327
|
+
}
|
|
1328
|
+
runtime.ctx.showStatus(providerSetupUsage());
|
|
1329
|
+
runtime.ctx.editor.setText("");
|
|
1330
|
+
},
|
|
1331
|
+
},
|
|
1332
|
+
{
|
|
1333
|
+
name: "login",
|
|
1334
|
+
description: "Login with OAuth provider",
|
|
1335
|
+
inlineHint: "[provider|alias [local]|redirect URL]",
|
|
1336
|
+
allowArgs: true,
|
|
1337
|
+
handleTui: (command, runtime) => {
|
|
1338
|
+
const manualInput = runtime.ctx.oauthManualInput;
|
|
1339
|
+
const args = command.args.trim();
|
|
1340
|
+
if (args.length > 0) {
|
|
1341
|
+
const [providerArg = "", modifier = ""] = args.split(/\s+/, 2);
|
|
1342
|
+
const resolvedProviderId = resolveOAuthProviderId(providerArg);
|
|
1343
|
+
if (resolvedProviderId) {
|
|
1344
|
+
const importLocal = modifier === "local";
|
|
1345
|
+
if (modifier && !importLocal) {
|
|
1346
|
+
runtime.ctx.showWarning(
|
|
1347
|
+
`Unknown /login option "${modifier}". Did you mean: /login ${providerArg} local`,
|
|
1348
|
+
);
|
|
1349
|
+
runtime.ctx.editor.setText("");
|
|
1350
|
+
return;
|
|
1351
|
+
}
|
|
1352
|
+
if (importLocal && !LOCAL_IMPORT_PROVIDERS.has(resolvedProviderId)) {
|
|
1353
|
+
runtime.ctx.showWarning(
|
|
1354
|
+
`Local token import is not supported for ${resolvedProviderId}. Supported: ${[...LOCAL_IMPORT_PROVIDERS].join(", ")}.`,
|
|
1355
|
+
);
|
|
1356
|
+
runtime.ctx.editor.setText("");
|
|
1357
|
+
return;
|
|
1358
|
+
}
|
|
1359
|
+
if (manualInput.hasPending()) {
|
|
1360
|
+
const pendingProvider = manualInput.pendingProviderId;
|
|
1361
|
+
const message = pendingProvider
|
|
1362
|
+
? `OAuth login already in progress for ${pendingProvider}. Paste the redirect URL with /login <url>.`
|
|
1363
|
+
: "OAuth login already in progress. Paste the redirect URL with /login <url>.";
|
|
1364
|
+
runtime.ctx.showWarning(message);
|
|
1365
|
+
runtime.ctx.editor.setText("");
|
|
1366
|
+
return;
|
|
1367
|
+
}
|
|
1368
|
+
void runtime.ctx.showOAuthSelector(
|
|
1369
|
+
"login",
|
|
1370
|
+
resolvedProviderId,
|
|
1371
|
+
importLocal ? { importLocal } : undefined,
|
|
1372
|
+
);
|
|
1373
|
+
runtime.ctx.editor.setText("");
|
|
1374
|
+
return;
|
|
1375
|
+
}
|
|
1376
|
+
const submitted = manualInput.submit(args);
|
|
1377
|
+
if (submitted) {
|
|
1378
|
+
runtime.ctx.showStatus("OAuth callback received; completing login…");
|
|
1379
|
+
} else {
|
|
1380
|
+
runtime.ctx.showWarning("No OAuth login is waiting for a manual callback.");
|
|
1381
|
+
}
|
|
1382
|
+
runtime.ctx.editor.setText("");
|
|
1383
|
+
return;
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
if (manualInput.hasPending()) {
|
|
1387
|
+
const provider = manualInput.pendingProviderId;
|
|
1388
|
+
const message = provider
|
|
1389
|
+
? `OAuth login already in progress for ${provider}. Paste the redirect URL with /login <url>.`
|
|
1390
|
+
: "OAuth login already in progress. Paste the redirect URL with /login <url>.";
|
|
1391
|
+
runtime.ctx.showWarning(message);
|
|
1392
|
+
runtime.ctx.editor.setText("");
|
|
1393
|
+
return;
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1396
|
+
runtime.ctx.showProviderOnboarding();
|
|
1397
|
+
runtime.ctx.editor.setText("");
|
|
1398
|
+
},
|
|
1399
|
+
},
|
|
1400
|
+
{
|
|
1401
|
+
name: "logout",
|
|
1402
|
+
description: "Logout from OAuth provider",
|
|
1403
|
+
inlineHint: "[provider]",
|
|
1404
|
+
allowArgs: true,
|
|
1405
|
+
handleTui: (command, runtime) => {
|
|
1406
|
+
const providerId = command.args.trim() || undefined;
|
|
1407
|
+
void runtime.ctx.showOAuthSelector("logout", providerId);
|
|
1408
|
+
runtime.ctx.editor.setText("");
|
|
1409
|
+
},
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
name: "mcp",
|
|
1413
|
+
description: "Manage MCP servers and runtime tools",
|
|
1414
|
+
acpDescription: "Manage MCP servers",
|
|
1415
|
+
acpInputHint: "<subcommand>",
|
|
1416
|
+
subcommands: [
|
|
1417
|
+
{ name: "add", description: "Add a new MCP server" },
|
|
1418
|
+
{ name: "list", description: "List configured MCP servers" },
|
|
1419
|
+
{ name: "remove", description: "Remove an MCP server", usage: "<name> [--scope project|user]" },
|
|
1420
|
+
{ name: "rm", description: "Alias for remove", usage: "<name> [--scope project|user]" },
|
|
1421
|
+
{ name: "test", description: "Test an MCP server connection", usage: "<name>" },
|
|
1422
|
+
{ name: "reauth", description: "Reauthorize OAuth for an MCP server", usage: "<name>" },
|
|
1423
|
+
{ name: "unauth", description: "Remove OAuth auth from an MCP server", usage: "<name>" },
|
|
1424
|
+
{ name: "enable", description: "Enable an MCP server", usage: "<name>" },
|
|
1425
|
+
{ name: "disable", description: "Disable an MCP server", usage: "<name>" },
|
|
1426
|
+
{ name: "resources", description: "List available MCP resources" },
|
|
1427
|
+
{ name: "prompts", description: "List available MCP prompts" },
|
|
1428
|
+
{ name: "notifications", description: "Show MCP notification state" },
|
|
1429
|
+
{ name: "smithery-search", description: "Search Smithery registry", usage: "<keyword>" },
|
|
1430
|
+
{ name: "smithery-login", description: "Login to Smithery" },
|
|
1431
|
+
{ name: "smithery-logout", description: "Remove cached Smithery API key" },
|
|
1432
|
+
{ name: "reconnect", description: "Reconnect an MCP server", usage: "<name>" },
|
|
1433
|
+
{ name: "reload", description: "Reload MCP runtime tools" },
|
|
1434
|
+
{ name: "help", description: "Show MCP help" },
|
|
1435
|
+
],
|
|
1436
|
+
allowArgs: true,
|
|
1437
|
+
handle: handleMcpAcp,
|
|
1438
|
+
handleTui: async (command, runtime) => {
|
|
1439
|
+
runtime.ctx.editor.addToHistory(command.text);
|
|
1440
|
+
runtime.ctx.editor.setText("");
|
|
1441
|
+
await new MCPCommandController(runtime.ctx).handle(command.text);
|
|
1442
|
+
},
|
|
1443
|
+
},
|
|
1444
|
+
{
|
|
1445
|
+
name: "ssh",
|
|
1446
|
+
description: "Manage SSH hosts (add, list, remove)",
|
|
1447
|
+
acpDescription: "Manage SSH connections",
|
|
1448
|
+
inlineHint: "<subcommand>",
|
|
1449
|
+
subcommands: [
|
|
1450
|
+
{
|
|
1451
|
+
name: "add",
|
|
1452
|
+
description: "Add an SSH host",
|
|
1453
|
+
usage: "<name> --host <host> [--user <user>] [--port <port>] [--key <keyPath>]",
|
|
1454
|
+
},
|
|
1455
|
+
{ name: "list", description: "List all configured SSH hosts" },
|
|
1456
|
+
{ name: "remove", description: "Remove an SSH host", usage: "<name> [--scope project|user]" },
|
|
1457
|
+
{ name: "help", description: "Show help message" },
|
|
1458
|
+
],
|
|
1459
|
+
allowArgs: true,
|
|
1460
|
+
handle: handleSshAcp,
|
|
1461
|
+
handleTui: async (command, runtime) => {
|
|
1462
|
+
runtime.ctx.editor.addToHistory(command.text);
|
|
1463
|
+
runtime.ctx.editor.setText("");
|
|
1464
|
+
await runtime.ctx.handleSSHCommand(command.text);
|
|
1465
|
+
},
|
|
1466
|
+
},
|
|
1467
|
+
{
|
|
1468
|
+
name: "new",
|
|
1469
|
+
description: "Start a new session",
|
|
1470
|
+
handleTui: async (_command, runtime) => {
|
|
1471
|
+
runtime.ctx.editor.setText("");
|
|
1472
|
+
await runtime.ctx.handleClearCommand();
|
|
1473
|
+
},
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
name: "drop",
|
|
1477
|
+
description: "Delete the current session and start a new one",
|
|
1478
|
+
handleTui: async (_command, runtime) => {
|
|
1479
|
+
runtime.ctx.editor.setText("");
|
|
1480
|
+
await runtime.ctx.handleDropCommand();
|
|
1481
|
+
},
|
|
1482
|
+
},
|
|
1483
|
+
{
|
|
1484
|
+
name: "compact",
|
|
1485
|
+
description: "Manually compact the session context",
|
|
1486
|
+
acpDescription: "Compact the conversation",
|
|
1487
|
+
inlineHint: "[focus instructions]",
|
|
1488
|
+
allowArgs: true,
|
|
1489
|
+
handle: async (command, runtime) => {
|
|
1490
|
+
const before = runtime.session.getContextUsage?.();
|
|
1491
|
+
const beforeTokens = before?.tokens;
|
|
1492
|
+
try {
|
|
1493
|
+
await runtime.session.compact(command.args || undefined);
|
|
1494
|
+
} catch (err) {
|
|
1495
|
+
// Compaction precondition failures (no model, already compacted, too
|
|
1496
|
+
// small) and provider errors propagate as plain Errors; surface them
|
|
1497
|
+
// via runtime.output so they don't fail the ACP prompt turn.
|
|
1498
|
+
return usage(`Compaction failed: ${errorMessage(err)}`, runtime);
|
|
1499
|
+
}
|
|
1500
|
+
const after = runtime.session.getContextUsage?.();
|
|
1501
|
+
const afterTokens = after?.tokens;
|
|
1502
|
+
if (beforeTokens != null && afterTokens != null) {
|
|
1503
|
+
const saved = beforeTokens - afterTokens;
|
|
1504
|
+
await runtime.output(`Compaction complete. Tokens: ${beforeTokens} -> ${afterTokens} (saved ${saved}).`);
|
|
1505
|
+
} else {
|
|
1506
|
+
await runtime.output("Compaction complete.");
|
|
1507
|
+
}
|
|
1508
|
+
return commandConsumed();
|
|
1509
|
+
},
|
|
1510
|
+
handleTui: async (command, runtime) => {
|
|
1511
|
+
const customInstructions = command.args || undefined;
|
|
1512
|
+
runtime.ctx.editor.setText("");
|
|
1513
|
+
await runtime.ctx.handleCompactCommand(customInstructions);
|
|
1514
|
+
},
|
|
1515
|
+
},
|
|
1516
|
+
{
|
|
1517
|
+
name: "contribute-pr",
|
|
1518
|
+
aliases: ["contribution-prep"],
|
|
1519
|
+
description: "Dump redacted session context and spawn a fresh contribute-pr worker",
|
|
1520
|
+
inlineHint: "[focus instructions]",
|
|
1521
|
+
allowArgs: true,
|
|
1522
|
+
handle: async (command, runtime) => {
|
|
1523
|
+
const result = await runtime.session.prepareContributionPrep({
|
|
1524
|
+
customInstructions: command.args || undefined,
|
|
1525
|
+
spawnWorker: true,
|
|
1526
|
+
});
|
|
1527
|
+
await runtime.output(
|
|
1528
|
+
[
|
|
1529
|
+
"Contribution prep artifacts written.",
|
|
1530
|
+
`Manifest: ${result.manifestPath}`,
|
|
1531
|
+
`Worker prompt: ${result.workerPromptPath}`,
|
|
1532
|
+
].join("\n"),
|
|
1533
|
+
);
|
|
1534
|
+
return commandConsumed();
|
|
1535
|
+
},
|
|
1536
|
+
handleTui: async (command, runtime) => {
|
|
1537
|
+
await runtime.ctx.handleContributionPrepCommand(command.args || undefined);
|
|
1538
|
+
},
|
|
1539
|
+
},
|
|
1540
|
+
{
|
|
1541
|
+
name: "resume",
|
|
1542
|
+
aliases: ["sessions", "switch"],
|
|
1543
|
+
description: "Resume a different session (optionally by id prefix)",
|
|
1544
|
+
inlineHint: "[session id]",
|
|
1545
|
+
allowArgs: true,
|
|
1546
|
+
handleTui: async (command, runtime) => {
|
|
1547
|
+
const sessionArg = command.args.trim();
|
|
1548
|
+
runtime.ctx.editor.setText("");
|
|
1549
|
+
if (!sessionArg) {
|
|
1550
|
+
runtime.ctx.showSessionSelector();
|
|
1551
|
+
return;
|
|
1552
|
+
}
|
|
1553
|
+
await runtime.ctx.handleResumeByIdCommand(sessionArg);
|
|
1554
|
+
},
|
|
1555
|
+
},
|
|
1556
|
+
{
|
|
1557
|
+
name: "fork",
|
|
1558
|
+
description: "Fork the session and switch to the copy (optionally send a message)",
|
|
1559
|
+
inlineHint: "[message]",
|
|
1560
|
+
allowArgs: true,
|
|
1561
|
+
handleTui: async (command, runtime) => {
|
|
1562
|
+
const message = command.args.trim();
|
|
1563
|
+
runtime.ctx.editor.setText("");
|
|
1564
|
+
await runtime.ctx.handleForkCommand(message || undefined);
|
|
1565
|
+
},
|
|
1566
|
+
},
|
|
1567
|
+
{
|
|
1568
|
+
name: "branch",
|
|
1569
|
+
description: "Branch from an earlier user message",
|
|
1570
|
+
handleTui: (_command, runtime) => {
|
|
1571
|
+
runtime.ctx.editor.setText("");
|
|
1572
|
+
runtime.ctx.showUserMessageSelector();
|
|
1573
|
+
},
|
|
1574
|
+
},
|
|
1575
|
+
{
|
|
1576
|
+
name: "btw",
|
|
1577
|
+
description: "Ask an ephemeral side question using the current session context",
|
|
1578
|
+
inlineHint: "<question>",
|
|
1579
|
+
allowArgs: true,
|
|
1580
|
+
handleTui: async (command, runtime) => {
|
|
1581
|
+
const question = command.text.slice(`/${command.name}`.length).trim();
|
|
1582
|
+
runtime.ctx.editor.setText("");
|
|
1583
|
+
await runtime.ctx.handleBtwCommand(question);
|
|
1584
|
+
},
|
|
1585
|
+
},
|
|
1586
|
+
{
|
|
1587
|
+
name: "retry",
|
|
1588
|
+
description: "Retry the last failed agent turn",
|
|
1589
|
+
handleTui: async (_command, runtime) => {
|
|
1590
|
+
const didRetry = await runtime.ctx.session.retry();
|
|
1591
|
+
if (!didRetry) {
|
|
1592
|
+
runtime.ctx.showStatus("Nothing to retry");
|
|
1593
|
+
}
|
|
1594
|
+
runtime.ctx.editor.setText("");
|
|
1595
|
+
},
|
|
1596
|
+
},
|
|
1597
|
+
{
|
|
1598
|
+
name: "background",
|
|
1599
|
+
aliases: ["bg"],
|
|
1600
|
+
description: "Detach UI and continue running in background",
|
|
1601
|
+
handleTui: (_command, runtime) => {
|
|
1602
|
+
runtime.ctx.editor.setText("");
|
|
1603
|
+
runtime.handleBackgroundCommand();
|
|
1604
|
+
},
|
|
1605
|
+
},
|
|
1606
|
+
{
|
|
1607
|
+
name: "debug",
|
|
1608
|
+
description: "Open debug tools selector",
|
|
1609
|
+
handleTui: (_command, runtime) => {
|
|
1610
|
+
runtime.ctx.showDebugSelector();
|
|
1611
|
+
runtime.ctx.editor.setText("");
|
|
1612
|
+
},
|
|
1613
|
+
},
|
|
1614
|
+
{
|
|
1615
|
+
name: "memory",
|
|
1616
|
+
description: "Inspect and operate memory maintenance",
|
|
1617
|
+
acpDescription: "Manage memory",
|
|
1618
|
+
acpInputHint: "<subcommand>",
|
|
1619
|
+
subcommands: [
|
|
1620
|
+
{ name: "view", description: "Show current memory injection payload" },
|
|
1621
|
+
{ name: "clear", description: "Clear persisted memory data and artifacts" },
|
|
1622
|
+
{ name: "reset", description: "Alias for clear" },
|
|
1623
|
+
{ name: "enqueue", description: "Enqueue memory consolidation maintenance" },
|
|
1624
|
+
{ name: "rebuild", description: "Alias for enqueue" },
|
|
1625
|
+
{ name: "mm list", description: "List mental models on the active bank" },
|
|
1626
|
+
{ name: "mm show", description: "Show one mental model (id required)" },
|
|
1627
|
+
{
|
|
1628
|
+
name: "mm refresh",
|
|
1629
|
+
description: "Refresh auto-refresh models bank-wide, or one model by id",
|
|
1630
|
+
},
|
|
1631
|
+
{ name: "mm history", description: "Diff the change history of a mental model" },
|
|
1632
|
+
{ name: "mm seed", description: "Create any built-in mental models that are missing" },
|
|
1633
|
+
{ name: "mm delete", description: "Delete a mental model from the bank (id required)" },
|
|
1634
|
+
{ name: "mm reload", description: "Re-pull the cached <mental_models> block" },
|
|
1635
|
+
],
|
|
1636
|
+
allowArgs: true,
|
|
1637
|
+
handle: async (command, runtime) => {
|
|
1638
|
+
const verb = (command.args.trim().split(/\s+/)[0] ?? "").toLowerCase() || "view";
|
|
1639
|
+
const backend = resolveMemoryBackend(runtime.settings);
|
|
1640
|
+
switch (verb) {
|
|
1641
|
+
case "view": {
|
|
1642
|
+
const payload = await backend.buildDeveloperInstructions(
|
|
1643
|
+
runtime.settings.getAgentDir(),
|
|
1644
|
+
runtime.settings,
|
|
1645
|
+
runtime.session,
|
|
1646
|
+
);
|
|
1647
|
+
await runtime.output(
|
|
1648
|
+
payload || "Memory payload is empty; durable memory is unavailable or unconfirmed.",
|
|
1649
|
+
);
|
|
1650
|
+
return commandConsumed();
|
|
1651
|
+
}
|
|
1652
|
+
case "clear":
|
|
1653
|
+
case "reset": {
|
|
1654
|
+
await backend.clear(runtime.settings.getAgentDir(), runtime.cwd, runtime.session);
|
|
1655
|
+
await runtime.session.refreshBaseSystemPrompt();
|
|
1656
|
+
await runtime.output("Memory cleared.");
|
|
1657
|
+
return commandConsumed();
|
|
1658
|
+
}
|
|
1659
|
+
case "enqueue":
|
|
1660
|
+
case "rebuild": {
|
|
1661
|
+
await backend.enqueue(runtime.settings.getAgentDir(), runtime.cwd, runtime.session);
|
|
1662
|
+
await runtime.output("Memory consolidation enqueued.");
|
|
1663
|
+
return commandConsumed();
|
|
1664
|
+
}
|
|
1665
|
+
case "mm":
|
|
1666
|
+
return usage(
|
|
1667
|
+
"Mental-model maintenance via /memory mm is unsupported in ACP mode; use the hindsight HTTP API directly.",
|
|
1668
|
+
runtime,
|
|
1669
|
+
);
|
|
1670
|
+
default:
|
|
1671
|
+
return usage("Usage: /memory <view|clear|reset|enqueue|rebuild>", runtime);
|
|
1672
|
+
}
|
|
1673
|
+
},
|
|
1674
|
+
handleTui: async (command, runtime) => {
|
|
1675
|
+
runtime.ctx.editor.setText("");
|
|
1676
|
+
await runtime.ctx.handleMemoryCommand(command.text);
|
|
1677
|
+
},
|
|
1678
|
+
},
|
|
1679
|
+
{
|
|
1680
|
+
name: "rename",
|
|
1681
|
+
description: "Rename the current session",
|
|
1682
|
+
inlineHint: "<title>",
|
|
1683
|
+
allowArgs: true,
|
|
1684
|
+
handle: async (command, runtime) => {
|
|
1685
|
+
if (!command.args) return usage("Usage: /rename <title>", runtime);
|
|
1686
|
+
const ok = await runtime.sessionManager.setSessionName(command.args, "user");
|
|
1687
|
+
if (!ok) {
|
|
1688
|
+
await runtime.output("Session name not changed (a user-set name takes precedence).");
|
|
1689
|
+
return commandConsumed();
|
|
1690
|
+
}
|
|
1691
|
+
await runtime.notifyTitleChanged?.();
|
|
1692
|
+
await runtime.output(`Session renamed to ${command.args}.`);
|
|
1693
|
+
return commandConsumed();
|
|
1694
|
+
},
|
|
1695
|
+
handleTui: async (command, runtime) => {
|
|
1696
|
+
const title = command.args.trim();
|
|
1697
|
+
if (!title) {
|
|
1698
|
+
runtime.ctx.showError("Usage: /rename <title>");
|
|
1699
|
+
runtime.ctx.editor.setText("");
|
|
1700
|
+
return;
|
|
1701
|
+
}
|
|
1702
|
+
runtime.ctx.editor.setText("");
|
|
1703
|
+
await runtime.ctx.handleRenameCommand(title);
|
|
1704
|
+
},
|
|
1705
|
+
},
|
|
1706
|
+
{
|
|
1707
|
+
name: "move",
|
|
1708
|
+
description: "Move session to a different working directory",
|
|
1709
|
+
acpDescription: "Move the current session file",
|
|
1710
|
+
inlineHint: "<path>",
|
|
1711
|
+
allowArgs: true,
|
|
1712
|
+
handle: async (command, runtime) => {
|
|
1713
|
+
if (runtime.session.isStreaming) return usage("Cannot move while streaming.", runtime);
|
|
1714
|
+
if (!command.args) return usage("Usage: /move <path>", runtime);
|
|
1715
|
+
const resolvedPath = path.resolve(runtime.cwd, command.args);
|
|
1716
|
+
let isDirectory: boolean;
|
|
1717
|
+
try {
|
|
1718
|
+
isDirectory = (await fs.stat(resolvedPath)).isDirectory();
|
|
1719
|
+
} catch {
|
|
1720
|
+
return usage(`Directory does not exist or is not a directory: ${resolvedPath}`, runtime);
|
|
1721
|
+
}
|
|
1722
|
+
if (!isDirectory) return usage(`Directory does not exist or is not a directory: ${resolvedPath}`, runtime);
|
|
1723
|
+
try {
|
|
1724
|
+
await runtime.sessionManager.flush();
|
|
1725
|
+
await runtime.sessionManager.moveTo(resolvedPath);
|
|
1726
|
+
} catch (err) {
|
|
1727
|
+
return usage(`Move failed: ${errorMessage(err)}`, runtime);
|
|
1728
|
+
}
|
|
1729
|
+
setProjectDir(resolvedPath);
|
|
1730
|
+
// Reload plugin/capability caches so the next prompt sees commands and
|
|
1731
|
+
// capabilities scoped to the new cwd.
|
|
1732
|
+
await runtime.reloadPlugins();
|
|
1733
|
+
await runtime.notifyTitleChanged?.();
|
|
1734
|
+
await runtime.output(`Session moved to ${runtime.sessionManager.getCwd()}.`);
|
|
1735
|
+
return commandConsumed();
|
|
1736
|
+
},
|
|
1737
|
+
handleTui: async (command, runtime) => {
|
|
1738
|
+
const targetPath = command.args;
|
|
1739
|
+
if (!targetPath) {
|
|
1740
|
+
runtime.ctx.showError("Usage: /move <path>");
|
|
1741
|
+
runtime.ctx.editor.setText("");
|
|
1742
|
+
return;
|
|
1743
|
+
}
|
|
1744
|
+
runtime.ctx.editor.setText("");
|
|
1745
|
+
await runtime.ctx.handleMoveCommand(targetPath);
|
|
1746
|
+
},
|
|
1747
|
+
},
|
|
1748
|
+
{
|
|
1749
|
+
name: "exit",
|
|
1750
|
+
description: "Exit the application",
|
|
1751
|
+
handleTui: shutdownHandlerTui,
|
|
1752
|
+
},
|
|
1753
|
+
];
|
|
1754
|
+
|
|
1755
|
+
const QUARANTINED_UTILITY_SLASH_COMMANDS = new Set(["agents"]);
|
|
1756
|
+
|
|
1757
|
+
/** Jaw-brand-only slash surface (D050-24) — hidden for env-unset engine runs. */
|
|
1758
|
+
const JAW_ONLY_SLASH_COMMANDS = new Set(["orchestrate"]);
|
|
1759
|
+
|
|
1760
|
+
const ACTIVE_BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = BUILTIN_SLASH_COMMAND_REGISTRY.filter(
|
|
1761
|
+
command =>
|
|
1762
|
+
!QUARANTINED_UTILITY_SLASH_COMMANDS.has(command.name) &&
|
|
1763
|
+
(isJawBrand() || !JAW_ONLY_SLASH_COMMANDS.has(command.name)),
|
|
1764
|
+
);
|
|
1765
|
+
|
|
1766
|
+
const BUILTIN_SLASH_COMMAND_LOOKUP = new Map<string, SlashCommandSpec>();
|
|
1767
|
+
for (const command of ACTIVE_BUILTIN_SLASH_COMMAND_REGISTRY) {
|
|
1768
|
+
BUILTIN_SLASH_COMMAND_LOOKUP.set(command.name, command);
|
|
1769
|
+
for (const alias of command.aliases ?? []) {
|
|
1770
|
+
BUILTIN_SLASH_COMMAND_LOOKUP.set(alias, command);
|
|
1771
|
+
}
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
export function formatUnknownBuiltinSlashCommandDiagnostic(commandName: string): string | undefined {
|
|
1775
|
+
if (commandName !== "provicer") return undefined;
|
|
1776
|
+
return [
|
|
1777
|
+
"Unknown slash command: /provicer.",
|
|
1778
|
+
"Did you mean /provider?",
|
|
1779
|
+
"Run: /provider add --compat <openai|anthropic> --provider <id> --base-url <url> --api-key-env <ENV> --model <model>",
|
|
1780
|
+
].join("\n");
|
|
1781
|
+
}
|
|
1782
|
+
|
|
1783
|
+
/** Builtin command metadata used for slash-command autocomplete and help text. */
|
|
1784
|
+
export const BUILTIN_SLASH_COMMAND_DEFS: ReadonlyArray<BuiltinSlashCommand> = ACTIVE_BUILTIN_SLASH_COMMAND_REGISTRY.map(
|
|
1785
|
+
command => ({
|
|
1786
|
+
name: command.name,
|
|
1787
|
+
aliases: command.aliases,
|
|
1788
|
+
description: command.description,
|
|
1789
|
+
subcommands: command.subcommands,
|
|
1790
|
+
inlineHint: command.inlineHint,
|
|
1791
|
+
}),
|
|
1792
|
+
);
|
|
1793
|
+
|
|
1794
|
+
/**
|
|
1795
|
+
* Unified registry exposed for cross-mode tooling. Each spec carries at least
|
|
1796
|
+
* one of `handle` / `handleTui`. The TUI dispatcher prefers `handleTui`; the
|
|
1797
|
+
* ACP dispatcher requires `handle` and skips TUI-only entries.
|
|
1798
|
+
*/
|
|
1799
|
+
export const BUILTIN_SLASH_COMMANDS_INTERNAL: ReadonlyArray<SlashCommandSpec> = ACTIVE_BUILTIN_SLASH_COMMAND_REGISTRY;
|
|
1800
|
+
|
|
1801
|
+
/**
|
|
1802
|
+
* Execute a builtin slash command in the interactive TUI.
|
|
1803
|
+
*
|
|
1804
|
+
* Returns `false` when no builtin matched. Returns `true` when a command
|
|
1805
|
+
* consumed the input entirely. Returns a `string` when the command was handled
|
|
1806
|
+
* but remaining text should be sent as a prompt.
|
|
1807
|
+
*/
|
|
1808
|
+
export async function executeBuiltinSlashCommand(
|
|
1809
|
+
text: string,
|
|
1810
|
+
runtime: BuiltinSlashCommandRuntime,
|
|
1811
|
+
): Promise<string | boolean> {
|
|
1812
|
+
const parsed = parseSlashCommand(text);
|
|
1813
|
+
if (!parsed) return false;
|
|
1814
|
+
|
|
1815
|
+
const command = BUILTIN_SLASH_COMMAND_LOOKUP.get(parsed.name);
|
|
1816
|
+
if (!command) {
|
|
1817
|
+
const diagnostic = formatUnknownBuiltinSlashCommandDiagnostic(parsed.name);
|
|
1818
|
+
if (!diagnostic) return false;
|
|
1819
|
+
runtime.ctx.showError(diagnostic);
|
|
1820
|
+
runtime.ctx.editor.setText("");
|
|
1821
|
+
return true;
|
|
1822
|
+
}
|
|
1823
|
+
if (parsed.args.length > 0 && !command.allowArgs) {
|
|
1824
|
+
return false;
|
|
1825
|
+
}
|
|
1826
|
+
if (command.handleTui) {
|
|
1827
|
+
const result = await command.handleTui(parsed, runtime);
|
|
1828
|
+
if (result && typeof result === "object" && "prompt" in result) return result.prompt;
|
|
1829
|
+
return true;
|
|
1830
|
+
}
|
|
1831
|
+
if (command.handle) {
|
|
1832
|
+
// No TUI-specific override → adapt the ACP/text-mode `handle` to the
|
|
1833
|
+
// TUI. Spec authors get a single body usable from either dispatcher
|
|
1834
|
+
// without forcing every TUI test to construct the full
|
|
1835
|
+
// `SlashCommandRuntime` shape.
|
|
1836
|
+
const ctx = runtime.ctx;
|
|
1837
|
+
const result = await command.handle(parsed, adaptTuiSlashRuntime(ctx));
|
|
1838
|
+
ctx.editor.setText("");
|
|
1839
|
+
if (result && typeof result === "object" && "prompt" in result) return result.prompt;
|
|
1840
|
+
return true;
|
|
1841
|
+
}
|
|
1842
|
+
return false;
|
|
1843
|
+
}
|
|
1844
|
+
|
|
1845
|
+
/**
|
|
1846
|
+
* Adapt an interactive-mode context to the text/ACP `SlashCommandRuntime`
|
|
1847
|
+
* shape: `output` routes through `ctx.showStatus` and plugin reload reuses the
|
|
1848
|
+
* active session's pipeline. Shared by the TUI dispatcher's `handle` adapter
|
|
1849
|
+
* and by `handleTui` bodies that delegate their args form to `handle`.
|
|
1850
|
+
*/
|
|
1851
|
+
function adaptTuiSlashRuntime(ctx: InteractiveModeContext): SlashCommandRuntime {
|
|
1852
|
+
return {
|
|
1853
|
+
session: ctx.session,
|
|
1854
|
+
sessionManager: ctx.sessionManager,
|
|
1855
|
+
settings: ctx.settings,
|
|
1856
|
+
cwd: ctx.sessionManager.getCwd(),
|
|
1857
|
+
output: (text: string) => {
|
|
1858
|
+
ctx.showStatus(text);
|
|
1859
|
+
},
|
|
1860
|
+
refreshCommands: () => ctx.refreshSlashCommandState(),
|
|
1861
|
+
reloadPlugins: async () => {
|
|
1862
|
+
const projectPath = await resolveActiveProjectRegistryPath(ctx.sessionManager.getCwd());
|
|
1863
|
+
clearPluginRootsAndCaches(projectPath ? [projectPath] : undefined);
|
|
1864
|
+
await ctx.refreshSlashCommandState();
|
|
1865
|
+
await ctx.session.refreshSshTool({ activateIfAvailable: true });
|
|
1866
|
+
},
|
|
1867
|
+
// Forward config-change notifications so `handle`-only commands that
|
|
1868
|
+
// mutate settings (e.g. /searchengine) reach TUI consumers, matching
|
|
1869
|
+
// the ACP dispatcher which wires this through.
|
|
1870
|
+
notifyConfigChanged: ctx.notifyConfigChanged ? () => ctx.notifyConfigChanged?.() : undefined,
|
|
1871
|
+
};
|
|
1872
|
+
}
|
|
1873
|
+
|
|
1874
|
+
/** Look up a unified spec by name or alias. Used by the ACP dispatcher. */
|
|
1875
|
+
export function lookupBuiltinSlashCommand(name: string): SlashCommandSpec | undefined {
|
|
1876
|
+
return BUILTIN_SLASH_COMMAND_LOOKUP.get(name);
|
|
1877
|
+
}
|
|
1878
|
+
|
|
1879
|
+
export type { ParsedSlashCommand, SlashCommandResult, SlashCommandRuntime, SlashCommandSpec, TuiSlashCommandRuntime };
|