@wahack/pi-coding-agent 15.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10031 -0
- package/README.md +36 -0
- package/examples/README.md +21 -0
- package/examples/custom-tools/README.md +104 -0
- package/examples/custom-tools/hello/index.ts +20 -0
- package/examples/extensions/README.md +142 -0
- package/examples/extensions/api-demo.ts +79 -0
- package/examples/extensions/chalk-logger.ts +25 -0
- package/examples/extensions/hello.ts +31 -0
- package/examples/extensions/pirate.ts +43 -0
- package/examples/extensions/plan-mode.ts +549 -0
- package/examples/extensions/reload-runtime.ts +38 -0
- package/examples/extensions/thinking-note.ts +13 -0
- package/examples/extensions/tools.ts +145 -0
- package/examples/extensions/with-deps/index.ts +36 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +17 -0
- package/examples/hooks/README.md +56 -0
- package/examples/hooks/auto-commit-on-exit.ts +48 -0
- package/examples/hooks/confirm-destructive.ts +58 -0
- package/examples/hooks/custom-compaction.ts +115 -0
- package/examples/hooks/dirty-repo-guard.ts +51 -0
- package/examples/hooks/file-trigger.ts +40 -0
- package/examples/hooks/git-checkpoint.ts +52 -0
- package/examples/hooks/handoff.ts +149 -0
- package/examples/hooks/permission-gate.ts +33 -0
- package/examples/hooks/protected-paths.ts +29 -0
- package/examples/hooks/qna.ts +118 -0
- package/examples/hooks/status-line.ts +39 -0
- package/examples/sdk/01-minimal.ts +21 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +46 -0
- package/examples/sdk/04-skills.ts +43 -0
- package/examples/sdk/06-extensions.ts +82 -0
- package/examples/sdk/06-hooks.ts +61 -0
- package/examples/sdk/07-context-files.ts +35 -0
- package/examples/sdk/08-prompt-templates.ts +41 -0
- package/examples/sdk/08-slash-commands.ts +46 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +54 -0
- package/examples/sdk/11-sessions.ts +47 -0
- package/examples/sdk/12-redis-sessions.ts +54 -0
- package/examples/sdk/13-sql-sessions.ts +61 -0
- package/examples/sdk/README.md +172 -0
- package/package.json +554 -0
- package/scripts/build-binary.ts +100 -0
- package/scripts/bundle-dist.ts +90 -0
- package/scripts/format-prompts.ts +68 -0
- package/scripts/generate-docs-index.ts +40 -0
- package/scripts/generate-template.ts +33 -0
- package/scripts/omp +42 -0
- package/scripts/omp.ts +19 -0
- package/src/async/index.ts +1 -0
- package/src/async/job-manager.ts +625 -0
- package/src/auto-thinking/classifier.ts +185 -0
- package/src/autoresearch/command-resume.md +14 -0
- package/src/autoresearch/dashboard.ts +436 -0
- package/src/autoresearch/git.ts +319 -0
- package/src/autoresearch/helpers.ts +218 -0
- package/src/autoresearch/index.ts +536 -0
- package/src/autoresearch/prompt-setup.md +43 -0
- package/src/autoresearch/prompt.md +103 -0
- package/src/autoresearch/resume-message.md +10 -0
- package/src/autoresearch/state.ts +273 -0
- package/src/autoresearch/storage.ts +699 -0
- package/src/autoresearch/tools/init-experiment.ts +272 -0
- package/src/autoresearch/tools/log-experiment.ts +524 -0
- package/src/autoresearch/tools/run-experiment.ts +407 -0
- package/src/autoresearch/tools/update-notes.ts +109 -0
- package/src/autoresearch/types.ts +168 -0
- package/src/bun-imports.d.ts +28 -0
- package/src/capability/context-file.ts +44 -0
- package/src/capability/extension-module.ts +34 -0
- package/src/capability/extension.ts +47 -0
- package/src/capability/fs.ts +117 -0
- package/src/capability/hook.ts +40 -0
- package/src/capability/index.ts +436 -0
- package/src/capability/instruction.ts +37 -0
- package/src/capability/mcp.ts +74 -0
- package/src/capability/prompt.ts +35 -0
- package/src/capability/rule-buckets.ts +66 -0
- package/src/capability/rule.ts +261 -0
- package/src/capability/settings.ts +34 -0
- package/src/capability/skill.ts +63 -0
- package/src/capability/slash-command.ts +40 -0
- package/src/capability/ssh.ts +41 -0
- package/src/capability/system-prompt.ts +34 -0
- package/src/capability/tool.ts +38 -0
- package/src/capability/types.ts +168 -0
- package/src/cli/agents-cli.ts +138 -0
- package/src/cli/args.ts +340 -0
- package/src/cli/auth-broker-cli.ts +895 -0
- package/src/cli/auth-gateway-cli.ts +611 -0
- package/src/cli/classify-install-target.ts +76 -0
- package/src/cli/claude-trace-cli.ts +795 -0
- package/src/cli/commands/init-xdg.ts +27 -0
- package/src/cli/completion-gen.ts +550 -0
- package/src/cli/config-cli.ts +418 -0
- package/src/cli/dry-balance-cli.ts +856 -0
- package/src/cli/extension-flags.ts +48 -0
- package/src/cli/file-processor.ts +133 -0
- package/src/cli/gallery-cli.ts +230 -0
- package/src/cli/gallery-fixtures/agentic.ts +407 -0
- package/src/cli/gallery-fixtures/codeintel.ts +187 -0
- package/src/cli/gallery-fixtures/edit.ts +194 -0
- package/src/cli/gallery-fixtures/fs.ts +220 -0
- package/src/cli/gallery-fixtures/index.ts +40 -0
- package/src/cli/gallery-fixtures/interaction.ts +49 -0
- package/src/cli/gallery-fixtures/memory.ts +81 -0
- package/src/cli/gallery-fixtures/misc.ts +250 -0
- package/src/cli/gallery-fixtures/search.ts +213 -0
- package/src/cli/gallery-fixtures/shell.ts +167 -0
- package/src/cli/gallery-fixtures/types.ts +57 -0
- package/src/cli/gallery-fixtures/web.ts +158 -0
- package/src/cli/gallery-screenshot.ts +279 -0
- package/src/cli/grep-cli.ts +160 -0
- package/src/cli/grievances-cli.ts +256 -0
- package/src/cli/initial-message.ts +58 -0
- package/src/cli/list-models.ts +194 -0
- package/src/cli/plugin-cli.ts +996 -0
- package/src/cli/read-cli.ts +57 -0
- package/src/cli/session-picker.ts +79 -0
- package/src/cli/setup-cli.ts +231 -0
- package/src/cli/shell-cli.ts +176 -0
- package/src/cli/ssh-cli.ts +179 -0
- package/src/cli/startup-cwd.ts +68 -0
- package/src/cli/stats-cli.ts +238 -0
- package/src/cli/tiny-models-cli.ts +127 -0
- package/src/cli/update-cli.ts +611 -0
- package/src/cli/usage-cli.ts +603 -0
- package/src/cli/web-search-cli.ts +132 -0
- package/src/cli/worktree-cli.ts +291 -0
- package/src/cli-commands.ts +79 -0
- package/src/cli.ts +200 -0
- package/src/commands/acp.ts +24 -0
- package/src/commands/agents.ts +57 -0
- package/src/commands/auth-broker.ts +99 -0
- package/src/commands/auth-gateway.ts +69 -0
- package/src/commands/commit.ts +46 -0
- package/src/commands/complete.ts +66 -0
- package/src/commands/completions.ts +60 -0
- package/src/commands/config.ts +51 -0
- package/src/commands/dry-balance.ts +43 -0
- package/src/commands/gallery.ts +52 -0
- package/src/commands/grep.ts +48 -0
- package/src/commands/grievances.ts +51 -0
- package/src/commands/install.ts +107 -0
- package/src/commands/launch.ts +169 -0
- package/src/commands/plugin.ts +78 -0
- package/src/commands/read.ts +38 -0
- package/src/commands/setup.ts +67 -0
- package/src/commands/shell.ts +29 -0
- package/src/commands/ssh.ts +60 -0
- package/src/commands/stats.ts +29 -0
- package/src/commands/tiny-models.ts +36 -0
- package/src/commands/update.ts +21 -0
- package/src/commands/usage.ts +35 -0
- package/src/commands/web-search.ts +42 -0
- package/src/commands/worktree.ts +56 -0
- package/src/commit/agentic/agent.ts +317 -0
- package/src/commit/agentic/fallback.ts +96 -0
- package/src/commit/agentic/index.ts +355 -0
- package/src/commit/agentic/prompts/analyze-file.md +22 -0
- package/src/commit/agentic/prompts/session-user.md +25 -0
- package/src/commit/agentic/prompts/split-confirm.md +1 -0
- package/src/commit/agentic/prompts/system.md +38 -0
- package/src/commit/agentic/state.ts +60 -0
- package/src/commit/agentic/tools/analyze-file.ts +146 -0
- package/src/commit/agentic/tools/git-file-diff.ts +191 -0
- package/src/commit/agentic/tools/git-hunk.ts +50 -0
- package/src/commit/agentic/tools/git-overview.ts +81 -0
- package/src/commit/agentic/tools/index.ts +54 -0
- package/src/commit/agentic/tools/propose-changelog.ts +144 -0
- package/src/commit/agentic/tools/propose-commit.ts +109 -0
- package/src/commit/agentic/tools/recent-commits.ts +81 -0
- package/src/commit/agentic/tools/schemas.ts +23 -0
- package/src/commit/agentic/tools/split-commit.ts +245 -0
- package/src/commit/agentic/topo-sort.ts +44 -0
- package/src/commit/agentic/trivial.ts +51 -0
- package/src/commit/agentic/validation.ts +183 -0
- package/src/commit/analysis/conventional.ts +64 -0
- package/src/commit/analysis/index.ts +4 -0
- package/src/commit/analysis/scope.ts +242 -0
- package/src/commit/analysis/summary.ts +105 -0
- package/src/commit/analysis/validation.ts +66 -0
- package/src/commit/changelog/detect.ts +40 -0
- package/src/commit/changelog/generate.ts +97 -0
- package/src/commit/changelog/index.ts +234 -0
- package/src/commit/changelog/parse.ts +44 -0
- package/src/commit/cli.ts +85 -0
- package/src/commit/git/diff.ts +148 -0
- package/src/commit/index.ts +5 -0
- package/src/commit/map-reduce/index.ts +69 -0
- package/src/commit/map-reduce/map-phase.ts +193 -0
- package/src/commit/map-reduce/reduce-phase.ts +49 -0
- package/src/commit/map-reduce/utils.ts +9 -0
- package/src/commit/message.ts +11 -0
- package/src/commit/model-selection.ts +92 -0
- package/src/commit/pipeline.ts +243 -0
- package/src/commit/prompts/analysis-system.md +148 -0
- package/src/commit/prompts/analysis-user.md +38 -0
- package/src/commit/prompts/changelog-system.md +50 -0
- package/src/commit/prompts/changelog-user.md +18 -0
- package/src/commit/prompts/file-observer-system.md +24 -0
- package/src/commit/prompts/file-observer-user.md +8 -0
- package/src/commit/prompts/reduce-system.md +50 -0
- package/src/commit/prompts/reduce-user.md +17 -0
- package/src/commit/prompts/summary-retry.md +3 -0
- package/src/commit/prompts/summary-system.md +38 -0
- package/src/commit/prompts/summary-user.md +13 -0
- package/src/commit/prompts/types-description.md +2 -0
- package/src/commit/shared-llm.ts +77 -0
- package/src/commit/types.ts +118 -0
- package/src/commit/utils/exclusions.ts +42 -0
- package/src/commit/utils.ts +58 -0
- package/src/config/api-key-resolver.ts +60 -0
- package/src/config/append-only-context-mode.ts +31 -0
- package/src/config/config-file.ts +317 -0
- package/src/config/file-lock.ts +164 -0
- package/src/config/keybindings.ts +628 -0
- package/src/config/mcp-schema.json +230 -0
- package/src/config/model-discovery.ts +554 -0
- package/src/config/model-registry.ts +2090 -0
- package/src/config/model-resolver.ts +1502 -0
- package/src/config/model-roles.ts +74 -0
- package/src/config/models-config-schema.ts +226 -0
- package/src/config/models-config.ts +129 -0
- package/src/config/prompt-templates.ts +185 -0
- package/src/config/resolve-config-value.ts +94 -0
- package/src/config/settings-schema.ts +3530 -0
- package/src/config/settings.ts +1178 -0
- package/src/config.ts +242 -0
- package/src/cursor.ts +340 -0
- package/src/dap/client.ts +760 -0
- package/src/dap/config.ts +189 -0
- package/src/dap/defaults.json +212 -0
- package/src/dap/index.ts +4 -0
- package/src/dap/session.ts +1441 -0
- package/src/dap/types.ts +610 -0
- package/src/debug/index.ts +515 -0
- package/src/debug/log-formatting.ts +58 -0
- package/src/debug/log-viewer.ts +908 -0
- package/src/debug/profiler.ts +162 -0
- package/src/debug/protocol-probe.ts +267 -0
- package/src/debug/raw-sse-buffer.ts +273 -0
- package/src/debug/raw-sse.ts +292 -0
- package/src/debug/report-bundle.ts +374 -0
- package/src/debug/system-info.ts +111 -0
- package/src/debug/terminal-info.ts +124 -0
- package/src/discovery/agents-md.ts +67 -0
- package/src/discovery/agents.ts +230 -0
- package/src/discovery/at-imports.ts +273 -0
- package/src/discovery/builtin-defaults.ts +39 -0
- package/src/discovery/builtin-rules/index.ts +54 -0
- package/src/discovery/builtin-rules/rs-box-leak.md +48 -0
- package/src/discovery/builtin-rules/rs-future-prelude.md +23 -0
- package/src/discovery/builtin-rules/rs-lazylock.md +51 -0
- package/src/discovery/builtin-rules/rs-match-ergonomics.md +67 -0
- package/src/discovery/builtin-rules/rs-parking-lot.md +44 -0
- package/src/discovery/builtin-rules/rs-result-type.md +19 -0
- package/src/discovery/builtin-rules/ts-bare-catch.md +38 -0
- package/src/discovery/builtin-rules/ts-import-type.md +42 -0
- package/src/discovery/builtin-rules/ts-no-any.md +56 -0
- package/src/discovery/builtin-rules/ts-no-deprecated-leftovers.md +44 -0
- package/src/discovery/builtin-rules/ts-no-dynamic-import.md +39 -0
- package/src/discovery/builtin-rules/ts-no-return-type.md +45 -0
- package/src/discovery/builtin-rules/ts-no-test-timers.md +55 -0
- package/src/discovery/builtin-rules/ts-no-tiny-functions.md +51 -0
- package/src/discovery/builtin-rules/ts-promise-with-resolvers.md +65 -0
- package/src/discovery/builtin-rules/ts-redundant-clear-guard.md +75 -0
- package/src/discovery/builtin-rules/ts-set-map.md +28 -0
- package/src/discovery/builtin.ts +906 -0
- package/src/discovery/claude-plugins.ts +386 -0
- package/src/discovery/claude.ts +584 -0
- package/src/discovery/cline.ts +83 -0
- package/src/discovery/codex.ts +522 -0
- package/src/discovery/cursor.ts +220 -0
- package/src/discovery/gemini.ts +383 -0
- package/src/discovery/github.ts +154 -0
- package/src/discovery/helpers.ts +1016 -0
- package/src/discovery/index.ts +81 -0
- package/src/discovery/mcp-json.ts +171 -0
- package/src/discovery/omp-extension-roots.ts +190 -0
- package/src/discovery/omp-plugins.ts +383 -0
- package/src/discovery/opencode.ts +398 -0
- package/src/discovery/plugin-dir-roots.ts +28 -0
- package/src/discovery/ssh.ts +153 -0
- package/src/discovery/substitute-plugin-root.ts +29 -0
- package/src/discovery/vscode.ts +105 -0
- package/src/discovery/windsurf.ts +147 -0
- package/src/edit/apply-patch/index.ts +87 -0
- package/src/edit/apply-patch/parser.ts +174 -0
- package/src/edit/diff.ts +999 -0
- package/src/edit/file-snapshot-store.ts +91 -0
- package/src/edit/hashline/block-resolver.ts +33 -0
- package/src/edit/hashline/diff.ts +290 -0
- package/src/edit/hashline/execute.ts +242 -0
- package/src/edit/hashline/filesystem.ts +130 -0
- package/src/edit/hashline/index.ts +5 -0
- package/src/edit/hashline/noop-loop-guard.ts +99 -0
- package/src/edit/hashline/params.ts +18 -0
- package/src/edit/index.ts +571 -0
- package/src/edit/modes/apply-patch.lark +19 -0
- package/src/edit/modes/apply-patch.ts +53 -0
- package/src/edit/modes/patch.ts +1891 -0
- package/src/edit/modes/replace.ts +1137 -0
- package/src/edit/normalize.ts +345 -0
- package/src/edit/notebook.ts +242 -0
- package/src/edit/read-file.ts +25 -0
- package/src/edit/renderer.ts +769 -0
- package/src/edit/streaming.ts +517 -0
- package/src/eval/__tests__/agent-bridge.test.ts +708 -0
- package/src/eval/__tests__/bridge-timeout.test.ts +64 -0
- package/src/eval/__tests__/budget-bridge.test.ts +69 -0
- package/src/eval/__tests__/completion-bridge.test.ts +412 -0
- package/src/eval/__tests__/helpers-local-roots.test.ts +58 -0
- package/src/eval/__tests__/idle-timeout.test.ts +80 -0
- package/src/eval/__tests__/js-context-manager.test.ts +241 -0
- package/src/eval/__tests__/kernel-spawn.test.ts +103 -0
- package/src/eval/agent-bridge.ts +319 -0
- package/src/eval/backend.ts +71 -0
- package/src/eval/bridge-timeout.ts +44 -0
- package/src/eval/budget-bridge.ts +48 -0
- package/src/eval/completion-bridge.ts +207 -0
- package/src/eval/concurrency-bridge.ts +34 -0
- package/src/eval/idle-timeout.ts +91 -0
- package/src/eval/index.ts +4 -0
- package/src/eval/js/context-manager.ts +502 -0
- package/src/eval/js/executor.ts +173 -0
- package/src/eval/js/index.ts +51 -0
- package/src/eval/js/shared/helpers.ts +283 -0
- package/src/eval/js/shared/indirect-eval.ts +30 -0
- package/src/eval/js/shared/local-module-loader.ts +342 -0
- package/src/eval/js/shared/prelude.ts +2 -0
- package/src/eval/js/shared/prelude.txt +246 -0
- package/src/eval/js/shared/rewrite-imports.ts +532 -0
- package/src/eval/js/shared/runtime.ts +352 -0
- package/src/eval/js/shared/types.ts +18 -0
- package/src/eval/js/tool-bridge.ts +162 -0
- package/src/eval/js/worker-core.ts +132 -0
- package/src/eval/js/worker-entry.ts +30 -0
- package/src/eval/js/worker-protocol.ts +47 -0
- package/src/eval/py/__tests__/prelude.test.ts +19 -0
- package/src/eval/py/display.ts +71 -0
- package/src/eval/py/executor.ts +742 -0
- package/src/eval/py/index.ts +68 -0
- package/src/eval/py/kernel.ts +748 -0
- package/src/eval/py/prelude.py +658 -0
- package/src/eval/py/prelude.ts +3 -0
- package/src/eval/py/runner.py +1133 -0
- package/src/eval/py/runtime.ts +276 -0
- package/src/eval/py/spawn-options.ts +126 -0
- package/src/eval/py/tool-bridge.ts +182 -0
- package/src/eval/session-id.ts +8 -0
- package/src/eval/types.ts +48 -0
- package/src/exa/index.ts +2 -0
- package/src/exa/mcp-client.ts +370 -0
- package/src/exa/types.ts +69 -0
- package/src/exec/bash-executor.ts +419 -0
- package/src/exec/exec.ts +53 -0
- package/src/exec/non-interactive-env.ts +48 -0
- package/src/export/custom-share.ts +65 -0
- package/src/export/html/index.ts +164 -0
- package/src/export/html/template.css +1051 -0
- package/src/export/html/template.generated.ts +2 -0
- package/src/export/html/template.html +46 -0
- package/src/export/html/template.js +2271 -0
- package/src/export/html/template.macro.ts +25 -0
- package/src/export/html/vendor/highlight.min.js +1213 -0
- package/src/export/html/vendor/marked.min.js +6 -0
- package/src/export/ttsr.ts +583 -0
- package/src/extensibility/custom-commands/bundled/ci-green/index.ts +54 -0
- package/src/extensibility/custom-commands/bundled/review/index.ts +489 -0
- package/src/extensibility/custom-commands/index.ts +2 -0
- package/src/extensibility/custom-commands/loader.ts +238 -0
- package/src/extensibility/custom-commands/types.ts +113 -0
- package/src/extensibility/custom-tools/index.ts +7 -0
- package/src/extensibility/custom-tools/loader.ts +269 -0
- package/src/extensibility/custom-tools/types.ts +270 -0
- package/src/extensibility/custom-tools/wrapper.ts +47 -0
- package/src/extensibility/extensions/compact-handler.ts +40 -0
- package/src/extensibility/extensions/get-commands-handler.ts +78 -0
- package/src/extensibility/extensions/index.ts +16 -0
- package/src/extensibility/extensions/loader.ts +572 -0
- package/src/extensibility/extensions/runner.ts +922 -0
- package/src/extensibility/extensions/types.ts +1322 -0
- package/src/extensibility/extensions/wrapper.ts +223 -0
- package/src/extensibility/hooks/index.ts +5 -0
- package/src/extensibility/hooks/loader.ts +257 -0
- package/src/extensibility/hooks/runner.ts +425 -0
- package/src/extensibility/hooks/tool-wrapper.ts +107 -0
- package/src/extensibility/hooks/types.ts +606 -0
- package/src/extensibility/legacy-pi-ai-shim.ts +24 -0
- package/src/extensibility/legacy-pi-coding-agent-shim.ts +15 -0
- package/src/extensibility/plugins/doctor.ts +65 -0
- package/src/extensibility/plugins/git-url.ts +367 -0
- package/src/extensibility/plugins/index.ts +9 -0
- package/src/extensibility/plugins/installer.ts +192 -0
- package/src/extensibility/plugins/legacy-pi-compat.ts +682 -0
- package/src/extensibility/plugins/loader.ts +313 -0
- package/src/extensibility/plugins/manager.ts +827 -0
- package/src/extensibility/plugins/marketplace/cache.ts +136 -0
- package/src/extensibility/plugins/marketplace/fetcher.ts +317 -0
- package/src/extensibility/plugins/marketplace/index.ts +6 -0
- package/src/extensibility/plugins/marketplace/manager.ts +770 -0
- package/src/extensibility/plugins/marketplace/registry.ts +196 -0
- package/src/extensibility/plugins/marketplace/source-resolver.ts +147 -0
- package/src/extensibility/plugins/marketplace/types.ts +191 -0
- package/src/extensibility/plugins/marketplace-auto-update.ts +49 -0
- package/src/extensibility/plugins/parser.ts +105 -0
- package/src/extensibility/plugins/types.ts +194 -0
- package/src/extensibility/shared-events.ts +343 -0
- package/src/extensibility/skills.ts +312 -0
- package/src/extensibility/slash-commands.ts +227 -0
- package/src/extensibility/tool-proxy.ts +25 -0
- package/src/extensibility/typebox.ts +418 -0
- package/src/extensibility/utils.ts +44 -0
- package/src/goals/index.ts +3 -0
- package/src/goals/runtime.ts +528 -0
- package/src/goals/state.ts +37 -0
- package/src/goals/tools/goal-tool.ts +251 -0
- package/src/hindsight/backend.ts +354 -0
- package/src/hindsight/bank.ts +156 -0
- package/src/hindsight/client.ts +598 -0
- package/src/hindsight/config.ts +175 -0
- package/src/hindsight/content.ts +210 -0
- package/src/hindsight/index.ts +8 -0
- package/src/hindsight/mental-models.ts +429 -0
- package/src/hindsight/seeds.json +32 -0
- package/src/hindsight/state.ts +488 -0
- package/src/hindsight/transcript.ts +71 -0
- package/src/index.ts +59 -0
- package/src/internal-urls/agent-protocol.ts +146 -0
- package/src/internal-urls/artifact-protocol.ts +107 -0
- package/src/internal-urls/docs-index.generated.ts +106 -0
- package/src/internal-urls/history-protocol.ts +113 -0
- package/src/internal-urls/index.ts +25 -0
- package/src/internal-urls/issue-pr-protocol.ts +584 -0
- package/src/internal-urls/json-query.ts +126 -0
- package/src/internal-urls/local-protocol.ts +287 -0
- package/src/internal-urls/mcp-protocol.ts +151 -0
- package/src/internal-urls/memory-protocol.ts +169 -0
- package/src/internal-urls/omp-protocol.ts +93 -0
- package/src/internal-urls/parse.ts +72 -0
- package/src/internal-urls/registry-helpers.ts +25 -0
- package/src/internal-urls/router.ts +105 -0
- package/src/internal-urls/rule-protocol.ts +45 -0
- package/src/internal-urls/skill-protocol.ts +96 -0
- package/src/internal-urls/types.ts +152 -0
- package/src/internal-urls/vault-protocol.ts +936 -0
- package/src/irc/bus.ts +292 -0
- package/src/lib/xai-http.ts +124 -0
- package/src/lsp/client.ts +1193 -0
- package/src/lsp/clients/biome-client.ts +264 -0
- package/src/lsp/clients/index.ts +50 -0
- package/src/lsp/clients/lsp-linter-client.ts +93 -0
- package/src/lsp/clients/swiftlint-client.ts +120 -0
- package/src/lsp/config.ts +502 -0
- package/src/lsp/defaults.json +493 -0
- package/src/lsp/diagnostics-ledger.ts +51 -0
- package/src/lsp/edits.ts +267 -0
- package/src/lsp/index.ts +2477 -0
- package/src/lsp/lspmux.ts +233 -0
- package/src/lsp/render.ts +694 -0
- package/src/lsp/startup-events.ts +13 -0
- package/src/lsp/types.ts +455 -0
- package/src/lsp/utils.ts +718 -0
- package/src/main.ts +1325 -0
- package/src/mcp/client.ts +484 -0
- package/src/mcp/config-writer.ts +225 -0
- package/src/mcp/config.ts +365 -0
- package/src/mcp/index.ts +29 -0
- package/src/mcp/json-rpc.ts +122 -0
- package/src/mcp/loader.ts +124 -0
- package/src/mcp/manager.ts +1275 -0
- package/src/mcp/oauth-discovery.ts +442 -0
- package/src/mcp/oauth-flow.ts +442 -0
- package/src/mcp/render.ts +132 -0
- package/src/mcp/smithery-auth.ts +104 -0
- package/src/mcp/smithery-connect.ts +145 -0
- package/src/mcp/smithery-registry.ts +477 -0
- package/src/mcp/timeout.ts +59 -0
- package/src/mcp/tool-bridge.ts +426 -0
- package/src/mcp/tool-cache.ts +117 -0
- package/src/mcp/transports/http.ts +519 -0
- package/src/mcp/transports/index.ts +6 -0
- package/src/mcp/transports/stdio.ts +528 -0
- package/src/mcp/types.ts +423 -0
- package/src/memories/index.ts +1150 -0
- package/src/memories/storage.ts +577 -0
- package/src/memory-backend/index.ts +18 -0
- package/src/memory-backend/local-backend.ts +39 -0
- package/src/memory-backend/off-backend.ts +25 -0
- package/src/memory-backend/resolve.ts +25 -0
- package/src/memory-backend/runtime.ts +66 -0
- package/src/memory-backend/types.ts +166 -0
- package/src/mnemopi/backend.ts +547 -0
- package/src/mnemopi/config.ts +160 -0
- package/src/mnemopi/index.ts +3 -0
- package/src/mnemopi/state.ts +584 -0
- package/src/modes/acp/acp-agent.ts +2407 -0
- package/src/modes/acp/acp-client-bridge.ts +154 -0
- package/src/modes/acp/acp-event-mapper.ts +929 -0
- package/src/modes/acp/acp-mode.ts +23 -0
- package/src/modes/acp/index.ts +2 -0
- package/src/modes/acp/terminal-auth.ts +37 -0
- package/src/modes/components/agent-dashboard.ts +1206 -0
- package/src/modes/components/agent-hub.ts +1071 -0
- package/src/modes/components/assistant-message.ts +307 -0
- package/src/modes/components/bash-execution.ts +220 -0
- package/src/modes/components/bordered-loader.ts +41 -0
- package/src/modes/components/branch-summary-message.ts +45 -0
- package/src/modes/components/btw-panel.ts +104 -0
- package/src/modes/components/chat-block.ts +111 -0
- package/src/modes/components/compaction-summary-message.ts +87 -0
- package/src/modes/components/copy-selector.ts +206 -0
- package/src/modes/components/countdown-timer.ts +75 -0
- package/src/modes/components/custom-editor.ts +398 -0
- package/src/modes/components/custom-message.ts +63 -0
- package/src/modes/components/diff.ts +277 -0
- package/src/modes/components/dynamic-border.ts +34 -0
- package/src/modes/components/error-banner.ts +33 -0
- package/src/modes/components/eval-execution.ts +158 -0
- package/src/modes/components/execution-shared.ts +101 -0
- package/src/modes/components/extensions/extension-dashboard.ts +399 -0
- package/src/modes/components/extensions/extension-list.ts +502 -0
- package/src/modes/components/extensions/index.ts +9 -0
- package/src/modes/components/extensions/inspector-panel.ts +317 -0
- package/src/modes/components/extensions/state-manager.ts +627 -0
- package/src/modes/components/extensions/types.ts +186 -0
- package/src/modes/components/footer.ts +274 -0
- package/src/modes/components/history-search.ts +280 -0
- package/src/modes/components/hook-editor.ts +167 -0
- package/src/modes/components/hook-input.ts +87 -0
- package/src/modes/components/hook-message.ts +66 -0
- package/src/modes/components/hook-selector.ts +660 -0
- package/src/modes/components/index.ts +38 -0
- package/src/modes/components/keybinding-hints.ts +65 -0
- package/src/modes/components/late-diagnostics-message.ts +60 -0
- package/src/modes/components/login-dialog.ts +164 -0
- package/src/modes/components/mcp-add-wizard.ts +1340 -0
- package/src/modes/components/message-frame.ts +88 -0
- package/src/modes/components/model-selector.ts +1271 -0
- package/src/modes/components/oauth-selector.ts +368 -0
- package/src/modes/components/omfg-panel.ts +141 -0
- package/src/modes/components/overlay-box.ts +108 -0
- package/src/modes/components/plan-review-overlay.ts +820 -0
- package/src/modes/components/plan-toc.ts +138 -0
- package/src/modes/components/plugin-selector.ts +95 -0
- package/src/modes/components/plugin-settings.ts +722 -0
- package/src/modes/components/queue-mode-selector.ts +56 -0
- package/src/modes/components/read-tool-group.ts +670 -0
- package/src/modes/components/segment-track.ts +52 -0
- package/src/modes/components/session-selector.ts +625 -0
- package/src/modes/components/settings-defs.ts +189 -0
- package/src/modes/components/settings-selector.ts +651 -0
- package/src/modes/components/show-images-selector.ts +45 -0
- package/src/modes/components/skill-message.ts +89 -0
- package/src/modes/components/status-line/component.ts +869 -0
- package/src/modes/components/status-line/context-thresholds.ts +79 -0
- package/src/modes/components/status-line/git-utils.ts +42 -0
- package/src/modes/components/status-line/index.ts +5 -0
- package/src/modes/components/status-line/presets.ts +106 -0
- package/src/modes/components/status-line/segments.ts +584 -0
- package/src/modes/components/status-line/separators.ts +55 -0
- package/src/modes/components/status-line/token-rate.ts +66 -0
- package/src/modes/components/status-line/types.ts +108 -0
- package/src/modes/components/theme-selector.ts +63 -0
- package/src/modes/components/thinking-selector.ts +52 -0
- package/src/modes/components/tiny-title-download-progress.ts +90 -0
- package/src/modes/components/tips.txt +19 -0
- package/src/modes/components/todo-reminder.ts +38 -0
- package/src/modes/components/tool-execution.ts +1024 -0
- package/src/modes/components/transcript-container.ts +608 -0
- package/src/modes/components/tree-selector.ts +978 -0
- package/src/modes/components/ttsr-notification.ts +122 -0
- package/src/modes/components/user-message-selector.ts +227 -0
- package/src/modes/components/user-message.ts +66 -0
- package/src/modes/components/visual-truncate.ts +63 -0
- package/src/modes/components/welcome.ts +493 -0
- package/src/modes/controllers/btw-controller.ts +105 -0
- package/src/modes/controllers/command-controller-shared.ts +109 -0
- package/src/modes/controllers/command-controller.ts +1566 -0
- package/src/modes/controllers/event-controller.ts +1054 -0
- package/src/modes/controllers/extension-ui-controller.ts +886 -0
- package/src/modes/controllers/input-controller.ts +1073 -0
- package/src/modes/controllers/mcp-command-controller.ts +2017 -0
- package/src/modes/controllers/omfg-controller.ts +283 -0
- package/src/modes/controllers/omfg-rule.ts +647 -0
- package/src/modes/controllers/selector-controller.ts +1108 -0
- package/src/modes/controllers/ssh-command-controller.ts +384 -0
- package/src/modes/controllers/streaming-reveal.ts +279 -0
- package/src/modes/controllers/tan-command-controller.ts +173 -0
- package/src/modes/controllers/todo-command-controller.ts +485 -0
- package/src/modes/data/emojis.json +1 -0
- package/src/modes/emoji-autocomplete.ts +285 -0
- package/src/modes/gradient-highlight.ts +87 -0
- package/src/modes/image-references.ts +117 -0
- package/src/modes/index.ts +17 -0
- package/src/modes/interactive-mode.ts +3370 -0
- package/src/modes/internal-url-autocomplete.ts +143 -0
- package/src/modes/loop-limit.ts +140 -0
- package/src/modes/magic-keywords.ts +20 -0
- package/src/modes/markdown-prose.ts +247 -0
- package/src/modes/oauth-manual-input.ts +69 -0
- package/src/modes/orchestrate.ts +42 -0
- package/src/modes/print-mode.ts +126 -0
- package/src/modes/prompt-action-autocomplete.ts +260 -0
- package/src/modes/rpc/host-tools.ts +186 -0
- package/src/modes/rpc/host-uris.ts +235 -0
- package/src/modes/rpc/rpc-client.ts +963 -0
- package/src/modes/rpc/rpc-mode.ts +947 -0
- package/src/modes/rpc/rpc-subagents.ts +265 -0
- package/src/modes/rpc/rpc-types.ts +458 -0
- package/src/modes/runtime-init.ts +116 -0
- package/src/modes/session-observer-registry.ts +146 -0
- package/src/modes/setup-version.ts +11 -0
- package/src/modes/setup-wizard/index.ts +99 -0
- package/src/modes/setup-wizard/lazy.ts +16 -0
- package/src/modes/setup-wizard/scenes/glyph.ts +96 -0
- package/src/modes/setup-wizard/scenes/outro.ts +35 -0
- package/src/modes/setup-wizard/scenes/providers.ts +69 -0
- package/src/modes/setup-wizard/scenes/sign-in.ts +205 -0
- package/src/modes/setup-wizard/scenes/splash.ts +201 -0
- package/src/modes/setup-wizard/scenes/theme.ts +299 -0
- package/src/modes/setup-wizard/scenes/types.ts +48 -0
- package/src/modes/setup-wizard/scenes/web-search.ts +129 -0
- package/src/modes/setup-wizard/wizard-overlay.ts +275 -0
- package/src/modes/shared.ts +47 -0
- package/src/modes/theme/dark.json +95 -0
- package/src/modes/theme/defaults/alabaster.json +93 -0
- package/src/modes/theme/defaults/amethyst.json +96 -0
- package/src/modes/theme/defaults/anthracite.json +93 -0
- package/src/modes/theme/defaults/basalt.json +91 -0
- package/src/modes/theme/defaults/birch.json +95 -0
- package/src/modes/theme/defaults/dark-abyss.json +91 -0
- package/src/modes/theme/defaults/dark-arctic.json +104 -0
- package/src/modes/theme/defaults/dark-aurora.json +95 -0
- package/src/modes/theme/defaults/dark-catppuccin.json +107 -0
- package/src/modes/theme/defaults/dark-cavern.json +91 -0
- package/src/modes/theme/defaults/dark-copper.json +95 -0
- package/src/modes/theme/defaults/dark-cosmos.json +90 -0
- package/src/modes/theme/defaults/dark-cyberpunk.json +102 -0
- package/src/modes/theme/defaults/dark-dracula.json +98 -0
- package/src/modes/theme/defaults/dark-eclipse.json +91 -0
- package/src/modes/theme/defaults/dark-ember.json +95 -0
- package/src/modes/theme/defaults/dark-equinox.json +90 -0
- package/src/modes/theme/defaults/dark-forest.json +96 -0
- package/src/modes/theme/defaults/dark-github.json +105 -0
- package/src/modes/theme/defaults/dark-gruvbox.json +112 -0
- package/src/modes/theme/defaults/dark-lavender.json +95 -0
- package/src/modes/theme/defaults/dark-lunar.json +89 -0
- package/src/modes/theme/defaults/dark-midnight.json +95 -0
- package/src/modes/theme/defaults/dark-monochrome.json +94 -0
- package/src/modes/theme/defaults/dark-monokai.json +98 -0
- package/src/modes/theme/defaults/dark-nebula.json +90 -0
- package/src/modes/theme/defaults/dark-nord.json +97 -0
- package/src/modes/theme/defaults/dark-ocean.json +101 -0
- package/src/modes/theme/defaults/dark-one.json +100 -0
- package/src/modes/theme/defaults/dark-poimandres.json +142 -0
- package/src/modes/theme/defaults/dark-rainforest.json +91 -0
- package/src/modes/theme/defaults/dark-reef.json +91 -0
- package/src/modes/theme/defaults/dark-retro.json +92 -0
- package/src/modes/theme/defaults/dark-rose-pine.json +96 -0
- package/src/modes/theme/defaults/dark-sakura.json +95 -0
- package/src/modes/theme/defaults/dark-slate.json +95 -0
- package/src/modes/theme/defaults/dark-solarized.json +97 -0
- package/src/modes/theme/defaults/dark-solstice.json +90 -0
- package/src/modes/theme/defaults/dark-starfall.json +91 -0
- package/src/modes/theme/defaults/dark-sunset.json +99 -0
- package/src/modes/theme/defaults/dark-swamp.json +90 -0
- package/src/modes/theme/defaults/dark-synthwave.json +103 -0
- package/src/modes/theme/defaults/dark-taiga.json +91 -0
- package/src/modes/theme/defaults/dark-terminal.json +95 -0
- package/src/modes/theme/defaults/dark-tokyo-night.json +101 -0
- package/src/modes/theme/defaults/dark-tundra.json +91 -0
- package/src/modes/theme/defaults/dark-twilight.json +91 -0
- package/src/modes/theme/defaults/dark-volcanic.json +91 -0
- package/src/modes/theme/defaults/graphite.json +92 -0
- package/src/modes/theme/defaults/index.ts +199 -0
- package/src/modes/theme/defaults/light-arctic.json +107 -0
- package/src/modes/theme/defaults/light-aurora-day.json +91 -0
- package/src/modes/theme/defaults/light-canyon.json +91 -0
- package/src/modes/theme/defaults/light-catppuccin.json +106 -0
- package/src/modes/theme/defaults/light-cirrus.json +90 -0
- package/src/modes/theme/defaults/light-coral.json +95 -0
- package/src/modes/theme/defaults/light-cyberpunk.json +96 -0
- package/src/modes/theme/defaults/light-dawn.json +90 -0
- package/src/modes/theme/defaults/light-dunes.json +91 -0
- package/src/modes/theme/defaults/light-eucalyptus.json +95 -0
- package/src/modes/theme/defaults/light-forest.json +100 -0
- package/src/modes/theme/defaults/light-frost.json +95 -0
- package/src/modes/theme/defaults/light-github.json +115 -0
- package/src/modes/theme/defaults/light-glacier.json +91 -0
- package/src/modes/theme/defaults/light-gruvbox.json +108 -0
- package/src/modes/theme/defaults/light-haze.json +90 -0
- package/src/modes/theme/defaults/light-honeycomb.json +95 -0
- package/src/modes/theme/defaults/light-lagoon.json +91 -0
- package/src/modes/theme/defaults/light-lavender.json +95 -0
- package/src/modes/theme/defaults/light-meadow.json +91 -0
- package/src/modes/theme/defaults/light-mint.json +95 -0
- package/src/modes/theme/defaults/light-monochrome.json +101 -0
- package/src/modes/theme/defaults/light-ocean.json +99 -0
- package/src/modes/theme/defaults/light-one.json +99 -0
- package/src/modes/theme/defaults/light-opal.json +91 -0
- package/src/modes/theme/defaults/light-orchard.json +91 -0
- package/src/modes/theme/defaults/light-paper.json +95 -0
- package/src/modes/theme/defaults/light-poimandres.json +142 -0
- package/src/modes/theme/defaults/light-prism.json +90 -0
- package/src/modes/theme/defaults/light-retro.json +98 -0
- package/src/modes/theme/defaults/light-sand.json +95 -0
- package/src/modes/theme/defaults/light-savanna.json +91 -0
- package/src/modes/theme/defaults/light-solarized.json +102 -0
- package/src/modes/theme/defaults/light-soleil.json +90 -0
- package/src/modes/theme/defaults/light-sunset.json +99 -0
- package/src/modes/theme/defaults/light-synthwave.json +98 -0
- package/src/modes/theme/defaults/light-tokyo-night.json +111 -0
- package/src/modes/theme/defaults/light-wetland.json +91 -0
- package/src/modes/theme/defaults/light-zenith.json +89 -0
- package/src/modes/theme/defaults/limestone.json +94 -0
- package/src/modes/theme/defaults/mahogany.json +97 -0
- package/src/modes/theme/defaults/marble.json +93 -0
- package/src/modes/theme/defaults/obsidian.json +91 -0
- package/src/modes/theme/defaults/onyx.json +91 -0
- package/src/modes/theme/defaults/pearl.json +93 -0
- package/src/modes/theme/defaults/porcelain.json +91 -0
- package/src/modes/theme/defaults/quartz.json +96 -0
- package/src/modes/theme/defaults/sandstone.json +95 -0
- package/src/modes/theme/defaults/titanium.json +90 -0
- package/src/modes/theme/light.json +93 -0
- package/src/modes/theme/mermaid-cache.ts +29 -0
- package/src/modes/theme/shimmer.ts +235 -0
- package/src/modes/theme/theme-schema.json +459 -0
- package/src/modes/theme/theme.ts +2676 -0
- package/src/modes/turn-budget.ts +31 -0
- package/src/modes/types.ts +359 -0
- package/src/modes/ultrathink.ts +41 -0
- package/src/modes/utils/context-usage.ts +339 -0
- package/src/modes/utils/copy-targets.ts +360 -0
- package/src/modes/utils/hotkeys-markdown.ts +61 -0
- package/src/modes/utils/keybinding-matchers.ts +51 -0
- package/src/modes/utils/tools-markdown.ts +27 -0
- package/src/modes/utils/ui-helpers.ts +801 -0
- package/src/modes/workflow.ts +42 -0
- package/src/plan-mode/approved-plan.ts +186 -0
- package/src/plan-mode/plan-handoff.ts +37 -0
- package/src/plan-mode/plan-protection.ts +31 -0
- package/src/plan-mode/state.ts +6 -0
- package/src/priority.json +41 -0
- package/src/prompts/agents/designer.md +66 -0
- package/src/prompts/agents/explore.md +58 -0
- package/src/prompts/agents/frontmatter.md +11 -0
- package/src/prompts/agents/init.md +33 -0
- package/src/prompts/agents/librarian.md +119 -0
- package/src/prompts/agents/oracle.md +55 -0
- package/src/prompts/agents/plan.md +48 -0
- package/src/prompts/agents/reviewer.md +140 -0
- package/src/prompts/agents/task.md +16 -0
- package/src/prompts/ci-green-request.md +36 -0
- package/src/prompts/dry-balance-bench.md +8 -0
- package/src/prompts/goals/goal-budget-limit.md +16 -0
- package/src/prompts/goals/goal-continuation.md +28 -0
- package/src/prompts/goals/goal-mode-active.md +23 -0
- package/src/prompts/memories/consolidation.md +30 -0
- package/src/prompts/memories/read-path.md +11 -0
- package/src/prompts/memories/stage_one_input.md +6 -0
- package/src/prompts/memories/stage_one_system.md +21 -0
- package/src/prompts/review-custom-request.md +22 -0
- package/src/prompts/review-headless-request.md +16 -0
- package/src/prompts/review-request.md +69 -0
- package/src/prompts/steering/user-interjection.md +10 -0
- package/src/prompts/system/agent-creation-architect.md +50 -0
- package/src/prompts/system/agent-creation-user.md +6 -0
- package/src/prompts/system/auto-continue.md +1 -0
- package/src/prompts/system/auto-thinking-difficulty-local.md +14 -0
- package/src/prompts/system/auto-thinking-difficulty.md +12 -0
- package/src/prompts/system/background-tan-dispatch.md +8 -0
- package/src/prompts/system/btw-user.md +8 -0
- package/src/prompts/system/commit-message-system.md +14 -0
- package/src/prompts/system/custom-system-prompt.md +64 -0
- package/src/prompts/system/eager-todo.md +13 -0
- package/src/prompts/system/empty-stop-retry.md +6 -0
- package/src/prompts/system/irc-incoming.md +7 -0
- package/src/prompts/system/manual-continue.md +7 -0
- package/src/prompts/system/memory-consolidation-system.md +8 -0
- package/src/prompts/system/memory-extraction-system.md +26 -0
- package/src/prompts/system/omfg-user.md +50 -0
- package/src/prompts/system/orchestrate-notice.md +40 -0
- package/src/prompts/system/plan-mode-active.md +109 -0
- package/src/prompts/system/plan-mode-approved.md +25 -0
- package/src/prompts/system/plan-mode-compact-instructions.md +16 -0
- package/src/prompts/system/plan-mode-reference.md +11 -0
- package/src/prompts/system/plan-mode-subagent.md +33 -0
- package/src/prompts/system/plan-mode-tool-decision-reminder.md +9 -0
- package/src/prompts/system/project-prompt.md +52 -0
- package/src/prompts/system/subagent-system-prompt.md +64 -0
- package/src/prompts/system/subagent-user-prompt.md +3 -0
- package/src/prompts/system/subagent-yield-reminder.md +12 -0
- package/src/prompts/system/system-prompt.md +258 -0
- package/src/prompts/system/tiny-title-system.md +8 -0
- package/src/prompts/system/title-system.md +16 -0
- package/src/prompts/system/ttsr-interrupt.md +7 -0
- package/src/prompts/system/ttsr-tool-reminder.md +5 -0
- package/src/prompts/system/ultrathink-notice.md +3 -0
- package/src/prompts/system/web-search.md +25 -0
- package/src/prompts/system/workflow-notice.md +70 -0
- package/src/prompts/tools/apply-patch.md +65 -0
- package/src/prompts/tools/ask.md +30 -0
- package/src/prompts/tools/ast-edit.md +39 -0
- package/src/prompts/tools/ast-grep.md +42 -0
- package/src/prompts/tools/async-result.md +8 -0
- package/src/prompts/tools/bash.md +46 -0
- package/src/prompts/tools/browser.md +73 -0
- package/src/prompts/tools/checkpoint.md +16 -0
- package/src/prompts/tools/debug.md +34 -0
- package/src/prompts/tools/eval.md +92 -0
- package/src/prompts/tools/find.md +36 -0
- package/src/prompts/tools/github.md +21 -0
- package/src/prompts/tools/goal.md +18 -0
- package/src/prompts/tools/image-gen.md +7 -0
- package/src/prompts/tools/inspect-image-system.md +20 -0
- package/src/prompts/tools/inspect-image.md +32 -0
- package/src/prompts/tools/irc.md +59 -0
- package/src/prompts/tools/job.md +19 -0
- package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
- package/src/prompts/tools/lsp.md +42 -0
- package/src/prompts/tools/memory-edit.md +8 -0
- package/src/prompts/tools/patch.md +70 -0
- package/src/prompts/tools/read.md +84 -0
- package/src/prompts/tools/recall.md +5 -0
- package/src/prompts/tools/reflect.md +5 -0
- package/src/prompts/tools/render-mermaid.md +9 -0
- package/src/prompts/tools/replace.md +30 -0
- package/src/prompts/tools/resolve.md +9 -0
- package/src/prompts/tools/retain.md +6 -0
- package/src/prompts/tools/rewind.md +13 -0
- package/src/prompts/tools/search-tool-bm25.md +32 -0
- package/src/prompts/tools/search.md +24 -0
- package/src/prompts/tools/ssh.md +31 -0
- package/src/prompts/tools/task-summary.md +17 -0
- package/src/prompts/tools/task.md +88 -0
- package/src/prompts/tools/todo.md +62 -0
- package/src/prompts/tools/web-search.md +10 -0
- package/src/prompts/tools/write.md +14 -0
- package/src/registry/agent-lifecycle.ts +218 -0
- package/src/registry/agent-registry.ts +151 -0
- package/src/sdk.ts +2558 -0
- package/src/secrets/index.ts +123 -0
- package/src/secrets/obfuscator.ts +298 -0
- package/src/secrets/regex.ts +21 -0
- package/src/session/agent-session.ts +10121 -0
- package/src/session/agent-storage.ts +455 -0
- package/src/session/artifacts.ts +135 -0
- package/src/session/auth-broker-config.ts +131 -0
- package/src/session/auth-storage.ts +29 -0
- package/src/session/blob-store.ts +255 -0
- package/src/session/client-bridge.ts +85 -0
- package/src/session/history-storage.ts +348 -0
- package/src/session/indexed-session-storage.ts +430 -0
- package/src/session/messages.ts +541 -0
- package/src/session/redis-session-storage.ts +170 -0
- package/src/session/session-dump-format.ts +209 -0
- package/src/session/session-history-format.ts +246 -0
- package/src/session/session-manager.ts +3676 -0
- package/src/session/session-storage.ts +529 -0
- package/src/session/shake-types.ts +43 -0
- package/src/session/sql-session-storage.ts +314 -0
- package/src/session/streaming-output.ts +1330 -0
- package/src/session/tool-choice-queue.ts +213 -0
- package/src/session/yield-queue.ts +173 -0
- package/src/slash-commands/acp-builtins.ts +70 -0
- package/src/slash-commands/builtin-registry.ts +1798 -0
- package/src/slash-commands/helpers/context-report.ts +39 -0
- package/src/slash-commands/helpers/format.ts +46 -0
- package/src/slash-commands/helpers/marketplace-manager.ts +25 -0
- package/src/slash-commands/helpers/mcp.ts +532 -0
- package/src/slash-commands/helpers/parse.ts +85 -0
- package/src/slash-commands/helpers/ssh.ts +195 -0
- package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
- package/src/slash-commands/helpers/todo.ts +279 -0
- package/src/slash-commands/helpers/usage-report.ts +95 -0
- package/src/slash-commands/marketplace-install-parser.ts +99 -0
- package/src/slash-commands/types.ts +135 -0
- package/src/ssh/config-writer.ts +183 -0
- package/src/ssh/connection-manager.ts +509 -0
- package/src/ssh/ssh-executor.ts +189 -0
- package/src/ssh/sshfs-mount.ts +140 -0
- package/src/ssh/utils.ts +8 -0
- package/src/stt/downloader.ts +71 -0
- package/src/stt/index.ts +3 -0
- package/src/stt/recorder.ts +351 -0
- package/src/stt/setup.ts +52 -0
- package/src/stt/stt-controller.ts +160 -0
- package/src/stt/transcribe.py +70 -0
- package/src/stt/transcriber.ts +91 -0
- package/src/stubs/natives/index.ts +814 -0
- package/src/stubs/natives/package.json +7 -0
- package/src/stubs/tui/index.ts +282 -0
- package/src/stubs/tui/package.json +7 -0
- package/src/system-prompt.ts +611 -0
- package/src/task/agents.ts +167 -0
- package/src/task/commands.ts +132 -0
- package/src/task/discovery.ts +122 -0
- package/src/task/executor.ts +2133 -0
- package/src/task/index.ts +1419 -0
- package/src/task/name-generator.ts +1577 -0
- package/src/task/omp-command.ts +26 -0
- package/src/task/output-manager.ts +88 -0
- package/src/task/parallel.ts +116 -0
- package/src/task/render.ts +1381 -0
- package/src/task/repair-args.ts +129 -0
- package/src/task/subprocess-tool-registry.ts +88 -0
- package/src/task/types.ts +336 -0
- package/src/task/worktree.ts +514 -0
- package/src/telemetry-export.ts +144 -0
- package/src/thinking.ts +167 -0
- package/src/tiny/compiled-runtime.ts +179 -0
- package/src/tiny/device.ts +111 -0
- package/src/tiny/dtype.ts +101 -0
- package/src/tiny/models.ts +242 -0
- package/src/tiny/text.ts +165 -0
- package/src/tiny/title-client.ts +543 -0
- package/src/tiny/title-protocol.ts +56 -0
- package/src/tiny/worker.ts +568 -0
- package/src/tool-discovery/mode.ts +24 -0
- package/src/tool-discovery/tool-index.ts +256 -0
- package/src/tools/approval.ts +189 -0
- package/src/tools/archive-reader.ts +721 -0
- package/src/tools/ask.ts +928 -0
- package/src/tools/ast-edit.ts +642 -0
- package/src/tools/ast-grep.ts +452 -0
- package/src/tools/auto-generated-guard.ts +322 -0
- package/src/tools/bash-command-fixup.ts +37 -0
- package/src/tools/bash-interactive.ts +408 -0
- package/src/tools/bash-interceptor.ts +67 -0
- package/src/tools/bash-pty-selection.ts +14 -0
- package/src/tools/bash-skill-urls.ts +248 -0
- package/src/tools/bash.ts +1386 -0
- package/src/tools/browser/attach.ts +175 -0
- package/src/tools/browser/launch.ts +660 -0
- package/src/tools/browser/readable.ts +112 -0
- package/src/tools/browser/registry.ts +197 -0
- package/src/tools/browser/render.ts +216 -0
- package/src/tools/browser/tab-protocol.ts +105 -0
- package/src/tools/browser/tab-supervisor.ts +628 -0
- package/src/tools/browser/tab-worker-entry.ts +21 -0
- package/src/tools/browser/tab-worker.ts +1226 -0
- package/src/tools/browser.ts +343 -0
- package/src/tools/checkpoint.ts +136 -0
- package/src/tools/conflict-detect.ts +718 -0
- package/src/tools/context.ts +39 -0
- package/src/tools/debug.ts +1067 -0
- package/src/tools/eval-backends.ts +27 -0
- package/src/tools/eval-render.ts +752 -0
- package/src/tools/eval.ts +577 -0
- package/src/tools/fetch.ts +1926 -0
- package/src/tools/file-recorder.ts +35 -0
- package/src/tools/find.ts +609 -0
- package/src/tools/fs-cache-invalidation.ts +28 -0
- package/src/tools/gh-cache-invalidation.ts +255 -0
- package/src/tools/gh-format.ts +12 -0
- package/src/tools/gh-renderer.ts +481 -0
- package/src/tools/gh.ts +3720 -0
- package/src/tools/github-cache.ts +637 -0
- package/src/tools/grouped-file-output.ts +210 -0
- package/src/tools/image-gen.ts +1517 -0
- package/src/tools/index.ts +599 -0
- package/src/tools/inspect-image-renderer.ts +132 -0
- package/src/tools/inspect-image.ts +174 -0
- package/src/tools/irc.ts +723 -0
- package/src/tools/job.ts +557 -0
- package/src/tools/json-tree.ts +243 -0
- package/src/tools/jtd-to-json-schema.ts +219 -0
- package/src/tools/jtd-to-typescript.ts +136 -0
- package/src/tools/jtd-utils.ts +102 -0
- package/src/tools/list-limit.ts +40 -0
- package/src/tools/match-line-format.ts +20 -0
- package/src/tools/memory-edit.ts +59 -0
- package/src/tools/memory-recall.ts +100 -0
- package/src/tools/memory-reflect.ts +88 -0
- package/src/tools/memory-render.ts +202 -0
- package/src/tools/memory-retain.ts +91 -0
- package/src/tools/output-meta.ts +754 -0
- package/src/tools/output-schema-validator.ts +132 -0
- package/src/tools/path-utils.ts +1054 -0
- package/src/tools/plan-mode-guard.ts +108 -0
- package/src/tools/puppeteer/00_stealth_tampering.txt +63 -0
- package/src/tools/puppeteer/01_stealth_activity.txt +20 -0
- package/src/tools/puppeteer/02_stealth_hairline.txt +11 -0
- package/src/tools/puppeteer/03_stealth_botd.txt +384 -0
- package/src/tools/puppeteer/04_stealth_iframe.txt +81 -0
- package/src/tools/puppeteer/05_stealth_webgl.txt +75 -0
- package/src/tools/puppeteer/06_stealth_screen.txt +72 -0
- package/src/tools/puppeteer/07_stealth_fonts.txt +97 -0
- package/src/tools/puppeteer/08_stealth_audio.txt +51 -0
- package/src/tools/puppeteer/09_stealth_locale.txt +46 -0
- package/src/tools/puppeteer/10_stealth_plugins.txt +206 -0
- package/src/tools/puppeteer/11_stealth_hardware.txt +8 -0
- package/src/tools/puppeteer/12_stealth_codecs.txt +40 -0
- package/src/tools/puppeteer/13_stealth_worker.txt +74 -0
- package/src/tools/read.ts +2929 -0
- package/src/tools/render-mermaid.ts +69 -0
- package/src/tools/render-utils.ts +838 -0
- package/src/tools/renderers.ts +77 -0
- package/src/tools/report-tool-issue.ts +534 -0
- package/src/tools/resolve.ts +276 -0
- package/src/tools/review.ts +253 -0
- package/src/tools/search-tool-bm25.ts +351 -0
- package/src/tools/search.ts +1580 -0
- package/src/tools/sqlite-reader.ts +828 -0
- package/src/tools/ssh.ts +349 -0
- package/src/tools/todo.ts +982 -0
- package/src/tools/tool-errors.ts +62 -0
- package/src/tools/tool-result.ts +94 -0
- package/src/tools/tool-timeouts.ts +30 -0
- package/src/tools/tts.ts +133 -0
- package/src/tools/write.ts +1217 -0
- package/src/tools/yield.ts +269 -0
- package/src/tui/code-cell.ts +216 -0
- package/src/tui/file-list.ts +55 -0
- package/src/tui/hyperlink.ts +175 -0
- package/src/tui/index.ts +12 -0
- package/src/tui/output-block.ts +240 -0
- package/src/tui/status-line.ts +54 -0
- package/src/tui/tree-list.ts +84 -0
- package/src/tui/types.ts +15 -0
- package/src/tui/utils.ts +103 -0
- package/src/utils/block-context.ts +312 -0
- package/src/utils/changelog.ts +132 -0
- package/src/utils/clipboard.ts +193 -0
- package/src/utils/command-args.ts +76 -0
- package/src/utils/commit-message-generator.ts +151 -0
- package/src/utils/edit-mode.ts +41 -0
- package/src/utils/enhanced-paste.ts +230 -0
- package/src/utils/event-bus.ts +33 -0
- package/src/utils/external-editor.ts +65 -0
- package/src/utils/file-display-mode.ts +45 -0
- package/src/utils/file-mentions.ts +281 -0
- package/src/utils/git.ts +1833 -0
- package/src/utils/image-loading.ts +132 -0
- package/src/utils/image-resize.ts +309 -0
- package/src/utils/jj.ts +248 -0
- package/src/utils/lang-from-path.ts +239 -0
- package/src/utils/markit.ts +89 -0
- package/src/utils/open.ts +55 -0
- package/src/utils/session-color.ts +68 -0
- package/src/utils/shell-snapshot.ts +187 -0
- package/src/utils/sixel.ts +69 -0
- package/src/utils/title-generator.ts +373 -0
- package/src/utils/tool-choice.ts +33 -0
- package/src/utils/tools-manager.ts +363 -0
- package/src/web/kagi.ts +305 -0
- package/src/web/parallel.ts +353 -0
- package/src/web/scrapers/artifacthub.ts +207 -0
- package/src/web/scrapers/arxiv.ts +83 -0
- package/src/web/scrapers/aur.ts +162 -0
- package/src/web/scrapers/biorxiv.ts +133 -0
- package/src/web/scrapers/bluesky.ts +262 -0
- package/src/web/scrapers/brew.ts +172 -0
- package/src/web/scrapers/cheatsh.ts +68 -0
- package/src/web/scrapers/chocolatey.ts +196 -0
- package/src/web/scrapers/choosealicense.ts +95 -0
- package/src/web/scrapers/cisa-kev.ts +87 -0
- package/src/web/scrapers/clojars.ts +154 -0
- package/src/web/scrapers/coingecko.ts +177 -0
- package/src/web/scrapers/crates-io.ts +97 -0
- package/src/web/scrapers/crossref.ts +136 -0
- package/src/web/scrapers/devto.ts +147 -0
- package/src/web/scrapers/discogs.ts +306 -0
- package/src/web/scrapers/discourse.ts +197 -0
- package/src/web/scrapers/dockerhub.ts +138 -0
- package/src/web/scrapers/docs-rs.ts +653 -0
- package/src/web/scrapers/fdroid.ts +134 -0
- package/src/web/scrapers/firefox-addons.ts +191 -0
- package/src/web/scrapers/flathub.ts +223 -0
- package/src/web/scrapers/github-gist.ts +58 -0
- package/src/web/scrapers/github.ts +704 -0
- package/src/web/scrapers/gitlab.ts +401 -0
- package/src/web/scrapers/go-pkg.ts +266 -0
- package/src/web/scrapers/hackage.ts +140 -0
- package/src/web/scrapers/hackernews.ts +189 -0
- package/src/web/scrapers/hex.ts +105 -0
- package/src/web/scrapers/huggingface.ts +321 -0
- package/src/web/scrapers/iacr.ts +89 -0
- package/src/web/scrapers/index.ts +252 -0
- package/src/web/scrapers/jetbrains-marketplace.ts +159 -0
- package/src/web/scrapers/lemmy.ts +203 -0
- package/src/web/scrapers/lobsters.ts +175 -0
- package/src/web/scrapers/mastodon.ts +292 -0
- package/src/web/scrapers/maven.ts +138 -0
- package/src/web/scrapers/mdn.ts +173 -0
- package/src/web/scrapers/metacpan.ts +222 -0
- package/src/web/scrapers/musicbrainz.ts +250 -0
- package/src/web/scrapers/npm.ts +98 -0
- package/src/web/scrapers/nuget.ts +183 -0
- package/src/web/scrapers/nvd.ts +222 -0
- package/src/web/scrapers/ollama.ts +239 -0
- package/src/web/scrapers/open-vsx.ts +106 -0
- package/src/web/scrapers/opencorporates.ts +292 -0
- package/src/web/scrapers/openlibrary.ts +336 -0
- package/src/web/scrapers/orcid.ts +286 -0
- package/src/web/scrapers/osv.ts +176 -0
- package/src/web/scrapers/packagist.ts +160 -0
- package/src/web/scrapers/pub-dev.ts +143 -0
- package/src/web/scrapers/pubmed.ts +211 -0
- package/src/web/scrapers/pypi.ts +112 -0
- package/src/web/scrapers/rawg.ts +110 -0
- package/src/web/scrapers/readthedocs.ts +120 -0
- package/src/web/scrapers/reddit.ts +95 -0
- package/src/web/scrapers/repology.ts +251 -0
- package/src/web/scrapers/rfc.ts +201 -0
- package/src/web/scrapers/rubygems.ts +103 -0
- package/src/web/scrapers/searchcode.ts +189 -0
- package/src/web/scrapers/sec-edgar.ts +261 -0
- package/src/web/scrapers/semantic-scholar.ts +171 -0
- package/src/web/scrapers/snapcraft.ts +187 -0
- package/src/web/scrapers/sourcegraph.ts +336 -0
- package/src/web/scrapers/spdx.ts +108 -0
- package/src/web/scrapers/spotify.ts +198 -0
- package/src/web/scrapers/stackoverflow.ts +120 -0
- package/src/web/scrapers/terraform.ts +277 -0
- package/src/web/scrapers/tldr.ts +47 -0
- package/src/web/scrapers/twitter.ts +94 -0
- package/src/web/scrapers/types.ts +397 -0
- package/src/web/scrapers/utils.ts +109 -0
- package/src/web/scrapers/vimeo.ts +133 -0
- package/src/web/scrapers/vscode-marketplace.ts +187 -0
- package/src/web/scrapers/w3c.ts +156 -0
- package/src/web/scrapers/wikidata.ts +344 -0
- package/src/web/scrapers/wikipedia.ts +84 -0
- package/src/web/scrapers/youtube.ts +325 -0
- package/src/web/search/index.ts +292 -0
- package/src/web/search/provider.ts +157 -0
- package/src/web/search/providers/anthropic.ts +318 -0
- package/src/web/search/providers/base.ts +89 -0
- package/src/web/search/providers/brave.ts +152 -0
- package/src/web/search/providers/codex.ts +591 -0
- package/src/web/search/providers/exa.ts +400 -0
- package/src/web/search/providers/gemini.ts +460 -0
- package/src/web/search/providers/jina.ts +111 -0
- package/src/web/search/providers/kagi.ts +86 -0
- package/src/web/search/providers/kimi.ts +196 -0
- package/src/web/search/providers/parallel.ts +225 -0
- package/src/web/search/providers/perplexity.ts +730 -0
- package/src/web/search/providers/searxng.ts +313 -0
- package/src/web/search/providers/synthetic.ts +114 -0
- package/src/web/search/providers/tavily.ts +176 -0
- package/src/web/search/providers/utils.ts +128 -0
- package/src/web/search/providers/zai.ts +333 -0
- package/src/web/search/render.ts +262 -0
- package/src/web/search/types.ts +482 -0
- package/src/web/search/utils.ts +17 -0
- package/src/workspace-tree.ts +286 -0
|
@@ -0,0 +1,606 @@
|
|
|
1
|
+
import type { ImageContent, Message, Model, TextContent } from "@oh-my-pi/pi-ai";
|
|
2
|
+
import type { Component, TUI } from './stubs/tui/index.ts';
|
|
3
|
+
import type { ModelRegistry } from "../../config/model-registry";
|
|
4
|
+
import type { EditToolDetails } from "../../edit";
|
|
5
|
+
import type { ExecOptions, ExecResult } from "../../exec/exec";
|
|
6
|
+
import type { Theme } from "../../modes/theme/theme";
|
|
7
|
+
import type { HookMessage } from "../../session/messages";
|
|
8
|
+
import type { ReadonlySessionManager, SessionManager } from "../../session/session-manager";
|
|
9
|
+
import type { BashToolDetails, FindToolDetails, ReadToolDetails, SearchToolDetails } from "../../tools";
|
|
10
|
+
import type {
|
|
11
|
+
AgentEndEvent,
|
|
12
|
+
AgentStartEvent,
|
|
13
|
+
AutoCompactionEndEvent,
|
|
14
|
+
AutoCompactionStartEvent,
|
|
15
|
+
AutoRetryEndEvent,
|
|
16
|
+
AutoRetryStartEvent,
|
|
17
|
+
ContextEvent,
|
|
18
|
+
SessionBeforeBranchEvent,
|
|
19
|
+
SessionBeforeBranchResult,
|
|
20
|
+
SessionBeforeCompactEvent,
|
|
21
|
+
SessionBeforeCompactResult,
|
|
22
|
+
SessionBeforeSwitchEvent,
|
|
23
|
+
SessionBeforeSwitchResult,
|
|
24
|
+
SessionBeforeTreeEvent,
|
|
25
|
+
SessionBeforeTreeResult,
|
|
26
|
+
SessionBranchEvent,
|
|
27
|
+
SessionCompactEvent,
|
|
28
|
+
SessionCompactingEvent,
|
|
29
|
+
SessionCompactingResult,
|
|
30
|
+
SessionEvent,
|
|
31
|
+
SessionShutdownEvent,
|
|
32
|
+
SessionStartEvent,
|
|
33
|
+
SessionSwitchEvent,
|
|
34
|
+
SessionTreeEvent,
|
|
35
|
+
TodoReminderEvent,
|
|
36
|
+
ToolCallEventResult,
|
|
37
|
+
ToolResultEventResult,
|
|
38
|
+
TtsrTriggeredEvent,
|
|
39
|
+
TurnEndEvent,
|
|
40
|
+
TurnStartEvent,
|
|
41
|
+
} from "../shared-events";
|
|
42
|
+
|
|
43
|
+
// Re-export for backward compatibility
|
|
44
|
+
export type { ExecOptions, ExecResult } from "../../exec/exec";
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* UI context for hooks to request interactive UI from the harness.
|
|
48
|
+
* Each mode (interactive, RPC, print) provides its own implementation.
|
|
49
|
+
*/
|
|
50
|
+
// fallow-ignore-next-line code-duplication
|
|
51
|
+
// Parallel to ExtensionUIContext: hooks expose a deliberately narrower UI
|
|
52
|
+
// surface — no terminal-input listener, no editor component override, no
|
|
53
|
+
// theme management — because hooks are invoked from inside the agent loop
|
|
54
|
+
// and must not be able to seize ownership of the editor.
|
|
55
|
+
export interface HookUIContext {
|
|
56
|
+
/**
|
|
57
|
+
* Show a selector and return the user's choice.
|
|
58
|
+
* @param title - Title to display
|
|
59
|
+
* @param options - Array of string options
|
|
60
|
+
* @returns Selected option string, or null if cancelled
|
|
61
|
+
*/
|
|
62
|
+
select(title: string, options: string[]): Promise<string | undefined>;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Show a confirmation dialog.
|
|
66
|
+
* @returns true if confirmed, false if cancelled
|
|
67
|
+
*/
|
|
68
|
+
confirm(title: string, message: string): Promise<boolean>;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Show a text input dialog.
|
|
72
|
+
* @returns User input, or undefined if cancelled
|
|
73
|
+
*/
|
|
74
|
+
input(title: string, placeholder?: string): Promise<string | undefined>;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Show a notification to the user.
|
|
78
|
+
*/
|
|
79
|
+
notify(message: string, type?: "info" | "warning" | "error"): void;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Set status text in the footer/status bar.
|
|
83
|
+
* Pass undefined as text to clear the status for this key.
|
|
84
|
+
* Text can include ANSI escape codes for styling.
|
|
85
|
+
* Note: Newlines, tabs, and carriage returns are replaced with spaces.
|
|
86
|
+
* The combined status line is truncated to terminal width.
|
|
87
|
+
* @param key - Unique key to identify this status (e.g., hook name)
|
|
88
|
+
* @param text - Status text to display, or undefined to clear
|
|
89
|
+
*/
|
|
90
|
+
setStatus(key: string, text: string | undefined): void;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Show a custom component with keyboard focus.
|
|
94
|
+
* The factory receives TUI, theme, and a done() callback to close the component.
|
|
95
|
+
* Can be async for fire-and-forget work (don't await the work, just start it).
|
|
96
|
+
*
|
|
97
|
+
* @param factory - Function that creates the component. Call done() when finished.
|
|
98
|
+
* @returns Promise that resolves with the value passed to done()
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* // Sync factory
|
|
102
|
+
* const result = await ctx.ui.custom((tui, theme, done) => {
|
|
103
|
+
* const component = new MyComponent(tui, theme);
|
|
104
|
+
* component.onFinish = (value) => done(value);
|
|
105
|
+
* return component;
|
|
106
|
+
* });
|
|
107
|
+
*
|
|
108
|
+
* // Async factory with fire-and-forget work
|
|
109
|
+
* const result = await ctx.ui.custom(async (tui, theme, done) => {
|
|
110
|
+
* const loader = new CancellableLoader(tui, theme.fg("accent"), theme.fg("muted"), "Working...");
|
|
111
|
+
* loader.onAbort = () => done(null);
|
|
112
|
+
* doWork(loader.signal).then(done); // Don't await - fire and forget
|
|
113
|
+
* return loader;
|
|
114
|
+
* });
|
|
115
|
+
*/
|
|
116
|
+
custom<T>(
|
|
117
|
+
factory: (
|
|
118
|
+
tui: TUI,
|
|
119
|
+
theme: Theme,
|
|
120
|
+
done: (result: T) => void,
|
|
121
|
+
) => (Component & { dispose?(): void }) | Promise<Component & { dispose?(): void }>,
|
|
122
|
+
): Promise<T>;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Set the text in the core input editor.
|
|
126
|
+
* Use this to pre-fill the input box with generated content (e.g., prompt templates, extracted questions).
|
|
127
|
+
* @param text - Text to set in the editor
|
|
128
|
+
*/
|
|
129
|
+
setEditorText(text: string): void;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Get the current text from the core input editor.
|
|
133
|
+
* @returns Current editor text
|
|
134
|
+
*/
|
|
135
|
+
getEditorText(): string;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Show a multi-line editor for text editing.
|
|
139
|
+
* Supports Ctrl+G to open external editor ($VISUAL or $EDITOR).
|
|
140
|
+
* @param title - Title describing what is being edited
|
|
141
|
+
* @param prefill - Optional initial text
|
|
142
|
+
* @param options - Optional dialog controls such as an abort signal
|
|
143
|
+
* @param editorOptions - Optional editor behavior; `promptStyle` makes Enter submit and Shift+Enter insert a newline
|
|
144
|
+
* @returns Edited text, or undefined if cancelled (Escape)
|
|
145
|
+
*/
|
|
146
|
+
editor(
|
|
147
|
+
title: string,
|
|
148
|
+
prefill?: string,
|
|
149
|
+
options?: { signal?: AbortSignal },
|
|
150
|
+
editorOptions?: { promptStyle?: boolean },
|
|
151
|
+
): Promise<string | undefined>;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Get the current theme for styling text with ANSI codes.
|
|
155
|
+
* Use theme.fg() and theme.bg() to style status text.
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* const theme = ctx.ui.theme;
|
|
159
|
+
* ctx.ui.setStatus("my-hook", theme.fg("success", theme.status.success) + " Ready");
|
|
160
|
+
*/
|
|
161
|
+
readonly theme: Theme;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Context passed to hook event handlers.
|
|
166
|
+
* For command handlers, see HookCommandContext which extends this with session control methods.
|
|
167
|
+
*/
|
|
168
|
+
// fallow-ignore-next-line code-duplication
|
|
169
|
+
// Parallel to ExtensionContext: hooks see a narrower runtime context (no
|
|
170
|
+
// model registry mutation, no system prompt access, no shutdown). The
|
|
171
|
+
// overlap in field names is intentional API symmetry; widening hooks to
|
|
172
|
+
// match extensions would let hooks call methods that deadlock the agent.
|
|
173
|
+
export interface HookContext {
|
|
174
|
+
/** UI methods for user interaction */
|
|
175
|
+
ui: HookUIContext;
|
|
176
|
+
/** Whether UI is available (false in print mode) */
|
|
177
|
+
hasUI: boolean;
|
|
178
|
+
/** Current working directory */
|
|
179
|
+
cwd: string;
|
|
180
|
+
/** Session manager (read-only) - use pi.sendMessage()/pi.appendEntry() for writes */
|
|
181
|
+
sessionManager: ReadonlySessionManager;
|
|
182
|
+
/** Model registry - use for API key resolution and model retrieval */
|
|
183
|
+
modelRegistry: ModelRegistry;
|
|
184
|
+
/** Current model (may be undefined if no model is selected yet) */
|
|
185
|
+
model: Model | undefined;
|
|
186
|
+
/** Whether the agent is idle (not streaming) */
|
|
187
|
+
isIdle(): boolean;
|
|
188
|
+
/** Abort the current agent operation (fire-and-forget, does not wait) */
|
|
189
|
+
abort(): void;
|
|
190
|
+
/** Whether there are queued messages waiting to be processed */
|
|
191
|
+
hasQueuedMessages(): boolean;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Extended context for slash command handlers.
|
|
196
|
+
* Includes session control methods that are only safe in user-initiated commands.
|
|
197
|
+
*
|
|
198
|
+
* These methods are not available in event handlers because they can cause
|
|
199
|
+
* deadlocks when called from within the agent loop (e.g., tool_call, context events).
|
|
200
|
+
*/
|
|
201
|
+
// fallow-ignore-next-line code-duplication
|
|
202
|
+
// Parallel to ExtensionCommandContext: hooks intentionally omit
|
|
203
|
+
// `switchSession`, `reload`, `compact`, and `getContextUsage` — those are
|
|
204
|
+
// safe only from extension command handlers, not from the hook execution
|
|
205
|
+
// context.
|
|
206
|
+
export interface HookCommandContext extends HookContext {
|
|
207
|
+
/** Wait for the agent to finish streaming */
|
|
208
|
+
waitForIdle(): Promise<void>;
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Start a new session, optionally with a setup callback to initialize it.
|
|
212
|
+
* The setup callback receives a writable SessionManager for the new session.
|
|
213
|
+
*
|
|
214
|
+
* @param options.parentSession - Path to parent session for lineage tracking
|
|
215
|
+
* @param options.setup - Async callback to initialize the new session (e.g., append messages)
|
|
216
|
+
* @returns Object with `cancelled: true` if a hook cancelled the new session
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* // Handoff: summarize current session and start fresh with context
|
|
220
|
+
* await ctx.newSession({
|
|
221
|
+
* parentSession: ctx.sessionManager.getSessionFile(),
|
|
222
|
+
* setup: async (sm) => {
|
|
223
|
+
* sm.appendMessage({ role: "user", content: [{ type: "text", text: summary }] });
|
|
224
|
+
* }
|
|
225
|
+
* });
|
|
226
|
+
*/
|
|
227
|
+
newSession(options?: {
|
|
228
|
+
parentSession?: string;
|
|
229
|
+
setup?: (sessionManager: SessionManager) => Promise<void>;
|
|
230
|
+
}): Promise<{ cancelled: boolean }>;
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Branch from a specific entry, creating a new session file.
|
|
234
|
+
*
|
|
235
|
+
* @param entryId - ID of the entry to branch from
|
|
236
|
+
* @returns Object with `cancelled: true` if a hook cancelled the branch
|
|
237
|
+
*/
|
|
238
|
+
branch(entryId: string): Promise<{ cancelled: boolean }>;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Navigate to a different point in the session tree (in-place).
|
|
242
|
+
*
|
|
243
|
+
* @param targetId - ID of the entry to navigate to
|
|
244
|
+
* @param options.summarize - Whether to summarize the abandoned branch
|
|
245
|
+
* @returns Object with `cancelled: true` if a hook cancelled the navigation
|
|
246
|
+
*/
|
|
247
|
+
navigateTree(targetId: string, options?: { summarize?: boolean }): Promise<{ cancelled: boolean }>;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// ============================================================================
|
|
251
|
+
// Session Events (shared with extensions subsystem)
|
|
252
|
+
// ============================================================================
|
|
253
|
+
|
|
254
|
+
export type {
|
|
255
|
+
ContextEvent,
|
|
256
|
+
SessionBeforeBranchEvent,
|
|
257
|
+
SessionBeforeCompactEvent,
|
|
258
|
+
SessionBeforeSwitchEvent,
|
|
259
|
+
SessionBeforeTreeEvent,
|
|
260
|
+
SessionBranchEvent,
|
|
261
|
+
SessionCompactEvent,
|
|
262
|
+
SessionCompactingEvent,
|
|
263
|
+
SessionEvent,
|
|
264
|
+
SessionShutdownEvent,
|
|
265
|
+
SessionStartEvent,
|
|
266
|
+
SessionSwitchEvent,
|
|
267
|
+
SessionTreeEvent,
|
|
268
|
+
TreePreparation,
|
|
269
|
+
} from "../shared-events";
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Event data for before_agent_start event.
|
|
273
|
+
* Fired after user submits a prompt but before the agent loop starts.
|
|
274
|
+
* Allows hooks to inject context that will be persisted and visible in TUI.
|
|
275
|
+
*/
|
|
276
|
+
export interface BeforeAgentStartEvent {
|
|
277
|
+
type: "before_agent_start";
|
|
278
|
+
/** The user's prompt text */
|
|
279
|
+
prompt: string;
|
|
280
|
+
/** Any images attached to the prompt */
|
|
281
|
+
images?: ImageContent[];
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export type {
|
|
285
|
+
AgentEndEvent,
|
|
286
|
+
AgentStartEvent,
|
|
287
|
+
AutoCompactionEndEvent,
|
|
288
|
+
AutoCompactionStartEvent,
|
|
289
|
+
AutoRetryEndEvent,
|
|
290
|
+
AutoRetryStartEvent,
|
|
291
|
+
TodoReminderEvent,
|
|
292
|
+
TtsrTriggeredEvent,
|
|
293
|
+
TurnEndEvent,
|
|
294
|
+
TurnStartEvent,
|
|
295
|
+
} from "../shared-events";
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Event data for tool_call event.
|
|
299
|
+
* Fired before a tool is executed. Hooks can block execution.
|
|
300
|
+
*/
|
|
301
|
+
export interface ToolCallEvent {
|
|
302
|
+
type: "tool_call";
|
|
303
|
+
/** Tool name (e.g., "bash", "edit", "write") */
|
|
304
|
+
toolName: string;
|
|
305
|
+
/** Tool call ID */
|
|
306
|
+
toolCallId: string;
|
|
307
|
+
/** Tool input parameters */
|
|
308
|
+
input: Record<string, unknown>;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Base interface for tool_result events.
|
|
313
|
+
*/
|
|
314
|
+
interface ToolResultEventBase {
|
|
315
|
+
type: "tool_result";
|
|
316
|
+
/** Tool call ID */
|
|
317
|
+
toolCallId: string;
|
|
318
|
+
/** Tool input parameters */
|
|
319
|
+
input: Record<string, unknown>;
|
|
320
|
+
/** Full content array (text and images) */
|
|
321
|
+
content: (TextContent | ImageContent)[];
|
|
322
|
+
/** Whether the tool execution was an error */
|
|
323
|
+
isError?: boolean;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/** Tool result event for bash tool */
|
|
327
|
+
export interface BashToolResultEvent extends ToolResultEventBase {
|
|
328
|
+
toolName: "bash";
|
|
329
|
+
details: BashToolDetails | undefined;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/** Tool result event for read tool */
|
|
333
|
+
export interface ReadToolResultEvent extends ToolResultEventBase {
|
|
334
|
+
toolName: "read";
|
|
335
|
+
details: ReadToolDetails | undefined;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/** Tool result event for edit tool */
|
|
339
|
+
export interface EditToolResultEvent extends ToolResultEventBase {
|
|
340
|
+
toolName: "edit";
|
|
341
|
+
details: EditToolDetails | undefined;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/** Tool result event for write tool */
|
|
345
|
+
export interface WriteToolResultEvent extends ToolResultEventBase {
|
|
346
|
+
toolName: "write";
|
|
347
|
+
details: undefined;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/** Tool result event for search tool */
|
|
351
|
+
export interface SearchToolResultEvent extends ToolResultEventBase {
|
|
352
|
+
toolName: "search";
|
|
353
|
+
details: SearchToolDetails | undefined;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/** Tool result event for find tool */
|
|
357
|
+
export interface FindToolResultEvent extends ToolResultEventBase {
|
|
358
|
+
toolName: "find";
|
|
359
|
+
details: FindToolDetails | undefined;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
/** Tool result event for custom/unknown tools */
|
|
363
|
+
export interface CustomToolResultEvent extends ToolResultEventBase {
|
|
364
|
+
toolName: string;
|
|
365
|
+
details: unknown;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Event data for tool_result event.
|
|
370
|
+
* Fired after a tool is executed. Hooks can modify the result.
|
|
371
|
+
* Use toolName to discriminate and get typed details.
|
|
372
|
+
*/
|
|
373
|
+
export type ToolResultEvent =
|
|
374
|
+
| BashToolResultEvent
|
|
375
|
+
| ReadToolResultEvent
|
|
376
|
+
| EditToolResultEvent
|
|
377
|
+
| WriteToolResultEvent
|
|
378
|
+
| SearchToolResultEvent
|
|
379
|
+
| FindToolResultEvent
|
|
380
|
+
| CustomToolResultEvent;
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Union of all hook event types.
|
|
384
|
+
*/
|
|
385
|
+
export type HookEvent =
|
|
386
|
+
| SessionEvent
|
|
387
|
+
| ContextEvent
|
|
388
|
+
| BeforeAgentStartEvent
|
|
389
|
+
| AgentStartEvent
|
|
390
|
+
| AgentEndEvent
|
|
391
|
+
| TurnStartEvent
|
|
392
|
+
| TurnEndEvent
|
|
393
|
+
| AutoCompactionStartEvent
|
|
394
|
+
| AutoCompactionEndEvent
|
|
395
|
+
| AutoRetryStartEvent
|
|
396
|
+
| AutoRetryEndEvent
|
|
397
|
+
| TtsrTriggeredEvent
|
|
398
|
+
| TodoReminderEvent
|
|
399
|
+
| ToolCallEvent
|
|
400
|
+
| ToolResultEvent;
|
|
401
|
+
|
|
402
|
+
// ============================================================================
|
|
403
|
+
// Event Results
|
|
404
|
+
// ============================================================================
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Return type for context event handlers.
|
|
408
|
+
* Allows hooks to modify messages before they're sent to the LLM.
|
|
409
|
+
*/
|
|
410
|
+
export interface ContextEventResult {
|
|
411
|
+
/** Modified messages to send instead of the original */
|
|
412
|
+
messages?: Message[];
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
export type { ToolCallEventResult, ToolResultEventResult } from "../shared-events";
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* Return type for before_agent_start event handlers.
|
|
419
|
+
* Allows hooks to inject context before the agent runs.
|
|
420
|
+
*/
|
|
421
|
+
export interface BeforeAgentStartEventResult {
|
|
422
|
+
/** Message to inject into context (persisted to session, visible in TUI) */
|
|
423
|
+
message?: Pick<HookMessage, "customType" | "content" | "display" | "details" | "attribution">;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
export type {
|
|
427
|
+
SessionBeforeBranchResult,
|
|
428
|
+
SessionBeforeCompactResult,
|
|
429
|
+
SessionBeforeSwitchResult,
|
|
430
|
+
SessionBeforeTreeResult,
|
|
431
|
+
SessionCompactingResult,
|
|
432
|
+
} from "../shared-events";
|
|
433
|
+
|
|
434
|
+
// ============================================================================
|
|
435
|
+
// Hook API
|
|
436
|
+
// ============================================================================
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Handler function type for each event.
|
|
440
|
+
* Handlers can return R, undefined, or void (bare return statements).
|
|
441
|
+
*/
|
|
442
|
+
// biome-ignore lint/suspicious/noConfusingVoidType: void allows bare return statements in handlers
|
|
443
|
+
export type HookHandler<E, R = undefined> = (event: E, ctx: HookContext) => Promise<R | void> | R | void;
|
|
444
|
+
|
|
445
|
+
export interface HookMessageRenderOptions {
|
|
446
|
+
/** Whether the view is expanded */
|
|
447
|
+
expanded: boolean;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* Renderer for hook messages.
|
|
452
|
+
* Hooks register these to provide custom TUI rendering for their message types.
|
|
453
|
+
*/
|
|
454
|
+
export type HookMessageRenderer<T = unknown> = (
|
|
455
|
+
message: HookMessage<T>,
|
|
456
|
+
options: HookMessageRenderOptions,
|
|
457
|
+
theme: Theme,
|
|
458
|
+
) => Component | undefined;
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* Command registration options.
|
|
462
|
+
*/
|
|
463
|
+
// fallow-ignore-next-line code-duplication
|
|
464
|
+
// Parallel to extensions' RegisteredCommand: hooks bind to
|
|
465
|
+
// HookCommandContext and have no argument-completion hook.
|
|
466
|
+
export interface RegisteredCommand {
|
|
467
|
+
name: string;
|
|
468
|
+
description?: string;
|
|
469
|
+
|
|
470
|
+
handler: (args: string, ctx: HookCommandContext) => Promise<void>;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* HookAPI passed to hook factory functions.
|
|
475
|
+
* Hooks use pi.on() to subscribe to events and pi.sendMessage() to inject messages.
|
|
476
|
+
*/
|
|
477
|
+
export interface HookAPI {
|
|
478
|
+
// Session events
|
|
479
|
+
on(event: "session_start", handler: HookHandler<SessionStartEvent>): void;
|
|
480
|
+
on(event: "session_before_switch", handler: HookHandler<SessionBeforeSwitchEvent, SessionBeforeSwitchResult>): void;
|
|
481
|
+
on(event: "session_switch", handler: HookHandler<SessionSwitchEvent>): void;
|
|
482
|
+
on(event: "session_before_branch", handler: HookHandler<SessionBeforeBranchEvent, SessionBeforeBranchResult>): void;
|
|
483
|
+
on(event: "session_branch", handler: HookHandler<SessionBranchEvent>): void;
|
|
484
|
+
on(
|
|
485
|
+
event: "session_before_compact",
|
|
486
|
+
handler: HookHandler<SessionBeforeCompactEvent, SessionBeforeCompactResult>,
|
|
487
|
+
): void;
|
|
488
|
+
on(event: "session.compacting", handler: HookHandler<SessionCompactingEvent, SessionCompactingResult>): void;
|
|
489
|
+
on(event: "session_compact", handler: HookHandler<SessionCompactEvent>): void;
|
|
490
|
+
on(event: "session_shutdown", handler: HookHandler<SessionShutdownEvent>): void;
|
|
491
|
+
on(event: "session_before_tree", handler: HookHandler<SessionBeforeTreeEvent, SessionBeforeTreeResult>): void;
|
|
492
|
+
on(event: "session_tree", handler: HookHandler<SessionTreeEvent>): void;
|
|
493
|
+
|
|
494
|
+
// Context and agent events
|
|
495
|
+
on(event: "context", handler: HookHandler<ContextEvent, ContextEventResult>): void;
|
|
496
|
+
on(event: "before_agent_start", handler: HookHandler<BeforeAgentStartEvent, BeforeAgentStartEventResult>): void;
|
|
497
|
+
on(event: "agent_start", handler: HookHandler<AgentStartEvent>): void;
|
|
498
|
+
on(event: "agent_end", handler: HookHandler<AgentEndEvent>): void;
|
|
499
|
+
on(event: "turn_start", handler: HookHandler<TurnStartEvent>): void;
|
|
500
|
+
on(event: "turn_end", handler: HookHandler<TurnEndEvent>): void;
|
|
501
|
+
on(event: "auto_compaction_start", handler: HookHandler<AutoCompactionStartEvent>): void;
|
|
502
|
+
on(event: "auto_compaction_end", handler: HookHandler<AutoCompactionEndEvent>): void;
|
|
503
|
+
on(event: "auto_retry_start", handler: HookHandler<AutoRetryStartEvent>): void;
|
|
504
|
+
on(event: "auto_retry_end", handler: HookHandler<AutoRetryEndEvent>): void;
|
|
505
|
+
on(event: "ttsr_triggered", handler: HookHandler<TtsrTriggeredEvent>): void;
|
|
506
|
+
on(event: "todo_reminder", handler: HookHandler<TodoReminderEvent>): void;
|
|
507
|
+
on(event: "tool_call", handler: HookHandler<ToolCallEvent, ToolCallEventResult>): void;
|
|
508
|
+
on(event: "tool_result", handler: HookHandler<ToolResultEvent, ToolResultEventResult>): void;
|
|
509
|
+
|
|
510
|
+
/**
|
|
511
|
+
* Send a custom message to the session. Creates a CustomMessageEntry that
|
|
512
|
+
* participates in LLM context and can be displayed in the TUI.
|
|
513
|
+
*
|
|
514
|
+
* Use this when you want the LLM to see the message content.
|
|
515
|
+
* For hook state that should NOT be sent to the LLM, use appendEntry() instead.
|
|
516
|
+
*
|
|
517
|
+
* @param message - The message to send
|
|
518
|
+
* @param message.customType - Identifier for your hook (used for filtering on reload)
|
|
519
|
+
* @param message.content - Message content (string or TextContent/ImageContent array)
|
|
520
|
+
* @param message.display - Whether to show in TUI (true = styled display, false = hidden)
|
|
521
|
+
* @param message.details - Optional hook-specific metadata (not sent to LLM)
|
|
522
|
+
* @param message.attribution - Who initiated the message for billing/attribution semantics ("user" | "agent")
|
|
523
|
+
* @param options.triggerTurn - If true and agent is idle, triggers a new LLM turn. Default: false.
|
|
524
|
+
* If agent is streaming, message is queued and triggerTurn is ignored.
|
|
525
|
+
* @param options.deliverAs - How to deliver the message: "steer" or "followUp".
|
|
526
|
+
*/
|
|
527
|
+
sendMessage<T = unknown>(
|
|
528
|
+
message: Pick<HookMessage<T>, "customType" | "content" | "display" | "details" | "attribution">,
|
|
529
|
+
options?: { triggerTurn?: boolean; deliverAs?: "steer" | "followUp" },
|
|
530
|
+
): void;
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Append a custom entry to the session for hook state persistence.
|
|
534
|
+
* Creates a CustomEntry that does NOT participate in LLM context.
|
|
535
|
+
*
|
|
536
|
+
* Use this to store hook-specific data that should persist across session reloads
|
|
537
|
+
* but should NOT be sent to the LLM. On reload, scan session entries for your
|
|
538
|
+
* customType to reconstruct hook state.
|
|
539
|
+
*
|
|
540
|
+
* For messages that SHOULD be sent to the LLM, use sendMessage() instead.
|
|
541
|
+
*
|
|
542
|
+
* @param customType - Identifier for your hook (used for filtering on reload)
|
|
543
|
+
* @param data - Hook-specific data to persist (must be JSON-serializable)
|
|
544
|
+
*
|
|
545
|
+
* @example
|
|
546
|
+
* // Store permission state
|
|
547
|
+
* pi.appendEntry("permissions", { level: "full", grantedAt: Date.now() });
|
|
548
|
+
*
|
|
549
|
+
* // On reload, reconstruct state from entries
|
|
550
|
+
* pi.on("session", async (event, ctx) => {
|
|
551
|
+
* if (event.reason === "start") {
|
|
552
|
+
* const entries = event.sessionManager.getEntries();
|
|
553
|
+
* const myEntries = entries.filter(e => e.type === "custom" && e.customType === "permissions");
|
|
554
|
+
* // Reconstruct state from myEntries...
|
|
555
|
+
* }
|
|
556
|
+
* });
|
|
557
|
+
*/
|
|
558
|
+
appendEntry<T = unknown>(customType: string, data?: T): void;
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Register a custom renderer for CustomMessageEntry with a specific customType.
|
|
562
|
+
* The renderer is called when rendering the entry in the TUI.
|
|
563
|
+
* Return nothing to use the default renderer.
|
|
564
|
+
*/
|
|
565
|
+
registerMessageRenderer<T = unknown>(customType: string, renderer: HookMessageRenderer<T>): void;
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Register a custom slash command.
|
|
569
|
+
* Handler receives HookCommandContext with session control methods.
|
|
570
|
+
*/
|
|
571
|
+
registerCommand(name: string, options: { description?: string; handler: RegisteredCommand["handler"] }): void;
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* Execute a shell command and return stdout/stderr/code.
|
|
575
|
+
* Supports timeout and abort signal.
|
|
576
|
+
*/
|
|
577
|
+
exec(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;
|
|
578
|
+
|
|
579
|
+
/** File logger for error/warning/debug messages */
|
|
580
|
+
logger: typeof import("@oh-my-pi/pi-utils").logger;
|
|
581
|
+
/** Injected zod-backed typebox shim (legacy/compat — prefer `zod`). */
|
|
582
|
+
typebox: typeof import("../typebox");
|
|
583
|
+
/** Injected zod module for Zod-authored hooks. */
|
|
584
|
+
zod: typeof import("zod/v4");
|
|
585
|
+
/** Injected pi-coding-agent exports */
|
|
586
|
+
pi: typeof import("../..");
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* Hook factory function type.
|
|
591
|
+
* Hooks export a default function that receives the HookAPI.
|
|
592
|
+
*/
|
|
593
|
+
export type HookFactory = (pi: HookAPI) => void;
|
|
594
|
+
|
|
595
|
+
// ============================================================================
|
|
596
|
+
// Errors
|
|
597
|
+
// ============================================================================
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Error emitted when a hook fails.
|
|
601
|
+
*/
|
|
602
|
+
export interface HookError {
|
|
603
|
+
hookPath: string;
|
|
604
|
+
event: string;
|
|
605
|
+
error: string;
|
|
606
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility shim for legacy extensions importing the package root of
|
|
3
|
+
* `@oh-my-pi/pi-ai` (or one of its aliased scopes like `@earendil-works/pi-ai`
|
|
4
|
+
* or `@mariozechner/pi-ai`).
|
|
5
|
+
*
|
|
6
|
+
* pi-ai 15.1.0 removed the historical TypeBox root exports (`Type`, plus the
|
|
7
|
+
* runtime-relevant half of the `Static`/`TSchema` pair) from the package
|
|
8
|
+
* entrypoint. Legacy extensions still author parameter schemas as
|
|
9
|
+
* `Type.Object({ ... })`, so this file is served by `legacy-pi-compat.ts` in
|
|
10
|
+
* place of the real pi-ai entrypoint whenever a legacy extension imports the
|
|
11
|
+
* bare package root. Subpath imports (`@oh-my-pi/pi-ai/oauth`, etc.)
|
|
12
|
+
* continue to resolve directly against the bundled pi-ai package.
|
|
13
|
+
*
|
|
14
|
+
* The `Type` runtime is borrowed from the Zod-backed TypeBox shim that
|
|
15
|
+
* already serves bare `@sinclair/typebox` imports for the same extension
|
|
16
|
+
* class, keeping the legacy-compat surface internally consistent.
|
|
17
|
+
*
|
|
18
|
+
* Type-level `Static` and `TSchema` continue to come from pi-ai's own
|
|
19
|
+
* `types.ts` via the `export *` below — pi-ai still exports both as types,
|
|
20
|
+
* only the runtime `Type` builder was removed.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
export * from "@oh-my-pi/pi-ai";
|
|
24
|
+
export { Type } from "./typebox";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility shim for legacy extensions importing the package root of
|
|
3
|
+
* `@oh-my-pi/pi-coding-agent` (or one of its aliased scopes like
|
|
4
|
+
* `@earendil-works/pi-coding-agent` or `@mariozechner/pi-coding-agent`).
|
|
5
|
+
*
|
|
6
|
+
* The coding-agent package's own barrel (`./src/index.ts`) cannot be listed
|
|
7
|
+
* as a `bun --compile` extra entrypoint alongside the CLI entry without
|
|
8
|
+
* silently breaking the main binary's startup (see issue #1474 follow-up).
|
|
9
|
+
* Routing legacy plugin imports through this sibling shim sidesteps that
|
|
10
|
+
* conflict: bun bundles a distinct entry whose path differs from the CLI
|
|
11
|
+
* entry, while still re-exporting the canonical surface so plugins observe
|
|
12
|
+
* the same module identity as a direct `@oh-my-pi/pi-coding-agent` import.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
export * from "../index";
|