@phi-code-admin/phi-code 0.74.3 → 0.75.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 +1186 -4
- package/README.md +478 -379
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +9 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -0
- package/dist/bun/register-bedrock.js +4 -0
- package/dist/bun/register-bedrock.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +13 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +32 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/cli/args.d.ts +12 -7
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +87 -45
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +4 -0
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +7 -1
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +2 -1
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -5
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +24 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +226 -30
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +117 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +300 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +86 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +117 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +63 -82
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +674 -628
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/api-key-store.d.ts +87 -0
- package/dist/core/api-key-store.d.ts.map +1 -0
- package/dist/core/api-key-store.js +168 -0
- package/dist/core/api-key-store.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +12 -5
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +34 -8
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts +0 -15
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +28 -129
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +3 -2
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +4 -4
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +32 -27
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/config-watcher.d.ts +47 -0
- package/dist/core/config-watcher.d.ts.map +1 -0
- package/dist/core/config-watcher.js +135 -0
- package/dist/core/config-watcher.js.map +1 -0
- package/dist/core/default-models.json +80 -0
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +7 -3
- package/dist/core/exec.js.map +1 -1
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/dist/core/export-html/ansi-to-html.js +1 -1
- package/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/dist/core/export-html/index.d.ts +7 -4
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +15 -13
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.css +112 -17
- package/dist/core/export-html/template.html +1 -0
- package/dist/core/export-html/template.js +312 -64
- package/dist/core/export-html/tool-renderer.d.ts +9 -10
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js +61 -16
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/index.d.ts +5 -4
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +2 -2
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +0 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +98 -18
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +27 -14
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +299 -115
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +200 -44
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js +10 -0
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts +4 -11
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js +7 -87
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +22 -2
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +225 -49
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/index.d.ts +5 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/keybindings.d.ts +348 -50
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +276 -132
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-registry.d.ts +41 -5
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +316 -136
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +6 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +70 -37
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/output-guard.d.ts +6 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +59 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +49 -7
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +655 -122
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +12 -10
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +37 -38
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/provider-display-names.d.ts +2 -0
- package/dist/core/provider-display-names.d.ts.map +1 -0
- package/dist/core/provider-display-names.js +33 -0
- package/dist/core/provider-display-names.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +6 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +75 -8
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader.d.ts +18 -8
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +217 -123
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts +25 -8
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +84 -37
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +38 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-manager.d.ts +11 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +42 -27
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +34 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +113 -13
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +13 -11
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +59 -19
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts +2 -3
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +9 -6
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +3 -3
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +16 -55
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetry.d.ts +3 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +9 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/timings.d.ts +1 -0
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +6 -0
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/bash.d.ts +27 -14
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +301 -208
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +23 -1
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +154 -59
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts +22 -12
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +243 -65
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +37 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +10 -14
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +202 -110
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +14 -22
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +100 -35
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +27 -60
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +96 -45
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +8 -11
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +66 -15
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +50 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +178 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -1
- package/dist/core/tools/path-utils.js +1 -1
- package/dist/core/tools/path-utils.js.map +1 -1
- package/dist/core/tools/read.d.ts +9 -13
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +175 -52
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +21 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +49 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +34 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/core/tools/write.d.ts +8 -11
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +167 -32
- package/dist/core/tools/write.js.map +1 -1
- package/dist/index.d.ts +12 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -10
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +5 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +326 -404
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +2 -2
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +24 -4
- package/dist/migrations.js.map +1 -1
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js +10 -6
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +5 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +32 -3
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +0 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +31 -12
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +7 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +5 -3
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +5 -3
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +49 -16
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js +5 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +3 -3
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +14 -7
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +6 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js +8 -6
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/diff.d.ts.map +1 -1
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js +1 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.js +40 -0
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +16 -10
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +13 -7
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +18 -11
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +7 -2
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +8 -36
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +23 -48
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +5 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +35 -14
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +41 -22
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +18 -6
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +104 -31
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +5 -12
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +61 -42
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +2 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +109 -73
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +9 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +84 -4
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +6 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +5 -3
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +7 -1
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +6 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +20 -34
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +158 -636
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +21 -2
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +224 -52
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts +2 -2
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +20 -16
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +1 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +8 -6
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +67 -39
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +1556 -680
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/dark.json +1 -1
- package/dist/modes/interactive/theme/light.json +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +3 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +101 -72
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts +2 -2
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +107 -77
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +49 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +8 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +22 -16
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts +2 -2
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +184 -94
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +14 -4
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts +4 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +460 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/changelog.js.map +1 -1
- package/dist/utils/child-process.d.ts +12 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +86 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +94 -11
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts +1 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.d.ts +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +96 -46
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +158 -0
- package/dist/utils/exif-orientation.js.map +1 -0
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/image-convert.d.ts.map +1 -1
- package/dist/utils/image-convert.js +5 -1
- package/dist/utils/image-convert.js.map +1 -1
- package/dist/utils/image-resize.d.ts +5 -5
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js +51 -95
- package/dist/utils/image-resize.js.map +1 -1
- package/dist/utils/mime.d.ts.map +1 -1
- package/dist/utils/mime.js.map +1 -1
- package/dist/utils/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +50 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts.map +1 -1
- package/dist/utils/photon.js.map +1 -1
- package/dist/utils/pi-user-agent.d.ts +2 -0
- package/dist/utils/pi-user-agent.d.ts.map +1 -0
- package/dist/utils/pi-user-agent.js +5 -0
- package/dist/utils/pi-user-agent.js.map +1 -0
- package/dist/utils/shell.d.ts +10 -6
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +29 -25
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/sleep.d.ts.map +1 -1
- package/dist/utils/sleep.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +11 -6
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +14 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +77 -0
- package/dist/utils/version-check.js.map +1 -0
- package/docs/compaction.md +394 -0
- package/docs/custom-provider.md +646 -0
- package/docs/development.md +71 -0
- package/docs/docs.json +148 -0
- package/docs/extensions.md +2596 -0
- package/docs/images/doom-extension.png +0 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +70 -0
- package/docs/json.md +82 -0
- package/docs/keybindings.md +197 -0
- package/docs/models.md +474 -0
- package/docs/packages.md +223 -0
- package/docs/prompt-templates.md +88 -0
- package/docs/providers.md +243 -0
- package/docs/quickstart.md +142 -0
- package/docs/rpc.md +1407 -0
- package/docs/sdk.md +1149 -0
- package/docs/session-format.md +412 -0
- package/docs/sessions.md +137 -0
- package/docs/settings.md +279 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +232 -0
- package/docs/terminal-setup.md +106 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +295 -0
- package/docs/tmux.md +61 -0
- package/docs/tui.md +918 -0
- package/docs/usage.md +277 -0
- package/docs/windows.md +17 -0
- package/examples/README.md +25 -0
- package/examples/extensions/README.md +208 -0
- package/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/border-status-editor.ts +150 -0
- package/examples/extensions/built-in-tool-renderer.ts +249 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +72 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +127 -0
- package/examples/extensions/custom-footer.ts +64 -0
- package/examples/extensions/custom-header.ts +73 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/examples/extensions/custom-provider-anthropic/package.json +19 -0
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/examples/extensions/dirty-repo-guard.ts +56 -0
- package/examples/extensions/doom-overlay/README.md +46 -0
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -0
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +132 -0
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
- package/examples/extensions/doom-overlay/index.ts +74 -0
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +15 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/event-bus.ts +43 -0
- package/examples/extensions/file-trigger.ts +41 -0
- package/examples/extensions/git-checkpoint.ts +53 -0
- package/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/examples/extensions/handoff.ts +191 -0
- package/examples/extensions/hello.ts +26 -0
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/inline-bash.ts +94 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +196 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +426 -0
- package/examples/extensions/modal-editor.ts +85 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +55 -0
- package/examples/extensions/overlay-qa-tests.ts +1348 -0
- package/examples/extensions/overlay-test.ts +150 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +65 -0
- package/examples/extensions/plan-mode/index.ts +340 -0
- package/examples/extensions/plan-mode/utils.ts +168 -0
- package/examples/extensions/preset.ts +430 -0
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +30 -0
- package/examples/extensions/provider-payload.ts +18 -0
- package/examples/extensions/qna.ts +122 -0
- package/examples/extensions/question.ts +264 -0
- package/examples/extensions/questionnaire.ts +427 -0
- package/examples/extensions/rainbow-editor.ts +88 -0
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/rpc-demo.ts +118 -0
- package/examples/extensions/sandbox/index.ts +321 -0
- package/examples/extensions/sandbox/package-lock.json +92 -0
- package/examples/extensions/sandbox/package.json +19 -0
- package/examples/extensions/send-user-message.ts +97 -0
- package/examples/extensions/session-name.ts +27 -0
- package/examples/extensions/shutdown-command.ts +63 -0
- package/examples/extensions/snake.ts +343 -0
- package/examples/extensions/space-invaders.ts +560 -0
- package/examples/extensions/ssh.ts +220 -0
- package/examples/extensions/status-line.ts +32 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +172 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +126 -0
- package/examples/extensions/subagent/index.ts +987 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/summarize.ts +206 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/tic-tac-toe.ts +1008 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +297 -0
- package/examples/extensions/tool-override.ts +144 -0
- package/examples/extensions/tools.ts +141 -0
- package/examples/extensions/trigger-compact.ts +50 -0
- package/examples/extensions/truncated-tool.ts +195 -0
- package/examples/extensions/widget-placement.ts +9 -0
- package/examples/extensions/with-deps/index.ts +32 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/working-indicator.ts +123 -0
- package/examples/extensions/working-message-test.ts +25 -0
- package/examples/rpc-extension-ui.ts +632 -0
- package/examples/sdk/01-minimal.ts +22 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +62 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +44 -0
- package/examples/sdk/06-extensions.ts +90 -0
- package/examples/sdk/07-context-files.ts +42 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +48 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +48 -0
- package/examples/sdk/12-full-control.ts +73 -0
- package/examples/sdk/13-session-runtime.ts +67 -0
- package/examples/sdk/README.md +147 -0
- package/extensions/phi/init.ts +15 -1
- package/extensions/phi/keys.ts +186 -0
- package/extensions/phi/providers/alibaba.ts +126 -0
- package/extensions/phi/providers/opencode-go.ts +204 -0
- package/extensions/phi/setup.ts +692 -0
- package/extensions/phi/smart-router.ts +8 -0
- package/package.json +17 -12
- package/scripts/copy-assets.sh +0 -0
- package/scripts/migrate-sessions.sh +0 -0
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
* - Register commands, keyboard shortcuts, and CLI flags
|
|
8
8
|
* - Interact with the user via UI primitives
|
|
9
9
|
*/
|
|
10
|
-
import type { AgentMessage, AgentToolResult, AgentToolUpdateCallback, ThinkingLevel } from "phi-code-agent";
|
|
10
|
+
import type { AgentMessage, AgentToolResult, AgentToolUpdateCallback, ThinkingLevel, ToolExecutionMode } from "phi-code-agent";
|
|
11
11
|
import type { Api, AssistantMessageEvent, AssistantMessageEventStream, Context, ImageContent, Model, OAuthCredentials, OAuthLoginCallbacks, SimpleStreamOptions, TextContent, ToolResultMessage } from "phi-code-ai";
|
|
12
|
-
import type { AutocompleteItem, Component, EditorComponent, EditorTheme, KeyId, OverlayHandle, OverlayOptions, TUI } from "phi-code-tui";
|
|
13
|
-
import type { Static, TSchema } from "
|
|
12
|
+
import type { AutocompleteItem, AutocompleteProvider, Component, EditorComponent, EditorTheme, KeyId, OverlayHandle, OverlayOptions, TUI } from "phi-code-tui";
|
|
13
|
+
import type { Static, TSchema } from "typebox";
|
|
14
14
|
import type { Theme } from "../../modes/interactive/theme/theme.js";
|
|
15
15
|
import type { BashResult } from "../bash-executor.js";
|
|
16
16
|
import type { CompactionPreparation, CompactionResult } from "../compaction/index.js";
|
|
@@ -22,12 +22,15 @@ import type { CustomMessage } from "../messages.js";
|
|
|
22
22
|
import type { ModelRegistry } from "../model-registry.js";
|
|
23
23
|
import type { BranchSummaryEntry, CompactionEntry, ReadonlySessionManager, SessionEntry, SessionManager } from "../session-manager.js";
|
|
24
24
|
import type { SlashCommandInfo } from "../slash-commands.js";
|
|
25
|
+
import type { SourceInfo } from "../source-info.js";
|
|
26
|
+
import type { BuildSystemPromptOptions } from "../system-prompt.js";
|
|
25
27
|
import type { BashOperations } from "../tools/bash.js";
|
|
26
28
|
import type { EditToolDetails } from "../tools/edit.js";
|
|
27
29
|
import type { BashToolDetails, BashToolInput, EditToolInput, FindToolDetails, FindToolInput, GrepToolDetails, GrepToolInput, LsToolDetails, LsToolInput, ReadToolDetails, ReadToolInput, WriteToolInput } from "../tools/index.js";
|
|
28
30
|
export type { ExecOptions, ExecResult } from "../exec.js";
|
|
29
|
-
export type {
|
|
30
|
-
export type {
|
|
31
|
+
export type { BuildSystemPromptOptions } from "../system-prompt.js";
|
|
32
|
+
export type { AgentToolResult, AgentToolUpdateCallback, ToolExecutionMode };
|
|
33
|
+
export type { AppKeybinding, KeybindingsManager } from "../keybindings.js";
|
|
31
34
|
/** Options for extension UI dialogs. */
|
|
32
35
|
export interface ExtensionUIDialogOptions {
|
|
33
36
|
/** AbortSignal to programmatically dismiss the dialog. */
|
|
@@ -47,6 +50,16 @@ export type TerminalInputHandler = (data: string) => {
|
|
|
47
50
|
consume?: boolean;
|
|
48
51
|
data?: string;
|
|
49
52
|
} | undefined;
|
|
53
|
+
/** Working indicator configuration for the interactive streaming loader. */
|
|
54
|
+
export interface WorkingIndicatorOptions {
|
|
55
|
+
/** Animation frames. Use an empty array to hide the indicator entirely. Custom frames are rendered verbatim. */
|
|
56
|
+
frames?: string[];
|
|
57
|
+
/** Frame interval in milliseconds for animated indicators. */
|
|
58
|
+
intervalMs?: number;
|
|
59
|
+
}
|
|
60
|
+
/** Wrap the current autocomplete provider with additional behavior. */
|
|
61
|
+
export type AutocompleteProviderFactory = (current: AutocompleteProvider) => AutocompleteProvider;
|
|
62
|
+
export type EditorFactory = (tui: TUI, theme: EditorTheme, keybindings: KeybindingsManager) => EditorComponent;
|
|
50
63
|
/**
|
|
51
64
|
* UI context for extensions to request interactive UI.
|
|
52
65
|
* Each mode (interactive, RPC, print) provides its own implementation.
|
|
@@ -66,6 +79,19 @@ export interface ExtensionUIContext {
|
|
|
66
79
|
setStatus(key: string, text: string | undefined): void;
|
|
67
80
|
/** Set the working/loading message shown during streaming. Call with no argument to restore default. */
|
|
68
81
|
setWorkingMessage(message?: string): void;
|
|
82
|
+
/** Show or hide the built-in interactive working loader row during streaming. */
|
|
83
|
+
setWorkingVisible(visible: boolean): void;
|
|
84
|
+
/**
|
|
85
|
+
* Configure the interactive working indicator shown during streaming.
|
|
86
|
+
*
|
|
87
|
+
* - Omit the argument to restore the default animated spinner.
|
|
88
|
+
* - Use `frames: ["●"]` for a static indicator.
|
|
89
|
+
* - Use `frames: []` to hide the indicator entirely.
|
|
90
|
+
* - Custom frames are rendered as provided, so extensions must add their own colors.
|
|
91
|
+
*/
|
|
92
|
+
setWorkingIndicator(options?: WorkingIndicatorOptions): void;
|
|
93
|
+
/** Set the label shown for hidden thinking blocks. Call with no argument to restore default. */
|
|
94
|
+
setHiddenThinkingLabel(label?: string): void;
|
|
69
95
|
/** Set a widget to display above or below the editor. Accepts string array or component factory. */
|
|
70
96
|
setWidget(key: string, content: string[] | undefined, options?: ExtensionWidgetOptions): void;
|
|
71
97
|
setWidget(key: string, content: ((tui: TUI, theme: Theme) => Component & {
|
|
@@ -106,6 +132,8 @@ export interface ExtensionUIContext {
|
|
|
106
132
|
getEditorText(): string;
|
|
107
133
|
/** Show a multi-line editor for text editing. */
|
|
108
134
|
editor(title: string, prefill?: string): Promise<string | undefined>;
|
|
135
|
+
/** Stack additional autocomplete behavior on top of the built-in provider. */
|
|
136
|
+
addAutocompleteProvider(factory: AutocompleteProviderFactory): void;
|
|
109
137
|
/**
|
|
110
138
|
* Set a custom editor component via factory function.
|
|
111
139
|
* Pass undefined to restore the default editor.
|
|
@@ -115,12 +143,12 @@ export interface ExtensionUIContext {
|
|
|
115
143
|
* - `keybindings`: KeybindingsManager for app-level keybindings
|
|
116
144
|
*
|
|
117
145
|
* For full app keybinding support (escape, ctrl+d, model switching, etc.),
|
|
118
|
-
* extend `CustomEditor` from
|
|
146
|
+
* extend `CustomEditor` from `@phi-code-admin/phi-code` and call
|
|
119
147
|
* `super.handleInput(data)` for keys you don't handle.
|
|
120
148
|
*
|
|
121
149
|
* @example
|
|
122
150
|
* ```ts
|
|
123
|
-
* import { CustomEditor } from "phi-code";
|
|
151
|
+
* import { CustomEditor } from "@phi-code-admin/phi-code";
|
|
124
152
|
*
|
|
125
153
|
* class VimEditor extends CustomEditor {
|
|
126
154
|
* private mode: "normal" | "insert" = "insert";
|
|
@@ -139,7 +167,9 @@ export interface ExtensionUIContext {
|
|
|
139
167
|
* );
|
|
140
168
|
* ```
|
|
141
169
|
*/
|
|
142
|
-
setEditorComponent(factory:
|
|
170
|
+
setEditorComponent(factory: EditorFactory | undefined): void;
|
|
171
|
+
/** Get the currently configured custom editor factory, or undefined when using the default editor. */
|
|
172
|
+
getEditorComponent(): EditorFactory | undefined;
|
|
143
173
|
/** Get the current theme for styling. */
|
|
144
174
|
readonly theme: Theme;
|
|
145
175
|
/** Get all available themes with their names and file paths. */
|
|
@@ -189,6 +219,8 @@ export interface ExtensionContext {
|
|
|
189
219
|
model: Model<any> | undefined;
|
|
190
220
|
/** Whether the agent is idle (not streaming) */
|
|
191
221
|
isIdle(): boolean;
|
|
222
|
+
/** The current abort signal, or undefined when the agent is not streaming. */
|
|
223
|
+
signal: AbortSignal | undefined;
|
|
192
224
|
/** Abort the current agent operation */
|
|
193
225
|
abort(): void;
|
|
194
226
|
/** Whether there are queued messages waiting */
|
|
@@ -213,11 +245,15 @@ export interface ExtensionCommandContext extends ExtensionContext {
|
|
|
213
245
|
newSession(options?: {
|
|
214
246
|
parentSession?: string;
|
|
215
247
|
setup?: (sessionManager: SessionManager) => Promise<void>;
|
|
248
|
+
withSession?: (ctx: ReplacedSessionContext) => Promise<void>;
|
|
216
249
|
}): Promise<{
|
|
217
250
|
cancelled: boolean;
|
|
218
251
|
}>;
|
|
219
252
|
/** Fork from a specific entry, creating a new session file. */
|
|
220
|
-
fork(entryId: string
|
|
253
|
+
fork(entryId: string, options?: {
|
|
254
|
+
position?: "before" | "at";
|
|
255
|
+
withSession?: (ctx: ReplacedSessionContext) => Promise<void>;
|
|
256
|
+
}): Promise<{
|
|
221
257
|
cancelled: boolean;
|
|
222
258
|
}>;
|
|
223
259
|
/** Navigate to a different point in the session tree. */
|
|
@@ -230,12 +266,28 @@ export interface ExtensionCommandContext extends ExtensionContext {
|
|
|
230
266
|
cancelled: boolean;
|
|
231
267
|
}>;
|
|
232
268
|
/** Switch to a different session file. */
|
|
233
|
-
switchSession(sessionPath: string
|
|
269
|
+
switchSession(sessionPath: string, options?: {
|
|
270
|
+
withSession?: (ctx: ReplacedSessionContext) => Promise<void>;
|
|
271
|
+
}): Promise<{
|
|
234
272
|
cancelled: boolean;
|
|
235
273
|
}>;
|
|
236
274
|
/** Reload extensions, skills, prompts, and themes. */
|
|
237
275
|
reload(): Promise<void>;
|
|
238
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Fresh command-capable context bound to the replacement session after a session switch.
|
|
279
|
+
*
|
|
280
|
+
* This is passed to `withSession()` callbacks on `newSession()`, `fork()`, and `switchSession()`.
|
|
281
|
+
*/
|
|
282
|
+
export interface ReplacedSessionContext extends ExtensionCommandContext {
|
|
283
|
+
sendMessage<T = unknown>(message: Pick<CustomMessage<T>, "customType" | "content" | "display" | "details">, options?: {
|
|
284
|
+
triggerTurn?: boolean;
|
|
285
|
+
deliverAs?: "steer" | "followUp" | "nextTurn";
|
|
286
|
+
}): Promise<void>;
|
|
287
|
+
sendUserMessage(content: string | (TextContent | ImageContent)[], options?: {
|
|
288
|
+
deliverAs?: "steer" | "followUp";
|
|
289
|
+
}): Promise<void>;
|
|
290
|
+
}
|
|
239
291
|
/** Rendering options for tool results */
|
|
240
292
|
export interface ToolRenderResultOptions {
|
|
241
293
|
/** Whether the result view is expanded */
|
|
@@ -243,29 +295,77 @@ export interface ToolRenderResultOptions {
|
|
|
243
295
|
/** Whether this is a partial/streaming result */
|
|
244
296
|
isPartial: boolean;
|
|
245
297
|
}
|
|
298
|
+
/** Context passed to tool renderers. */
|
|
299
|
+
export interface ToolRenderContext<TState = any, TArgs = any> {
|
|
300
|
+
/** Current tool call arguments. Shared across call/result renders for the same tool call. */
|
|
301
|
+
args: TArgs;
|
|
302
|
+
/** Unique id for this tool execution. Stable across call/result renders for the same tool call. */
|
|
303
|
+
toolCallId: string;
|
|
304
|
+
/** Invalidate just this tool execution component for redraw. */
|
|
305
|
+
invalidate: () => void;
|
|
306
|
+
/** Previously returned component for this render slot, if any. */
|
|
307
|
+
lastComponent: Component | undefined;
|
|
308
|
+
/** Shared renderer state for this tool row. Initialized by tool-execution.ts. */
|
|
309
|
+
state: TState;
|
|
310
|
+
/** Working directory for this tool execution. */
|
|
311
|
+
cwd: string;
|
|
312
|
+
/** Whether the tool execution has started. */
|
|
313
|
+
executionStarted: boolean;
|
|
314
|
+
/** Whether the tool call arguments are complete. */
|
|
315
|
+
argsComplete: boolean;
|
|
316
|
+
/** Whether the tool result is partial/streaming. */
|
|
317
|
+
isPartial: boolean;
|
|
318
|
+
/** Whether the result view is expanded. */
|
|
319
|
+
expanded: boolean;
|
|
320
|
+
/** Whether inline images are currently shown in the TUI. */
|
|
321
|
+
showImages: boolean;
|
|
322
|
+
/** Whether the current result is an error. */
|
|
323
|
+
isError: boolean;
|
|
324
|
+
}
|
|
246
325
|
/**
|
|
247
326
|
* Tool definition for registerTool().
|
|
248
327
|
*/
|
|
249
|
-
export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = unknown> {
|
|
328
|
+
export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = unknown, TState = any> {
|
|
250
329
|
/** Tool name (used in LLM tool calls) */
|
|
251
330
|
name: string;
|
|
252
331
|
/** Human-readable label for UI */
|
|
253
332
|
label: string;
|
|
254
333
|
/** Description for LLM */
|
|
255
334
|
description: string;
|
|
256
|
-
/** Optional one-line snippet for the Available tools section in the default system prompt.
|
|
335
|
+
/** Optional one-line snippet for the Available tools section in the default system prompt. Custom tools are omitted from that section when this is not provided. */
|
|
257
336
|
promptSnippet?: string;
|
|
258
337
|
/** Optional guideline bullets appended to the default system prompt Guidelines section when this tool is active. */
|
|
259
338
|
promptGuidelines?: string[];
|
|
260
339
|
/** Parameter schema (TypeBox) */
|
|
261
340
|
parameters: TParams;
|
|
341
|
+
/** Controls whether ToolExecutionComponent renders the standard colored shell or the tool renders its own framing. */
|
|
342
|
+
renderShell?: "default" | "self";
|
|
343
|
+
/** Optional compatibility shim to prepare raw tool call arguments before schema validation. Must return an object conforming to TParams. */
|
|
344
|
+
prepareArguments?: (args: unknown) => Static<TParams>;
|
|
345
|
+
/**
|
|
346
|
+
* Per-tool execution mode override.
|
|
347
|
+
* - "sequential": this tool must execute one at a time with other tool calls.
|
|
348
|
+
* - "parallel": this tool can execute concurrently with other tool calls.
|
|
349
|
+
*
|
|
350
|
+
* If omitted, the default execution mode applies.
|
|
351
|
+
*/
|
|
352
|
+
executionMode?: ToolExecutionMode;
|
|
262
353
|
/** Execute the tool. */
|
|
263
354
|
execute(toolCallId: string, params: Static<TParams>, signal: AbortSignal | undefined, onUpdate: AgentToolUpdateCallback<TDetails> | undefined, ctx: ExtensionContext): Promise<AgentToolResult<TDetails>>;
|
|
264
355
|
/** Custom rendering for tool call display */
|
|
265
|
-
renderCall?: (args: Static<TParams>, theme: Theme) => Component
|
|
356
|
+
renderCall?: (args: Static<TParams>, theme: Theme, context: ToolRenderContext<TState, Static<TParams>>) => Component;
|
|
266
357
|
/** Custom rendering for tool result display */
|
|
267
|
-
renderResult?: (result: AgentToolResult<TDetails>, options: ToolRenderResultOptions, theme: Theme) => Component
|
|
358
|
+
renderResult?: (result: AgentToolResult<TDetails>, options: ToolRenderResultOptions, theme: Theme, context: ToolRenderContext<TState, Static<TParams>>) => Component;
|
|
268
359
|
}
|
|
360
|
+
type AnyToolDefinition = ToolDefinition<any, any, any>;
|
|
361
|
+
/**
|
|
362
|
+
* Preserve parameter inference for standalone tool definitions.
|
|
363
|
+
*
|
|
364
|
+
* Use this when assigning a tool to a variable or passing it through arrays such
|
|
365
|
+
* as `customTools`, where contextual typing would otherwise widen params to
|
|
366
|
+
* `unknown`.
|
|
367
|
+
*/
|
|
368
|
+
export declare function defineTool<TParams extends TSchema, TDetails = unknown, TState = any>(tool: ToolDefinition<TParams, TDetails, TState>): ToolDefinition<TParams, TDetails, TState> & AnyToolDefinition;
|
|
269
369
|
/** Fired after session_start to allow extensions to provide additional resource paths. */
|
|
270
370
|
export interface ResourcesDiscoverEvent {
|
|
271
371
|
type: "resources_discover";
|
|
@@ -278,9 +378,13 @@ export interface ResourcesDiscoverResult {
|
|
|
278
378
|
promptPaths?: string[];
|
|
279
379
|
themePaths?: string[];
|
|
280
380
|
}
|
|
281
|
-
/** Fired
|
|
381
|
+
/** Fired when a session is started, loaded, or reloaded */
|
|
282
382
|
export interface SessionStartEvent {
|
|
283
383
|
type: "session_start";
|
|
384
|
+
/** Why this session start happened. */
|
|
385
|
+
reason: "startup" | "reload" | "new" | "resume" | "fork";
|
|
386
|
+
/** Previously active session file. Present for "new", "resume", and "fork". */
|
|
387
|
+
previousSessionFile?: string;
|
|
284
388
|
}
|
|
285
389
|
/** Fired before switching to another session (can be cancelled) */
|
|
286
390
|
export interface SessionBeforeSwitchEvent {
|
|
@@ -288,21 +392,11 @@ export interface SessionBeforeSwitchEvent {
|
|
|
288
392
|
reason: "new" | "resume";
|
|
289
393
|
targetSessionFile?: string;
|
|
290
394
|
}
|
|
291
|
-
/** Fired after switching to another session */
|
|
292
|
-
export interface SessionSwitchEvent {
|
|
293
|
-
type: "session_switch";
|
|
294
|
-
reason: "new" | "resume";
|
|
295
|
-
previousSessionFile: string | undefined;
|
|
296
|
-
}
|
|
297
395
|
/** Fired before forking a session (can be cancelled) */
|
|
298
396
|
export interface SessionBeforeForkEvent {
|
|
299
397
|
type: "session_before_fork";
|
|
300
398
|
entryId: string;
|
|
301
|
-
|
|
302
|
-
/** Fired after forking a session */
|
|
303
|
-
export interface SessionForkEvent {
|
|
304
|
-
type: "session_fork";
|
|
305
|
-
previousSessionFile: string | undefined;
|
|
399
|
+
position: "before" | "at";
|
|
306
400
|
}
|
|
307
401
|
/** Fired before context compaction (can be cancelled or customized) */
|
|
308
402
|
export interface SessionBeforeCompactEvent {
|
|
@@ -318,9 +412,12 @@ export interface SessionCompactEvent {
|
|
|
318
412
|
compactionEntry: CompactionEntry;
|
|
319
413
|
fromExtension: boolean;
|
|
320
414
|
}
|
|
321
|
-
/** Fired
|
|
415
|
+
/** Fired before an extension runtime is torn down due to quit, reload, or session replacement. */
|
|
322
416
|
export interface SessionShutdownEvent {
|
|
323
417
|
type: "session_shutdown";
|
|
418
|
+
reason: "quit" | "reload" | "new" | "resume" | "fork";
|
|
419
|
+
/** Destination session file when shutting down due to session replacement. */
|
|
420
|
+
targetSessionFile?: string;
|
|
324
421
|
}
|
|
325
422
|
/** Preparation data for tree navigation */
|
|
326
423
|
export interface TreePreparation {
|
|
@@ -350,18 +447,34 @@ export interface SessionTreeEvent {
|
|
|
350
447
|
summaryEntry?: BranchSummaryEntry;
|
|
351
448
|
fromExtension?: boolean;
|
|
352
449
|
}
|
|
353
|
-
export type SessionEvent = SessionStartEvent | SessionBeforeSwitchEvent |
|
|
450
|
+
export type SessionEvent = SessionStartEvent | SessionBeforeSwitchEvent | SessionBeforeForkEvent | SessionBeforeCompactEvent | SessionCompactEvent | SessionShutdownEvent | SessionBeforeTreeEvent | SessionTreeEvent;
|
|
354
451
|
/** Fired before each LLM call. Can modify messages. */
|
|
355
452
|
export interface ContextEvent {
|
|
356
453
|
type: "context";
|
|
357
454
|
messages: AgentMessage[];
|
|
358
455
|
}
|
|
456
|
+
/** Fired before a provider request is sent. Can replace the payload. */
|
|
457
|
+
export interface BeforeProviderRequestEvent {
|
|
458
|
+
type: "before_provider_request";
|
|
459
|
+
payload: unknown;
|
|
460
|
+
}
|
|
461
|
+
/** Fired after a provider response is received and before the response stream is consumed. */
|
|
462
|
+
export interface AfterProviderResponseEvent {
|
|
463
|
+
type: "after_provider_response";
|
|
464
|
+
status: number;
|
|
465
|
+
headers: Record<string, string>;
|
|
466
|
+
}
|
|
359
467
|
/** Fired after user submits prompt but before agent loop. */
|
|
360
468
|
export interface BeforeAgentStartEvent {
|
|
361
469
|
type: "before_agent_start";
|
|
470
|
+
/** The raw user prompt text (after expansion). */
|
|
362
471
|
prompt: string;
|
|
472
|
+
/** Images attached to the user prompt, if any. */
|
|
363
473
|
images?: ImageContent[];
|
|
474
|
+
/** The fully assembled system prompt string. */
|
|
364
475
|
systemPrompt: string;
|
|
476
|
+
/** Structured options used to build the system prompt. Extensions can inspect this to understand what Pi loaded without re-discovering resources. */
|
|
477
|
+
systemPromptOptions: BuildSystemPromptOptions;
|
|
365
478
|
}
|
|
366
479
|
/** Fired when an agent loop starts */
|
|
367
480
|
export interface AgentStartEvent {
|
|
@@ -432,6 +545,12 @@ export interface ModelSelectEvent {
|
|
|
432
545
|
previousModel: Model<any> | undefined;
|
|
433
546
|
source: ModelSelectSource;
|
|
434
547
|
}
|
|
548
|
+
/** Fired when a new thinking level is selected */
|
|
549
|
+
export interface ThinkingLevelSelectEvent {
|
|
550
|
+
type: "thinking_level_select";
|
|
551
|
+
level: ThinkingLevel;
|
|
552
|
+
previousLevel: ThinkingLevel;
|
|
553
|
+
}
|
|
435
554
|
/** Fired when user executes a bash command via ! or !! prefix */
|
|
436
555
|
export interface UserBashEvent {
|
|
437
556
|
type: "user_bash";
|
|
@@ -500,7 +619,12 @@ export interface CustomToolCallEvent extends ToolCallEventBase {
|
|
|
500
619
|
toolName: string;
|
|
501
620
|
input: Record<string, unknown>;
|
|
502
621
|
}
|
|
503
|
-
/**
|
|
622
|
+
/**
|
|
623
|
+
* Fired before a tool executes. Can block.
|
|
624
|
+
*
|
|
625
|
+
* `event.input` is mutable. Mutate it in place to patch tool arguments before execution.
|
|
626
|
+
* Later `tool_call` handlers see earlier mutations. No re-validation is performed after mutation.
|
|
627
|
+
*/
|
|
504
628
|
export type ToolCallEvent = BashToolCallEvent | ReadToolCallEvent | EditToolCallEvent | WriteToolCallEvent | GrepToolCallEvent | FindToolCallEvent | LsToolCallEvent | CustomToolCallEvent;
|
|
505
629
|
interface ToolResultEventBase {
|
|
506
630
|
type: "tool_result";
|
|
@@ -582,11 +706,13 @@ export declare function isToolCallEventType<TName extends string, TInput extends
|
|
|
582
706
|
input: TInput;
|
|
583
707
|
};
|
|
584
708
|
/** Union of all event types */
|
|
585
|
-
export type ExtensionEvent = ResourcesDiscoverEvent | SessionEvent | ContextEvent | BeforeAgentStartEvent | AgentStartEvent | AgentEndEvent | TurnStartEvent | TurnEndEvent | MessageStartEvent | MessageUpdateEvent | MessageEndEvent | ToolExecutionStartEvent | ToolExecutionUpdateEvent | ToolExecutionEndEvent | ModelSelectEvent | UserBashEvent | InputEvent | ToolCallEvent | ToolResultEvent;
|
|
709
|
+
export type ExtensionEvent = ResourcesDiscoverEvent | SessionEvent | ContextEvent | BeforeProviderRequestEvent | AfterProviderResponseEvent | BeforeAgentStartEvent | AgentStartEvent | AgentEndEvent | TurnStartEvent | TurnEndEvent | MessageStartEvent | MessageUpdateEvent | MessageEndEvent | ToolExecutionStartEvent | ToolExecutionUpdateEvent | ToolExecutionEndEvent | ModelSelectEvent | ThinkingLevelSelectEvent | UserBashEvent | InputEvent | ToolCallEvent | ToolResultEvent;
|
|
586
710
|
export interface ContextEventResult {
|
|
587
711
|
messages?: AgentMessage[];
|
|
588
712
|
}
|
|
713
|
+
export type BeforeProviderRequestEventResult = unknown;
|
|
589
714
|
export interface ToolCallEventResult {
|
|
715
|
+
/** Block tool execution. To modify arguments, mutate `event.input` in place instead. */
|
|
590
716
|
block?: boolean;
|
|
591
717
|
reason?: string;
|
|
592
718
|
}
|
|
@@ -602,6 +728,10 @@ export interface ToolResultEventResult {
|
|
|
602
728
|
details?: unknown;
|
|
603
729
|
isError?: boolean;
|
|
604
730
|
}
|
|
731
|
+
export interface MessageEndEventResult {
|
|
732
|
+
/** Replace the finalized message. The replacement must keep the original message role. */
|
|
733
|
+
message?: AgentMessage;
|
|
734
|
+
}
|
|
605
735
|
export interface BeforeAgentStartEventResult {
|
|
606
736
|
message?: Pick<CustomMessage, "customType" | "content" | "display" | "details">;
|
|
607
737
|
/** Replace the system prompt for this turn. If multiple extensions return this, they are chained. */
|
|
@@ -637,10 +767,14 @@ export interface MessageRenderOptions {
|
|
|
637
767
|
export type MessageRenderer<T = unknown> = (message: CustomMessage<T>, options: MessageRenderOptions, theme: Theme) => Component | undefined;
|
|
638
768
|
export interface RegisteredCommand {
|
|
639
769
|
name: string;
|
|
770
|
+
sourceInfo: SourceInfo;
|
|
640
771
|
description?: string;
|
|
641
|
-
getArgumentCompletions?: (argumentPrefix: string) => AutocompleteItem[] | null
|
|
772
|
+
getArgumentCompletions?: (argumentPrefix: string) => AutocompleteItem[] | null | Promise<AutocompleteItem[] | null>;
|
|
642
773
|
handler: (args: string, ctx: ExtensionCommandContext) => Promise<void>;
|
|
643
774
|
}
|
|
775
|
+
export interface ResolvedCommand extends RegisteredCommand {
|
|
776
|
+
invocationName: string;
|
|
777
|
+
}
|
|
644
778
|
/** Handler function type for events */
|
|
645
779
|
export type ExtensionHandler<E, R = undefined> = (event: E, ctx: ExtensionContext) => Promise<R | void> | R | void;
|
|
646
780
|
/**
|
|
@@ -650,15 +784,15 @@ export interface ExtensionAPI {
|
|
|
650
784
|
on(event: "resources_discover", handler: ExtensionHandler<ResourcesDiscoverEvent, ResourcesDiscoverResult>): void;
|
|
651
785
|
on(event: "session_start", handler: ExtensionHandler<SessionStartEvent>): void;
|
|
652
786
|
on(event: "session_before_switch", handler: ExtensionHandler<SessionBeforeSwitchEvent, SessionBeforeSwitchResult>): void;
|
|
653
|
-
on(event: "session_switch", handler: ExtensionHandler<SessionSwitchEvent>): void;
|
|
654
787
|
on(event: "session_before_fork", handler: ExtensionHandler<SessionBeforeForkEvent, SessionBeforeForkResult>): void;
|
|
655
|
-
on(event: "session_fork", handler: ExtensionHandler<SessionForkEvent>): void;
|
|
656
788
|
on(event: "session_before_compact", handler: ExtensionHandler<SessionBeforeCompactEvent, SessionBeforeCompactResult>): void;
|
|
657
789
|
on(event: "session_compact", handler: ExtensionHandler<SessionCompactEvent>): void;
|
|
658
790
|
on(event: "session_shutdown", handler: ExtensionHandler<SessionShutdownEvent>): void;
|
|
659
791
|
on(event: "session_before_tree", handler: ExtensionHandler<SessionBeforeTreeEvent, SessionBeforeTreeResult>): void;
|
|
660
792
|
on(event: "session_tree", handler: ExtensionHandler<SessionTreeEvent>): void;
|
|
661
793
|
on(event: "context", handler: ExtensionHandler<ContextEvent, ContextEventResult>): void;
|
|
794
|
+
on(event: "before_provider_request", handler: ExtensionHandler<BeforeProviderRequestEvent, BeforeProviderRequestEventResult>): void;
|
|
795
|
+
on(event: "after_provider_response", handler: ExtensionHandler<AfterProviderResponseEvent>): void;
|
|
662
796
|
on(event: "before_agent_start", handler: ExtensionHandler<BeforeAgentStartEvent, BeforeAgentStartEventResult>): void;
|
|
663
797
|
on(event: "agent_start", handler: ExtensionHandler<AgentStartEvent>): void;
|
|
664
798
|
on(event: "agent_end", handler: ExtensionHandler<AgentEndEvent>): void;
|
|
@@ -666,19 +800,20 @@ export interface ExtensionAPI {
|
|
|
666
800
|
on(event: "turn_end", handler: ExtensionHandler<TurnEndEvent>): void;
|
|
667
801
|
on(event: "message_start", handler: ExtensionHandler<MessageStartEvent>): void;
|
|
668
802
|
on(event: "message_update", handler: ExtensionHandler<MessageUpdateEvent>): void;
|
|
669
|
-
on(event: "message_end", handler: ExtensionHandler<MessageEndEvent>): void;
|
|
803
|
+
on(event: "message_end", handler: ExtensionHandler<MessageEndEvent, MessageEndEventResult>): void;
|
|
670
804
|
on(event: "tool_execution_start", handler: ExtensionHandler<ToolExecutionStartEvent>): void;
|
|
671
805
|
on(event: "tool_execution_update", handler: ExtensionHandler<ToolExecutionUpdateEvent>): void;
|
|
672
806
|
on(event: "tool_execution_end", handler: ExtensionHandler<ToolExecutionEndEvent>): void;
|
|
673
807
|
on(event: "model_select", handler: ExtensionHandler<ModelSelectEvent>): void;
|
|
808
|
+
on(event: "thinking_level_select", handler: ExtensionHandler<ThinkingLevelSelectEvent>): void;
|
|
674
809
|
on(event: "tool_call", handler: ExtensionHandler<ToolCallEvent, ToolCallEventResult>): void;
|
|
675
810
|
on(event: "tool_result", handler: ExtensionHandler<ToolResultEvent, ToolResultEventResult>): void;
|
|
676
811
|
on(event: "user_bash", handler: ExtensionHandler<UserBashEvent, UserBashEventResult>): void;
|
|
677
812
|
on(event: "input", handler: ExtensionHandler<InputEvent, InputEventResult>): void;
|
|
678
813
|
/** Register a tool that the LLM can call. */
|
|
679
|
-
registerTool<TParams extends TSchema = TSchema, TDetails = unknown>(tool: ToolDefinition<TParams, TDetails>): void;
|
|
814
|
+
registerTool<TParams extends TSchema = TSchema, TDetails = unknown, TState = any>(tool: ToolDefinition<TParams, TDetails, TState>): void;
|
|
680
815
|
/** Register a custom command. */
|
|
681
|
-
registerCommand(name: string, options: Omit<RegisteredCommand, "name">): void;
|
|
816
|
+
registerCommand(name: string, options: Omit<RegisteredCommand, "name" | "sourceInfo">): void;
|
|
682
817
|
/** Register a keyboard shortcut. */
|
|
683
818
|
registerShortcut(shortcut: KeyId, options: {
|
|
684
819
|
description?: string;
|
|
@@ -718,7 +853,7 @@ export interface ExtensionAPI {
|
|
|
718
853
|
exec(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;
|
|
719
854
|
/** Get the list of currently active tool names. */
|
|
720
855
|
getActiveTools(): string[];
|
|
721
|
-
/** Get all configured tools with
|
|
856
|
+
/** Get all configured tools with parameter schema and source metadata. */
|
|
722
857
|
getAllTools(): ToolInfo[];
|
|
723
858
|
/** Set the active tools by name. */
|
|
724
859
|
setActiveTools(toolNames: string[]): void;
|
|
@@ -802,6 +937,8 @@ export interface ExtensionAPI {
|
|
|
802
937
|
}
|
|
803
938
|
/** Configuration for registering a provider via pi.registerProvider(). */
|
|
804
939
|
export interface ProviderConfig {
|
|
940
|
+
/** Display name for the provider in UI. */
|
|
941
|
+
name?: string;
|
|
805
942
|
/** Base URL for the API endpoint. Required when defining models. */
|
|
806
943
|
baseUrl?: string;
|
|
807
944
|
/** API key or environment variable name. Required when defining models (unless oauth provided). */
|
|
@@ -838,8 +975,12 @@ export interface ProviderModelConfig {
|
|
|
838
975
|
name: string;
|
|
839
976
|
/** API type override for this model. */
|
|
840
977
|
api?: Api;
|
|
978
|
+
/** API endpoint URL override for this model. */
|
|
979
|
+
baseUrl?: string;
|
|
841
980
|
/** Whether the model supports extended thinking. */
|
|
842
981
|
reasoning: boolean;
|
|
982
|
+
/** Maps pi thinking levels to provider/model-specific values; null marks a level unsupported. */
|
|
983
|
+
thinkingLevelMap?: Model<Api>["thinkingLevelMap"];
|
|
843
984
|
/** Supported input types. */
|
|
844
985
|
input: ("text" | "image")[];
|
|
845
986
|
/** Cost per token (for tracking, can be 0). */
|
|
@@ -862,7 +1003,7 @@ export interface ProviderModelConfig {
|
|
|
862
1003
|
export type ExtensionFactory = (pi: ExtensionAPI) => void | Promise<void>;
|
|
863
1004
|
export interface RegisteredTool {
|
|
864
1005
|
definition: ToolDefinition;
|
|
865
|
-
|
|
1006
|
+
sourceInfo: SourceInfo;
|
|
866
1007
|
}
|
|
867
1008
|
export interface ExtensionFlag {
|
|
868
1009
|
name: string;
|
|
@@ -889,8 +1030,10 @@ export type AppendEntryHandler = <T = unknown>(customType: string, data?: T) =>
|
|
|
889
1030
|
export type SetSessionNameHandler = (name: string) => void;
|
|
890
1031
|
export type GetSessionNameHandler = () => string | undefined;
|
|
891
1032
|
export type GetActiveToolsHandler = () => string[];
|
|
892
|
-
/** Tool info with name, description,
|
|
893
|
-
export type ToolInfo = Pick<ToolDefinition, "name" | "description" | "parameters"
|
|
1033
|
+
/** Tool info with name, description, parameter schema, and source metadata */
|
|
1034
|
+
export type ToolInfo = Pick<ToolDefinition, "name" | "description" | "parameters"> & {
|
|
1035
|
+
sourceInfo: SourceInfo;
|
|
1036
|
+
};
|
|
894
1037
|
export type GetAllToolsHandler = () => ToolInfo[];
|
|
895
1038
|
export type GetCommandsHandler = () => SlashCommandInfo[];
|
|
896
1039
|
export type SetActiveToolsHandler = (toolNames: string[]) => void;
|
|
@@ -909,15 +1052,20 @@ export interface ExtensionRuntimeState {
|
|
|
909
1052
|
pendingProviderRegistrations: Array<{
|
|
910
1053
|
name: string;
|
|
911
1054
|
config: ProviderConfig;
|
|
1055
|
+
extensionPath: string;
|
|
912
1056
|
}>;
|
|
1057
|
+
/** Throws when this extension instance is stale after runtime replacement. */
|
|
1058
|
+
assertActive: () => void;
|
|
1059
|
+
/** Marks this extension instance as stale after runtime replacement or reload. */
|
|
1060
|
+
invalidate: (message?: string) => void;
|
|
913
1061
|
/**
|
|
914
1062
|
* Register or unregister a provider.
|
|
915
1063
|
*
|
|
916
1064
|
* Before bindCore(): queues registrations / removes from queue.
|
|
917
1065
|
* After bindCore(): calls ModelRegistry directly for immediate effect.
|
|
918
1066
|
*/
|
|
919
|
-
registerProvider: (name: string, config: ProviderConfig) => void;
|
|
920
|
-
unregisterProvider: (name: string) => void;
|
|
1067
|
+
registerProvider: (name: string, config: ProviderConfig, extensionPath?: string) => void;
|
|
1068
|
+
unregisterProvider: (name: string, extensionPath?: string) => void;
|
|
921
1069
|
}
|
|
922
1070
|
/**
|
|
923
1071
|
* Action implementations for pi.* API methods.
|
|
@@ -946,6 +1094,7 @@ export interface ExtensionActions {
|
|
|
946
1094
|
export interface ExtensionContextActions {
|
|
947
1095
|
getModel: () => Model<any> | undefined;
|
|
948
1096
|
isIdle: () => boolean;
|
|
1097
|
+
getSignal: () => AbortSignal | undefined;
|
|
949
1098
|
abort: () => void;
|
|
950
1099
|
hasPendingMessages: () => boolean;
|
|
951
1100
|
shutdown: () => void;
|
|
@@ -962,10 +1111,14 @@ export interface ExtensionCommandContextActions {
|
|
|
962
1111
|
newSession: (options?: {
|
|
963
1112
|
parentSession?: string;
|
|
964
1113
|
setup?: (sessionManager: SessionManager) => Promise<void>;
|
|
1114
|
+
withSession?: (ctx: ReplacedSessionContext) => Promise<void>;
|
|
965
1115
|
}) => Promise<{
|
|
966
1116
|
cancelled: boolean;
|
|
967
1117
|
}>;
|
|
968
|
-
fork: (entryId: string
|
|
1118
|
+
fork: (entryId: string, options?: {
|
|
1119
|
+
position?: "before" | "at";
|
|
1120
|
+
withSession?: (ctx: ReplacedSessionContext) => Promise<void>;
|
|
1121
|
+
}) => Promise<{
|
|
969
1122
|
cancelled: boolean;
|
|
970
1123
|
}>;
|
|
971
1124
|
navigateTree: (targetId: string, options?: {
|
|
@@ -976,7 +1129,9 @@ export interface ExtensionCommandContextActions {
|
|
|
976
1129
|
}) => Promise<{
|
|
977
1130
|
cancelled: boolean;
|
|
978
1131
|
}>;
|
|
979
|
-
switchSession: (sessionPath: string
|
|
1132
|
+
switchSession: (sessionPath: string, options?: {
|
|
1133
|
+
withSession?: (ctx: ReplacedSessionContext) => Promise<void>;
|
|
1134
|
+
}) => Promise<{
|
|
980
1135
|
cancelled: boolean;
|
|
981
1136
|
}>;
|
|
982
1137
|
reload: () => Promise<void>;
|
|
@@ -991,6 +1146,7 @@ export interface ExtensionRuntime extends ExtensionRuntimeState, ExtensionAction
|
|
|
991
1146
|
export interface Extension {
|
|
992
1147
|
path: string;
|
|
993
1148
|
resolvedPath: string;
|
|
1149
|
+
sourceInfo: SourceInfo;
|
|
994
1150
|
handlers: Map<string, HandlerFn[]>;
|
|
995
1151
|
tools: Map<string, RegisteredTool>;
|
|
996
1152
|
messageRenderers: Map<string, MessageRenderer>;
|