@vandeepunk/pi-coding-agent 0.0.6 → 1.0.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 +814 -16
- package/README.md +66 -27
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +7 -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/cli/args.d.ts +9 -4
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +61 -22
- package/dist/cli/args.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/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 +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +83 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +236 -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 +116 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +63 -49
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +599 -370
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +38 -8
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +220 -96
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts +6 -7
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +27 -114
- 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 +3 -3
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +31 -25
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +3 -0
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +16 -1
- package/dist/core/compaction/utils.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/index.d.ts +7 -4
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +10 -8
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.css +43 -13
- package/dist/core/export-html/template.html +1 -0
- package/dist/core/export-html/template.js +118 -14
- package/dist/core/export-html/tool-renderer.d.ts +9 -4
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js +48 -10
- 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.map +1 -1
- package/dist/core/extensions/loader.js +49 -13
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +13 -11
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +139 -64
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +174 -34
- 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 +6 -86
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +18 -2
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +220 -40
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/index.d.ts +4 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/keybindings.d.ts +283 -50
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +221 -134
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-registry.d.ts +33 -3
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +165 -97
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +35 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +205 -32
- 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 +43 -2
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +541 -102
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +5 -4
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +35 -37
- package/dist/core/prompt-templates.js.map +1 -1
- 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 +6 -5
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +166 -119
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts +11 -8
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +31 -29
- 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 +39 -25
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +60 -10
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +291 -140
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +5 -3
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +54 -9
- 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 +3 -2
- 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 +4 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +31 -52
- package/dist/core/system-prompt.js.map +1 -1
- 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 +24 -6
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +225 -115
- 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 +151 -57
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts +20 -6
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +111 -61
- 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 +11 -4
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +82 -30
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +15 -4
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +83 -29
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +63 -21
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +51 -26
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +9 -3
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +67 -13
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts +10 -3
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +110 -51
- 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 +32 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/write.d.ts +9 -3
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +168 -30
- package/dist/core/tools/write.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +354 -379
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +31 -11
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +3 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +14 -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 +22 -9
- 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 +1 -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 +2 -2
- 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 +2 -2
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +14 -14
- package/dist/modes/interactive/components/config-selector.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 +6 -6
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +5 -2
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +18 -9
- 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 +5 -5
- 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 +8 -8
- 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 +21 -40
- 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 +3 -36
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +5 -44
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +7 -7
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +13 -9
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +7 -7
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +4 -4
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +33 -36
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +5 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +25 -1
- 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 +5 -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 +2 -2
- 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 +5 -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 +5 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +17 -29
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +139 -501
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +25 -4
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +184 -34
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +6 -6
- 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 +12 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +25 -17
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +669 -385
- package/dist/modes/interactive/interactive-mode.js.map +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 +83 -48
- 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 +90 -79
- 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 +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +8 -11
- 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 +130 -87
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +3 -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 +234 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/utils/child-process.d.ts +11 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +78 -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 +27 -16
- 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/git.d.ts +5 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +14 -3
- 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/paths.d.ts +7 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +19 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +67 -22
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/compaction.md +6 -2
- package/docs/custom-provider.md +57 -9
- package/docs/development.md +3 -1
- package/docs/extensions.md +437 -67
- package/docs/json.md +5 -2
- package/docs/keybindings.md +108 -107
- package/docs/models.md +50 -2
- package/docs/packages.md +17 -10
- package/docs/prompt-templates.md +6 -6
- package/docs/providers.md +10 -1
- package/docs/rpc.md +78 -18
- package/docs/sdk.md +261 -96
- package/docs/settings.md +28 -3
- package/docs/skills.md +9 -4
- package/docs/terminal-setup.md +39 -3
- package/docs/tmux.md +61 -0
- package/docs/tree.md +15 -3
- package/docs/tui.md +2 -2
- package/examples/extensions/README.md +3 -0
- package/examples/extensions/antigravity-image-gen.ts +12 -7
- package/examples/extensions/built-in-tool-renderer.ts +246 -0
- package/examples/extensions/commands.ts +3 -3
- package/examples/extensions/custom-compaction.ts +17 -4
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +2 -2
- package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
- package/examples/extensions/doom-overlay/doom/build.sh +2 -2
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/handoff.ts +5 -2
- package/examples/extensions/hello.ts +18 -17
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/minimal-mode.ts +14 -14
- package/examples/extensions/overlay-qa-tests.ts +468 -1
- package/examples/extensions/preset.ts +2 -3
- package/examples/extensions/provider-payload.ts +14 -0
- package/examples/extensions/qna.ts +5 -2
- package/examples/extensions/question.ts +2 -2
- package/examples/extensions/questionnaire.ts +2 -2
- package/examples/extensions/rpc-demo.ts +3 -9
- package/examples/extensions/sandbox/index.ts +6 -3
- package/examples/extensions/status-line.ts +0 -8
- package/examples/extensions/subagent/README.md +4 -4
- package/examples/extensions/subagent/agents.ts +2 -3
- package/examples/extensions/subagent/index.ts +30 -8
- package/examples/extensions/summarize.ts +15 -4
- package/examples/extensions/todo.ts +2 -4
- package/examples/extensions/tool-override.ts +10 -9
- package/examples/extensions/tools.ts +0 -5
- package/examples/extensions/trigger-compact.ts +11 -1
- package/examples/extensions/truncated-tool.ts +8 -5
- package/examples/extensions/widget-placement.ts +4 -12
- package/examples/extensions/with-deps/index.ts +1 -5
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/sdk/02-custom-model.ts +2 -2
- package/examples/sdk/04-skills.ts +8 -2
- package/examples/sdk/08-prompt-templates.ts +4 -3
- package/examples/sdk/09-api-keys-and-oauth.ts +5 -5
- package/examples/sdk/10-settings.ts +13 -0
- package/examples/sdk/12-full-control.ts +2 -3
- package/examples/sdk/13-session-runtime.ts +67 -0
- package/examples/sdk/README.md +10 -7
- package/package.json +98 -94
- /package/examples/extensions/subagent/{commands → prompts}/implement-and-review.md +0 -0
- /package/examples/extensions/subagent/{commands → prompts}/implement.md +0 -0
- /package/examples/extensions/subagent/{commands → prompts}/scout-and-plan.md +0 -0
package/docs/sdk.md
CHANGED
|
@@ -19,8 +19,8 @@ See [examples/sdk/](../examples/sdk/) for working examples from minimal to full
|
|
|
19
19
|
import { AuthStorage, createAgentSession, ModelRegistry, SessionManager } from "@mariozechner/pi-coding-agent";
|
|
20
20
|
|
|
21
21
|
// Set up credential storage and model registry
|
|
22
|
-
const authStorage =
|
|
23
|
-
const modelRegistry =
|
|
22
|
+
const authStorage = AuthStorage.create();
|
|
23
|
+
const modelRegistry = ModelRegistry.create(authStorage);
|
|
24
24
|
|
|
25
25
|
const { session } = await createAgentSession({
|
|
26
26
|
sessionManager: SessionManager.inMemory(),
|
|
@@ -49,7 +49,7 @@ The SDK is included in the main package. No separate installation needed.
|
|
|
49
49
|
|
|
50
50
|
### createAgentSession()
|
|
51
51
|
|
|
52
|
-
The main factory function
|
|
52
|
+
The main factory function for a single `AgentSession`.
|
|
53
53
|
|
|
54
54
|
`createAgentSession()` uses a `ResourceLoader` to supply extensions, skills, prompt templates, themes, and context files. If you do not provide one, it uses `DefaultResourceLoader` with standard discovery.
|
|
55
55
|
|
|
@@ -69,61 +69,117 @@ const { session } = await createAgentSession({
|
|
|
69
69
|
|
|
70
70
|
### AgentSession
|
|
71
71
|
|
|
72
|
-
The session manages
|
|
72
|
+
The session manages agent lifecycle, message history, model state, compaction, and event streaming.
|
|
73
73
|
|
|
74
74
|
```typescript
|
|
75
75
|
interface AgentSession {
|
|
76
76
|
// Send a prompt and wait for completion
|
|
77
|
-
// If streaming, requires streamingBehavior option to queue the message
|
|
78
77
|
prompt(text: string, options?: PromptOptions): Promise<void>;
|
|
79
|
-
|
|
78
|
+
|
|
80
79
|
// Queue messages during streaming
|
|
81
|
-
steer(text: string): Promise<void>;
|
|
82
|
-
followUp(text: string): Promise<void>;
|
|
83
|
-
|
|
80
|
+
steer(text: string): Promise<void>;
|
|
81
|
+
followUp(text: string): Promise<void>;
|
|
82
|
+
|
|
84
83
|
// Subscribe to events (returns unsubscribe function)
|
|
85
84
|
subscribe(listener: (event: AgentSessionEvent) => void): () => void;
|
|
86
|
-
|
|
85
|
+
|
|
87
86
|
// Session info
|
|
88
|
-
sessionFile: string | undefined;
|
|
87
|
+
sessionFile: string | undefined;
|
|
89
88
|
sessionId: string;
|
|
90
|
-
|
|
89
|
+
|
|
91
90
|
// Model control
|
|
92
91
|
setModel(model: Model): Promise<void>;
|
|
93
92
|
setThinkingLevel(level: ThinkingLevel): void;
|
|
94
93
|
cycleModel(): Promise<ModelCycleResult | undefined>;
|
|
95
94
|
cycleThinkingLevel(): ThinkingLevel | undefined;
|
|
96
|
-
|
|
95
|
+
|
|
97
96
|
// State access
|
|
98
97
|
agent: Agent;
|
|
99
98
|
model: Model | undefined;
|
|
100
99
|
thinkingLevel: ThinkingLevel;
|
|
101
100
|
messages: AgentMessage[];
|
|
102
101
|
isStreaming: boolean;
|
|
103
|
-
|
|
104
|
-
//
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
// Forking
|
|
109
|
-
fork(entryId: string): Promise<{ selectedText: string; cancelled: boolean }>; // Creates new session file
|
|
110
|
-
navigateTree(targetId: string, options?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string }): Promise<{ editorText?: string; cancelled: boolean }>; // In-place navigation
|
|
111
|
-
|
|
112
|
-
// Hook message injection
|
|
113
|
-
sendHookMessage(message: HookMessage, triggerTurn?: boolean): Promise<void>;
|
|
114
|
-
|
|
102
|
+
|
|
103
|
+
// In-place tree navigation within the current session file
|
|
104
|
+
navigateTree(targetId: string, options?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string }): Promise<{ editorText?: string; cancelled: boolean }>;
|
|
105
|
+
|
|
115
106
|
// Compaction
|
|
116
107
|
compact(customInstructions?: string): Promise<CompactionResult>;
|
|
117
108
|
abortCompaction(): void;
|
|
118
|
-
|
|
109
|
+
|
|
119
110
|
// Abort current operation
|
|
120
111
|
abort(): Promise<void>;
|
|
121
|
-
|
|
112
|
+
|
|
122
113
|
// Cleanup
|
|
123
114
|
dispose(): void;
|
|
124
115
|
}
|
|
125
116
|
```
|
|
126
117
|
|
|
118
|
+
Session replacement APIs such as new-session, resume, fork, and import live on `AgentSessionRuntime`, not on `AgentSession`.
|
|
119
|
+
|
|
120
|
+
### createAgentSessionRuntime() and AgentSessionRuntime
|
|
121
|
+
|
|
122
|
+
Use the runtime API when you need to replace the active session and rebuild cwd-bound runtime state.
|
|
123
|
+
This is the same layer used by the built-in interactive, print, and RPC modes.
|
|
124
|
+
|
|
125
|
+
`createAgentSessionRuntime()` takes a runtime factory plus the initial cwd/session target. The factory closes over process-global fixed inputs, recreates cwd-bound services for the effective cwd, resolves session options against those services, and returns a full runtime result.
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
import {
|
|
129
|
+
type CreateAgentSessionRuntimeFactory,
|
|
130
|
+
createAgentSessionFromServices,
|
|
131
|
+
createAgentSessionRuntime,
|
|
132
|
+
createAgentSessionServices,
|
|
133
|
+
getAgentDir,
|
|
134
|
+
SessionManager,
|
|
135
|
+
} from "@mariozechner/pi-coding-agent";
|
|
136
|
+
|
|
137
|
+
const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
|
|
138
|
+
const services = await createAgentSessionServices({ cwd });
|
|
139
|
+
return {
|
|
140
|
+
...(await createAgentSessionFromServices({
|
|
141
|
+
services,
|
|
142
|
+
sessionManager,
|
|
143
|
+
sessionStartEvent,
|
|
144
|
+
})),
|
|
145
|
+
services,
|
|
146
|
+
diagnostics: services.diagnostics,
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
const runtime = await createAgentSessionRuntime(createRuntime, {
|
|
151
|
+
cwd: process.cwd(),
|
|
152
|
+
agentDir: getAgentDir(),
|
|
153
|
+
sessionManager: SessionManager.create(process.cwd()),
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`AgentSessionRuntime` owns replacement of the active runtime across:
|
|
158
|
+
|
|
159
|
+
- `newSession()`
|
|
160
|
+
- `switchSession()`
|
|
161
|
+
- `fork()`
|
|
162
|
+
- `importFromJsonl()`
|
|
163
|
+
|
|
164
|
+
Important behavior:
|
|
165
|
+
|
|
166
|
+
- `runtime.session` changes after those operations
|
|
167
|
+
- event subscriptions are attached to a specific `AgentSession`, so re-subscribe after replacement
|
|
168
|
+
- if you use extensions, call `runtime.session.bindExtensions(...)` again for the new session
|
|
169
|
+
- creation returns diagnostics on `runtime.diagnostics`
|
|
170
|
+
- if runtime creation or replacement fails, the method throws and the caller decides how to handle it
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
let session = runtime.session;
|
|
174
|
+
let unsubscribe = session.subscribe(() => {});
|
|
175
|
+
|
|
176
|
+
await runtime.newSession();
|
|
177
|
+
|
|
178
|
+
unsubscribe();
|
|
179
|
+
session = runtime.session;
|
|
180
|
+
unsubscribe = session.subscribe(() => {});
|
|
181
|
+
```
|
|
182
|
+
|
|
127
183
|
### Prompting and Message Queueing
|
|
128
184
|
|
|
129
185
|
The `prompt()` method handles prompt templates, extension commands, and message sending:
|
|
@@ -150,7 +206,7 @@ await session.prompt("After you're done, also check X", { streamingBehavior: "fo
|
|
|
150
206
|
For explicit queueing during streaming:
|
|
151
207
|
|
|
152
208
|
```typescript
|
|
153
|
-
//
|
|
209
|
+
// Queue a steering message for delivery after the current assistant turn finishes its tool calls
|
|
154
210
|
await session.steer("New instruction");
|
|
155
211
|
|
|
156
212
|
// Wait for agent to finish (delivered only when agent stops)
|
|
@@ -171,10 +227,15 @@ const state = session.agent.state;
|
|
|
171
227
|
// state.model: Model - current model
|
|
172
228
|
// state.thinkingLevel: ThinkingLevel - current thinking level
|
|
173
229
|
// state.systemPrompt: string - system prompt
|
|
174
|
-
// state.tools:
|
|
230
|
+
// state.tools: AgentTool[] - available tools
|
|
231
|
+
// state.streamingMessage?: AgentMessage - current partial assistant message
|
|
232
|
+
// state.errorMessage?: string - latest assistant error
|
|
175
233
|
|
|
176
|
-
// Replace messages (useful for branching
|
|
177
|
-
session.agent.
|
|
234
|
+
// Replace messages (useful for branching or restoration)
|
|
235
|
+
session.agent.state.messages = messages; // copies the top-level array
|
|
236
|
+
|
|
237
|
+
// Replace tools
|
|
238
|
+
session.agent.state.tools = tools; // copies the top-level array
|
|
178
239
|
|
|
179
240
|
// Wait for agent to finish processing
|
|
180
241
|
await session.agent.waitForIdle();
|
|
@@ -232,9 +293,12 @@ session.subscribe((event) => {
|
|
|
232
293
|
// event.toolResults: tool results from this turn
|
|
233
294
|
break;
|
|
234
295
|
|
|
235
|
-
// Session events (
|
|
236
|
-
case "
|
|
237
|
-
|
|
296
|
+
// Session events (queue, compaction, retry)
|
|
297
|
+
case "queue_update":
|
|
298
|
+
console.log(event.steering, event.followUp);
|
|
299
|
+
break;
|
|
300
|
+
case "compaction_start":
|
|
301
|
+
case "compaction_end":
|
|
238
302
|
case "auto_retry_start":
|
|
239
303
|
case "auto_retry_end":
|
|
240
304
|
break;
|
|
@@ -258,15 +322,19 @@ const { session } = await createAgentSession({
|
|
|
258
322
|
|
|
259
323
|
`cwd` is used by `DefaultResourceLoader` for:
|
|
260
324
|
- Project extensions (`.pi/extensions/`)
|
|
261
|
-
- Project skills
|
|
262
|
-
-
|
|
325
|
+
- Project skills:
|
|
326
|
+
- `.pi/skills/`
|
|
327
|
+
- `.agents/skills/` in `cwd` and ancestor directories (up to git repo root, or filesystem root when not in a repo)
|
|
328
|
+
- Project prompts (`.pi/prompts/`)
|
|
263
329
|
- Context files (`AGENTS.md` walking up from cwd)
|
|
264
330
|
- Session directory naming
|
|
265
331
|
|
|
266
332
|
`agentDir` is used by `DefaultResourceLoader` for:
|
|
267
333
|
- Global extensions (`extensions/`)
|
|
268
|
-
- Global skills
|
|
269
|
-
-
|
|
334
|
+
- Global skills:
|
|
335
|
+
- `skills/` under `agentDir` (for example `~/.pi/agent/skills/`)
|
|
336
|
+
- `~/.agents/skills/`
|
|
337
|
+
- Global prompts (`prompts/`)
|
|
270
338
|
- Global context file (`AGENTS.md`)
|
|
271
339
|
- Settings (`settings.json`)
|
|
272
340
|
- Custom models (`models.json`)
|
|
@@ -281,8 +349,8 @@ When you pass a custom `ResourceLoader`, `cwd` and `agentDir` no longer control
|
|
|
281
349
|
import { getModel } from "@mariozechner/pi-ai";
|
|
282
350
|
import { AuthStorage, ModelRegistry } from "@mariozechner/pi-coding-agent";
|
|
283
351
|
|
|
284
|
-
const authStorage =
|
|
285
|
-
const modelRegistry =
|
|
352
|
+
const authStorage = AuthStorage.create();
|
|
353
|
+
const modelRegistry = ModelRegistry.create(authStorage);
|
|
286
354
|
|
|
287
355
|
// Find specific built-in model (doesn't check if API key exists)
|
|
288
356
|
const opus = getModel("anthropic", "claude-opus-4-5");
|
|
@@ -329,8 +397,8 @@ API key resolution priority (handled by AuthStorage):
|
|
|
329
397
|
import { AuthStorage, ModelRegistry } from "@mariozechner/pi-coding-agent";
|
|
330
398
|
|
|
331
399
|
// Default: uses ~/.pi/agent/auth.json and ~/.pi/agent/models.json
|
|
332
|
-
const authStorage =
|
|
333
|
-
const modelRegistry =
|
|
400
|
+
const authStorage = AuthStorage.create();
|
|
401
|
+
const modelRegistry = ModelRegistry.create(authStorage);
|
|
334
402
|
|
|
335
403
|
const { session } = await createAgentSession({
|
|
336
404
|
sessionManager: SessionManager.inMemory(),
|
|
@@ -342,8 +410,8 @@ const { session } = await createAgentSession({
|
|
|
342
410
|
authStorage.setRuntimeApiKey("anthropic", "sk-my-temp-key");
|
|
343
411
|
|
|
344
412
|
// Custom auth storage location
|
|
345
|
-
const customAuth =
|
|
346
|
-
const customRegistry =
|
|
413
|
+
const customAuth = AuthStorage.create("/my/app/auth.json");
|
|
414
|
+
const customRegistry = ModelRegistry.create(customAuth, "/my/app/models.json");
|
|
347
415
|
|
|
348
416
|
const { session } = await createAgentSession({
|
|
349
417
|
sessionManager: SessionManager.inMemory(),
|
|
@@ -352,7 +420,7 @@ const { session } = await createAgentSession({
|
|
|
352
420
|
});
|
|
353
421
|
|
|
354
422
|
// No custom models.json (built-in models only)
|
|
355
|
-
const simpleRegistry =
|
|
423
|
+
const simpleRegistry = ModelRegistry.inMemory(authStorage);
|
|
356
424
|
```
|
|
357
425
|
|
|
358
426
|
> See [examples/sdk/09-api-keys-and-oauth.ts](../examples/sdk/09-api-keys-and-oauth.ts)
|
|
@@ -440,21 +508,21 @@ const { session } = await createAgentSession({
|
|
|
440
508
|
|
|
441
509
|
```typescript
|
|
442
510
|
import { Type } from "@sinclair/typebox";
|
|
443
|
-
import { createAgentSession,
|
|
511
|
+
import { createAgentSession, defineTool } from "@mariozechner/pi-coding-agent";
|
|
444
512
|
|
|
445
513
|
// Inline custom tool
|
|
446
|
-
const myTool
|
|
514
|
+
const myTool = defineTool({
|
|
447
515
|
name: "my_tool",
|
|
448
516
|
label: "My Tool",
|
|
449
517
|
description: "Does something useful",
|
|
450
518
|
parameters: Type.Object({
|
|
451
519
|
input: Type.String({ description: "Input value" }),
|
|
452
520
|
}),
|
|
453
|
-
execute: async (
|
|
521
|
+
execute: async (_toolCallId, params) => ({
|
|
454
522
|
content: [{ type: "text", text: `Result: ${params.input}` }],
|
|
455
523
|
details: {},
|
|
456
524
|
}),
|
|
457
|
-
};
|
|
525
|
+
});
|
|
458
526
|
|
|
459
527
|
// Pass custom tools directly
|
|
460
528
|
const { session } = await createAgentSession({
|
|
@@ -462,6 +530,8 @@ const { session } = await createAgentSession({
|
|
|
462
530
|
});
|
|
463
531
|
```
|
|
464
532
|
|
|
533
|
+
Use `defineTool()` for standalone definitions and arrays like `customTools: [myTool]`. Inline `pi.registerTool({ ... })` already infers parameter types correctly.
|
|
534
|
+
|
|
465
535
|
Custom tools passed via `customTools` are combined with extension-registered tools. Extensions loaded by the ResourceLoader can also register tools via `pi.registerTool()`.
|
|
466
536
|
|
|
467
537
|
> See [examples/sdk/05-tools.ts](../examples/sdk/05-tools.ts)
|
|
@@ -580,8 +650,6 @@ const loader = new DefaultResourceLoader({
|
|
|
580
650
|
});
|
|
581
651
|
await loader.reload();
|
|
582
652
|
|
|
583
|
-
const { session } = await createAgentSession({ resourceLoader: loader });
|
|
584
|
-
|
|
585
653
|
const { session } = await createAgentSession({ resourceLoader: loader });
|
|
586
654
|
```
|
|
587
655
|
|
|
@@ -592,7 +660,15 @@ const { session } = await createAgentSession({ resourceLoader: loader });
|
|
|
592
660
|
Sessions use a tree structure with `id`/`parentId` linking, enabling in-place branching.
|
|
593
661
|
|
|
594
662
|
```typescript
|
|
595
|
-
import {
|
|
663
|
+
import {
|
|
664
|
+
type CreateAgentSessionRuntimeFactory,
|
|
665
|
+
createAgentSession,
|
|
666
|
+
createAgentSessionFromServices,
|
|
667
|
+
createAgentSessionRuntime,
|
|
668
|
+
createAgentSessionServices,
|
|
669
|
+
getAgentDir,
|
|
670
|
+
SessionManager,
|
|
671
|
+
} from "@mariozechner/pi-coding-agent";
|
|
596
672
|
|
|
597
673
|
// In-memory (no persistence)
|
|
598
674
|
const { session } = await createAgentSession({
|
|
@@ -600,12 +676,12 @@ const { session } = await createAgentSession({
|
|
|
600
676
|
});
|
|
601
677
|
|
|
602
678
|
// New persistent session
|
|
603
|
-
const { session } = await createAgentSession({
|
|
679
|
+
const { session: persisted } = await createAgentSession({
|
|
604
680
|
sessionManager: SessionManager.create(process.cwd()),
|
|
605
681
|
});
|
|
606
682
|
|
|
607
683
|
// Continue most recent
|
|
608
|
-
const { session, modelFallbackMessage } = await createAgentSession({
|
|
684
|
+
const { session: continued, modelFallbackMessage } = await createAgentSession({
|
|
609
685
|
sessionManager: SessionManager.continueRecent(process.cwd()),
|
|
610
686
|
});
|
|
611
687
|
if (modelFallbackMessage) {
|
|
@@ -613,26 +689,42 @@ if (modelFallbackMessage) {
|
|
|
613
689
|
}
|
|
614
690
|
|
|
615
691
|
// Open specific file
|
|
616
|
-
const { session } = await createAgentSession({
|
|
692
|
+
const { session: opened } = await createAgentSession({
|
|
617
693
|
sessionManager: SessionManager.open("/path/to/session.jsonl"),
|
|
618
694
|
});
|
|
619
695
|
|
|
620
|
-
// List
|
|
621
|
-
const
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
696
|
+
// List sessions
|
|
697
|
+
const currentProjectSessions = await SessionManager.list(process.cwd());
|
|
698
|
+
const allSessions = await SessionManager.listAll(process.cwd());
|
|
699
|
+
|
|
700
|
+
// Session replacement API for /new, /resume, /fork, and import flows.
|
|
701
|
+
const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
|
|
702
|
+
const services = await createAgentSessionServices({ cwd });
|
|
703
|
+
return {
|
|
704
|
+
...(await createAgentSessionFromServices({
|
|
705
|
+
services,
|
|
706
|
+
sessionManager,
|
|
707
|
+
sessionStartEvent,
|
|
708
|
+
})),
|
|
709
|
+
services,
|
|
710
|
+
diagnostics: services.diagnostics,
|
|
711
|
+
};
|
|
712
|
+
};
|
|
625
713
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
714
|
+
const runtime = await createAgentSessionRuntime(createRuntime, {
|
|
715
|
+
cwd: process.cwd(),
|
|
716
|
+
agentDir: getAgentDir(),
|
|
717
|
+
sessionManager: SessionManager.create(process.cwd()),
|
|
629
718
|
});
|
|
630
719
|
|
|
631
|
-
//
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
720
|
+
// Replace the active session with a fresh one
|
|
721
|
+
await runtime.newSession();
|
|
722
|
+
|
|
723
|
+
// Replace the active session with another saved session
|
|
724
|
+
await runtime.switchSession("/path/to/session.jsonl");
|
|
725
|
+
|
|
726
|
+
// Replace the active session with a fork from a specific entry
|
|
727
|
+
await runtime.fork("entry-id");
|
|
636
728
|
```
|
|
637
729
|
|
|
638
730
|
**SessionManager tree API:**
|
|
@@ -640,6 +732,10 @@ const { session } = await createAgentSession({
|
|
|
640
732
|
```typescript
|
|
641
733
|
const sm = SessionManager.open("/path/to/session.jsonl");
|
|
642
734
|
|
|
735
|
+
// Session listing
|
|
736
|
+
const currentProjectSessions = await SessionManager.list(process.cwd());
|
|
737
|
+
const allSessions = await SessionManager.listAll(process.cwd());
|
|
738
|
+
|
|
643
739
|
// Tree traversal
|
|
644
740
|
const entries = sm.getEntries(); // All entries (excludes header)
|
|
645
741
|
const tree = sm.getTree(); // Full tree structure
|
|
@@ -702,11 +798,18 @@ Settings load from two locations and merge:
|
|
|
702
798
|
|
|
703
799
|
Project overrides global. Nested objects merge keys. Setters modify global settings by default.
|
|
704
800
|
|
|
801
|
+
**Persistence and error handling semantics:**
|
|
802
|
+
|
|
803
|
+
- Settings getters/setters are synchronous for in-memory state.
|
|
804
|
+
- Setters enqueue persistence writes asynchronously.
|
|
805
|
+
- Call `await settingsManager.flush()` when you need a durability boundary (for example, before process exit or before asserting file contents in tests).
|
|
806
|
+
- `SettingsManager` does not print settings I/O errors. Use `settingsManager.drainErrors()` and report them in your app layer.
|
|
807
|
+
|
|
705
808
|
> See [examples/sdk/10-settings.ts](../examples/sdk/10-settings.ts)
|
|
706
809
|
|
|
707
810
|
## ResourceLoader
|
|
708
811
|
|
|
709
|
-
Use `DefaultResourceLoader` to discover extensions, skills,
|
|
812
|
+
Use `DefaultResourceLoader` to discover extensions, skills, prompts, themes, and context files.
|
|
710
813
|
|
|
711
814
|
```typescript
|
|
712
815
|
import {
|
|
@@ -757,18 +860,18 @@ import { getModel } from "@mariozechner/pi-ai";
|
|
|
757
860
|
import { Type } from "@sinclair/typebox";
|
|
758
861
|
import {
|
|
759
862
|
AuthStorage,
|
|
863
|
+
bashTool,
|
|
760
864
|
createAgentSession,
|
|
761
865
|
DefaultResourceLoader,
|
|
866
|
+
defineTool,
|
|
762
867
|
ModelRegistry,
|
|
868
|
+
readTool,
|
|
763
869
|
SessionManager,
|
|
764
870
|
SettingsManager,
|
|
765
|
-
readTool,
|
|
766
|
-
bashTool,
|
|
767
|
-
type ToolDefinition,
|
|
768
871
|
} from "@mariozechner/pi-coding-agent";
|
|
769
872
|
|
|
770
873
|
// Set up auth storage (custom location)
|
|
771
|
-
const authStorage =
|
|
874
|
+
const authStorage = AuthStorage.create("/custom/agent/auth.json");
|
|
772
875
|
|
|
773
876
|
// Runtime API key override (not persisted)
|
|
774
877
|
if (process.env.MY_KEY) {
|
|
@@ -776,10 +879,10 @@ if (process.env.MY_KEY) {
|
|
|
776
879
|
}
|
|
777
880
|
|
|
778
881
|
// Model registry (no custom models.json)
|
|
779
|
-
const modelRegistry =
|
|
882
|
+
const modelRegistry = ModelRegistry.create(authStorage);
|
|
780
883
|
|
|
781
884
|
// Inline tool
|
|
782
|
-
const statusTool
|
|
885
|
+
const statusTool = defineTool({
|
|
783
886
|
name: "status",
|
|
784
887
|
label: "Status",
|
|
785
888
|
description: "Get system status",
|
|
@@ -788,7 +891,7 @@ const statusTool: ToolDefinition = {
|
|
|
788
891
|
content: [{ type: "text", text: `Uptime: ${process.uptime()}s` }],
|
|
789
892
|
details: {},
|
|
790
893
|
}),
|
|
791
|
-
};
|
|
894
|
+
});
|
|
792
895
|
|
|
793
896
|
const model = getModel("anthropic", "claude-opus-4-5");
|
|
794
897
|
if (!model) throw new Error("Model not found");
|
|
@@ -842,20 +945,39 @@ The SDK exports run mode utilities for building custom interfaces on top of `cre
|
|
|
842
945
|
Full TUI interactive mode with editor, chat history, and all built-in commands:
|
|
843
946
|
|
|
844
947
|
```typescript
|
|
845
|
-
import {
|
|
948
|
+
import {
|
|
949
|
+
type CreateAgentSessionRuntimeFactory,
|
|
950
|
+
createAgentSessionFromServices,
|
|
951
|
+
createAgentSessionRuntime,
|
|
952
|
+
createAgentSessionServices,
|
|
953
|
+
getAgentDir,
|
|
954
|
+
InteractiveMode,
|
|
955
|
+
SessionManager,
|
|
956
|
+
} from "@mariozechner/pi-coding-agent";
|
|
846
957
|
|
|
847
|
-
const
|
|
958
|
+
const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
|
|
959
|
+
const services = await createAgentSessionServices({ cwd });
|
|
960
|
+
return {
|
|
961
|
+
...(await createAgentSessionFromServices({ services, sessionManager, sessionStartEvent })),
|
|
962
|
+
services,
|
|
963
|
+
diagnostics: services.diagnostics,
|
|
964
|
+
};
|
|
965
|
+
};
|
|
966
|
+
const runtime = await createAgentSessionRuntime(createRuntime, {
|
|
967
|
+
cwd: process.cwd(),
|
|
968
|
+
agentDir: getAgentDir(),
|
|
969
|
+
sessionManager: SessionManager.create(process.cwd()),
|
|
970
|
+
});
|
|
848
971
|
|
|
849
|
-
const mode = new InteractiveMode(
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
initialMessages: [], // Additional startup prompts
|
|
972
|
+
const mode = new InteractiveMode(runtime, {
|
|
973
|
+
migratedProviders: [],
|
|
974
|
+
modelFallbackMessage: undefined,
|
|
975
|
+
initialMessage: "Hello",
|
|
976
|
+
initialImages: [],
|
|
977
|
+
initialMessages: [],
|
|
856
978
|
});
|
|
857
979
|
|
|
858
|
-
await mode.run();
|
|
980
|
+
await mode.run();
|
|
859
981
|
```
|
|
860
982
|
|
|
861
983
|
### runPrintMode
|
|
@@ -863,15 +985,35 @@ await mode.run(); // Blocks until exit
|
|
|
863
985
|
Single-shot mode: send prompts, output result, exit:
|
|
864
986
|
|
|
865
987
|
```typescript
|
|
866
|
-
import {
|
|
988
|
+
import {
|
|
989
|
+
type CreateAgentSessionRuntimeFactory,
|
|
990
|
+
createAgentSessionFromServices,
|
|
991
|
+
createAgentSessionRuntime,
|
|
992
|
+
createAgentSessionServices,
|
|
993
|
+
getAgentDir,
|
|
994
|
+
runPrintMode,
|
|
995
|
+
SessionManager,
|
|
996
|
+
} from "@mariozechner/pi-coding-agent";
|
|
867
997
|
|
|
868
|
-
const
|
|
998
|
+
const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
|
|
999
|
+
const services = await createAgentSessionServices({ cwd });
|
|
1000
|
+
return {
|
|
1001
|
+
...(await createAgentSessionFromServices({ services, sessionManager, sessionStartEvent })),
|
|
1002
|
+
services,
|
|
1003
|
+
diagnostics: services.diagnostics,
|
|
1004
|
+
};
|
|
1005
|
+
};
|
|
1006
|
+
const runtime = await createAgentSessionRuntime(createRuntime, {
|
|
1007
|
+
cwd: process.cwd(),
|
|
1008
|
+
agentDir: getAgentDir(),
|
|
1009
|
+
sessionManager: SessionManager.create(process.cwd()),
|
|
1010
|
+
});
|
|
869
1011
|
|
|
870
|
-
await runPrintMode(
|
|
871
|
-
mode: "text",
|
|
872
|
-
initialMessage: "Hello",
|
|
873
|
-
initialImages: [],
|
|
874
|
-
messages: ["Follow up"],
|
|
1012
|
+
await runPrintMode(runtime, {
|
|
1013
|
+
mode: "text",
|
|
1014
|
+
initialMessage: "Hello",
|
|
1015
|
+
initialImages: [],
|
|
1016
|
+
messages: ["Follow up"],
|
|
875
1017
|
});
|
|
876
1018
|
```
|
|
877
1019
|
|
|
@@ -880,11 +1022,31 @@ await runPrintMode(session, {
|
|
|
880
1022
|
JSON-RPC mode for subprocess integration:
|
|
881
1023
|
|
|
882
1024
|
```typescript
|
|
883
|
-
import {
|
|
1025
|
+
import {
|
|
1026
|
+
type CreateAgentSessionRuntimeFactory,
|
|
1027
|
+
createAgentSessionFromServices,
|
|
1028
|
+
createAgentSessionRuntime,
|
|
1029
|
+
createAgentSessionServices,
|
|
1030
|
+
getAgentDir,
|
|
1031
|
+
runRpcMode,
|
|
1032
|
+
SessionManager,
|
|
1033
|
+
} from "@mariozechner/pi-coding-agent";
|
|
884
1034
|
|
|
885
|
-
const
|
|
1035
|
+
const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
|
|
1036
|
+
const services = await createAgentSessionServices({ cwd });
|
|
1037
|
+
return {
|
|
1038
|
+
...(await createAgentSessionFromServices({ services, sessionManager, sessionStartEvent })),
|
|
1039
|
+
services,
|
|
1040
|
+
diagnostics: services.diagnostics,
|
|
1041
|
+
};
|
|
1042
|
+
};
|
|
1043
|
+
const runtime = await createAgentSessionRuntime(createRuntime, {
|
|
1044
|
+
cwd: process.cwd(),
|
|
1045
|
+
agentDir: getAgentDir(),
|
|
1046
|
+
sessionManager: SessionManager.create(process.cwd()),
|
|
1047
|
+
});
|
|
886
1048
|
|
|
887
|
-
await runRpcMode(
|
|
1049
|
+
await runRpcMode(runtime);
|
|
888
1050
|
```
|
|
889
1051
|
|
|
890
1052
|
See [RPC documentation](rpc.md) for the JSON protocol.
|
|
@@ -917,6 +1079,8 @@ The main entry point exports:
|
|
|
917
1079
|
```typescript
|
|
918
1080
|
// Factory
|
|
919
1081
|
createAgentSession
|
|
1082
|
+
createAgentSessionRuntime
|
|
1083
|
+
AgentSessionRuntime
|
|
920
1084
|
|
|
921
1085
|
// Auth and Models
|
|
922
1086
|
AuthStorage
|
|
@@ -928,6 +1092,7 @@ type ResourceLoader
|
|
|
928
1092
|
createEventBus
|
|
929
1093
|
|
|
930
1094
|
// Helpers
|
|
1095
|
+
defineTool
|
|
931
1096
|
|
|
932
1097
|
// Session management
|
|
933
1098
|
SessionManager
|