@selesai/code 0.10.2 → 0.12.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 +34 -0
- package/dist/cli/credential-print.js +4 -4
- package/dist/cli/startup-ui.js +2 -1
- package/dist/cli.js +0 -0
- package/dist/core/agent-session.d.ts +12 -1
- package/dist/core/agent-session.js +77 -9
- package/dist/core/compaction/branch-summarization.js +34 -33
- package/dist/core/compaction/compaction.d.ts +5 -0
- package/dist/core/compaction/compaction.js +100 -85
- package/dist/core/compaction/utils.js +2 -2
- package/dist/core/export-html/template.css +1066 -1066
- package/dist/core/export-html/template.html +55 -55
- package/dist/core/export-html/template.js +1864 -1864
- package/dist/core/export-html/vendor/highlight.min.js +1212 -1212
- package/dist/core/export-html/vendor/marked.min.js +78 -78
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/runner.d.ts +5 -0
- package/dist/core/extensions/runner.js +48 -1
- package/dist/core/extensions/types.d.ts +18 -1
- package/dist/core/llama/client.d.ts +6 -0
- package/dist/core/llama/client.js +7 -0
- package/dist/core/llama/provider.d.ts +3 -1
- package/dist/core/llama/provider.js +28 -6
- package/dist/core/messages.js +7 -7
- package/dist/core/session-manager.js +4 -2
- package/dist/core/settings-manager.d.ts +8 -1
- package/dist/core/settings-manager.js +17 -0
- package/dist/defaults/models.json +32 -9
- package/dist/defaults/settings.json +0 -3
- package/dist/extensions/auto-session-name.test.ts +157 -0
- package/dist/extensions/auto-session-name.ts +96 -0
- package/dist/extensions/context-compaction-reminder.test.ts +82 -82
- package/dist/extensions/context-compaction-reminder.ts +28 -28
- package/dist/extensions/cost-reconcile.test.ts +76 -0
- package/dist/extensions/cost-reconcile.ts +278 -0
- package/dist/extensions/enable-readonly-tools.test.ts +11 -0
- package/dist/extensions/enable-readonly-tools.ts +7 -3
- package/dist/extensions/package.json +3 -0
- package/dist/extensions/pi-intercom/LICENSE +21 -21
- package/dist/extensions/pi-intercom/broker/client.test.ts +83 -83
- package/dist/extensions/pi-intercom/broker/framing.test.ts +114 -114
- package/dist/extensions/pi-intercom/broker/paths.ts +134 -134
- package/dist/extensions/pi-intercom/broker/runtime-claim.test.ts +34 -34
- package/dist/extensions/pi-intercom/broker/runtime-claim.ts +21 -21
- package/dist/extensions/pi-intercom/cwd.test.ts +40 -40
- package/dist/extensions/pi-intercom/cwd.ts +31 -31
- package/dist/extensions/pi-intercom/format-context.test.ts +31 -31
- package/dist/extensions/pi-intercom/format-context.ts +32 -32
- package/dist/extensions/pi-intercom/test/overlay-width.test.ts +66 -66
- package/dist/extensions/pi-intercom/ui/compose.ts +143 -143
- package/dist/extensions/pi-intercom/ui/session-list.ts +166 -166
- package/dist/extensions/pi-rewind-hook/README.md +245 -245
- package/dist/extensions/pi-rewind-hook/index.ts +1445 -1445
- package/dist/extensions/pi-rewind-hook/package.json +29 -29
- package/dist/extensions/pi-subagents/install.mjs +0 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/cli.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/restore-sandbox-env.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/args.d.ts +57 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/config-selector.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/file-processor.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/initial-message.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/list-models.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/project-trust.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/session-picker.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/startup-ui.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/config.d.ts +96 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-runtime.d.ts +119 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-services.d.ts +85 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session.d.ts +620 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-guidance.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-storage.d.ts +56 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/bash-executor.d.ts +32 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/cache-stats.d.ts +49 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/branch-summarization.d.ts +93 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/compaction.d.ts +128 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/index.d.ts +7 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/utils.d.ts +38 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/defaults.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/diagnostics.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/event-bus.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/exec.d.ts +29 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/experimental.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/index.d.ts +37 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/index.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/loader.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/runner.d.ts +171 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/types.d.ts +1261 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/footer-data-provider.d.ts +54 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/http-dispatcher.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/index.d.ts +13 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/keybindings.d.ts +358 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/messages.d.ts +77 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-config.d.ts +512 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-registry.d.ts +43 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-resolver.d.ts +121 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-runtime.d.ts +82 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/models-store.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/output-guard.d.ts +7 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/package-manager.d.ts +210 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/project-trust.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/prompt-templates.d.ts +54 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-attribution.d.ts +4 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-composer.d.ts +55 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/radius.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/remote-catalog-provider.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resolve-config-value.d.ts +30 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resource-loader.d.ts +206 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/runtime-credentials.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/sdk.d.ts +106 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-cwd.d.ts +19 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-manager.d.ts +356 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/settings-manager.d.ts +297 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/skills.d.ts +60 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/slash-commands.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/source-info.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/system-prompt.d.ts +28 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/telemetry.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/timings.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/bash.d.ts +68 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit-diff.d.ts +106 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit.d.ts +51 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/find.d.ts +35 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/grep.d.ts +37 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/index.d.ts +40 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/ls.d.ts +37 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/path-utils.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/read.d.ts +35 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/render-utils.d.ts +24 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/truncate.d.ts +70 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/write.d.ts +26 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/trust-manager.d.ts +36 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/usage-totals.d.ts +19 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/client.d.ts +61 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/huggingface.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/index.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/provider.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/ui.d.ts +42 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/index.d.ts +35 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/main.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/migrations.d.ts +33 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/index.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/assistant-message.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/config-selector.d.ts +102 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-entry.d.ts +19 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-editor.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-selector.d.ts +26 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/footer.d.ts +32 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/index.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/login-dialog.d.ts +52 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/model-selector.d.ts +54 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector.d.ts +95 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/settings-selector.d.ts +77 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/status-indicator.d.ts +28 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tool-execution.d.ts +63 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tree-selector.d.ts +94 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/trust-selector.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message.d.ts +14 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/interactive-mode.d.ts +394 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/model-search.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme-controller.d.ts +29 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme.d.ts +120 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/print-mode.d.ts +28 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-client.d.ts +246 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-types.d.ts +457 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/package-manager-cli.d.ts +8 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/rpc-entry.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/ansi.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/changelog.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/child-process.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-native.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard.d.ts +4 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/deprecation.d.ts +4 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/frontmatter.d.ts +8 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/fs-watch.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/git.d.ts +26 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/html.d.ts +7 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-convert.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-process.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/json.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/mime.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/open-browser.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/paths.d.ts +31 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/photon.d.ts +21 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/pi-user-agent.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/shell.d.ts +31 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/sleep.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/syntax-highlight.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/tools-manager.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/version-check.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/extensions/pi-tool-display/CHANGELOG.md +329 -0
- package/dist/extensions/pi-tool-display/LICENSE +21 -0
- package/dist/extensions/pi-tool-display/README.md +417 -0
- package/dist/extensions/pi-tool-display/config/config.example.json +40 -0
- package/dist/extensions/pi-tool-display/index.ts +3 -0
- package/dist/extensions/pi-tool-display/package-lock.json +2555 -0
- package/dist/extensions/pi-tool-display/package.json +86 -0
- package/dist/extensions/pi-tool-display/src/agent-dir.ts +35 -0
- package/dist/extensions/pi-tool-display/src/ansi-utils.ts +116 -0
- package/dist/extensions/pi-tool-display/src/bash-display.ts +213 -0
- package/dist/extensions/pi-tool-display/src/capabilities.ts +88 -0
- package/dist/extensions/pi-tool-display/src/config-modal.ts +541 -0
- package/dist/extensions/pi-tool-display/src/config-store.ts +304 -0
- package/dist/extensions/pi-tool-display/src/debug-logger.ts +150 -0
- package/dist/extensions/pi-tool-display/src/diff-presentation.ts +72 -0
- package/dist/extensions/pi-tool-display/src/diff-renderer.ts +2517 -0
- package/dist/extensions/pi-tool-display/src/disposable.ts +34 -0
- package/dist/extensions/pi-tool-display/src/extension-lifecycle.ts +14 -0
- package/dist/extensions/pi-tool-display/src/index.ts +109 -0
- package/dist/extensions/pi-tool-display/src/line-width-safety.ts +93 -0
- package/dist/extensions/pi-tool-display/src/modal-icons.ts +57 -0
- package/dist/extensions/pi-tool-display/src/pending-diff-preview.ts +370 -0
- package/dist/extensions/pi-tool-display/src/presets.ts +117 -0
- package/dist/extensions/pi-tool-display/src/render-utils.ts +186 -0
- package/dist/extensions/pi-tool-display/src/settings-inspector-modal.ts +475 -0
- package/dist/extensions/pi-tool-display/src/thinking-label.ts +343 -0
- package/dist/extensions/pi-tool-display/src/tool-call-box.ts +181 -0
- package/dist/extensions/pi-tool-display/src/tool-metadata.ts +139 -0
- package/dist/extensions/pi-tool-display/src/tool-overrides.ts +2168 -0
- package/dist/extensions/pi-tool-display/src/types.ts +109 -0
- package/dist/extensions/pi-tool-display/src/user-message-box-markdown.ts +64 -0
- package/dist/extensions/pi-tool-display/src/user-message-box-native.ts +66 -0
- package/dist/extensions/pi-tool-display/src/user-message-box-patch.ts +72 -0
- package/dist/extensions/pi-tool-display/src/user-message-box-renderer.ts +419 -0
- package/dist/extensions/pi-tool-display/src/user-message-box-utils.ts +106 -0
- package/dist/extensions/pi-tool-display/src/write-display-utils.ts +31 -0
- package/dist/extensions/pi-tool-display/src/zellij-modal.ts +1027 -0
- package/dist/extensions/pi-tool-display/tests/active-backlog-red.test.ts +65 -0
- package/dist/extensions/pi-tool-display/tests/ansi-utils.test.ts +345 -0
- package/dist/extensions/pi-tool-display/tests/bash-display.test.ts +442 -0
- package/dist/extensions/pi-tool-display/tests/capabilities-edge.test.ts +360 -0
- package/dist/extensions/pi-tool-display/tests/capabilities.test.ts +54 -0
- package/dist/extensions/pi-tool-display/tests/config-modal.test.ts +360 -0
- package/dist/extensions/pi-tool-display/tests/config-store.test.ts +87 -0
- package/dist/extensions/pi-tool-display/tests/custom-tool-overrides.test.ts +415 -0
- package/dist/extensions/pi-tool-display/tests/debug-logger-edge.test.ts +630 -0
- package/dist/extensions/pi-tool-display/tests/debug-logger.test.ts +62 -0
- package/dist/extensions/pi-tool-display/tests/diff-renderer-ansi.test.ts +55 -0
- package/dist/extensions/pi-tool-display/tests/diff-renderer-edge.test.ts +886 -0
- package/dist/extensions/pi-tool-display/tests/diff-renderer-numbering.test.ts +135 -0
- package/dist/extensions/pi-tool-display/tests/diff-renderer-width.test.ts +454 -0
- package/dist/extensions/pi-tool-display/tests/diff-renderer-wrap.test.ts +169 -0
- package/dist/extensions/pi-tool-display/tests/index-integration.test.ts +354 -0
- package/dist/extensions/pi-tool-display/tests/pending-diff-preview.test.ts +79 -0
- package/dist/extensions/pi-tool-display/tests/presets-edge.test.ts +229 -0
- package/dist/extensions/pi-tool-display/tests/presets.test.ts +26 -0
- package/dist/extensions/pi-tool-display/tests/reload-behavior.test.ts +1241 -0
- package/dist/extensions/pi-tool-display/tests/render-utils.test.ts +710 -0
- package/dist/extensions/pi-tool-display/tests/settings-inspector.test.ts +450 -0
- package/dist/extensions/pi-tool-display/tests/thinking-label-edge.test.ts +904 -0
- package/dist/extensions/pi-tool-display/tests/thinking-label.test.ts +72 -0
- package/dist/extensions/pi-tool-display/tests/tool-call-box.test.ts +105 -0
- package/dist/extensions/pi-tool-display/tests/tool-overrides-config.test.ts +613 -0
- package/dist/extensions/pi-tool-display/tests/tool-overrides-mcp.test.ts +499 -0
- package/dist/extensions/pi-tool-display/tests/tool-overrides-registration.test.ts +315 -0
- package/dist/extensions/pi-tool-display/tests/tool-overrides-write-meta.test.ts +68 -0
- package/dist/extensions/pi-tool-display/tests/tool-ui-utils.test.ts +413 -0
- package/dist/extensions/pi-tool-display/tests/user-message-box-performance-red.test.ts +176 -0
- package/dist/extensions/pi-tool-display/tests/user-message-box.test.ts +908 -0
- package/dist/extensions/pi-tool-display/tests/zellij-modal.test.ts +848 -0
- package/dist/extensions/pi-tool-display/tool-display-api-consumer.d.ts +30 -0
- package/dist/extensions/pi-tool-display/tool-display-api-consumer.js +40 -0
- package/dist/extensions/pi-web-agent/package.json +31 -31
- package/dist/extensions/pi-web-agent/src/backends/config.ts +205 -205
- package/dist/extensions/pi-web-agent/src/backends/doctor.ts +136 -136
- package/dist/extensions/pi-web-agent/src/backends/factory.ts +152 -152
- package/dist/extensions/pi-web-agent/src/backends/settings-reader.ts +25 -25
- package/dist/extensions/pi-web-agent/src/cache/ttl-cache.ts +28 -28
- package/dist/extensions/pi-web-agent/src/changelog-notice.ts +136 -136
- package/dist/extensions/pi-web-agent/src/commands/web-agent-config.ts +946 -946
- package/dist/extensions/pi-web-agent/src/extension.ts +126 -126
- package/dist/extensions/pi-web-agent/src/extract/readability.ts +118 -118
- package/dist/extensions/pi-web-agent/src/fetch/browser-resolution.ts +199 -199
- package/dist/extensions/pi-web-agent/src/fetch/firecrawl-fetch.ts +100 -100
- package/dist/extensions/pi-web-agent/src/fetch/headless-fetch.ts +117 -117
- package/dist/extensions/pi-web-agent/src/fetch/http-fetch.ts +67 -67
- package/dist/extensions/pi-web-agent/src/orchestration/answer-synthesizer.ts +60 -60
- package/dist/extensions/pi-web-agent/src/orchestration/candidate-selector.ts +50 -50
- package/dist/extensions/pi-web-agent/src/orchestration/direct-url.ts +52 -52
- package/dist/extensions/pi-web-agent/src/orchestration/evidence-quality.ts +105 -105
- package/dist/extensions/pi-web-agent/src/orchestration/evidence-ranker.ts +45 -45
- package/dist/extensions/pi-web-agent/src/orchestration/index.ts +28 -28
- package/dist/extensions/pi-web-agent/src/orchestration/query-planner.ts +47 -47
- package/dist/extensions/pi-web-agent/src/orchestration/research-orchestrator.ts +376 -376
- package/dist/extensions/pi-web-agent/src/orchestration/research-types.ts +64 -64
- package/dist/extensions/pi-web-agent/src/orchestration/research-worker.ts +181 -181
- package/dist/extensions/pi-web-agent/src/orchestration/source-profile.ts +101 -101
- package/dist/extensions/pi-web-agent/src/orchestration/stop-decider.ts +81 -81
- package/dist/extensions/pi-web-agent/src/presentation/config-store.ts +210 -210
- package/dist/extensions/pi-web-agent/src/presentation/config.ts +75 -75
- package/dist/extensions/pi-web-agent/src/presentation/explore-presentation.ts +61 -61
- package/dist/extensions/pi-web-agent/src/presentation/fetch-presentation.ts +54 -54
- package/dist/extensions/pi-web-agent/src/presentation/search-presentation.ts +41 -41
- package/dist/extensions/pi-web-agent/src/presentation/select-view.ts +20 -20
- package/dist/extensions/pi-web-agent/src/presentation/types.ts +63 -63
- package/dist/extensions/pi-web-agent/src/search/brave.ts +114 -114
- package/dist/extensions/pi-web-agent/src/search/duckduckgo.ts +72 -72
- package/dist/extensions/pi-web-agent/src/search/searxng.ts +96 -96
- package/dist/extensions/pi-web-agent/src/tools/web-explore.ts +71 -71
- package/dist/extensions/pi-web-agent/src/tools/web-fetch-headless.ts +31 -31
- package/dist/extensions/pi-web-agent/src/tools/web-fetch.ts +31 -31
- package/dist/extensions/pi-web-agent/src/tools/web-search.ts +157 -157
- package/dist/extensions/pi-web-agent/src/types.ts +88 -88
- package/dist/extensions/pi-zentui/extensions/zentui/format.ts +46 -1
- package/dist/extensions/pi-zentui/extensions/zentui/index.ts +10 -0
- package/dist/extensions/pi-zentui/extensions/zentui/user-message-styles.ts +1 -1
- package/dist/extensions/pi-zentui/test/extension-compliance.test.ts +3 -3
- package/dist/extensions/pi-zentui/test/format.test.ts +50 -2
- package/dist/extensions/ponytail/package.json +8 -8
- package/dist/extensions/question/constants.ts +30 -30
- package/dist/extensions/question/helpers.ts +58 -58
- package/dist/extensions/question/navigation.ts +14 -14
- package/dist/extensions/question/package.json +19 -19
- package/dist/extensions/question/selection-mode.ts +46 -46
- package/dist/extensions/question/shortcuts.ts +44 -44
- package/dist/extensions/question/types.ts +132 -132
- package/dist/extensions/test-resolve-hook-impl.mjs +6 -6
- package/dist/extensions/test-resolve-hook.mjs +6 -6
- package/dist/extensions/tokenin-onboarding.ts +112 -2
- package/dist/extensions/web-agent-onboarding.ts +222 -222
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/main.js +2 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/dist/modes/interactive/components/settings-selector.js +10 -0
- package/dist/modes/interactive/interactive-mode.d.ts +4 -0
- package/dist/modes/interactive/interactive-mode.js +72 -42
- package/dist/modes/rpc/rpc-client.d.ts +7 -0
- package/dist/modes/rpc/rpc-client.js +7 -0
- package/dist/modes/rpc/rpc-mode.js +3 -0
- package/dist/modes/rpc/rpc-types.d.ts +12 -0
- package/dist/package-manager-cli.js +71 -71
- package/dist/rpc-entry.js +0 -0
- package/dist/skills/improve-codebase/REFERENCE.md +78 -78
- package/dist/utils/shell.js +6 -4
- package/docs/compaction.md +396 -396
- package/docs/containerization.md +111 -111
- package/docs/development.md +71 -71
- package/docs/docs.json +164 -164
- package/docs/environment-variables.md +86 -86
- package/docs/index.md +83 -83
- package/docs/json.md +82 -82
- package/docs/models.md +502 -502
- package/docs/packages.md +227 -227
- package/docs/plans/subagent-delegation/phase-0-correctness.md +264 -264
- package/docs/plans/subagent-delegation/phase-1-behavioral-contract.md +485 -485
- package/docs/plans/subagent-delegation/phase-2-context-controls.md +281 -281
- package/docs/plans/subagent-delegation/phase-3-advisory-routing.md +361 -361
- package/docs/plans/subagent-delegation/phase-4-optional-enforcement.md +380 -380
- package/docs/prompt-templates.md +95 -95
- package/docs/providers.md +293 -293
- package/docs/security.md +59 -59
- package/docs/session-format.md +414 -414
- package/docs/sessions.md +145 -145
- package/docs/settings.md +4 -0
- package/docs/shared-host-extensions.md +109 -109
- package/docs/shell-aliases.md +13 -13
- package/docs/skills.md +231 -231
- package/docs/terminal-setup.md +142 -142
- package/docs/termux.md +127 -127
- package/docs/themes.md +295 -295
- package/docs/tmux.md +63 -63
- package/docs/tui.md +927 -927
- package/docs/windows.md +17 -17
- package/examples/README.md +25 -25
- package/examples/extensions/README.md +211 -211
- package/examples/extensions/auto-commit-on-exit.ts +49 -49
- package/examples/extensions/bash-spawn-hook.ts +30 -30
- package/examples/extensions/bookmark.ts +50 -50
- package/examples/extensions/border-status-editor.ts +150 -150
- package/examples/extensions/built-in-tool-renderer.ts +249 -249
- package/examples/extensions/claude-rules.ts +86 -86
- package/examples/extensions/commands.ts +72 -72
- package/examples/extensions/confirm-destructive.ts +59 -59
- package/examples/extensions/custom-compaction.ts +130 -130
- package/examples/extensions/custom-footer.ts +64 -64
- package/examples/extensions/custom-header.ts +73 -73
- package/examples/extensions/custom-provider-anthropic/index.ts +610 -610
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -24
- package/examples/extensions/custom-provider-anthropic/package.json +19 -19
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +404 -404
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -16
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -82
- package/examples/extensions/dirty-repo-guard.ts +56 -56
- package/examples/extensions/doom-overlay/README.md +46 -46
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -21
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -152
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -72
- package/examples/extensions/doom-overlay/doom-component.ts +132 -132
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -173
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -104
- package/examples/extensions/doom-overlay/index.ts +74 -74
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -51
- package/examples/extensions/dynamic-resources/SKILL.md +8 -8
- package/examples/extensions/dynamic-resources/dynamic.json +79 -79
- package/examples/extensions/dynamic-resources/dynamic.md +5 -5
- package/examples/extensions/dynamic-resources/index.ts +15 -15
- package/examples/extensions/dynamic-tools.ts +74 -74
- package/examples/extensions/event-bus.ts +43 -43
- package/examples/extensions/file-trigger.ts +41 -41
- package/examples/extensions/git-checkpoint.ts +53 -53
- package/examples/extensions/git-merge-and-resolve.ts +115 -115
- package/examples/extensions/github-issue-autocomplete.ts +185 -185
- package/examples/extensions/gondolin/index.ts +531 -531
- package/examples/extensions/gondolin/package-lock.json +185 -185
- package/examples/extensions/gondolin/package.json +19 -19
- package/examples/extensions/handoff.ts +199 -199
- package/examples/extensions/hello.ts +26 -26
- package/examples/extensions/hidden-thinking-label.ts +53 -53
- package/examples/extensions/inline-bash.ts +94 -94
- package/examples/extensions/input-transform-streaming.ts +39 -39
- package/examples/extensions/input-transform.ts +43 -43
- package/examples/extensions/interactive-shell.ts +196 -196
- package/examples/extensions/mac-system-theme.ts +47 -47
- package/examples/extensions/message-renderer.ts +59 -59
- package/examples/extensions/minimal-mode.ts +426 -426
- package/examples/extensions/modal-editor.ts +85 -85
- package/examples/extensions/model-status.ts +31 -31
- package/examples/extensions/notify.ts +55 -55
- package/examples/extensions/overlay-qa-tests.ts +1450 -1450
- package/examples/extensions/overlay-test.ts +153 -153
- package/examples/extensions/permission-gate.ts +34 -34
- package/examples/extensions/pirate.ts +47 -47
- package/examples/extensions/plan-mode/README.md +66 -66
- package/examples/extensions/plan-mode/index.ts +390 -390
- package/examples/extensions/plan-mode/utils.ts +168 -168
- package/examples/extensions/preset.ts +436 -436
- package/examples/extensions/project-trust.ts +64 -64
- package/examples/extensions/prompt-customizer.ts +97 -97
- package/examples/extensions/protected-paths.ts +30 -30
- package/examples/extensions/provider-payload.ts +18 -18
- package/examples/extensions/qna.ts +122 -122
- package/examples/extensions/question.ts +285 -285
- package/examples/extensions/questionnaire.ts +448 -448
- package/examples/extensions/rainbow-editor.ts +88 -88
- package/examples/extensions/reload-runtime.ts +37 -37
- package/examples/extensions/rpc-demo.ts +118 -118
- package/examples/extensions/sandbox/index.ts +321 -321
- package/examples/extensions/sandbox/package-lock.json +92 -92
- package/examples/extensions/sandbox/package.json +19 -19
- package/examples/extensions/send-user-message.ts +97 -97
- package/examples/extensions/session-name.ts +27 -27
- package/examples/extensions/shutdown-command.ts +63 -63
- package/examples/extensions/snake.ts +343 -343
- package/examples/extensions/space-invaders.ts +560 -560
- package/examples/extensions/ssh.ts +220 -220
- package/examples/extensions/status-line.ts +32 -32
- package/examples/extensions/structured-output.ts +65 -65
- package/examples/extensions/subagent/README.md +175 -175
- package/examples/extensions/subagent/agents/planner.md +37 -37
- package/examples/extensions/subagent/agents/reviewer.md +35 -35
- package/examples/extensions/subagent/agents/scout.md +50 -50
- package/examples/extensions/subagent/agents/worker.md +24 -24
- package/examples/extensions/subagent/agents.ts +126 -126
- package/examples/extensions/subagent/index.ts +1015 -1015
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -10
- package/examples/extensions/subagent/prompts/implement.md +10 -10
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -9
- package/examples/extensions/summarize.ts +209 -209
- package/examples/extensions/system-prompt-header.ts +17 -17
- package/examples/extensions/tic-tac-toe.ts +1008 -1008
- package/examples/extensions/timed-confirm.ts +70 -70
- package/examples/extensions/titlebar-spinner.ts +58 -58
- package/examples/extensions/todo.ts +297 -297
- package/examples/extensions/tool-override.ts +144 -144
- package/examples/extensions/tools.ts +146 -146
- package/examples/extensions/trigger-compact.ts +50 -50
- package/examples/extensions/truncated-tool.ts +195 -195
- package/examples/extensions/widget-placement.ts +9 -9
- package/examples/extensions/with-deps/index.ts +32 -32
- package/examples/extensions/with-deps/package-lock.json +31 -31
- package/examples/extensions/with-deps/package.json +22 -22
- package/examples/extensions/working-indicator.ts +123 -123
- package/examples/extensions/working-message-test.ts +25 -25
- package/examples/rpc-extension-ui.ts +632 -632
- package/examples/sdk/01-minimal.ts +26 -26
- package/examples/sdk/02-custom-model.ts +53 -53
- package/examples/sdk/03-custom-prompt.ts +75 -75
- package/examples/sdk/04-skills.ts +55 -55
- package/examples/sdk/05-tools.ts +48 -48
- package/examples/sdk/06-extensions.ts +99 -99
- package/examples/sdk/07-context-files.ts +47 -47
- package/examples/sdk/08-prompt-templates.ts +51 -51
- package/examples/sdk/09-api-keys-and-oauth.ts +52 -52
- package/examples/sdk/10-settings.ts +53 -53
- package/examples/sdk/11-sessions.ts +52 -52
- package/examples/sdk/12-full-control.ts +79 -79
- package/examples/sdk/13-session-runtime.ts +67 -67
- package/examples/sdk/README.md +144 -144
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@selesai/code` will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.12.0] - 2026-08-29
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **`/tokenin usage` subcommand.** The `tokenin-onboarding` extension now queries the LiteLLM `/key/info` endpoint with the active Token-In token and shows a boxed spend/budget/remaining/reset display with a progress bar. Run `/tokenin usage` to check quota without leaving the session.
|
|
9
|
+
- **Terminal capability overrides.** New `terminal.images` (`"kitty"`, `"iterm2"`, `"auto"`, or `false`), `terminal.trueColor`, and `terminal.hyperlinks` settings let you pin terminal capabilities instead of relying on auto-detection.
|
|
10
|
+
- **`fullscreenCopyOnSelect` setting.** New setting (default `true`) and `/settings` toggle: automatically copy selected text in fullscreen mode; disable to copy selections with Ctrl+X.
|
|
11
|
+
- **`ui_prompt_start` / `ui_prompt_end` extension events.** Extensions can now observe when the agent starts and stops waiting on a blocking user-facing UI prompt (`select`, `confirm`, `input`, `editor`, `custom`).
|
|
12
|
+
- **llama.cpp router autoload.** Unloaded preset models are now selectable when the llama.cpp router has `models_autoload` enabled, so they load on first use instead of being hidden.
|
|
13
|
+
- **RPC `clear_queue` command.** RPC clients can clear the pending steering/follow-up queue and get back the dropped items.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **Custom message ordering during streaming.** Context-only custom messages queued while the agent is streaming are now flushed at turn end (after tool results are in) instead of being appended between a tool call and its result, which some providers reject on replay.
|
|
17
|
+
- **Auto-compaction before the next assistant response.** The session now checks the context threshold before preparing the next turn and compacts when needed, so long conversations stay within the model window.
|
|
18
|
+
- **Persisted default model joins scoped model lists.** When a scoped model list (`--models`) is active, the persisted default model is added to the scope and to `enabledModels` so it stays reachable.
|
|
19
|
+
- **Model catalog updates.** Celestial, DeepSeek, and GPT models now declare `compat.requiresReasoningContentOnAssistantMessages` where required.
|
|
20
|
+
- **Windows process cleanup.** `taskkill` is invoked via the trusted System32 path instead of relying on `PATH`, and failed spawns no longer crash Node.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
- **Footer provider count after model switch.** The interactive footer's available-provider count now refreshes immediately after switching models in the model selector.
|
|
24
|
+
- **Summarization length-stop guard.** A summarization response that hits the token cap (partial text) is now treated as a failure and never persisted as a session checkpoint.
|
|
25
|
+
|
|
26
|
+
## [0.11.0] - 2026-08-29
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
- **Auto session naming.** The new `auto-session-name` extension names the session on every user message using the currently selected model. It sends only user-message history (no tool results, assistant replies, or thinking) with a 10-token output cap and a 5-word name limit, and runs in the background so it never delays your message. Thinking is explicitly disabled via `reasoning_effort: "none"` for gateways that ignore the standard `thinking: {type:"disabled"}` field.
|
|
30
|
+
- **Cost reconciliation.** The new `cost-reconcile` extension records the real billed cost reported by gateways (LiteLLM `x-litellm-response-cost` header, OpenRouter `usage.cost`/`total_cost`) as session entries; the zentui footer prefers these authoritative amounts over rate-card estimates.
|
|
31
|
+
- **Tool display.** The `pi-tool-display` extension is now bundled: compact OpenCode-style tool rendering, diff visualization, output truncation, a native user message box, and the `/tool-display` command with presets.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- **Read-only tool bootstrap.** `grep`, `find`, and `ls` are registered only when not already owned by another extension (e.g. `pi-tool-display`), so boxed renderers are no longer discarded on startup.
|
|
35
|
+
- **Zentui user messages.** The user-message markdown theme now uses the `accent` color instead of `userMessageText`.
|
|
36
|
+
- **Zentui cost totals.** The footer refreshes once ~12s after settle so late gateway cost reconciliation is picked up.
|
|
37
|
+
- **Bundled extensions.** `pi-tool-display`'s user-owned `config.json` is excluded from the shipped package; the default `packages` list no longer installs it from git.
|
|
38
|
+
|
|
5
39
|
## [0.10.2] - 2026-08-28
|
|
6
40
|
|
|
7
41
|
### Added
|
|
@@ -7,10 +7,10 @@ export function isCredentialPrintHelp(args) {
|
|
|
7
7
|
return (args[0] === "auth" && (args[1] === undefined || args[1] === "help" || args[1] === "--help" || args[1] === "-h"));
|
|
8
8
|
}
|
|
9
9
|
export function printCredentialPrintHelp() {
|
|
10
|
-
console.log(`Usage:
|
|
11
|
-
${APP_NAME} auth print-api-key --model <model> [--provider <provider>]
|
|
12
|
-
${APP_NAME} auth print-bearer-token --model <model> [--provider <provider>] [--min-expiry <duration>]
|
|
13
|
-
|
|
10
|
+
console.log(`Usage:
|
|
11
|
+
${APP_NAME} auth print-api-key --model <model> [--provider <provider>]
|
|
12
|
+
${APP_NAME} auth print-bearer-token --model <model> [--provider <provider>] [--min-expiry <duration>]
|
|
13
|
+
|
|
14
14
|
Prints the configured credential alone on stdout. Provider inference uses configured credentials; specify --provider to select explicitly. Bearer tokens have a 30-minute minimum expiry by default. --min-expiry accepts ms, s, m, or h (for example, 30m).`);
|
|
15
15
|
}
|
|
16
16
|
/** Parse the auth command surface before normal startup. */
|
package/dist/cli/startup-ui.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProcessTerminal, setKeybindings, TuiMainScreen } from "@earendil-works/pi-tui";
|
|
1
|
+
import { ProcessTerminal, setCapabilityOverrides, setKeybindings, TuiMainScreen, } from "@earendil-works/pi-tui";
|
|
2
2
|
import { existsSync } from "fs";
|
|
3
3
|
import { ENV_AGENT_DIR, getAgentDir, getFirstRunMarkerPath, markFirstRunComplete } from "../config.js";
|
|
4
4
|
import { KeybindingsManager } from "../core/keybindings.js";
|
|
@@ -43,6 +43,7 @@ async function loadStartupThemes(settingsManager) {
|
|
|
43
43
|
return loadThemes(resolvedPaths.themes);
|
|
44
44
|
}
|
|
45
45
|
export async function createStartupTui(settingsManager) {
|
|
46
|
+
setCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides());
|
|
46
47
|
setRegisteredThemes(await loadStartupThemes(settingsManager));
|
|
47
48
|
const terminalTheme = detectTerminalBackgroundFromEnv().theme;
|
|
48
49
|
initTheme(resolveThemeSetting(settingsManager.getThemeSetting(), terminalTheme) ?? terminalTheme);
|
package/dist/cli.js
CHANGED
|
File without changes
|
|
@@ -218,6 +218,8 @@ export declare class AgentSession {
|
|
|
218
218
|
private _followUpMessages;
|
|
219
219
|
/** Messages queued to be included with the next user prompt as context ("asides"). */
|
|
220
220
|
private _pendingNextTurnMessages;
|
|
221
|
+
/** Context-only custom messages queued during a run, flushed once the current turn's tool results are in. */
|
|
222
|
+
private _pendingCustomMessages;
|
|
221
223
|
private _compactionAbortController;
|
|
222
224
|
private _autoCompactionAbortController;
|
|
223
225
|
private _overflowRecoveryAttempted;
|
|
@@ -266,6 +268,7 @@ export declare class AgentSession {
|
|
|
266
268
|
* happens here instead of in wrappers.
|
|
267
269
|
*/
|
|
268
270
|
private _installAgentToolHooks;
|
|
271
|
+
private _compactBeforeNextAssistantResponse;
|
|
269
272
|
private _installAgentNextTurnRefresh;
|
|
270
273
|
/** Emit an event to all listeners */
|
|
271
274
|
private _emit;
|
|
@@ -412,8 +415,9 @@ export declare class AgentSession {
|
|
|
412
415
|
/**
|
|
413
416
|
* Send a custom message to the session. Creates a CustomMessageEntry.
|
|
414
417
|
*
|
|
415
|
-
* Handles
|
|
418
|
+
* Handles four cases:
|
|
416
419
|
* - Streaming: queues message, processed when loop pulls from queue
|
|
420
|
+
* - Streaming + triggerTurn false: appended to state/session once the current turn ends
|
|
417
421
|
* - Not streaming + triggerTurn: appends to state/session, starts new turn
|
|
418
422
|
* - Not streaming + no trigger: appends to state/session, no turn
|
|
419
423
|
*
|
|
@@ -425,6 +429,12 @@ export declare class AgentSession {
|
|
|
425
429
|
triggerTurn?: boolean;
|
|
426
430
|
deliverAs?: "steer" | "followUp" | "nextTurn";
|
|
427
431
|
}): Promise<void>;
|
|
432
|
+
private _appendCustomMessage;
|
|
433
|
+
/**
|
|
434
|
+
* Append custom messages queued while the agent was running.
|
|
435
|
+
* Called once the current turn's tool results are in agent state and session history.
|
|
436
|
+
*/
|
|
437
|
+
private _flushPendingCustomMessages;
|
|
428
438
|
private _captionImagesForCurrentModel;
|
|
429
439
|
/**
|
|
430
440
|
* Build a small, text-only slice of the most recent conversation to give the
|
|
@@ -485,6 +495,7 @@ export declare class AgentSession {
|
|
|
485
495
|
* @throws Error if no auth is configured for the model
|
|
486
496
|
*/
|
|
487
497
|
setModel(model: Model<any>, options?: ModelMutationOptions): Promise<void>;
|
|
498
|
+
private _addPersistedDefaultToNonEmptyScope;
|
|
488
499
|
/**
|
|
489
500
|
* Cycle to next/previous model.
|
|
490
501
|
* Uses scoped models (from --models flag) if available, otherwise all available models.
|
|
@@ -102,6 +102,8 @@ export class AgentSession {
|
|
|
102
102
|
_followUpMessages = [];
|
|
103
103
|
/** Messages queued to be included with the next user prompt as context ("asides"). */
|
|
104
104
|
_pendingNextTurnMessages = [];
|
|
105
|
+
/** Context-only custom messages queued during a run, flushed once the current turn's tool results are in. */
|
|
106
|
+
_pendingCustomMessages = [];
|
|
105
107
|
// Compaction state
|
|
106
108
|
_compactionAbortController = undefined;
|
|
107
109
|
_autoCompactionAbortController = undefined;
|
|
@@ -269,18 +271,33 @@ export class AgentSession {
|
|
|
269
271
|
};
|
|
270
272
|
};
|
|
271
273
|
}
|
|
274
|
+
async _compactBeforeNextAssistantResponse(context) {
|
|
275
|
+
const model = this.model;
|
|
276
|
+
const settings = this.settingsManager.getCompactionSettings();
|
|
277
|
+
if (!model ||
|
|
278
|
+
model.contextWindow <= 0 ||
|
|
279
|
+
!shouldCompact(estimateContextTokens(context.messages).tokens, model.contextWindow, settings)) {
|
|
280
|
+
return context;
|
|
281
|
+
}
|
|
282
|
+
await this._runAutoCompaction("threshold", false);
|
|
283
|
+
return {
|
|
284
|
+
...context,
|
|
285
|
+
messages: this.agent.state.messages.slice(),
|
|
286
|
+
};
|
|
287
|
+
}
|
|
272
288
|
_installAgentNextTurnRefresh() {
|
|
273
289
|
const previousPrepareNextTurnWithContext = this.agent.prepareNextTurnWithContext ??
|
|
274
290
|
(this.agent.prepareNextTurn
|
|
275
291
|
? async (_turn, signal) => await this.agent.prepareNextTurn?.(signal)
|
|
276
292
|
: undefined);
|
|
277
293
|
this.agent.prepareNextTurnWithContext = async (turn, signal) => {
|
|
278
|
-
const
|
|
279
|
-
const
|
|
294
|
+
const context = await this._compactBeforeNextAssistantResponse(turn.context);
|
|
295
|
+
const previousSnapshot = await previousPrepareNextTurnWithContext?.({ ...turn, context }, signal);
|
|
296
|
+
const nextContext = previousSnapshot?.context ?? context;
|
|
280
297
|
return {
|
|
281
298
|
...previousSnapshot,
|
|
282
299
|
context: {
|
|
283
|
-
...
|
|
300
|
+
...nextContext,
|
|
284
301
|
systemPrompt: this._systemPromptOverride ?? this._baseSystemPrompt,
|
|
285
302
|
tools: this.agent.state.tools.slice(),
|
|
286
303
|
},
|
|
@@ -436,6 +453,14 @@ export class AgentSession {
|
|
|
436
453
|
}
|
|
437
454
|
}
|
|
438
455
|
}
|
|
456
|
+
// A turn ends after its assistant message and every tool result has been appended,
|
|
457
|
+
// so this is the first point in the run where a context-only custom message can be
|
|
458
|
+
// inserted without landing between a tool call and its result. Flushing after the
|
|
459
|
+
// extension and listener dispatch above also picks up messages that turn_end
|
|
460
|
+
// handlers queued.
|
|
461
|
+
if (event.type === "turn_end") {
|
|
462
|
+
this._flushPendingCustomMessages();
|
|
463
|
+
}
|
|
439
464
|
};
|
|
440
465
|
_willRetryAfterAgentEnd(event) {
|
|
441
466
|
const settings = this.settingsManager.getRetrySettings();
|
|
@@ -813,6 +838,7 @@ export class AgentSession {
|
|
|
813
838
|
finally {
|
|
814
839
|
this._systemPromptOverride = undefined;
|
|
815
840
|
this._flushPendingBashMessages();
|
|
841
|
+
this._flushPendingCustomMessages();
|
|
816
842
|
await this._emitAgentSettled();
|
|
817
843
|
}
|
|
818
844
|
}
|
|
@@ -908,8 +934,9 @@ export class AgentSession {
|
|
|
908
934
|
preflightResult?.(true);
|
|
909
935
|
return;
|
|
910
936
|
}
|
|
911
|
-
// Flush any pending bash messages before the new prompt
|
|
937
|
+
// Flush any pending bash and custom messages before the new prompt
|
|
912
938
|
this._flushPendingBashMessages();
|
|
939
|
+
this._flushPendingCustomMessages();
|
|
913
940
|
// Validate model
|
|
914
941
|
if (!this.model) {
|
|
915
942
|
throw new Error(formatNoModelSelectedMessage());
|
|
@@ -1138,8 +1165,9 @@ export class AgentSession {
|
|
|
1138
1165
|
/**
|
|
1139
1166
|
* Send a custom message to the session. Creates a CustomMessageEntry.
|
|
1140
1167
|
*
|
|
1141
|
-
* Handles
|
|
1168
|
+
* Handles four cases:
|
|
1142
1169
|
* - Streaming: queues message, processed when loop pulls from queue
|
|
1170
|
+
* - Streaming + triggerTurn false: appended to state/session once the current turn ends
|
|
1143
1171
|
* - Not streaming + triggerTurn: appends to state/session, starts new turn
|
|
1144
1172
|
* - Not streaming + no trigger: appends to state/session, no turn
|
|
1145
1173
|
*
|
|
@@ -1171,11 +1199,34 @@ export class AgentSession {
|
|
|
1171
1199
|
else if (options?.triggerTurn) {
|
|
1172
1200
|
await this._runAgentPrompt(appMessage);
|
|
1173
1201
|
}
|
|
1202
|
+
else if (this.isStreaming) {
|
|
1203
|
+
// Appending now would put the message between an assistant tool call and its
|
|
1204
|
+
// result, which providers that validate message order reject on replay. Defer
|
|
1205
|
+
// to the end of the turn. Nothing is emitted yet: message events must not
|
|
1206
|
+
// describe messages the session tree does not contain.
|
|
1207
|
+
this._pendingCustomMessages.push(appMessage);
|
|
1208
|
+
}
|
|
1174
1209
|
else {
|
|
1175
|
-
this.
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1210
|
+
this._appendCustomMessage(appMessage);
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
_appendCustomMessage(appMessage) {
|
|
1214
|
+
this.agent.state.messages.push(appMessage);
|
|
1215
|
+
this.sessionManager.appendCustomMessageEntry(appMessage.customType, appMessage.content, appMessage.display, appMessage.details);
|
|
1216
|
+
this._emit({ type: "message_start", message: appMessage });
|
|
1217
|
+
this._emit({ type: "message_end", message: appMessage });
|
|
1218
|
+
}
|
|
1219
|
+
/**
|
|
1220
|
+
* Append custom messages queued while the agent was running.
|
|
1221
|
+
* Called once the current turn's tool results are in agent state and session history.
|
|
1222
|
+
*/
|
|
1223
|
+
_flushPendingCustomMessages() {
|
|
1224
|
+
if (this._pendingCustomMessages.length === 0)
|
|
1225
|
+
return;
|
|
1226
|
+
const pending = this._pendingCustomMessages;
|
|
1227
|
+
this._pendingCustomMessages = [];
|
|
1228
|
+
for (const appMessage of pending) {
|
|
1229
|
+
this._appendCustomMessage(appMessage);
|
|
1179
1230
|
}
|
|
1180
1231
|
}
|
|
1181
1232
|
/**
|
|
@@ -1448,10 +1499,25 @@ export class AgentSession {
|
|
|
1448
1499
|
this.sessionManager.appendModelChange(model.provider, model.id);
|
|
1449
1500
|
if (options.persist) {
|
|
1450
1501
|
this.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
|
|
1502
|
+
this._addPersistedDefaultToNonEmptyScope(model);
|
|
1451
1503
|
}
|
|
1452
1504
|
this.setThinkingLevel(thinkingLevel);
|
|
1453
1505
|
await this._emitModelSelect(model, previousModel, "set");
|
|
1454
1506
|
}
|
|
1507
|
+
_addPersistedDefaultToNonEmptyScope(model) {
|
|
1508
|
+
if (this._scopedModels.length === 0)
|
|
1509
|
+
return;
|
|
1510
|
+
if (this._scopedModels.some((scoped) => modelsAreEqual(scoped.model, model)))
|
|
1511
|
+
return;
|
|
1512
|
+
this._scopedModels = [...this._scopedModels, { model }];
|
|
1513
|
+
const enabledModels = this.settingsManager.getEnabledModels();
|
|
1514
|
+
if (!enabledModels?.length)
|
|
1515
|
+
return;
|
|
1516
|
+
const modelReference = `${model.provider}/${model.id}`;
|
|
1517
|
+
if (enabledModels.some((pattern) => pattern.toLowerCase() === modelReference.toLowerCase()))
|
|
1518
|
+
return;
|
|
1519
|
+
this.settingsManager.setEnabledModels([...enabledModels, modelReference]);
|
|
1520
|
+
}
|
|
1455
1521
|
/**
|
|
1456
1522
|
* Cycle to next/previous model.
|
|
1457
1523
|
* Uses scoped models (from --models flag) if available, otherwise all available models.
|
|
@@ -1485,6 +1551,7 @@ export class AgentSession {
|
|
|
1485
1551
|
this.sessionManager.appendModelChange(next.model.provider, next.model.id);
|
|
1486
1552
|
if (options.persist) {
|
|
1487
1553
|
this.settingsManager.setDefaultModelAndProvider(next.model.provider, next.model.id);
|
|
1554
|
+
this._addPersistedDefaultToNonEmptyScope(next.model);
|
|
1488
1555
|
}
|
|
1489
1556
|
// Apply thinking level.
|
|
1490
1557
|
// - Explicit scoped model thinking level overrides current session level
|
|
@@ -1510,6 +1577,7 @@ export class AgentSession {
|
|
|
1510
1577
|
this.sessionManager.appendModelChange(nextModel.provider, nextModel.id);
|
|
1511
1578
|
if (options.persist) {
|
|
1512
1579
|
this.settingsManager.setDefaultModelAndProvider(nextModel.provider, nextModel.id);
|
|
1580
|
+
this._addPersistedDefaultToNonEmptyScope(nextModel);
|
|
1513
1581
|
}
|
|
1514
1582
|
// Re-clamp thinking level for new model's capabilities
|
|
1515
1583
|
this.setThinkingLevel(thinkingLevel);
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { contentText } from "@earendil-works/pi-ai";
|
|
8
8
|
import { convertToLlm, createBranchSummaryMessage, createCompactionSummaryMessage, createCustomMessage, } from "../messages.js";
|
|
9
|
-
import { completeSummarization, estimateTokens } from "./compaction.js";
|
|
9
|
+
import { completeSummarization, estimateTokens, getSummarizationFailure } from "./compaction.js";
|
|
10
10
|
import { computeFileLists, createFileOps, extractFileOpsFromMessage, formatFileOperations, SUMMARIZATION_SYSTEM_PROMPT, serializeConversation, } from "./utils.js";
|
|
11
11
|
// ============================================================================
|
|
12
12
|
// Entry Collection
|
|
@@ -146,37 +146,37 @@ export function prepareBranchEntries(entries, tokenBudget = 0) {
|
|
|
146
146
|
// ============================================================================
|
|
147
147
|
// Summary Generation
|
|
148
148
|
// ============================================================================
|
|
149
|
-
const BRANCH_SUMMARY_PREAMBLE = `The user explored a different conversation branch before returning here.
|
|
150
|
-
Summary of that exploration:
|
|
151
|
-
|
|
149
|
+
const BRANCH_SUMMARY_PREAMBLE = `The user explored a different conversation branch before returning here.
|
|
150
|
+
Summary of that exploration:
|
|
151
|
+
|
|
152
152
|
`;
|
|
153
|
-
const BRANCH_SUMMARY_PROMPT = `Create a structured summary of this conversation branch for context when returning later.
|
|
154
|
-
|
|
155
|
-
Use this EXACT format:
|
|
156
|
-
|
|
157
|
-
## Goal
|
|
158
|
-
[What was the user trying to accomplish in this branch?]
|
|
159
|
-
|
|
160
|
-
## Constraints & Preferences
|
|
161
|
-
- [Any constraints, preferences, or requirements mentioned]
|
|
162
|
-
- [Or "(none)" if none were mentioned]
|
|
163
|
-
|
|
164
|
-
## Progress
|
|
165
|
-
### Done
|
|
166
|
-
- [x] [Completed tasks/changes]
|
|
167
|
-
|
|
168
|
-
### In Progress
|
|
169
|
-
- [ ] [Work that was started but not finished]
|
|
170
|
-
|
|
171
|
-
### Blocked
|
|
172
|
-
- [Issues preventing progress, if any]
|
|
173
|
-
|
|
174
|
-
## Key Decisions
|
|
175
|
-
- **[Decision]**: [Brief rationale]
|
|
176
|
-
|
|
177
|
-
## Next Steps
|
|
178
|
-
1. [What should happen next to continue this work]
|
|
179
|
-
|
|
153
|
+
const BRANCH_SUMMARY_PROMPT = `Create a structured summary of this conversation branch for context when returning later.
|
|
154
|
+
|
|
155
|
+
Use this EXACT format:
|
|
156
|
+
|
|
157
|
+
## Goal
|
|
158
|
+
[What was the user trying to accomplish in this branch?]
|
|
159
|
+
|
|
160
|
+
## Constraints & Preferences
|
|
161
|
+
- [Any constraints, preferences, or requirements mentioned]
|
|
162
|
+
- [Or "(none)" if none were mentioned]
|
|
163
|
+
|
|
164
|
+
## Progress
|
|
165
|
+
### Done
|
|
166
|
+
- [x] [Completed tasks/changes]
|
|
167
|
+
|
|
168
|
+
### In Progress
|
|
169
|
+
- [ ] [Work that was started but not finished]
|
|
170
|
+
|
|
171
|
+
### Blocked
|
|
172
|
+
- [Issues preventing progress, if any]
|
|
173
|
+
|
|
174
|
+
## Key Decisions
|
|
175
|
+
- **[Decision]**: [Brief rationale]
|
|
176
|
+
|
|
177
|
+
## Next Steps
|
|
178
|
+
1. [What should happen next to continue this work]
|
|
179
|
+
|
|
180
180
|
Keep each section concise. Preserve exact file paths, function names, and error messages.`;
|
|
181
181
|
/**
|
|
182
182
|
* Generate a summary of abandoned branch entries.
|
|
@@ -227,8 +227,9 @@ export async function generateBranchSummary(entries, options) {
|
|
|
227
227
|
if (response.stopReason === "aborted") {
|
|
228
228
|
return { aborted: true };
|
|
229
229
|
}
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
const failure = getSummarizationFailure(response, "Branch summarization");
|
|
231
|
+
if (failure) {
|
|
232
|
+
return { error: failure };
|
|
232
233
|
}
|
|
233
234
|
let summary = contentText(response.content);
|
|
234
235
|
// Prepend preamble to provide context about the branch summary
|
|
@@ -90,6 +90,11 @@ export interface CutPointResult {
|
|
|
90
90
|
* Only considers entries between `startIndex` and `endIndex` (exclusive).
|
|
91
91
|
*/
|
|
92
92
|
export declare function findCutPoint(entries: SessionEntry[], startIndex: number, endIndex: number, keepRecentTokens: number): CutPointResult;
|
|
93
|
+
/**
|
|
94
|
+
* Returns an error message when a summarization response cannot safely be persisted.
|
|
95
|
+
* A length stop contains partial text and must not become a session checkpoint.
|
|
96
|
+
*/
|
|
97
|
+
export declare function getSummarizationFailure(response: AssistantMessage, label: string): string | undefined;
|
|
93
98
|
/**
|
|
94
99
|
* Shared choke point for every compaction/branch-summary summarization call. Wraps the
|
|
95
100
|
* single LLM call in {@link retryAssistantCall} so transient stream drops (e.g.
|
|
@@ -353,76 +353,89 @@ export function findCutPoint(entries, startIndex, endIndex, keepRecentTokens) {
|
|
|
353
353
|
// ============================================================================
|
|
354
354
|
// Summarization
|
|
355
355
|
// ============================================================================
|
|
356
|
-
const SUMMARIZATION_PROMPT = `The messages above are a conversation to summarize. Create a structured context checkpoint summary that another LLM will use to continue the work.
|
|
357
|
-
|
|
358
|
-
Use this EXACT format:
|
|
359
|
-
|
|
360
|
-
## Goal
|
|
361
|
-
[What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]
|
|
362
|
-
|
|
363
|
-
## Constraints & Preferences
|
|
364
|
-
- [Any constraints, preferences, or requirements mentioned by user]
|
|
365
|
-
- [Or "(none)" if none were mentioned]
|
|
366
|
-
|
|
367
|
-
## Progress
|
|
368
|
-
### Done
|
|
369
|
-
- [x] [Completed tasks/changes]
|
|
370
|
-
|
|
371
|
-
### In Progress
|
|
372
|
-
- [ ] [Current work]
|
|
373
|
-
|
|
374
|
-
### Blocked
|
|
375
|
-
- [Issues preventing progress, if any]
|
|
376
|
-
|
|
377
|
-
## Key Decisions
|
|
378
|
-
- **[Decision]**: [Brief rationale]
|
|
379
|
-
|
|
380
|
-
## Next Steps
|
|
381
|
-
1. [Ordered list of what should happen next]
|
|
382
|
-
|
|
383
|
-
## Critical Context
|
|
384
|
-
- [Any data, examples, or references needed to continue]
|
|
385
|
-
- [Or "(none)" if not applicable]
|
|
386
|
-
|
|
356
|
+
const SUMMARIZATION_PROMPT = `The messages above are a conversation to summarize. Create a structured context checkpoint summary that another LLM will use to continue the work.
|
|
357
|
+
|
|
358
|
+
Use this EXACT format:
|
|
359
|
+
|
|
360
|
+
## Goal
|
|
361
|
+
[What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]
|
|
362
|
+
|
|
363
|
+
## Constraints & Preferences
|
|
364
|
+
- [Any constraints, preferences, or requirements mentioned by user]
|
|
365
|
+
- [Or "(none)" if none were mentioned]
|
|
366
|
+
|
|
367
|
+
## Progress
|
|
368
|
+
### Done
|
|
369
|
+
- [x] [Completed tasks/changes]
|
|
370
|
+
|
|
371
|
+
### In Progress
|
|
372
|
+
- [ ] [Current work]
|
|
373
|
+
|
|
374
|
+
### Blocked
|
|
375
|
+
- [Issues preventing progress, if any]
|
|
376
|
+
|
|
377
|
+
## Key Decisions
|
|
378
|
+
- **[Decision]**: [Brief rationale]
|
|
379
|
+
|
|
380
|
+
## Next Steps
|
|
381
|
+
1. [Ordered list of what should happen next]
|
|
382
|
+
|
|
383
|
+
## Critical Context
|
|
384
|
+
- [Any data, examples, or references needed to continue]
|
|
385
|
+
- [Or "(none)" if not applicable]
|
|
386
|
+
|
|
387
387
|
Keep each section concise. Preserve exact file paths, function names, and error messages.`;
|
|
388
|
-
const UPDATE_SUMMARIZATION_PROMPT = `The messages above are NEW conversation messages to incorporate into the existing summary provided in <previous-summary> tags.
|
|
389
|
-
|
|
390
|
-
Update the existing structured summary with new information. RULES:
|
|
391
|
-
- PRESERVE all existing information from the previous summary
|
|
392
|
-
- ADD new progress, decisions, and context from the new messages
|
|
393
|
-
- UPDATE the Progress section: move items from "In Progress" to "Done" when completed
|
|
394
|
-
- UPDATE "Next Steps" based on what was accomplished
|
|
395
|
-
- PRESERVE exact file paths, function names, and error messages
|
|
396
|
-
- If something is no longer relevant, you may remove it
|
|
397
|
-
|
|
398
|
-
Use this EXACT format:
|
|
399
|
-
|
|
400
|
-
## Goal
|
|
401
|
-
[Preserve existing goals, add new ones if the task expanded]
|
|
402
|
-
|
|
403
|
-
## Constraints & Preferences
|
|
404
|
-
- [Preserve existing, add new ones discovered]
|
|
405
|
-
|
|
406
|
-
## Progress
|
|
407
|
-
### Done
|
|
408
|
-
- [x] [Include previously done items AND newly completed items]
|
|
409
|
-
|
|
410
|
-
### In Progress
|
|
411
|
-
- [ ] [Current work - update based on progress]
|
|
412
|
-
|
|
413
|
-
### Blocked
|
|
414
|
-
- [Current blockers - remove if resolved]
|
|
415
|
-
|
|
416
|
-
## Key Decisions
|
|
417
|
-
- **[Decision]**: [Brief rationale] (preserve all previous, add new)
|
|
418
|
-
|
|
419
|
-
## Next Steps
|
|
420
|
-
1. [Update based on current state]
|
|
421
|
-
|
|
422
|
-
## Critical Context
|
|
423
|
-
- [Preserve important context, add new if needed]
|
|
424
|
-
|
|
388
|
+
const UPDATE_SUMMARIZATION_PROMPT = `The messages above are NEW conversation messages to incorporate into the existing summary provided in <previous-summary> tags.
|
|
389
|
+
|
|
390
|
+
Update the existing structured summary with new information. RULES:
|
|
391
|
+
- PRESERVE all existing information from the previous summary
|
|
392
|
+
- ADD new progress, decisions, and context from the new messages
|
|
393
|
+
- UPDATE the Progress section: move items from "In Progress" to "Done" when completed
|
|
394
|
+
- UPDATE "Next Steps" based on what was accomplished
|
|
395
|
+
- PRESERVE exact file paths, function names, and error messages
|
|
396
|
+
- If something is no longer relevant, you may remove it
|
|
397
|
+
|
|
398
|
+
Use this EXACT format:
|
|
399
|
+
|
|
400
|
+
## Goal
|
|
401
|
+
[Preserve existing goals, add new ones if the task expanded]
|
|
402
|
+
|
|
403
|
+
## Constraints & Preferences
|
|
404
|
+
- [Preserve existing, add new ones discovered]
|
|
405
|
+
|
|
406
|
+
## Progress
|
|
407
|
+
### Done
|
|
408
|
+
- [x] [Include previously done items AND newly completed items]
|
|
409
|
+
|
|
410
|
+
### In Progress
|
|
411
|
+
- [ ] [Current work - update based on progress]
|
|
412
|
+
|
|
413
|
+
### Blocked
|
|
414
|
+
- [Current blockers - remove if resolved]
|
|
415
|
+
|
|
416
|
+
## Key Decisions
|
|
417
|
+
- **[Decision]**: [Brief rationale] (preserve all previous, add new)
|
|
418
|
+
|
|
419
|
+
## Next Steps
|
|
420
|
+
1. [Update based on current state]
|
|
421
|
+
|
|
422
|
+
## Critical Context
|
|
423
|
+
- [Preserve important context, add new if needed]
|
|
424
|
+
|
|
425
425
|
Keep each section concise. Preserve exact file paths, function names, and error messages.`;
|
|
426
|
+
/**
|
|
427
|
+
* Returns an error message when a summarization response cannot safely be persisted.
|
|
428
|
+
* A length stop contains partial text and must not become a session checkpoint.
|
|
429
|
+
*/
|
|
430
|
+
export function getSummarizationFailure(response, label) {
|
|
431
|
+
if (response.stopReason === "error") {
|
|
432
|
+
return `${label} failed: ${response.errorMessage || "Unknown error"}`;
|
|
433
|
+
}
|
|
434
|
+
if (response.stopReason === "length") {
|
|
435
|
+
return `${label} failed: generation hit the token cap and the summary is incomplete`;
|
|
436
|
+
}
|
|
437
|
+
return undefined;
|
|
438
|
+
}
|
|
426
439
|
function createSummarizationOptions(model, maxTokens, apiKey, headers, env, signal, thinkingLevel) {
|
|
427
440
|
const options = { maxTokens, signal, apiKey, headers, env };
|
|
428
441
|
if (model.reasoning && thinkingLevel && thinkingLevel !== "off") {
|
|
@@ -483,8 +496,9 @@ export async function generateSummaryWithUsage(currentMessages, model, reserveTo
|
|
|
483
496
|
];
|
|
484
497
|
const completionOptions = createSummarizationOptions(model, maxTokens, apiKey, headers, env, signal, thinkingLevel);
|
|
485
498
|
const response = await completeSummarization(model, { systemPrompt: SUMMARIZATION_SYSTEM_PROMPT, messages: summarizationMessages }, completionOptions, streamFn, retry, callbacks);
|
|
486
|
-
|
|
487
|
-
|
|
499
|
+
const failure = getSummarizationFailure(response, "Summarization");
|
|
500
|
+
if (failure) {
|
|
501
|
+
throw new Error(failure);
|
|
488
502
|
}
|
|
489
503
|
const textContent = contentText(response.content);
|
|
490
504
|
return { text: textContent, usage: response.usage };
|
|
@@ -559,19 +573,19 @@ export function prepareCompaction(pathEntries, settings) {
|
|
|
559
573
|
// ============================================================================
|
|
560
574
|
// Main compaction function
|
|
561
575
|
// ============================================================================
|
|
562
|
-
const TURN_PREFIX_SUMMARIZATION_PROMPT = `This is the PREFIX of a turn that was too large to keep. The SUFFIX (recent work) is retained.
|
|
563
|
-
|
|
564
|
-
Summarize the prefix to provide context for the retained suffix:
|
|
565
|
-
|
|
566
|
-
## Original Request
|
|
567
|
-
[What did the user ask for in this turn?]
|
|
568
|
-
|
|
569
|
-
## Early Progress
|
|
570
|
-
- [Key decisions and work done in the prefix]
|
|
571
|
-
|
|
572
|
-
## Context for Suffix
|
|
573
|
-
- [Information needed to understand the retained recent work]
|
|
574
|
-
|
|
576
|
+
const TURN_PREFIX_SUMMARIZATION_PROMPT = `This is the PREFIX of a turn that was too large to keep. The SUFFIX (recent work) is retained.
|
|
577
|
+
|
|
578
|
+
Summarize the prefix to provide context for the retained suffix:
|
|
579
|
+
|
|
580
|
+
## Original Request
|
|
581
|
+
[What did the user ask for in this turn?]
|
|
582
|
+
|
|
583
|
+
## Early Progress
|
|
584
|
+
- [Key decisions and work done in the prefix]
|
|
585
|
+
|
|
586
|
+
## Context for Suffix
|
|
587
|
+
- [Information needed to understand the retained recent work]
|
|
588
|
+
|
|
575
589
|
Be concise. Focus on what's needed to understand the kept suffix.`;
|
|
576
590
|
/**
|
|
577
591
|
* Generate summaries for compaction using prepared data.
|
|
@@ -634,8 +648,9 @@ async function generateTurnPrefixSummary(messages, model, reserveTokens, apiKey,
|
|
|
634
648
|
},
|
|
635
649
|
];
|
|
636
650
|
const response = await completeSummarization(model, { systemPrompt: SUMMARIZATION_SYSTEM_PROMPT, messages: summarizationMessages }, createSummarizationOptions(model, maxTokens, apiKey, headers, env, signal, thinkingLevel), streamFn, retry, callbacks);
|
|
637
|
-
|
|
638
|
-
|
|
651
|
+
const failure = getSummarizationFailure(response, "Turn prefix summarization");
|
|
652
|
+
if (failure) {
|
|
653
|
+
throw new Error(failure);
|
|
639
654
|
}
|
|
640
655
|
return {
|
|
641
656
|
text: contentText(response.content),
|
|
@@ -136,6 +136,6 @@ export function serializeConversation(messages) {
|
|
|
136
136
|
// ============================================================================
|
|
137
137
|
// Summarization System Prompt
|
|
138
138
|
// ============================================================================
|
|
139
|
-
export const SUMMARIZATION_SYSTEM_PROMPT = `You are a context summarization assistant. Your task is to read a conversation between a user and an AI assistant, then produce a structured summary following the exact format specified.
|
|
140
|
-
|
|
139
|
+
export const SUMMARIZATION_SYSTEM_PROMPT = `You are a context summarization assistant. Your task is to read a conversation between a user and an AI assistant, then produce a structured summary following the exact format specified.
|
|
140
|
+
|
|
141
141
|
Do NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.`;
|