@oh-my-pi/pi-coding-agent 15.1.0 → 15.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/types/async/index.d.ts +2 -0
- package/dist/types/async/job-manager.d.ts +87 -0
- package/dist/types/async/support.d.ts +2 -0
- package/dist/types/autoresearch/dashboard.d.ts +4 -0
- package/dist/types/autoresearch/git.d.ts +36 -0
- package/dist/types/autoresearch/helpers.d.ts +24 -0
- package/dist/types/autoresearch/index.d.ts +2 -0
- package/dist/types/autoresearch/state.d.ts +17 -0
- package/dist/types/autoresearch/storage.d.ts +142 -0
- package/dist/types/autoresearch/tools/init-experiment.d.ts +31 -0
- package/dist/types/autoresearch/tools/log-experiment.d.ts +23 -0
- package/dist/types/autoresearch/tools/run-experiment.d.ts +8 -0
- package/dist/types/autoresearch/tools/update-notes.d.ts +12 -0
- package/dist/types/autoresearch/types.d.ts +154 -0
- package/dist/types/capability/context-file.d.ts +17 -0
- package/dist/types/capability/extension-module.d.ts +15 -0
- package/dist/types/capability/extension.d.ts +28 -0
- package/dist/types/capability/fs.d.ts +20 -0
- package/dist/types/capability/hook.d.ts +19 -0
- package/dist/types/capability/index.d.ts +80 -0
- package/dist/types/capability/instruction.d.ts +17 -0
- package/dist/types/capability/mcp.d.ts +45 -0
- package/dist/types/capability/prompt.d.ts +15 -0
- package/dist/types/capability/rule.d.ts +61 -0
- package/dist/types/capability/settings.d.ts +15 -0
- package/dist/types/capability/skill.d.ts +36 -0
- package/dist/types/capability/slash-command.d.ts +17 -0
- package/dist/types/capability/ssh.d.ts +23 -0
- package/dist/types/capability/system-prompt.d.ts +15 -0
- package/dist/types/capability/tool.d.ts +19 -0
- package/dist/types/capability/types.d.ts +154 -0
- package/dist/types/cli/agents-cli.d.ts +12 -0
- package/dist/types/cli/args.d.ts +52 -0
- package/dist/types/cli/classify-install-target.d.ts +18 -0
- package/dist/types/cli/commands/init-xdg.d.ts +1 -0
- package/dist/types/cli/config-cli.d.ts +22 -0
- package/dist/types/cli/file-processor.d.ts +11 -0
- package/dist/types/cli/grep-cli.d.ts +17 -0
- package/dist/types/cli/grievances-cli.d.ts +25 -0
- package/dist/types/cli/initial-message.d.ts +17 -0
- package/dist/types/cli/list-models.d.ts +30 -0
- package/dist/types/cli/plugin-cli.d.ts +32 -0
- package/dist/types/cli/read-cli.d.ts +4 -0
- package/dist/types/cli/session-picker.d.ts +3 -0
- package/dist/types/cli/setup-cli.d.ts +24 -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/stats-cli.d.ts +17 -0
- package/dist/types/cli/update-cli.d.ts +20 -0
- package/dist/types/cli/web-search-cli.d.ts +20 -0
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/commands/acp.d.ts +12 -0
- package/dist/types/commands/agents.d.ts +34 -0
- package/dist/types/commands/commit.d.ts +27 -0
- package/dist/types/commands/config.d.ts +30 -0
- package/dist/types/commands/grep.d.ts +42 -0
- package/dist/types/commands/grievances.d.ts +40 -0
- package/dist/types/commands/launch.d.ts +118 -0
- package/dist/types/commands/plugin.d.ts +52 -0
- package/dist/types/commands/read.d.ts +15 -0
- package/dist/types/commands/setup.d.ts +25 -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/update.d.ts +20 -0
- package/dist/types/commands/web-search.d.ts +33 -0
- package/dist/types/commit/agentic/agent.d.ts +31 -0
- package/dist/types/commit/agentic/fallback.d.ts +5 -0
- package/dist/types/commit/agentic/index.d.ts +2 -0
- package/dist/types/commit/agentic/state.d.ts +58 -0
- package/dist/types/commit/agentic/tools/analyze-file.d.ts +19 -0
- package/dist/types/commit/agentic/tools/git-file-diff.d.ts +10 -0
- package/dist/types/commit/agentic/tools/git-hunk.d.ts +9 -0
- package/dist/types/commit/agentic/tools/git-overview.d.ts +9 -0
- package/dist/types/commit/agentic/tools/index.d.ts +16 -0
- package/dist/types/commit/agentic/tools/propose-changelog.d.ts +28 -0
- package/dist/types/commit/agentic/tools/propose-commit.d.ts +28 -0
- package/dist/types/commit/agentic/tools/recent-commits.d.ts +7 -0
- package/dist/types/commit/agentic/tools/schemas.d.ts +19 -0
- package/dist/types/commit/agentic/tools/split-commit.d.ts +45 -0
- package/dist/types/commit/agentic/topo-sort.d.ts +4 -0
- package/dist/types/commit/agentic/trivial.d.ts +7 -0
- package/dist/types/commit/agentic/validation.d.ts +20 -0
- package/dist/types/commit/analysis/conventional.d.ts +22 -0
- package/dist/types/commit/analysis/index.d.ts +4 -0
- package/dist/types/commit/analysis/scope.d.ts +6 -0
- package/dist/types/commit/analysis/summary.d.ts +19 -0
- package/dist/types/commit/analysis/validation.d.ts +8 -0
- package/dist/types/commit/changelog/detect.d.ts +2 -0
- package/dist/types/commit/changelog/generate.d.ts +30 -0
- package/dist/types/commit/changelog/index.d.ts +30 -0
- package/dist/types/commit/changelog/parse.d.ts +2 -0
- package/dist/types/commit/cli.d.ts +3 -0
- package/dist/types/commit/git/diff.d.ts +5 -0
- package/dist/types/commit/index.d.ts +4 -0
- package/dist/types/commit/map-reduce/index.d.ts +28 -0
- package/dist/types/commit/map-reduce/map-phase.d.ts +17 -0
- package/dist/types/commit/map-reduce/reduce-phase.d.ts +13 -0
- package/dist/types/commit/map-reduce/utils.d.ts +2 -0
- package/dist/types/commit/message.d.ts +2 -0
- package/dist/types/commit/model-selection.d.ts +15 -0
- package/dist/types/commit/pipeline.d.ts +5 -0
- package/dist/types/commit/shared-llm.d.ts +54 -0
- package/dist/types/commit/types.d.ts +78 -0
- package/dist/types/commit/utils/exclusions.d.ts +4 -0
- package/dist/types/commit/utils.d.ts +20 -0
- package/dist/types/config/config-file.d.ts +58 -0
- package/dist/types/config/file-lock.d.ts +6 -0
- package/dist/types/config/keybindings.d.ts +334 -0
- package/dist/types/config/model-equivalence.d.ts +24 -0
- package/dist/types/config/model-registry.d.ts +360 -0
- package/dist/types/config/model-resolver.d.ts +230 -0
- package/dist/types/config/models-config-schema.d.ts +502 -0
- package/dist/types/config/prompt-templates.d.ts +32 -0
- package/dist/types/config/resolve-config-value.d.ts +17 -0
- package/dist/types/config/settings-schema.d.ts +3315 -0
- package/dist/types/config/settings.d.ts +126 -0
- package/dist/types/config.d.ts +66 -0
- package/dist/types/cursor.d.ts +22 -0
- package/dist/types/dap/client.d.ts +38 -0
- package/dist/types/dap/config.d.ts +6 -0
- package/dist/types/dap/index.d.ts +4 -0
- package/dist/types/dap/session.d.ts +108 -0
- package/dist/types/dap/types.d.ts +524 -0
- package/dist/types/debug/index.d.ts +15 -0
- package/dist/types/debug/log-formatting.d.ts +4 -0
- package/dist/types/debug/log-viewer.d.ts +68 -0
- package/dist/types/debug/profiler.d.ts +24 -0
- package/dist/types/debug/raw-sse-buffer.d.ts +44 -0
- package/dist/types/debug/raw-sse.d.ts +16 -0
- package/dist/types/debug/report-bundle.d.ts +55 -0
- package/dist/types/debug/system-info.d.ts +26 -0
- package/dist/types/discovery/agents-md.d.ts +1 -0
- package/dist/types/discovery/agents.d.ts +1 -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 +267 -0
- package/dist/types/discovery/index.d.ts +51 -0
- package/dist/types/discovery/mcp-json.d.ts +1 -0
- package/dist/types/discovery/opencode.d.ts +1 -0
- package/dist/types/discovery/plugin-dir-roots.d.ts +15 -0
- package/dist/types/discovery/ssh.d.ts +1 -0
- package/dist/types/discovery/substitute-plugin-root.d.ts +5 -0
- package/dist/types/discovery/vscode.d.ts +1 -0
- package/dist/types/discovery/windsurf.d.ts +13 -0
- package/dist/types/edit/apply-patch/index.d.ts +35 -0
- package/dist/types/edit/apply-patch/parser.d.ts +34 -0
- package/dist/types/edit/diff.d.ts +59 -0
- package/dist/types/edit/file-read-cache.d.ts +25 -0
- package/dist/types/edit/index.d.ts +58 -0
- package/dist/types/edit/modes/apply-patch.d.ts +24 -0
- package/dist/types/edit/modes/patch.d.ts +99 -0
- package/dist/types/edit/modes/replace.d.ts +142 -0
- package/dist/types/edit/normalize.d.ts +43 -0
- package/dist/types/edit/notebook.d.ts +23 -0
- package/dist/types/edit/read-file.d.ts +2 -0
- package/dist/types/edit/renderer.d.ts +107 -0
- package/dist/types/edit/streaming.d.ts +59 -0
- package/dist/types/eval/backend.d.ts +40 -0
- package/dist/types/eval/index.d.ts +6 -0
- package/dist/types/eval/js/context-manager.d.ts +24 -0
- package/dist/types/eval/js/executor.d.ts +28 -0
- package/dist/types/eval/js/index.d.ts +10 -0
- package/dist/types/eval/js/shared/helpers.d.ts +38 -0
- package/dist/types/eval/js/shared/indirect-eval.d.ts +14 -0
- package/dist/types/eval/js/shared/prelude.d.ts +1 -0
- package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -0
- package/dist/types/eval/js/shared/runtime.d.ts +47 -0
- package/dist/types/eval/js/shared/types.d.ts +24 -0
- package/dist/types/eval/js/tool-bridge.d.ts +18 -0
- package/dist/types/eval/js/worker-core.d.ts +5 -0
- package/dist/types/eval/js/worker-entry.d.ts +1 -0
- package/dist/types/eval/js/worker-protocol.d.ts +77 -0
- package/dist/types/eval/parse.d.ts +28 -0
- package/dist/types/eval/py/display.d.ts +25 -0
- package/dist/types/eval/py/executor.d.ts +83 -0
- package/dist/types/eval/py/index.d.ts +10 -0
- package/dist/types/eval/py/kernel.d.ts +55 -0
- package/dist/types/eval/py/prelude.d.ts +1 -0
- package/dist/types/eval/py/runtime.d.ts +21 -0
- package/dist/types/eval/py/tool-bridge.d.ts +20 -0
- package/dist/types/eval/sniff.d.ts +11 -0
- package/dist/types/eval/types.d.ts +52 -0
- package/dist/types/exa/factory.d.ts +13 -0
- package/dist/types/exa/index.d.ts +20 -0
- package/dist/types/exa/mcp-client.d.ts +45 -0
- package/dist/types/exa/render.d.ts +19 -0
- package/dist/types/exa/researcher.d.ts +9 -0
- package/dist/types/exa/search.d.ts +9 -0
- package/dist/types/exa/types.d.ts +155 -0
- package/dist/types/exa/websets.d.ts +9 -0
- package/dist/types/exec/bash-executor.d.ts +41 -0
- package/dist/types/exec/exec.d.ts +25 -0
- package/dist/types/exec/idle-timeout-watchdog.d.ts +18 -0
- package/dist/types/exec/non-interactive-env.d.ts +1 -0
- package/dist/types/export/custom-share.d.ts +20 -0
- package/dist/types/export/html/index.d.ts +10 -0
- package/dist/types/export/html/template.generated.d.ts +1 -0
- package/dist/types/export/html/template.macro.d.ts +5 -0
- package/dist/types/export/ttsr.d.ts +44 -0
- package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +9 -0
- package/dist/types/extensibility/custom-commands/bundled/review/index.d.ts +10 -0
- package/dist/types/extensibility/custom-commands/index.d.ts +2 -0
- package/dist/types/extensibility/custom-commands/loader.d.ts +29 -0
- package/dist/types/extensibility/custom-commands/types.d.ts +106 -0
- package/dist/types/extensibility/custom-tools/index.d.ts +6 -0
- package/dist/types/extensibility/custom-tools/loader.d.ts +69 -0
- package/dist/types/extensibility/custom-tools/types.d.ts +226 -0
- package/dist/types/extensibility/custom-tools/wrapper.d.ts +23 -0
- package/dist/types/extensibility/extensions/compact-handler.d.ts +26 -0
- package/dist/types/extensibility/extensions/get-commands-handler.d.ts +29 -0
- package/dist/types/extensibility/extensions/index.d.ts +8 -0
- package/dist/types/extensibility/extensions/loader.d.ts +43 -0
- package/dist/types/extensibility/extensions/runner.d.ts +134 -0
- package/dist/types/extensibility/extensions/types.d.ts +864 -0
- package/dist/types/extensibility/extensions/wrapper.d.ts +54 -0
- package/dist/types/extensibility/hooks/index.d.ts +5 -0
- package/dist/types/extensibility/hooks/loader.d.ts +89 -0
- package/dist/types/extensibility/hooks/runner.d.ts +126 -0
- package/dist/types/extensibility/hooks/tool-wrapper.d.ts +25 -0
- package/dist/types/extensibility/hooks/types.d.ts +431 -0
- package/dist/types/extensibility/plugins/doctor.d.ts +3 -0
- package/dist/types/extensibility/plugins/git-url.d.ts +34 -0
- package/dist/types/extensibility/plugins/index.d.ts +7 -0
- package/dist/types/extensibility/plugins/installer.d.ts +5 -0
- package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +2 -0
- package/dist/types/extensibility/plugins/loader.d.ts +31 -0
- package/dist/types/extensibility/plugins/manager.d.ts +65 -0
- package/dist/types/extensibility/plugins/marketplace/cache.d.ts +41 -0
- package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +48 -0
- package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -0
- package/dist/types/extensibility/plugins/marketplace/manager.d.ts +57 -0
- package/dist/types/extensibility/plugins/marketplace/registry.d.ts +34 -0
- package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +28 -0
- package/dist/types/extensibility/plugins/marketplace/types.d.ts +130 -0
- package/dist/types/extensibility/plugins/parser.d.ts +52 -0
- package/dist/types/extensibility/plugins/types.d.ts +149 -0
- package/dist/types/extensibility/shared-events.d.ts +279 -0
- package/dist/types/extensibility/skills.d.ts +57 -0
- package/dist/types/extensibility/slash-commands.d.ts +48 -0
- package/dist/types/extensibility/tool-proxy.d.ts +4 -0
- package/dist/types/extensibility/typebox.d.ts +155 -0
- package/dist/types/extensibility/utils.d.ts +12 -0
- package/dist/types/goals/index.d.ts +3 -0
- package/dist/types/goals/runtime.d.ts +63 -0
- package/dist/types/goals/state.d.ts +35 -0
- package/dist/types/goals/tools/goal-tool.d.ts +54 -0
- package/dist/types/hashline/anchors.d.ts +20 -0
- package/dist/types/hashline/apply.d.ts +14 -0
- package/dist/types/hashline/constants.d.ts +21 -0
- package/dist/types/hashline/diff-preview.d.ts +2 -0
- package/dist/types/hashline/diff.d.ts +17 -0
- package/dist/types/hashline/execute.d.ts +4 -0
- package/dist/types/hashline/hash.d.ts +149 -0
- package/dist/types/hashline/index.d.ts +13 -0
- package/dist/types/hashline/input.d.ts +11 -0
- package/dist/types/hashline/parser.d.ts +7 -0
- package/dist/types/hashline/prefixes.d.ts +7 -0
- package/dist/types/hashline/recovery.d.ts +22 -0
- package/dist/types/hashline/stream.d.ts +2 -0
- package/dist/types/hashline/types.d.ts +77 -0
- package/dist/types/hindsight/backend.d.ts +13 -0
- package/dist/types/hindsight/bank.d.ts +54 -0
- package/dist/types/hindsight/client.d.ts +224 -0
- package/dist/types/hindsight/config.d.ts +51 -0
- package/dist/types/hindsight/content.d.ts +70 -0
- package/dist/types/hindsight/index.d.ts +8 -0
- package/dist/types/hindsight/mental-models.d.ts +125 -0
- package/dist/types/hindsight/state.d.ts +99 -0
- package/dist/types/hindsight/transcript.d.ts +28 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/internal-urls/agent-protocol.d.ts +12 -0
- package/dist/types/internal-urls/artifact-protocol.d.ts +6 -0
- package/dist/types/internal-urls/docs-index.generated.d.ts +2 -0
- package/dist/types/internal-urls/index.d.ts +22 -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 +39 -0
- package/dist/types/internal-urls/mcp-protocol.d.ts +12 -0
- package/dist/types/internal-urls/memory-protocol.d.ts +17 -0
- package/dist/types/internal-urls/parse.d.ts +19 -0
- package/dist/types/internal-urls/pi-protocol.d.ts +12 -0
- package/dist/types/internal-urls/registry-helpers.d.ts +10 -0
- package/dist/types/internal-urls/router.d.ts +14 -0
- package/dist/types/internal-urls/rule-protocol.d.ts +6 -0
- package/dist/types/internal-urls/skill-protocol.d.ts +13 -0
- package/dist/types/internal-urls/types.d.ts +105 -0
- package/dist/types/lsp/client.d.ts +65 -0
- package/dist/types/lsp/clients/biome-client.d.ts +16 -0
- package/dist/types/lsp/clients/index.d.ts +19 -0
- package/dist/types/lsp/clients/lsp-linter-client.d.ts +16 -0
- package/dist/types/lsp/clients/swiftlint-client.d.ts +20 -0
- package/dist/types/lsp/config.d.ts +65 -0
- package/dist/types/lsp/edits.d.ts +16 -0
- package/dist/types/lsp/index.d.ts +130 -0
- package/dist/types/lsp/lspmux.d.ts +58 -0
- package/dist/types/lsp/render.d.ts +32 -0
- package/dist/types/lsp/startup-events.d.ts +11 -0
- package/dist/types/lsp/types.d.ts +302 -0
- package/dist/types/lsp/utils.d.ts +108 -0
- package/dist/types/main.d.ts +17 -0
- package/dist/types/mcp/client.d.ts +74 -0
- package/dist/types/mcp/config-writer.d.ts +53 -0
- package/dist/types/mcp/config.d.ts +75 -0
- package/dist/types/mcp/discoverable-tool-metadata.d.ts +7 -0
- package/dist/types/mcp/index.d.ts +18 -0
- package/dist/types/mcp/json-rpc.d.ts +22 -0
- package/dist/types/mcp/loader.d.ts +43 -0
- package/dist/types/mcp/manager.d.ts +193 -0
- package/dist/types/mcp/oauth-discovery.d.ts +40 -0
- package/dist/types/mcp/oauth-flow.d.ts +59 -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 +51 -0
- package/dist/types/mcp/tool-bridge.d.ts +86 -0
- package/dist/types/mcp/tool-cache.d.ts +8 -0
- package/dist/types/mcp/transports/http.d.ts +36 -0
- package/dist/types/mcp/transports/index.d.ts +5 -0
- package/dist/types/mcp/transports/stdio.d.ts +32 -0
- package/dist/types/mcp/types.d.ts +333 -0
- package/dist/types/memories/index.d.ts +28 -0
- package/dist/types/memories/storage.d.ts +110 -0
- package/dist/types/memory-backend/index.d.ts +4 -0
- package/dist/types/memory-backend/local-backend.d.ts +9 -0
- package/dist/types/memory-backend/off-backend.d.ts +7 -0
- package/dist/types/memory-backend/resolve.d.ts +15 -0
- package/dist/types/memory-backend/types.d.ts +61 -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 +20 -0
- package/dist/types/modes/acp/acp-mode.d.ts +3 -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/agent-dashboard.d.ts +21 -0
- package/dist/types/modes/components/assistant-message.d.ts +16 -0
- package/dist/types/modes/components/bash-execution.d.ts +29 -0
- package/dist/types/modes/components/bordered-loader.d.ts +11 -0
- package/dist/types/modes/components/branch-summary-message.d.ts +13 -0
- package/dist/types/modes/components/btw-panel.d.ts +16 -0
- package/dist/types/modes/components/compaction-summary-message.d.ts +13 -0
- package/dist/types/modes/components/countdown-timer.d.ts +14 -0
- package/dist/types/modes/components/custom-editor.d.ts +47 -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/eval-execution.d.ts +23 -0
- package/dist/types/modes/components/execution-shared.d.ts +46 -0
- package/dist/types/modes/components/extensions/extension-dashboard.d.ts +26 -0
- package/dist/types/modes/components/extensions/extension-list.d.ts +39 -0
- package/dist/types/modes/components/extensions/index.d.ts +8 -0
- package/dist/types/modes/components/extensions/inspector-panel.d.ts +8 -0
- package/dist/types/modes/components/extensions/state-manager.d.ts +50 -0
- package/dist/types/modes/components/extensions/types.d.ts +151 -0
- package/dist/types/modes/components/footer.d.ts +30 -0
- package/dist/types/modes/components/history-search.d.ts +7 -0
- package/dist/types/modes/components/hook-editor.d.ts +18 -0
- package/dist/types/modes/components/hook-input.d.ts +15 -0
- package/dist/types/modes/components/hook-message.d.ts +15 -0
- package/dist/types/modes/components/hook-selector.d.ts +23 -0
- package/dist/types/modes/components/index.d.ts +35 -0
- package/dist/types/modes/components/keybinding-hints.d.ts +40 -0
- package/dist/types/modes/components/login-dialog.d.ts +32 -0
- package/dist/types/modes/components/mcp-add-wizard.d.ts +25 -0
- package/dist/types/modes/components/message-frame.d.ts +42 -0
- package/dist/types/modes/components/model-selector.d.ts +26 -0
- package/dist/types/modes/components/oauth-selector.d.ts +14 -0
- package/dist/types/modes/components/plugin-selector.d.ts +26 -0
- package/dist/types/modes/components/plugin-settings.d.ts +66 -0
- package/dist/types/modes/components/queue-mode-selector.d.ts +9 -0
- package/dist/types/modes/components/read-tool-group.d.ts +30 -0
- package/dist/types/modes/components/session-observer-overlay.d.ts +11 -0
- package/dist/types/modes/components/session-selector.d.ts +30 -0
- package/dist/types/modes/components/settings-defs.d.ts +50 -0
- package/dist/types/modes/components/settings-selector.d.ts +54 -0
- package/dist/types/modes/components/show-images-selector.d.ts +9 -0
- package/dist/types/modes/components/skill-message.d.ts +9 -0
- package/dist/types/modes/components/status-line/context-thresholds.d.ts +4 -0
- package/dist/types/modes/components/status-line/git-utils.d.ts +22 -0
- package/dist/types/modes/components/status-line/index.d.ts +4 -0
- package/dist/types/modes/components/status-line/presets.d.ts +3 -0
- package/dist/types/modes/components/status-line/segments.d.ts +5 -0
- package/dist/types/modes/components/status-line/separators.d.ts +3 -0
- package/dist/types/modes/components/status-line/token-rate.d.ts +10 -0
- package/dist/types/modes/components/status-line/types.d.ts +70 -0
- package/dist/types/modes/components/status-line-segment-editor.d.ts +24 -0
- package/dist/types/modes/components/status-line.d.ts +61 -0
- package/dist/types/modes/components/theme-selector.d.ts +10 -0
- package/dist/types/modes/components/thinking-selector.d.ts +10 -0
- package/dist/types/modes/components/todo-reminder.d.ts +13 -0
- package/dist/types/modes/components/tool-execution.d.ts +53 -0
- package/dist/types/modes/components/tree-selector.d.ts +31 -0
- package/dist/types/modes/components/ttsr-notification.d.ts +13 -0
- package/dist/types/modes/components/user-message-selector.d.ts +28 -0
- package/dist/types/modes/components/user-message.d.ts +8 -0
- package/dist/types/modes/components/visual-truncate.d.ts +19 -0
- package/dist/types/modes/components/welcome.d.ts +33 -0
- package/dist/types/modes/controllers/btw-controller.d.ts +10 -0
- package/dist/types/modes/controllers/command-controller-shared.d.ts +47 -0
- package/dist/types/modes/controllers/command-controller.d.ts +36 -0
- package/dist/types/modes/controllers/event-controller.d.ts +12 -0
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +80 -0
- package/dist/types/modes/controllers/input-controller.d.ts +35 -0
- package/dist/types/modes/controllers/mcp-command-controller.d.ts +10 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +45 -0
- package/dist/types/modes/controllers/ssh-command-controller.d.ts +10 -0
- package/dist/types/modes/controllers/todo-command-controller.d.ts +7 -0
- package/dist/types/modes/index.d.ts +9 -0
- package/dist/types/modes/interactive-mode.d.ts +267 -0
- package/dist/types/modes/loop-limit.d.ts +22 -0
- package/dist/types/modes/oauth-manual-input.d.ts +8 -0
- package/dist/types/modes/print-mode.d.ts +27 -0
- package/dist/types/modes/prompt-action-autocomplete.d.ts +42 -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 +249 -0
- package/dist/types/modes/rpc/rpc-mode.d.ts +17 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +586 -0
- package/dist/types/modes/runtime-init.d.ts +21 -0
- package/dist/types/modes/session-observer-registry.d.ts +26 -0
- package/dist/types/modes/shared.d.ts +6 -0
- package/dist/types/modes/theme/defaults/index.d.ts +9436 -0
- package/dist/types/modes/theme/mermaid-cache.d.ts +9 -0
- package/dist/types/modes/theme/theme.d.ts +273 -0
- package/dist/types/modes/types.d.ts +274 -0
- package/dist/types/modes/utils/context-usage.d.ts +30 -0
- package/dist/types/modes/utils/hotkeys-markdown.d.ts +5 -0
- package/dist/types/modes/utils/keybinding-matchers.d.ts +10 -0
- package/dist/types/modes/utils/tools-markdown.d.ts +5 -0
- package/dist/types/modes/utils/ui-helpers.d.ts +49 -0
- package/dist/types/plan-mode/approved-plan.d.ts +25 -0
- package/dist/types/plan-mode/state.d.ts +6 -0
- package/dist/types/registry/agent-registry.d.ts +62 -0
- package/dist/types/sdk.d.ts +246 -0
- package/dist/types/secrets/index.d.ts +9 -0
- package/dist/types/secrets/obfuscator.d.ts +23 -0
- package/dist/types/secrets/regex.d.ts +2 -0
- package/dist/types/session/agent-session.d.ts +898 -0
- package/dist/types/session/agent-storage.d.ts +93 -0
- package/dist/types/session/artifacts.d.ts +61 -0
- package/dist/types/session/auth-storage.d.ts +6 -0
- package/dist/types/session/blob-store.d.ts +63 -0
- package/dist/types/session/client-bridge.d.ts +84 -0
- package/dist/types/session/history-storage.d.ts +16 -0
- package/dist/types/session/messages.d.ts +162 -0
- package/dist/types/session/session-dump-format.d.ts +22 -0
- package/dist/types/session/session-manager.d.ts +539 -0
- package/dist/types/session/session-storage.d.ts +82 -0
- package/dist/types/session/streaming-output.d.ts +185 -0
- package/dist/types/session/tool-choice-queue.d.ts +78 -0
- package/dist/types/slash-commands/acp-builtins.d.ts +18 -0
- package/dist/types/slash-commands/builtin-registry.d.ts +23 -0
- package/dist/types/slash-commands/helpers/context-report.d.ts +7 -0
- package/dist/types/slash-commands/helpers/format.d.ts +7 -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/ssh.d.ts +3 -0
- package/dist/types/slash-commands/helpers/todo.d.ts +3 -0
- package/dist/types/slash-commands/helpers/usage-report.d.ts +7 -0
- package/dist/types/slash-commands/marketplace-install-parser.d.ts +33 -0
- package/dist/types/slash-commands/types.d.ts +119 -0
- package/dist/types/ssh/config-writer.d.ts +49 -0
- package/dist/types/ssh/connection-manager.d.ts +33 -0
- package/dist/types/ssh/ssh-executor.d.ts +37 -0
- package/dist/types/ssh/sshfs-mount.d.ts +6 -0
- package/dist/types/ssh/utils.d.ts +2 -0
- package/dist/types/stt/downloader.d.ts +9 -0
- package/dist/types/stt/index.d.ts +3 -0
- package/dist/types/stt/recorder.d.ts +13 -0
- package/dist/types/stt/setup.d.ts +18 -0
- package/dist/types/stt/stt-controller.d.ts +16 -0
- package/dist/types/stt/transcriber.d.ts +16 -0
- package/dist/types/system-prompt.d.ts +93 -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 +18 -0
- package/dist/types/task/executor.d.ts +106 -0
- package/dist/types/task/index.d.ts +38 -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 +36 -0
- package/dist/types/task/parallel.d.ts +34 -0
- package/dist/types/task/render.d.ts +22 -0
- package/dist/types/task/simple-mode.d.ts +8 -0
- package/dist/types/task/subprocess-tool-registry.d.ts +72 -0
- package/dist/types/task/types.d.ts +251 -0
- package/dist/types/task/worktree.d.ts +95 -0
- package/dist/types/thinking.d.ts +30 -0
- package/dist/types/tool-discovery/tool-index.d.ts +107 -0
- package/dist/types/tools/archive-reader.d.ts +40 -0
- package/dist/types/tools/ask.d.ts +109 -0
- package/dist/types/tools/ast-edit.d.ts +72 -0
- package/dist/types/tools/ast-grep.d.ts +64 -0
- package/dist/types/tools/auto-generated-guard.d.ts +17 -0
- package/dist/types/tools/bash-command-fixup.d.ts +16 -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 +130 -0
- package/dist/types/tools/browser/attach.d.ts +34 -0
- package/dist/types/tools/browser/launch.d.ts +60 -0
- package/dist/types/tools/browser/readable.d.ts +17 -0
- package/dist/types/tools/browser/registry.d.ts +42 -0
- package/dist/types/tools/browser/render.d.ts +50 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +144 -0
- package/dist/types/tools/browser/tab-supervisor.d.ts +63 -0
- package/dist/types/tools/browser/tab-worker-entry.d.ts +1 -0
- package/dist/types/tools/browser/tab-worker.d.ts +19 -0
- package/dist/types/tools/browser.d.ts +114 -0
- package/dist/types/tools/calculator.d.ts +76 -0
- package/dist/types/tools/checkpoint.d.ts +63 -0
- package/dist/types/tools/conflict-detect.d.ts +205 -0
- package/dist/types/tools/context.d.ts +19 -0
- package/dist/types/tools/debug.d.ts +209 -0
- package/dist/types/tools/eval.d.ts +74 -0
- package/dist/types/tools/fetch.d.ts +61 -0
- package/dist/types/tools/file-recorder.d.ts +13 -0
- package/dist/types/tools/find.d.ts +88 -0
- package/dist/types/tools/fs-cache-invalidation.d.ts +15 -0
- package/dist/types/tools/gh-format.d.ts +6 -0
- package/dist/types/tools/gh-renderer.d.ts +25 -0
- package/dist/types/tools/gh.d.ts +356 -0
- package/dist/types/tools/github-cache.d.ts +103 -0
- package/dist/types/tools/grouped-file-output.d.ts +36 -0
- package/dist/types/tools/hindsight-recall.d.ts +23 -0
- package/dist/types/tools/hindsight-reflect.d.ts +25 -0
- package/dist/types/tools/hindsight-retain.d.ts +29 -0
- package/dist/types/tools/image-gen.d.ts +78 -0
- package/dist/types/tools/index.d.ts +244 -0
- package/dist/types/tools/inspect-image-renderer.d.ts +26 -0
- package/dist/types/tools/inspect-image.d.ts +31 -0
- package/dist/types/tools/irc.d.ts +73 -0
- package/dist/types/tools/job.d.ts +65 -0
- package/dist/types/tools/json-tree.d.ts +23 -0
- package/dist/types/tools/jtd-to-json-schema.d.ts +29 -0
- package/dist/types/tools/jtd-to-typescript.d.ts +26 -0
- package/dist/types/tools/jtd-utils.d.ts +42 -0
- package/dist/types/tools/list-limit.d.ts +12 -0
- package/dist/types/tools/match-line-format.d.ts +11 -0
- package/dist/types/tools/output-meta.d.ts +204 -0
- package/dist/types/tools/path-utils.d.ts +125 -0
- package/dist/types/tools/plan-mode-guard.d.ts +18 -0
- package/dist/types/tools/read.d.ts +85 -0
- package/dist/types/tools/recipe/index.d.ts +45 -0
- package/dist/types/tools/recipe/render.d.ts +36 -0
- package/dist/types/tools/recipe/runner.d.ts +60 -0
- package/dist/types/tools/recipe/runners/cargo.d.ts +16 -0
- package/dist/types/tools/recipe/runners/index.d.ts +2 -0
- package/dist/types/tools/recipe/runners/just.d.ts +2 -0
- package/dist/types/tools/recipe/runners/make.d.ts +2 -0
- package/dist/types/tools/recipe/runners/pkg.d.ts +2 -0
- package/dist/types/tools/recipe/runners/task.d.ts +2 -0
- package/dist/types/tools/render-mermaid.d.ts +37 -0
- package/dist/types/tools/render-utils.d.ts +148 -0
- package/dist/types/tools/renderers.d.ts +26 -0
- package/dist/types/tools/report-tool-issue.d.ts +6 -0
- package/dist/types/tools/resolve.d.ts +79 -0
- package/dist/types/tools/review.d.ts +50 -0
- package/dist/types/tools/search-tool-bm25.d.ts +65 -0
- package/dist/types/tools/search.d.ts +90 -0
- package/dist/types/tools/sqlite-reader.d.ts +93 -0
- package/dist/types/tools/ssh.d.ts +67 -0
- package/dist/types/tools/todo-write.d.ts +120 -0
- package/dist/types/tools/tool-errors.d.ts +33 -0
- package/dist/types/tools/tool-result.d.ts +30 -0
- package/dist/types/tools/tool-timeouts.d.ts +51 -0
- package/dist/types/tools/vim.d.ts +58 -0
- package/dist/types/tools/write.d.ts +59 -0
- package/dist/types/tools/yield.d.ts +25 -0
- package/dist/types/tui/code-cell.d.ts +32 -0
- package/dist/types/tui/file-list.d.ts +16 -0
- package/dist/types/tui/index.d.ts +10 -0
- package/dist/types/tui/output-block.d.ts +28 -0
- package/dist/types/tui/status-line.d.ts +18 -0
- package/dist/types/tui/tree-list.d.ts +19 -0
- package/dist/types/tui/types.d.ts +13 -0
- package/dist/types/tui/utils.d.ts +36 -0
- package/dist/types/utils/changelog.d.ts +20 -0
- package/dist/types/utils/clipboard.d.ts +20 -0
- package/dist/types/utils/command-args.d.ts +9 -0
- package/dist/types/utils/commit-message-generator.d.ts +7 -0
- package/dist/types/utils/edit-mode.d.ts +13 -0
- package/dist/types/utils/event-bus.d.ts +6 -0
- package/dist/types/utils/external-editor.d.ts +17 -0
- package/dist/types/utils/file-display-mode.d.ts +27 -0
- package/dist/types/utils/file-mentions.d.ts +11 -0
- package/dist/types/utils/git.d.ts +360 -0
- package/dist/types/utils/image-loading.d.ts +26 -0
- package/dist/types/utils/image-resize.d.ts +36 -0
- package/dist/types/utils/lang-from-path.d.ts +8 -0
- package/dist/types/utils/markit.d.ts +7 -0
- package/dist/types/utils/open.d.ts +2 -0
- package/dist/types/utils/session-color.d.ts +10 -0
- package/dist/types/utils/shell-snapshot.d.ts +5 -0
- package/dist/types/utils/sixel.d.ts +21 -0
- package/dist/types/utils/title-generator.d.ts +31 -0
- package/dist/types/utils/tool-choice.d.ts +6 -0
- package/dist/types/utils/tools-manager.d.ts +9 -0
- package/dist/types/vim/buffer.d.ts +41 -0
- package/dist/types/vim/commands.d.ts +6 -0
- package/dist/types/vim/engine.d.ts +47 -0
- package/dist/types/vim/parser.d.ts +3 -0
- package/dist/types/vim/render.d.ts +25 -0
- package/dist/types/vim/types.d.ts +182 -0
- package/dist/types/web/kagi.d.ts +21 -0
- package/dist/types/web/parallel.d.ts +57 -0
- package/dist/types/web/scrapers/artifacthub.d.ts +6 -0
- package/dist/types/web/scrapers/arxiv.d.ts +5 -0
- package/dist/types/web/scrapers/aur.d.ts +5 -0
- package/dist/types/web/scrapers/biorxiv.d.ts +5 -0
- package/dist/types/web/scrapers/bluesky.d.ts +5 -0
- package/dist/types/web/scrapers/brew.d.ts +5 -0
- package/dist/types/web/scrapers/cheatsh.d.ts +8 -0
- package/dist/types/web/scrapers/chocolatey.d.ts +5 -0
- package/dist/types/web/scrapers/choosealicense.d.ts +2 -0
- package/dist/types/web/scrapers/cisa-kev.d.ts +5 -0
- package/dist/types/web/scrapers/clojars.d.ts +5 -0
- package/dist/types/web/scrapers/coingecko.d.ts +5 -0
- package/dist/types/web/scrapers/crates-io.d.ts +5 -0
- package/dist/types/web/scrapers/crossref.d.ts +2 -0
- package/dist/types/web/scrapers/devto.d.ts +5 -0
- package/dist/types/web/scrapers/discogs.d.ts +8 -0
- package/dist/types/web/scrapers/discourse.d.ts +5 -0
- package/dist/types/web/scrapers/dockerhub.d.ts +5 -0
- package/dist/types/web/scrapers/docs-rs.d.ts +2 -0
- package/dist/types/web/scrapers/fdroid.d.ts +5 -0
- package/dist/types/web/scrapers/firefox-addons.d.ts +2 -0
- package/dist/types/web/scrapers/flathub.d.ts +2 -0
- package/dist/types/web/scrapers/github-gist.d.ts +5 -0
- package/dist/types/web/scrapers/github.d.ts +12 -0
- package/dist/types/web/scrapers/gitlab.d.ts +5 -0
- package/dist/types/web/scrapers/go-pkg.d.ts +5 -0
- package/dist/types/web/scrapers/hackage.d.ts +5 -0
- package/dist/types/web/scrapers/hackernews.d.ts +2 -0
- package/dist/types/web/scrapers/hex.d.ts +5 -0
- package/dist/types/web/scrapers/huggingface.d.ts +2 -0
- package/dist/types/web/scrapers/iacr.d.ts +5 -0
- package/dist/types/web/scrapers/index.d.ts +84 -0
- package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +2 -0
- package/dist/types/web/scrapers/lemmy.d.ts +2 -0
- package/dist/types/web/scrapers/lobsters.d.ts +5 -0
- package/dist/types/web/scrapers/mastodon.d.ts +5 -0
- package/dist/types/web/scrapers/maven.d.ts +6 -0
- package/dist/types/web/scrapers/mdn.d.ts +2 -0
- package/dist/types/web/scrapers/metacpan.d.ts +5 -0
- package/dist/types/web/scrapers/musicbrainz.d.ts +5 -0
- package/dist/types/web/scrapers/npm.d.ts +5 -0
- package/dist/types/web/scrapers/nuget.d.ts +5 -0
- package/dist/types/web/scrapers/nvd.d.ts +5 -0
- package/dist/types/web/scrapers/ollama.d.ts +2 -0
- package/dist/types/web/scrapers/open-vsx.d.ts +5 -0
- package/dist/types/web/scrapers/opencorporates.d.ts +5 -0
- package/dist/types/web/scrapers/openlibrary.d.ts +5 -0
- package/dist/types/web/scrapers/orcid.d.ts +5 -0
- package/dist/types/web/scrapers/osv.d.ts +5 -0
- package/dist/types/web/scrapers/packagist.d.ts +5 -0
- package/dist/types/web/scrapers/pub-dev.d.ts +5 -0
- package/dist/types/web/scrapers/pubmed.d.ts +5 -0
- package/dist/types/web/scrapers/pypi.d.ts +5 -0
- package/dist/types/web/scrapers/rawg.d.ts +2 -0
- package/dist/types/web/scrapers/readthedocs.d.ts +2 -0
- package/dist/types/web/scrapers/reddit.d.ts +5 -0
- package/dist/types/web/scrapers/repology.d.ts +5 -0
- package/dist/types/web/scrapers/rfc.d.ts +5 -0
- package/dist/types/web/scrapers/rubygems.d.ts +5 -0
- package/dist/types/web/scrapers/searchcode.d.ts +2 -0
- package/dist/types/web/scrapers/sec-edgar.d.ts +5 -0
- package/dist/types/web/scrapers/semantic-scholar.d.ts +2 -0
- package/dist/types/web/scrapers/snapcraft.d.ts +2 -0
- package/dist/types/web/scrapers/sourcegraph.d.ts +2 -0
- package/dist/types/web/scrapers/spdx.d.ts +5 -0
- package/dist/types/web/scrapers/spotify.d.ts +8 -0
- package/dist/types/web/scrapers/stackoverflow.d.ts +6 -0
- package/dist/types/web/scrapers/terraform.d.ts +5 -0
- package/dist/types/web/scrapers/tldr.d.ts +7 -0
- package/dist/types/web/scrapers/twitter.d.ts +5 -0
- package/dist/types/web/scrapers/types.d.ts +77 -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 +76 -0
- package/dist/types/web/search/provider.d.ts +20 -0
- package/dist/types/web/search/providers/anthropic.d.ts +27 -0
- package/dist/types/web/search/providers/base.d.ts +35 -0
- package/dist/types/web/search/providers/brave.d.ts +20 -0
- package/dist/types/web/search/providers/codex.d.ts +31 -0
- package/dist/types/web/search/providers/exa.d.ts +43 -0
- package/dist/types/web/search/providers/gemini.d.ts +60 -0
- package/dist/types/web/search/providers/jina.d.ts +25 -0
- package/dist/types/web/search/providers/kagi.d.ts +21 -0
- package/dist/types/web/search/providers/kimi.d.ts +18 -0
- package/dist/types/web/search/providers/parallel.d.ts +14 -0
- package/dist/types/web/search/providers/perplexity.d.ts +35 -0
- package/dist/types/web/search/providers/searxng.d.ts +43 -0
- package/dist/types/web/search/providers/synthetic.d.ts +24 -0
- package/dist/types/web/search/providers/tavily.d.ts +22 -0
- package/dist/types/web/search/providers/utils.d.ts +24 -0
- package/dist/types/web/search/providers/zai.d.ts +19 -0
- package/dist/types/web/search/render.d.ts +35 -0
- package/dist/types/web/search/types.d.ts +344 -0
- package/dist/types/web/search/utils.d.ts +4 -0
- package/dist/types/workspace-tree.d.ts +42 -0
- package/package.json +124 -123
- package/src/config/mcp-schema.json +1 -1
- package/src/edit/normalize.ts +1 -1
- package/src/extensibility/typebox.ts +1 -1
- package/src/hashline/index.ts +0 -1
- package/src/hashline/input.ts +8 -11
- package/src/hashline/parser.ts +6 -8
- package/src/modes/acp/acp-agent.ts +1 -0
- package/src/modes/controllers/command-controller.ts +1 -0
- package/src/modes/controllers/ssh-command-controller.ts +2 -0
- package/src/modes/theme/theme-schema.json +1 -1
- package/src/prompts/tools/hashline.md +1 -0
- package/src/prompts/tools/read.md +1 -1
- package/src/sdk.ts +14 -0
- package/src/session/agent-session.ts +49 -0
- package/src/slash-commands/builtin-registry.ts +2 -0
- package/src/slash-commands/helpers/ssh.ts +2 -0
- package/src/ssh/connection-manager.ts +28 -7
- package/src/tools/bash-interactive.ts +1 -1
- package/src/tools/bash-pty-selection.ts +14 -0
- package/src/tools/bash.ts +5 -4
- package/src/tools/image-gen.ts +1 -1
- package/src/tools/path-utils.ts +2 -2
- package/src/tools/read.ts +7 -4
- package/src/tools/search.ts +7 -0
- package/src/tools/yield.ts +17 -5
- package/src/tui/code-cell.ts +18 -3
- package/src/web/scrapers/searchcode.ts +1 -2
- package/src/hashline/utils.ts +0 -3
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* the agent pipeline:
|
|
13
13
|
*
|
|
14
14
|
* - `isZodSchema()` keys off the Zod `_zod` marker that every schema carries.
|
|
15
|
-
* - `zodToWireSchema()` emits the same draft-
|
|
15
|
+
* - `zodToWireSchema()` emits the same draft 2020-12 JSON Schema providers expect
|
|
16
16
|
* from TypeBox-authored tools (defaulted fields treated as optional, etc.).
|
|
17
17
|
*
|
|
18
18
|
* The surface intentionally covers only the common TypeBox builders. Plugins
|
package/src/hashline/index.ts
CHANGED
package/src/hashline/input.ts
CHANGED
|
@@ -2,7 +2,6 @@ import * as path from "node:path";
|
|
|
2
2
|
import { ABORT_MARKER, BEGIN_PATCH_MARKER, END_PATCH_MARKER, FILE_HEADER_PREFIX } from "./constants";
|
|
3
3
|
import { HL_EDIT_SEP } from "./hash";
|
|
4
4
|
import type { SplitHashlineOptions } from "./types";
|
|
5
|
-
import { stripTrailingCarriageReturn } from "./utils";
|
|
6
5
|
|
|
7
6
|
export interface HashlineInputSection {
|
|
8
7
|
path: string;
|
|
@@ -64,8 +63,7 @@ function stripLeadingBlankLines(input: string): string {
|
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
export function containsRecognizableHashlineOperations(input: string): boolean {
|
|
67
|
-
for (const
|
|
68
|
-
const line = stripTrailingCarriageReturn(rawLine);
|
|
66
|
+
for (const line of input.split(/\r?\n/)) {
|
|
69
67
|
if (/^[+<=-]\s+/.test(line) || line.startsWith(HL_EDIT_SEP)) return true;
|
|
70
68
|
}
|
|
71
69
|
return false;
|
|
@@ -74,8 +72,8 @@ export function containsRecognizableHashlineOperations(input: string): boolean {
|
|
|
74
72
|
function normalizeFallbackInput(input: string, options: SplitHashlineOptions): string {
|
|
75
73
|
const stripped = input.startsWith("\uFEFF") ? input.slice(1) : input;
|
|
76
74
|
const hasExplicitHeader = stripped
|
|
77
|
-
.split(
|
|
78
|
-
.some(rawLine => parseHashlineHeaderLine(
|
|
75
|
+
.split(/\r?\n/)
|
|
76
|
+
.some(rawLine => parseHashlineHeaderLine(rawLine, options.cwd) !== null);
|
|
79
77
|
if (hasExplicitHeader) return input;
|
|
80
78
|
|
|
81
79
|
if (!options.path || !containsRecognizableHashlineOperations(input)) return input;
|
|
@@ -91,8 +89,8 @@ export function splitHashlineInput(input: string, options: SplitHashlineOptions
|
|
|
91
89
|
|
|
92
90
|
export function splitHashlineInputs(input: string, options: SplitHashlineOptions = {}): HashlineInputSection[] {
|
|
93
91
|
const stripped = stripLeadingBlankLines(normalizeFallbackInput(input, options));
|
|
94
|
-
const lines = stripped.split(
|
|
95
|
-
const firstLine =
|
|
92
|
+
const lines = stripped.split(/\r?\n/);
|
|
93
|
+
const firstLine = lines[0] ?? "";
|
|
96
94
|
|
|
97
95
|
if (parseHashlineHeaderLine(firstLine, options.cwd) === null) {
|
|
98
96
|
const preview = JSON.stringify(firstLine.slice(0, 120));
|
|
@@ -108,13 +106,12 @@ export function splitHashlineInputs(input: string, options: SplitHashlineOptions
|
|
|
108
106
|
|
|
109
107
|
const flush = () => {
|
|
110
108
|
if (currentPath.length === 0) return;
|
|
111
|
-
const hasOps = currentLines.some(
|
|
109
|
+
const hasOps = currentLines.some(line => line.trim().length > 0);
|
|
112
110
|
if (hasOps) sections.push({ path: currentPath, diff: currentLines.join("\n") });
|
|
113
111
|
currentLines = [];
|
|
114
112
|
};
|
|
115
113
|
|
|
116
|
-
for (const
|
|
117
|
-
const line = stripTrailingCarriageReturn(rawLine);
|
|
114
|
+
for (const line of lines) {
|
|
118
115
|
if (line.trimEnd() === END_PATCH_MARKER || line.trimEnd() === ABORT_MARKER) break;
|
|
119
116
|
if (isPatchEnvelopeMarker(line)) continue;
|
|
120
117
|
const header = parseHashlineHeaderLine(line, options.cwd);
|
|
@@ -123,7 +120,7 @@ export function splitHashlineInputs(input: string, options: SplitHashlineOptions
|
|
|
123
120
|
currentPath = header.path;
|
|
124
121
|
currentLines = [];
|
|
125
122
|
} else {
|
|
126
|
-
currentLines.push(
|
|
123
|
+
currentLines.push(line);
|
|
127
124
|
}
|
|
128
125
|
}
|
|
129
126
|
flush();
|
package/src/hashline/parser.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ABORT_MARKER, ABORT_WARNING, BEGIN_PATCH_MARKER, END_PATCH_MARKER, RANGE_INTERIOR_HASH } from "./constants";
|
|
2
2
|
import { describeAnchorExamples, HL_EDIT_SEP, HL_HASH_CAPTURE_RE_RAW } from "./hash";
|
|
3
3
|
import type { Anchor, HashlineCursor, HashlineEdit } from "./types";
|
|
4
|
-
import { stripTrailingCarriageReturn } from "./utils";
|
|
5
4
|
|
|
6
5
|
const LID_CAPTURE_RE = new RegExp(`^${HL_HASH_CAPTURE_RE_RAW}$`);
|
|
7
6
|
|
|
@@ -85,9 +84,9 @@ function collectPayload(
|
|
|
85
84
|
const payload: string[] = [];
|
|
86
85
|
let index = startIndex;
|
|
87
86
|
while (index < lines.length) {
|
|
88
|
-
const line =
|
|
87
|
+
const line = lines[index];
|
|
89
88
|
if (line.startsWith(HL_EDIT_SEP)) {
|
|
90
|
-
payload.push(line.slice(1));
|
|
89
|
+
payload.push(line.slice(1).trimEnd());
|
|
91
90
|
index++;
|
|
92
91
|
continue;
|
|
93
92
|
}
|
|
@@ -100,11 +99,10 @@ function collectPayload(
|
|
|
100
99
|
// when inserting a blank line.
|
|
101
100
|
if (line.length === 0) {
|
|
102
101
|
let lookahead = index + 1;
|
|
103
|
-
while (lookahead < lines.length &&
|
|
102
|
+
while (lookahead < lines.length && lines[lookahead].length === 0) {
|
|
104
103
|
lookahead++;
|
|
105
104
|
}
|
|
106
|
-
const followedByPayload =
|
|
107
|
-
lookahead < lines.length && stripTrailingCarriageReturn(lines[lookahead]).startsWith(HL_EDIT_SEP);
|
|
105
|
+
const followedByPayload = lookahead < lines.length && lines[lookahead].startsWith(HL_EDIT_SEP);
|
|
108
106
|
const acceptBareBlank = requirePayload && payload.length === 0;
|
|
109
107
|
if (followedByPayload || acceptBareBlank) {
|
|
110
108
|
for (let j = index; j < lookahead; j++) payload.push("");
|
|
@@ -127,7 +125,7 @@ export function parseHashline(diff: string): HashlineEdit[] {
|
|
|
127
125
|
export function parseHashlineWithWarnings(diff: string): { edits: HashlineEdit[]; warnings: string[] } {
|
|
128
126
|
const edits: HashlineEdit[] = [];
|
|
129
127
|
const warnings: string[] = [];
|
|
130
|
-
const lines = diff.split(
|
|
128
|
+
const lines = diff.split(/\r?\n/);
|
|
131
129
|
let editIndex = 0;
|
|
132
130
|
|
|
133
131
|
const pushInsert = (cursor: HashlineCursor, text: string, lineNum: number) => {
|
|
@@ -136,7 +134,7 @@ export function parseHashlineWithWarnings(diff: string): { edits: HashlineEdit[]
|
|
|
136
134
|
|
|
137
135
|
for (let i = 0; i < lines.length; ) {
|
|
138
136
|
const lineNum = i + 1;
|
|
139
|
-
const line =
|
|
137
|
+
const line = lines[i];
|
|
140
138
|
|
|
141
139
|
if (line.trim().length === 0) {
|
|
142
140
|
i++;
|
|
@@ -1416,6 +1416,7 @@ export class AcpAgent implements Agent {
|
|
|
1416
1416
|
resetCapabilities();
|
|
1417
1417
|
const fileCommands = await loadSlashCommands({ cwd });
|
|
1418
1418
|
record.session.setSlashCommands(fileCommands);
|
|
1419
|
+
await record.session.refreshSshTool({ activateIfAvailable: true });
|
|
1419
1420
|
await this.#emitAvailableCommandsUpdate(record);
|
|
1420
1421
|
}
|
|
1421
1422
|
|
|
@@ -968,6 +968,7 @@ export class CommandController {
|
|
|
968
968
|
clearClaudePluginRootsCache(); // re-warms preloadedPluginRoots with new project dir (async)
|
|
969
969
|
resetCapabilities();
|
|
970
970
|
await this.ctx.refreshSlashCommandState(resolvedPath);
|
|
971
|
+
await this.ctx.session.refreshSshTool({ activateIfAvailable: true });
|
|
971
972
|
|
|
972
973
|
this.ctx.statusLine.invalidate();
|
|
973
974
|
this.ctx.updateEditorTopBorder();
|
|
@@ -204,6 +204,7 @@ export class SSHCommandController {
|
|
|
204
204
|
if (compat) hostConfig.compat = true;
|
|
205
205
|
|
|
206
206
|
await addSSHHost(filePath, name, hostConfig);
|
|
207
|
+
await this.ctx.session.refreshSshTool({ activateIfAvailable: true });
|
|
207
208
|
|
|
208
209
|
const scopeLabel = scope === "user" ? "user" : "project";
|
|
209
210
|
const lines = [
|
|
@@ -364,6 +365,7 @@ export class SSHCommandController {
|
|
|
364
365
|
}
|
|
365
366
|
|
|
366
367
|
await removeSSHHost(filePath, name);
|
|
368
|
+
await this.ctx.session.refreshSshTool();
|
|
367
369
|
|
|
368
370
|
this.#showMessage(
|
|
369
371
|
["", theme.fg("success", `✓ Removed SSH host "${name}" from ${scope} config`), ""].join("\n"),
|
|
@@ -143,4 +143,5 @@ When braces bound your edit, you SHOULD prefer these shapes:
|
|
|
143
143
|
- `= A..B` deletes the range; payload is what's written. Edge line matches just outside? Widen, or it duplicates.
|
|
144
144
|
- Multiple ops are cheap. SHOULD prefer two narrow ops over one wide `=`.
|
|
145
145
|
- Before `= A..B`, mentally delete A..B. Splits an unclosed bracket/brace/string from above, or orphans a closer inside? You're bisecting a construct.
|
|
146
|
+
- NEVER use this tool to reformat code (indentation, whitespace, line wrapping, style). Run the project's formatter instead.
|
|
146
147
|
</critical>
|
|
@@ -15,7 +15,7 @@ Read files, directories, archives, SQLite databases, images, documents, internal
|
|
|
15
15
|
Append `:<sel>` to `path`. The bare path falls back to the default mode.
|
|
16
16
|
|
|
17
17
|
- _(none)_ — parseable code → structural summary (signatures kept, bodies elided); other files → read from the start (up to {{DEFAULT_LIMIT}} lines).
|
|
18
|
-
- `:50` — read from line 50 onward.
|
|
18
|
+
- `:50` / `:50-` — read from line 50 onward.
|
|
19
19
|
- `:50-200` — lines 50–200 inclusive.
|
|
20
20
|
- `:50+150` — 150 lines starting at line 50.
|
|
21
21
|
- `:20+1` — exactly one line.
|
package/src/sdk.ts
CHANGED
|
@@ -1428,6 +1428,17 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1428
1428
|
}
|
|
1429
1429
|
}
|
|
1430
1430
|
|
|
1431
|
+
const reloadSshTool = async (): Promise<AgentTool | null> => {
|
|
1432
|
+
if (!requestedToolNameSet.has("ssh")) return null;
|
|
1433
|
+
const sshTool = (await loadSshTool({
|
|
1434
|
+
...toolSession,
|
|
1435
|
+
cwd: sessionManager.getCwd(),
|
|
1436
|
+
})) as unknown as AgentTool | null;
|
|
1437
|
+
if (!sshTool) return null;
|
|
1438
|
+
const wrapped = wrapToolWithMetaNotice(sshTool);
|
|
1439
|
+
return (extensionRunner ? new ExtensionToolWrapper(wrapped, extensionRunner) : wrapped) as AgentTool;
|
|
1440
|
+
};
|
|
1441
|
+
|
|
1431
1442
|
let cursorEventEmitter: ((event: AgentEvent) => void) | undefined;
|
|
1432
1443
|
const cursorExecHandlers = new CursorExecHandlers({
|
|
1433
1444
|
cwd,
|
|
@@ -1532,6 +1543,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1532
1543
|
(options.toolNames ? [...new Set(options.toolNames.map(name => name.toLowerCase()))] : undefined) ??
|
|
1533
1544
|
toolNamesFromRegistry;
|
|
1534
1545
|
const normalizedRequested = requestedToolNames.filter(name => toolRegistry.has(name));
|
|
1546
|
+
const requestedToolNameSet = new Set(normalizedRequested);
|
|
1535
1547
|
// Effective discovery mode: tools.discoveryMode takes precedence; mcp.discoveryMode is back-compat alias.
|
|
1536
1548
|
const toolsDiscoveryModeSetting = settings.get("tools.discoveryMode");
|
|
1537
1549
|
const effectiveDiscoveryMode: "off" | "mcp-only" | "all" =
|
|
@@ -1810,6 +1822,8 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1810
1822
|
onResponse,
|
|
1811
1823
|
convertToLlm: convertToLlmFinal,
|
|
1812
1824
|
rebuildSystemPrompt,
|
|
1825
|
+
reloadSshTool,
|
|
1826
|
+
requestedToolNames: requestedToolNameSet,
|
|
1813
1827
|
getMcpServerInstructions: mcpManager
|
|
1814
1828
|
? () => {
|
|
1815
1829
|
const raw = mcpManager.getServerInstructions();
|
|
@@ -79,6 +79,7 @@ import {
|
|
|
79
79
|
Snowflake,
|
|
80
80
|
} from "@oh-my-pi/pi-utils";
|
|
81
81
|
import { type AsyncJob, AsyncJobManager } from "../async";
|
|
82
|
+
import { reset as resetCapabilities } from "../capability";
|
|
82
83
|
import type { Rule } from "../capability/rule";
|
|
83
84
|
import { MODEL_ROLE_IDS, type ModelRegistry } from "../config/model-registry";
|
|
84
85
|
import {
|
|
@@ -92,6 +93,7 @@ import {
|
|
|
92
93
|
import { expandPromptTemplate, type PromptTemplate } from "../config/prompt-templates";
|
|
93
94
|
import type { Settings, SkillsSettings } from "../config/settings";
|
|
94
95
|
import { RawSseDebugBuffer } from "../debug/raw-sse-buffer";
|
|
96
|
+
import { loadCapability } from "../discovery";
|
|
95
97
|
import { normalizeDiff, normalizeToLF, ParseError, previewPatch, stripBom } from "../edit";
|
|
96
98
|
import {
|
|
97
99
|
disposeKernelSessionsByOwner,
|
|
@@ -153,6 +155,7 @@ import planModeToolDecisionReminderPrompt from "../prompts/system/plan-mode-tool
|
|
|
153
155
|
import ttsrInterruptTemplate from "../prompts/system/ttsr-interrupt.md" with { type: "text" };
|
|
154
156
|
import { type AgentRegistry, MAIN_AGENT_ID } from "../registry/agent-registry";
|
|
155
157
|
import { deobfuscateSessionContext, type SecretObfuscator } from "../secrets/obfuscator";
|
|
158
|
+
import { invalidateHostMetadata } from "../ssh/connection-manager";
|
|
156
159
|
import { resolveThinkingLevelForModel, toReasoningEffort } from "../thinking";
|
|
157
160
|
import {
|
|
158
161
|
buildDiscoverableToolSearchIndex,
|
|
@@ -274,6 +277,9 @@ export interface AgentSessionConfig {
|
|
|
274
277
|
convertToLlm?: (messages: AgentMessage[]) => Message[] | Promise<Message[]>;
|
|
275
278
|
/** System prompt builder that can consider tool availability. Returns ordered provider-facing blocks. */
|
|
276
279
|
rebuildSystemPrompt?: (toolNames: string[], tools: Map<string, AgentTool>) => Promise<{ systemPrompt: string[] }>;
|
|
280
|
+
/** Rebuild the SSH tool from current capability discovery results. */
|
|
281
|
+
reloadSshTool?: () => Promise<AgentTool | null>;
|
|
282
|
+
requestedToolNames?: ReadonlySet<string>;
|
|
277
283
|
/**
|
|
278
284
|
* Optional accessor for live MCP server instructions. Read by the session's
|
|
279
285
|
* `rebuildSystemPrompt`-skip optimization to detect server-side instruction
|
|
@@ -736,6 +742,8 @@ export class AgentSession {
|
|
|
736
742
|
| ((toolNames: string[], tools: Map<string, AgentTool>) => Promise<{ systemPrompt: string[] }>)
|
|
737
743
|
| undefined;
|
|
738
744
|
#getMcpServerInstructions: (() => Map<string, string> | undefined) | undefined;
|
|
745
|
+
#reloadSshTool: (() => Promise<AgentTool | null>) | undefined;
|
|
746
|
+
#requestedToolNames: ReadonlySet<string> | undefined;
|
|
739
747
|
#baseSystemPrompt: string[];
|
|
740
748
|
/**
|
|
741
749
|
* Signature of the (toolNames, tool descriptions) tuple passed to the most
|
|
@@ -868,6 +876,7 @@ export class AgentSession {
|
|
|
868
876
|
this.#modelRegistry = config.modelRegistry;
|
|
869
877
|
this.#validateRetryFallbackChains();
|
|
870
878
|
this.#toolRegistry = config.toolRegistry ?? new Map();
|
|
879
|
+
this.#requestedToolNames = config.requestedToolNames;
|
|
871
880
|
this.#transformContext = config.transformContext ?? (messages => messages);
|
|
872
881
|
this.#onPayload = config.onPayload;
|
|
873
882
|
this.rawSseDebugBuffer = config.rawSseDebugBuffer ?? new RawSseDebugBuffer();
|
|
@@ -886,6 +895,7 @@ export class AgentSession {
|
|
|
886
895
|
this.#convertToLlm = config.convertToLlm ?? convertToLlm;
|
|
887
896
|
this.#rebuildSystemPrompt = config.rebuildSystemPrompt;
|
|
888
897
|
this.#getMcpServerInstructions = config.getMcpServerInstructions;
|
|
898
|
+
this.#reloadSshTool = config.reloadSshTool;
|
|
889
899
|
this.#baseSystemPrompt = this.agent.state.systemPrompt;
|
|
890
900
|
this.#mcpDiscoveryEnabled = config.mcpDiscoveryEnabled ?? false;
|
|
891
901
|
this.#setDiscoverableMCPTools(this.#collectDiscoverableMCPToolsFromRegistry());
|
|
@@ -3000,6 +3010,45 @@ export class AgentSession {
|
|
|
3000
3010
|
}
|
|
3001
3011
|
}
|
|
3002
3012
|
|
|
3013
|
+
/**
|
|
3014
|
+
* Reload the SSH tool from disk-backed capability discovery and make the
|
|
3015
|
+
* refreshed definition visible to the next model call without restarting.
|
|
3016
|
+
*/
|
|
3017
|
+
async refreshSshTool(options?: { activateIfAvailable?: boolean }): Promise<void> {
|
|
3018
|
+
resetCapabilities();
|
|
3019
|
+
if (!this.#reloadSshTool) return;
|
|
3020
|
+
const previousSshTool = this.#toolRegistry.get("ssh");
|
|
3021
|
+
const previousActiveToolNames = this.getActiveToolNames();
|
|
3022
|
+
const hadSshTool = previousSshTool !== undefined;
|
|
3023
|
+
const wasActive = previousActiveToolNames.includes("ssh");
|
|
3024
|
+
const previousHostNames =
|
|
3025
|
+
previousSshTool && "hostNames" in previousSshTool && Array.isArray(previousSshTool.hostNames)
|
|
3026
|
+
? [...previousSshTool.hostNames]
|
|
3027
|
+
: [];
|
|
3028
|
+
const candidateHostNames = new Set(previousHostNames);
|
|
3029
|
+
const capability = await loadCapability<{ name: string }>("ssh", { cwd: this.sessionManager.getCwd() });
|
|
3030
|
+
for (const host of capability.items) {
|
|
3031
|
+
if (typeof host?.name === "string") {
|
|
3032
|
+
candidateHostNames.add(host.name);
|
|
3033
|
+
}
|
|
3034
|
+
}
|
|
3035
|
+
await invalidateHostMetadata(candidateHostNames);
|
|
3036
|
+
const sshAllowed = this.#requestedToolNames === undefined || this.#requestedToolNames.has("ssh");
|
|
3037
|
+
const refreshedTool = await this.#reloadSshTool();
|
|
3038
|
+
if (refreshedTool) {
|
|
3039
|
+
this.#toolRegistry.set(refreshedTool.name, refreshedTool);
|
|
3040
|
+
} else {
|
|
3041
|
+
this.#toolRegistry.delete("ssh");
|
|
3042
|
+
this.#selectedDiscoveredToolNames.delete("ssh");
|
|
3043
|
+
}
|
|
3044
|
+
|
|
3045
|
+
const nextActive = previousActiveToolNames.filter(name => name !== "ssh" && this.#toolRegistry.has(name));
|
|
3046
|
+
if (refreshedTool && sshAllowed && (wasActive || (options?.activateIfAvailable && !hadSshTool))) {
|
|
3047
|
+
nextActive.push(refreshedTool.name);
|
|
3048
|
+
}
|
|
3049
|
+
await this.#applyActiveToolsByName(nextActive);
|
|
3050
|
+
}
|
|
3051
|
+
|
|
3003
3052
|
/**
|
|
3004
3053
|
* Set active tools by name.
|
|
3005
3054
|
* Only tools in the registry can be enabled. Unknown tool names are ignored.
|
|
@@ -1506,6 +1506,7 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
|
|
|
1506
1506
|
const projectPath = await resolveActiveProjectRegistryPath(runtime.ctx.sessionManager.getCwd());
|
|
1507
1507
|
clearPluginRootsAndCaches(projectPath ? [projectPath] : undefined);
|
|
1508
1508
|
await runtime.ctx.refreshSlashCommandState();
|
|
1509
|
+
await runtime.ctx.session.refreshSshTool({ activateIfAvailable: true });
|
|
1509
1510
|
runtime.ctx.showStatus("Plugins reloaded.");
|
|
1510
1511
|
runtime.ctx.editor.setText("");
|
|
1511
1512
|
},
|
|
@@ -1632,6 +1633,7 @@ export async function executeBuiltinSlashCommand(
|
|
|
1632
1633
|
const projectPath = await resolveActiveProjectRegistryPath(ctx.sessionManager.getCwd());
|
|
1633
1634
|
clearPluginRootsAndCaches(projectPath ? [projectPath] : undefined);
|
|
1634
1635
|
await ctx.refreshSlashCommandState();
|
|
1636
|
+
await ctx.session.refreshSshTool({ activateIfAvailable: true });
|
|
1635
1637
|
},
|
|
1636
1638
|
};
|
|
1637
1639
|
const result = await command.handle(parsed, adapted);
|
|
@@ -142,6 +142,7 @@ async function handleRemoveCommand(rest: string, runtime: SlashCommandRuntime):
|
|
|
142
142
|
try {
|
|
143
143
|
const filePath = getSSHConfigPath(parsed.scope, runtime.cwd);
|
|
144
144
|
await removeSSHHost(filePath, parsed.name);
|
|
145
|
+
await runtime.session.refreshSshTool();
|
|
145
146
|
await runtime.output(`Removed SSH host "${parsed.name}" from ${parsed.scope} config.`);
|
|
146
147
|
return commandConsumed();
|
|
147
148
|
} catch (err) {
|
|
@@ -162,6 +163,7 @@ async function handleAddCommand(rest: string, runtime: SlashCommandRuntime): Pro
|
|
|
162
163
|
try {
|
|
163
164
|
const filePath = getSSHConfigPath(parsed.scope, runtime.cwd);
|
|
164
165
|
await addSSHHost(filePath, parsed.name, hostConfig);
|
|
166
|
+
await runtime.session.refreshSshTool({ activateIfAvailable: true });
|
|
165
167
|
await runtime.output(`Added SSH host "${parsed.name}" (${parsed.scope}).`);
|
|
166
168
|
return commandConsumed();
|
|
167
169
|
} catch (err) {
|
|
@@ -55,6 +55,16 @@ function getHostInfoPath(name: string): string {
|
|
|
55
55
|
return path.join(HOST_INFO_DIR, `${sanitizeHostName(name)}.json`);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
async function deleteHostInfoFromDisk(hostName: string): Promise<void> {
|
|
59
|
+
const path = getHostInfoPath(hostName);
|
|
60
|
+
try {
|
|
61
|
+
await fs.promises.unlink(path);
|
|
62
|
+
} catch (err) {
|
|
63
|
+
if (isEnoent(err)) return;
|
|
64
|
+
logger.warn("Failed to delete SSH host info", { host: hostName, error: String(err) });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
58
68
|
async function validateKeyPermissions(keyPath?: string): Promise<void> {
|
|
59
69
|
if (!keyPath) return;
|
|
60
70
|
let stats: fs.Stats;
|
|
@@ -429,6 +439,23 @@ export async function ensureConnection(host: SSHConnectionTarget): Promise<void>
|
|
|
429
439
|
}
|
|
430
440
|
}
|
|
431
441
|
|
|
442
|
+
export async function invalidateHostMetadata(hostNames: Iterable<string>): Promise<void> {
|
|
443
|
+
const names = [...hostNames];
|
|
444
|
+
for (const hostName of names) {
|
|
445
|
+
hostInfoCache.delete(hostName);
|
|
446
|
+
await deleteHostInfoFromDisk(hostName);
|
|
447
|
+
}
|
|
448
|
+
for (const hostName of names) {
|
|
449
|
+
const activeHost = activeHosts.get(hostName);
|
|
450
|
+
if (activeHost) {
|
|
451
|
+
await closeConnectionInternal(activeHost);
|
|
452
|
+
activeHosts.delete(hostName);
|
|
453
|
+
continue;
|
|
454
|
+
}
|
|
455
|
+
await closeConnectionInternal({ name: hostName, host: hostName });
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
|
|
432
459
|
async function closeConnectionInternal(host: SSHConnectionTarget): Promise<void> {
|
|
433
460
|
if (!supportsSshControlMaster()) return;
|
|
434
461
|
const target = buildSshTarget(host.username, host.host);
|
|
@@ -436,13 +463,7 @@ async function closeConnectionInternal(host: SSHConnectionTarget): Promise<void>
|
|
|
436
463
|
}
|
|
437
464
|
|
|
438
465
|
export async function closeConnection(hostName: string): Promise<void> {
|
|
439
|
-
|
|
440
|
-
if (!host) {
|
|
441
|
-
await closeConnectionInternal({ name: hostName, host: hostName });
|
|
442
|
-
return;
|
|
443
|
-
}
|
|
444
|
-
await closeConnectionInternal(host);
|
|
445
|
-
activeHosts.delete(hostName);
|
|
466
|
+
await invalidateHostMetadata([hostName]);
|
|
446
467
|
}
|
|
447
468
|
|
|
448
469
|
export async function closeAllConnections(): Promise<void> {
|
|
@@ -27,7 +27,7 @@ export interface BashInteractiveResult extends OutputSummary {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
function normalizeCaptureChunk(chunk: string): string {
|
|
30
|
-
const normalized = chunk.replace(/\r\n
|
|
30
|
+
const normalized = chunk.replace(/\r\n?/gu, "\n");
|
|
31
31
|
return sanitizeWithOptionalSixelPassthrough(normalized, sanitizeText);
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { $env } from "@oh-my-pi/pi-utils/env";
|
|
2
|
+
|
|
3
|
+
/** Minimal UI-capability fields needed to decide whether bash can use the local PTY overlay. */
|
|
4
|
+
export interface BashPtyContext {
|
|
5
|
+
hasUI?: boolean;
|
|
6
|
+
ui?: unknown;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** Return whether a bash tool call should use the local interactive PTY overlay. */
|
|
10
|
+
export function canUseInteractiveBashPty(pty: boolean, ctx: BashPtyContext | undefined): boolean {
|
|
11
|
+
if (!pty) return false;
|
|
12
|
+
if (process.platform === "win32") return false;
|
|
13
|
+
return $env.PI_NO_PTY !== "1" && ctx?.hasUI === true && ctx.ui !== undefined;
|
|
14
|
+
}
|
package/src/tools/bash.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as fs from "node:fs";
|
|
|
2
2
|
import type { AgentTool, AgentToolContext, AgentToolResult, AgentToolUpdateCallback } from "@oh-my-pi/pi-agent-core";
|
|
3
3
|
import type { Component } from "@oh-my-pi/pi-tui";
|
|
4
4
|
import { ImageProtocol, TERMINAL, Text } from "@oh-my-pi/pi-tui";
|
|
5
|
-
import {
|
|
5
|
+
import { getProjectDir, isEnoent, logger, prompt } from "@oh-my-pi/pi-utils";
|
|
6
6
|
import * as z from "zod/v4";
|
|
7
7
|
import { AsyncJobManager } from "../async";
|
|
8
8
|
import { type BashResult, executeBash } from "../exec/bash-executor";
|
|
@@ -20,6 +20,7 @@ import type { ToolSession } from ".";
|
|
|
20
20
|
import { applyBashFixups, formatBashFixupNotice } from "./bash-command-fixup";
|
|
21
21
|
import { type BashInteractiveResult, runInteractiveBashPty } from "./bash-interactive";
|
|
22
22
|
import { checkBashInterception } from "./bash-interceptor";
|
|
23
|
+
import { canUseInteractiveBashPty } from "./bash-pty-selection";
|
|
23
24
|
import { expandInternalUrls, type InternalUrlExpansionOptions } from "./bash-skill-urls";
|
|
24
25
|
import { formatStyledTruncationWarning, type OutputMeta, stripOutputNotice } from "./output-meta";
|
|
25
26
|
import { resolveToCwd } from "./path-utils";
|
|
@@ -807,9 +808,9 @@ export class BashTool implements AgentTool<BashToolSchema, BashToolDetails> {
|
|
|
807
808
|
// Allocate artifact for truncated output storage
|
|
808
809
|
const { path: artifactPath, id: artifactId } = (await this.session.allocateOutputArtifact?.("bash")) ?? {};
|
|
809
810
|
|
|
810
|
-
const
|
|
811
|
-
const result: BashResult | BashInteractiveResult =
|
|
812
|
-
? await runInteractiveBashPty(
|
|
811
|
+
const interactiveUi = canUseInteractiveBashPty(pty, ctx) ? ctx?.ui : undefined;
|
|
812
|
+
const result: BashResult | BashInteractiveResult = interactiveUi
|
|
813
|
+
? await runInteractiveBashPty(interactiveUi, {
|
|
813
814
|
command,
|
|
814
815
|
cwd: commandCwd,
|
|
815
816
|
timeoutMs,
|
package/src/tools/image-gen.ts
CHANGED
|
@@ -1075,7 +1075,7 @@ export const imageGenTool: CustomTool<typeof imageGenSchema, ImageGenToolDetails
|
|
|
1075
1075
|
headers: {
|
|
1076
1076
|
"Content-Type": "application/json",
|
|
1077
1077
|
Authorization: `Bearer ${apiKey.apiKey}`,
|
|
1078
|
-
"HTTP-Referer": "https://
|
|
1078
|
+
"HTTP-Referer": "https://omp.sh/",
|
|
1079
1079
|
"X-OpenRouter-Title": "Oh-My-Pi",
|
|
1080
1080
|
"X-OpenRouter-Categories": "cli-agent",
|
|
1081
1081
|
},
|
package/src/tools/path-utils.ts
CHANGED
|
@@ -7,8 +7,8 @@ import { InternalUrlRouter } from "../internal-urls";
|
|
|
7
7
|
import { ToolError } from "./tool-errors";
|
|
8
8
|
|
|
9
9
|
const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
10
|
-
const FILE_LINE_RANGE_RE = /^(?:L?\d+(?:[-+]L?\d
|
|
11
|
-
const FILE_LINE_RANGE_ONLY_RE = /^L?\d+(?:[-+]L?\d
|
|
10
|
+
const FILE_LINE_RANGE_RE = /^(?:L?\d+(?:[-+]L?\d+|-)?(?:,L?\d+(?:[-+]L?\d+|-)?)*|raw|conflicts)$/i;
|
|
11
|
+
const FILE_LINE_RANGE_ONLY_RE = /^L?\d+(?:[-+]L?\d+|-)?(?:,L?\d+(?:[-+]L?\d+|-)?)*$/i;
|
|
12
12
|
const FILE_RAW_ONLY_RE = /^raw$/i;
|
|
13
13
|
const NARROW_NO_BREAK_SPACE = "\u202F";
|
|
14
14
|
const TOP_LEVEL_INTERNAL_URL_PREFIXES = [
|
package/src/tools/read.ts
CHANGED
|
@@ -513,7 +513,7 @@ type ParsedSelector =
|
|
|
513
513
|
| { kind: "conflicts" }
|
|
514
514
|
| { kind: "lines"; ranges: [LineRange, ...LineRange[]]; raw?: boolean };
|
|
515
515
|
|
|
516
|
-
const LINE_RANGE_RE = /^L?(\d+)(?:([-+])L?(\d+))?$/i;
|
|
516
|
+
const LINE_RANGE_RE = /^L?(\d+)(?:([-+])L?(\d+)?)?$/i;
|
|
517
517
|
|
|
518
518
|
/** Returns true when the selector requested verbatim/raw output (alone or combined with a range). */
|
|
519
519
|
function isRawSelector(parsed: ParsedSelector): boolean {
|
|
@@ -541,10 +541,13 @@ function parseLineRangeChunk(sel: string): LineRange | null {
|
|
|
541
541
|
}
|
|
542
542
|
rawEnd = rawStart + rhs - 1;
|
|
543
543
|
} else if (sep === "-") {
|
|
544
|
-
|
|
545
|
-
|
|
544
|
+
// `301-` is shorthand for "from 301 onward" — equivalent to bare `301`.
|
|
545
|
+
if (rhs !== undefined) {
|
|
546
|
+
if (rhs < rawStart) {
|
|
547
|
+
throw new ToolError(`Invalid range ${rawStart}-${rhs}: end must be >= start.`);
|
|
548
|
+
}
|
|
549
|
+
rawEnd = rhs;
|
|
546
550
|
}
|
|
547
|
-
rawEnd = rhs;
|
|
548
551
|
}
|
|
549
552
|
return { startLine: rawStart, endLine: rawEnd };
|
|
550
553
|
}
|
package/src/tools/search.ts
CHANGED
|
@@ -328,11 +328,18 @@ export class SearchTool implements AgentTool<typeof searchSchema, SearchToolDeta
|
|
|
328
328
|
return nextWidth;
|
|
329
329
|
}, 0);
|
|
330
330
|
const cacheEntries: Array<readonly [number, string]> = [];
|
|
331
|
+
let lastEmittedLine: number | undefined;
|
|
332
|
+
const gutterPad = " ".repeat(lineNumberWidth + 1);
|
|
331
333
|
for (const match of fileMatches) {
|
|
332
334
|
const pushLine = (lineNumber: number, line: string, isMatch: boolean, recordable: boolean) => {
|
|
335
|
+
if (lastEmittedLine !== undefined && lineNumber > lastEmittedLine + 1) {
|
|
336
|
+
modelOut.push("...");
|
|
337
|
+
displayOut.push(`${gutterPad}│...`);
|
|
338
|
+
}
|
|
333
339
|
modelOut.push(formatMatchLine(lineNumber, line, isMatch, { useHashLines }));
|
|
334
340
|
displayOut.push(formatCodeFrameLine(isMatch ? "*" : " ", lineNumber, line, lineNumberWidth));
|
|
335
341
|
if (recordable) cacheEntries.push([lineNumber, line] as const);
|
|
342
|
+
lastEmittedLine = lineNumber;
|
|
336
343
|
};
|
|
337
344
|
if (match.contextBefore) {
|
|
338
345
|
for (const ctx of match.contextBefore) {
|
package/src/tools/yield.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
type JsonSchemaValidationIssue,
|
|
12
12
|
type JsonSchemaValidationResult,
|
|
13
13
|
sanitizeSchemaForStrictMode,
|
|
14
|
+
tryEnforceStrictSchema,
|
|
14
15
|
validateJsonSchemaValue,
|
|
15
16
|
} from "@oh-my-pi/pi-ai/utils/schema";
|
|
16
17
|
import { subprocessToolRegistry } from "../task/subprocess-tool-registry";
|
|
@@ -140,15 +141,25 @@ export class YieldTool implements AgentTool<TSchema, YieldDetails> {
|
|
|
140
141
|
const schemaDescription = schemaError
|
|
141
142
|
? `Structured JSON output (output schema invalid; accepting unconstrained object): ${schemaError}`
|
|
142
143
|
: `Structured output matching the schema:\n${schemaHint}`;
|
|
143
|
-
|
|
144
|
+
let sanitizedSchema: Record<string, unknown> | undefined;
|
|
145
|
+
if (
|
|
144
146
|
!schemaError &&
|
|
145
147
|
normalizedSchema != null &&
|
|
146
148
|
typeof normalizedSchema === "object" &&
|
|
147
149
|
!Array.isArray(normalizedSchema)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
) {
|
|
151
|
+
const normalizedRecord = normalizedSchema as Record<string, unknown>;
|
|
152
|
+
const strictProbe = tryEnforceStrictSchema(normalizedRecord);
|
|
153
|
+
if (strictProbe.strict) {
|
|
154
|
+
sanitizedSchema = sanitizeSchemaForStrictMode(normalizedRecord);
|
|
155
|
+
} else {
|
|
156
|
+
sanitizedSchema = normalizedRecord;
|
|
157
|
+
this.strict = false;
|
|
158
|
+
}
|
|
159
|
+
} else if (!schemaError && normalizedSchema === true) {
|
|
160
|
+
sanitizedSchema = {};
|
|
161
|
+
this.strict = false;
|
|
162
|
+
}
|
|
152
163
|
|
|
153
164
|
let dataSchema: Record<string, unknown>;
|
|
154
165
|
if (sanitizedSchema !== undefined) {
|
|
@@ -161,6 +172,7 @@ export class YieldTool implements AgentTool<TSchema, YieldDetails> {
|
|
|
161
172
|
}
|
|
162
173
|
dataSchema = resolved;
|
|
163
174
|
} else {
|
|
175
|
+
this.strict = false;
|
|
164
176
|
dataSchema = looseRecordSchema(
|
|
165
177
|
schemaError ? schemaDescription : "Structured JSON output (no schema specified)",
|
|
166
178
|
);
|
package/src/tui/code-cell.ts
CHANGED
|
@@ -77,13 +77,28 @@ function formatHeader(options: CodeCellOptions, theme: Theme): { title: string;
|
|
|
77
77
|
return { title: headerTitle, meta: metaParts.join(theme.fg("dim", theme.sep.dot)) };
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Normalize terminal control characters that would otherwise corrupt TUI rendering:
|
|
82
|
+
* - Collapse `\r\n` to `\n`.
|
|
83
|
+
* - Within a line, treat `\r` as a cursor-return overwrite by keeping only the
|
|
84
|
+
* final segment (mirrors how rsync/curl/pip progress bars render to a terminal).
|
|
85
|
+
* Splits on `\n` and returns the cleaned lines.
|
|
86
|
+
*/
|
|
87
|
+
function sanitizeTerminalLines(text: string): string[] {
|
|
88
|
+
return text.split(/\r?\n/).map(collapseCarriageReturns);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function collapseCarriageReturns(line: string): string {
|
|
92
|
+
const idx = line.lastIndexOf("\r");
|
|
93
|
+
return idx < 0 ? line : line.slice(idx + 1);
|
|
94
|
+
}
|
|
80
95
|
export function renderCodeCell(options: CodeCellOptions, theme: Theme): string[] {
|
|
81
96
|
const { code, language, output, expanded = false, outputMaxLines = 6, codeMaxLines = 12, width } = options;
|
|
82
97
|
const { title, meta } = formatHeader(options, theme);
|
|
83
98
|
const state = getState(options.status);
|
|
84
99
|
|
|
85
100
|
const normalizedCode = replaceTabs(code ?? "");
|
|
86
|
-
const rawCodeLines = normalizedCode
|
|
101
|
+
const rawCodeLines = sanitizeTerminalLines(normalizedCode);
|
|
87
102
|
const maxCodeLines = expanded ? rawCodeLines.length : Math.min(rawCodeLines.length, codeMaxLines);
|
|
88
103
|
const visibleCode = rawCodeLines.slice(0, maxCodeLines).join("\n");
|
|
89
104
|
const codeLines = highlightCode(visibleCode, language);
|
|
@@ -96,7 +111,7 @@ export function renderCodeCell(options: CodeCellOptions, theme: Theme): string[]
|
|
|
96
111
|
|
|
97
112
|
const outputLines: string[] = [];
|
|
98
113
|
if (output?.trim()) {
|
|
99
|
-
const rawLines = output
|
|
114
|
+
const rawLines = sanitizeTerminalLines(output);
|
|
100
115
|
const maxLines = expanded ? rawLines.length : Math.min(rawLines.length, outputMaxLines);
|
|
101
116
|
const displayLines = rawLines
|
|
102
117
|
.slice(0, maxLines)
|
|
@@ -163,7 +178,7 @@ export function renderMarkdownCell(options: MarkdownCellOptions, theme: Theme):
|
|
|
163
178
|
|
|
164
179
|
const outputLines: string[] = [];
|
|
165
180
|
if (output?.trim()) {
|
|
166
|
-
const rawLines = output
|
|
181
|
+
const rawLines = sanitizeTerminalLines(output);
|
|
167
182
|
const maxLines = expanded ? rawLines.length : Math.min(rawLines.length, outputMaxLines);
|
|
168
183
|
const displayLines = rawLines
|
|
169
184
|
.slice(0, maxLines)
|
|
@@ -55,8 +55,7 @@ function formatCodeBlock(
|
|
|
55
55
|
): string | null {
|
|
56
56
|
if (!code) return null;
|
|
57
57
|
|
|
58
|
-
const
|
|
59
|
-
const codeLines = normalized.split("\n");
|
|
58
|
+
const codeLines = code.trimEnd().split(/\r?\n/);
|
|
60
59
|
const languageTag = typeof language === "string" ? language.trim().toLowerCase() : "";
|
|
61
60
|
|
|
62
61
|
let displayLines = codeLines;
|