@fleetagent/pi-coding-agent 0.0.1
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 +4518 -0
- package/README.md +660 -0
- 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 +56 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +356 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config-selector.d.ts +14 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +31 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +83 -0
- package/dist/cli/file-processor.js.map +1 -0
- 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 +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/session-picker.d.ts +9 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +35 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +18 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +95 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +418 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session.d.ts +600 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2505 -0
- package/dist/core/agent-session.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 +141 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +442 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +88 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +243 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +121 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +625 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +38 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +153 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +3 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +2 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +226 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1848 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/core/export-html/vendor/marked.min.js +6 -0
- package/dist/core/extensions/index.d.ts +12 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +24 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +484 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +160 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +824 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1175 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +45 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +22 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +52 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +310 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts +21 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +48 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keybindings.d.ts +353 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +295 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/messages.d.ts +77 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +123 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-registry.d.ts +150 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +729 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +110 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +495 -0
- package/dist/core/model-resolver.js.map +1 -0
- 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 +204 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +2021 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/pi-agent.d.ts +191 -0
- package/dist/core/pi-agent.d.ts.map +1 -0
- package/dist/core/pi-agent.js +655 -0
- package/dist/core/pi-agent.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +52 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +238 -0
- package/dist/core/prompt-templates.js.map +1 -0
- 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 +23 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +126 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +194 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +734 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/session/constants.d.ts +2 -0
- package/dist/core/session/constants.d.ts.map +1 -0
- package/dist/core/session/constants.js +2 -0
- package/dist/core/session/constants.js.map +1 -0
- package/dist/core/session/context.d.ts +9 -0
- package/dist/core/session/context.d.ts.map +1 -0
- package/dist/core/session/context.js +94 -0
- package/dist/core/session/context.js.map +1 -0
- package/dist/core/session/ids.d.ts +6 -0
- package/dist/core/session/ids.d.ts.map +1 -0
- package/dist/core/session/ids.js +15 -0
- package/dist/core/session/ids.js.map +1 -0
- package/dist/core/session/in-memory-session-manager.d.ts +17 -0
- package/dist/core/session/in-memory-session-manager.d.ts.map +1 -0
- package/dist/core/session/in-memory-session-manager.js +42 -0
- package/dist/core/session/in-memory-session-manager.js.map +1 -0
- package/dist/core/session/in-memory-session.d.ts +5 -0
- package/dist/core/session/in-memory-session.d.ts.map +1 -0
- package/dist/core/session/in-memory-session.js +8 -0
- package/dist/core/session/in-memory-session.js.map +1 -0
- package/dist/core/session/index.d.ts +16 -0
- package/dist/core/session/index.d.ts.map +1 -0
- package/dist/core/session/index.js +13 -0
- package/dist/core/session/index.js.map +1 -0
- package/dist/core/session/jsonl-helpers.d.ts +13 -0
- package/dist/core/session/jsonl-helpers.d.ts.map +1 -0
- package/dist/core/session/jsonl-helpers.js +18 -0
- package/dist/core/session/jsonl-helpers.js.map +1 -0
- package/dist/core/session/local-session-manager.d.ts +22 -0
- package/dist/core/session/local-session-manager.d.ts.map +1 -0
- package/dist/core/session/local-session-manager.js +102 -0
- package/dist/core/session/local-session-manager.js.map +1 -0
- package/dist/core/session/local-session.d.ts +5 -0
- package/dist/core/session/local-session.d.ts.map +1 -0
- package/dist/core/session/local-session.js +8 -0
- package/dist/core/session/local-session.js.map +1 -0
- package/dist/core/session/migrations.d.ts +11 -0
- package/dist/core/session/migrations.d.ts.map +1 -0
- package/dist/core/session/migrations.js +78 -0
- package/dist/core/session/migrations.js.map +1 -0
- package/dist/core/session/remote-session-client.d.ts +73 -0
- package/dist/core/session/remote-session-client.d.ts.map +1 -0
- package/dist/core/session/remote-session-client.js +69 -0
- package/dist/core/session/remote-session-client.js.map +1 -0
- package/dist/core/session/remote-session-manager.d.ts +32 -0
- package/dist/core/session/remote-session-manager.d.ts.map +1 -0
- package/dist/core/session/remote-session-manager.js +91 -0
- package/dist/core/session/remote-session-manager.js.map +1 -0
- package/dist/core/session/remote-session.d.ts +17 -0
- package/dist/core/session/remote-session.d.ts.map +1 -0
- package/dist/core/session/remote-session.js +30 -0
- package/dist/core/session/remote-session.js.map +1 -0
- package/dist/core/session/session-manager.d.ts +17 -0
- package/dist/core/session/session-manager.d.ts.map +1 -0
- package/dist/core/session/session-manager.js +2 -0
- package/dist/core/session/session-manager.js.map +1 -0
- package/dist/core/session/session.d.ts +135 -0
- package/dist/core/session/session.d.ts.map +1 -0
- package/dist/core/session/session.js +380 -0
- package/dist/core/session/session.js.map +1 -0
- package/dist/core/session/stores/in-memory-session-store.d.ts +51 -0
- package/dist/core/session/stores/in-memory-session-store.d.ts.map +1 -0
- package/dist/core/session/stores/in-memory-session-store.js +199 -0
- package/dist/core/session/stores/in-memory-session-store.js.map +1 -0
- package/dist/core/session/stores/jsonl-session-store.d.ts +30 -0
- package/dist/core/session/stores/jsonl-session-store.d.ts.map +1 -0
- package/dist/core/session/stores/jsonl-session-store.js +380 -0
- package/dist/core/session/stores/jsonl-session-store.js.map +1 -0
- package/dist/core/session/stores/remote-session-store.d.ts +43 -0
- package/dist/core/session/stores/remote-session-store.d.ts.map +1 -0
- package/dist/core/session/stores/remote-session-store.js +124 -0
- package/dist/core/session/stores/remote-session-store.js.map +1 -0
- package/dist/core/session/stores/session-store.d.ts +48 -0
- package/dist/core/session/stores/session-store.d.ts.map +1 -0
- package/dist/core/session/stores/session-store.js +2 -0
- package/dist/core/session/stores/session-store.js.map +1 -0
- package/dist/core/session/types.d.ts +138 -0
- package/dist/core/session/types.d.ts.map +1 -0
- package/dist/core/session/types.js +2 -0
- package/dist/core/session/types.js.map +1 -0
- 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 +2 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +2 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +264 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +795 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +387 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +14 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +25 -0
- package/dist/core/slash-commands.js.map +1 -0
- 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 +28 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +123 -0
- package/dist/core/system-prompt.js.map +1 -0
- 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 +8 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +31 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +68 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +342 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +87 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +345 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +51 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +325 -0
- package/dist/core/tools/edit.js.map +1 -0
- 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 +35 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +298 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +37 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +304 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +40 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +112 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +37 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +169 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +184 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +8 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +62 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +35 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +289 -0
- package/dist/core/tools/read.js.map +1 -0
- 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 +70 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +215 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/write.d.ts +26 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +213 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +12 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +532 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +281 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +9 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/assets/clankolas.png +0 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +333 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +20 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +121 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +175 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +54 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +44 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +71 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +506 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +33 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +70 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +79 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +140 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +133 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +21 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- 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 +20 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +119 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +61 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +26 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +83 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +27 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +201 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +32 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +33 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +36 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +54 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +180 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +47 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +278 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +165 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +290 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +96 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +861 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +69 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +390 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +39 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +50 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +51 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +63 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +295 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +1093 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +114 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +10 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +29 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +370 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +4653 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +86 -0
- package/dist/modes/interactive/theme/light.json +85 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +100 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +1024 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/print-mode.d.ts +28 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +131 -0
- package/dist/modes/print-mode.js.map +1 -0
- 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 +234 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +418 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +603 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +420 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +8 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- 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 +515 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +52 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +21 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +87 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +15 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +88 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +245 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +8 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +14 -0
- package/dist/utils/clipboard-native.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +117 -0
- package/dist/utils/clipboard.js.map +1 -0
- 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 +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +26 -0
- package/dist/utils/frontmatter.js.map +1 -0
- 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 +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +163 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +40 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/image-convert.d.ts +9 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +39 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-resize.d.ts +36 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +137 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/mime.d.ts +3 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +69 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/paths.d.ts +31 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +92 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +121 -0
- package/dist/utils/photon.js.map +1 -0
- 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 +30 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +195 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts +12 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +118 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +328 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +15 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +82 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/utils/windows-self-update.d.ts.map +1 -0
- package/dist/utils/windows-self-update.js +77 -0
- package/dist/utils/windows-self-update.js.map +1 -0
- package/docs/compaction.md +394 -0
- package/docs/custom-provider.md +701 -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 +80 -0
- package/docs/json.md +82 -0
- package/docs/keybindings.md +197 -0
- package/docs/models.md +474 -0
- package/docs/packages.md +225 -0
- package/docs/prompt-templates.md +88 -0
- package/docs/providers.md +243 -0
- package/docs/quickstart.md +164 -0
- package/docs/rpc.md +1407 -0
- package/docs/sdk.md +257 -0
- package/docs/session-format.md +412 -0
- package/docs/sessions.md +137 -0
- package/docs/settings.md +277 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +231 -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 +279 -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 +1379 -0
- package/examples/extensions/overlay-test.ts +153 -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 +175 -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 +1009 -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 +27 -0
- package/examples/sdk/02-custom-model.ts +54 -0
- package/examples/sdk/03-custom-prompt.ts +76 -0
- package/examples/sdk/04-skills.ts +60 -0
- package/examples/sdk/05-tools.ts +51 -0
- package/examples/sdk/06-extensions.ts +94 -0
- package/examples/sdk/07-context-files.ts +47 -0
- package/examples/sdk/08-prompt-templates.ts +56 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +46 -0
- package/examples/sdk/10-settings.ts +57 -0
- package/examples/sdk/11-sessions.ts +54 -0
- package/examples/sdk/12-full-control.ts +78 -0
- package/examples/sdk/13-session-runtime.ts +49 -0
- package/examples/sdk/README.md +95 -0
- package/npm-shrinkwrap.json +1789 -0
- package/package.json +98 -0
package/docs/sdk.md
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
> pi can help you use the SDK. Ask it to build an integration for your use case.
|
|
2
|
+
|
|
3
|
+
# SDK
|
|
4
|
+
|
|
5
|
+
The SDK provides programmatic access to pi's agent capabilities. Use `PiAgent` as the composition root for embedded apps, custom interfaces, automated workflows, and tests.
|
|
6
|
+
|
|
7
|
+
See [examples/sdk/](../examples/sdk/) for working examples from minimal to full control.
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import { AuthStorage, InMemorySessionManager, ModelRegistry, PiAgent } from "@fleetagent/pi-coding-agent";
|
|
13
|
+
|
|
14
|
+
const authStorage = AuthStorage.create();
|
|
15
|
+
const modelRegistry = ModelRegistry.create(authStorage);
|
|
16
|
+
const pi = await PiAgent.create({
|
|
17
|
+
sessionManager: new InMemorySessionManager(),
|
|
18
|
+
authStorage,
|
|
19
|
+
modelRegistry,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const session = await pi.createAgentSession();
|
|
23
|
+
|
|
24
|
+
session.subscribe((event) => {
|
|
25
|
+
if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") {
|
|
26
|
+
process.stdout.write(event.assistantMessageEvent.delta);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
await session.prompt("What files are in the current directory?");
|
|
31
|
+
await pi.dispose();
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Core Concepts
|
|
35
|
+
|
|
36
|
+
### PiAgent
|
|
37
|
+
|
|
38
|
+
`PiAgent` owns shared app services, the session lifecycle backend, and the current active `AgentSession`.
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
import { InMemorySessionManager, PiAgent } from "@fleetagent/pi-coding-agent";
|
|
42
|
+
|
|
43
|
+
const pi = await PiAgent.create({
|
|
44
|
+
sessionManager: new InMemorySessionManager(),
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
const session = await pi.createAgentSession();
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Most one-off session options can be passed directly to `PiAgent.create()`:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
const pi = await PiAgent.create({
|
|
54
|
+
cwd: process.cwd(),
|
|
55
|
+
model,
|
|
56
|
+
thinkingLevel: "high",
|
|
57
|
+
tools: ["read", "grep", "find", "ls"],
|
|
58
|
+
authStorage,
|
|
59
|
+
modelRegistry,
|
|
60
|
+
settingsManager,
|
|
61
|
+
resourceLoader,
|
|
62
|
+
sessionManager,
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Use `pi.createAgentSession({ session })` when you already have an opened or created `Session`.
|
|
67
|
+
|
|
68
|
+
### AgentSession
|
|
69
|
+
|
|
70
|
+
`AgentSession` owns active conversation behavior: prompts, message history, model state, compaction, event streaming, and in-place tree navigation.
|
|
71
|
+
|
|
72
|
+
Session replacement APIs such as new-session, resume, fork, clone, and import live on `PiAgent`, not on `AgentSession`.
|
|
73
|
+
|
|
74
|
+
### SessionManager and Session
|
|
75
|
+
|
|
76
|
+
`SessionManager` handles lifecycle and discovery: create, open, continue, list, fork, and import. It returns a `Session`.
|
|
77
|
+
|
|
78
|
+
`Session` owns active persisted conversation state and tree operations.
|
|
79
|
+
|
|
80
|
+
## Prompting
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
await session.prompt("What files are here?");
|
|
84
|
+
|
|
85
|
+
await session.prompt("What's in this image?", {
|
|
86
|
+
images: [{ type: "image", source: { type: "base64", mediaType: "image/png", data: "..." } }],
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
await session.prompt("After you're done, also check X", { streamingBehavior: "followUp" });
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Use `steer()` or `followUp()` for explicit queueing during streaming:
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
await session.steer("New instruction");
|
|
96
|
+
await session.followUp("After you're done, also do this");
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Events
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
const unsubscribe = session.subscribe((event) => {
|
|
103
|
+
if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") {
|
|
104
|
+
process.stdout.write(event.assistantMessageEvent.delta);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Subscriptions are attached to a specific `AgentSession`. Re-subscribe after `PiAgent` replaces the active session.
|
|
110
|
+
|
|
111
|
+
## Session Replacement
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { LocalSessionManager, PiAgent } from "@fleetagent/pi-coding-agent";
|
|
115
|
+
|
|
116
|
+
const pi = await PiAgent.create({
|
|
117
|
+
cwd: process.cwd(),
|
|
118
|
+
sessionManager: new LocalSessionManager({ cwd: process.cwd() }),
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
await pi.createAgentSession();
|
|
122
|
+
await pi.newSession();
|
|
123
|
+
await pi.switchSession("/path/to/session.jsonl");
|
|
124
|
+
await pi.fork("entry-id");
|
|
125
|
+
await pi.fork("entry-id", { position: "at" });
|
|
126
|
+
await pi.importFromJsonl("/path/to/old-session.jsonl");
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
After replacement, use `pi.session` for the new active `AgentSession`.
|
|
130
|
+
|
|
131
|
+
## Common Configuration
|
|
132
|
+
|
|
133
|
+
### Model
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
import { getModel } from "@fleetagent/pi-ai";
|
|
137
|
+
import { AuthStorage, ModelRegistry, PiAgent } from "@fleetagent/pi-coding-agent";
|
|
138
|
+
|
|
139
|
+
const authStorage = AuthStorage.create();
|
|
140
|
+
const modelRegistry = ModelRegistry.create(authStorage);
|
|
141
|
+
const model = getModel("anthropic", "claude-opus-4-5");
|
|
142
|
+
|
|
143
|
+
const pi = await PiAgent.create({
|
|
144
|
+
authStorage,
|
|
145
|
+
modelRegistry,
|
|
146
|
+
model,
|
|
147
|
+
thinkingLevel: "medium",
|
|
148
|
+
});
|
|
149
|
+
const session = await pi.createAgentSession();
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### API keys and OAuth
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
const authStorage = AuthStorage.create();
|
|
156
|
+
const modelRegistry = ModelRegistry.create(authStorage);
|
|
157
|
+
authStorage.setRuntimeApiKey("anthropic", "sk-my-temp-key");
|
|
158
|
+
|
|
159
|
+
const pi = await PiAgent.create({ authStorage, modelRegistry });
|
|
160
|
+
await pi.createAgentSession();
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Resource loading
|
|
164
|
+
|
|
165
|
+
Use `DefaultResourceLoader` to override or discover extensions, skills, prompt templates, themes, and context files.
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
const loader = new DefaultResourceLoader({
|
|
169
|
+
cwd: process.cwd(),
|
|
170
|
+
agentDir: getAgentDir(),
|
|
171
|
+
systemPromptOverride: () => "You are a helpful assistant.",
|
|
172
|
+
});
|
|
173
|
+
await loader.reload();
|
|
174
|
+
|
|
175
|
+
const pi = await PiAgent.create({ resourceLoader: loader });
|
|
176
|
+
await pi.createAgentSession();
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Tools
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
const pi = await PiAgent.create({
|
|
183
|
+
tools: ["read", "grep", "find", "ls"],
|
|
184
|
+
noTools: "builtin",
|
|
185
|
+
customTools: [myTool],
|
|
186
|
+
});
|
|
187
|
+
await pi.createAgentSession();
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Built-in tool names: `read`, `bash`, `edit`, `write`, `grep`, `find`, `ls`.
|
|
191
|
+
|
|
192
|
+
### Settings
|
|
193
|
+
|
|
194
|
+
```typescript
|
|
195
|
+
const settingsManager = SettingsManager.inMemory({
|
|
196
|
+
compaction: { enabled: false },
|
|
197
|
+
retry: { enabled: true, maxRetries: 2 },
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
const pi = await PiAgent.create({ settingsManager });
|
|
201
|
+
await pi.createAgentSession();
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Run Modes
|
|
205
|
+
|
|
206
|
+
The SDK exports run mode utilities for building custom interfaces on top of `PiAgent`.
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
import { InteractiveMode, LocalSessionManager, PiAgent, runPrintMode, runRpcMode } from "@fleetagent/pi-coding-agent";
|
|
210
|
+
|
|
211
|
+
const pi = await PiAgent.create({
|
|
212
|
+
cwd: process.cwd(),
|
|
213
|
+
sessionManager: new LocalSessionManager({ cwd: process.cwd() }),
|
|
214
|
+
});
|
|
215
|
+
await pi.createAgentSession();
|
|
216
|
+
|
|
217
|
+
await runPrintMode(pi, {
|
|
218
|
+
mode: "text",
|
|
219
|
+
initialMessage: "Hello",
|
|
220
|
+
initialImages: [],
|
|
221
|
+
messages: [],
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
await runRpcMode(pi);
|
|
225
|
+
|
|
226
|
+
const mode = new InteractiveMode(pi, {
|
|
227
|
+
migratedProviders: [],
|
|
228
|
+
modelFallbackMessage: pi.modelFallbackMessage,
|
|
229
|
+
initialMessage: "Hello",
|
|
230
|
+
initialImages: [],
|
|
231
|
+
initialMessages: [],
|
|
232
|
+
});
|
|
233
|
+
await mode.run();
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
See [RPC documentation](rpc.md) for the JSON protocol.
|
|
237
|
+
|
|
238
|
+
## Main Exports
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
PiAgent
|
|
242
|
+
AgentSession
|
|
243
|
+
AuthStorage
|
|
244
|
+
ModelRegistry
|
|
245
|
+
DefaultResourceLoader
|
|
246
|
+
defineTool
|
|
247
|
+
InMemorySessionManager
|
|
248
|
+
LocalSessionManager
|
|
249
|
+
SettingsManager
|
|
250
|
+
createEventBus
|
|
251
|
+
createCodingTools
|
|
252
|
+
createReadOnlyTools
|
|
253
|
+
createReadTool, createBashTool, createEditTool, createWriteTool
|
|
254
|
+
createGrepTool, createFindTool, createLsTool
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
For extension types, see [extensions.md](extensions.md).
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
# Session File Format
|
|
2
|
+
|
|
3
|
+
Sessions are stored as JSONL (JSON Lines) files. Each line is a JSON object with a `type` field. Session entries form a tree structure via `id`/`parentId` fields, enabling in-place branching without creating new files.
|
|
4
|
+
|
|
5
|
+
## File Location
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
~/.pi/agent/sessions/--<path>--/<timestamp>_<uuid>.jsonl
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Where `<path>` is the working directory with `/` replaced by `-`.
|
|
12
|
+
|
|
13
|
+
## Deleting Sessions
|
|
14
|
+
|
|
15
|
+
Sessions can be removed by deleting their `.jsonl` files under `~/.pi/agent/sessions/`.
|
|
16
|
+
|
|
17
|
+
Pi also supports deleting sessions interactively from `/resume` (select a session and press `Ctrl+D`, then confirm). When available, pi uses the `trash` CLI to avoid permanent deletion.
|
|
18
|
+
|
|
19
|
+
## Session Version
|
|
20
|
+
|
|
21
|
+
Sessions have a version field in the header:
|
|
22
|
+
|
|
23
|
+
- **Version 1**: Linear entry sequence (legacy, auto-migrated on load)
|
|
24
|
+
- **Version 2**: Tree structure with `id`/`parentId` linking
|
|
25
|
+
- **Version 3**: Renamed `hookMessage` role to `custom` (extensions unification)
|
|
26
|
+
|
|
27
|
+
Existing sessions are automatically migrated to the current version (v3) when loaded.
|
|
28
|
+
|
|
29
|
+
## Source Files
|
|
30
|
+
|
|
31
|
+
Source on GitHub ([pi-mono](https://github.com/earendil-works/pi-mono)):
|
|
32
|
+
- [`packages/coding-agent/src/core/session-manager.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/session-manager.ts) - Session entry types and SessionManager
|
|
33
|
+
- [`packages/coding-agent/src/core/messages.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/messages.ts) - Extended message types (BashExecutionMessage, CustomMessage, etc.)
|
|
34
|
+
- [`packages/ai/src/types.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/types.ts) - Base message types (UserMessage, AssistantMessage, ToolResultMessage)
|
|
35
|
+
- [`packages/agent/src/types.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/agent/src/types.ts) - AgentMessage union type
|
|
36
|
+
|
|
37
|
+
For TypeScript definitions in your project, inspect `node_modules/@fleetagent/pi-coding-agent/dist/` and `node_modules/@fleetagent/pi-ai/dist/`.
|
|
38
|
+
|
|
39
|
+
## Message Types
|
|
40
|
+
|
|
41
|
+
Session entries contain `AgentMessage` objects. Understanding these types is essential for parsing sessions and writing extensions.
|
|
42
|
+
|
|
43
|
+
### Content Blocks
|
|
44
|
+
|
|
45
|
+
Messages contain arrays of typed content blocks:
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
interface TextContent {
|
|
49
|
+
type: "text";
|
|
50
|
+
text: string;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface ImageContent {
|
|
54
|
+
type: "image";
|
|
55
|
+
data: string; // base64 encoded
|
|
56
|
+
mimeType: string; // e.g., "image/jpeg", "image/png"
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
interface ThinkingContent {
|
|
60
|
+
type: "thinking";
|
|
61
|
+
thinking: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface ToolCall {
|
|
65
|
+
type: "toolCall";
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
arguments: Record<string, any>;
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Base Message Types (from pi-ai)
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
interface UserMessage {
|
|
76
|
+
role: "user";
|
|
77
|
+
content: string | (TextContent | ImageContent)[];
|
|
78
|
+
timestamp: number; // Unix ms
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
interface AssistantMessage {
|
|
82
|
+
role: "assistant";
|
|
83
|
+
content: (TextContent | ThinkingContent | ToolCall)[];
|
|
84
|
+
api: string;
|
|
85
|
+
provider: string;
|
|
86
|
+
model: string;
|
|
87
|
+
usage: Usage;
|
|
88
|
+
stopReason: "stop" | "length" | "toolUse" | "error" | "aborted";
|
|
89
|
+
errorMessage?: string;
|
|
90
|
+
timestamp: number;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
interface ToolResultMessage {
|
|
94
|
+
role: "toolResult";
|
|
95
|
+
toolCallId: string;
|
|
96
|
+
toolName: string;
|
|
97
|
+
content: (TextContent | ImageContent)[];
|
|
98
|
+
details?: any; // Tool-specific metadata
|
|
99
|
+
isError: boolean;
|
|
100
|
+
timestamp: number;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
interface Usage {
|
|
104
|
+
input: number;
|
|
105
|
+
output: number;
|
|
106
|
+
cacheRead: number;
|
|
107
|
+
cacheWrite: number;
|
|
108
|
+
totalTokens: number;
|
|
109
|
+
cost: {
|
|
110
|
+
input: number;
|
|
111
|
+
output: number;
|
|
112
|
+
cacheRead: number;
|
|
113
|
+
cacheWrite: number;
|
|
114
|
+
total: number;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Extended Message Types (from pi-coding-agent)
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
interface BashExecutionMessage {
|
|
123
|
+
role: "bashExecution";
|
|
124
|
+
command: string;
|
|
125
|
+
output: string;
|
|
126
|
+
exitCode: number | undefined;
|
|
127
|
+
cancelled: boolean;
|
|
128
|
+
truncated: boolean;
|
|
129
|
+
fullOutputPath?: string;
|
|
130
|
+
excludeFromContext?: boolean; // true for !! prefix commands
|
|
131
|
+
timestamp: number;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
interface CustomMessage {
|
|
135
|
+
role: "custom";
|
|
136
|
+
customType: string; // Extension identifier
|
|
137
|
+
content: string | (TextContent | ImageContent)[];
|
|
138
|
+
display: boolean; // Show in TUI
|
|
139
|
+
details?: any; // Extension-specific metadata
|
|
140
|
+
timestamp: number;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
interface BranchSummaryMessage {
|
|
144
|
+
role: "branchSummary";
|
|
145
|
+
summary: string;
|
|
146
|
+
fromId: string; // Entry we branched from
|
|
147
|
+
timestamp: number;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
interface CompactionSummaryMessage {
|
|
151
|
+
role: "compactionSummary";
|
|
152
|
+
summary: string;
|
|
153
|
+
tokensBefore: number;
|
|
154
|
+
timestamp: number;
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### AgentMessage Union
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
type AgentMessage =
|
|
162
|
+
| UserMessage
|
|
163
|
+
| AssistantMessage
|
|
164
|
+
| ToolResultMessage
|
|
165
|
+
| BashExecutionMessage
|
|
166
|
+
| CustomMessage
|
|
167
|
+
| BranchSummaryMessage
|
|
168
|
+
| CompactionSummaryMessage;
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Entry Base
|
|
172
|
+
|
|
173
|
+
All entries (except `SessionHeader`) extend `SessionEntryBase`:
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
interface SessionEntryBase {
|
|
177
|
+
type: string;
|
|
178
|
+
id: string; // 8-char hex ID
|
|
179
|
+
parentId: string | null; // Parent entry ID (null for first entry)
|
|
180
|
+
timestamp: string; // ISO timestamp
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Entry Types
|
|
185
|
+
|
|
186
|
+
### SessionHeader
|
|
187
|
+
|
|
188
|
+
First line of the file. Metadata only, not part of the tree (no `id`/`parentId`).
|
|
189
|
+
|
|
190
|
+
```json
|
|
191
|
+
{"type":"session","version":3,"id":"uuid","timestamp":"2024-12-03T14:00:00.000Z","cwd":"/path/to/project"}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
For sessions with a parent (created via `/fork`, `/clone`, or `newSession({ parentSession })`):
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{"type":"session","version":3,"id":"uuid","timestamp":"2024-12-03T14:00:00.000Z","cwd":"/path/to/project","parentSession":"/path/to/original/session.jsonl"}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### SessionMessageEntry
|
|
201
|
+
|
|
202
|
+
A message in the conversation. The `message` field contains an `AgentMessage`.
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{"type":"message","id":"a1b2c3d4","parentId":"prev1234","timestamp":"2024-12-03T14:00:01.000Z","message":{"role":"user","content":"Hello"}}
|
|
206
|
+
{"type":"message","id":"b2c3d4e5","parentId":"a1b2c3d4","timestamp":"2024-12-03T14:00:02.000Z","message":{"role":"assistant","content":[{"type":"text","text":"Hi!"}],"provider":"anthropic","model":"claude-sonnet-4-5","usage":{...},"stopReason":"stop"}}
|
|
207
|
+
{"type":"message","id":"c3d4e5f6","parentId":"b2c3d4e5","timestamp":"2024-12-03T14:00:03.000Z","message":{"role":"toolResult","toolCallId":"call_123","toolName":"bash","content":[{"type":"text","text":"output"}],"isError":false}}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### ModelChangeEntry
|
|
211
|
+
|
|
212
|
+
Emitted when the user switches models mid-session.
|
|
213
|
+
|
|
214
|
+
```json
|
|
215
|
+
{"type":"model_change","id":"d4e5f6g7","parentId":"c3d4e5f6","timestamp":"2024-12-03T14:05:00.000Z","provider":"openai","modelId":"gpt-4o"}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### ThinkingLevelChangeEntry
|
|
219
|
+
|
|
220
|
+
Emitted when the user changes the thinking/reasoning level.
|
|
221
|
+
|
|
222
|
+
```json
|
|
223
|
+
{"type":"thinking_level_change","id":"e5f6g7h8","parentId":"d4e5f6g7","timestamp":"2024-12-03T14:06:00.000Z","thinkingLevel":"high"}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### CompactionEntry
|
|
227
|
+
|
|
228
|
+
Created when context is compacted. Stores a summary of earlier messages.
|
|
229
|
+
|
|
230
|
+
```json
|
|
231
|
+
{"type":"compaction","id":"f6g7h8i9","parentId":"e5f6g7h8","timestamp":"2024-12-03T14:10:00.000Z","summary":"User discussed X, Y, Z...","firstKeptEntryId":"c3d4e5f6","tokensBefore":50000}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Optional fields:
|
|
235
|
+
- `details`: Implementation-specific data (e.g., `{ readFiles: string[], modifiedFiles: string[] }` for default, or custom data for extensions)
|
|
236
|
+
- `fromHook`: `true` if generated by an extension, `false`/`undefined` if pi-generated (legacy field name)
|
|
237
|
+
|
|
238
|
+
### BranchSummaryEntry
|
|
239
|
+
|
|
240
|
+
Created when switching branches via `/tree` with an LLM generated summary of the left branch up to the common ancestor. Captures context from the abandoned path.
|
|
241
|
+
|
|
242
|
+
```json
|
|
243
|
+
{"type":"branch_summary","id":"g7h8i9j0","parentId":"a1b2c3d4","timestamp":"2024-12-03T14:15:00.000Z","fromId":"f6g7h8i9","summary":"Branch explored approach A..."}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Optional fields:
|
|
247
|
+
- `details`: File tracking data (`{ readFiles: string[], modifiedFiles: string[] }`) for default, or custom data for extensions
|
|
248
|
+
- `fromHook`: `true` if generated by an extension, `false`/`undefined` if pi-generated (legacy field name)
|
|
249
|
+
|
|
250
|
+
### CustomEntry
|
|
251
|
+
|
|
252
|
+
Extension state persistence. Does NOT participate in LLM context.
|
|
253
|
+
|
|
254
|
+
```json
|
|
255
|
+
{"type":"custom","id":"h8i9j0k1","parentId":"g7h8i9j0","timestamp":"2024-12-03T14:20:00.000Z","customType":"my-extension","data":{"count":42}}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Use `customType` to identify your extension's entries on reload.
|
|
259
|
+
|
|
260
|
+
### CustomMessageEntry
|
|
261
|
+
|
|
262
|
+
Extension-injected messages that DO participate in LLM context.
|
|
263
|
+
|
|
264
|
+
```json
|
|
265
|
+
{"type":"custom_message","id":"i9j0k1l2","parentId":"h8i9j0k1","timestamp":"2024-12-03T14:25:00.000Z","customType":"my-extension","content":"Injected context...","display":true}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Fields:
|
|
269
|
+
- `content`: String or `(TextContent | ImageContent)[]` (same as UserMessage)
|
|
270
|
+
- `display`: `true` = show in TUI with distinct styling, `false` = hidden
|
|
271
|
+
- `details`: Optional extension-specific metadata (not sent to LLM)
|
|
272
|
+
|
|
273
|
+
### LabelEntry
|
|
274
|
+
|
|
275
|
+
User-defined bookmark/marker on an entry.
|
|
276
|
+
|
|
277
|
+
```json
|
|
278
|
+
{"type":"label","id":"j0k1l2m3","parentId":"i9j0k1l2","timestamp":"2024-12-03T14:30:00.000Z","targetId":"a1b2c3d4","label":"checkpoint-1"}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Set `label` to `undefined` to clear a label.
|
|
282
|
+
|
|
283
|
+
### SessionInfoEntry
|
|
284
|
+
|
|
285
|
+
Session metadata (e.g., user-defined display name). Set via `/name` command or `pi.setSessionName()` in extensions.
|
|
286
|
+
|
|
287
|
+
```json
|
|
288
|
+
{"type":"session_info","id":"k1l2m3n4","parentId":"j0k1l2m3","timestamp":"2024-12-03T14:35:00.000Z","name":"Refactor auth module"}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
The session name is displayed in the session selector (`/resume`) instead of the first message when set.
|
|
292
|
+
|
|
293
|
+
## Tree Structure
|
|
294
|
+
|
|
295
|
+
Entries form a tree:
|
|
296
|
+
- First entry has `parentId: null`
|
|
297
|
+
- Each subsequent entry points to its parent via `parentId`
|
|
298
|
+
- Branching creates new children from an earlier entry
|
|
299
|
+
- The "leaf" is the current position in the tree
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
[user msg] ─── [assistant] ─── [user msg] ─── [assistant] ─┬─ [user msg] ← current leaf
|
|
303
|
+
│
|
|
304
|
+
└─ [branch_summary] ─── [user msg] ← alternate branch
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
## Context Building
|
|
308
|
+
|
|
309
|
+
`buildSessionContext()` walks from the current leaf to the root, producing the message list for the LLM:
|
|
310
|
+
|
|
311
|
+
1. Collects all entries on the path
|
|
312
|
+
2. Extracts current model and thinking level settings
|
|
313
|
+
3. If a `CompactionEntry` is on the path:
|
|
314
|
+
- Emits the summary first
|
|
315
|
+
- Then messages from `firstKeptEntryId` to compaction
|
|
316
|
+
- Then messages after compaction
|
|
317
|
+
4. Converts `BranchSummaryEntry` and `CustomMessageEntry` to appropriate message formats
|
|
318
|
+
|
|
319
|
+
## Parsing Example
|
|
320
|
+
|
|
321
|
+
```typescript
|
|
322
|
+
import { readFileSync } from "fs";
|
|
323
|
+
|
|
324
|
+
const lines = readFileSync("session.jsonl", "utf8").trim().split("\n");
|
|
325
|
+
|
|
326
|
+
for (const line of lines) {
|
|
327
|
+
const entry = JSON.parse(line);
|
|
328
|
+
|
|
329
|
+
switch (entry.type) {
|
|
330
|
+
case "session":
|
|
331
|
+
console.log(`Session v${entry.version ?? 1}: ${entry.id}`);
|
|
332
|
+
break;
|
|
333
|
+
case "message":
|
|
334
|
+
console.log(`[${entry.id}] ${entry.message.role}: ${JSON.stringify(entry.message.content)}`);
|
|
335
|
+
break;
|
|
336
|
+
case "compaction":
|
|
337
|
+
console.log(`[${entry.id}] Compaction: ${entry.tokensBefore} tokens summarized`);
|
|
338
|
+
break;
|
|
339
|
+
case "branch_summary":
|
|
340
|
+
console.log(`[${entry.id}] Branch from ${entry.fromId}`);
|
|
341
|
+
break;
|
|
342
|
+
case "custom":
|
|
343
|
+
console.log(`[${entry.id}] Custom (${entry.customType}): ${JSON.stringify(entry.data)}`);
|
|
344
|
+
break;
|
|
345
|
+
case "custom_message":
|
|
346
|
+
console.log(`[${entry.id}] Extension message (${entry.customType}): ${entry.content}`);
|
|
347
|
+
break;
|
|
348
|
+
case "label":
|
|
349
|
+
console.log(`[${entry.id}] Label "${entry.label}" on ${entry.targetId}`);
|
|
350
|
+
break;
|
|
351
|
+
case "model_change":
|
|
352
|
+
console.log(`[${entry.id}] Model: ${entry.provider}/${entry.modelId}`);
|
|
353
|
+
break;
|
|
354
|
+
case "thinking_level_change":
|
|
355
|
+
console.log(`[${entry.id}] Thinking: ${entry.thinkingLevel}`);
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
## SessionManager API
|
|
362
|
+
|
|
363
|
+
Key methods for working with sessions programmatically.
|
|
364
|
+
|
|
365
|
+
### Static Creation Methods
|
|
366
|
+
- `LocalSessionManager.create(cwd, sessionDir?)` - New session
|
|
367
|
+
- `LocalSessionManager.openReference(path, sessionDir?)` - Open existing session file
|
|
368
|
+
- `LocalSessionManager.continueRecent(cwd, sessionDir?)` - Continue most recent or create new
|
|
369
|
+
- `InMemorySessionManager.create(cwd?)` - No file persistence
|
|
370
|
+
- `LocalSessionManager.forkFrom(sourcePath, targetCwd, sessionDir?)` - Fork session from another project
|
|
371
|
+
|
|
372
|
+
### Static Listing Methods
|
|
373
|
+
- `LocalSessionManager.list(cwd, sessionDir?, onProgress?)` - List sessions for a directory
|
|
374
|
+
- `LocalSessionManager.listAll(onProgress?)` - List all sessions across all projects
|
|
375
|
+
|
|
376
|
+
### Instance Methods - Session Management
|
|
377
|
+
- `newSession(options?)` - Start a new session (options: `{ parentSession?: string }`)
|
|
378
|
+
- `setSessionFile(path)` - Switch to a different session file
|
|
379
|
+
- `createBranchedSession(leafId)` - Extract branch to new session file
|
|
380
|
+
|
|
381
|
+
### Instance Methods - Appending (all return entry ID)
|
|
382
|
+
- `appendMessage(message)` - Add message
|
|
383
|
+
- `appendThinkingLevelChange(level)` - Record thinking change
|
|
384
|
+
- `appendModelChange(provider, modelId)` - Record model change
|
|
385
|
+
- `appendCompaction(summary, firstKeptEntryId, tokensBefore, details?, fromHook?)` - Add compaction
|
|
386
|
+
- `appendCustomEntry(customType, data?)` - Extension state (not in context)
|
|
387
|
+
- `appendSessionInfo(name)` - Set session display name
|
|
388
|
+
- `appendCustomMessageEntry(customType, content, display, details?)` - Extension message (in context)
|
|
389
|
+
- `appendLabelChange(targetId, label)` - Set/clear label
|
|
390
|
+
|
|
391
|
+
### Instance Methods - Tree Navigation
|
|
392
|
+
- `getLeafId()` - Current position
|
|
393
|
+
- `getLeafEntry()` - Get current leaf entry
|
|
394
|
+
- `getEntry(id)` - Get entry by ID
|
|
395
|
+
- `getBranch(fromId?)` - Walk from entry to root
|
|
396
|
+
- `getTree()` - Get full tree structure
|
|
397
|
+
- `getChildren(parentId)` - Get direct children
|
|
398
|
+
- `getLabel(id)` - Get label for entry
|
|
399
|
+
- `branch(entryId)` - Move leaf to earlier entry
|
|
400
|
+
- `resetLeaf()` - Reset leaf to null (before any entries)
|
|
401
|
+
- `branchWithSummary(entryId, summary, details?, fromHook?)` - Branch with context summary
|
|
402
|
+
|
|
403
|
+
### Instance Methods - Context & Info
|
|
404
|
+
- `buildSessionContext()` - Get messages, thinkingLevel, and model for LLM
|
|
405
|
+
- `getEntries()` - All entries (excluding header)
|
|
406
|
+
- `getHeader()` - Session header metadata
|
|
407
|
+
- `getSessionName()` - Get display name from latest session_info entry
|
|
408
|
+
- `getCwd()` - Working directory
|
|
409
|
+
- `getSessionDir()` - Session storage directory
|
|
410
|
+
- `getSessionId()` - Session UUID
|
|
411
|
+
- `getSessionFile()` - Session file path (undefined for in-memory)
|
|
412
|
+
- `isPersisted()` - Whether session is saved to disk
|