@oh-my-pi-zen/pi-coding-agent 16.3.6-zen.1
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 +13088 -0
- package/README.md +35 -0
- package/dist/cli.js +22542 -0
- package/dist/types/advisor/__tests__/advisor.test.d.ts +1 -0
- package/dist/types/advisor/__tests__/config.test.d.ts +1 -0
- package/dist/types/advisor/__tests__/emission-guard.test.d.ts +1 -0
- package/dist/types/advisor/advise-tool.d.ts +106 -0
- package/dist/types/advisor/config.d.ts +90 -0
- package/dist/types/advisor/emission-guard.d.ts +73 -0
- package/dist/types/advisor/index.d.ts +6 -0
- package/dist/types/advisor/runtime.d.ts +76 -0
- package/dist/types/advisor/transcript-recorder.d.ts +63 -0
- package/dist/types/advisor/watchdog.d.ts +38 -0
- package/dist/types/async/index.d.ts +1 -0
- package/dist/types/async/job-manager.d.ts +121 -0
- package/dist/types/auto-thinking/classifier.d.ts +37 -0
- package/dist/types/autolearn/controller.d.ts +25 -0
- package/dist/types/autolearn/managed-skills.d.ts +45 -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 +27 -0
- package/dist/types/autoresearch/tools/log-experiment.d.ts +21 -0
- package/dist/types/autoresearch/tools/run-experiment.d.ts +7 -0
- package/dist/types/autoresearch/tools/update-notes.d.ts +11 -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 +47 -0
- package/dist/types/capability/prompt.d.ts +15 -0
- package/dist/types/capability/rule-buckets.d.ts +30 -0
- package/dist/types/capability/rule.d.ts +73 -0
- package/dist/types/capability/settings.d.ts +15 -0
- package/dist/types/capability/skill.d.ts +43 -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 +77 -0
- package/dist/types/cli/auth-broker-cli.d.ts +25 -0
- package/dist/types/cli/auth-gateway-cli.d.ts +26 -0
- package/dist/types/cli/bench-cli.d.ts +85 -0
- package/dist/types/cli/classify-install-target.d.ts +12 -0
- package/dist/types/cli/claude-trace-cli.d.ts +54 -0
- package/dist/types/cli/commands/init-xdg.d.ts +1 -0
- package/dist/types/cli/completion-gen.d.ts +80 -0
- package/dist/types/cli/config-cli.d.ts +22 -0
- package/dist/types/cli/dry-balance-cli.d.ts +113 -0
- package/dist/types/cli/extension-flags.d.ts +36 -0
- package/dist/types/cli/file-processor.d.ts +11 -0
- package/dist/types/cli/flag-tables.d.ts +144 -0
- package/dist/types/cli/gallery-cli.d.ts +49 -0
- package/dist/types/cli/gallery-fixtures/agentic.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/codeintel.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/edit.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/fs.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/index.d.ts +4 -0
- package/dist/types/cli/gallery-fixtures/interaction.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/memory.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/misc.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/search.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/shell.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/types.d.ts +55 -0
- package/dist/types/cli/gallery-fixtures/web.d.ts +2 -0
- package/dist/types/cli/gallery-screenshot.d.ts +35 -0
- package/dist/types/cli/gc-cli.d.ts +58 -0
- package/dist/types/cli/grep-cli.d.ts +17 -0
- package/dist/types/cli/grievances-cli.d.ts +37 -0
- package/dist/types/cli/initial-message.d.ts +17 -0
- package/dist/types/cli/models-cli.d.ts +49 -0
- package/dist/types/cli/plugin-cli.d.ts +32 -0
- package/dist/types/cli/profile-alias.d.ts +29 -0
- package/dist/types/cli/profile-bootstrap.d.ts +55 -0
- package/dist/types/cli/read-cli.d.ts +4 -0
- package/dist/types/cli/session-picker.d.ts +11 -0
- package/dist/types/cli/setup-cli.d.ts +24 -0
- package/dist/types/cli/setup-model-picker.d.ts +14 -0
- package/dist/types/cli/shell-cli.d.ts +8 -0
- package/dist/types/cli/ssh-cli.d.ts +21 -0
- package/dist/types/cli/startup-cwd.d.ts +2 -0
- package/dist/types/cli/stats-cli.d.ts +17 -0
- package/dist/types/cli/tiny-models-cli.d.ts +11 -0
- package/dist/types/cli/ttsr-cli.d.ts +39 -0
- package/dist/types/cli/update-cli.d.ts +106 -0
- package/dist/types/cli/update-cli.test.d.ts +1 -0
- package/dist/types/cli/usage-cli.d.ts +95 -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-commands.d.ts +33 -0
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/collab/crypto.d.ts +7 -0
- package/dist/types/collab/display-name.d.ts +3 -0
- package/dist/types/collab/guest.d.ts +52 -0
- package/dist/types/collab/host.d.ts +43 -0
- package/dist/types/collab/protocol.d.ts +143 -0
- package/dist/types/collab/relay-client.d.ts +22 -0
- package/dist/types/collab/replication-shrink.d.ts +39 -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 +35 -0
- package/dist/types/commands/bench.d.ts +37 -0
- package/dist/types/commands/commit.d.ts +27 -0
- package/dist/types/commands/complete.d.ts +6 -0
- package/dist/types/commands/completions.d.ts +13 -0
- package/dist/types/commands/config.d.ts +30 -0
- package/dist/types/commands/dry-balance.d.ts +31 -0
- package/dist/types/commands/gallery.d.ts +47 -0
- package/dist/types/commands/gc.d.ts +37 -0
- package/dist/types/commands/grep.d.ts +42 -0
- package/dist/types/commands/grievances.d.ts +40 -0
- package/dist/types/commands/install.d.ts +51 -0
- package/dist/types/commands/join.d.ts +12 -0
- package/dist/types/commands/launch.d.ts +148 -0
- package/dist/types/commands/models.d.ts +33 -0
- package/dist/types/commands/plugin.d.ts +52 -0
- package/dist/types/commands/read.d.ts +15 -0
- package/dist/types/commands/say.d.ts +24 -0
- package/dist/types/commands/setup.d.ts +34 -0
- package/dist/types/commands/shell.d.ts +21 -0
- package/dist/types/commands/ssh.d.ts +48 -0
- package/dist/types/commands/stats.d.ts +25 -0
- package/dist/types/commands/tiny-models.d.ts +22 -0
- package/dist/types/commands/token.d.ts +34 -0
- package/dist/types/commands/ttsr.d.ts +57 -0
- package/dist/types/commands/update.d.ts +25 -0
- package/dist/types/commands/usage.d.ts +34 -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 +18 -0
- package/dist/types/commit/agentic/tools/git-file-diff.d.ts +9 -0
- package/dist/types/commit/agentic/tools/git-hunk.d.ts +8 -0
- package/dist/types/commit/agentic/tools/git-overview.d.ts +8 -0
- package/dist/types/commit/agentic/tools/index.d.ts +16 -0
- package/dist/types/commit/agentic/tools/propose-changelog.d.ts +27 -0
- package/dist/types/commit/agentic/tools/propose-commit.d.ts +15 -0
- package/dist/types/commit/agentic/tools/recent-commits.d.ts +6 -0
- package/dist/types/commit/agentic/tools/schemas.d.ts +6 -0
- package/dist/types/commit/agentic/tools/split-commit.d.ts +32 -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 +29 -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 +26 -0
- package/dist/types/commit/pipeline.d.ts +5 -0
- package/dist/types/commit/shared-llm.d.ts +27 -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/api-key-resolver.d.ts +43 -0
- package/dist/types/config/append-only-context-mode.d.ts +9 -0
- package/dist/types/config/config-file.d.ts +62 -0
- package/dist/types/config/file-lock.d.ts +29 -0
- package/dist/types/config/inline-tool-descriptors-mode.d.ts +12 -0
- package/dist/types/config/keybindings.d.ts +362 -0
- package/dist/types/config/model-discovery.d.ts +68 -0
- package/dist/types/config/model-registry.d.ts +251 -0
- package/dist/types/config/model-resolver.d.ts +300 -0
- package/dist/types/config/model-roles.d.ts +29 -0
- package/dist/types/config/models-config-schema.d.ts +697 -0
- package/dist/types/config/models-config.d.ts +436 -0
- package/dist/types/config/prompt-templates.d.ts +32 -0
- package/dist/types/config/provider-globals.d.ts +7 -0
- package/dist/types/config/resolve-config-value.d.ts +17 -0
- package/dist/types/config/service-tier.d.ts +49 -0
- package/dist/types/config/settings-schema.d.ts +5668 -0
- package/dist/types/config/settings.d.ts +181 -0
- package/dist/types/config.d.ts +92 -0
- package/dist/types/cursor.d.ts +22 -0
- package/dist/types/dap/client.d.ts +46 -0
- package/dist/types/dap/config.d.ts +19 -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 +534 -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 +69 -0
- package/dist/types/debug/profiler.d.ts +24 -0
- package/dist/types/debug/protocol-probe.d.ts +38 -0
- package/dist/types/debug/raw-sse-buffer.d.ts +44 -0
- package/dist/types/debug/raw-sse.d.ts +19 -0
- package/dist/types/debug/remote-debugger.d.ts +45 -0
- package/dist/types/debug/report-bundle.d.ts +58 -0
- package/dist/types/debug/system-info.d.ts +26 -0
- package/dist/types/debug/terminal-info.d.ts +33 -0
- package/dist/types/discovery/agents-md.d.ts +1 -0
- package/dist/types/discovery/agents.d.ts +12 -0
- package/dist/types/discovery/at-imports.d.ts +15 -0
- package/dist/types/discovery/builtin-defaults.d.ts +1 -0
- package/dist/types/discovery/builtin-rules/index.d.ts +7 -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/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 +53 -0
- package/dist/types/discovery/mcp-json.d.ts +1 -0
- package/dist/types/discovery/omp-extension-roots.d.ts +43 -0
- package/dist/types/discovery/omp-plugins.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 +1 -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 +60 -0
- package/dist/types/edit/file-snapshot-store.d.ts +74 -0
- package/dist/types/edit/hashline/block-resolver.d.ts +9 -0
- package/dist/types/edit/hashline/diff.d.ts +29 -0
- package/dist/types/edit/hashline/execute.d.ts +28 -0
- package/dist/types/edit/hashline/filesystem.d.ts +43 -0
- package/dist/types/edit/hashline/index.d.ts +5 -0
- package/dist/types/edit/hashline/noop-loop-guard.d.ts +72 -0
- package/dist/types/edit/hashline/params.d.ts +4 -0
- package/dist/types/edit/index.d.ts +83 -0
- package/dist/types/edit/modes/apply-patch.d.ts +23 -0
- package/dist/types/edit/modes/patch.d.ts +101 -0
- package/dist/types/edit/modes/replace.d.ts +141 -0
- package/dist/types/edit/normalize.d.ts +31 -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 +118 -0
- package/dist/types/edit/snapshot-details.d.ts +33 -0
- package/dist/types/edit/streaming.d.ts +105 -0
- package/dist/types/eval/__tests__/agent-bridge.test.d.ts +1 -0
- package/dist/types/eval/__tests__/bridge-timeout.test.d.ts +1 -0
- package/dist/types/eval/__tests__/budget-bridge.test.d.ts +1 -0
- package/dist/types/eval/__tests__/completion-bridge.test.d.ts +1 -0
- package/dist/types/eval/__tests__/helpers-local-roots.test.d.ts +1 -0
- package/dist/types/eval/__tests__/idle-timeout.test.d.ts +1 -0
- package/dist/types/eval/__tests__/js-context-manager.test.d.ts +1 -0
- package/dist/types/eval/__tests__/julia-prelude.test.d.ts +1 -0
- package/dist/types/eval/__tests__/kernel-spawn.test.d.ts +1 -0
- package/dist/types/eval/__tests__/prelude-agent.test.d.ts +1 -0
- package/dist/types/eval/agent-bridge.d.ts +48 -0
- package/dist/types/eval/backend-helpers.d.ts +23 -0
- package/dist/types/eval/backend.d.ts +60 -0
- package/dist/types/eval/bridge-timeout.d.ts +27 -0
- package/dist/types/eval/budget-bridge.d.ts +29 -0
- package/dist/types/eval/completion-bridge.d.ts +25 -0
- package/dist/types/eval/concurrency-bridge.d.ts +26 -0
- package/dist/types/eval/executor-base.d.ts +118 -0
- package/dist/types/eval/idle-timeout.d.ts +26 -0
- package/dist/types/eval/index.d.ts +6 -0
- package/dist/types/eval/jl/executor.d.ts +44 -0
- package/dist/types/eval/jl/index.d.ts +11 -0
- package/dist/types/eval/jl/kernel.d.ts +28 -0
- package/dist/types/eval/jl/prelude.d.ts +1 -0
- package/dist/types/eval/jl/runtime.d.ts +22 -0
- package/dist/types/eval/js/context-manager.d.ts +40 -0
- package/dist/types/eval/js/executor.d.ts +38 -0
- package/dist/types/eval/js/index.d.ts +11 -0
- package/dist/types/eval/js/shared/helpers.d.ts +32 -0
- package/dist/types/eval/js/shared/indirect-eval.d.ts +14 -0
- package/dist/types/eval/js/shared/local-module-loader.d.ts +16 -0
- package/dist/types/eval/js/shared/prelude.d.ts +1 -0
- package/dist/types/eval/js/shared/rewrite-imports.d.ts +25 -0
- package/dist/types/eval/js/shared/runtime.d.ts +59 -0
- package/dist/types/eval/js/shared/types.d.ts +24 -0
- package/dist/types/eval/js/tool-bridge.d.ts +20 -0
- package/dist/types/eval/js/worker-core.d.ts +6 -0
- package/dist/types/eval/js/worker-entry.d.ts +1 -0
- package/dist/types/eval/js/worker-protocol.d.ts +83 -0
- package/dist/types/eval/kernel-base.d.ts +105 -0
- package/dist/types/eval/py/__tests__/prelude.test.d.ts +1 -0
- package/dist/types/eval/py/__tests__/runner-shell-output.test.d.ts +1 -0
- package/dist/types/eval/py/display.d.ts +25 -0
- package/dist/types/eval/py/executor.d.ts +107 -0
- package/dist/types/eval/py/index.d.ts +11 -0
- package/dist/types/eval/py/kernel.d.ts +17 -0
- package/dist/types/eval/py/prelude.d.ts +1 -0
- package/dist/types/eval/py/runtime.d.ts +40 -0
- package/dist/types/eval/py/spawn-options.d.ts +58 -0
- package/dist/types/eval/py/tool-bridge.d.ts +16 -0
- package/dist/types/eval/rb/executor.d.ts +77 -0
- package/dist/types/eval/rb/index.d.ts +11 -0
- package/dist/types/eval/rb/kernel.d.ts +31 -0
- package/dist/types/eval/rb/prelude.d.ts +1 -0
- package/dist/types/eval/rb/runtime.d.ts +23 -0
- package/dist/types/eval/runtime-env.d.ts +24 -0
- package/dist/types/eval/session-id.d.ts +3 -0
- package/dist/types/eval/types.d.ts +52 -0
- package/dist/types/exa/index.d.ts +2 -0
- package/dist/types/exa/mcp-client.d.ts +53 -0
- package/dist/types/exa/types.d.ts +72 -0
- package/dist/types/exec/bash-executor.d.ts +45 -0
- package/dist/types/exec/exec.d.ts +25 -0
- package/dist/types/exec/non-interactive-env.d.ts +3 -0
- package/dist/types/export/custom-share.d.ts +19 -0
- package/dist/types/export/html/index.d.ts +78 -0
- package/dist/types/export/html/web-palette.d.ts +117 -0
- package/dist/types/export/share.d.ts +55 -0
- package/dist/types/export/ttsr.d.ts +67 -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 +112 -0
- package/dist/types/extensibility/custom-tools/index.d.ts +6 -0
- package/dist/types/extensibility/custom-tools/loader.d.ts +89 -0
- package/dist/types/extensibility/custom-tools/types.d.ts +244 -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 +59 -0
- package/dist/types/extensibility/extensions/model-api.d.ts +17 -0
- package/dist/types/extensibility/extensions/runner.d.ts +161 -0
- package/dist/types/extensibility/extensions/types.d.ts +962 -0
- package/dist/types/extensibility/extensions/wrapper.d.ts +54 -0
- package/dist/types/extensibility/hooks/index.d.ts +6 -0
- package/dist/types/extensibility/hooks/loader.d.ts +65 -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 +442 -0
- package/dist/types/extensibility/legacy-pi-ai-shim.d.ts +35 -0
- package/dist/types/extensibility/legacy-pi-coding-agent-shim.d.ts +115 -0
- package/dist/types/extensibility/plugins/doctor.d.ts +3 -0
- package/dist/types/extensibility/plugins/git-url.d.ts +44 -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-bundled-keys.d.ts +10 -0
- package/dist/types/extensibility/plugins/legacy-pi-bundled-registry.d.ts +10 -0
- package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +79 -0
- package/dist/types/extensibility/plugins/loader.d.ts +59 -0
- package/dist/types/extensibility/plugins/manager.d.ts +76 -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 +131 -0
- package/dist/types/extensibility/plugins/marketplace-auto-update.d.ts +8 -0
- package/dist/types/extensibility/plugins/parser.d.ts +53 -0
- package/dist/types/extensibility/plugins/runtime-config.d.ts +3 -0
- package/dist/types/extensibility/plugins/types.d.ts +149 -0
- package/dist/types/extensibility/session-handler-types.d.ts +23 -0
- package/dist/types/extensibility/shared-events.d.ts +308 -0
- package/dist/types/extensibility/skills.d.ts +97 -0
- package/dist/types/extensibility/slash-commands.d.ts +38 -0
- package/dist/types/extensibility/tool-event-input.d.ts +9 -0
- package/dist/types/extensibility/tool-proxy.d.ts +4 -0
- package/dist/types/extensibility/typebox.d.ts +177 -0
- package/dist/types/extensibility/utils.d.ts +24 -0
- package/dist/types/goals/guided-setup.d.ts +18 -0
- package/dist/types/goals/index.d.ts +3 -0
- package/dist/types/goals/runtime.d.ts +69 -0
- package/dist/types/goals/state.d.ts +35 -0
- package/dist/types/goals/tools/goal-tool.d.ts +53 -0
- package/dist/types/hindsight/backend.d.ts +13 -0
- package/dist/types/hindsight/bank.d.ts +62 -0
- package/dist/types/hindsight/client.d.ts +228 -0
- package/dist/types/hindsight/client.test.d.ts +1 -0
- package/dist/types/hindsight/config.d.ts +51 -0
- package/dist/types/hindsight/content.d.ts +73 -0
- package/dist/types/hindsight/index.d.ts +8 -0
- package/dist/types/hindsight/mental-models.d.ts +134 -0
- package/dist/types/hindsight/state.d.ts +105 -0
- package/dist/types/hindsight/transcript.d.ts +28 -0
- package/dist/types/index.d.ts +43 -0
- package/dist/types/internal-urls/__tests__/ssh-protocol.test.d.ts +1 -0
- package/dist/types/internal-urls/agent-protocol.d.ts +13 -0
- package/dist/types/internal-urls/artifact-protocol.d.ts +15 -0
- package/dist/types/internal-urls/docs-index.d.ts +19 -0
- package/dist/types/internal-urls/filesystem-resource.d.ts +9 -0
- package/dist/types/internal-urls/history-protocol.d.ts +14 -0
- package/dist/types/internal-urls/index.d.ts +25 -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/local-protocol.d.ts +79 -0
- package/dist/types/internal-urls/mcp-protocol.d.ts +12 -0
- package/dist/types/internal-urls/memory-protocol.d.ts +24 -0
- package/dist/types/internal-urls/omp-protocol.d.ts +13 -0
- package/dist/types/internal-urls/parse.d.ts +19 -0
- package/dist/types/internal-urls/registry-helpers.d.ts +12 -0
- package/dist/types/internal-urls/router.d.ts +21 -0
- package/dist/types/internal-urls/rule-protocol.d.ts +7 -0
- package/dist/types/internal-urls/skill-protocol.d.ts +14 -0
- package/dist/types/internal-urls/ssh-protocol.d.ts +10 -0
- package/dist/types/internal-urls/types.d.ts +175 -0
- package/dist/types/internal-urls/vault-protocol.d.ts +93 -0
- package/dist/types/irc/bus.d.ts +86 -0
- package/dist/types/jsonrpc/message-framing.d.ts +35 -0
- package/dist/types/lib/xai-http.d.ts +40 -0
- package/dist/types/lsp/client.d.ts +84 -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 +69 -0
- package/dist/types/lsp/diagnostics-ledger.d.ts +10 -0
- package/dist/types/lsp/edits.d.ts +34 -0
- package/dist/types/lsp/format-options.d.ts +32 -0
- package/dist/types/lsp/index.d.ts +120 -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 +300 -0
- package/dist/types/lsp/utils.d.ts +116 -0
- package/dist/types/main.d.ts +70 -0
- package/dist/types/markit/converters/docx.d.ts +6 -0
- package/dist/types/markit/converters/epub.d.ts +15 -0
- package/dist/types/markit/converters/pdf/columns.d.ts +35 -0
- package/dist/types/markit/converters/pdf/extract.d.ts +10 -0
- package/dist/types/markit/converters/pdf/grid.d.ts +25 -0
- package/dist/types/markit/converters/pdf/headers.d.ts +24 -0
- package/dist/types/markit/converters/pdf/index.d.ts +6 -0
- package/dist/types/markit/converters/pdf/render.d.ts +24 -0
- package/dist/types/markit/converters/pdf/types.d.ts +75 -0
- package/dist/types/markit/converters/pptx.d.ts +57 -0
- package/dist/types/markit/converters/xlsx.d.ts +25 -0
- package/dist/types/markit/index.d.ts +2 -0
- package/dist/types/markit/registry.d.ts +16 -0
- package/dist/types/markit/types.d.ts +30 -0
- package/dist/types/mcp/client.d.ts +83 -0
- package/dist/types/mcp/config-writer.d.ts +101 -0
- package/dist/types/mcp/config.d.ts +75 -0
- package/dist/types/mcp/index.d.ts +18 -0
- package/dist/types/mcp/json-rpc.d.ts +32 -0
- package/dist/types/mcp/loader.d.ts +44 -0
- package/dist/types/mcp/manager.d.ts +215 -0
- package/dist/types/mcp/oauth-credentials.d.ts +17 -0
- package/dist/types/mcp/oauth-discovery.d.ts +65 -0
- package/dist/types/mcp/oauth-flow.d.ts +145 -0
- package/dist/types/mcp/render.d.ts +25 -0
- package/dist/types/mcp/smithery-auth.d.ts +16 -0
- package/dist/types/mcp/smithery-connect.d.ts +38 -0
- package/dist/types/mcp/smithery-registry.d.ts +52 -0
- package/dist/types/mcp/smithery-registry.test.d.ts +1 -0
- package/dist/types/mcp/startup-events.d.ts +28 -0
- package/dist/types/mcp/timeout.d.ts +9 -0
- package/dist/types/mcp/tool-bridge.d.ts +95 -0
- package/dist/types/mcp/tool-cache.d.ts +8 -0
- package/dist/types/mcp/transports/http.d.ts +45 -0
- package/dist/types/mcp/transports/index.d.ts +6 -0
- package/dist/types/mcp/transports/sse.d.ts +20 -0
- package/dist/types/mcp/transports/stdio.d.ts +108 -0
- package/dist/types/mcp/transports/stdio.test.d.ts +1 -0
- package/dist/types/mcp/types.d.ts +340 -0
- package/dist/types/memories/index.d.ts +54 -0
- package/dist/types/memories/storage.d.ts +110 -0
- package/dist/types/memory-backend/index.d.ts +7 -0
- package/dist/types/memory-backend/local-backend.d.ts +10 -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/runtime.d.ts +4 -0
- package/dist/types/memory-backend/types.d.ts +132 -0
- package/dist/types/mnemopi/backend.d.ts +4 -0
- package/dist/types/mnemopi/config.d.ts +60 -0
- package/dist/types/mnemopi/embed-client.d.ts +53 -0
- package/dist/types/mnemopi/embed-protocol.d.ts +52 -0
- package/dist/types/mnemopi/embed-worker.d.ts +12 -0
- package/dist/types/mnemopi/index.d.ts +3 -0
- package/dist/types/mnemopi/state.d.ts +130 -0
- package/dist/types/modes/acp/acp-agent.d.ts +60 -0
- package/dist/types/modes/acp/acp-client-bridge.d.ts +9 -0
- package/dist/types/modes/acp/acp-event-mapper.d.ts +33 -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/components/__tests__/move-overlay.test.d.ts +1 -0
- package/dist/types/modes/components/__tests__/skill-message.test.d.ts +1 -0
- package/dist/types/modes/components/advisor-config.d.ts +59 -0
- package/dist/types/modes/components/advisor-message.d.ts +11 -0
- package/dist/types/modes/components/agent-dashboard.d.ts +22 -0
- package/dist/types/modes/components/agent-hub.d.ts +77 -0
- package/dist/types/modes/components/agent-transcript-viewer.d.ts +40 -0
- package/dist/types/modes/components/assistant-message.d.ts +58 -0
- package/dist/types/modes/components/background-tan-message.d.ts +9 -0
- package/dist/types/modes/components/bash-execution.d.ts +35 -0
- package/dist/types/modes/components/bordered-loader.d.ts +11 -0
- package/dist/types/modes/components/btw-panel.d.ts +19 -0
- package/dist/types/modes/components/cache-invalidation-marker.d.ts +52 -0
- package/dist/types/modes/components/chat-block.d.ts +64 -0
- package/dist/types/modes/components/chat-transcript-builder.d.ts +45 -0
- package/dist/types/modes/components/collab-prompt-message.d.ts +10 -0
- package/dist/types/modes/components/compaction-summary-message.d.ts +46 -0
- package/dist/types/modes/components/copy-selector.d.ts +22 -0
- package/dist/types/modes/components/countdown-timer.d.ts +14 -0
- package/dist/types/modes/components/custom-editor.d.ts +163 -0
- package/dist/types/modes/components/custom-editor.test.d.ts +1 -0
- package/dist/types/modes/components/custom-message.d.ts +15 -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/error-banner.d.ts +11 -0
- package/dist/types/modes/components/eval-execution.d.ts +29 -0
- package/dist/types/modes/components/execution-shared.d.ts +46 -0
- package/dist/types/modes/components/extensions/extension-dashboard.d.ts +43 -0
- package/dist/types/modes/components/extensions/extension-list.d.ts +52 -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 +147 -0
- package/dist/types/modes/components/footer.d.ts +30 -0
- package/dist/types/modes/components/history-search.d.ts +7 -0
- package/dist/types/modes/components/hook-editor.d.ts +24 -0
- package/dist/types/modes/components/hook-input.d.ts +19 -0
- package/dist/types/modes/components/hook-message.d.ts +15 -0
- package/dist/types/modes/components/hook-selector.d.ts +68 -0
- package/dist/types/modes/components/index.d.ts +38 -0
- package/dist/types/modes/components/keybinding-hints.d.ts +40 -0
- package/dist/types/modes/components/late-diagnostics-message.d.ts +20 -0
- package/dist/types/modes/components/login-dialog.d.ts +40 -0
- package/dist/types/modes/components/logout-account-selector.d.ts +8 -0
- package/dist/types/modes/components/mcp-add-wizard.d.ts +38 -0
- package/dist/types/modes/components/message-frame.d.ts +44 -0
- package/dist/types/modes/components/model-selector.d.ts +36 -0
- package/dist/types/modes/components/move-overlay.d.ts +23 -0
- package/dist/types/modes/components/oauth-selector.d.ts +23 -0
- package/dist/types/modes/components/omfg-panel.d.ts +19 -0
- package/dist/types/modes/components/overlay-box.d.ts +17 -0
- package/dist/types/modes/components/plan-review-overlay.d.ts +61 -0
- package/dist/types/modes/components/plan-toc.d.ts +41 -0
- package/dist/types/modes/components/plugin-selector.d.ts +27 -0
- package/dist/types/modes/components/plugin-settings.d.ts +103 -0
- package/dist/types/modes/components/queue-mode-selector.d.ts +10 -0
- package/dist/types/modes/components/read-tool-group.d.ts +38 -0
- package/dist/types/modes/components/reset-usage-selector.d.ts +12 -0
- package/dist/types/modes/components/segment-track.d.ts +27 -0
- package/dist/types/modes/components/select-list-mouse-routing.d.ts +2 -0
- package/dist/types/modes/components/selector-helpers.d.ts +53 -0
- package/dist/types/modes/components/session-selector.d.ts +94 -0
- package/dist/types/modes/components/settings-defs.d.ts +60 -0
- package/dist/types/modes/components/settings-selector.d.ts +70 -0
- package/dist/types/modes/components/show-images-selector.d.ts +10 -0
- package/dist/types/modes/components/skill-message.d.ts +9 -0
- package/dist/types/modes/components/snapcompact-shape-preview.d.ts +31 -0
- package/dist/types/modes/components/status-line/component.d.ts +94 -0
- package/dist/types/modes/components/status-line/component.test.d.ts +1 -0
- package/dist/types/modes/components/status-line/context-thresholds.d.ts +10 -0
- package/dist/types/modes/components/status-line/git-utils.d.ts +22 -0
- package/dist/types/modes/components/status-line/index.d.ts +5 -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 +150 -0
- package/dist/types/modes/components/theme-selector.d.ts +11 -0
- package/dist/types/modes/components/thinking-selector.d.ts +11 -0
- package/dist/types/modes/components/tiny-title-download-progress.d.ts +11 -0
- package/dist/types/modes/components/todo-reminder.d.ts +15 -0
- package/dist/types/modes/components/tool-execution.d.ts +117 -0
- package/dist/types/modes/components/transcript-container.d.ts +86 -0
- package/dist/types/modes/components/tree-selector.d.ts +31 -0
- package/dist/types/modes/components/ttsr-notification.d.ts +17 -0
- package/dist/types/modes/components/usage-row.d.ts +3 -0
- package/dist/types/modes/components/user-message-selector.d.ts +28 -0
- package/dist/types/modes/components/user-message.d.ts +9 -0
- package/dist/types/modes/components/visual-truncate.d.ts +19 -0
- package/dist/types/modes/components/welcome.d.ts +66 -0
- package/dist/types/modes/controllers/btw-controller.d.ts +14 -0
- package/dist/types/modes/controllers/command-controller-shared.d.ts +47 -0
- package/dist/types/modes/controllers/command-controller.d.ts +55 -0
- package/dist/types/modes/controllers/event-controller.d.ts +28 -0
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +88 -0
- package/dist/types/modes/controllers/input-controller.d.ts +71 -0
- package/dist/types/modes/controllers/mcp-command-controller.d.ts +44 -0
- package/dist/types/modes/controllers/omfg-controller.d.ts +10 -0
- package/dist/types/modes/controllers/omfg-rule.d.ts +26 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +61 -0
- package/dist/types/modes/controllers/session-focus-controller.d.ts +31 -0
- package/dist/types/modes/controllers/ssh-command-controller.d.ts +10 -0
- package/dist/types/modes/controllers/streaming-reveal.d.ts +45 -0
- package/dist/types/modes/controllers/tan-command-controller.d.ts +6 -0
- package/dist/types/modes/controllers/todo-command-controller.d.ts +7 -0
- package/dist/types/modes/controllers/tool-args-reveal.d.ts +77 -0
- package/dist/types/modes/emoji-autocomplete.d.ts +16 -0
- package/dist/types/modes/gradient-highlight.d.ts +32 -0
- package/dist/types/modes/image-references.d.ts +28 -0
- package/dist/types/modes/index.d.ts +10 -0
- package/dist/types/modes/interactive-mode.d.ts +401 -0
- package/dist/types/modes/internal-url-autocomplete.d.ts +43 -0
- package/dist/types/modes/loop-limit.d.ts +35 -0
- package/dist/types/modes/magic-keywords.d.ts +26 -0
- package/dist/types/modes/markdown-prose.d.ts +27 -0
- package/dist/types/modes/oauth-manual-input.d.ts +15 -0
- package/dist/types/modes/orchestrate.d.ts +15 -0
- package/dist/types/modes/print-mode.d.ts +29 -0
- package/dist/types/modes/prompt-action-autocomplete.d.ts +46 -0
- package/dist/types/modes/rpc/host-tools.d.ts +16 -0
- package/dist/types/modes/rpc/host-uris.d.ts +38 -0
- package/dist/types/modes/rpc/rpc-client.d.ts +304 -0
- package/dist/types/modes/rpc/rpc-mode.d.ts +145 -0
- package/dist/types/modes/rpc/rpc-subagents.d.ts +24 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +705 -0
- package/dist/types/modes/running-subagent-badge.d.ts +6 -0
- package/dist/types/modes/runtime-init.d.ts +25 -0
- package/dist/types/modes/session-observer-registry.d.ts +35 -0
- package/dist/types/modes/session-teardown.d.ts +63 -0
- package/dist/types/modes/session-teardown.test.d.ts +1 -0
- package/dist/types/modes/setup-version.d.ts +11 -0
- package/dist/types/modes/setup-wizard/index.d.ts +22 -0
- package/dist/types/modes/setup-wizard/lazy.d.ts +2 -0
- package/dist/types/modes/setup-wizard/scenes/glyph.d.ts +2 -0
- package/dist/types/modes/setup-wizard/scenes/outro.d.ts +2 -0
- package/dist/types/modes/setup-wizard/scenes/providers.d.ts +2 -0
- package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +22 -0
- package/dist/types/modes/setup-wizard/scenes/splash.d.ts +11 -0
- package/dist/types/modes/setup-wizard/scenes/theme.d.ts +2 -0
- package/dist/types/modes/setup-wizard/scenes/types.d.ts +52 -0
- package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +23 -0
- package/dist/types/modes/setup-wizard/startup-splash.d.ts +7 -0
- package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +15 -0
- package/dist/types/modes/shared.d.ts +15 -0
- package/dist/types/modes/skill-command.d.ts +32 -0
- package/dist/types/modes/theme/defaults/index.d.ts +9436 -0
- package/dist/types/modes/theme/mermaid-cache.d.ts +26 -0
- package/dist/types/modes/theme/mermaid-rendering.test.d.ts +1 -0
- package/dist/types/modes/theme/shimmer.d.ts +40 -0
- package/dist/types/modes/theme/theme.d.ts +360 -0
- package/dist/types/modes/turn-budget.d.ts +18 -0
- package/dist/types/modes/types.d.ts +399 -0
- package/dist/types/modes/ultrathink.d.ts +15 -0
- package/dist/types/modes/utils/context-usage.d.ts +64 -0
- package/dist/types/modes/utils/copy-targets.d.ts +75 -0
- package/dist/types/modes/utils/hotkeys-markdown.d.ts +5 -0
- package/dist/types/modes/utils/interactive-context-helpers.d.ts +14 -0
- package/dist/types/modes/utils/keybinding-matchers.d.ts +32 -0
- package/dist/types/modes/utils/tools-markdown.d.ts +5 -0
- package/dist/types/modes/utils/transcript-render-helpers.d.ts +63 -0
- package/dist/types/modes/utils/ui-helpers.d.ts +55 -0
- package/dist/types/modes/workflow.d.ts +15 -0
- package/dist/types/plan-mode/approved-plan-prompt.test.d.ts +1 -0
- package/dist/types/plan-mode/approved-plan.d.ts +68 -0
- package/dist/types/plan-mode/plan-handoff.d.ts +20 -0
- package/dist/types/plan-mode/plan-protection.d.ts +12 -0
- package/dist/types/plan-mode/state.d.ts +6 -0
- package/dist/types/registry/agent-lifecycle.d.ts +66 -0
- package/dist/types/registry/agent-registry.d.ts +97 -0
- package/dist/types/sdk.d.ts +370 -0
- package/dist/types/secrets/index.d.ts +9 -0
- package/dist/types/secrets/obfuscator.d.ts +63 -0
- package/dist/types/secrets/regex.d.ts +2 -0
- package/dist/types/session/agent-session.d.ts +1419 -0
- package/dist/types/session/agent-storage.d.ts +97 -0
- package/dist/types/session/artifacts.d.ts +61 -0
- package/dist/types/session/auth-broker-config.d.ts +45 -0
- package/dist/types/session/auth-storage.d.ts +7 -0
- package/dist/types/session/blob-store.d.ts +68 -0
- package/dist/types/session/client-bridge.d.ts +88 -0
- package/dist/types/session/codex-auto-reset.d.ts +111 -0
- package/dist/types/session/compact-modes.d.ts +60 -0
- package/dist/types/session/exit-diagnostics.d.ts +48 -0
- package/dist/types/session/history-storage.d.ts +30 -0
- package/dist/types/session/indexed-session-storage.d.ts +65 -0
- package/dist/types/session/messages.d.ts +220 -0
- package/dist/types/session/messages.test.d.ts +1 -0
- package/dist/types/session/provider-image-budget.d.ts +3 -0
- package/dist/types/session/redis-session-storage.d.ts +51 -0
- package/dist/types/session/session-context.d.ts +44 -0
- package/dist/types/session/session-dump-format.d.ts +30 -0
- package/dist/types/session/session-entries.d.ts +197 -0
- package/dist/types/session/session-history-format.d.ts +49 -0
- package/dist/types/session/session-listing.d.ts +78 -0
- package/dist/types/session/session-loader.d.ts +29 -0
- package/dist/types/session/session-manager.d.ts +306 -0
- package/dist/types/session/session-migrations.d.ts +12 -0
- package/dist/types/session/session-paths.d.ts +25 -0
- package/dist/types/session/session-persistence.d.ts +12 -0
- package/dist/types/session/session-storage.d.ts +129 -0
- package/dist/types/session/session-title-slot.d.ts +19 -0
- package/dist/types/session/settings-stream-fn.d.ts +21 -0
- package/dist/types/session/shake-types.d.ts +24 -0
- package/dist/types/session/snapcompact-inline.d.ts +145 -0
- package/dist/types/session/snapcompact-savings-journal.d.ts +46 -0
- package/dist/types/session/sql-session-storage.d.ts +72 -0
- package/dist/types/session/streaming-output.d.ts +229 -0
- package/dist/types/session/tool-choice-queue.d.ts +94 -0
- package/dist/types/session/turn-persistence.d.ts +88 -0
- package/dist/types/session/unexpected-stop-classifier.d.ts +13 -0
- package/dist/types/session/yield-queue.d.ts +37 -0
- package/dist/types/slash-commands/acp-builtins.d.ts +34 -0
- package/dist/types/slash-commands/available-commands.d.ts +34 -0
- package/dist/types/slash-commands/builtin-registry.d.ts +36 -0
- package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +14 -0
- package/dist/types/slash-commands/helpers/collab-qrcode.d.ts +13 -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/logout.d.ts +15 -0
- package/dist/types/slash-commands/helpers/marketplace-manager.d.ts +8 -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/reset-usage.d.ts +27 -0
- package/dist/types/slash-commands/helpers/ssh.d.ts +3 -0
- package/dist/types/slash-commands/helpers/stats-dashboard.d.ts +13 -0
- package/dist/types/slash-commands/helpers/todo.d.ts +3 -0
- package/dist/types/slash-commands/helpers/usage-report.d.ts +7 -0
- package/dist/types/slash-commands/marketplace-install-parser.d.ts +33 -0
- package/dist/types/slash-commands/types.d.ts +127 -0
- package/dist/types/ssh/__tests__/connection-manager-args.test.d.ts +1 -0
- package/dist/types/ssh/__tests__/connection-manager-timeout.test.d.ts +1 -0
- package/dist/types/ssh/__tests__/file-transfer-posix-guard.test.d.ts +1 -0
- package/dist/types/ssh/__tests__/sshfs-mount.test.d.ts +1 -0
- package/dist/types/ssh/config-writer.d.ts +49 -0
- package/dist/types/ssh/connection-manager.d.ts +109 -0
- package/dist/types/ssh/file-transfer.d.ts +79 -0
- package/dist/types/ssh/ssh-executor.d.ts +37 -0
- package/dist/types/ssh/sshfs-mount.d.ts +15 -0
- package/dist/types/ssh/utils.d.ts +24 -0
- package/dist/types/startup-splash.d.ts +12 -0
- package/dist/types/stt/asr-client.d.ts +68 -0
- package/dist/types/stt/asr-protocol.d.ts +97 -0
- package/dist/types/stt/asr-worker.d.ts +2 -0
- package/dist/types/stt/downloader.d.ts +47 -0
- package/dist/types/stt/endpointer.d.ts +59 -0
- package/dist/types/stt/index.d.ts +8 -0
- package/dist/types/stt/models.d.ts +120 -0
- package/dist/types/stt/recorder.d.ts +30 -0
- package/dist/types/stt/stt-controller.d.ts +24 -0
- package/dist/types/stt/submit-trigger.d.ts +30 -0
- package/dist/types/stt/transcriber.d.ts +14 -0
- package/dist/types/stt/wav.d.ts +29 -0
- package/dist/types/subprocess/worker-client.d.ts +163 -0
- package/dist/types/subprocess/worker-runtime.d.ts +118 -0
- package/dist/types/system-prompt.d.ts +128 -0
- package/dist/types/system-prompt.test.d.ts +1 -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 +20 -0
- package/dist/types/task/executor.d.ts +214 -0
- package/dist/types/task/index.d.ts +79 -0
- package/dist/types/task/isolation-runner.d.ts +128 -0
- package/dist/types/task/name-generator.d.ts +16 -0
- package/dist/types/task/omp-command.d.ts +7 -0
- package/dist/types/task/output-manager.d.ts +20 -0
- package/dist/types/task/parallel.d.ts +55 -0
- package/dist/types/task/persisted-revive.d.ts +36 -0
- package/dist/types/task/provider-concurrency.d.ts +40 -0
- package/dist/types/task/render.d.ts +34 -0
- package/dist/types/task/render.test.d.ts +1 -0
- package/dist/types/task/renderer.d.ts +14 -0
- package/dist/types/task/repair-args.d.ts +53 -0
- package/dist/types/task/spawn-policy.d.ts +17 -0
- package/dist/types/task/spawn-policy.test.d.ts +1 -0
- package/dist/types/task/subprocess-tool-registry.d.ts +72 -0
- package/dist/types/task/types.d.ts +384 -0
- package/dist/types/task/worktree.d.ts +135 -0
- package/dist/types/task/yield-assembly.d.ts +28 -0
- package/dist/types/telemetry-export.d.ts +19 -0
- package/dist/types/thinking.d.ts +96 -0
- package/dist/types/tiny/device.d.ts +78 -0
- package/dist/types/tiny/dtype.d.ts +85 -0
- package/dist/types/tiny/models.d.ts +230 -0
- package/dist/types/tiny/text.d.ts +44 -0
- package/dist/types/tiny/title-client.d.ts +68 -0
- package/dist/types/tiny/title-protocol.d.ts +78 -0
- package/dist/types/tiny/worker.d.ts +2 -0
- package/dist/types/tool-discovery/mode.d.ts +8 -0
- package/dist/types/tool-discovery/tool-index.d.ts +57 -0
- package/dist/types/tools/__tests__/eval-description.test.d.ts +1 -0
- package/dist/types/tools/__tests__/json-tree.test.d.ts +1 -0
- package/dist/types/tools/acp-bridge.d.ts +29 -0
- package/dist/types/tools/approval.d.ts +46 -0
- package/dist/types/tools/ask.d.ts +119 -0
- package/dist/types/tools/ast-edit.d.ts +84 -0
- package/dist/types/tools/ast-grep.d.ts +76 -0
- package/dist/types/tools/auto-generated-guard.d.ts +17 -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 +173 -0
- package/dist/types/tools/browser/aria/aria-snapshot.d.ts +39 -0
- package/dist/types/tools/browser/attach.d.ts +34 -0
- package/dist/types/tools/browser/cmux/cmux-tab.d.ts +212 -0
- package/dist/types/tools/browser/cmux/rpc.d.ts +70 -0
- package/dist/types/tools/browser/cmux/socket-client.d.ts +19 -0
- package/dist/types/tools/browser/launch.d.ts +67 -0
- package/dist/types/tools/browser/readable.d.ts +17 -0
- package/dist/types/tools/browser/registry.d.ts +58 -0
- package/dist/types/tools/browser/render.d.ts +54 -0
- package/dist/types/tools/browser/run-cancellation.d.ts +4 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +146 -0
- package/dist/types/tools/browser/tab-supervisor.d.ts +114 -0
- package/dist/types/tools/browser/tab-worker-entry.d.ts +1 -0
- package/dist/types/tools/browser/tab-worker.d.ts +56 -0
- package/dist/types/tools/browser.d.ts +96 -0
- package/dist/types/tools/builtin-names.d.ts +6 -0
- package/dist/types/tools/checkpoint.d.ts +72 -0
- package/dist/types/tools/conflict-detect.d.ts +221 -0
- package/dist/types/tools/context.d.ts +19 -0
- package/dist/types/tools/debug.d.ts +157 -0
- package/dist/types/tools/eval-backends.d.ts +15 -0
- package/dist/types/tools/eval-render.d.ts +58 -0
- package/dist/types/tools/eval.d.ts +66 -0
- package/dist/types/tools/fetch.d.ts +99 -0
- package/dist/types/tools/file-recorder.d.ts +13 -0
- package/dist/types/tools/fs-cache-invalidation.d.ts +15 -0
- package/dist/types/tools/gh-cache-invalidation.d.ts +6 -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 +331 -0
- package/dist/types/tools/github-cache.d.ts +123 -0
- package/dist/types/tools/glob.d.ts +96 -0
- package/dist/types/tools/grep.d.ts +99 -0
- package/dist/types/tools/grouped-file-output.d.ts +70 -0
- package/dist/types/tools/image-gen.d.ts +66 -0
- package/dist/types/tools/index.d.ts +368 -0
- package/dist/types/tools/inspect-image-renderer.d.ts +26 -0
- package/dist/types/tools/inspect-image.d.ts +32 -0
- package/dist/types/tools/irc.d.ts +112 -0
- package/dist/types/tools/job.d.ts +73 -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/learn.d.ts +44 -0
- package/dist/types/tools/list-limit.d.ts +12 -0
- package/dist/types/tools/manage-skill.d.ts +31 -0
- package/dist/types/tools/match-line-format.d.ts +11 -0
- package/dist/types/tools/memory-edit.d.ts +31 -0
- package/dist/types/tools/memory-recall.d.ts +23 -0
- package/dist/types/tools/memory-reflect.d.ts +25 -0
- package/dist/types/tools/memory-render.d.ts +63 -0
- package/dist/types/tools/memory-retain.d.ts +29 -0
- package/dist/types/tools/output-meta.d.ts +211 -0
- package/dist/types/tools/output-schema-validator.d.ts +77 -0
- package/dist/types/tools/path-utils.d.ts +267 -0
- package/dist/types/tools/plan-mode-guard.d.ts +33 -0
- package/dist/types/tools/read.d.ts +87 -0
- package/dist/types/tools/render-utils.d.ts +218 -0
- package/dist/types/tools/renderers.d.ts +49 -0
- package/dist/types/tools/report-tool-issue.d.ts +127 -0
- package/dist/types/tools/resolve.d.ts +94 -0
- package/dist/types/tools/review.d.ts +59 -0
- package/dist/types/tools/search-tool-bm25.d.ts +65 -0
- package/dist/types/tools/sqlite-reader.d.ts +114 -0
- package/dist/types/tools/ssh.d.ts +74 -0
- package/dist/types/tools/todo.d.ts +126 -0
- package/dist/types/tools/tool-errors.d.ts +33 -0
- package/dist/types/tools/tool-result.d.ts +34 -0
- package/dist/types/tools/tool-timeouts.d.ts +51 -0
- package/dist/types/tools/tts.d.ts +42 -0
- package/dist/types/tools/write.d.ts +66 -0
- package/dist/types/tools/yield.d.ts +39 -0
- package/dist/types/tts/downloader.d.ts +20 -0
- package/dist/types/tts/index.d.ts +10 -0
- package/dist/types/tts/models.d.ts +82 -0
- package/dist/types/tts/player.d.ts +32 -0
- package/dist/types/tts/runtime.d.ts +6 -0
- package/dist/types/tts/speakable.d.ts +47 -0
- package/dist/types/tts/speech-enhancer.d.ts +46 -0
- package/dist/types/tts/streaming-player.d.ts +40 -0
- package/dist/types/tts/tts-client.d.ts +69 -0
- package/dist/types/tts/tts-protocol.d.ts +102 -0
- package/dist/types/tts/tts-worker.d.ts +2 -0
- package/dist/types/tts/vocalizer.d.ts +48 -0
- package/dist/types/tts/wav.d.ts +8 -0
- package/dist/types/tui/code-cell.d.ts +47 -0
- package/dist/types/tui/file-list.d.ts +22 -0
- package/dist/types/tui/hyperlink.d.ts +61 -0
- package/dist/types/tui/index.d.ts +12 -0
- package/dist/types/tui/output-block.d.ts +59 -0
- package/dist/types/tui/status-line.d.ts +21 -0
- package/dist/types/tui/tree-list.d.ts +20 -0
- package/dist/types/tui/types.d.ts +13 -0
- package/dist/types/tui/utils.d.ts +36 -0
- package/dist/types/tui/width-aware-text.d.ts +23 -0
- package/dist/types/utils/active-repo-context.d.ts +8 -0
- package/dist/types/utils/block-context.d.ts +35 -0
- package/dist/types/utils/changelog.d.ts +33 -0
- package/dist/types/utils/clipboard.d.ts +37 -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/enhanced-paste.d.ts +20 -0
- package/dist/types/utils/event-bus.d.ts +6 -0
- package/dist/types/utils/external-editor.d.ts +27 -0
- package/dist/types/utils/fetch-timeout.d.ts +4 -0
- package/dist/types/utils/file-display-mode.d.ts +27 -0
- package/dist/types/utils/file-mentions.d.ts +13 -0
- package/dist/types/utils/git.d.ts +471 -0
- package/dist/types/utils/image-loading.d.ts +67 -0
- package/dist/types/utils/image-resize.d.ts +42 -0
- package/dist/types/utils/image-vision-fallback.d.ts +28 -0
- package/dist/types/utils/ipc.d.ts +22 -0
- package/dist/types/utils/jj.d.ts +74 -0
- package/dist/types/utils/lang-from-path.d.ts +8 -0
- package/dist/types/utils/markit-cache.d.ts +23 -0
- package/dist/types/utils/markit.d.ts +20 -0
- package/dist/types/utils/mupdf-wasm-embed.d.ts +1 -0
- package/dist/types/utils/open.d.ts +2 -0
- package/dist/types/utils/prompt-path.d.ts +1 -0
- package/dist/types/utils/qrcode.d.ts +48 -0
- package/dist/types/utils/session-color.d.ts +27 -0
- package/dist/types/utils/shell-snapshot.d.ts +15 -0
- package/dist/types/utils/sixel.d.ts +21 -0
- package/dist/types/utils/thinking-display.d.ts +7 -0
- package/dist/types/utils/title-generator.d.ts +33 -0
- package/dist/types/utils/tool-choice.d.ts +15 -0
- package/dist/types/utils/tools-manager.d.ts +12 -0
- package/dist/types/utils/turndown.d.ts +15 -0
- package/dist/types/utils/zip.d.ts +119 -0
- package/dist/types/web/kagi.d.ts +99 -0
- package/dist/types/web/parallel.d.ts +67 -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 +34 -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 +5 -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 +90 -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 +74 -0
- package/dist/types/web/search/provider.d.ts +30 -0
- package/dist/types/web/search/providers/anthropic.d.ts +33 -0
- package/dist/types/web/search/providers/base.d.ts +84 -0
- package/dist/types/web/search/providers/brave.d.ts +28 -0
- package/dist/types/web/search/providers/codex.d.ts +36 -0
- package/dist/types/web/search/providers/duckduckgo.d.ts +14 -0
- package/dist/types/web/search/providers/exa.d.ts +70 -0
- package/dist/types/web/search/providers/firecrawl.d.ts +28 -0
- package/dist/types/web/search/providers/gemini.d.ts +63 -0
- package/dist/types/web/search/providers/jina.d.ts +31 -0
- package/dist/types/web/search/providers/kagi.d.ts +30 -0
- package/dist/types/web/search/providers/kimi.d.ts +32 -0
- package/dist/types/web/search/providers/parallel.d.ts +16 -0
- package/dist/types/web/search/providers/perplexity-auth.d.ts +37 -0
- package/dist/types/web/search/providers/perplexity.d.ts +58 -0
- package/dist/types/web/search/providers/searxng.d.ts +45 -0
- package/dist/types/web/search/providers/synthetic.d.ts +25 -0
- package/dist/types/web/search/providers/tavily.d.ts +30 -0
- package/dist/types/web/search/providers/tinyfish.d.ts +29 -0
- package/dist/types/web/search/providers/utils.d.ts +52 -0
- package/dist/types/web/search/providers/xai.d.ts +13 -0
- package/dist/types/web/search/providers/zai.d.ts +29 -0
- package/dist/types/web/search/render.d.ts +34 -0
- package/dist/types/web/search/types.d.ts +431 -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 +142 -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/thinking-note.ts +13 -0
- package/examples/extensions/tools.ts +145 -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 +17 -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/12-redis-sessions.ts +54 -0
- package/examples/sdk/13-sql-sessions.ts +61 -0
- package/examples/sdk/README.md +172 -0
- package/package.json +594 -0
- package/scripts/bench-guard.ts +71 -0
- package/scripts/build-binary.ts +135 -0
- package/scripts/bundle-dist.ts +129 -0
- package/scripts/embed-mupdf-wasm.ts +67 -0
- package/scripts/format-prompts.ts +68 -0
- package/scripts/generate-aria-snapshot.ts +134 -0
- package/scripts/generate-docs-index.ts +148 -0
- package/scripts/generate-legacy-pi-bundled-registry.ts +420 -0
- package/scripts/generate-share-viewer.ts +36 -0
- package/scripts/measure-prompt-tokens.ts +63 -0
- package/scripts/omp +42 -0
- package/scripts/omp.ts +19 -0
- package/src/advisor/__tests__/advisor.test.ts +1662 -0
- package/src/advisor/__tests__/config.test.ts +173 -0
- package/src/advisor/__tests__/emission-guard.test.ts +147 -0
- package/src/advisor/advise-tool.ts +203 -0
- package/src/advisor/config.ts +258 -0
- package/src/advisor/emission-guard.ts +172 -0
- package/src/advisor/index.ts +6 -0
- package/src/advisor/runtime.ts +518 -0
- package/src/advisor/transcript-recorder.ts +159 -0
- package/src/advisor/watchdog.ts +135 -0
- package/src/async/index.ts +1 -0
- package/src/async/job-manager.ts +698 -0
- package/src/auto-thinking/classifier.ts +195 -0
- package/src/autolearn/controller.ts +145 -0
- package/src/autolearn/managed-skills.ts +255 -0
- package/src/autoresearch/command-resume.md +14 -0
- package/src/autoresearch/dashboard.ts +436 -0
- package/src/autoresearch/git.ts +331 -0
- package/src/autoresearch/helpers.ts +218 -0
- package/src/autoresearch/index.ts +541 -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 +700 -0
- package/src/autoresearch/tools/init-experiment.ts +269 -0
- package/src/autoresearch/tools/log-experiment.ts +521 -0
- package/src/autoresearch/tools/run-experiment.ts +407 -0
- package/src/autoresearch/tools/update-notes.ts +109 -0
- package/src/autoresearch/types.ts +168 -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 +117 -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 +76 -0
- package/src/capability/prompt.ts +35 -0
- package/src/capability/rule-buckets.ts +66 -0
- package/src/capability/rule.ts +261 -0
- package/src/capability/settings.ts +34 -0
- package/src/capability/skill.ts +63 -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 +138 -0
- package/src/cli/args.ts +393 -0
- package/src/cli/auth-broker-cli.ts +921 -0
- package/src/cli/auth-gateway-cli.ts +608 -0
- package/src/cli/bench-cli.ts +623 -0
- package/src/cli/classify-install-target.ts +76 -0
- package/src/cli/claude-trace-cli.ts +795 -0
- package/src/cli/commands/init-xdg.ts +27 -0
- package/src/cli/completion-gen.ts +550 -0
- package/src/cli/config-cli.ts +422 -0
- package/src/cli/dry-balance-cli.ts +853 -0
- package/src/cli/extension-flags.ts +48 -0
- package/src/cli/file-processor.ts +133 -0
- package/src/cli/flag-tables.ts +325 -0
- package/src/cli/gallery-cli.ts +272 -0
- package/src/cli/gallery-fixtures/agentic.ts +416 -0
- package/src/cli/gallery-fixtures/codeintel.ts +187 -0
- package/src/cli/gallery-fixtures/edit.ts +254 -0
- package/src/cli/gallery-fixtures/fs.ts +220 -0
- package/src/cli/gallery-fixtures/index.ts +40 -0
- package/src/cli/gallery-fixtures/interaction.ts +46 -0
- package/src/cli/gallery-fixtures/memory.ts +81 -0
- package/src/cli/gallery-fixtures/misc.ts +250 -0
- package/src/cli/gallery-fixtures/search.ts +213 -0
- package/src/cli/gallery-fixtures/shell.ts +159 -0
- package/src/cli/gallery-fixtures/types.ts +57 -0
- package/src/cli/gallery-fixtures/web.ts +158 -0
- package/src/cli/gallery-screenshot.ts +279 -0
- package/src/cli/gc-cli.ts +946 -0
- package/src/cli/grep-cli.ts +160 -0
- package/src/cli/grievances-cli.ts +256 -0
- package/src/cli/initial-message.ts +58 -0
- package/src/cli/models-cli.ts +368 -0
- package/src/cli/plugin-cli.ts +996 -0
- package/src/cli/profile-alias.ts +369 -0
- package/src/cli/profile-bootstrap.ts +233 -0
- package/src/cli/read-cli.ts +57 -0
- package/src/cli/session-picker.ts +93 -0
- package/src/cli/setup-cli.ts +332 -0
- package/src/cli/setup-model-picker.ts +43 -0
- package/src/cli/shell-cli.ts +176 -0
- package/src/cli/ssh-cli.ts +179 -0
- package/src/cli/startup-cwd.ts +58 -0
- package/src/cli/stats-cli.ts +229 -0
- package/src/cli/tiny-models-cli.ts +153 -0
- package/src/cli/ttsr-cli.ts +995 -0
- package/src/cli/update-cli.test.ts +28 -0
- package/src/cli/update-cli.ts +944 -0
- package/src/cli/usage-cli.ts +857 -0
- package/src/cli/web-search-cli.ts +137 -0
- package/src/cli/worktree-cli.ts +294 -0
- package/src/cli-commands.ts +131 -0
- package/src/cli.ts +348 -0
- package/src/collab/crypto.ts +63 -0
- package/src/collab/display-name.ts +13 -0
- package/src/collab/guest.ts +731 -0
- package/src/collab/host.ts +690 -0
- package/src/collab/protocol.ts +296 -0
- package/src/collab/relay-client.ts +216 -0
- package/src/collab/replication-shrink.ts +111 -0
- package/src/commands/acp.ts +24 -0
- package/src/commands/agents.ts +57 -0
- package/src/commands/auth-broker.ts +99 -0
- package/src/commands/auth-gateway.ts +69 -0
- package/src/commands/bench.ts +51 -0
- package/src/commands/commit.ts +46 -0
- package/src/commands/complete.ts +66 -0
- package/src/commands/completions.ts +60 -0
- package/src/commands/config.ts +51 -0
- package/src/commands/dry-balance.ts +43 -0
- package/src/commands/gallery.ts +60 -0
- package/src/commands/gc.ts +46 -0
- package/src/commands/grep.ts +48 -0
- package/src/commands/grievances.ts +51 -0
- package/src/commands/install.ts +107 -0
- package/src/commands/join.ts +39 -0
- package/src/commands/launch.ts +182 -0
- package/src/commands/models.ts +60 -0
- package/src/commands/plugin.ts +78 -0
- package/src/commands/read.ts +38 -0
- package/src/commands/say.ts +102 -0
- package/src/commands/setup.ts +67 -0
- package/src/commands/shell.ts +29 -0
- package/src/commands/ssh.ts +60 -0
- package/src/commands/stats.ts +29 -0
- package/src/commands/tiny-models.ts +36 -0
- package/src/commands/token.ts +162 -0
- package/src/commands/ttsr.ts +125 -0
- package/src/commands/update.ts +27 -0
- package/src/commands/usage.ts +43 -0
- package/src/commands/web-search.ts +42 -0
- package/src/commands/worktree.ts +62 -0
- package/src/commit/agentic/agent.ts +318 -0
- package/src/commit/agentic/fallback.ts +96 -0
- package/src/commit/agentic/index.ts +355 -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 +149 -0
- package/src/commit/agentic/tools/git-file-diff.ts +191 -0
- package/src/commit/agentic/tools/git-hunk.ts +52 -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 +147 -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 +11 -0
- package/src/commit/agentic/tools/split-commit.ts +241 -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 +107 -0
- package/src/commit/analysis/validation.ts +66 -0
- package/src/commit/changelog/detect.ts +40 -0
- package/src/commit/changelog/generate.ts +101 -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 +95 -0
- package/src/commit/pipeline.ts +243 -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 +70 -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/api-key-resolver.ts +67 -0
- package/src/config/append-only-context-mode.ts +76 -0
- package/src/config/config-file.ts +315 -0
- package/src/config/file-lock.ts +164 -0
- package/src/config/inline-tool-descriptors-mode.ts +26 -0
- package/src/config/keybindings.ts +636 -0
- package/src/config/mcp-schema.json +247 -0
- package/src/config/model-discovery.ts +919 -0
- package/src/config/model-registry.ts +2275 -0
- package/src/config/model-resolver.ts +1798 -0
- package/src/config/model-roles.ts +99 -0
- package/src/config/models-config-schema.ts +293 -0
- package/src/config/models-config.ts +134 -0
- package/src/config/prompt-templates.ts +205 -0
- package/src/config/provider-globals.ts +25 -0
- package/src/config/resolve-config-value.ts +94 -0
- package/src/config/service-tier.ts +116 -0
- package/src/config/settings-schema.ts +5247 -0
- package/src/config/settings.ts +1540 -0
- package/src/config.ts +242 -0
- package/src/cursor.ts +340 -0
- package/src/dap/client.ts +764 -0
- package/src/dap/config.ts +333 -0
- package/src/dap/defaults.json +212 -0
- package/src/dap/index.ts +4 -0
- package/src/dap/session.ts +1441 -0
- package/src/dap/types.ts +610 -0
- package/src/debug/index.ts +584 -0
- package/src/debug/log-formatting.ts +58 -0
- package/src/debug/log-viewer.ts +966 -0
- package/src/debug/profiler.ts +168 -0
- package/src/debug/protocol-probe.ts +267 -0
- package/src/debug/raw-sse-buffer.ts +294 -0
- package/src/debug/raw-sse.ts +312 -0
- package/src/debug/remote-debugger.ts +151 -0
- package/src/debug/report-bundle.ts +375 -0
- package/src/debug/system-info.ts +111 -0
- package/src/debug/terminal-info.ts +124 -0
- package/src/discovery/agents-md.ts +67 -0
- package/src/discovery/agents.ts +230 -0
- package/src/discovery/at-imports.ts +273 -0
- package/src/discovery/builtin-defaults.ts +39 -0
- package/src/discovery/builtin-rules/go-add-cleanup.md +32 -0
- package/src/discovery/builtin-rules/go-bench-loop.md +36 -0
- package/src/discovery/builtin-rules/go-exp-promoted.md +39 -0
- package/src/discovery/builtin-rules/go-ioutil.md +36 -0
- package/src/discovery/builtin-rules/go-join-hostport.md +29 -0
- package/src/discovery/builtin-rules/go-new-expr.md +44 -0
- package/src/discovery/builtin-rules/go-rand-v2.md +40 -0
- package/src/discovery/builtin-rules/go-range-int.md +45 -0
- package/src/discovery/builtin-rules/index.ts +72 -0
- package/src/discovery/builtin-rules/rs-box-leak.md +48 -0
- package/src/discovery/builtin-rules/rs-future-prelude.md +23 -0
- package/src/discovery/builtin-rules/rs-lazylock.md +51 -0
- package/src/discovery/builtin-rules/rs-match-ergonomics.md +67 -0
- package/src/discovery/builtin-rules/rs-parking-lot.md +44 -0
- package/src/discovery/builtin-rules/rs-result-type.md +19 -0
- package/src/discovery/builtin-rules/ts-bare-catch.md +38 -0
- package/src/discovery/builtin-rules/ts-import-type.md +42 -0
- package/src/discovery/builtin-rules/ts-no-any.md +65 -0
- package/src/discovery/builtin-rules/ts-no-deprecated-leftovers.md +44 -0
- package/src/discovery/builtin-rules/ts-no-dynamic-import.md +39 -0
- package/src/discovery/builtin-rules/ts-no-inline-cast-access.md +55 -0
- package/src/discovery/builtin-rules/ts-no-return-type.md +44 -0
- package/src/discovery/builtin-rules/ts-no-test-timers.md +55 -0
- package/src/discovery/builtin-rules/ts-no-tiny-functions.md +51 -0
- package/src/discovery/builtin-rules/ts-promise-with-resolvers.md +65 -0
- package/src/discovery/builtin-rules/ts-redundant-clear-guard.md +75 -0
- package/src/discovery/builtin-rules/ts-set-map.md +28 -0
- package/src/discovery/builtin.ts +934 -0
- package/src/discovery/claude-plugins.ts +387 -0
- package/src/discovery/claude.ts +584 -0
- package/src/discovery/cline.ts +83 -0
- package/src/discovery/codex.ts +530 -0
- package/src/discovery/cursor.ts +220 -0
- package/src/discovery/gemini.ts +383 -0
- package/src/discovery/github.ts +337 -0
- package/src/discovery/helpers.ts +1102 -0
- package/src/discovery/index.ts +81 -0
- package/src/discovery/mcp-json.ts +172 -0
- package/src/discovery/omp-extension-roots.ts +213 -0
- package/src/discovery/omp-plugins.ts +383 -0
- package/src/discovery/opencode.ts +441 -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 +999 -0
- package/src/edit/file-snapshot-store.ts +157 -0
- package/src/edit/hashline/block-resolver.ts +33 -0
- package/src/edit/hashline/diff.ts +356 -0
- package/src/edit/hashline/execute.ts +279 -0
- package/src/edit/hashline/filesystem.ts +205 -0
- package/src/edit/hashline/index.ts +5 -0
- package/src/edit/hashline/noop-loop-guard.ts +99 -0
- package/src/edit/hashline/params.ts +12 -0
- package/src/edit/index.ts +705 -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 +1950 -0
- package/src/edit/modes/replace.ts +1137 -0
- package/src/edit/normalize.ts +345 -0
- package/src/edit/notebook.ts +242 -0
- package/src/edit/read-file.ts +25 -0
- package/src/edit/renderer.ts +969 -0
- package/src/edit/snapshot-details.ts +77 -0
- package/src/edit/streaming.ts +698 -0
- package/src/eval/__tests__/agent-bridge.test.ts +1399 -0
- package/src/eval/__tests__/bridge-timeout.test.ts +64 -0
- package/src/eval/__tests__/budget-bridge.test.ts +69 -0
- package/src/eval/__tests__/completion-bridge.test.ts +412 -0
- package/src/eval/__tests__/helpers-local-roots.test.ts +55 -0
- package/src/eval/__tests__/idle-timeout.test.ts +80 -0
- package/src/eval/__tests__/js-context-manager.test.ts +291 -0
- package/src/eval/__tests__/julia-prelude.test.ts +66 -0
- package/src/eval/__tests__/kernel-spawn.test.ts +103 -0
- package/src/eval/__tests__/prelude-agent.test.ts +107 -0
- package/src/eval/agent-bridge.ts +584 -0
- package/src/eval/backend-helpers.ts +48 -0
- package/src/eval/backend.ts +71 -0
- package/src/eval/bridge-timeout.ts +44 -0
- package/src/eval/budget-bridge.ts +48 -0
- package/src/eval/completion-bridge.ts +211 -0
- package/src/eval/concurrency-bridge.ts +34 -0
- package/src/eval/executor-base.ts +425 -0
- package/src/eval/idle-timeout.ts +91 -0
- package/src/eval/index.ts +6 -0
- package/src/eval/jl/executor.ts +540 -0
- package/src/eval/jl/index.ts +54 -0
- package/src/eval/jl/kernel.ts +235 -0
- package/src/eval/jl/prelude.jl +735 -0
- package/src/eval/jl/prelude.ts +3 -0
- package/src/eval/jl/runner.jl +666 -0
- package/src/eval/jl/runtime.ts +118 -0
- package/src/eval/js/context-manager.ts +621 -0
- package/src/eval/js/executor.ts +173 -0
- package/src/eval/js/index.ts +40 -0
- package/src/eval/js/shared/helpers.ts +170 -0
- package/src/eval/js/shared/indirect-eval.ts +30 -0
- package/src/eval/js/shared/local-module-loader.ts +364 -0
- package/src/eval/js/shared/prelude.ts +2 -0
- package/src/eval/js/shared/prelude.txt +293 -0
- package/src/eval/js/shared/rewrite-imports.ts +532 -0
- package/src/eval/js/shared/runtime.ts +574 -0
- package/src/eval/js/shared/types.ts +18 -0
- package/src/eval/js/tool-bridge.ts +163 -0
- package/src/eval/js/worker-core.ts +151 -0
- package/src/eval/js/worker-entry.ts +37 -0
- package/src/eval/js/worker-protocol.ts +47 -0
- package/src/eval/kernel-base.ts +569 -0
- package/src/eval/py/__tests__/prelude.test.ts +32 -0
- package/src/eval/py/__tests__/runner-shell-output.test.ts +157 -0
- package/src/eval/py/display.ts +71 -0
- package/src/eval/py/executor.ts +533 -0
- package/src/eval/py/index.ts +57 -0
- package/src/eval/py/kernel.ts +233 -0
- package/src/eval/py/prelude.py +625 -0
- package/src/eval/py/prelude.ts +3 -0
- package/src/eval/py/runner.py +1322 -0
- package/src/eval/py/runtime.ts +276 -0
- package/src/eval/py/spawn-options.ts +126 -0
- package/src/eval/py/tool-bridge.ts +182 -0
- package/src/eval/rb/executor.ts +504 -0
- package/src/eval/rb/index.ts +54 -0
- package/src/eval/rb/kernel.ts +230 -0
- package/src/eval/rb/prelude.rb +553 -0
- package/src/eval/rb/prelude.ts +3 -0
- package/src/eval/rb/runner.rb +581 -0
- package/src/eval/rb/runtime.ts +132 -0
- package/src/eval/runtime-env.ts +104 -0
- package/src/eval/session-id.ts +8 -0
- package/src/eval/types.ts +48 -0
- package/src/exa/index.ts +2 -0
- package/src/exa/mcp-client.ts +370 -0
- package/src/exa/types.ts +69 -0
- package/src/exec/bash-executor.ts +473 -0
- package/src/exec/exec.ts +53 -0
- package/src/exec/non-interactive-env.ts +119 -0
- package/src/export/custom-share.ts +65 -0
- package/src/export/html/index.ts +308 -0
- package/src/export/html/share-loader.js +102 -0
- package/src/export/html/template.css +1337 -0
- package/src/export/html/template.html +49 -0
- package/src/export/html/template.js +1634 -0
- package/src/export/html/tool-views.generated.js +37 -0
- package/src/export/html/vendor/highlight.min.js +1213 -0
- package/src/export/html/vendor/marked.min.js +6 -0
- package/src/export/html/web-palette.ts +142 -0
- package/src/export/share.ts +481 -0
- package/src/export/ttsr.ts +583 -0
- package/src/extensibility/custom-commands/bundled/ci-green/index.ts +54 -0
- package/src/extensibility/custom-commands/bundled/review/index.ts +698 -0
- package/src/extensibility/custom-commands/index.ts +2 -0
- package/src/extensibility/custom-commands/loader.ts +242 -0
- package/src/extensibility/custom-commands/types.ts +119 -0
- package/src/extensibility/custom-tools/index.ts +7 -0
- package/src/extensibility/custom-tools/loader.ts +268 -0
- package/src/extensibility/custom-tools/types.ts +280 -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 +78 -0
- package/src/extensibility/extensions/index.ts +16 -0
- package/src/extensibility/extensions/loader.ts +596 -0
- package/src/extensibility/extensions/model-api.ts +39 -0
- package/src/extensibility/extensions/runner.ts +1039 -0
- package/src/extensibility/extensions/types.ts +1394 -0
- package/src/extensibility/extensions/wrapper.ts +266 -0
- package/src/extensibility/hooks/index.ts +6 -0
- package/src/extensibility/hooks/loader.ts +244 -0
- package/src/extensibility/hooks/runner.ts +425 -0
- package/src/extensibility/hooks/tool-wrapper.ts +117 -0
- package/src/extensibility/hooks/types.ts +613 -0
- package/src/extensibility/legacy-pi-ai-shim.ts +73 -0
- package/src/extensibility/legacy-pi-coding-agent-shim.ts +646 -0
- package/src/extensibility/plugins/doctor.ts +65 -0
- package/src/extensibility/plugins/git-url.ts +367 -0
- package/src/extensibility/plugins/index.ts +9 -0
- package/src/extensibility/plugins/installer.ts +201 -0
- package/src/extensibility/plugins/legacy-pi-bundled-keys.ts +1011 -0
- package/src/extensibility/plugins/legacy-pi-bundled-registry.ts +3430 -0
- package/src/extensibility/plugins/legacy-pi-compat.ts +1141 -0
- package/src/extensibility/plugins/loader.ts +535 -0
- package/src/extensibility/plugins/manager.ts +1121 -0
- package/src/extensibility/plugins/marketplace/cache.ts +136 -0
- package/src/extensibility/plugins/marketplace/fetcher.ts +315 -0
- package/src/extensibility/plugins/marketplace/index.ts +6 -0
- package/src/extensibility/plugins/marketplace/manager.ts +926 -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 +192 -0
- package/src/extensibility/plugins/marketplace-auto-update.ts +49 -0
- package/src/extensibility/plugins/parser.ts +107 -0
- package/src/extensibility/plugins/runtime-config.ts +9 -0
- package/src/extensibility/plugins/types.ts +194 -0
- package/src/extensibility/session-handler-types.ts +21 -0
- package/src/extensibility/shared-events.ts +376 -0
- package/src/extensibility/skills.ts +508 -0
- package/src/extensibility/slash-commands.ts +131 -0
- package/src/extensibility/tool-event-input.ts +80 -0
- package/src/extensibility/tool-proxy.ts +28 -0
- package/src/extensibility/typebox.ts +945 -0
- package/src/extensibility/utils.ts +118 -0
- package/src/goals/guided-setup.ts +143 -0
- package/src/goals/index.ts +3 -0
- package/src/goals/runtime.ts +521 -0
- package/src/goals/state.ts +37 -0
- package/src/goals/tools/goal-tool.ts +251 -0
- package/src/hindsight/backend.ts +354 -0
- package/src/hindsight/bank.ts +156 -0
- package/src/hindsight/client.test.ts +33 -0
- package/src/hindsight/client.ts +643 -0
- package/src/hindsight/config.ts +175 -0
- package/src/hindsight/content.ts +266 -0
- package/src/hindsight/index.ts +8 -0
- package/src/hindsight/mental-models.ts +429 -0
- package/src/hindsight/seeds.json +32 -0
- package/src/hindsight/state.ts +492 -0
- package/src/hindsight/transcript.ts +71 -0
- package/src/index.ts +66 -0
- package/src/internal-urls/__tests__/ssh-protocol.test.ts +331 -0
- package/src/internal-urls/agent-protocol.ts +146 -0
- package/src/internal-urls/artifact-protocol.ts +151 -0
- package/src/internal-urls/docs-index.generated.txt +2 -0
- package/src/internal-urls/docs-index.ts +101 -0
- package/src/internal-urls/filesystem-resource.ts +34 -0
- package/src/internal-urls/history-protocol.ts +118 -0
- package/src/internal-urls/index.ts +26 -0
- package/src/internal-urls/issue-pr-protocol.ts +594 -0
- package/src/internal-urls/json-query.ts +126 -0
- package/src/internal-urls/local-protocol.ts +469 -0
- package/src/internal-urls/mcp-protocol.ts +151 -0
- package/src/internal-urls/memory-protocol.ts +173 -0
- package/src/internal-urls/omp-protocol.ts +94 -0
- package/src/internal-urls/parse.ts +72 -0
- package/src/internal-urls/registry-helpers.ts +40 -0
- package/src/internal-urls/router.ts +107 -0
- package/src/internal-urls/rule-protocol.ts +45 -0
- package/src/internal-urls/skill-protocol.ts +112 -0
- package/src/internal-urls/ssh-protocol.ts +367 -0
- package/src/internal-urls/types.ts +182 -0
- package/src/internal-urls/vault-protocol.ts +939 -0
- package/src/irc/bus.ts +320 -0
- package/src/jsonrpc/message-framing.ts +142 -0
- package/src/lib/xai-http.ts +124 -0
- package/src/lsp/client.ts +1249 -0
- package/src/lsp/clients/biome-client.ts +264 -0
- package/src/lsp/clients/index.ts +50 -0
- package/src/lsp/clients/lsp-linter-client.ts +85 -0
- package/src/lsp/clients/swiftlint-client.ts +120 -0
- package/src/lsp/config.ts +531 -0
- package/src/lsp/defaults.json +499 -0
- package/src/lsp/diagnostics-ledger.ts +51 -0
- package/src/lsp/edits.ts +288 -0
- package/src/lsp/format-options.ts +119 -0
- package/src/lsp/index.ts +2539 -0
- package/src/lsp/lspmux.ts +233 -0
- package/src/lsp/render.ts +668 -0
- package/src/lsp/startup-events.ts +13 -0
- package/src/lsp/types.ts +444 -0
- package/src/lsp/utils.ts +718 -0
- package/src/main.ts +1474 -0
- package/src/markit/NOTICE +32 -0
- package/src/markit/converters/docx.ts +56 -0
- package/src/markit/converters/epub.ts +136 -0
- package/src/markit/converters/mammoth.d.ts +24 -0
- package/src/markit/converters/pdf/columns.ts +103 -0
- package/src/markit/converters/pdf/extract.ts +574 -0
- package/src/markit/converters/pdf/grid.ts +780 -0
- package/src/markit/converters/pdf/headers.ts +106 -0
- package/src/markit/converters/pdf/index.ts +146 -0
- package/src/markit/converters/pdf/render.ts +501 -0
- package/src/markit/converters/pdf/types.ts +84 -0
- package/src/markit/converters/pptx.ts +325 -0
- package/src/markit/converters/xlsx.ts +173 -0
- package/src/markit/index.ts +2 -0
- package/src/markit/registry.ts +59 -0
- package/src/markit/types.ts +35 -0
- package/src/mcp/client.ts +511 -0
- package/src/mcp/config-writer.ts +350 -0
- package/src/mcp/config.ts +369 -0
- package/src/mcp/index.ts +29 -0
- package/src/mcp/json-rpc.ts +122 -0
- package/src/mcp/loader.ts +125 -0
- package/src/mcp/manager.ts +1362 -0
- package/src/mcp/oauth-credentials.ts +104 -0
- package/src/mcp/oauth-discovery.ts +560 -0
- package/src/mcp/oauth-flow.ts +787 -0
- package/src/mcp/render.ts +155 -0
- package/src/mcp/smithery-auth.ts +107 -0
- package/src/mcp/smithery-connect.ts +154 -0
- package/src/mcp/smithery-registry.test.ts +51 -0
- package/src/mcp/smithery-registry.ts +500 -0
- package/src/mcp/startup-events.ts +116 -0
- package/src/mcp/timeout.ts +59 -0
- package/src/mcp/tool-bridge.ts +484 -0
- package/src/mcp/tool-cache.ts +117 -0
- package/src/mcp/transports/http.ts +523 -0
- package/src/mcp/transports/index.ts +7 -0
- package/src/mcp/transports/sse.ts +377 -0
- package/src/mcp/transports/stdio.test.ts +95 -0
- package/src/mcp/transports/stdio.ts +663 -0
- package/src/mcp/types.ts +430 -0
- package/src/memories/index.ts +1395 -0
- package/src/memories/storage.ts +578 -0
- package/src/memory-backend/index.ts +18 -0
- package/src/memory-backend/local-backend.ts +47 -0
- package/src/memory-backend/off-backend.ts +25 -0
- package/src/memory-backend/resolve.ts +25 -0
- package/src/memory-backend/runtime.ts +66 -0
- package/src/memory-backend/types.ts +166 -0
- package/src/mnemopi/backend.ts +612 -0
- package/src/mnemopi/config.ts +267 -0
- package/src/mnemopi/embed-client.ts +246 -0
- package/src/mnemopi/embed-protocol.ts +35 -0
- package/src/mnemopi/embed-worker.ts +113 -0
- package/src/mnemopi/index.ts +3 -0
- package/src/mnemopi/state.ts +722 -0
- package/src/modes/acp/acp-agent.ts +2372 -0
- package/src/modes/acp/acp-client-bridge.ts +154 -0
- package/src/modes/acp/acp-event-mapper.ts +1002 -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/components/__tests__/move-overlay.test.ts +237 -0
- package/src/modes/components/__tests__/skill-message.test.ts +92 -0
- package/src/modes/components/advisor-config.ts +555 -0
- package/src/modes/components/advisor-message.ts +109 -0
- package/src/modes/components/agent-dashboard.ts +1183 -0
- package/src/modes/components/agent-hub.ts +586 -0
- package/src/modes/components/agent-transcript-viewer.ts +649 -0
- package/src/modes/components/assistant-message.ts +869 -0
- package/src/modes/components/background-tan-message.ts +36 -0
- package/src/modes/components/bash-execution.ts +229 -0
- package/src/modes/components/bordered-loader.ts +41 -0
- package/src/modes/components/btw-panel.ts +124 -0
- package/src/modes/components/cache-invalidation-marker.ts +110 -0
- package/src/modes/components/chat-block.ts +111 -0
- package/src/modes/components/chat-transcript-builder.ts +449 -0
- package/src/modes/components/collab-prompt-message.ts +32 -0
- package/src/modes/components/compaction-summary-message.ts +215 -0
- package/src/modes/components/copy-selector.ts +206 -0
- package/src/modes/components/countdown-timer.ts +75 -0
- package/src/modes/components/custom-editor.test.ts +283 -0
- package/src/modes/components/custom-editor.ts +835 -0
- package/src/modes/components/custom-message.ts +67 -0
- package/src/modes/components/diff.ts +254 -0
- package/src/modes/components/dynamic-border.ts +34 -0
- package/src/modes/components/error-banner.ts +33 -0
- package/src/modes/components/eval-execution.ts +167 -0
- package/src/modes/components/execution-shared.ts +101 -0
- package/src/modes/components/extensions/extension-dashboard.ts +492 -0
- package/src/modes/components/extensions/extension-list.ts +507 -0
- package/src/modes/components/extensions/index.ts +9 -0
- package/src/modes/components/extensions/inspector-panel.ts +321 -0
- package/src/modes/components/extensions/state-manager.ts +648 -0
- package/src/modes/components/extensions/types.ts +186 -0
- package/src/modes/components/footer.ts +276 -0
- package/src/modes/components/history-search.ts +268 -0
- package/src/modes/components/hook-editor.ts +183 -0
- package/src/modes/components/hook-input.ts +87 -0
- package/src/modes/components/hook-message.ts +67 -0
- package/src/modes/components/hook-selector.ts +678 -0
- package/src/modes/components/index.ts +40 -0
- package/src/modes/components/keybinding-hints.ts +65 -0
- package/src/modes/components/late-diagnostics-message.ts +60 -0
- package/src/modes/components/login-dialog.ts +178 -0
- package/src/modes/components/logout-account-selector.ts +130 -0
- package/src/modes/components/mcp-add-wizard.ts +1408 -0
- package/src/modes/components/message-frame.ts +92 -0
- package/src/modes/components/model-selector.ts +1267 -0
- package/src/modes/components/move-overlay.ts +294 -0
- package/src/modes/components/oauth-selector.ts +457 -0
- package/src/modes/components/omfg-panel.ts +141 -0
- package/src/modes/components/overlay-box.ts +109 -0
- package/src/modes/components/plan-review-overlay.ts +847 -0
- package/src/modes/components/plan-toc.ts +138 -0
- package/src/modes/components/plugin-selector.ts +100 -0
- package/src/modes/components/plugin-settings.ts +745 -0
- package/src/modes/components/queue-mode-selector.ts +61 -0
- package/src/modes/components/read-tool-group.ts +676 -0
- package/src/modes/components/reset-usage-selector.ts +161 -0
- package/src/modes/components/segment-track.ts +89 -0
- package/src/modes/components/select-list-mouse-routing.ts +35 -0
- package/src/modes/components/selector-helpers.ts +129 -0
- package/src/modes/components/session-selector.ts +744 -0
- package/src/modes/components/settings-defs.ts +238 -0
- package/src/modes/components/settings-selector.ts +1265 -0
- package/src/modes/components/show-images-selector.ts +50 -0
- package/src/modes/components/skill-message.ts +110 -0
- package/src/modes/components/snapcompact-shape-preview-doc.md +18 -0
- package/src/modes/components/snapcompact-shape-preview.ts +192 -0
- package/src/modes/components/status-line/component.test.ts +44 -0
- package/src/modes/components/status-line/component.ts +1308 -0
- package/src/modes/components/status-line/context-thresholds.ts +86 -0
- package/src/modes/components/status-line/git-utils.ts +42 -0
- package/src/modes/components/status-line/index.ts +5 -0
- package/src/modes/components/status-line/presets.ts +106 -0
- package/src/modes/components/status-line/segments.ts +663 -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 +147 -0
- package/src/modes/components/theme-selector.ts +68 -0
- package/src/modes/components/thinking-selector.ts +57 -0
- package/src/modes/components/tiny-title-download-progress.ts +90 -0
- package/src/modes/components/tips.txt +24 -0
- package/src/modes/components/todo-reminder.ts +43 -0
- package/src/modes/components/tool-execution.ts +1308 -0
- package/src/modes/components/transcript-container.ts +456 -0
- package/src/modes/components/tree-selector.ts +1002 -0
- package/src/modes/components/ttsr-notification.ts +123 -0
- package/src/modes/components/usage-row.ts +32 -0
- package/src/modes/components/user-message-selector.ts +227 -0
- package/src/modes/components/user-message.ts +68 -0
- package/src/modes/components/visual-truncate.ts +63 -0
- package/src/modes/components/welcome.ts +579 -0
- package/src/modes/controllers/btw-controller.ts +198 -0
- package/src/modes/controllers/command-controller-shared.ts +109 -0
- package/src/modes/controllers/command-controller.ts +1751 -0
- package/src/modes/controllers/event-controller.ts +1497 -0
- package/src/modes/controllers/extension-ui-controller.ts +977 -0
- package/src/modes/controllers/input-controller.ts +1851 -0
- package/src/modes/controllers/mcp-command-controller.ts +2364 -0
- package/src/modes/controllers/omfg-controller.ts +283 -0
- package/src/modes/controllers/omfg-rule.ts +647 -0
- package/src/modes/controllers/selector-controller.ts +1443 -0
- package/src/modes/controllers/session-focus-controller.ts +112 -0
- package/src/modes/controllers/ssh-command-controller.ts +384 -0
- package/src/modes/controllers/streaming-reveal.ts +392 -0
- package/src/modes/controllers/tan-command-controller.ts +190 -0
- package/src/modes/controllers/todo-command-controller.ts +484 -0
- package/src/modes/controllers/tool-args-reveal.ts +582 -0
- package/src/modes/data/emojis.json +1 -0
- package/src/modes/emoji-autocomplete.ts +285 -0
- package/src/modes/gradient-highlight.ts +99 -0
- package/src/modes/image-references.ts +137 -0
- package/src/modes/index.ts +17 -0
- package/src/modes/interactive-mode.ts +4223 -0
- package/src/modes/internal-url-autocomplete.ts +158 -0
- package/src/modes/loop-limit.ts +192 -0
- package/src/modes/magic-keywords.ts +42 -0
- package/src/modes/markdown-prose.ts +247 -0
- package/src/modes/oauth-manual-input.ts +69 -0
- package/src/modes/orchestrate.ts +42 -0
- package/src/modes/print-mode.ts +130 -0
- package/src/modes/prompt-action-autocomplete.ts +262 -0
- package/src/modes/rpc/host-tools.ts +186 -0
- package/src/modes/rpc/host-uris.ts +235 -0
- package/src/modes/rpc/rpc-client.ts +1033 -0
- package/src/modes/rpc/rpc-mode.ts +1311 -0
- package/src/modes/rpc/rpc-subagents.ts +265 -0
- package/src/modes/rpc/rpc-types.ts +499 -0
- package/src/modes/running-subagent-badge.ts +13 -0
- package/src/modes/runtime-init.ts +142 -0
- package/src/modes/session-observer-registry.ts +215 -0
- package/src/modes/session-teardown.test.ts +219 -0
- package/src/modes/session-teardown.ts +82 -0
- package/src/modes/setup-version.ts +11 -0
- package/src/modes/setup-wizard/index.ts +101 -0
- package/src/modes/setup-wizard/lazy.ts +16 -0
- package/src/modes/setup-wizard/scenes/glyph.ts +103 -0
- package/src/modes/setup-wizard/scenes/outro.ts +35 -0
- package/src/modes/setup-wizard/scenes/providers.ts +104 -0
- package/src/modes/setup-wizard/scenes/sign-in.ts +304 -0
- package/src/modes/setup-wizard/scenes/splash.ts +201 -0
- package/src/modes/setup-wizard/scenes/theme.ts +320 -0
- package/src/modes/setup-wizard/scenes/types.ts +57 -0
- package/src/modes/setup-wizard/scenes/web-search.ts +140 -0
- package/src/modes/setup-wizard/startup-splash.ts +107 -0
- package/src/modes/setup-wizard/wizard-overlay.ts +335 -0
- package/src/modes/shared.ts +49 -0
- package/src/modes/skill-command.ts +91 -0
- package/src/modes/theme/dark.json +95 -0
- package/src/modes/theme/defaults/alabaster.json +93 -0
- package/src/modes/theme/defaults/amethyst.json +96 -0
- package/src/modes/theme/defaults/anthracite.json +93 -0
- package/src/modes/theme/defaults/basalt.json +91 -0
- package/src/modes/theme/defaults/birch.json +95 -0
- package/src/modes/theme/defaults/dark-abyss.json +91 -0
- package/src/modes/theme/defaults/dark-arctic.json +104 -0
- package/src/modes/theme/defaults/dark-aurora.json +95 -0
- package/src/modes/theme/defaults/dark-catppuccin.json +107 -0
- package/src/modes/theme/defaults/dark-cavern.json +91 -0
- package/src/modes/theme/defaults/dark-copper.json +95 -0
- package/src/modes/theme/defaults/dark-cosmos.json +90 -0
- package/src/modes/theme/defaults/dark-cyberpunk.json +102 -0
- package/src/modes/theme/defaults/dark-dracula.json +98 -0
- package/src/modes/theme/defaults/dark-eclipse.json +91 -0
- package/src/modes/theme/defaults/dark-ember.json +95 -0
- package/src/modes/theme/defaults/dark-equinox.json +90 -0
- package/src/modes/theme/defaults/dark-forest.json +96 -0
- package/src/modes/theme/defaults/dark-github.json +105 -0
- package/src/modes/theme/defaults/dark-gruvbox.json +112 -0
- package/src/modes/theme/defaults/dark-lavender.json +95 -0
- package/src/modes/theme/defaults/dark-lunar.json +89 -0
- package/src/modes/theme/defaults/dark-midnight.json +95 -0
- package/src/modes/theme/defaults/dark-monochrome.json +94 -0
- package/src/modes/theme/defaults/dark-monokai.json +98 -0
- package/src/modes/theme/defaults/dark-nebula.json +90 -0
- package/src/modes/theme/defaults/dark-nord.json +97 -0
- package/src/modes/theme/defaults/dark-ocean.json +101 -0
- package/src/modes/theme/defaults/dark-one.json +100 -0
- package/src/modes/theme/defaults/dark-poimandres.json +142 -0
- package/src/modes/theme/defaults/dark-rainforest.json +91 -0
- package/src/modes/theme/defaults/dark-reef.json +91 -0
- package/src/modes/theme/defaults/dark-retro.json +92 -0
- package/src/modes/theme/defaults/dark-rose-pine.json +96 -0
- package/src/modes/theme/defaults/dark-sakura.json +95 -0
- package/src/modes/theme/defaults/dark-slate.json +95 -0
- package/src/modes/theme/defaults/dark-solarized.json +97 -0
- package/src/modes/theme/defaults/dark-solstice.json +90 -0
- package/src/modes/theme/defaults/dark-starfall.json +91 -0
- package/src/modes/theme/defaults/dark-sunset.json +99 -0
- package/src/modes/theme/defaults/dark-swamp.json +90 -0
- package/src/modes/theme/defaults/dark-synthwave.json +103 -0
- package/src/modes/theme/defaults/dark-taiga.json +91 -0
- package/src/modes/theme/defaults/dark-terminal.json +95 -0
- package/src/modes/theme/defaults/dark-tokyo-night.json +101 -0
- package/src/modes/theme/defaults/dark-tundra.json +91 -0
- package/src/modes/theme/defaults/dark-twilight.json +91 -0
- package/src/modes/theme/defaults/dark-volcanic.json +91 -0
- package/src/modes/theme/defaults/graphite.json +92 -0
- package/src/modes/theme/defaults/index.ts +199 -0
- package/src/modes/theme/defaults/light-arctic.json +107 -0
- package/src/modes/theme/defaults/light-aurora-day.json +91 -0
- package/src/modes/theme/defaults/light-canyon.json +91 -0
- package/src/modes/theme/defaults/light-catppuccin.json +106 -0
- package/src/modes/theme/defaults/light-cirrus.json +90 -0
- package/src/modes/theme/defaults/light-coral.json +95 -0
- package/src/modes/theme/defaults/light-cyberpunk.json +96 -0
- package/src/modes/theme/defaults/light-dawn.json +90 -0
- package/src/modes/theme/defaults/light-dunes.json +91 -0
- package/src/modes/theme/defaults/light-eucalyptus.json +95 -0
- package/src/modes/theme/defaults/light-forest.json +100 -0
- package/src/modes/theme/defaults/light-frost.json +95 -0
- package/src/modes/theme/defaults/light-github.json +115 -0
- package/src/modes/theme/defaults/light-glacier.json +91 -0
- package/src/modes/theme/defaults/light-gruvbox.json +108 -0
- package/src/modes/theme/defaults/light-haze.json +90 -0
- package/src/modes/theme/defaults/light-honeycomb.json +95 -0
- package/src/modes/theme/defaults/light-lagoon.json +91 -0
- package/src/modes/theme/defaults/light-lavender.json +95 -0
- package/src/modes/theme/defaults/light-meadow.json +91 -0
- package/src/modes/theme/defaults/light-mint.json +95 -0
- package/src/modes/theme/defaults/light-monochrome.json +101 -0
- package/src/modes/theme/defaults/light-ocean.json +99 -0
- package/src/modes/theme/defaults/light-one.json +99 -0
- package/src/modes/theme/defaults/light-opal.json +91 -0
- package/src/modes/theme/defaults/light-orchard.json +91 -0
- package/src/modes/theme/defaults/light-paper.json +95 -0
- package/src/modes/theme/defaults/light-poimandres.json +142 -0
- package/src/modes/theme/defaults/light-prism.json +90 -0
- package/src/modes/theme/defaults/light-retro.json +98 -0
- package/src/modes/theme/defaults/light-sand.json +95 -0
- package/src/modes/theme/defaults/light-savanna.json +91 -0
- package/src/modes/theme/defaults/light-solarized.json +102 -0
- package/src/modes/theme/defaults/light-soleil.json +90 -0
- package/src/modes/theme/defaults/light-sunset.json +99 -0
- package/src/modes/theme/defaults/light-synthwave.json +98 -0
- package/src/modes/theme/defaults/light-tokyo-night.json +111 -0
- package/src/modes/theme/defaults/light-wetland.json +91 -0
- package/src/modes/theme/defaults/light-zenith.json +89 -0
- package/src/modes/theme/defaults/limestone.json +94 -0
- package/src/modes/theme/defaults/mahogany.json +97 -0
- package/src/modes/theme/defaults/marble.json +93 -0
- package/src/modes/theme/defaults/obsidian.json +91 -0
- package/src/modes/theme/defaults/onyx.json +91 -0
- package/src/modes/theme/defaults/pearl.json +93 -0
- package/src/modes/theme/defaults/porcelain.json +91 -0
- package/src/modes/theme/defaults/quartz.json +96 -0
- package/src/modes/theme/defaults/sandstone.json +95 -0
- package/src/modes/theme/defaults/titanium.json +90 -0
- package/src/modes/theme/light.json +93 -0
- package/src/modes/theme/mermaid-cache.ts +92 -0
- package/src/modes/theme/mermaid-rendering.test.ts +53 -0
- package/src/modes/theme/shimmer.ts +269 -0
- package/src/modes/theme/theme-schema.json +459 -0
- package/src/modes/theme/theme.ts +3004 -0
- package/src/modes/turn-budget.ts +31 -0
- package/src/modes/types.ts +437 -0
- package/src/modes/ultrathink.ts +41 -0
- package/src/modes/utils/context-usage.ts +432 -0
- package/src/modes/utils/copy-targets.ts +378 -0
- package/src/modes/utils/hotkeys-markdown.ts +62 -0
- package/src/modes/utils/interactive-context-helpers.ts +27 -0
- package/src/modes/utils/keybinding-matchers.ts +86 -0
- package/src/modes/utils/tools-markdown.ts +27 -0
- package/src/modes/utils/transcript-render-helpers.ts +184 -0
- package/src/modes/utils/ui-helpers.ts +864 -0
- package/src/modes/workflow.ts +42 -0
- package/src/plan-mode/approved-plan-prompt.test.ts +36 -0
- package/src/plan-mode/approved-plan.ts +186 -0
- package/src/plan-mode/plan-handoff.ts +37 -0
- package/src/plan-mode/plan-protection.ts +31 -0
- package/src/plan-mode/state.ts +6 -0
- package/src/priority.json +60 -0
- package/src/prompts/advisor/active-repo-watchdog.md +6 -0
- package/src/prompts/advisor/advise-tool.md +3 -0
- package/src/prompts/advisor/context-files.md +8 -0
- package/src/prompts/advisor/system.md +89 -0
- package/src/prompts/agents/designer.md +74 -0
- package/src/prompts/agents/explore.md +58 -0
- package/src/prompts/agents/frontmatter.md +11 -0
- package/src/prompts/agents/init.md +33 -0
- package/src/prompts/agents/librarian.md +119 -0
- package/src/prompts/agents/plan.md +48 -0
- package/src/prompts/agents/reviewer.md +140 -0
- package/src/prompts/agents/task.md +17 -0
- package/src/prompts/agents/tester.md +111 -0
- package/src/prompts/bench.md +6 -0
- package/src/prompts/ci-green-request.md +36 -0
- package/src/prompts/dry-balance-bench.md +8 -0
- package/src/prompts/goals/goal-budget-limit.md +16 -0
- package/src/prompts/goals/goal-continuation.md +28 -0
- package/src/prompts/goals/goal-mode-active.md +23 -0
- package/src/prompts/goals/goal-mode-context.md +4 -0
- package/src/prompts/goals/goal-todo-context.md +20 -0
- package/src/prompts/goals/guided-goal-interview.md +8 -0
- package/src/prompts/goals/guided-goal-system.md +12 -0
- package/src/prompts/memories/consolidation.md +30 -0
- package/src/prompts/memories/consolidation_system.md +4 -0
- package/src/prompts/memories/read-path.md +17 -0
- package/src/prompts/memories/stage_one_input.md +6 -0
- package/src/prompts/memories/stage_one_system.md +21 -0
- package/src/prompts/review-custom-request.md +21 -0
- package/src/prompts/review-headless-request.md +16 -0
- package/src/prompts/review-request.md +68 -0
- package/src/prompts/skills/autoload.md +8 -0
- package/src/prompts/skills/user-invocation.md +11 -0
- package/src/prompts/steering/parent-irc.md +5 -0
- package/src/prompts/steering/user-interjection.md +9 -0
- package/src/prompts/system/active-repo-context.md +4 -0
- package/src/prompts/system/agent-creation-architect.md +50 -0
- package/src/prompts/system/agent-creation-user.md +6 -0
- package/src/prompts/system/auto-continue.md +1 -0
- package/src/prompts/system/auto-thinking-difficulty-local.md +14 -0
- package/src/prompts/system/auto-thinking-difficulty.md +12 -0
- package/src/prompts/system/autolearn-guidance-learn.md +1 -0
- package/src/prompts/system/autolearn-guidance.md +7 -0
- package/src/prompts/system/autolearn-nudge-autocontinue.md +5 -0
- package/src/prompts/system/background-tan-dispatch.md +8 -0
- package/src/prompts/system/btw-user.md +8 -0
- package/src/prompts/system/commit-message-system.md +14 -0
- package/src/prompts/system/custom-system-prompt.md +64 -0
- package/src/prompts/system/eager-task.md +7 -0
- package/src/prompts/system/eager-todo.md +18 -0
- package/src/prompts/system/empty-stop-retry.md +4 -0
- package/src/prompts/system/gemini-tool-call-reminder.md +9 -0
- package/src/prompts/system/interrupted-thinking.md +7 -0
- package/src/prompts/system/irc-autoreply.md +6 -0
- package/src/prompts/system/irc-incoming.md +9 -0
- package/src/prompts/system/manual-continue.md +7 -0
- package/src/prompts/system/memory-consolidation-system.md +8 -0
- package/src/prompts/system/memory-extraction-system.md +26 -0
- package/src/prompts/system/mid-run-todo-nudge.md +3 -0
- package/src/prompts/system/omfg-user.md +50 -0
- package/src/prompts/system/orchestrate-notice.md +40 -0
- package/src/prompts/system/personalities/default.md +18 -0
- package/src/prompts/system/personalities/friendly.md +17 -0
- package/src/prompts/system/personalities/pragmatic.md +15 -0
- package/src/prompts/system/plan-mode-active.md +118 -0
- package/src/prompts/system/plan-mode-approved.md +22 -0
- package/src/prompts/system/plan-mode-compact-instructions.md +17 -0
- package/src/prompts/system/plan-mode-reference.md +10 -0
- package/src/prompts/system/plan-mode-subagent.md +33 -0
- package/src/prompts/system/plan-mode-tool-decision-reminder.md +9 -0
- package/src/prompts/system/project-prompt.md +54 -0
- package/src/prompts/system/recap-user.md +9 -0
- package/src/prompts/system/rewind-report.md +6 -0
- package/src/prompts/system/side-channel-no-tools.md +3 -0
- package/src/prompts/system/snapcompact-context-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-context-stub.md +1 -0
- package/src/prompts/system/snapcompact-system-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-system-stub.md +1 -0
- package/src/prompts/system/snapcompact-toolresult-note.md +1 -0
- package/src/prompts/system/speech-rewrite.md +15 -0
- package/src/prompts/system/subagent-system-prompt.md +77 -0
- package/src/prompts/system/subagent-user-prompt.md +3 -0
- package/src/prompts/system/subagent-yield-reminder.md +13 -0
- package/src/prompts/system/system-prompt.md +248 -0
- package/src/prompts/system/thinking-loop-redirect.md +10 -0
- package/src/prompts/system/tiny-title-system.md +8 -0
- package/src/prompts/system/title-marker-instruction.md +1 -0
- package/src/prompts/system/title-system-marker.md +17 -0
- package/src/prompts/system/title-system.md +17 -0
- package/src/prompts/system/tool-call-loop-redirect.md +8 -0
- package/src/prompts/system/ttsr-interrupt.md +7 -0
- package/src/prompts/system/ttsr-tool-reminder.md +5 -0
- package/src/prompts/system/ultrathink-notice.md +3 -0
- package/src/prompts/system/unexpected-stop-classifier.md +17 -0
- package/src/prompts/system/unexpected-stop-retry.md +4 -0
- package/src/prompts/system/web-search.md +25 -0
- package/src/prompts/system/workflow-notice.md +70 -0
- package/src/prompts/tools/apply-patch.md +65 -0
- package/src/prompts/tools/ask.md +22 -0
- package/src/prompts/tools/ast-edit.md +22 -0
- package/src/prompts/tools/ast-grep.md +25 -0
- package/src/prompts/tools/async-result.md +8 -0
- package/src/prompts/tools/bash.md +57 -0
- package/src/prompts/tools/browser.md +45 -0
- package/src/prompts/tools/checkpoint.md +15 -0
- package/src/prompts/tools/debug.md +17 -0
- package/src/prompts/tools/eval.md +72 -0
- package/src/prompts/tools/github.md +17 -0
- package/src/prompts/tools/glob.md +15 -0
- package/src/prompts/tools/goal.md +11 -0
- package/src/prompts/tools/grep.md +22 -0
- package/src/prompts/tools/image-attachment-describe-system.md +8 -0
- package/src/prompts/tools/image-attachment-describe.md +10 -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 +22 -0
- package/src/prompts/tools/irc.md +24 -0
- package/src/prompts/tools/job.md +11 -0
- package/src/prompts/tools/learn.md +7 -0
- package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
- package/src/prompts/tools/lsp.md +28 -0
- package/src/prompts/tools/manage-skill.md +9 -0
- package/src/prompts/tools/memory-edit.md +8 -0
- package/src/prompts/tools/patch.md +57 -0
- package/src/prompts/tools/read.md +77 -0
- package/src/prompts/tools/recall.md +5 -0
- package/src/prompts/tools/reflect.md +5 -0
- package/src/prompts/tools/replace.md +29 -0
- package/src/prompts/tools/resolve.md +4 -0
- package/src/prompts/tools/retain.md +6 -0
- package/src/prompts/tools/rewind.md +14 -0
- package/src/prompts/tools/search-tool-bm25.md +32 -0
- package/src/prompts/tools/ssh.md +23 -0
- package/src/prompts/tools/task-summary.md +17 -0
- package/src/prompts/tools/task.md +68 -0
- package/src/prompts/tools/todo.md +39 -0
- package/src/prompts/tools/web-search.md +6 -0
- package/src/prompts/tools/write.md +14 -0
- package/src/registry/agent-lifecycle.ts +270 -0
- package/src/registry/agent-registry.ts +190 -0
- package/src/sdk.ts +3037 -0
- package/src/secrets/index.ts +123 -0
- package/src/secrets/obfuscator.ts +441 -0
- package/src/secrets/regex.ts +21 -0
- package/src/session/agent-session.ts +15855 -0
- package/src/session/agent-storage.ts +478 -0
- package/src/session/artifacts.ts +153 -0
- package/src/session/auth-broker-config.ts +92 -0
- package/src/session/auth-storage.ts +24 -0
- package/src/session/blob-store.ts +279 -0
- package/src/session/client-bridge.ts +85 -0
- package/src/session/codex-auto-reset.ts +202 -0
- package/src/session/compact-modes.ts +105 -0
- package/src/session/exit-diagnostics.ts +202 -0
- package/src/session/history-storage.ts +360 -0
- package/src/session/indexed-session-storage.ts +537 -0
- package/src/session/messages.test.ts +125 -0
- package/src/session/messages.ts +740 -0
- package/src/session/provider-image-budget.ts +86 -0
- package/src/session/redis-session-storage.ts +217 -0
- package/src/session/session-context.ts +442 -0
- package/src/session/session-dump-format.ts +216 -0
- package/src/session/session-entries.ts +241 -0
- package/src/session/session-history-format.ts +396 -0
- package/src/session/session-listing.ts +652 -0
- package/src/session/session-loader.ts +284 -0
- package/src/session/session-manager.ts +1995 -0
- package/src/session/session-migrations.ts +78 -0
- package/src/session/session-paths.ts +193 -0
- package/src/session/session-persistence.ts +266 -0
- package/src/session/session-storage.ts +734 -0
- package/src/session/session-title-slot.ts +141 -0
- package/src/session/settings-stream-fn.ts +73 -0
- package/src/session/shake-types.ts +43 -0
- package/src/session/snapcompact-inline.ts +561 -0
- package/src/session/snapcompact-savings-journal.ts +113 -0
- package/src/session/sql-session-storage.ts +374 -0
- package/src/session/streaming-output.ts +1330 -0
- package/src/session/tool-choice-queue.ts +290 -0
- package/src/session/turn-persistence.ts +142 -0
- package/src/session/unexpected-stop-classifier.ts +129 -0
- package/src/session/yield-queue.ts +183 -0
- package/src/slash-commands/acp-builtins.ts +70 -0
- package/src/slash-commands/available-commands.ts +105 -0
- package/src/slash-commands/builtin-registry.ts +2554 -0
- package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
- package/src/slash-commands/helpers/collab-qrcode.ts +28 -0
- package/src/slash-commands/helpers/context-report.ts +66 -0
- package/src/slash-commands/helpers/format.ts +46 -0
- package/src/slash-commands/helpers/logout.ts +88 -0
- package/src/slash-commands/helpers/marketplace-manager.ts +25 -0
- package/src/slash-commands/helpers/mcp.ts +533 -0
- package/src/slash-commands/helpers/parse.ts +85 -0
- package/src/slash-commands/helpers/reset-usage.ts +66 -0
- package/src/slash-commands/helpers/ssh.ts +195 -0
- package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
- package/src/slash-commands/helpers/todo.ts +285 -0
- package/src/slash-commands/helpers/usage-report.ts +162 -0
- package/src/slash-commands/marketplace-install-parser.ts +99 -0
- package/src/slash-commands/types.ts +137 -0
- package/src/ssh/__tests__/connection-manager-args.test.ts +191 -0
- package/src/ssh/__tests__/connection-manager-timeout.test.ts +61 -0
- package/src/ssh/__tests__/file-transfer-posix-guard.test.ts +105 -0
- package/src/ssh/__tests__/sshfs-mount.test.ts +13 -0
- package/src/ssh/config-writer.ts +183 -0
- package/src/ssh/connection-manager.ts +667 -0
- package/src/ssh/file-transfer.ts +214 -0
- package/src/ssh/ssh-executor.ts +178 -0
- package/src/ssh/sshfs-mount.ts +163 -0
- package/src/ssh/utils.ts +51 -0
- package/src/startup-splash.ts +19 -0
- package/src/stt/asr-client.ts +401 -0
- package/src/stt/asr-protocol.ts +65 -0
- package/src/stt/asr-worker.ts +638 -0
- package/src/stt/downloader.ts +144 -0
- package/src/stt/endpointer.ts +259 -0
- package/src/stt/index.ts +8 -0
- package/src/stt/models.ts +150 -0
- package/src/stt/recorder.ts +538 -0
- package/src/stt/stt-controller.ts +409 -0
- package/src/stt/submit-trigger.ts +74 -0
- package/src/stt/transcriber.ts +60 -0
- package/src/stt/wav.ts +173 -0
- package/src/subprocess/worker-client.ts +456 -0
- package/src/subprocess/worker-runtime.ts +494 -0
- package/src/system-prompt.test.ts +158 -0
- package/src/system-prompt.ts +787 -0
- package/src/task/agents.ts +166 -0
- package/src/task/commands.ts +132 -0
- package/src/task/discovery.ts +145 -0
- package/src/task/executor.ts +2481 -0
- package/src/task/index.ts +1481 -0
- package/src/task/isolation-runner.ts +384 -0
- package/src/task/name-generator.ts +1577 -0
- package/src/task/omp-command.ts +26 -0
- package/src/task/output-manager.ts +93 -0
- package/src/task/parallel.ts +178 -0
- package/src/task/persisted-revive.ts +128 -0
- package/src/task/provider-concurrency.ts +100 -0
- package/src/task/render.test.ts +121 -0
- package/src/task/render.ts +1761 -0
- package/src/task/renderer.ts +15 -0
- package/src/task/repair-args.ts +129 -0
- package/src/task/spawn-policy.test.ts +63 -0
- package/src/task/spawn-policy.ts +58 -0
- package/src/task/subprocess-tool-registry.ts +88 -0
- package/src/task/types.ts +495 -0
- package/src/task/worktree.ts +935 -0
- package/src/task/yield-assembly.ts +198 -0
- package/src/telemetry-export.ts +144 -0
- package/src/thinking.ts +219 -0
- package/src/tiny/device.ts +111 -0
- package/src/tiny/dtype.ts +101 -0
- package/src/tiny/models.ts +268 -0
- package/src/tiny/text.ts +336 -0
- package/src/tiny/title-client.ts +438 -0
- package/src/tiny/title-protocol.ts +56 -0
- package/src/tiny/worker.ts +351 -0
- package/src/tool-discovery/mode.ts +24 -0
- package/src/tool-discovery/tool-index.ts +271 -0
- package/src/tools/__tests__/eval-description.test.ts +19 -0
- package/src/tools/__tests__/json-tree.test.ts +35 -0
- package/src/tools/acp-bridge.ts +71 -0
- package/src/tools/approval.ts +189 -0
- package/src/tools/ask.ts +1213 -0
- package/src/tools/ast-edit.ts +708 -0
- package/src/tools/ast-grep.ts +520 -0
- package/src/tools/auto-generated-guard.ts +322 -0
- package/src/tools/bash-command-fixup.ts +37 -0
- package/src/tools/bash-interactive.ts +408 -0
- package/src/tools/bash-interceptor.ts +67 -0
- package/src/tools/bash-pty-selection.ts +14 -0
- package/src/tools/bash-skill-urls.ts +248 -0
- package/src/tools/bash.ts +1421 -0
- package/src/tools/browser/aria/aria-snapshot.bundle.txt +7 -0
- package/src/tools/browser/aria/aria-snapshot.ts +103 -0
- package/src/tools/browser/attach.ts +194 -0
- package/src/tools/browser/cmux/cmux-tab.ts +1378 -0
- package/src/tools/browser/cmux/rpc.ts +156 -0
- package/src/tools/browser/cmux/socket-client.ts +309 -0
- package/src/tools/browser/launch.ts +749 -0
- package/src/tools/browser/readable.ts +112 -0
- package/src/tools/browser/registry.ts +266 -0
- package/src/tools/browser/render.ts +223 -0
- package/src/tools/browser/run-cancellation.ts +47 -0
- package/src/tools/browser/tab-protocol.ts +107 -0
- package/src/tools/browser/tab-supervisor.ts +956 -0
- package/src/tools/browser/tab-worker-entry.ts +29 -0
- package/src/tools/browser/tab-worker.ts +1433 -0
- package/src/tools/browser.ts +409 -0
- package/src/tools/builtin-names.ts +58 -0
- package/src/tools/checkpoint.ts +150 -0
- package/src/tools/conflict-detect.ts +718 -0
- package/src/tools/context.ts +39 -0
- package/src/tools/debug.ts +1088 -0
- package/src/tools/eval-backends.ts +34 -0
- package/src/tools/eval-render.ts +776 -0
- package/src/tools/eval.ts +767 -0
- package/src/tools/fetch.ts +1966 -0
- package/src/tools/file-recorder.ts +35 -0
- package/src/tools/fs-cache-invalidation.ts +28 -0
- package/src/tools/gh-cache-invalidation.ts +255 -0
- package/src/tools/gh-format.ts +12 -0
- package/src/tools/gh-renderer.ts +484 -0
- package/src/tools/gh.ts +3752 -0
- package/src/tools/github-cache.ts +663 -0
- package/src/tools/glob.ts +639 -0
- package/src/tools/grep.ts +1836 -0
- package/src/tools/grouped-file-output.ts +210 -0
- package/src/tools/image-gen.ts +1587 -0
- package/src/tools/index.ts +682 -0
- package/src/tools/inspect-image-renderer.ts +132 -0
- package/src/tools/inspect-image.ts +260 -0
- package/src/tools/irc.ts +827 -0
- package/src/tools/job.ts +612 -0
- package/src/tools/json-tree.ts +260 -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/learn.ts +141 -0
- package/src/tools/list-limit.ts +40 -0
- package/src/tools/manage-skill.ts +100 -0
- package/src/tools/match-line-format.ts +20 -0
- package/src/tools/memory-edit.ts +59 -0
- package/src/tools/memory-recall.ts +102 -0
- package/src/tools/memory-reflect.ts +88 -0
- package/src/tools/memory-render.ts +202 -0
- package/src/tools/memory-retain.ts +89 -0
- package/src/tools/output-meta.ts +818 -0
- package/src/tools/output-schema-validator.ts +307 -0
- package/src/tools/path-utils.ts +1279 -0
- package/src/tools/plan-mode-guard.ts +155 -0
- package/src/tools/puppeteer/00_stealth_tampering.txt +44 -0
- package/src/tools/puppeteer/01_stealth_activity.txt +80 -0
- package/src/tools/puppeteer/02_stealth_hairline.txt +57 -0
- package/src/tools/puppeteer/03_stealth_botd.txt +380 -0
- package/src/tools/puppeteer/04_stealth_iframe.txt +174 -0
- package/src/tools/puppeteer/05_stealth_webgl.txt +233 -0
- package/src/tools/puppeteer/06_stealth_screen.txt +260 -0
- package/src/tools/puppeteer/07_stealth_fonts.txt +99 -0
- package/src/tools/puppeteer/08_stealth_audio.txt +63 -0
- package/src/tools/puppeteer/09_stealth_locale.txt +51 -0
- package/src/tools/puppeteer/10_stealth_plugins.txt +212 -0
- package/src/tools/puppeteer/11_stealth_hardware.txt +59 -0
- package/src/tools/puppeteer/12_stealth_codecs.txt +42 -0
- package/src/tools/puppeteer/13_stealth_worker.txt +235 -0
- package/src/tools/read.ts +3522 -0
- package/src/tools/render-utils.ts +913 -0
- package/src/tools/renderers.ts +107 -0
- package/src/tools/report-tool-issue.ts +530 -0
- package/src/tools/resolve.ts +302 -0
- package/src/tools/review.ts +261 -0
- package/src/tools/search-tool-bm25.ts +351 -0
- package/src/tools/sqlite-reader.ts +884 -0
- package/src/tools/ssh.ts +397 -0
- package/src/tools/todo.ts +944 -0
- package/src/tools/tool-errors.ts +62 -0
- package/src/tools/tool-result.ts +102 -0
- package/src/tools/tool-timeouts.ts +30 -0
- package/src/tools/tts.ts +266 -0
- package/src/tools/write.ts +1219 -0
- package/src/tools/yield.ts +455 -0
- package/src/tts/downloader.ts +64 -0
- package/src/tts/index.ts +10 -0
- package/src/tts/models.ts +137 -0
- package/src/tts/player.ts +137 -0
- package/src/tts/runtime.ts +21 -0
- package/src/tts/speakable.ts +382 -0
- package/src/tts/speech-enhancer.ts +204 -0
- package/src/tts/streaming-player.ts +321 -0
- package/src/tts/tts-client.ts +475 -0
- package/src/tts/tts-protocol.ts +69 -0
- package/src/tts/tts-worker.ts +434 -0
- package/src/tts/vocalizer.ts +393 -0
- package/src/tts/wav.ts +58 -0
- package/src/tui/code-cell.ts +268 -0
- package/src/tui/file-list.ts +55 -0
- package/src/tui/hyperlink.ts +178 -0
- package/src/tui/index.ts +13 -0
- package/src/tui/output-block.ts +251 -0
- package/src/tui/status-line.ts +54 -0
- package/src/tui/tree-list.ts +133 -0
- package/src/tui/types.ts +15 -0
- package/src/tui/utils.ts +103 -0
- package/src/tui/width-aware-text.ts +58 -0
- package/src/utils/active-repo-context.ts +143 -0
- package/src/utils/block-context.ts +312 -0
- package/src/utils/changelog.ts +132 -0
- package/src/utils/clipboard.ts +356 -0
- package/src/utils/command-args.ts +76 -0
- package/src/utils/commit-message-generator.ts +146 -0
- package/src/utils/edit-mode.ts +58 -0
- package/src/utils/enhanced-paste.ts +230 -0
- package/src/utils/event-bus.ts +33 -0
- package/src/utils/external-editor.ts +78 -0
- package/src/utils/fetch-timeout.ts +10 -0
- package/src/utils/file-display-mode.ts +44 -0
- package/src/utils/file-mentions.ts +293 -0
- package/src/utils/git.ts +2181 -0
- package/src/utils/image-loading.ts +231 -0
- package/src/utils/image-resize.ts +420 -0
- package/src/utils/image-vision-fallback.ts +196 -0
- package/src/utils/ipc.ts +38 -0
- package/src/utils/jj.ts +295 -0
- package/src/utils/lang-from-path.ts +244 -0
- package/src/utils/markit-cache.ts +166 -0
- package/src/utils/markit.ts +211 -0
- package/src/utils/mupdf-wasm-embed.ts +12 -0
- package/src/utils/open.ts +100 -0
- package/src/utils/prompt-path.ts +3 -0
- package/src/utils/qrcode.ts +535 -0
- package/src/utils/session-color.ts +142 -0
- package/src/utils/shell-snapshot-fn-env.sh +60 -0
- package/src/utils/shell-snapshot.ts +306 -0
- package/src/utils/sixel.ts +69 -0
- package/src/utils/thinking-display.ts +117 -0
- package/src/utils/title-generator.ts +348 -0
- package/src/utils/tool-choice.ts +49 -0
- package/src/utils/tools-manager.ts +429 -0
- package/src/utils/turndown.ts +83 -0
- package/src/utils/zip.ts +1091 -0
- package/src/web/kagi.ts +304 -0
- package/src/web/parallel.ts +354 -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 +652 -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 +800 -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 +94 -0
- package/src/web/scrapers/types.ts +354 -0
- package/src/web/scrapers/utils.ts +109 -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 +325 -0
- package/src/web/search/index.ts +312 -0
- package/src/web/search/provider.ts +214 -0
- package/src/web/search/providers/anthropic.ts +343 -0
- package/src/web/search/providers/base.ts +91 -0
- package/src/web/search/providers/brave.ts +152 -0
- package/src/web/search/providers/codex.ts +593 -0
- package/src/web/search/providers/duckduckgo.ts +212 -0
- package/src/web/search/providers/exa.ts +484 -0
- package/src/web/search/providers/firecrawl.ts +144 -0
- package/src/web/search/providers/gemini.ts +618 -0
- package/src/web/search/providers/jina.ts +111 -0
- package/src/web/search/providers/kagi.ts +86 -0
- package/src/web/search/providers/kimi.ts +196 -0
- package/src/web/search/providers/parallel.ts +136 -0
- package/src/web/search/providers/perplexity-auth.ts +133 -0
- package/src/web/search/providers/perplexity.ts +878 -0
- package/src/web/search/providers/searxng.ts +325 -0
- package/src/web/search/providers/synthetic.ts +114 -0
- package/src/web/search/providers/tavily.ts +193 -0
- package/src/web/search/providers/tinyfish.ts +159 -0
- package/src/web/search/providers/utils.ts +128 -0
- package/src/web/search/providers/xai.ts +292 -0
- package/src/web/search/providers/zai.ts +419 -0
- package/src/web/search/render.ts +262 -0
- package/src/web/search/types.ts +470 -0
- package/src/web/search/utils.ts +17 -0
- package/src/workspace-tree.ts +326 -0
|
@@ -0,0 +1,1279 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import * as url from "node:url";
|
|
5
|
+
import { isEnoent, isEnotdir, stripWindowsExtendedLengthPathPrefix } from "@oh-my-pi-zen/pi-utils";
|
|
6
|
+
import type { Skill } from "../extensibility/skills";
|
|
7
|
+
import { InternalUrlRouter, type LocalProtocolOptions } from "../internal-urls";
|
|
8
|
+
import { ToolError } from "./tool-errors";
|
|
9
|
+
|
|
10
|
+
const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
11
|
+
// A single line-range chunk: `N`, `N-M`, `N+K`, or open-ended `N-`. `..` is
|
|
12
|
+
// accepted everywhere `-` is, as a forgiving alias for Rust/Python-style ranges
|
|
13
|
+
// (e.g. `2724..2727` == `2724-2727`, `2724..` == `2724-`); it is normalized to
|
|
14
|
+
// `-` in parseLineRangeChunk. Keep this fragment and LINE_RANGE_CHUNK_RE in sync.
|
|
15
|
+
const RANGE_CHUNK_SRC = String.raw`L?\d+(?:(?:[-+]|\.\.)L?\d+|-|\.\.)?`;
|
|
16
|
+
const RANGE_LIST_SRC = `${RANGE_CHUNK_SRC}(?:,${RANGE_CHUNK_SRC})*`;
|
|
17
|
+
const FILE_LINE_RANGE_RE = new RegExp(`^(?:${RANGE_LIST_SRC}|raw|conflicts)$`, "i");
|
|
18
|
+
const FILE_LINE_RANGE_ONLY_RE = new RegExp(`^${RANGE_LIST_SRC}$`, "i");
|
|
19
|
+
const FILE_RAW_ONLY_RE = /^raw$/i;
|
|
20
|
+
// Permissive selector chunk for internal URLs — accepts well-formed selectors
|
|
21
|
+
// plus common malformed shapes (e.g. `:-N`) so the read tool peels the entire
|
|
22
|
+
// selector chain off before dispatching to a protocol handler.
|
|
23
|
+
const INTERNAL_URL_SELECTOR_PART_RE = new RegExp(
|
|
24
|
+
String.raw`^(?:raw|conflicts|${RANGE_LIST_SRC}|-\d+(?:[-+]\d+)?)$`,
|
|
25
|
+
"i",
|
|
26
|
+
);
|
|
27
|
+
// Schemes whose host grammar is identifier-shaped, so any trailing
|
|
28
|
+
// `:<selector-chunk>` is unambiguously a read-tool selector. `mcp://` is
|
|
29
|
+
// excluded because mcp resource URIs may legitimately contain colons. `ssh://`
|
|
30
|
+
// is included despite an optional `:port`; `splitInternalUrlSel` skips the peel
|
|
31
|
+
// for an `ssh://host:port` that has no `/path`, so the port colon is never
|
|
32
|
+
// mistaken for a selector (a real ssh selector trails the `/path`, e.g.
|
|
33
|
+
// `ssh://h/f:1-5`).
|
|
34
|
+
const INTERNAL_SCHEMES_WITH_SELECTORS: Record<string, true> = {
|
|
35
|
+
agent: true,
|
|
36
|
+
artifact: true,
|
|
37
|
+
issue: true,
|
|
38
|
+
local: true,
|
|
39
|
+
memory: true,
|
|
40
|
+
omp: true,
|
|
41
|
+
pr: true,
|
|
42
|
+
rule: true,
|
|
43
|
+
skill: true,
|
|
44
|
+
ssh: true,
|
|
45
|
+
vault: true,
|
|
46
|
+
};
|
|
47
|
+
// Schemes whose resource URIs are server-defined and may legitimately end
|
|
48
|
+
// with selector-shaped tails (e.g. `:raw`, `:conflicts`, `:1-50`, `/:raw`).
|
|
49
|
+
// `McpProtocolHandler` resolves by exact URI match (`r.uri === uri`), so
|
|
50
|
+
// peeling syntactically can make valid resources unreachable. Keep these
|
|
51
|
+
// schemes opaque; selector support for them needs a resolver-aware path that
|
|
52
|
+
// tries the exact URI before interpreting any suffix as a read selector.
|
|
53
|
+
const OPAQUE_RESOURCE_SCHEMES: ReadonlySet<string> = new Set(["mcp"]);
|
|
54
|
+
const INTERNAL_URL_SCHEME_RE = /^([a-z][a-z0-9+.-]*):\/\//i;
|
|
55
|
+
const NARROW_NO_BREAK_SPACE = "\u202F";
|
|
56
|
+
const TOP_LEVEL_INTERNAL_URL_PREFIXES = [
|
|
57
|
+
"agent://",
|
|
58
|
+
"artifact://",
|
|
59
|
+
"skill://",
|
|
60
|
+
"rule://",
|
|
61
|
+
"local://",
|
|
62
|
+
"mcp://",
|
|
63
|
+
"ssh://",
|
|
64
|
+
"vault://",
|
|
65
|
+
] as const;
|
|
66
|
+
|
|
67
|
+
function normalizeUnicodeSpaces(str: string): string {
|
|
68
|
+
return str.replace(UNICODE_SPACES, " ");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function tryMacOSScreenshotPath(filePath: string): string {
|
|
72
|
+
return filePath.replace(/ (AM|PM)\./g, `${NARROW_NO_BREAK_SPACE}$1.`);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function tryNFDVariant(filePath: string): string {
|
|
76
|
+
// macOS stores filenames in NFD (decomposed) form, try converting user input to NFD
|
|
77
|
+
return filePath.normalize("NFD");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function tryCurlyQuoteVariant(filePath: string): string {
|
|
81
|
+
// macOS uses U+2019 (right single quotation mark) in screenshot names like "Capture d'écran"
|
|
82
|
+
// Users typically type U+0027 (straight apostrophe)
|
|
83
|
+
return filePath.replace(/'/g, "\u2019");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function tryShellEscapedPath(filePath: string): string {
|
|
87
|
+
if (!filePath.includes("\\") || !filePath.includes("/")) return filePath;
|
|
88
|
+
return filePath.replace(/\\([ \t"'(){}[\]])/g, "$1");
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function fileExists(filePath: string): boolean {
|
|
92
|
+
try {
|
|
93
|
+
fs.accessSync(filePath, fs.constants.F_OK);
|
|
94
|
+
return true;
|
|
95
|
+
} catch {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function normalizeAtPrefix(filePath: string): string {
|
|
101
|
+
if (!filePath.startsWith("@")) return filePath;
|
|
102
|
+
|
|
103
|
+
const withoutAt = filePath.slice(1);
|
|
104
|
+
|
|
105
|
+
// We only treat a leading "@" as a shorthand for a small set of well-known
|
|
106
|
+
// syntaxes. This avoids mangling literal paths like "@my-file.txt".
|
|
107
|
+
if (
|
|
108
|
+
withoutAt.startsWith("/") ||
|
|
109
|
+
withoutAt === "~" ||
|
|
110
|
+
withoutAt.startsWith("~/") ||
|
|
111
|
+
// Windows absolute paths (drive letters / UNC / root-relative)
|
|
112
|
+
path.win32.isAbsolute(withoutAt) ||
|
|
113
|
+
// Internal URL shorthands
|
|
114
|
+
withoutAt.startsWith("agent://") ||
|
|
115
|
+
withoutAt.startsWith("artifact://") ||
|
|
116
|
+
withoutAt.startsWith("skill://") ||
|
|
117
|
+
withoutAt.startsWith("rule://") ||
|
|
118
|
+
withoutAt.startsWith("local:") ||
|
|
119
|
+
withoutAt.startsWith("mcp://")
|
|
120
|
+
) {
|
|
121
|
+
return withoutAt;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return filePath;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function stripFileUrl(filePath: string): string {
|
|
128
|
+
if (!filePath.toLowerCase().startsWith("file://")) return filePath;
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
return url.fileURLToPath(filePath);
|
|
132
|
+
} catch {
|
|
133
|
+
return filePath;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export function expandTilde(filePath: string, home?: string): string {
|
|
138
|
+
const h = home ?? os.homedir();
|
|
139
|
+
if (filePath === "~") return h;
|
|
140
|
+
if (filePath.startsWith("~/") || filePath.startsWith("~\\")) {
|
|
141
|
+
return h + filePath.slice(1);
|
|
142
|
+
}
|
|
143
|
+
if (filePath.startsWith("~")) {
|
|
144
|
+
return path.join(h, filePath.slice(1));
|
|
145
|
+
}
|
|
146
|
+
return filePath;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function expandPath(filePath: string): string {
|
|
150
|
+
const normalized = stripWindowsExtendedLengthPathPrefix(
|
|
151
|
+
stripFileUrl(normalizeUnicodeSpaces(normalizeAtPrefix(filePath))),
|
|
152
|
+
);
|
|
153
|
+
return expandTilde(normalized);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function isAsciiDriveLetter(value: string): boolean {
|
|
157
|
+
if (value.length !== 1) return false;
|
|
158
|
+
const code = value.charCodeAt(0);
|
|
159
|
+
return (code >= 65 && code <= 90) || (code >= 97 && code <= 122);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function windowsDriveAliasPath(filePath: string): string | undefined {
|
|
163
|
+
if (!filePath.startsWith("/")) return undefined;
|
|
164
|
+
const parts = filePath.split("/");
|
|
165
|
+
if (parts[0] !== "") return undefined;
|
|
166
|
+
|
|
167
|
+
let drive: string | undefined;
|
|
168
|
+
let tailStart = 2;
|
|
169
|
+
if (parts.length >= 2 && isAsciiDriveLetter(parts[1] ?? "")) {
|
|
170
|
+
drive = parts[1]!.toUpperCase();
|
|
171
|
+
} else if (parts.length >= 3 && (parts[1] ?? "").toLowerCase() === "mnt" && isAsciiDriveLetter(parts[2] ?? "")) {
|
|
172
|
+
drive = parts[2]!.toUpperCase();
|
|
173
|
+
tailStart = 3;
|
|
174
|
+
}
|
|
175
|
+
if (!drive) return undefined;
|
|
176
|
+
|
|
177
|
+
const tail = parts.slice(tailStart).filter(Boolean).join("\\");
|
|
178
|
+
return tail ? `${drive}:\\${tail}` : `${drive}:\\`;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export function normalizeWindowsDriveAliasPath(filePath: string, platform: NodeJS.Platform = process.platform): string {
|
|
182
|
+
if (platform !== "win32") return filePath;
|
|
183
|
+
return windowsDriveAliasPath(filePath) ?? filePath;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Inclusive line range describing one selector segment (e.g. `50-100`,
|
|
188
|
+
* `301-`, or `50+10`). `endLine` is `undefined` for open-ended ranges.
|
|
189
|
+
*/
|
|
190
|
+
export interface LineRange {
|
|
191
|
+
startLine: number;
|
|
192
|
+
endLine: number | undefined;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const LINE_RANGE_CHUNK_RE = /^L?(\d+)(?:(\.\.|[-+])L?(\d+)?)?$/i;
|
|
196
|
+
|
|
197
|
+
/** Parse a single `N`, `N-M`, `N-`, `N+K`, or `..`-aliased (`N..M`, `N..`) chunk. Throws via {@link ToolError} on invalid bounds. */
|
|
198
|
+
export function parseLineRangeChunk(sel: string): LineRange | null {
|
|
199
|
+
const lineMatch = LINE_RANGE_CHUNK_RE.exec(sel);
|
|
200
|
+
if (!lineMatch) return null;
|
|
201
|
+
const rawStart = Number.parseInt(lineMatch[1]!, 10);
|
|
202
|
+
if (rawStart < 1) {
|
|
203
|
+
throw new ToolError("Line selector 0 is invalid; lines are 1-indexed. Use :1.");
|
|
204
|
+
}
|
|
205
|
+
// `..` is a forgiving alias for `-` (e.g. `2724..2727` == `2724-2727`).
|
|
206
|
+
const sep = lineMatch[2] === ".." ? "-" : lineMatch[2];
|
|
207
|
+
const rhs = lineMatch[3] ? Number.parseInt(lineMatch[3], 10) : undefined;
|
|
208
|
+
let rawEnd: number | undefined;
|
|
209
|
+
if (sep === "+") {
|
|
210
|
+
if (rhs === undefined || rhs < 1) {
|
|
211
|
+
throw new ToolError(`Invalid range ${rawStart}+${rhs ?? 0}: count must be >= 1.`);
|
|
212
|
+
}
|
|
213
|
+
rawEnd = rawStart + rhs - 1;
|
|
214
|
+
} else if (sep === "-") {
|
|
215
|
+
// `301-` is shorthand for "from 301 onward" — equivalent to bare `301`.
|
|
216
|
+
if (rhs !== undefined) {
|
|
217
|
+
if (rhs < rawStart) {
|
|
218
|
+
throw new ToolError(`Invalid range ${rawStart}-${rhs}: end must be >= start.`);
|
|
219
|
+
}
|
|
220
|
+
rawEnd = rhs;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return { startLine: rawStart, endLine: rawEnd };
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Parse a comma-separated list of line ranges (e.g. `5-16,960-973`). Returns
|
|
228
|
+
* the ranges in ascending order with overlapping/adjacent ranges merged so
|
|
229
|
+
* downstream consumers can stream the file in a single forward pass per range.
|
|
230
|
+
*/
|
|
231
|
+
export function parseLineRanges(sel: string): [LineRange, ...LineRange[]] | null {
|
|
232
|
+
const chunks = sel.split(",");
|
|
233
|
+
const parsed: LineRange[] = [];
|
|
234
|
+
for (const chunk of chunks) {
|
|
235
|
+
const range = parseLineRangeChunk(chunk);
|
|
236
|
+
if (!range) return null;
|
|
237
|
+
parsed.push(range);
|
|
238
|
+
}
|
|
239
|
+
if (parsed.length === 0) return null;
|
|
240
|
+
parsed.sort((a, b) => a.startLine - b.startLine);
|
|
241
|
+
|
|
242
|
+
const merged: LineRange[] = [parsed[0]];
|
|
243
|
+
for (let i = 1; i < parsed.length; i++) {
|
|
244
|
+
const current = parsed[i];
|
|
245
|
+
const last = merged[merged.length - 1];
|
|
246
|
+
// Open-ended (endLine undefined) means "to EOF" — any later range is absorbed.
|
|
247
|
+
if (last.endLine === undefined) continue;
|
|
248
|
+
// Merge when current starts within (or immediately after) the last range.
|
|
249
|
+
if (current.startLine <= last.endLine + 1) {
|
|
250
|
+
if (current.endLine === undefined || current.endLine > last.endLine) {
|
|
251
|
+
merged[merged.length - 1] = { startLine: last.startLine, endLine: current.endLine };
|
|
252
|
+
}
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
merged.push(current);
|
|
256
|
+
}
|
|
257
|
+
return merged as [LineRange, ...LineRange[]];
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Extract the line-range component from a read-tool selector that may also
|
|
262
|
+
* carry a verbatim/index display mode (`raw`, `conflicts`) — alone or compounded
|
|
263
|
+
* with a range (`raw:50-100`, `50-100:raw`). Returns the parsed ranges when the
|
|
264
|
+
* selector names any, otherwise `undefined` (pure `raw`/`conflicts`/none).
|
|
265
|
+
*
|
|
266
|
+
* Used by content search, which honors line ranges as a match filter but has no
|
|
267
|
+
* use for verbatim/conflict display modes — so those selectors are accepted and
|
|
268
|
+
* treated as an unfiltered, whole-resource search rather than rejected.
|
|
269
|
+
*/
|
|
270
|
+
export function selectorLineRanges(sel: string | undefined): [LineRange, ...LineRange[]] | undefined {
|
|
271
|
+
if (!sel) return undefined;
|
|
272
|
+
for (const chunk of sel.split(":")) {
|
|
273
|
+
const lower = chunk.toLowerCase();
|
|
274
|
+
if (lower === "raw" || lower === "conflicts") continue;
|
|
275
|
+
const ranges = parseLineRanges(chunk);
|
|
276
|
+
if (ranges) return ranges;
|
|
277
|
+
}
|
|
278
|
+
return undefined;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/** Return `true` when `lineNumber` (1-indexed) falls in any of the supplied ranges. */
|
|
282
|
+
export function isLineInRanges(lineNumber: number, ranges: readonly LineRange[]): boolean {
|
|
283
|
+
for (const range of ranges) {
|
|
284
|
+
if (lineNumber < range.startLine) continue;
|
|
285
|
+
if (range.endLine === undefined || lineNumber <= range.endLine) return true;
|
|
286
|
+
}
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export function splitPathAndSel(rawPath: string): { path: string; sel?: string } {
|
|
291
|
+
const colon = rawPath.lastIndexOf(":");
|
|
292
|
+
if (colon <= 0) return { path: rawPath };
|
|
293
|
+
|
|
294
|
+
const candidate = rawPath.slice(colon + 1);
|
|
295
|
+
if (!FILE_LINE_RANGE_RE.test(candidate)) return { path: rawPath };
|
|
296
|
+
|
|
297
|
+
let basePath = rawPath.slice(0, colon);
|
|
298
|
+
let sel = candidate;
|
|
299
|
+
|
|
300
|
+
// Allow a compound trailing selector: `path:1-50:raw` or `path:raw:1-50`.
|
|
301
|
+
// The two chunks must be one line-range plus one `raw`, in either order.
|
|
302
|
+
const innerColon = basePath.lastIndexOf(":");
|
|
303
|
+
if (innerColon > 0) {
|
|
304
|
+
const innerCandidate = basePath.slice(innerColon + 1);
|
|
305
|
+
const innerIsRaw = FILE_RAW_ONLY_RE.test(innerCandidate);
|
|
306
|
+
const outerIsRaw = FILE_RAW_ONLY_RE.test(candidate);
|
|
307
|
+
const innerIsRange = FILE_LINE_RANGE_ONLY_RE.test(innerCandidate);
|
|
308
|
+
const outerIsRange = FILE_LINE_RANGE_ONLY_RE.test(candidate);
|
|
309
|
+
if ((innerIsRaw && outerIsRange) || (innerIsRange && outerIsRaw)) {
|
|
310
|
+
sel = `${innerCandidate}:${candidate}`;
|
|
311
|
+
basePath = basePath.slice(0, innerColon);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
return { path: basePath, sel };
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Variant of {@link splitPathAndSel} for internal URLs (`scheme://...`).
|
|
320
|
+
*
|
|
321
|
+
* The filesystem-path splitter is intentionally conservative: it refuses to
|
|
322
|
+
* peel a trailing `:<chunk>` unless that chunk matches the strict selector
|
|
323
|
+
* grammar. That rule is right for filesystem paths (a file named `a:1-50` is
|
|
324
|
+
* legal) but wrong for internal URLs, where any trailing `:<chunk>` after the
|
|
325
|
+
* scheme is unambiguously a read-tool selector — even if malformed (e.g.
|
|
326
|
+
* `artifact://3:raw:-100`).
|
|
327
|
+
*
|
|
328
|
+
* This function iteratively peels selector-shaped chunks (well-formed plus
|
|
329
|
+
* common malformed shapes like `:-N`) so the rest of the read tool can pass a
|
|
330
|
+
* clean URL to the protocol handler and surface selector errors via parseSel
|
|
331
|
+
* instead of as misleading "host invalid" errors from the handler. Schemes
|
|
332
|
+
* whose resource URIs may legitimately contain colons (`mcp://`) are skipped.
|
|
333
|
+
*
|
|
334
|
+
* Falls back to the input unchanged when nothing matches.
|
|
335
|
+
*/
|
|
336
|
+
|
|
337
|
+
export function splitInternalUrlSel(rawPath: string): { path: string; sel?: string } {
|
|
338
|
+
const schemeMatch = rawPath.match(INTERNAL_URL_SCHEME_RE);
|
|
339
|
+
if (!schemeMatch) return { path: rawPath };
|
|
340
|
+
const scheme = schemeMatch[1].toLowerCase();
|
|
341
|
+
// Opaque schemes (mcp://, etc.) carry server-defined resource URIs that may
|
|
342
|
+
// legitimately end in selector-shaped tails. Forward verbatim — see
|
|
343
|
+
// OPAQUE_RESOURCE_SCHEMES.
|
|
344
|
+
if (OPAQUE_RESOURCE_SCHEMES.has(scheme)) return { path: rawPath };
|
|
345
|
+
if (!INTERNAL_SCHEMES_WITH_SELECTORS[scheme]) return { path: rawPath };
|
|
346
|
+
|
|
347
|
+
const schemeEnd = schemeMatch[0].length;
|
|
348
|
+
// ssh:// authority carries an optional `:port`; with no `/path` after the
|
|
349
|
+
// authority, a trailing `:NNNN` is the port, not a read selector
|
|
350
|
+
// (e.g. ssh://host:2222). Other schemes' authority-trailing selectors
|
|
351
|
+
// (artifact://5:1-50) still peel, so this guard is ssh-specific.
|
|
352
|
+
if (scheme === "ssh" && rawPath.indexOf("/", schemeEnd) === -1) {
|
|
353
|
+
return { path: rawPath };
|
|
354
|
+
}
|
|
355
|
+
let path = rawPath;
|
|
356
|
+
const chunks: string[] = [];
|
|
357
|
+
while (true) {
|
|
358
|
+
const colon = path.lastIndexOf(":");
|
|
359
|
+
// Stop before crossing into the scheme separator `://`.
|
|
360
|
+
if (colon < schemeEnd) break;
|
|
361
|
+
const tail = path.slice(colon + 1);
|
|
362
|
+
if (!INTERNAL_URL_SELECTOR_PART_RE.test(tail)) break;
|
|
363
|
+
chunks.unshift(tail);
|
|
364
|
+
path = path.slice(0, colon);
|
|
365
|
+
}
|
|
366
|
+
if (chunks.length === 0) return { path: rawPath };
|
|
367
|
+
return { path, sel: chunks.join(":") };
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Peel a read-tool selector off an internal-URL write target so `write` resolves
|
|
372
|
+
* the same file `read` does (e.g. `ssh://h/f:raw` -> `ssh://h/f`). Only the
|
|
373
|
+
* whole-file display modes `raw`/`conflicts` are accepted (they do not change
|
|
374
|
+
* which bytes are written); any other selector-shaped tail `splitInternalUrlSel`
|
|
375
|
+
* peels — a line range, a compound like `raw:1-20`, or a malformed `:-N` — throws,
|
|
376
|
+
* because `write` addresses a whole file, not a partial range, and silently
|
|
377
|
+
* stripping it would write to a path the caller never named. Non-URL paths and
|
|
378
|
+
* URLs without a selector pass through unchanged.
|
|
379
|
+
*/
|
|
380
|
+
export function peelWriteUrlSelector(rawPath: string): string {
|
|
381
|
+
const { path, sel } = splitInternalUrlSel(rawPath);
|
|
382
|
+
if (sel === undefined) return rawPath;
|
|
383
|
+
// Case-insensitive to match read's selector grammar (parseSel + the /i regexes above).
|
|
384
|
+
if (/^(?:raw|conflicts)$/i.test(sel)) return path;
|
|
385
|
+
throw new ToolError(
|
|
386
|
+
`write does not accept the trailing selector ":${sel}" — it writes a whole file. ` +
|
|
387
|
+
`Remove ":${sel}", or if the filename truly ends with it, percent-encode the ":" as %3A.`,
|
|
388
|
+
);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
function assertNotInternalUrl(expanded: string, original: string): void {
|
|
392
|
+
for (const prefix of TOP_LEVEL_INTERNAL_URL_PREFIXES) {
|
|
393
|
+
if (expanded.startsWith(prefix)) {
|
|
394
|
+
throw new Error(
|
|
395
|
+
`Path "${original}" uses internal scheme "${prefix}" and must be resolved through the proper protocol handler, not as a filesystem path.`,
|
|
396
|
+
);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
export function normalizeLocalScheme(filePath: string): string {
|
|
402
|
+
return filePath.replace(/^(local:)\/(?!\/)/, "$1//");
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export function isInternalUrlPath(filePath: string): boolean {
|
|
406
|
+
const normalized = normalizeLocalScheme(filePath);
|
|
407
|
+
const expandedAndNormalized = normalizeLocalScheme(expandPath(normalized));
|
|
408
|
+
for (const prefix of TOP_LEVEL_INTERNAL_URL_PREFIXES) {
|
|
409
|
+
if (expandedAndNormalized.startsWith(prefix)) return true;
|
|
410
|
+
}
|
|
411
|
+
return false;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* True when a tool path argument references the `ssh://` scheme anywhere.
|
|
416
|
+
*
|
|
417
|
+
* Substring (not anchored) on purpose: it feeds the read/search/write approval
|
|
418
|
+
* tier, which runs synchronously on the raw args. `search` only flattens a
|
|
419
|
+
* delimited `paths: "a,ssh://h/x"` into separate entries *after* approval, so an
|
|
420
|
+
* anchored check would let an embedded `ssh://` slip through at the read tier.
|
|
421
|
+
* Matching the literal `ssh://` substring also tracks exactly what routes to the
|
|
422
|
+
* SSH handler; over-matching only over-prompts (fail-closed).
|
|
423
|
+
*/
|
|
424
|
+
export function pathTargetsSsh(path: string): boolean {
|
|
425
|
+
return /ssh:\/\//i.test(path);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* True when a path is specifically an `ssh://` URL (anchored scheme match).
|
|
430
|
+
* Unlike {@link pathTargetsSsh} (substring, for the pre-expansion approval
|
|
431
|
+
* scan), this is the exact per-entry check used to reject `ssh://` *before* a
|
|
432
|
+
* side-effecting `InternalUrlRouter.resolve` in tools that need a local file.
|
|
433
|
+
*/
|
|
434
|
+
export function isSshUrl(path: string): boolean {
|
|
435
|
+
return /^ssh:\/\//i.test(path.trim());
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* True when the read tool's URL parser (`parseReadUrlTarget` in fetch.ts) would
|
|
440
|
+
* recognize this path as a readable external URL: a strict `http(s)://`, a
|
|
441
|
+
* collapsed `http(s):/host` (Node path normalization folds `//` → `/`), or a
|
|
442
|
+
* scheme-less `www.` spelling. Keep in sync with `parseReadUrlTarget`.
|
|
443
|
+
*/
|
|
444
|
+
export function isReadableUrlPath(value: string): boolean {
|
|
445
|
+
return /^https?:\/\/?/i.test(value) || /^www\./i.test(value);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Resolve a path relative to the given cwd.
|
|
450
|
+
* Handles ~ expansion and absolute paths.
|
|
451
|
+
*
|
|
452
|
+
* A bare root slash is treated as a workspace-root alias for tool inputs. Users
|
|
453
|
+
* often pass `/` to mean “search from here”, and letting tools escape to the
|
|
454
|
+
* filesystem root is almost never what they intended.
|
|
455
|
+
*/
|
|
456
|
+
export function resolveToCwd(filePath: string, cwd: string): string {
|
|
457
|
+
const normalized = normalizeLocalScheme(filePath);
|
|
458
|
+
const expanded = normalizeWindowsDriveAliasPath(expandPath(normalized));
|
|
459
|
+
const expandedAndNormalized = normalizeLocalScheme(expanded);
|
|
460
|
+
|
|
461
|
+
assertNotInternalUrl(expandedAndNormalized, normalized);
|
|
462
|
+
|
|
463
|
+
if (/^\/+$/.test(expanded)) {
|
|
464
|
+
return cwd;
|
|
465
|
+
}
|
|
466
|
+
if (path.isAbsolute(expanded)) {
|
|
467
|
+
return expanded;
|
|
468
|
+
}
|
|
469
|
+
return path.resolve(cwd, expanded);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
export function formatPathRelativeToCwd(
|
|
473
|
+
filePath: string,
|
|
474
|
+
cwd: string,
|
|
475
|
+
options: { trailingSlash?: boolean } = {},
|
|
476
|
+
): string {
|
|
477
|
+
const resolvedCwd = path.resolve(cwd);
|
|
478
|
+
const normalized = normalizeLocalScheme(filePath);
|
|
479
|
+
if (isInternalUrlPath(normalized)) {
|
|
480
|
+
return normalized;
|
|
481
|
+
}
|
|
482
|
+
const expanded = expandPath(normalized);
|
|
483
|
+
const resolvedPath = path.isAbsolute(expanded) ? path.resolve(expanded) : path.resolve(cwd, expanded);
|
|
484
|
+
const relative = path.relative(resolvedCwd, resolvedPath);
|
|
485
|
+
const isWithinCwd = relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
|
|
486
|
+
let displayPath = normalizePosixPath(isWithinCwd ? relative || "." : resolvedPath);
|
|
487
|
+
if (options.trailingSlash && displayPath !== "." && !displayPath.endsWith("/")) {
|
|
488
|
+
displayPath += "/";
|
|
489
|
+
}
|
|
490
|
+
return displayPath;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Strip matching surrounding double quotes from a path string.
|
|
495
|
+
* Common when users paste quoted paths from Windows Explorer or shell copy-paste.
|
|
496
|
+
* Only double quotes — single quotes are valid POSIX filename characters.
|
|
497
|
+
* Tradeoff: a POSIX path literally starting AND ending with " would also be unquoted.
|
|
498
|
+
* Accepted because such names are virtually nonexistent in practice.
|
|
499
|
+
*/
|
|
500
|
+
export function stripOuterDoubleQuotes(input: string): string {
|
|
501
|
+
return input.startsWith('"') && input.endsWith('"') && input.length > 1 ? input.slice(1, -1) : input;
|
|
502
|
+
}
|
|
503
|
+
function normalizePathSeparators(input: string): string {
|
|
504
|
+
if (isInternalUrlPath(input)) return input;
|
|
505
|
+
if (!input.includes("\\")) return input;
|
|
506
|
+
return input.replace(/\\/g, "/");
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
export function normalizePathLikeInput(input: string): string {
|
|
510
|
+
return stripOuterDoubleQuotes(input.trim());
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
/**
|
|
514
|
+
* Parse a JSON-encoded array of path strings (e.g. `'["a.ts","b.ts"]'`).
|
|
515
|
+
* Returns `null` when the input is not a bracketed JSON string array, so the
|
|
516
|
+
* caller can fall back to treating the input as a single literal path.
|
|
517
|
+
*/
|
|
518
|
+
function parseStringEncodedPathArray(input: string): string[] | null {
|
|
519
|
+
const trimmed = input.trim();
|
|
520
|
+
if (!trimmed.startsWith("[") || !trimmed.endsWith("]")) return null;
|
|
521
|
+
|
|
522
|
+
let parsed: unknown;
|
|
523
|
+
try {
|
|
524
|
+
parsed = JSON.parse(trimmed);
|
|
525
|
+
} catch {
|
|
526
|
+
return null;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
if (!Array.isArray(parsed) || parsed.some(entry => typeof entry !== "string")) {
|
|
530
|
+
return null;
|
|
531
|
+
}
|
|
532
|
+
return parsed;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Normalize a path argument that may arrive as a single string, a JSON-encoded
|
|
537
|
+
* string array (`'["a.ts"]'`), or an actual array into a flat `string[]`.
|
|
538
|
+
* Delimited single strings (`"a.ts b.ts"`) are left for
|
|
539
|
+
* {@link expandDelimitedPathEntries} to split.
|
|
540
|
+
*/
|
|
541
|
+
export function toPathList(input: string | string[] | undefined): string[] {
|
|
542
|
+
if (typeof input === "string") return parseStringEncodedPathArray(input) ?? [input];
|
|
543
|
+
return input ?? [];
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
const GLOB_PATH_CHARS = ["*", "?", "[", "{"] as const;
|
|
547
|
+
|
|
548
|
+
export function hasGlobPathChars(filePath: string): boolean {
|
|
549
|
+
return GLOB_PATH_CHARS.some(char => filePath.includes(char));
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
type PathEntrySplitter = (item: string) => { basePath: string };
|
|
553
|
+
|
|
554
|
+
const TOP_LEVEL_WHITESPACE_RE = /\s/;
|
|
555
|
+
|
|
556
|
+
type DelimitedPathSplitMode = "comma" | "semicolon" | "whitespace" | "mixed";
|
|
557
|
+
|
|
558
|
+
function isDelimitedPathSeparator(ch: string, mode: DelimitedPathSplitMode): boolean {
|
|
559
|
+
if (mode === "comma") return ch === ",";
|
|
560
|
+
if (mode === "semicolon") return ch === ";";
|
|
561
|
+
if (mode === "whitespace") return TOP_LEVEL_WHITESPACE_RE.test(ch);
|
|
562
|
+
return ch === "," || ch === ";" || TOP_LEVEL_WHITESPACE_RE.test(ch);
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
function hasTopLevelPathDelimiter(entry: string): boolean {
|
|
566
|
+
let braceDepth = 0;
|
|
567
|
+
for (let i = 0; i < entry.length; i++) {
|
|
568
|
+
const ch = entry[i];
|
|
569
|
+
if (ch === "\\" && i + 1 < entry.length) {
|
|
570
|
+
i++;
|
|
571
|
+
continue;
|
|
572
|
+
}
|
|
573
|
+
if (ch === "{") {
|
|
574
|
+
braceDepth++;
|
|
575
|
+
continue;
|
|
576
|
+
}
|
|
577
|
+
if (ch === "}") {
|
|
578
|
+
if (braceDepth > 0) braceDepth--;
|
|
579
|
+
continue;
|
|
580
|
+
}
|
|
581
|
+
if (braceDepth === 0 && (ch === "," || ch === ";" || TOP_LEVEL_WHITESPACE_RE.test(ch))) {
|
|
582
|
+
return true;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
return false;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
function splitTopLevelDelimitedPath(entry: string, mode: DelimitedPathSplitMode): string[] {
|
|
589
|
+
const parts: string[] = [];
|
|
590
|
+
let braceDepth = 0;
|
|
591
|
+
let start = 0;
|
|
592
|
+
for (let i = 0; i < entry.length; i++) {
|
|
593
|
+
const ch = entry[i];
|
|
594
|
+
if (ch === "\\" && i + 1 < entry.length) {
|
|
595
|
+
i++;
|
|
596
|
+
continue;
|
|
597
|
+
}
|
|
598
|
+
if (ch === "{") {
|
|
599
|
+
braceDepth++;
|
|
600
|
+
continue;
|
|
601
|
+
}
|
|
602
|
+
if (ch === "}") {
|
|
603
|
+
if (braceDepth > 0) braceDepth--;
|
|
604
|
+
continue;
|
|
605
|
+
}
|
|
606
|
+
if (braceDepth !== 0 || !isDelimitedPathSeparator(ch, mode)) continue;
|
|
607
|
+
parts.push(entry.slice(start, i));
|
|
608
|
+
start = i + 1;
|
|
609
|
+
}
|
|
610
|
+
parts.push(entry.slice(start));
|
|
611
|
+
return parts;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
async function delimitedPathPartResolves(entry: string, cwd: string, splitter: PathEntrySplitter): Promise<boolean> {
|
|
615
|
+
if (isInternalUrlPath(entry)) return true;
|
|
616
|
+
const peeled = splitPathAndSel(entry).path;
|
|
617
|
+
const { basePath } = splitter(peeled);
|
|
618
|
+
const absoluteBasePath = resolveToCwd(basePath, cwd);
|
|
619
|
+
try {
|
|
620
|
+
await fs.promises.stat(absoluteBasePath);
|
|
621
|
+
return true;
|
|
622
|
+
} catch (err) {
|
|
623
|
+
if (isEnoent(err)) return false;
|
|
624
|
+
throw err;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* How many split parts must resolve to an existing path for the split to win.
|
|
630
|
+
* Semicolon is the documented list delimiter, so it splits unconditionally
|
|
631
|
+
* (`"none"`) — an all-missing list must still fan out so multi-path missing
|
|
632
|
+
* semantics can name every entry. Comma is legacy recovery (`"some"`), and
|
|
633
|
+
* whitespace/mixed are aggressive heuristics gated on every part existing.
|
|
634
|
+
*/
|
|
635
|
+
type DelimitedResolveRequirement = "all" | "some" | "none";
|
|
636
|
+
|
|
637
|
+
async function tryDelimitedPathSplit(
|
|
638
|
+
entry: string,
|
|
639
|
+
cwd: string,
|
|
640
|
+
splitter: PathEntrySplitter,
|
|
641
|
+
mode: DelimitedPathSplitMode,
|
|
642
|
+
requirement: DelimitedResolveRequirement,
|
|
643
|
+
): Promise<string[] | null> {
|
|
644
|
+
const rawParts = splitTopLevelDelimitedPath(entry, mode);
|
|
645
|
+
if (rawParts.length < 2) return null;
|
|
646
|
+
|
|
647
|
+
const parts = rawParts.map(normalizePathLikeInput).filter(part => part.length > 0);
|
|
648
|
+
if (parts.length === 0) return null;
|
|
649
|
+
if (parts.length < 2 && rawParts.length === parts.length) return null;
|
|
650
|
+
|
|
651
|
+
if (requirement !== "none") {
|
|
652
|
+
const resolved = await Promise.all(parts.map(part => delimitedPathPartResolves(part, cwd, splitter)));
|
|
653
|
+
const valid = requirement === "all" ? resolved.every(Boolean) : resolved.some(Boolean);
|
|
654
|
+
if (!valid) return null;
|
|
655
|
+
}
|
|
656
|
+
return parts;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
/**
|
|
660
|
+
* Split one path-like entry whose multiple targets were flattened into one
|
|
661
|
+
* string. Existing paths are kept intact, so real filenames containing spaces,
|
|
662
|
+
* commas, or semicolons win over delimiter recovery.
|
|
663
|
+
*/
|
|
664
|
+
export async function splitDelimitedPathEntry(
|
|
665
|
+
entry: string,
|
|
666
|
+
cwd: string,
|
|
667
|
+
options: { splitter?: PathEntrySplitter } = {},
|
|
668
|
+
): Promise<string[] | null> {
|
|
669
|
+
const normalizedEntry = normalizePathLikeInput(entry);
|
|
670
|
+
if (!hasTopLevelPathDelimiter(normalizedEntry)) return null;
|
|
671
|
+
if (isInternalUrlPath(normalizedEntry)) return null;
|
|
672
|
+
|
|
673
|
+
const splitter = options.splitter ?? parseSearchPath;
|
|
674
|
+
const peeledEntry = splitPathAndSel(normalizedEntry).path;
|
|
675
|
+
if (!hasGlobPathChars(peeledEntry) && (await delimitedPathPartResolves(normalizedEntry, cwd, splitter))) {
|
|
676
|
+
return null;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
return (
|
|
680
|
+
(await tryDelimitedPathSplit(normalizedEntry, cwd, splitter, "semicolon", "none")) ??
|
|
681
|
+
(await tryDelimitedPathSplit(normalizedEntry, cwd, splitter, "comma", "some")) ??
|
|
682
|
+
(await tryDelimitedPathSplit(normalizedEntry, cwd, splitter, "whitespace", "all")) ??
|
|
683
|
+
(await tryDelimitedPathSplit(normalizedEntry, cwd, splitter, "mixed", "all"))
|
|
684
|
+
);
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
/** Expand delimited entries in-place while preserving unsplit entries. */
|
|
688
|
+
export async function expandDelimitedPathEntries(
|
|
689
|
+
entries: readonly string[],
|
|
690
|
+
cwd: string,
|
|
691
|
+
options: { splitter?: PathEntrySplitter } = {},
|
|
692
|
+
): Promise<string[]> {
|
|
693
|
+
const expanded: string[] = [];
|
|
694
|
+
for (const entry of entries) {
|
|
695
|
+
const normalizedEntry = normalizePathLikeInput(entry);
|
|
696
|
+
const split = await splitDelimitedPathEntry(normalizedEntry, cwd, options);
|
|
697
|
+
if (split) expanded.push(...split);
|
|
698
|
+
else expanded.push(normalizedEntry);
|
|
699
|
+
}
|
|
700
|
+
return expanded;
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
export interface ParsedSearchPath {
|
|
704
|
+
basePath: string;
|
|
705
|
+
glob?: string;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
export interface ParsedFindPattern {
|
|
709
|
+
basePath: string;
|
|
710
|
+
globPattern: string;
|
|
711
|
+
hasGlob: boolean;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
export interface ResolvedSearchTarget {
|
|
715
|
+
basePath: string;
|
|
716
|
+
glob?: string;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
export interface ResolvedMultiSearchPath {
|
|
720
|
+
basePath: string;
|
|
721
|
+
glob?: string;
|
|
722
|
+
scopePath: string;
|
|
723
|
+
exactFilePaths?: string[];
|
|
724
|
+
targets?: ResolvedSearchTarget[];
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
export interface ResolvedFindTarget {
|
|
728
|
+
basePath: string;
|
|
729
|
+
globPattern: string;
|
|
730
|
+
hasGlob: boolean;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
export interface ResolvedMultiFindPattern {
|
|
734
|
+
targets: ResolvedFindTarget[];
|
|
735
|
+
scopePath: string;
|
|
736
|
+
}
|
|
737
|
+
export function parseSearchPath(filePath: string): ParsedSearchPath {
|
|
738
|
+
const normalizedPath = normalizePathSeparators(filePath);
|
|
739
|
+
const segments = normalizedPath.split("/");
|
|
740
|
+
let firstGlobIndex = -1;
|
|
741
|
+
for (let i = 0; i < segments.length; i++) {
|
|
742
|
+
if (hasGlobPathChars(segments[i])) {
|
|
743
|
+
firstGlobIndex = i;
|
|
744
|
+
break;
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
if (firstGlobIndex === -1) {
|
|
749
|
+
return { basePath: normalizedPath };
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
if (firstGlobIndex <= 0) {
|
|
753
|
+
return { basePath: ".", glob: normalizedPath };
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
return {
|
|
757
|
+
basePath: segments.slice(0, firstGlobIndex).join("/"),
|
|
758
|
+
glob: segments.slice(firstGlobIndex).join("/"),
|
|
759
|
+
};
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
/**
|
|
763
|
+
* Async sibling of {@link parseSearchPath} that prefers literal interpretation
|
|
764
|
+
* when a path containing glob metacharacters resolves to an existing entry on
|
|
765
|
+
* disk. Disambiguates Next.js/SvelteKit routes like `apps/[id]/page.tsx` —
|
|
766
|
+
* without this, `[id]` is parsed as a glob character class and silently
|
|
767
|
+
* matches nothing.
|
|
768
|
+
*/
|
|
769
|
+
export async function parseSearchPathPreferringLiteral(filePath: string, cwd: string): Promise<ParsedSearchPath> {
|
|
770
|
+
if (!hasGlobPathChars(filePath) || isInternalUrlPath(filePath)) return parseSearchPath(filePath);
|
|
771
|
+
try {
|
|
772
|
+
await fs.promises.stat(resolveToCwd(filePath, cwd));
|
|
773
|
+
return { basePath: normalizePathSeparators(filePath) };
|
|
774
|
+
} catch {
|
|
775
|
+
return parseSearchPath(filePath);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
// Parse a find pattern into a base directory path and a glob pattern.
|
|
780
|
+
// Examples:
|
|
781
|
+
// src/app/**/\*.tsx -> { basePath: "src/app", globPattern: "**/*.tsx", hasGlob: true }
|
|
782
|
+
// src/app/\*.tsx -> { basePath: "src/app", globPattern: "*.tsx", hasGlob: true }
|
|
783
|
+
// \*.ts -> { basePath: ".", globPattern: "**/*.ts", hasGlob: true }
|
|
784
|
+
// **/\*.json -> { basePath: ".", globPattern: "**/*.json", hasGlob: true }
|
|
785
|
+
// /abs/path/**/\*.ts -> { basePath: "/abs/path", globPattern: "**/*.ts", hasGlob: true }
|
|
786
|
+
// src/app -> { basePath: "src/app", globPattern: "**/*", hasGlob: false }
|
|
787
|
+
export function parseFindPattern(pattern: string): ParsedFindPattern {
|
|
788
|
+
const normalizedPattern = normalizePathSeparators(pattern);
|
|
789
|
+
const segments = normalizedPattern.split("/");
|
|
790
|
+
let firstGlobIndex = -1;
|
|
791
|
+
for (let i = 0; i < segments.length; i++) {
|
|
792
|
+
if (hasGlobPathChars(segments[i])) {
|
|
793
|
+
firstGlobIndex = i;
|
|
794
|
+
break;
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
if (firstGlobIndex === -1) {
|
|
799
|
+
return { basePath: normalizedPattern, globPattern: "**/*", hasGlob: false };
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
if (firstGlobIndex === 0) {
|
|
803
|
+
const needsRecursive = !normalizedPattern.startsWith("**/");
|
|
804
|
+
return {
|
|
805
|
+
basePath: ".",
|
|
806
|
+
globPattern: needsRecursive ? `**/${normalizedPattern}` : normalizedPattern,
|
|
807
|
+
hasGlob: true,
|
|
808
|
+
};
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
return {
|
|
812
|
+
basePath: segments.slice(0, firstGlobIndex).join("/"),
|
|
813
|
+
globPattern: segments.slice(firstGlobIndex).join("/"),
|
|
814
|
+
hasGlob: true,
|
|
815
|
+
};
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
export function combineSearchGlobs(prefixGlob?: string, suffixGlob?: string): string | undefined {
|
|
819
|
+
if (!prefixGlob) return suffixGlob;
|
|
820
|
+
if (!suffixGlob) return prefixGlob;
|
|
821
|
+
|
|
822
|
+
const normalizedPrefix = prefixGlob.replace(/\/+$/, "");
|
|
823
|
+
const normalizedSuffix = suffixGlob.replace(/^\/+/, "");
|
|
824
|
+
|
|
825
|
+
return `${normalizedPrefix}/${normalizedSuffix}`;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
function normalizePosixPath(filePath: string): string {
|
|
829
|
+
return filePath.replace(/\\/g, "/");
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
function joinRelativeGlob(basePath: string | undefined, globPattern: string): string {
|
|
833
|
+
if (!basePath || basePath === ".") return normalizePosixPath(globPattern).replace(/^\/+/, "");
|
|
834
|
+
const normalizedBase = normalizePosixPath(basePath).replace(/\/+$/, "");
|
|
835
|
+
const normalizedGlob = normalizePosixPath(globPattern).replace(/^\/+/, "");
|
|
836
|
+
return `${normalizedBase}/${normalizedGlob}`;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
function buildBraceUnion(patterns: string[]): string | undefined {
|
|
840
|
+
const uniquePatterns = [...new Set(patterns.map(pattern => normalizePosixPath(pattern).trim()).filter(Boolean))];
|
|
841
|
+
if (uniquePatterns.length === 0) return undefined;
|
|
842
|
+
if (uniquePatterns.length === 1) return uniquePatterns[0];
|
|
843
|
+
return `{${uniquePatterns.join(",")}}`;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
function findCommonBasePath(paths: string[]): string {
|
|
847
|
+
if (paths.length === 0) return ".";
|
|
848
|
+
let commonParts = path.resolve(paths[0]).split(path.sep);
|
|
849
|
+
for (const candidatePath of paths.slice(1)) {
|
|
850
|
+
const candidateParts = path.resolve(candidatePath).split(path.sep);
|
|
851
|
+
let sharedCount = 0;
|
|
852
|
+
const maxShared = Math.min(commonParts.length, candidateParts.length);
|
|
853
|
+
while (sharedCount < maxShared && commonParts[sharedCount] === candidateParts[sharedCount]) {
|
|
854
|
+
sharedCount += 1;
|
|
855
|
+
}
|
|
856
|
+
commonParts = commonParts.slice(0, sharedCount);
|
|
857
|
+
}
|
|
858
|
+
if (commonParts.length === 0) {
|
|
859
|
+
return path.parse(path.resolve(paths[0])).root;
|
|
860
|
+
}
|
|
861
|
+
const joined = commonParts.join(path.sep);
|
|
862
|
+
return joined || path.parse(path.resolve(paths[0])).root;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
function toScopeDisplay(items: string[], cwd: string): string {
|
|
866
|
+
return items
|
|
867
|
+
.map(item =>
|
|
868
|
+
formatPathRelativeToCwd(item, cwd, {
|
|
869
|
+
trailingSlash: item.endsWith("/") || item.endsWith("\\"),
|
|
870
|
+
}),
|
|
871
|
+
)
|
|
872
|
+
.join(", ");
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
async function resolveSearchPathItems(
|
|
876
|
+
pathItems: string[],
|
|
877
|
+
cwd: string,
|
|
878
|
+
suffixGlob?: string,
|
|
879
|
+
fanOutFileItems = false,
|
|
880
|
+
): Promise<ResolvedMultiSearchPath | undefined> {
|
|
881
|
+
if (pathItems.length < 1) {
|
|
882
|
+
return undefined;
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
const parsedItems = await Promise.all(
|
|
886
|
+
pathItems.map(async item => {
|
|
887
|
+
const parsedPath = await parseSearchPathPreferringLiteral(item, cwd);
|
|
888
|
+
const absoluteBasePath = resolveToCwd(parsedPath.basePath, cwd);
|
|
889
|
+
const stat = await fs.promises.stat(absoluteBasePath);
|
|
890
|
+
return { raw: item, parsedPath, absoluteBasePath, stat };
|
|
891
|
+
}),
|
|
892
|
+
);
|
|
893
|
+
|
|
894
|
+
const allExactFiles = !suffixGlob && parsedItems.every(item => !item.parsedPath.glob && item.stat.isFile());
|
|
895
|
+
const commonBasePath = findCommonBasePath(parsedItems.map(item => item.absoluteBasePath));
|
|
896
|
+
const combinedPatterns = parsedItems.map(item => {
|
|
897
|
+
const relativeBasePath = normalizePosixPath(path.relative(commonBasePath, item.absoluteBasePath)) || ".";
|
|
898
|
+
if (item.parsedPath.glob) {
|
|
899
|
+
const pathGlob = joinRelativeGlob(relativeBasePath, item.parsedPath.glob);
|
|
900
|
+
return combineSearchGlobs(pathGlob, suffixGlob) ?? pathGlob;
|
|
901
|
+
}
|
|
902
|
+
if (suffixGlob) {
|
|
903
|
+
const pathPrefix = relativeBasePath === "." ? undefined : relativeBasePath;
|
|
904
|
+
return combineSearchGlobs(pathPrefix, suffixGlob) ?? suffixGlob;
|
|
905
|
+
}
|
|
906
|
+
if (item.stat.isDirectory()) {
|
|
907
|
+
return joinRelativeGlob(relativeBasePath, "**/*");
|
|
908
|
+
}
|
|
909
|
+
return relativeBasePath === "." ? path.basename(item.absoluteBasePath) : relativeBasePath;
|
|
910
|
+
});
|
|
911
|
+
// A single walk rooted at the common ancestor is only safe when that
|
|
912
|
+
// ancestor is itself one of the requested scopes (e.g. `.` + `src/foo.ts`):
|
|
913
|
+
// the walk then covers exactly what the caller asked for. When the common
|
|
914
|
+
// ancestor is an unrequested parent (`.` + `~/.gitconfig` → `$HOME`, or
|
|
915
|
+
// disjoint trees → `/`), a collapsed walk traverses every unrelated sibling
|
|
916
|
+
// under it — fan out into per-item targets so each scan stays bounded to a
|
|
917
|
+
// requested path.
|
|
918
|
+
const commonIsRequestedScope = parsedItems.some(item => item.absoluteBasePath === commonBasePath);
|
|
919
|
+
// Walkers prune `.git` unconditionally and honor gitignore, so a plain-file
|
|
920
|
+
// item folded into a directory walk's glob union (`.` + `.git/config`) can
|
|
921
|
+
// silently never match. Callers that dedupe overlapping results opt in via
|
|
922
|
+
// `fanOutFileItems` to get explicit file targets, which bypass the walker.
|
|
923
|
+
const demotesFileItem =
|
|
924
|
+
fanOutFileItems && !allExactFiles && parsedItems.some(item => !item.parsedPath.glob && item.stat.isFile());
|
|
925
|
+
const targets =
|
|
926
|
+
parsedItems.length > 1 && (!commonIsRequestedScope || demotesFileItem)
|
|
927
|
+
? parsedItems.map(item => ({
|
|
928
|
+
basePath: item.absoluteBasePath,
|
|
929
|
+
glob: item.parsedPath.glob ? combineSearchGlobs(item.parsedPath.glob, suffixGlob) : suffixGlob,
|
|
930
|
+
}))
|
|
931
|
+
: undefined;
|
|
932
|
+
|
|
933
|
+
return {
|
|
934
|
+
basePath: commonBasePath,
|
|
935
|
+
glob: buildBraceUnion(combinedPatterns),
|
|
936
|
+
scopePath: toScopeDisplay(pathItems, cwd),
|
|
937
|
+
exactFilePaths: allExactFiles ? parsedItems.map(item => item.absoluteBasePath) : undefined,
|
|
938
|
+
targets,
|
|
939
|
+
};
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
export async function resolveExplicitSearchPaths(
|
|
943
|
+
pathItems: string[],
|
|
944
|
+
cwd: string,
|
|
945
|
+
suffixGlob?: string,
|
|
946
|
+
fanOutFileItems = false,
|
|
947
|
+
): Promise<ResolvedMultiSearchPath | undefined> {
|
|
948
|
+
return resolveSearchPathItems([...new Set(pathItems)], cwd, suffixGlob, fanOutFileItems);
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
async function resolveFindPatternItems(
|
|
952
|
+
patternItems: string[],
|
|
953
|
+
cwd: string,
|
|
954
|
+
): Promise<ResolvedMultiFindPattern | undefined> {
|
|
955
|
+
if (patternItems.length <= 1) {
|
|
956
|
+
return undefined;
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
// Each path becomes its own walk root. Collapsing to a shared common ancestor
|
|
960
|
+
// (and filtering with a brace-union glob) would force the walker to traverse
|
|
961
|
+
// and stat every unrelated sibling under that ancestor — two paths under
|
|
962
|
+
// $HOME would scan all of $HOME. The find tool fans these targets out in
|
|
963
|
+
// parallel instead, so every scan stays bounded to exactly one requested path.
|
|
964
|
+
const targets = patternItems.map(item => {
|
|
965
|
+
const parsedPattern = parseFindPattern(item);
|
|
966
|
+
return {
|
|
967
|
+
basePath: resolveToCwd(parsedPattern.basePath, cwd),
|
|
968
|
+
globPattern: parsedPattern.globPattern,
|
|
969
|
+
hasGlob: parsedPattern.hasGlob,
|
|
970
|
+
};
|
|
971
|
+
});
|
|
972
|
+
|
|
973
|
+
return {
|
|
974
|
+
targets,
|
|
975
|
+
scopePath: toScopeDisplay(patternItems, cwd),
|
|
976
|
+
};
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
export async function resolveExplicitFindPatterns(
|
|
980
|
+
patternItems: string[],
|
|
981
|
+
cwd: string,
|
|
982
|
+
): Promise<ResolvedMultiFindPattern | undefined> {
|
|
983
|
+
return resolveFindPatternItems([...new Set(patternItems)], cwd);
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
/**
|
|
987
|
+
* Result of partitioning a list of user-supplied paths/globs into entries whose
|
|
988
|
+
* base directory currently exists on disk versus those that do not.
|
|
989
|
+
*
|
|
990
|
+
* Used by multi-path tools (search, find, ast_grep, ast_edit) to tolerate one
|
|
991
|
+
* or more missing entries in a multi-path call: the surviving entries should
|
|
992
|
+
* still be searched, with the missing entries surfaced as a non-fatal warning.
|
|
993
|
+
*/
|
|
994
|
+
export interface PartitionedPaths {
|
|
995
|
+
/** Raw input strings whose resolved base path exists. */
|
|
996
|
+
valid: string[];
|
|
997
|
+
/** Raw input strings whose resolved base path is missing (ENOENT). */
|
|
998
|
+
missing: string[];
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
/**
|
|
1002
|
+
* Stat each input's base path concurrently; return entries split by existence.
|
|
1003
|
+
*
|
|
1004
|
+
* `splitter` is expected to be {@link parseFindPattern} or
|
|
1005
|
+
* {@link parseSearchPath}: both return a `basePath` field that this helper
|
|
1006
|
+
* resolves against `cwd` and stats. ENOENT is the only swallowed error — every
|
|
1007
|
+
* other stat failure (permission, IO, etc.) propagates so callers do not silently
|
|
1008
|
+
* skip paths that exist but are unreadable.
|
|
1009
|
+
*
|
|
1010
|
+
* Order of `valid` and `missing` follows the input order, so callers can rely
|
|
1011
|
+
* on `valid[0]` matching the first surviving user-supplied entry.
|
|
1012
|
+
*/
|
|
1013
|
+
export async function partitionExistingPaths(
|
|
1014
|
+
items: string[],
|
|
1015
|
+
cwd: string,
|
|
1016
|
+
splitter: (item: string) => { basePath: string },
|
|
1017
|
+
): Promise<PartitionedPaths> {
|
|
1018
|
+
const settled = await Promise.all(
|
|
1019
|
+
items.map(async item => {
|
|
1020
|
+
const { basePath } = splitter(item);
|
|
1021
|
+
const absoluteBasePath = resolveToCwd(basePath, cwd);
|
|
1022
|
+
try {
|
|
1023
|
+
await fs.promises.stat(absoluteBasePath);
|
|
1024
|
+
return { item, exists: true } as const;
|
|
1025
|
+
} catch (err) {
|
|
1026
|
+
if (isEnoent(err)) return { item, exists: false } as const;
|
|
1027
|
+
throw err;
|
|
1028
|
+
}
|
|
1029
|
+
}),
|
|
1030
|
+
);
|
|
1031
|
+
const valid: string[] = [];
|
|
1032
|
+
const missing: string[] = [];
|
|
1033
|
+
for (const entry of settled) {
|
|
1034
|
+
if (entry.exists) valid.push(entry.item);
|
|
1035
|
+
else missing.push(entry.item);
|
|
1036
|
+
}
|
|
1037
|
+
return { valid, missing };
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
export function resolveReadPath(filePath: string, cwd: string): string {
|
|
1041
|
+
const resolved = resolveToCwd(filePath, cwd);
|
|
1042
|
+
const shellEscapedVariant = tryShellEscapedPath(resolved);
|
|
1043
|
+
const baseCandidates = shellEscapedVariant !== resolved ? [resolved, shellEscapedVariant] : [resolved];
|
|
1044
|
+
|
|
1045
|
+
for (const baseCandidate of baseCandidates) {
|
|
1046
|
+
if (fileExists(baseCandidate)) {
|
|
1047
|
+
return baseCandidate;
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
for (const baseCandidate of baseCandidates) {
|
|
1052
|
+
// Try macOS AM/PM variant (narrow no-break space before AM/PM)
|
|
1053
|
+
const amPmVariant = tryMacOSScreenshotPath(baseCandidate);
|
|
1054
|
+
if (amPmVariant !== baseCandidate && fileExists(amPmVariant)) {
|
|
1055
|
+
return amPmVariant;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
// Try NFD variant (macOS stores filenames in NFD form)
|
|
1059
|
+
const nfdVariant = tryNFDVariant(baseCandidate);
|
|
1060
|
+
if (nfdVariant !== baseCandidate && fileExists(nfdVariant)) {
|
|
1061
|
+
return nfdVariant;
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
// Try curly quote variant (macOS uses U+2019 in screenshot names)
|
|
1065
|
+
const curlyVariant = tryCurlyQuoteVariant(baseCandidate);
|
|
1066
|
+
if (curlyVariant !== baseCandidate && fileExists(curlyVariant)) {
|
|
1067
|
+
return curlyVariant;
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
// Try combined NFD + curly quote (for French macOS screenshots like "Capture d'écran")
|
|
1071
|
+
const nfdCurlyVariant = tryCurlyQuoteVariant(nfdVariant);
|
|
1072
|
+
if (nfdCurlyVariant !== baseCandidate && fileExists(nfdCurlyVariant)) {
|
|
1073
|
+
return nfdCurlyVariant;
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
return resolved;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
// =============================================================================
|
|
1081
|
+
// Tool-scope resolution (search/ast tools)
|
|
1082
|
+
// =============================================================================
|
|
1083
|
+
|
|
1084
|
+
/** Local file materialized from a readable external URL for shared tool-scope resolution. */
|
|
1085
|
+
export interface ResolvedExternalSearchUrl {
|
|
1086
|
+
/** Absolute or cwd-relative file path to search. */
|
|
1087
|
+
sourcePath: string;
|
|
1088
|
+
/** True when the materialized file must not mint editable anchors. */
|
|
1089
|
+
immutable?: boolean;
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
export interface ToolScopeOptions {
|
|
1093
|
+
rawPaths: string[];
|
|
1094
|
+
cwd: string;
|
|
1095
|
+
/** Verb used in the "Cannot {action} internal URL without a backing file: …" message. */
|
|
1096
|
+
internalUrlAction: string;
|
|
1097
|
+
/** Collect absolute paths flagged immutable by their internal-URL handler. */
|
|
1098
|
+
trackImmutableSources?: boolean;
|
|
1099
|
+
/** Honor `exactFilePaths` from {@link resolveExplicitSearchPaths} (search-only). */
|
|
1100
|
+
surfaceExactFilePaths?: boolean;
|
|
1101
|
+
/** Fan plain-file entries out into per-target scans instead of folding them
|
|
1102
|
+
* into a directory walk's glob union (search-only: the caller must dedupe
|
|
1103
|
+
* matches from overlapping targets). */
|
|
1104
|
+
fanOutFileTargets?: boolean;
|
|
1105
|
+
/** Extra hint appended to "Path not found" when stat fails and the user supplied multiple paths. */
|
|
1106
|
+
multipathStatHint?: string;
|
|
1107
|
+
/** Calling session's settings — forwarded to the internal-URL router so caller-aware handlers (issue://, pr://) honor it. */
|
|
1108
|
+
settings?: unknown;
|
|
1109
|
+
/** Caller's abort signal — forwarded to the internal-URL router. */
|
|
1110
|
+
signal?: AbortSignal;
|
|
1111
|
+
/** Calling session's `local://` root mapping — pins resolutions to the calling session. */
|
|
1112
|
+
localProtocolOptions?: LocalProtocolOptions;
|
|
1113
|
+
/** Calling session's loaded skills — lets skill:// resolve without process-global state. */
|
|
1114
|
+
skills?: readonly Skill[];
|
|
1115
|
+
/** Materialize readable external URLs to local text files before scope derivation. */
|
|
1116
|
+
resolveExternalUrl?: (rawPath: string) => Promise<ResolvedExternalSearchUrl | undefined>;
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
export interface ToolScopeResolution {
|
|
1120
|
+
searchPath: string;
|
|
1121
|
+
scopePath: string;
|
|
1122
|
+
globFilter: string | undefined;
|
|
1123
|
+
isDirectory: boolean;
|
|
1124
|
+
multiTargets?: ResolvedSearchTarget[];
|
|
1125
|
+
exactFilePaths?: string[];
|
|
1126
|
+
missingPaths: string[];
|
|
1127
|
+
immutableSourcePaths: Set<string>;
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
/**
|
|
1131
|
+
* Shared path-input pipeline for `search`, `ast_grep`, and `ast_edit`:
|
|
1132
|
+
* 1. normalize + reject empty paths,
|
|
1133
|
+
* 2. resolve internal URLs through {@link InternalUrlRouter} to backing files,
|
|
1134
|
+
* 3. partition existing vs missing when multiple paths are supplied,
|
|
1135
|
+
* 4. derive a single search base path / glob, or a multi-target list,
|
|
1136
|
+
* 5. stat the resolved base path so callers can branch on directory vs file scope.
|
|
1137
|
+
*/
|
|
1138
|
+
export async function resolveToolSearchScope(opts: ToolScopeOptions): Promise<ToolScopeResolution> {
|
|
1139
|
+
const { rawPaths: inputs, cwd, internalUrlAction } = opts;
|
|
1140
|
+
const normalizedRawPaths = inputs.map(normalizePathLikeInput);
|
|
1141
|
+
if (normalizedRawPaths.some(rawPath => rawPath.length === 0)) {
|
|
1142
|
+
throw new ToolError("Search scope entries must be non-empty paths or globs");
|
|
1143
|
+
}
|
|
1144
|
+
const rawPaths = await expandDelimitedPathEntries(normalizedRawPaths, cwd);
|
|
1145
|
+
if (rawPaths.some(rawPath => rawPath.length === 0)) {
|
|
1146
|
+
throw new ToolError("Search scope entries must be non-empty paths or globs");
|
|
1147
|
+
}
|
|
1148
|
+
// Strict external-URL schemes. `file://` is intentionally absent: it has
|
|
1149
|
+
// local-path semantics (expandPath strips it downstream), so it flows through
|
|
1150
|
+
// the ordinary filesystem pipeline instead of the external-URL resolver.
|
|
1151
|
+
const strictExternalUrlRe = /^(?:https?|ftp|ws|wss):\/\//i;
|
|
1152
|
+
const internalRouter = InternalUrlRouter.instance();
|
|
1153
|
+
const resolvedPathInputs: string[] = [];
|
|
1154
|
+
const immutableSourcePaths = new Set<string>();
|
|
1155
|
+
for (const rawPath of rawPaths) {
|
|
1156
|
+
let externalUrl = strictExternalUrlRe.test(rawPath);
|
|
1157
|
+
if (!externalUrl && isReadableUrlPath(rawPath) && !hasGlobPathChars(rawPath)) {
|
|
1158
|
+
// Fuzzy spelling the read parser accepts (`www.host/…`, collapsed
|
|
1159
|
+
// `https:/host/…`). An existing local path wins over URL
|
|
1160
|
+
// interpretation so a directory literally named `www.foo` stays
|
|
1161
|
+
// searchable; only a definitive ENOENT/ENOTDIR flips to URL handling
|
|
1162
|
+
// (any other stat error means the path exists — let the local
|
|
1163
|
+
// pipeline surface it).
|
|
1164
|
+
try {
|
|
1165
|
+
await fs.promises.stat(resolveToCwd(rawPath, cwd));
|
|
1166
|
+
} catch (err) {
|
|
1167
|
+
externalUrl = isEnoent(err) || isEnotdir(err);
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
if (externalUrl) {
|
|
1171
|
+
const resolved = opts.resolveExternalUrl ? await opts.resolveExternalUrl(rawPath) : undefined;
|
|
1172
|
+
if (resolved) {
|
|
1173
|
+
resolvedPathInputs.push(resolved.sourcePath);
|
|
1174
|
+
if (opts.trackImmutableSources && resolved.immutable) {
|
|
1175
|
+
immutableSourcePaths.add(path.resolve(resolved.sourcePath));
|
|
1176
|
+
}
|
|
1177
|
+
continue;
|
|
1178
|
+
}
|
|
1179
|
+
// Resolver missing or declined (e.g. ftp/ws/wss): fail explicitly
|
|
1180
|
+
// instead of letting the local-path fallthrough surface a confusing
|
|
1181
|
+
// "Path not found" for a URL-shaped input.
|
|
1182
|
+
throw new ToolError(
|
|
1183
|
+
`Cannot ${internalUrlAction} external URL: ${rawPath}. Use \`read\` to fetch web content, then search the returned text.`,
|
|
1184
|
+
);
|
|
1185
|
+
}
|
|
1186
|
+
if (!internalRouter.canHandle(rawPath)) {
|
|
1187
|
+
resolvedPathInputs.push(rawPath);
|
|
1188
|
+
continue;
|
|
1189
|
+
}
|
|
1190
|
+
if (isSshUrl(rawPath)) {
|
|
1191
|
+
throw new ToolError(
|
|
1192
|
+
`Cannot ${internalUrlAction} a remote ssh:// path (no local file): ${rawPath}. Use \`read ${rawPath}\` to view it, or the \`search\` tool to grep remote files.`,
|
|
1193
|
+
);
|
|
1194
|
+
}
|
|
1195
|
+
if (hasGlobPathChars(rawPath)) {
|
|
1196
|
+
throw new ToolError(`Glob patterns are not supported for internal URLs: ${rawPath}`);
|
|
1197
|
+
}
|
|
1198
|
+
const resource = await internalRouter.resolve(rawPath, {
|
|
1199
|
+
cwd,
|
|
1200
|
+
settings: opts.settings,
|
|
1201
|
+
signal: opts.signal,
|
|
1202
|
+
localProtocolOptions: opts.localProtocolOptions,
|
|
1203
|
+
skills: opts.skills,
|
|
1204
|
+
// Tool-scope resolution only needs `sourcePath`; skip content
|
|
1205
|
+
// materialization so large artifacts (or any handler that separates
|
|
1206
|
+
// path from content) stay searchable without OOM risk.
|
|
1207
|
+
pathOnly: true,
|
|
1208
|
+
});
|
|
1209
|
+
if (!resource.sourcePath) {
|
|
1210
|
+
throw new ToolError(`Cannot ${internalUrlAction} internal URL without a backing file: ${rawPath}`);
|
|
1211
|
+
}
|
|
1212
|
+
if (opts.trackImmutableSources && resource.immutable) {
|
|
1213
|
+
immutableSourcePaths.add(path.resolve(resource.sourcePath));
|
|
1214
|
+
}
|
|
1215
|
+
resolvedPathInputs.push(resource.sourcePath);
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
let missingPaths: string[] = [];
|
|
1219
|
+
let effectivePaths = resolvedPathInputs;
|
|
1220
|
+
if (resolvedPathInputs.length > 1) {
|
|
1221
|
+
const partition = await partitionExistingPaths(resolvedPathInputs, cwd, parseSearchPath);
|
|
1222
|
+
if (partition.valid.length === 0) {
|
|
1223
|
+
throw new ToolError(`Path not found: ${partition.missing.join(", ")}`);
|
|
1224
|
+
}
|
|
1225
|
+
effectivePaths = partition.valid;
|
|
1226
|
+
missingPaths = partition.missing;
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
let searchPath: string;
|
|
1230
|
+
let scopePath: string;
|
|
1231
|
+
let globFilter: string | undefined;
|
|
1232
|
+
let multiTargets: ResolvedSearchTarget[] | undefined;
|
|
1233
|
+
let exactFilePaths: string[] | undefined;
|
|
1234
|
+
if (effectivePaths.length === 1) {
|
|
1235
|
+
const parsedPath = await parseSearchPathPreferringLiteral(effectivePaths[0] ?? ".", cwd);
|
|
1236
|
+
searchPath = resolveToCwd(parsedPath.basePath, cwd);
|
|
1237
|
+
globFilter = parsedPath.glob;
|
|
1238
|
+
scopePath = formatPathRelativeToCwd(searchPath, cwd);
|
|
1239
|
+
} else {
|
|
1240
|
+
const multiSearchPath = await resolveExplicitSearchPaths(
|
|
1241
|
+
effectivePaths,
|
|
1242
|
+
cwd,
|
|
1243
|
+
undefined,
|
|
1244
|
+
opts.fanOutFileTargets === true,
|
|
1245
|
+
);
|
|
1246
|
+
if (!multiSearchPath) {
|
|
1247
|
+
throw new ToolError("`paths` must contain at least one path or glob");
|
|
1248
|
+
}
|
|
1249
|
+
searchPath = multiSearchPath.basePath;
|
|
1250
|
+
multiTargets = multiSearchPath.targets;
|
|
1251
|
+
if (opts.surfaceExactFilePaths) {
|
|
1252
|
+
exactFilePaths = multiSearchPath.exactFilePaths;
|
|
1253
|
+
globFilter = exactFilePaths || multiTargets ? undefined : multiSearchPath.glob;
|
|
1254
|
+
} else {
|
|
1255
|
+
globFilter = multiTargets ? undefined : multiSearchPath.glob;
|
|
1256
|
+
}
|
|
1257
|
+
scopePath = multiSearchPath.scopePath;
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
let isDirectory: boolean;
|
|
1261
|
+
try {
|
|
1262
|
+
const stat = await Bun.file(searchPath).stat();
|
|
1263
|
+
isDirectory = stat.isDirectory();
|
|
1264
|
+
} catch {
|
|
1265
|
+
const hint = opts.multipathStatHint && rawPaths.length > 1 ? opts.multipathStatHint : "";
|
|
1266
|
+
throw new ToolError(`Path not found: ${scopePath}${hint}`);
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
return {
|
|
1270
|
+
searchPath,
|
|
1271
|
+
scopePath,
|
|
1272
|
+
globFilter,
|
|
1273
|
+
isDirectory,
|
|
1274
|
+
multiTargets,
|
|
1275
|
+
exactFilePaths,
|
|
1276
|
+
missingPaths,
|
|
1277
|
+
immutableSourcePaths,
|
|
1278
|
+
};
|
|
1279
|
+
}
|