@oh-my-pi/pi-coding-agent 16.3.6 → 16.3.8
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 +66 -0
- package/dist/cli.js +3329 -3314
- package/dist/types/advisor/index.d.ts +6 -6
- package/dist/types/advisor/runtime.d.ts +1 -1
- package/dist/types/advisor/watchdog.d.ts +1 -1
- package/dist/types/async/index.d.ts +1 -1
- package/dist/types/auto-thinking/classifier.d.ts +2 -2
- package/dist/types/autolearn/controller.d.ts +2 -2
- package/dist/types/autoresearch/dashboard.d.ts +2 -2
- package/dist/types/autoresearch/git.d.ts +1 -1
- package/dist/types/autoresearch/helpers.d.ts +1 -1
- package/dist/types/autoresearch/index.d.ts +1 -1
- package/dist/types/autoresearch/state.d.ts +3 -3
- package/dist/types/autoresearch/storage.d.ts +1 -1
- package/dist/types/autoresearch/tools/init-experiment.d.ts +2 -2
- package/dist/types/autoresearch/tools/log-experiment.d.ts +2 -2
- package/dist/types/autoresearch/tools/run-experiment.d.ts +2 -2
- package/dist/types/autoresearch/tools/update-notes.d.ts +2 -2
- package/dist/types/autoresearch/types.d.ts +3 -3
- package/dist/types/capability/context-file.d.ts +2 -2
- package/dist/types/capability/extension-module.d.ts +2 -2
- package/dist/types/capability/extension.d.ts +3 -3
- package/dist/types/capability/hook.d.ts +2 -2
- package/dist/types/capability/index.d.ts +3 -3
- package/dist/types/capability/instruction.d.ts +2 -2
- package/dist/types/capability/mcp.d.ts +2 -2
- package/dist/types/capability/prompt.d.ts +2 -2
- package/dist/types/capability/rule-buckets.d.ts +2 -2
- package/dist/types/capability/rule.d.ts +2 -2
- package/dist/types/capability/settings.d.ts +2 -2
- package/dist/types/capability/skill.d.ts +2 -2
- package/dist/types/capability/slash-command.d.ts +2 -2
- package/dist/types/capability/ssh.d.ts +2 -2
- package/dist/types/capability/system-prompt.d.ts +2 -2
- package/dist/types/capability/tool.d.ts +2 -2
- package/dist/types/cli/args.d.ts +1 -1
- package/dist/types/cli/bench-cli.d.ts +2 -2
- package/dist/types/cli/dry-balance-cli.d.ts +1 -1
- package/dist/types/cli/extension-flags.d.ts +1 -1
- package/dist/types/cli/flag-tables.d.ts +2 -2
- package/dist/types/cli/gallery-cli.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/agentic.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/codeintel.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/edit.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/fs.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/index.d.ts +2 -2
- package/dist/types/cli/gallery-fixtures/interaction.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/memory.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/misc.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/search.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/shell.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/types.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/web.d.ts +1 -1
- package/dist/types/cli/gallery-screenshot.d.ts +1 -1
- package/dist/types/cli/initial-message.d.ts +1 -1
- package/dist/types/cli/models-cli.d.ts +1 -1
- package/dist/types/cli/plugin-cli.d.ts +1 -1
- package/dist/types/cli/session-picker.d.ts +1 -1
- package/dist/types/cli/startup-cwd.d.ts +1 -1
- package/dist/types/cli/tiny-models-cli.d.ts +1 -1
- package/dist/types/cli/web-search-cli.d.ts +1 -1
- package/dist/types/collab/crypto.d.ts +1 -1
- package/dist/types/collab/display-name.d.ts +1 -1
- package/dist/types/collab/guest.d.ts +4 -4
- package/dist/types/collab/host.d.ts +2 -2
- package/dist/types/collab/protocol.d.ts +3 -3
- package/dist/types/collab/relay-client.d.ts +1 -1
- package/dist/types/commands/auth-broker.d.ts +1 -1
- package/dist/types/commands/auth-gateway.d.ts +1 -1
- package/dist/types/commands/config.d.ts +1 -1
- package/dist/types/commands/plugin.d.ts +1 -1
- package/dist/types/commands/setup.d.ts +2 -2
- package/dist/types/commands/ssh.d.ts +1 -1
- package/dist/types/commands/tiny-models.d.ts +1 -1
- package/dist/types/commands/ttsr.d.ts +2 -2
- package/dist/types/commit/agentic/agent.d.ts +4 -4
- package/dist/types/commit/agentic/fallback.d.ts +2 -2
- package/dist/types/commit/agentic/index.d.ts +1 -1
- package/dist/types/commit/agentic/state.d.ts +1 -1
- package/dist/types/commit/agentic/tools/analyze-file.d.ts +5 -5
- package/dist/types/commit/agentic/tools/git-file-diff.d.ts +2 -2
- package/dist/types/commit/agentic/tools/git-hunk.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-overview.d.ts +2 -2
- package/dist/types/commit/agentic/tools/index.d.ts +5 -5
- package/dist/types/commit/agentic/tools/propose-changelog.d.ts +2 -2
- package/dist/types/commit/agentic/tools/propose-commit.d.ts +2 -2
- package/dist/types/commit/agentic/tools/recent-commits.d.ts +1 -1
- package/dist/types/commit/agentic/tools/split-commit.d.ts +2 -2
- package/dist/types/commit/agentic/topo-sort.d.ts +1 -1
- package/dist/types/commit/agentic/trivial.d.ts +1 -1
- package/dist/types/commit/agentic/validation.d.ts +1 -1
- package/dist/types/commit/analysis/conventional.d.ts +1 -1
- package/dist/types/commit/analysis/index.d.ts +4 -4
- package/dist/types/commit/analysis/scope.d.ts +1 -1
- package/dist/types/commit/analysis/summary.d.ts +1 -1
- package/dist/types/commit/analysis/validation.d.ts +1 -1
- package/dist/types/commit/changelog/detect.d.ts +1 -1
- package/dist/types/commit/changelog/generate.d.ts +1 -1
- package/dist/types/commit/changelog/parse.d.ts +1 -1
- package/dist/types/commit/cli.d.ts +1 -1
- package/dist/types/commit/git/diff.d.ts +1 -1
- package/dist/types/commit/index.d.ts +1 -1
- package/dist/types/commit/map-reduce/index.d.ts +1 -1
- package/dist/types/commit/map-reduce/map-phase.d.ts +1 -1
- package/dist/types/commit/map-reduce/reduce-phase.d.ts +1 -1
- package/dist/types/commit/message.d.ts +1 -1
- package/dist/types/commit/model-selection.d.ts +3 -3
- package/dist/types/commit/pipeline.d.ts +1 -1
- package/dist/types/commit/shared-llm.d.ts +1 -1
- package/dist/types/commit/utils.d.ts +1 -1
- package/dist/types/config/model-discovery.d.ts +1 -1
- package/dist/types/config/model-registry.d.ts +3 -3
- package/dist/types/config/model-resolver.d.ts +4 -4
- package/dist/types/config/model-roles.d.ts +2 -2
- package/dist/types/config/models-config.d.ts +2 -2
- package/dist/types/config/service-tier.d.ts +1 -1
- package/dist/types/config/settings-schema.d.ts +7 -13
- package/dist/types/config/settings.d.ts +7 -7
- package/dist/types/config.d.ts +1 -1
- package/dist/types/dap/client.d.ts +1 -1
- package/dist/types/dap/config.d.ts +1 -1
- package/dist/types/dap/index.d.ts +4 -4
- package/dist/types/dap/session.d.ts +3 -3
- package/dist/types/debug/index.d.ts +1 -1
- package/dist/types/debug/log-viewer.d.ts +1 -1
- package/dist/types/debug/raw-sse.d.ts +1 -1
- package/dist/types/debug/report-bundle.d.ts +1 -1
- package/dist/types/discovery/agents.d.ts +1 -1
- package/dist/types/discovery/helpers.d.ts +4 -4
- package/dist/types/discovery/index.d.ts +47 -47
- package/dist/types/discovery/omp-extension-roots.d.ts +1 -1
- package/dist/types/edit/apply-patch/index.d.ts +2 -2
- package/dist/types/edit/apply-patch/parser.d.ts +1 -1
- package/dist/types/edit/diff.d.ts +1 -1
- package/dist/types/edit/hashline/execute.d.ts +4 -4
- package/dist/types/edit/hashline/filesystem.d.ts +3 -3
- package/dist/types/edit/hashline/index.d.ts +5 -5
- package/dist/types/edit/index.d.ts +19 -19
- package/dist/types/edit/modes/apply-patch.d.ts +1 -1
- package/dist/types/edit/modes/patch.d.ts +3 -3
- package/dist/types/edit/modes/replace.d.ts +3 -3
- package/dist/types/edit/renderer.d.ts +15 -15
- package/dist/types/edit/snapshot-details.d.ts +1 -1
- package/dist/types/edit/streaming.d.ts +2 -2
- package/dist/types/eval/agent-bridge.d.ts +4 -4
- package/dist/types/eval/backend-helpers.d.ts +3 -3
- package/dist/types/eval/backend.d.ts +2 -2
- package/dist/types/eval/bridge-timeout.d.ts +1 -1
- package/dist/types/eval/budget-bridge.d.ts +2 -2
- package/dist/types/eval/completion-bridge.d.ts +2 -2
- package/dist/types/eval/concurrency-bridge.d.ts +2 -2
- package/dist/types/eval/executor-base.d.ts +3 -3
- package/dist/types/eval/index.d.ts +6 -6
- package/dist/types/eval/jl/executor.d.ts +4 -4
- package/dist/types/eval/jl/index.d.ts +2 -2
- package/dist/types/eval/jl/kernel.d.ts +5 -5
- package/dist/types/eval/js/context-manager.d.ts +4 -4
- package/dist/types/eval/js/executor.d.ts +3 -3
- package/dist/types/eval/js/index.d.ts +2 -2
- package/dist/types/eval/js/shared/helpers.d.ts +1 -1
- package/dist/types/eval/js/shared/runtime.d.ts +2 -2
- package/dist/types/eval/js/tool-bridge.d.ts +5 -5
- package/dist/types/eval/js/worker-core.d.ts +1 -1
- package/dist/types/eval/js/worker-protocol.d.ts +2 -2
- package/dist/types/eval/kernel-base.d.ts +1 -1
- package/dist/types/eval/py/executor.d.ts +3 -3
- package/dist/types/eval/py/index.d.ts +2 -2
- package/dist/types/eval/py/kernel.d.ts +5 -5
- package/dist/types/eval/py/tool-bridge.d.ts +2 -2
- package/dist/types/eval/rb/executor.d.ts +3 -3
- package/dist/types/eval/rb/index.d.ts +2 -2
- package/dist/types/eval/rb/kernel.d.ts +6 -6
- package/dist/types/eval/session-id.d.ts +1 -1
- package/dist/types/eval/types.d.ts +1 -1
- package/dist/types/exa/index.d.ts +2 -2
- package/dist/types/exa/mcp-client.d.ts +3 -3
- package/dist/types/exec/bash-executor.d.ts +1 -1
- package/dist/types/export/html/index.d.ts +2 -2
- package/dist/types/export/share.d.ts +3 -3
- package/dist/types/export/ttsr.d.ts +2 -2
- package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +2 -2
- package/dist/types/extensibility/custom-commands/bundled/review/index.d.ts +2 -2
- package/dist/types/extensibility/custom-commands/index.d.ts +2 -2
- package/dist/types/extensibility/custom-commands/loader.d.ts +1 -1
- package/dist/types/extensibility/custom-commands/types.d.ts +3 -3
- package/dist/types/extensibility/custom-tools/index.d.ts +3 -3
- package/dist/types/extensibility/custom-tools/loader.d.ts +3 -3
- package/dist/types/extensibility/custom-tools/types.d.ts +12 -12
- package/dist/types/extensibility/custom-tools/wrapper.d.ts +2 -2
- package/dist/types/extensibility/extensions/compact-handler.d.ts +1 -1
- package/dist/types/extensibility/extensions/get-commands-handler.d.ts +5 -5
- package/dist/types/extensibility/extensions/index.d.ts +5 -5
- package/dist/types/extensibility/extensions/loader.d.ts +2 -2
- package/dist/types/extensibility/extensions/model-api.d.ts +3 -3
- package/dist/types/extensibility/extensions/runner.d.ts +6 -6
- package/dist/types/extensibility/extensions/types.d.ts +43 -31
- package/dist/types/extensibility/extensions/wrapper.d.ts +2 -2
- package/dist/types/extensibility/hooks/index.d.ts +6 -6
- package/dist/types/extensibility/hooks/loader.d.ts +4 -4
- package/dist/types/extensibility/hooks/runner.d.ts +5 -5
- package/dist/types/extensibility/hooks/tool-wrapper.d.ts +1 -1
- package/dist/types/extensibility/hooks/types.d.ts +18 -18
- package/dist/types/extensibility/legacy-pi-ai-shim.d.ts +12 -4
- package/dist/types/extensibility/legacy-pi-coding-agent-shim.d.ts +194 -5
- package/dist/types/extensibility/plugins/doctor.d.ts +1 -1
- package/dist/types/extensibility/plugins/index.d.ts +7 -7
- package/dist/types/extensibility/plugins/installer.d.ts +1 -1
- package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +1 -1
- package/dist/types/extensibility/plugins/loader.d.ts +1 -1
- package/dist/types/extensibility/plugins/manager.d.ts +1 -1
- package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +1 -1
- package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -6
- package/dist/types/extensibility/plugins/marketplace/manager.d.ts +1 -1
- package/dist/types/extensibility/plugins/marketplace/registry.d.ts +1 -1
- package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +1 -1
- package/dist/types/extensibility/plugins/runtime-config.d.ts +1 -1
- package/dist/types/extensibility/session-handler-types.d.ts +1 -1
- package/dist/types/extensibility/shared-events.d.ts +4 -4
- package/dist/types/extensibility/skills.d.ts +3 -3
- package/dist/types/extensibility/slash-commands.d.ts +1 -1
- package/dist/types/extensibility/typebox.d.ts +1 -1
- package/dist/types/extensibility/utils.d.ts +1 -1
- package/dist/types/goals/guided-setup.d.ts +1 -1
- package/dist/types/goals/index.d.ts +3 -3
- package/dist/types/goals/runtime.d.ts +1 -1
- package/dist/types/goals/state.d.ts +1 -1
- package/dist/types/goals/tools/goal-tool.d.ts +4 -4
- package/dist/types/hindsight/backend.d.ts +2 -2
- package/dist/types/hindsight/bank.d.ts +2 -2
- package/dist/types/hindsight/client.d.ts +1 -1
- package/dist/types/hindsight/config.d.ts +1 -1
- package/dist/types/hindsight/index.d.ts +8 -8
- package/dist/types/hindsight/mental-models.d.ts +3 -3
- package/dist/types/hindsight/state.d.ts +5 -5
- package/dist/types/hindsight/transcript.d.ts +2 -2
- package/dist/types/index.d.ts +38 -38
- package/dist/types/internal-urls/agent-protocol.d.ts +1 -1
- package/dist/types/internal-urls/artifact-protocol.d.ts +1 -1
- package/dist/types/internal-urls/filesystem-resource.d.ts +1 -1
- package/dist/types/internal-urls/history-protocol.d.ts +1 -1
- package/dist/types/internal-urls/index.d.ts +16 -16
- package/dist/types/internal-urls/issue-pr-protocol.d.ts +1 -1
- package/dist/types/internal-urls/local-protocol.d.ts +1 -1
- package/dist/types/internal-urls/mcp-protocol.d.ts +1 -1
- package/dist/types/internal-urls/memory-protocol.d.ts +1 -1
- package/dist/types/internal-urls/omp-protocol.d.ts +1 -1
- package/dist/types/internal-urls/parse.d.ts +1 -1
- package/dist/types/internal-urls/router.d.ts +1 -1
- package/dist/types/internal-urls/rule-protocol.d.ts +1 -1
- package/dist/types/internal-urls/skill-protocol.d.ts +1 -1
- package/dist/types/internal-urls/ssh-protocol.d.ts +1 -1
- package/dist/types/internal-urls/types.d.ts +2 -2
- package/dist/types/internal-urls/vault-protocol.d.ts +1 -1
- package/dist/types/irc/bus.d.ts +2 -2
- package/dist/types/lib/xai-http.d.ts +1 -1
- package/dist/types/lsp/client.d.ts +23 -1
- package/dist/types/lsp/clients/biome-client.d.ts +1 -1
- package/dist/types/lsp/clients/index.d.ts +4 -4
- package/dist/types/lsp/clients/lsp-linter-client.d.ts +1 -1
- package/dist/types/lsp/clients/swiftlint-client.d.ts +1 -1
- package/dist/types/lsp/config.d.ts +1 -1
- package/dist/types/lsp/diagnostics-ledger.d.ts +1 -1
- package/dist/types/lsp/edits.d.ts +1 -1
- package/dist/types/lsp/index.d.ts +6 -6
- package/dist/types/lsp/render.d.ts +2 -2
- package/dist/types/lsp/startup-events.d.ts +1 -1
- package/dist/types/lsp/utils.d.ts +2 -2
- package/dist/types/main.d.ts +12 -12
- package/dist/types/markit/converters/docx.d.ts +1 -1
- package/dist/types/markit/converters/epub.d.ts +1 -1
- package/dist/types/markit/converters/pdf/columns.d.ts +1 -1
- package/dist/types/markit/converters/pdf/extract.d.ts +1 -1
- package/dist/types/markit/converters/pdf/grid.d.ts +1 -1
- package/dist/types/markit/converters/pdf/headers.d.ts +1 -1
- package/dist/types/markit/converters/pdf/index.d.ts +1 -1
- package/dist/types/markit/converters/pdf/render.d.ts +1 -1
- package/dist/types/markit/converters/pptx.d.ts +1 -1
- package/dist/types/markit/converters/xlsx.d.ts +1 -1
- package/dist/types/markit/index.d.ts +2 -2
- package/dist/types/markit/registry.d.ts +1 -1
- package/dist/types/mcp/client.d.ts +1 -1
- package/dist/types/mcp/config-writer.d.ts +1 -1
- package/dist/types/mcp/config.d.ts +2 -2
- package/dist/types/mcp/index.d.ts +12 -12
- package/dist/types/mcp/loader.d.ts +5 -5
- package/dist/types/mcp/manager.d.ts +7 -7
- package/dist/types/mcp/oauth-credentials.d.ts +3 -3
- package/dist/types/mcp/oauth-flow.d.ts +1 -1
- package/dist/types/mcp/render.d.ts +3 -3
- package/dist/types/mcp/smithery-registry.d.ts +1 -1
- package/dist/types/mcp/tool-bridge.d.ts +5 -5
- package/dist/types/mcp/tool-cache.d.ts +2 -2
- package/dist/types/mcp/transports/http.d.ts +1 -1
- package/dist/types/mcp/transports/index.d.ts +3 -3
- package/dist/types/mcp/transports/sse.d.ts +1 -1
- package/dist/types/mcp/transports/stdio.d.ts +1 -1
- package/dist/types/mcp/types.d.ts +1 -1
- package/dist/types/memories/index.d.ts +4 -4
- package/dist/types/memory-backend/index.d.ts +7 -7
- package/dist/types/memory-backend/local-backend.d.ts +1 -1
- package/dist/types/memory-backend/off-backend.d.ts +1 -1
- package/dist/types/memory-backend/resolve.d.ts +2 -2
- package/dist/types/memory-backend/runtime.d.ts +2 -2
- package/dist/types/memory-backend/types.d.ts +5 -5
- package/dist/types/mnemopi/backend.d.ts +2 -2
- package/dist/types/mnemopi/config.d.ts +1 -1
- package/dist/types/mnemopi/embed-client.d.ts +2 -2
- package/dist/types/mnemopi/embed-worker.d.ts +1 -1
- package/dist/types/mnemopi/index.d.ts +3 -3
- package/dist/types/mnemopi/state.d.ts +38 -2
- package/dist/types/modes/acp/acp-agent.d.ts +2 -2
- package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -1
- package/dist/types/modes/acp/acp-event-mapper.d.ts +1 -1
- package/dist/types/modes/acp/acp-mode.d.ts +1 -1
- package/dist/types/modes/acp/index.d.ts +2 -2
- package/dist/types/modes/components/advisor-config.d.ts +3 -3
- package/dist/types/modes/components/advisor-message.d.ts +2 -2
- package/dist/types/modes/components/agent-dashboard.d.ts +2 -2
- package/dist/types/modes/components/agent-hub.d.ts +11 -9
- package/dist/types/modes/components/agent-transcript-viewer.d.ts +6 -6
- package/dist/types/modes/components/assistant-message.d.ts +2 -2
- package/dist/types/modes/components/background-tan-message.d.ts +2 -2
- package/dist/types/modes/components/bash-execution.d.ts +1 -1
- package/dist/types/modes/components/bordered-loader.d.ts +1 -1
- package/dist/types/modes/components/chat-transcript-builder.d.ts +3 -3
- package/dist/types/modes/components/collab-prompt-message.d.ts +2 -2
- package/dist/types/modes/components/compaction-summary-message.d.ts +1 -1
- package/dist/types/modes/components/copy-selector.d.ts +1 -1
- package/dist/types/modes/components/custom-editor.d.ts +1 -1
- package/dist/types/modes/components/custom-message.d.ts +2 -2
- package/dist/types/modes/components/eval-execution.d.ts +1 -1
- package/dist/types/modes/components/execution-shared.d.ts +1 -1
- package/dist/types/modes/components/extensions/extension-dashboard.d.ts +2 -2
- package/dist/types/modes/components/extensions/extension-list.d.ts +1 -1
- package/dist/types/modes/components/extensions/index.d.ts +5 -5
- package/dist/types/modes/components/extensions/inspector-panel.d.ts +1 -1
- package/dist/types/modes/components/extensions/state-manager.d.ts +1 -1
- package/dist/types/modes/components/extensions/types.d.ts +1 -1
- package/dist/types/modes/components/footer.d.ts +1 -1
- package/dist/types/modes/components/history-search.d.ts +1 -1
- package/dist/types/modes/components/hook-message.d.ts +2 -2
- package/dist/types/modes/components/index.d.ts +38 -38
- package/dist/types/modes/components/keybinding-hints.d.ts +1 -1
- package/dist/types/modes/components/logout-account-selector.d.ts +1 -1
- package/dist/types/modes/components/mcp-add-wizard.d.ts +1 -1
- package/dist/types/modes/components/message-frame.d.ts +1 -1
- package/dist/types/modes/components/model-selector.d.ts +3 -3
- package/dist/types/modes/components/oauth-selector.d.ts +1 -1
- package/dist/types/modes/components/plan-review-overlay.d.ts +1 -1
- package/dist/types/modes/components/plugin-settings.d.ts +3 -3
- package/dist/types/modes/components/read-tool-group.d.ts +1 -1
- package/dist/types/modes/components/reset-usage-selector.d.ts +1 -1
- package/dist/types/modes/components/segment-track.d.ts +1 -1
- package/dist/types/modes/components/session-selector.d.ts +1 -1
- package/dist/types/modes/components/settings-defs.d.ts +1 -1
- package/dist/types/modes/components/settings-selector.d.ts +2 -2
- package/dist/types/modes/components/skill-message.d.ts +1 -1
- package/dist/types/modes/components/status-line/component.d.ts +2 -2
- package/dist/types/modes/components/status-line/context-thresholds.d.ts +1 -1
- package/dist/types/modes/components/status-line/index.d.ts +5 -5
- package/dist/types/modes/components/status-line/presets.d.ts +1 -1
- package/dist/types/modes/components/status-line/segments.d.ts +2 -2
- package/dist/types/modes/components/status-line/separators.d.ts +2 -2
- package/dist/types/modes/components/status-line/types.d.ts +8 -4
- package/dist/types/modes/components/tiny-title-download-progress.d.ts +2 -2
- package/dist/types/modes/components/todo-reminder.d.ts +1 -1
- package/dist/types/modes/components/tool-execution.d.ts +1 -1
- package/dist/types/modes/components/tree-selector.d.ts +2 -2
- package/dist/types/modes/components/ttsr-notification.d.ts +1 -1
- package/dist/types/modes/controllers/btw-controller.d.ts +1 -1
- package/dist/types/modes/controllers/command-controller-shared.d.ts +2 -2
- package/dist/types/modes/controllers/command-controller.d.ts +7 -7
- package/dist/types/modes/controllers/event-controller.d.ts +3 -3
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +5 -5
- package/dist/types/modes/controllers/extension-ui-controller.test.d.ts +1 -0
- package/dist/types/modes/controllers/input-controller.d.ts +2 -2
- package/dist/types/modes/controllers/mcp-command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/omfg-controller.d.ts +1 -1
- package/dist/types/modes/controllers/omfg-rule.d.ts +1 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +2 -2
- package/dist/types/modes/controllers/session-focus-controller.d.ts +4 -4
- package/dist/types/modes/controllers/ssh-command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/streaming-reveal.d.ts +11 -3
- package/dist/types/modes/controllers/tan-command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/todo-command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/tool-args-reveal.d.ts +6 -2
- package/dist/types/modes/image-references.d.ts +1 -1
- package/dist/types/modes/index.d.ts +3 -3
- package/dist/types/modes/interactive-mode.d.ts +34 -34
- package/dist/types/modes/orchestrate.d.ts +1 -1
- package/dist/types/modes/print-mode.d.ts +1 -1
- package/dist/types/modes/prompt-action-autocomplete.d.ts +1 -1
- package/dist/types/modes/rpc/host-tools.d.ts +1 -1
- package/dist/types/modes/rpc/host-uris.d.ts +3 -3
- package/dist/types/modes/rpc/rpc-client.d.ts +3 -3
- package/dist/types/modes/rpc/rpc-mode.d.ts +6 -6
- package/dist/types/modes/rpc/rpc-subagents.d.ts +3 -3
- package/dist/types/modes/rpc/rpc-types.d.ts +7 -7
- package/dist/types/modes/running-subagent-badge.d.ts +1 -1
- package/dist/types/modes/runtime-init.d.ts +2 -2
- package/dist/types/modes/session-observer-registry.d.ts +2 -2
- package/dist/types/modes/setup-wizard/index.d.ts +6 -6
- package/dist/types/modes/setup-wizard/lazy.d.ts +1 -1
- package/dist/types/modes/setup-wizard/scenes/glyph.d.ts +1 -1
- package/dist/types/modes/setup-wizard/scenes/providers.d.ts +1 -1
- package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +1 -1
- package/dist/types/modes/setup-wizard/scenes/theme.d.ts +1 -1
- package/dist/types/modes/setup-wizard/scenes/types.d.ts +1 -1
- package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +1 -1
- package/dist/types/modes/setup-wizard/startup-splash.d.ts +1 -1
- package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +2 -2
- package/dist/types/modes/shared.d.ts +1 -1
- package/dist/types/modes/skill-command.d.ts +2 -2
- package/dist/types/modes/theme/shimmer.d.ts +1 -1
- package/dist/types/modes/theme/theme.d.ts +1 -1
- package/dist/types/modes/types.d.ts +31 -31
- package/dist/types/modes/ultrathink.d.ts +1 -1
- package/dist/types/modes/utils/context-usage.d.ts +5 -5
- package/dist/types/modes/utils/hotkeys-markdown.d.ts +1 -1
- package/dist/types/modes/utils/interactive-context-helpers.d.ts +2 -2
- package/dist/types/modes/utils/tools-markdown.d.ts +1 -1
- package/dist/types/modes/utils/transcript-render-helpers.d.ts +10 -2
- package/dist/types/modes/utils/transcript-render-helpers.test.d.ts +1 -0
- package/dist/types/modes/utils/ui-helpers.d.ts +2 -2
- package/dist/types/modes/workflow.d.ts +1 -1
- package/dist/types/plan-mode/plan-handoff.d.ts +1 -1
- package/dist/types/registry/agent-lifecycle.d.ts +2 -2
- package/dist/types/registry/agent-registry.d.ts +1 -1
- package/dist/types/sdk.d.ts +40 -36
- package/dist/types/secrets/index.d.ts +2 -2
- package/dist/types/secrets/obfuscator.d.ts +1 -1
- package/dist/types/session/agent-session.d.ts +56 -42
- package/dist/types/session/agent-storage.d.ts +1 -1
- package/dist/types/session/auth-broker-config.d.ts +1 -1
- package/dist/types/session/codex-auto-reset.d.ts +1 -1
- package/dist/types/session/exit-diagnostics.d.ts +1 -1
- package/dist/types/session/indexed-session-storage.d.ts +2 -2
- package/dist/types/session/messages.d.ts +22 -3
- package/dist/types/session/redis-session-storage.d.ts +1 -1
- package/dist/types/session/session-context.d.ts +1 -1
- package/dist/types/session/session-entries.d.ts +4 -0
- package/dist/types/session/session-listing.d.ts +1 -1
- package/dist/types/session/session-loader.d.ts +4 -4
- package/dist/types/session/session-manager.d.ts +9 -8
- package/dist/types/session/session-migrations.d.ts +1 -1
- package/dist/types/session/session-paths.d.ts +1 -1
- package/dist/types/session/session-persistence.d.ts +2 -2
- package/dist/types/session/session-storage.d.ts +1 -1
- package/dist/types/session/session-title-slot.d.ts +1 -1
- package/dist/types/session/settings-stream-fn.d.ts +1 -1
- package/dist/types/session/sql-session-storage.d.ts +1 -1
- package/dist/types/session/unexpected-stop-classifier.d.ts +2 -2
- package/dist/types/slash-commands/acp-builtins.d.ts +2 -2
- package/dist/types/slash-commands/available-commands.d.ts +5 -5
- package/dist/types/slash-commands/builtin-registry.d.ts +2 -2
- package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +1 -1
- package/dist/types/slash-commands/helpers/context-report.d.ts +1 -1
- package/dist/types/slash-commands/helpers/format.d.ts +1 -1
- package/dist/types/slash-commands/helpers/logout.d.ts +1 -1
- package/dist/types/slash-commands/helpers/marketplace-manager.d.ts +2 -2
- package/dist/types/slash-commands/helpers/mcp.d.ts +1 -1
- package/dist/types/slash-commands/helpers/parse.d.ts +1 -1
- package/dist/types/slash-commands/helpers/reset-usage.d.ts +1 -1
- package/dist/types/slash-commands/helpers/ssh.d.ts +1 -1
- package/dist/types/slash-commands/helpers/todo.d.ts +1 -1
- package/dist/types/slash-commands/helpers/usage-report.d.ts +1 -1
- package/dist/types/slash-commands/types.d.ts +6 -4
- package/dist/types/ssh/file-transfer.d.ts +1 -1
- package/dist/types/ssh/ssh-executor.d.ts +1 -1
- package/dist/types/ssh/sshfs-mount.d.ts +1 -1
- package/dist/types/stt/asr-client.d.ts +3 -3
- package/dist/types/stt/asr-protocol.d.ts +1 -1
- package/dist/types/stt/asr-worker.d.ts +1 -1
- package/dist/types/stt/downloader.d.ts +1 -1
- package/dist/types/stt/index.d.ts +8 -8
- package/dist/types/stt/models.d.ts +1 -1
- package/dist/types/system-prompt.d.ts +4 -4
- package/dist/types/task/agents.d.ts +1 -1
- package/dist/types/task/discovery.d.ts +1 -1
- package/dist/types/task/executor.d.ts +20 -20
- package/dist/types/task/index.d.ts +11 -11
- package/dist/types/task/isolation-runner.d.ts +7 -6
- package/dist/types/task/persisted-revive.d.ts +5 -5
- package/dist/types/task/provider-concurrency.d.ts +2 -2
- package/dist/types/task/render.d.ts +3 -3
- package/dist/types/task/renderer.d.ts +1 -1
- package/dist/types/task/repair-args.d.ts +1 -1
- package/dist/types/task/subprocess-tool-registry.d.ts +1 -1
- package/dist/types/task/types.d.ts +2 -2
- package/dist/types/task/yield-assembly.d.ts +1 -1
- package/dist/types/tiny/title-client.d.ts +2 -2
- package/dist/types/tiny/title-protocol.d.ts +1 -1
- package/dist/types/tiny/worker.d.ts +1 -1
- package/dist/types/tool-discovery/mode.d.ts +2 -2
- package/dist/types/tools/__tests__/glob.test.d.ts +1 -0
- package/dist/types/tools/acp-bridge.d.ts +2 -2
- package/dist/types/tools/ask.d.ts +3 -3
- package/dist/types/tools/ast-edit.d.ts +4 -4
- package/dist/types/tools/ast-grep.d.ts +4 -4
- package/dist/types/tools/bash-command-fixup.d.ts +3 -11
- package/dist/types/tools/bash-interactive.d.ts +1 -1
- package/dist/types/tools/bash-interceptor.d.ts +1 -1
- package/dist/types/tools/bash-skill-urls.d.ts +3 -3
- package/dist/types/tools/bash.d.ts +4 -4
- package/dist/types/tools/browser/cmux/cmux-tab.d.ts +6 -6
- package/dist/types/tools/browser/cmux/rpc.d.ts +1 -1
- package/dist/types/tools/browser/registry.d.ts +3 -3
- package/dist/types/tools/browser/render.d.ts +3 -3
- package/dist/types/tools/browser/tab-supervisor.d.ts +4 -4
- package/dist/types/tools/browser/tab-worker.d.ts +1 -1
- package/dist/types/tools/browser.d.ts +9 -9
- package/dist/types/tools/checkpoint.d.ts +2 -2
- package/dist/types/tools/conflict-detect.d.ts +1 -1
- package/dist/types/tools/context.d.ts +2 -2
- package/dist/types/tools/debug.d.ts +4 -4
- package/dist/types/tools/eval-backends.d.ts +1 -1
- package/dist/types/tools/eval-render.d.ts +3 -3
- package/dist/types/tools/eval.d.ts +3 -3
- package/dist/types/tools/fetch.d.ts +7 -7
- package/dist/types/tools/gh-renderer.d.ts +3 -3
- package/dist/types/tools/gh.d.ts +5 -5
- package/dist/types/tools/github-cache.d.ts +1 -1
- package/dist/types/tools/glob.d.ts +7 -5
- package/dist/types/tools/grep.d.ts +5 -5
- package/dist/types/tools/image-gen.d.ts +2 -2
- package/dist/types/tools/index.d.ts +70 -70
- package/dist/types/tools/inspect-image-renderer.d.ts +2 -2
- package/dist/types/tools/inspect-image.d.ts +2 -2
- package/dist/types/tools/irc.d.ts +5 -5
- package/dist/types/tools/job.d.ts +3 -3
- package/dist/types/tools/json-tree.d.ts +1 -1
- package/dist/types/tools/learn.d.ts +1 -1
- package/dist/types/tools/list-limit.d.ts +1 -1
- package/dist/types/tools/manage-skill.d.ts +1 -1
- package/dist/types/tools/memory-edit.d.ts +1 -1
- package/dist/types/tools/memory-recall.d.ts +1 -1
- package/dist/types/tools/memory-reflect.d.ts +1 -1
- package/dist/types/tools/memory-render.d.ts +2 -2
- package/dist/types/tools/memory-retain.d.ts +1 -1
- package/dist/types/tools/output-meta.d.ts +3 -3
- package/dist/types/tools/path-utils.d.ts +2 -2
- package/dist/types/tools/plan-mode-guard.d.ts +1 -1
- package/dist/types/tools/read.d.ts +7 -7
- package/dist/types/tools/render-utils.d.ts +3 -3
- package/dist/types/tools/renderers.d.ts +2 -2
- package/dist/types/tools/report-tool-issue.d.ts +2 -2
- package/dist/types/tools/resolve.d.ts +3 -3
- package/dist/types/tools/review.d.ts +2 -2
- package/dist/types/tools/search-tool-bm25.d.ts +4 -4
- package/dist/types/tools/ssh.d.ts +5 -5
- package/dist/types/tools/todo.d.ts +4 -4
- package/dist/types/tools/tool-result.d.ts +2 -2
- package/dist/types/tools/tts.d.ts +1 -1
- package/dist/types/tools/write.d.ts +7 -7
- package/dist/types/tools/yield.d.ts +1 -1
- package/dist/types/tts/index.d.ts +10 -10
- package/dist/types/tts/models.d.ts +1 -1
- package/dist/types/tts/speech-enhancer.d.ts +2 -2
- package/dist/types/tts/streaming-player.d.ts +1 -1
- package/dist/types/tts/tts-client.d.ts +2 -2
- package/dist/types/tts/tts-protocol.d.ts +1 -1
- package/dist/types/tts/tts-worker.d.ts +1 -1
- package/dist/types/tts/vocalizer.d.ts +7 -1
- package/dist/types/tui/code-cell.d.ts +1 -1
- package/dist/types/tui/file-list.d.ts +1 -1
- package/dist/types/tui/index.d.ts +9 -9
- package/dist/types/tui/output-block.d.ts +2 -2
- package/dist/types/tui/status-line.d.ts +2 -2
- package/dist/types/tui/tree-list.d.ts +2 -2
- package/dist/types/tui/types.d.ts +1 -1
- package/dist/types/tui/utils.d.ts +2 -2
- package/dist/types/utils/changelog.d.ts +1 -1
- package/dist/types/utils/commit-message-generator.d.ts +2 -2
- package/dist/types/utils/git.d.ts +1 -1
- package/dist/types/utils/image-loading.d.ts +1 -1
- package/dist/types/utils/image-vision-fallback.d.ts +3 -3
- package/dist/types/utils/markit.d.ts +1 -1
- package/dist/types/utils/title-generator.d.ts +2 -2
- package/dist/types/web/parallel.d.ts +1 -1
- package/dist/types/web/scrapers/artifacthub.d.ts +1 -1
- package/dist/types/web/scrapers/arxiv.d.ts +1 -1
- package/dist/types/web/scrapers/aur.d.ts +1 -1
- package/dist/types/web/scrapers/biorxiv.d.ts +1 -1
- package/dist/types/web/scrapers/bluesky.d.ts +1 -1
- package/dist/types/web/scrapers/brew.d.ts +1 -1
- package/dist/types/web/scrapers/cheatsh.d.ts +1 -1
- package/dist/types/web/scrapers/chocolatey.d.ts +1 -1
- package/dist/types/web/scrapers/choosealicense.d.ts +1 -1
- package/dist/types/web/scrapers/cisa-kev.d.ts +1 -1
- package/dist/types/web/scrapers/clojars.d.ts +1 -1
- package/dist/types/web/scrapers/coingecko.d.ts +1 -1
- package/dist/types/web/scrapers/crates-io.d.ts +1 -1
- package/dist/types/web/scrapers/crossref.d.ts +1 -1
- package/dist/types/web/scrapers/devto.d.ts +1 -1
- package/dist/types/web/scrapers/discogs.d.ts +1 -1
- package/dist/types/web/scrapers/discourse.d.ts +1 -1
- package/dist/types/web/scrapers/dockerhub.d.ts +1 -1
- package/dist/types/web/scrapers/docs-rs.d.ts +8 -1
- package/dist/types/web/scrapers/fdroid.d.ts +1 -1
- package/dist/types/web/scrapers/firefox-addons.d.ts +1 -1
- package/dist/types/web/scrapers/flathub.d.ts +1 -1
- package/dist/types/web/scrapers/github-gist.d.ts +1 -1
- package/dist/types/web/scrapers/github.d.ts +1 -1
- package/dist/types/web/scrapers/gitlab.d.ts +1 -1
- package/dist/types/web/scrapers/go-pkg.d.ts +1 -1
- package/dist/types/web/scrapers/hackage.d.ts +1 -1
- package/dist/types/web/scrapers/hackernews.d.ts +1 -1
- package/dist/types/web/scrapers/hex.d.ts +1 -1
- package/dist/types/web/scrapers/huggingface.d.ts +1 -1
- package/dist/types/web/scrapers/iacr.d.ts +1 -1
- package/dist/types/web/scrapers/index.d.ts +77 -77
- package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +1 -1
- package/dist/types/web/scrapers/lemmy.d.ts +1 -1
- package/dist/types/web/scrapers/lobsters.d.ts +1 -1
- package/dist/types/web/scrapers/mastodon.d.ts +1 -1
- package/dist/types/web/scrapers/maven.d.ts +1 -1
- package/dist/types/web/scrapers/mdn.d.ts +1 -1
- package/dist/types/web/scrapers/metacpan.d.ts +1 -1
- package/dist/types/web/scrapers/musicbrainz.d.ts +1 -1
- package/dist/types/web/scrapers/npm.d.ts +1 -1
- package/dist/types/web/scrapers/nuget.d.ts +1 -1
- package/dist/types/web/scrapers/nvd.d.ts +1 -1
- package/dist/types/web/scrapers/ollama.d.ts +1 -1
- package/dist/types/web/scrapers/open-vsx.d.ts +1 -1
- package/dist/types/web/scrapers/opencorporates.d.ts +1 -1
- package/dist/types/web/scrapers/openlibrary.d.ts +1 -1
- package/dist/types/web/scrapers/orcid.d.ts +1 -1
- package/dist/types/web/scrapers/osv.d.ts +1 -1
- package/dist/types/web/scrapers/packagist.d.ts +1 -1
- package/dist/types/web/scrapers/pub-dev.d.ts +1 -1
- package/dist/types/web/scrapers/pubmed.d.ts +1 -1
- package/dist/types/web/scrapers/pypi.d.ts +1 -1
- package/dist/types/web/scrapers/rawg.d.ts +1 -1
- package/dist/types/web/scrapers/readthedocs.d.ts +1 -1
- package/dist/types/web/scrapers/reddit.d.ts +1 -1
- package/dist/types/web/scrapers/repology.d.ts +1 -1
- package/dist/types/web/scrapers/rfc.d.ts +1 -1
- package/dist/types/web/scrapers/rubygems.d.ts +1 -1
- package/dist/types/web/scrapers/searchcode.d.ts +1 -1
- package/dist/types/web/scrapers/sec-edgar.d.ts +1 -1
- package/dist/types/web/scrapers/semantic-scholar.d.ts +1 -1
- package/dist/types/web/scrapers/snapcraft.d.ts +1 -1
- package/dist/types/web/scrapers/sourcegraph.d.ts +1 -1
- package/dist/types/web/scrapers/spdx.d.ts +1 -1
- package/dist/types/web/scrapers/spotify.d.ts +1 -1
- package/dist/types/web/scrapers/stackoverflow.d.ts +1 -1
- package/dist/types/web/scrapers/terraform.d.ts +1 -1
- package/dist/types/web/scrapers/tldr.d.ts +1 -1
- package/dist/types/web/scrapers/twitter.d.ts +1 -1
- package/dist/types/web/scrapers/types.d.ts +1 -1
- package/dist/types/web/scrapers/vimeo.d.ts +1 -1
- package/dist/types/web/scrapers/vscode-marketplace.d.ts +1 -1
- package/dist/types/web/scrapers/w3c.d.ts +1 -1
- package/dist/types/web/scrapers/wikidata.d.ts +1 -1
- package/dist/types/web/scrapers/wikipedia.d.ts +1 -1
- package/dist/types/web/scrapers/youtube.d.ts +1 -1
- package/dist/types/web/search/index.d.ts +7 -7
- package/dist/types/web/search/provider.d.ts +5 -5
- package/dist/types/web/search/providers/anthropic.d.ts +3 -3
- package/dist/types/web/search/providers/base.d.ts +1 -1
- package/dist/types/web/search/providers/brave.d.ts +3 -3
- package/dist/types/web/search/providers/codex.d.ts +3 -3
- package/dist/types/web/search/providers/duckduckgo.d.ts +3 -3
- package/dist/types/web/search/providers/exa.d.ts +3 -3
- package/dist/types/web/search/providers/firecrawl.d.ts +3 -3
- package/dist/types/web/search/providers/gemini.d.ts +3 -3
- package/dist/types/web/search/providers/jina.d.ts +3 -3
- package/dist/types/web/search/providers/kagi.d.ts +3 -3
- package/dist/types/web/search/providers/kimi.d.ts +3 -3
- package/dist/types/web/search/providers/parallel.d.ts +3 -3
- package/dist/types/web/search/providers/perplexity.d.ts +3 -3
- package/dist/types/web/search/providers/searxng.d.ts +3 -3
- package/dist/types/web/search/providers/synthetic.d.ts +3 -3
- package/dist/types/web/search/providers/tavily.d.ts +3 -3
- package/dist/types/web/search/providers/tinyfish.d.ts +3 -3
- package/dist/types/web/search/providers/utils.d.ts +2 -2
- package/dist/types/web/search/providers/xai.d.ts +3 -3
- package/dist/types/web/search/providers/zai.d.ts +3 -3
- package/dist/types/web/search/render.d.ts +3 -3
- package/package.json +13 -13
- package/src/advisor/__tests__/advisor.test.ts +59 -0
- package/src/auto-thinking/classifier.ts +6 -5
- package/src/collab/relay-client.ts +73 -7
- package/src/config/model-registry.ts +43 -2
- package/src/config/model-resolver.ts +1 -1
- package/src/config/settings-schema.ts +5 -12
- package/src/config/settings.ts +25 -5
- package/src/edit/hashline/filesystem.ts +19 -1
- package/src/edit/modes/patch.ts +9 -1
- package/src/edit/modes/replace.ts +1 -1
- package/src/edit/renderer.ts +42 -30
- package/src/eval/__tests__/agent-bridge.test.ts +19 -0
- package/src/eval/__tests__/budget-bridge.test.ts +12 -1
- package/src/eval/agent-bridge.ts +27 -19
- package/src/eval/js/context-manager.ts +3 -0
- package/src/export/ttsr.ts +10 -0
- package/src/extensibility/extensions/loader.ts +2 -2
- package/src/extensibility/extensions/types.ts +16 -4
- package/src/extensibility/hooks/loader.ts +3 -3
- package/src/extensibility/hooks/types.ts +4 -4
- package/src/extensibility/legacy-pi-ai-shim.ts +17 -4
- package/src/extensibility/legacy-pi-coding-agent-shim.ts +554 -2
- package/src/extensibility/plugins/legacy-pi-compat.ts +190 -58
- package/src/internal-urls/docs-index.generated.txt +1 -1
- package/src/internal-urls/memory-protocol.ts +105 -3
- package/src/lsp/client.ts +70 -0
- package/src/lsp/index.ts +65 -12
- package/src/main.ts +5 -3
- package/src/markit/converters/pdf/extract.ts +26 -2
- package/src/mnemopi/state.ts +76 -0
- package/src/modes/acp/acp-agent.ts +5 -1
- package/src/modes/components/agent-hub.ts +27 -9
- package/src/modes/components/chat-transcript-builder.ts +7 -3
- package/src/modes/components/copy-selector.ts +16 -4
- package/src/modes/components/model-selector.ts +17 -17
- package/src/modes/components/session-selector.ts +12 -4
- package/src/modes/components/status-line/component.ts +4 -0
- package/src/modes/components/status-line/segments.ts +6 -5
- package/src/modes/components/status-line/types.ts +4 -0
- package/src/modes/components/tool-execution.ts +8 -3
- package/src/modes/controllers/command-controller.ts +10 -0
- package/src/modes/controllers/event-controller.ts +4 -3
- package/src/modes/controllers/extension-ui-controller.test.ts +58 -0
- package/src/modes/controllers/extension-ui-controller.ts +12 -6
- package/src/modes/controllers/input-controller.ts +8 -0
- package/src/modes/controllers/selector-controller.ts +18 -9
- package/src/modes/controllers/streaming-reveal.ts +12 -5
- package/src/modes/controllers/tool-args-reveal.ts +13 -6
- package/src/modes/interactive-mode.ts +54 -28
- package/src/modes/prompt-action-autocomplete.ts +18 -0
- package/src/modes/theme/shimmer.ts +37 -1
- package/src/modes/utils/transcript-render-helpers.test.ts +38 -0
- package/src/modes/utils/transcript-render-helpers.ts +14 -0
- package/src/modes/utils/ui-helpers.ts +5 -1
- package/src/prompts/system/workflow-notice.md +1 -1
- package/src/prompts/tools/bash.md +9 -7
- package/src/prompts/tools/grep.md +1 -1
- package/src/prompts/tools/memory-edit.md +2 -0
- package/src/prompts/tools/recall.md +2 -0
- package/src/sdk.ts +112 -12
- package/src/session/agent-session.ts +203 -61
- package/src/session/messages.ts +102 -2
- package/src/session/session-context.ts +60 -10
- package/src/session/session-entries.ts +4 -0
- package/src/session/session-history-format.ts +12 -0
- package/src/session/session-manager.ts +129 -10
- package/src/session/settings-stream-fn.ts +1 -0
- package/src/session/unexpected-stop-classifier.ts +6 -3
- package/src/slash-commands/builtin-registry.ts +7 -4
- package/src/slash-commands/helpers/usage-report.ts +3 -0
- package/src/slash-commands/types.ts +2 -0
- package/src/task/executor.ts +23 -3
- package/src/task/isolation-runner.ts +38 -9
- package/src/tools/__tests__/glob.test.ts +37 -0
- package/src/tools/acp-bridge.ts +11 -1
- package/src/tools/bash-command-fixup.ts +3 -36
- package/src/tools/bash.ts +4 -13
- package/src/tools/browser/render.ts +6 -4
- package/src/tools/glob.ts +11 -1
- package/src/tools/index.ts +1 -1
- package/src/tools/inspect-image-renderer.ts +5 -4
- package/src/tools/read.ts +13 -8
- package/src/tools/render-utils.ts +4 -1
- package/src/tools/write.ts +9 -7
- package/src/tts/speech-enhancer.ts +7 -5
- package/src/tts/vocalizer.ts +9 -0
- package/src/utils/commit-message-generator.ts +7 -5
- package/src/utils/shell-snapshot.ts +10 -0
- package/src/utils/title-generator.ts +12 -7
- package/src/web/scrapers/docs-rs.ts +12 -1
- package/src/web/search/providers/xai.ts +43 -47
|
@@ -864,7 +864,7 @@ function getModelRoleAlias(value: string): ModelRole | undefined {
|
|
|
864
864
|
|
|
865
865
|
function normalizeModelPatternList(value: string | string[] | undefined): string[] {
|
|
866
866
|
if (!value) return [];
|
|
867
|
-
const patterns = Array.isArray(value) ? value : value.split(",");
|
|
867
|
+
const patterns = Array.isArray(value) ? value.flatMap(pattern => pattern.split(",")) : value.split(",");
|
|
868
868
|
return patterns.map(pattern => pattern.trim()).filter(Boolean);
|
|
869
869
|
}
|
|
870
870
|
|
|
@@ -2268,6 +2268,11 @@ export const SETTINGS_SCHEMA = {
|
|
|
2268
2268
|
description:
|
|
2269
2269
|
"8x13 glyphs on an 11x16 cell — extra letter spacing so characters don't merge. Default for Anthropic.",
|
|
2270
2270
|
},
|
|
2271
|
+
{
|
|
2272
|
+
value: "silver16-bw",
|
|
2273
|
+
label: "Silver 16, CJK",
|
|
2274
|
+
description: "Embedded Silver TrueType font on a 16px grid for CJK and other non-Latin text.",
|
|
2275
|
+
},
|
|
2271
2276
|
{
|
|
2272
2277
|
value: "doc-8on16-bw",
|
|
2273
2278
|
label: "Doc 8on16, black",
|
|
@@ -3166,18 +3171,6 @@ export const SETTINGS_SCHEMA = {
|
|
|
3166
3171
|
},
|
|
3167
3172
|
"bashInterceptor.patterns": { type: "array", default: DEFAULT_BASH_INTERCEPTOR_RULES },
|
|
3168
3173
|
|
|
3169
|
-
"bash.stripTrailingHeadTail": {
|
|
3170
|
-
type: "boolean",
|
|
3171
|
-
default: true,
|
|
3172
|
-
ui: {
|
|
3173
|
-
tab: "shell",
|
|
3174
|
-
group: "Bash",
|
|
3175
|
-
label: "Strip head/tail Pipes",
|
|
3176
|
-
description:
|
|
3177
|
-
"Silently drop trailing `| head`/`| tail` pipes from single-line bash commands. Output is already truncated automatically.",
|
|
3178
|
-
},
|
|
3179
|
-
},
|
|
3180
|
-
|
|
3181
3174
|
// Shell output minimizer
|
|
3182
3175
|
"shellMinimizer.enabled": {
|
|
3183
3176
|
type: "boolean",
|
package/src/config/settings.ts
CHANGED
|
@@ -172,6 +172,14 @@ function isRecord(value: unknown): value is Record<string, unknown> {
|
|
|
172
172
|
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
+
function modelRoleValueFromUnknown(value: unknown): string | undefined {
|
|
176
|
+
if (typeof value === "string") return value;
|
|
177
|
+
if (!Array.isArray(value)) return undefined;
|
|
178
|
+
|
|
179
|
+
const entries = stringArrayFromUnknown(value);
|
|
180
|
+
return entries.length === value.length ? entries.join(",") : undefined;
|
|
181
|
+
}
|
|
182
|
+
|
|
175
183
|
type EditVariantEntry = {
|
|
176
184
|
patternLower: string;
|
|
177
185
|
mode: EditMode;
|
|
@@ -580,8 +588,8 @@ export class Settings {
|
|
|
580
588
|
const roles: Record<string, string> = {};
|
|
581
589
|
for (const role in value) {
|
|
582
590
|
if (!Object.hasOwn(value, role)) continue;
|
|
583
|
-
const modelId = value[role];
|
|
584
|
-
if (
|
|
591
|
+
const modelId = modelRoleValueFromUnknown(value[role]);
|
|
592
|
+
if (modelId !== undefined) {
|
|
585
593
|
roles[role] = modelId;
|
|
586
594
|
}
|
|
587
595
|
}
|
|
@@ -614,15 +622,27 @@ export class Settings {
|
|
|
614
622
|
* Get a model role (helper for modelRoles record).
|
|
615
623
|
*/
|
|
616
624
|
getModelRole(role: ModelRole | string): string | undefined {
|
|
617
|
-
const roles = this.get("modelRoles");
|
|
618
|
-
return
|
|
625
|
+
const roles: unknown = this.get("modelRoles");
|
|
626
|
+
if (!isRecord(roles)) return undefined;
|
|
627
|
+
return modelRoleValueFromUnknown(roles[role]);
|
|
619
628
|
}
|
|
620
629
|
|
|
621
630
|
/**
|
|
622
631
|
* Get all model roles (helper for modelRoles record).
|
|
623
632
|
*/
|
|
624
633
|
getModelRoles(): ReadOnlyDict<string> {
|
|
625
|
-
|
|
634
|
+
const roles: unknown = this.get("modelRoles");
|
|
635
|
+
if (!isRecord(roles)) return {};
|
|
636
|
+
|
|
637
|
+
const normalized: Record<string, string> = {};
|
|
638
|
+
for (const role in roles) {
|
|
639
|
+
if (!Object.hasOwn(roles, role)) continue;
|
|
640
|
+
const modelId = modelRoleValueFromUnknown(roles[role]);
|
|
641
|
+
if (modelId !== undefined) {
|
|
642
|
+
normalized[role] = modelId;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
return normalized;
|
|
626
646
|
}
|
|
627
647
|
|
|
628
648
|
/*
|
|
@@ -21,6 +21,7 @@ import * as path from "node:path";
|
|
|
21
21
|
import { Filesystem, NotFoundError, type PreflightWriteOptions, type WriteResult } from "@oh-my-pi/hashline";
|
|
22
22
|
import { isEnoent } from "@oh-my-pi/pi-utils";
|
|
23
23
|
import type { FileDiagnosticsResult, WritethroughCallback, WritethroughDeferredHandle } from "../../lsp";
|
|
24
|
+
import { FileChangeType, notifyWorkspaceWatchedFiles } from "../../lsp/client";
|
|
24
25
|
import type { ToolSession } from "../../tools";
|
|
25
26
|
import { routeWriteThroughBridge } from "../../tools/acp-bridge";
|
|
26
27
|
import { assertEditableFileContent } from "../../tools/auto-generated-guard";
|
|
@@ -157,6 +158,13 @@ export class HashlineFilesystem extends Filesystem {
|
|
|
157
158
|
if (isEnoent(error)) throw new NotFoundError(relativePath, error);
|
|
158
159
|
throw error;
|
|
159
160
|
}
|
|
161
|
+
if (this.session.enableLsp ?? true) {
|
|
162
|
+
await notifyWorkspaceWatchedFiles(
|
|
163
|
+
this.session.cwd,
|
|
164
|
+
[{ filePath: absolutePath, type: FileChangeType.Deleted }],
|
|
165
|
+
this.#signal,
|
|
166
|
+
);
|
|
167
|
+
}
|
|
160
168
|
invalidateFsScanAfterWrite(absolutePath);
|
|
161
169
|
}
|
|
162
170
|
|
|
@@ -170,6 +178,16 @@ export class HashlineFilesystem extends Filesystem {
|
|
|
170
178
|
} else {
|
|
171
179
|
await fs.rename(fromAbsolute, toAbsolute);
|
|
172
180
|
}
|
|
181
|
+
if (this.session.enableLsp ?? true) {
|
|
182
|
+
await notifyWorkspaceWatchedFiles(
|
|
183
|
+
this.session.cwd,
|
|
184
|
+
[
|
|
185
|
+
{ filePath: fromAbsolute, type: FileChangeType.Deleted },
|
|
186
|
+
{ filePath: toAbsolute, type: FileChangeType.Created },
|
|
187
|
+
],
|
|
188
|
+
this.#signal,
|
|
189
|
+
);
|
|
190
|
+
}
|
|
173
191
|
invalidateFsScanAfterWrite(fromAbsolute);
|
|
174
192
|
invalidateFsScanAfterWrite(toAbsolute);
|
|
175
193
|
}
|
|
@@ -180,7 +198,7 @@ export class HashlineFilesystem extends Filesystem {
|
|
|
180
198
|
const finalContent = await serializeEditFileText(absolutePath, relativePath, content);
|
|
181
199
|
|
|
182
200
|
// Route through ACP bridge when available; skips internal artifacts.
|
|
183
|
-
if (await routeWriteThroughBridge(this.session, relativePath, absolutePath, finalContent)) {
|
|
201
|
+
if (await routeWriteThroughBridge(this.session, relativePath, absolutePath, finalContent, this.#signal)) {
|
|
184
202
|
this.#diagnosticsByPath.set(relativePath, undefined);
|
|
185
203
|
return { text: finalContent };
|
|
186
204
|
}
|
package/src/edit/modes/patch.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
type WritethroughCallback,
|
|
17
17
|
type WritethroughDeferredHandle,
|
|
18
18
|
} from "../../lsp";
|
|
19
|
+
import { FileChangeType, notifyWorkspaceWatchedFiles } from "../../lsp/client";
|
|
19
20
|
import type { ToolSession } from "../../tools";
|
|
20
21
|
import { routeWriteThroughBridge } from "../../tools/acp-bridge";
|
|
21
22
|
import { assertEditableFile } from "../../tools/auto-generated-guard";
|
|
@@ -1732,7 +1733,7 @@ class LspFileSystem implements FileSystem {
|
|
|
1732
1733
|
const finalContent = await serializeEditFileText(path, path, content);
|
|
1733
1734
|
|
|
1734
1735
|
// Route through ACP bridge when available; skips internal artifacts and local:// paths.
|
|
1735
|
-
if (await routeWriteThroughBridge(this.session, this.requestedPath, path, finalContent)) {
|
|
1736
|
+
if (await routeWriteThroughBridge(this.session, this.requestedPath, path, finalContent, this.signal)) {
|
|
1736
1737
|
return;
|
|
1737
1738
|
}
|
|
1738
1739
|
|
|
@@ -1753,6 +1754,13 @@ class LspFileSystem implements FileSystem {
|
|
|
1753
1754
|
|
|
1754
1755
|
async delete(path: string): Promise<void> {
|
|
1755
1756
|
await this.#getFile(path).unlink();
|
|
1757
|
+
if (this.session.enableLsp ?? true) {
|
|
1758
|
+
await notifyWorkspaceWatchedFiles(
|
|
1759
|
+
this.session.cwd,
|
|
1760
|
+
[{ filePath: path, type: FileChangeType.Deleted }],
|
|
1761
|
+
this.signal,
|
|
1762
|
+
);
|
|
1763
|
+
}
|
|
1756
1764
|
}
|
|
1757
1765
|
|
|
1758
1766
|
async mkdir(path: string): Promise<void> {
|
|
@@ -1103,7 +1103,7 @@ export async function executeReplaceSingle(
|
|
|
1103
1103
|
|
|
1104
1104
|
// Route through ACP bridge when available; skips internal artifacts.
|
|
1105
1105
|
let diagnostics: FileDiagnosticsResult | undefined;
|
|
1106
|
-
if (await routeWriteThroughBridge(session, path, absolutePath, finalContent)) {
|
|
1106
|
+
if (await routeWriteThroughBridge(session, path, absolutePath, finalContent, signal)) {
|
|
1107
1107
|
// bridge handled the write; diagnostics not available via writethrough
|
|
1108
1108
|
} else {
|
|
1109
1109
|
diagnostics = await writethrough(absolutePath, finalContent, signal, Bun.file(absolutePath), batchRequest, dst =>
|
package/src/edit/renderer.ts
CHANGED
|
@@ -108,8 +108,8 @@ export interface EditToolDetails {
|
|
|
108
108
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
109
109
|
|
|
110
110
|
interface EditRenderArgs {
|
|
111
|
-
path?:
|
|
112
|
-
file_path?:
|
|
111
|
+
path?: unknown;
|
|
112
|
+
file_path?: unknown;
|
|
113
113
|
oldText?: string;
|
|
114
114
|
newText?: string;
|
|
115
115
|
patch?: string;
|
|
@@ -118,7 +118,7 @@ interface EditRenderArgs {
|
|
|
118
118
|
all?: boolean;
|
|
119
119
|
// Patch mode fields
|
|
120
120
|
op?: Operation;
|
|
121
|
-
rename?:
|
|
121
|
+
rename?: unknown;
|
|
122
122
|
diff?: string;
|
|
123
123
|
/**
|
|
124
124
|
* Computed preview diff (used when tool args don't include a diff, e.g. hashline mode).
|
|
@@ -130,9 +130,9 @@ interface EditRenderArgs {
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
type EditRenderEntry = {
|
|
133
|
-
path?:
|
|
134
|
-
rename?:
|
|
135
|
-
move?:
|
|
133
|
+
path?: unknown;
|
|
134
|
+
rename?: unknown;
|
|
135
|
+
move?: unknown;
|
|
136
136
|
op?: Operation;
|
|
137
137
|
};
|
|
138
138
|
|
|
@@ -192,8 +192,11 @@ const CALL_TEXT_PREVIEW_LINES = 6;
|
|
|
192
192
|
const CALL_TEXT_PREVIEW_WIDTH = 80;
|
|
193
193
|
|
|
194
194
|
/** Extract file path from an edit entry. */
|
|
195
|
-
function filePathFromEditEntry(p:
|
|
196
|
-
|
|
195
|
+
function filePathFromEditEntry(p: unknown): string | undefined {
|
|
196
|
+
if (typeof p !== "string") {
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
return p;
|
|
197
200
|
}
|
|
198
201
|
|
|
199
202
|
function decodePartialJsonStringFragment(fragment: string): string {
|
|
@@ -711,18 +714,20 @@ export const editToolRenderer = {
|
|
|
711
714
|
// Extract path from first edit entry when top-level path is absent (new schema)
|
|
712
715
|
const firstEdit = Array.isArray(editArgs.edits) && editArgs.edits.length > 0 ? editArgs.edits[0] : undefined;
|
|
713
716
|
const rawPath =
|
|
714
|
-
editArgs.file_path
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
717
|
+
typeof editArgs.file_path === "string"
|
|
718
|
+
? editArgs.file_path
|
|
719
|
+
: typeof editArgs.path === "string"
|
|
720
|
+
? editArgs.path
|
|
721
|
+
: (filePathFromEditEntry(firstEdit?.path) ??
|
|
722
|
+
getPartialJsonEditPath(editArgs) ??
|
|
723
|
+
firstHashlineInputEntry?.path ??
|
|
724
|
+
firstApplyPatchEntry?.path ??
|
|
725
|
+
"");
|
|
721
726
|
const rename =
|
|
722
|
-
editArgs.rename
|
|
723
|
-
firstEdit?.rename
|
|
724
|
-
firstEdit?.move
|
|
725
|
-
firstApplyPatchEntry?.rename
|
|
727
|
+
(typeof editArgs.rename === "string" ? editArgs.rename : undefined) ??
|
|
728
|
+
filePathFromEditEntry(firstEdit?.rename) ??
|
|
729
|
+
filePathFromEditEntry(firstEdit?.move) ??
|
|
730
|
+
firstApplyPatchEntry?.rename ??
|
|
726
731
|
firstHashlineInputEntry?.rename;
|
|
727
732
|
const op = editArgs.op || firstEdit?.op || firstApplyPatchEntry?.op || firstHashlineInputEntry?.op;
|
|
728
733
|
let fileCount = hashlineInputSummary?.entries.length ?? applyPatchSummary?.entries.length ?? 0;
|
|
@@ -781,8 +786,9 @@ export const editToolRenderer = {
|
|
|
781
786
|
uiTheme: Theme,
|
|
782
787
|
args?: EditRenderArgs,
|
|
783
788
|
): Component {
|
|
789
|
+
const edits = Array.isArray(args?.edits) ? args.edits : undefined;
|
|
784
790
|
const perFileResults = result.details?.perFileResults;
|
|
785
|
-
const totalFiles =
|
|
791
|
+
const totalFiles = edits ? countEditFiles(edits) : 0;
|
|
786
792
|
if (perFileResults && (perFileResults.length > 1 || totalFiles > 1)) {
|
|
787
793
|
return renderMultiFileResult(perFileResults, totalFiles, options, uiTheme);
|
|
788
794
|
}
|
|
@@ -802,20 +808,26 @@ function renderSingleFileResult(
|
|
|
802
808
|
): Component {
|
|
803
809
|
const details = result.details;
|
|
804
810
|
const isError = result.isError ?? (details && "isError" in details ? details.isError : false);
|
|
805
|
-
const
|
|
811
|
+
const edits = Array.isArray(args?.edits) ? args.edits : undefined;
|
|
812
|
+
const firstEdit = edits?.[0];
|
|
806
813
|
const hashlineInputSummary = getHashlineInputRenderSummary(args ?? {}, options.renderContext?.editMode);
|
|
807
814
|
const firstHashlineInputEntry = hashlineInputSummary?.entries[0];
|
|
808
|
-
const moveSource =
|
|
815
|
+
const moveSource =
|
|
816
|
+
details && "sourcePath" in details && typeof details.sourcePath === "string" ? details.sourcePath : undefined;
|
|
817
|
+
const detailPath = details && "path" in details && typeof details.path === "string" ? details.path : undefined;
|
|
809
818
|
const rawPath =
|
|
810
|
-
moveSource
|
|
811
|
-
args?.file_path
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
"";
|
|
819
|
+
moveSource ??
|
|
820
|
+
(typeof args?.file_path === "string"
|
|
821
|
+
? args.file_path
|
|
822
|
+
: typeof args?.path === "string"
|
|
823
|
+
? args.path
|
|
824
|
+
: (filePathFromEditEntry(firstEdit?.path) ?? detailPath ?? firstHashlineInputEntry?.path ?? ""));
|
|
817
825
|
const op = args?.op || firstEdit?.op || details?.op;
|
|
818
|
-
const rename =
|
|
826
|
+
const rename =
|
|
827
|
+
(typeof args?.rename === "string" ? args.rename : undefined) ??
|
|
828
|
+
filePathFromEditEntry(firstEdit?.rename) ??
|
|
829
|
+
filePathFromEditEntry(firstEdit?.move) ??
|
|
830
|
+
(details && "move" in details && typeof details.move === "string" ? details.move : undefined);
|
|
819
831
|
|
|
820
832
|
const displayErrorText = isError && details && "displayErrorText" in details ? details.displayErrorText : undefined;
|
|
821
833
|
const errorText = isError
|
|
@@ -1172,6 +1172,25 @@ describe("runEvalAgent isolation", () => {
|
|
|
1172
1172
|
).rejects.toThrow(/isolated apply failed.*Patch apply failed.*Captured patch preserved at \/artifacts\//s);
|
|
1173
1173
|
});
|
|
1174
1174
|
|
|
1175
|
+
it("surfaces the preserved patch path when branch-mode transfer fails before merge runs", async () => {
|
|
1176
|
+
mockAgents();
|
|
1177
|
+
mockIsolationContext();
|
|
1178
|
+
vi.spyOn(isolationRunner, "runIsolatedSubprocess").mockImplementation(async opts =>
|
|
1179
|
+
singleResult(opts.baseOptions, {
|
|
1180
|
+
output: "ran",
|
|
1181
|
+
patchPath: `/artifacts/${opts.agentId}.patch`,
|
|
1182
|
+
error: "Merge failed: remote: garbage at end of loose object '4de7bad'",
|
|
1183
|
+
}),
|
|
1184
|
+
);
|
|
1185
|
+
const mergeSpy = vi.spyOn(isolationRunner, "mergeIsolatedChanges");
|
|
1186
|
+
|
|
1187
|
+
const session = isolatedSession({ "task.isolation.merge": "branch" });
|
|
1188
|
+
await expect(runEvalAgent({ prompt: "scout", isolated: true }, { session })).rejects.toThrow(
|
|
1189
|
+
/Merge failed.*garbage at end of loose object.*Captured patch preserved at \/artifacts\//s,
|
|
1190
|
+
);
|
|
1191
|
+
expect(mergeSpy).not.toHaveBeenCalled();
|
|
1192
|
+
});
|
|
1193
|
+
|
|
1175
1194
|
it("throws on apply failure for non-schema callers too instead of burying the warning in text", async () => {
|
|
1176
1195
|
mockAgents();
|
|
1177
1196
|
mockIsolationContext();
|
|
@@ -23,7 +23,18 @@ function goalState(extra: Partial<GoalModeState["goal"]>): GoalModeState {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
function usage(output: number): UsageStatistics {
|
|
26
|
-
return {
|
|
26
|
+
return {
|
|
27
|
+
input: 0,
|
|
28
|
+
output,
|
|
29
|
+
cacheRead: 0,
|
|
30
|
+
cacheWrite: 0,
|
|
31
|
+
totalTokens: output,
|
|
32
|
+
orchestrationInput: 0,
|
|
33
|
+
orchestrationOutput: 0,
|
|
34
|
+
orchestrationCacheRead: 0,
|
|
35
|
+
premiumRequests: 0,
|
|
36
|
+
cost: 0,
|
|
37
|
+
};
|
|
27
38
|
}
|
|
28
39
|
|
|
29
40
|
describe("runEvalBudget", () => {
|
package/src/eval/agent-bridge.ts
CHANGED
|
@@ -240,6 +240,25 @@ async function persistNestedPatches(
|
|
|
240
240
|
return written;
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
+
/**
|
|
244
|
+
* Assemble the "captured X preserved at Y" recovery hint appended to
|
|
245
|
+
* isolated-run failure messages. Persists nested-repo patches to
|
|
246
|
+
* `artifactsDir` when present so their paths can be surfaced. Returns an
|
|
247
|
+
* empty string when the result carries no salvageable artifacts.
|
|
248
|
+
*/
|
|
249
|
+
async function buildIsolationRecoveryHint(result: SingleResult, artifactsDir: string): Promise<string> {
|
|
250
|
+
const parts: string[] = [];
|
|
251
|
+
if (result.patchPath) parts.push(`Captured patch preserved at ${result.patchPath}.`);
|
|
252
|
+
if (result.branchName) parts.push(`Captured branch preserved as ${result.branchName}.`);
|
|
253
|
+
if (result.nestedPatches?.length) {
|
|
254
|
+
const nestedPaths = await persistNestedPatches(artifactsDir, result.id, result.nestedPatches);
|
|
255
|
+
parts.push(
|
|
256
|
+
`Captured nested repository patches (${result.nestedPatches.length}) preserved at: ${nestedPaths.join(", ")}.`,
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
return parts.length > 0 ? ` ${parts.join(" ")}` : "";
|
|
260
|
+
}
|
|
261
|
+
|
|
243
262
|
function plainIsolationSummary(summary: string): string {
|
|
244
263
|
return summary.replace(/<\/?system-notification>/g, "").trim();
|
|
245
264
|
}
|
|
@@ -481,7 +500,9 @@ export async function runEvalAgent(args: unknown, options: EvalAgentBridgeOption
|
|
|
481
500
|
})();
|
|
482
501
|
|
|
483
502
|
if (result.exitCode !== 0 || result.error || result.aborted) {
|
|
484
|
-
|
|
503
|
+
const failureMessage = buildSubagentFailureMessage(agentName, result);
|
|
504
|
+
const recoveryHint = isIsolated ? await buildIsolationRecoveryHint(result, artifactsDir) : "";
|
|
505
|
+
throw new ToolError(`${failureMessage}${recoveryHint}`);
|
|
485
506
|
}
|
|
486
507
|
|
|
487
508
|
let mergeSummary = "";
|
|
@@ -497,16 +518,7 @@ export async function runEvalAgent(args: unknown, options: EvalAgentBridgeOption
|
|
|
497
518
|
changesApplied = outcome.changesApplied;
|
|
498
519
|
if (outcome.changesApplied === false) {
|
|
499
520
|
const summaryText = outcome.summary.trim();
|
|
500
|
-
const
|
|
501
|
-
if (result.patchPath) recoveryParts.push(`Captured patch preserved at ${result.patchPath}.`);
|
|
502
|
-
if (result.branchName) recoveryParts.push(`Captured branch preserved as ${result.branchName}.`);
|
|
503
|
-
if (result.nestedPatches?.length) {
|
|
504
|
-
const nestedPaths = await persistNestedPatches(artifactsDir, result.id, result.nestedPatches);
|
|
505
|
-
recoveryParts.push(
|
|
506
|
-
`Captured nested repository patches (${result.nestedPatches.length}) preserved at: ${nestedPaths.join(", ")}.`,
|
|
507
|
-
);
|
|
508
|
-
}
|
|
509
|
-
const recoveryHint = recoveryParts.length > 0 ? ` ${recoveryParts.join(" ")}` : "";
|
|
521
|
+
const recoveryHint = await buildIsolationRecoveryHint(result, artifactsDir);
|
|
510
522
|
throw new ToolError(
|
|
511
523
|
`agent() isolated apply failed for ${result.id}${summaryText ? `: ${summaryText}` : ""}${recoveryHint}`,
|
|
512
524
|
);
|
|
@@ -522,14 +534,10 @@ export async function runEvalAgent(args: unknown, options: EvalAgentBridgeOption
|
|
|
522
534
|
});
|
|
523
535
|
mergeSummary += nestedSummary;
|
|
524
536
|
if (structured && nestedSummary.trim()) {
|
|
525
|
-
const
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
`Captured nested repository patches (${result.nestedPatches.length}) preserved at: ${nestedPaths.join(", ")}.`,
|
|
530
|
-
);
|
|
531
|
-
}
|
|
532
|
-
const recoveryHint = recoveryParts.length > 0 ? ` ${recoveryParts.join(" ")}` : "";
|
|
537
|
+
const recoveryHint = await buildIsolationRecoveryHint(
|
|
538
|
+
{ ...result, patchPath: undefined, branchName: undefined },
|
|
539
|
+
artifactsDir,
|
|
540
|
+
);
|
|
533
541
|
throw new ToolError(
|
|
534
542
|
`agent() isolated nested patch apply failed for ${result.id}: ${plainIsolationSummary(nestedSummary)}${recoveryHint}`,
|
|
535
543
|
);
|
|
@@ -509,11 +509,14 @@ function wrapBunWorker(worker: Worker): WorkerHandle {
|
|
|
509
509
|
const onError = (event: ErrorEvent): void => handler(errorFromWorkerEvent(event));
|
|
510
510
|
const onMessageError = (event: MessageEvent): void =>
|
|
511
511
|
handler(new ToolError(`JS eval worker message error: ${String(event.data)}`));
|
|
512
|
+
const onClose = (): void => handler(new Error("JS eval worker exited"));
|
|
512
513
|
worker.addEventListener("error", onError);
|
|
513
514
|
worker.addEventListener("messageerror", onMessageError);
|
|
515
|
+
worker.addEventListener("close", onClose);
|
|
514
516
|
return () => {
|
|
515
517
|
worker.removeEventListener("error", onError);
|
|
516
518
|
worker.removeEventListener("messageerror", onMessageError);
|
|
519
|
+
worker.removeEventListener("close", onClose);
|
|
517
520
|
};
|
|
518
521
|
},
|
|
519
522
|
async close() {
|
package/src/export/ttsr.ts
CHANGED
|
@@ -77,6 +77,8 @@ export class TtsrManager {
|
|
|
77
77
|
/** Last snapshot evaluated for AST conditions, keyed by stream key, to dedupe matcher runs. */
|
|
78
78
|
readonly #lastAstSnapshots = new Map<string, string>();
|
|
79
79
|
#messageCount = 0;
|
|
80
|
+
#canMatchText = false;
|
|
81
|
+
#canMatchThinking = false;
|
|
80
82
|
|
|
81
83
|
constructor(settings?: TtsrSettings) {
|
|
82
84
|
this.#settings = { ...DEFAULT_SETTINGS, ...settings };
|
|
@@ -329,6 +331,8 @@ export class TtsrManager {
|
|
|
329
331
|
scope,
|
|
330
332
|
globalPathGlobs,
|
|
331
333
|
});
|
|
334
|
+
if (scope.allowText) this.#canMatchText = true;
|
|
335
|
+
if (scope.allowThinking) this.#canMatchThinking = true;
|
|
332
336
|
|
|
333
337
|
logger.debug("TTSR rule registered", {
|
|
334
338
|
ruleName: rule.name,
|
|
@@ -348,6 +352,12 @@ export class TtsrManager {
|
|
|
348
352
|
* assistant prose, thinking text, and unrelated tool argument streams.
|
|
349
353
|
*/
|
|
350
354
|
checkDelta(delta: string, context: TtsrMatchContext): Rule[] {
|
|
355
|
+
if (context.source === "text" && !this.#canMatchText) {
|
|
356
|
+
return [];
|
|
357
|
+
}
|
|
358
|
+
if (context.source === "thinking" && !this.#canMatchThinking) {
|
|
359
|
+
return [];
|
|
360
|
+
}
|
|
351
361
|
const bufferKey = this.#bufferKey(context);
|
|
352
362
|
const nextBuffer = `${this.#buffers.get(bufferKey) ?? ""}${delta}`;
|
|
353
363
|
this.#buffers.set(bufferKey, nextBuffer);
|
|
@@ -18,7 +18,7 @@ import type { ExecOptions } from "../../exec/exec";
|
|
|
18
18
|
import { execCommand } from "../../exec/exec";
|
|
19
19
|
// Runtime self-reference: dereference this namespace only inside loader functions to keep the index.ts cycle safe.
|
|
20
20
|
import * as PiCodingAgent from "../../index";
|
|
21
|
-
import type {
|
|
21
|
+
import type { CustomMessagePayload } from "../../session/messages";
|
|
22
22
|
import { EventBus } from "../../utils/event-bus";
|
|
23
23
|
import { installLegacyPiSpecifierShim, loadLegacyPiModule } from "../plugins/legacy-pi-compat";
|
|
24
24
|
import { getAllPluginExtensionPaths } from "../plugins/loader";
|
|
@@ -203,7 +203,7 @@ class ConcreteExtensionAPI implements ExtensionAPI, IExtensionRuntime {
|
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
sendMessage<T = unknown>(
|
|
206
|
-
message:
|
|
206
|
+
message: CustomMessagePayload<T>,
|
|
207
207
|
options?: { triggerTurn?: boolean; deliverAs?: "steer" | "followUp" | "nextTurn" },
|
|
208
208
|
): void {
|
|
209
209
|
this.runtime.sendMessage(message, options);
|
|
@@ -45,7 +45,7 @@ import type { MemoryRuntimeContext } from "../../memory-backend";
|
|
|
45
45
|
import type { CustomEditor } from "../../modes/components/custom-editor";
|
|
46
46
|
import type { Theme } from "../../modes/theme/theme";
|
|
47
47
|
import type { CompactMode } from "../../session/compact-modes";
|
|
48
|
-
import type { CustomMessage } from "../../session/messages";
|
|
48
|
+
import type { CustomMessage, CustomMessagePayload } from "../../session/messages";
|
|
49
49
|
import type { ReadonlySessionManager, SessionManager } from "../../session/session-manager";
|
|
50
50
|
import type {
|
|
51
51
|
BashToolDetails,
|
|
@@ -294,6 +294,18 @@ export interface CompactOptions {
|
|
|
294
294
|
* subcommands: `soft` | `remote` | `snapcompact`). Omitted = configured behavior.
|
|
295
295
|
*/
|
|
296
296
|
mode?: CompactMode;
|
|
297
|
+
/**
|
|
298
|
+
* Internal summarizer guidance — piped only to native summarization, never
|
|
299
|
+
* exposed as `customInstructions` on the `session_before_compact` extension
|
|
300
|
+
* hook. Used by plan-mode "Approve and compact context" so extensions that
|
|
301
|
+
* treat `customInstructions` as user focus don't mistake plan-mode
|
|
302
|
+
* boilerplate for the operator's intent (issue #4359).
|
|
303
|
+
*
|
|
304
|
+
* When both `customInstructions` and `internalGuidance` are set, the
|
|
305
|
+
* summarizer uses `internalGuidance`; the hook still sees only the public
|
|
306
|
+
* `customInstructions`.
|
|
307
|
+
*/
|
|
308
|
+
internalGuidance?: string;
|
|
297
309
|
}
|
|
298
310
|
|
|
299
311
|
/**
|
|
@@ -881,7 +893,7 @@ export interface UserPythonEventResult {
|
|
|
881
893
|
export type { ToolResultEventResult } from "../shared-events";
|
|
882
894
|
|
|
883
895
|
export interface BeforeAgentStartEventResult {
|
|
884
|
-
message?:
|
|
896
|
+
message?: CustomMessagePayload;
|
|
885
897
|
/** Replace the system prompt for this turn. If multiple extensions return this, they are chained. */
|
|
886
898
|
systemPrompt?: string[];
|
|
887
899
|
}
|
|
@@ -1091,7 +1103,7 @@ export interface ExtensionAPI {
|
|
|
1091
1103
|
* an internal continuation that consumes the message on the next turn.
|
|
1092
1104
|
*/
|
|
1093
1105
|
sendMessage<T = unknown>(
|
|
1094
|
-
message:
|
|
1106
|
+
message: CustomMessagePayload<T>,
|
|
1095
1107
|
options?: { triggerTurn?: boolean; deliverAs?: "steer" | "followUp" | "nextTurn" },
|
|
1096
1108
|
): void;
|
|
1097
1109
|
|
|
@@ -1277,7 +1289,7 @@ export interface ExtensionShortcut {
|
|
|
1277
1289
|
type HandlerFn = (...args: unknown[]) => Promise<unknown>;
|
|
1278
1290
|
|
|
1279
1291
|
export type SendMessageHandler = <T = unknown>(
|
|
1280
|
-
message:
|
|
1292
|
+
message: CustomMessagePayload<T>,
|
|
1281
1293
|
/**
|
|
1282
1294
|
* `deliverAs: "nextTurn"` queues hidden custom context for the next turn.
|
|
1283
1295
|
* When paired with `triggerTurn: true` during prompt teardown, the session schedules
|
|
@@ -10,7 +10,7 @@ import type { Hook } from "../../discovery";
|
|
|
10
10
|
import { loadCapability } from "../../discovery";
|
|
11
11
|
// Runtime self-reference: dereference this namespace only inside loader functions to keep the index.ts cycle safe.
|
|
12
12
|
import * as PiCodingAgent from "../../index";
|
|
13
|
-
import type {
|
|
13
|
+
import type { CustomMessagePayload } from "../../session/messages";
|
|
14
14
|
import * as typebox from "../typebox";
|
|
15
15
|
import { resolvePath, withExitGuard } from "../utils";
|
|
16
16
|
import { execCommand } from "./runner";
|
|
@@ -25,7 +25,7 @@ type HandlerFn = (...args: unknown[]) => Promise<unknown>;
|
|
|
25
25
|
* Send message handler type for pi.sendMessage().
|
|
26
26
|
*/
|
|
27
27
|
export type SendMessageHandler = <T = unknown>(
|
|
28
|
-
message:
|
|
28
|
+
message: CustomMessagePayload<T>,
|
|
29
29
|
options?: { triggerTurn?: boolean; deliverAs?: "steer" | "followUp" },
|
|
30
30
|
) => void;
|
|
31
31
|
|
|
@@ -97,7 +97,7 @@ async function createHookAPI(
|
|
|
97
97
|
handlers.get(event)!.push(handler);
|
|
98
98
|
},
|
|
99
99
|
sendMessage<T = unknown>(
|
|
100
|
-
message:
|
|
100
|
+
message: CustomMessagePayload<T>,
|
|
101
101
|
options?: { triggerTurn?: boolean; deliverAs?: "steer" | "followUp" },
|
|
102
102
|
): void {
|
|
103
103
|
if (!sendMessageHandler) {
|
|
@@ -8,7 +8,7 @@ import type { EditToolDetails } from "../../edit";
|
|
|
8
8
|
import type { ExecOptions, ExecResult } from "../../exec/exec";
|
|
9
9
|
import type * as PiCodingAgent from "../../index";
|
|
10
10
|
import type { Theme } from "../../modes/theme/theme";
|
|
11
|
-
import type { HookMessage } from "../../session/messages";
|
|
11
|
+
import type { CustomMessagePayload, HookMessage } from "../../session/messages";
|
|
12
12
|
import type { ReadonlySessionManager, SessionManager } from "../../session/session-manager";
|
|
13
13
|
import type { BashToolDetails, GlobToolDetails, GrepToolDetails, ReadToolDetails } from "../../tools";
|
|
14
14
|
import type {
|
|
@@ -425,7 +425,7 @@ export type { ToolCallEventResult, ToolResultEventResult } from "../shared-event
|
|
|
425
425
|
*/
|
|
426
426
|
export interface BeforeAgentStartEventResult {
|
|
427
427
|
/** Message to inject into context (persisted to session, visible in TUI) */
|
|
428
|
-
message?:
|
|
428
|
+
message?: CustomMessagePayload;
|
|
429
429
|
}
|
|
430
430
|
|
|
431
431
|
export type {
|
|
@@ -519,7 +519,7 @@ export interface HookAPI {
|
|
|
519
519
|
* Use this when you want the LLM to see the message content.
|
|
520
520
|
* For hook state that should NOT be sent to the LLM, use appendEntry() instead.
|
|
521
521
|
*
|
|
522
|
-
* @param message - The message to send
|
|
522
|
+
* @param message - The message object to send, or a string shorthand for visible message content
|
|
523
523
|
* @param message.customType - Identifier for your hook (used for filtering on reload)
|
|
524
524
|
* @param message.content - Message content (string or TextContent/ImageContent array)
|
|
525
525
|
* @param message.display - Whether to show in TUI (true = styled display, false = hidden)
|
|
@@ -530,7 +530,7 @@ export interface HookAPI {
|
|
|
530
530
|
* @param options.deliverAs - How to deliver the message: "steer" or "followUp".
|
|
531
531
|
*/
|
|
532
532
|
sendMessage<T = unknown>(
|
|
533
|
-
message:
|
|
533
|
+
message: CustomMessagePayload<T>,
|
|
534
534
|
options?: { triggerTurn?: boolean; deliverAs?: "steer" | "followUp" },
|
|
535
535
|
): void;
|
|
536
536
|
|
|
@@ -19,7 +19,13 @@
|
|
|
19
19
|
* `types.ts` via the `export *` below — pi-ai still exports both as types,
|
|
20
20
|
* only the runtime `Type` builder and `StringEnum()` helper were removed.
|
|
21
21
|
*/
|
|
22
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
calculateCost,
|
|
24
|
+
getBundledModel,
|
|
25
|
+
getBundledModels,
|
|
26
|
+
getBundledProviders,
|
|
27
|
+
modelsAreEqual,
|
|
28
|
+
} from "@oh-my-pi/pi-catalog/models";
|
|
23
29
|
import { type TSchema, Type } from "./typebox";
|
|
24
30
|
|
|
25
31
|
export interface StringEnumOptions<T extends string> {
|
|
@@ -66,8 +72,15 @@ export function StringEnum<T extends string | number>(
|
|
|
66
72
|
}
|
|
67
73
|
|
|
68
74
|
export * from "@oh-my-pi/pi-ai";
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Compatibility re-exports for catalog symbols that pi-ai historically exposed
|
|
77
|
+
* from its own barrel prior to the `refactor(catalog)!: split model catalog
|
|
78
|
+
* from pi-ai` change. Legacy extensions still import these from the pi-ai
|
|
79
|
+
* root, so the shim bridges them through to their new home in
|
|
80
|
+
* `@oh-my-pi/pi-catalog/models`. `getModel`/`getModels` are the historical
|
|
81
|
+
* pi-ai names for `getBundledModel`/`getBundledModels`; the remaining symbols
|
|
82
|
+
* kept their names across the move.
|
|
83
|
+
*/
|
|
84
|
+
export { calculateCost, getBundledModel, getBundledModels, getBundledProviders, modelsAreEqual, Type };
|
|
72
85
|
export const getModel = getBundledModel;
|
|
73
86
|
export const getModels = getBundledModels;
|