@bastani/atomic 0.8.25 → 0.8.26-alpha.10
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 +84 -0
- package/README.md +5 -5
- package/dist/builtin/intercom/CHANGELOG.md +60 -0
- package/dist/builtin/intercom/index-heavy.ts +1754 -0
- package/dist/builtin/intercom/index.ts +374 -1746
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/intercom/result-renderers.ts +77 -0
- package/dist/builtin/mcp/CHANGELOG.md +64 -0
- package/dist/builtin/mcp/index.ts +151 -57
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/subagents/CHANGELOG.md +61 -0
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +9 -9
- package/dist/builtin/subagents/agents/debugger.md +6 -6
- package/dist/builtin/subagents/package.json +4 -4
- package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +1 -1
- package/dist/builtin/subagents/skills/browser/EXAMPLES.md +151 -0
- package/dist/builtin/subagents/skills/browser/LICENSE.txt +21 -0
- package/dist/builtin/subagents/skills/browser/REFERENCE.md +451 -0
- package/dist/builtin/subagents/skills/browser/SKILL.md +170 -0
- package/dist/builtin/subagents/skills/subagent/SKILL.md +4 -4
- package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +55 -12
- package/dist/builtin/subagents/src/runs/foreground/execution.ts +71 -12
- package/dist/builtin/subagents/src/runs/shared/acceptance.ts +2 -1
- package/dist/builtin/subagents/src/runs/shared/final-drain.ts +34 -0
- package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +416 -7
- package/dist/builtin/subagents/src/runs/shared/worktree.ts +2 -2
- package/dist/builtin/web-access/CHANGELOG.md +60 -0
- package/dist/builtin/web-access/index-heavy.ts +2060 -0
- package/dist/builtin/web-access/index.ts +182 -2274
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/web-access/result-renderers.ts +364 -0
- package/dist/builtin/workflows/CHANGELOG.md +75 -0
- package/dist/builtin/workflows/README.md +10 -8
- package/dist/builtin/workflows/builtin/deep-research-codebase.ts +11 -8
- package/dist/builtin/workflows/builtin/goal.ts +137 -109
- package/dist/builtin/workflows/builtin/index.d.ts +2 -0
- package/dist/builtin/workflows/builtin/open-claude-design.ts +228 -151
- package/dist/builtin/workflows/builtin/ralph.d.ts +2 -0
- package/dist/builtin/workflows/builtin/ralph.ts +452 -279
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/skills/create-spec/SKILL.md +14 -0
- package/dist/builtin/workflows/skills/research-codebase/SKILL.md +29 -10
- package/dist/builtin/workflows/src/extension/index.ts +23 -5
- package/dist/builtin/workflows/src/extension/runtime.ts +35 -3
- package/dist/builtin/workflows/src/extension/wiring.ts +13 -1
- package/dist/builtin/workflows/src/runs/background/status.ts +52 -6
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +453 -21
- package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +130 -13
- package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +402 -8
- package/dist/builtin/workflows/src/runs/shared/worktree.ts +2 -2
- package/dist/builtin/workflows/src/shared/authoring-contract.d.ts +2 -2
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +182 -6
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +76 -6
- package/dist/builtin/workflows/src/shared/stage-prompt.ts +33 -2
- package/dist/builtin/workflows/src/shared/store-types.ts +31 -0
- package/dist/builtin/workflows/src/shared/store.ts +160 -18
- package/dist/builtin/workflows/src/shared/types.ts +3 -3
- package/dist/builtin/workflows/src/shared/workflow-failures.ts +758 -132
- package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +12 -3
- package/dist/builtin/workflows/src/tui/inline-form-store.ts +17 -6
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +39 -3
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +74 -74
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +13 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +33 -6
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +157 -182
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.js +11 -9
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +1 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +6 -3
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +23 -10
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/context-compaction.d.ts +175 -0
- package/dist/core/compaction/context-compaction.d.ts.map +1 -0
- package/dist/core/compaction/context-compaction.js +1636 -0
- package/dist/core/compaction/context-compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +1 -0
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +1 -0
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +7 -0
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +16 -3
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +3 -0
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +14 -7
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +17 -0
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/session-manager.d.ts +41 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +146 -7
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/timings.d.ts +9 -0
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +28 -1
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/ask-user-question/tool/format-answer.d.ts +5 -5
- package/dist/core/tools/ask-user-question/tool/format-answer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/tool/format-answer.js +5 -5
- package/dist/core/tools/ask-user-question/tool/format-answer.js.map +1 -1
- package/dist/core/tools/ask-user-question/tool/response-envelope.d.ts +16 -3
- package/dist/core/tools/ask-user-question/tool/response-envelope.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/tool/response-envelope.js +21 -3
- package/dist/core/tools/ask-user-question/tool/response-envelope.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +4 -2
- package/dist/main.js.map +1 -1
- package/dist/modes/index.d.ts +1 -1
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +17 -0
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/context-compaction-summary-message.d.ts +17 -0
- package/dist/modes/interactive/components/context-compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/context-compaction-summary-message.js +83 -0
- package/dist/modes/interactive/components/context-compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +36 -4
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +4 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +94 -17
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +13 -8
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +8 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +4 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +14 -3
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/git-env.d.ts +10 -0
- package/dist/utils/git-env.d.ts.map +1 -0
- package/dist/utils/git-env.js +33 -0
- package/dist/utils/git-env.js.map +1 -0
- package/docs/compaction.md +185 -50
- package/docs/custom-provider.md +11 -9
- package/docs/extensions.md +46 -42
- package/docs/index.md +13 -6
- package/docs/json.md +15 -12
- package/docs/packages.md +2 -0
- package/docs/providers.md +4 -1
- package/docs/quickstart.md +18 -11
- package/docs/rpc.md +38 -23
- package/docs/sdk.md +17 -8
- package/docs/session-format.md +26 -13
- package/docs/sessions.md +3 -3
- package/docs/settings.md +2 -2
- package/docs/skills.md +1 -15
- package/docs/termux.md +9 -10
- package/docs/themes.md +2 -2
- package/docs/tmux.md +3 -3
- package/docs/tui.md +19 -32
- package/docs/usage.md +2 -2
- package/docs/workflows.md +60 -16
- package/package.json +6 -12
- package/dist/builtin/subagents/skills/browser-use/SKILL.md +0 -234
- package/dist/builtin/subagents/skills/browser-use/references/cdp-python.md +0 -76
- package/dist/builtin/subagents/skills/browser-use/references/multi-session.md +0 -92
- package/node_modules/@earendil-works/pi-tui/README.md +0 -779
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +0 -54
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +0 -632
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts +0 -22
- package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/box.js +0 -104
- package/node_modules/@earendil-works/pi-tui/dist/components/box.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts +0 -22
- package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.js +0 -35
- package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +0 -249
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +0 -1857
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts +0 -28
- package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/image.js +0 -89
- package/node_modules/@earendil-works/pi-tui/dist/components/image.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts +0 -37
- package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/input.js +0 -378
- package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +0 -31
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +0 -69
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +0 -96
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +0 -644
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts +0 -50
- package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js +0 -159
- package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts +0 -50
- package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js +0 -185
- package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts +0 -12
- package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js +0 -23
- package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts +0 -19
- package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/text.js +0 -89
- package/node_modules/@earendil-works/pi-tui/dist/components/text.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts +0 -13
- package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js +0 -51
- package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/editor-component.d.ts +0 -39
- package/node_modules/@earendil-works/pi-tui/dist/editor-component.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/editor-component.js +0 -2
- package/node_modules/@earendil-works/pi-tui/dist/editor-component.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts +0 -16
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js +0 -110
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +0 -23
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js +0 -32
- package/node_modules/@earendil-works/pi-tui/dist/index.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts +0 -193
- package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/keybindings.js +0 -174
- package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/keys.d.ts +0 -184
- package/node_modules/@earendil-works/pi-tui/dist/keys.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/keys.js +0 -1173
- package/node_modules/@earendil-works/pi-tui/dist/keys.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/kill-ring.d.ts +0 -28
- package/node_modules/@earendil-works/pi-tui/dist/kill-ring.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/kill-ring.js +0 -44
- package/node_modules/@earendil-works/pi-tui/dist/kill-ring.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts +0 -3
- package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +0 -53
- package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.d.ts +0 -50
- package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.js +0 -361
- package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +0 -90
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +0 -366
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +0 -113
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js +0 -472
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +0 -227
- package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.js +0 -1106
- package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/undo-stack.d.ts +0 -17
- package/node_modules/@earendil-works/pi-tui/dist/undo-stack.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/undo-stack.js +0 -25
- package/node_modules/@earendil-works/pi-tui/dist/undo-stack.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +0 -84
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.js +0 -1029
- package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.d.ts +0 -25
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.js +0 -96
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.js.map +0 -1
- package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
- package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
- package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
- package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
- package/node_modules/@earendil-works/pi-tui/package.json +0 -47
- package/node_modules/get-east-asian-width/index.d.ts +0 -60
- package/node_modules/get-east-asian-width/index.js +0 -30
- package/node_modules/get-east-asian-width/license +0 -9
- package/node_modules/get-east-asian-width/lookup-data.js +0 -21
- package/node_modules/get-east-asian-width/lookup.js +0 -138
- package/node_modules/get-east-asian-width/package.json +0 -71
- package/node_modules/get-east-asian-width/readme.md +0 -65
- package/node_modules/get-east-asian-width/utilities.js +0 -24
- package/node_modules/marked/LICENSE.md +0 -44
- package/node_modules/marked/README.md +0 -106
- package/node_modules/marked/bin/main.js +0 -282
- package/node_modules/marked/bin/marked.js +0 -15
- package/node_modules/marked/lib/marked.cjs +0 -2211
- package/node_modules/marked/lib/marked.cjs.map +0 -7
- package/node_modules/marked/lib/marked.d.cts +0 -728
- package/node_modules/marked/lib/marked.d.ts +0 -728
- package/node_modules/marked/lib/marked.esm.js +0 -2189
- package/node_modules/marked/lib/marked.esm.js.map +0 -7
- package/node_modules/marked/lib/marked.umd.js +0 -2213
- package/node_modules/marked/lib/marked.umd.js.map +0 -7
- package/node_modules/marked/man/marked.1 +0 -111
- package/node_modules/marked/man/marked.1.md +0 -92
- package/node_modules/marked/marked.min.js +0 -69
- package/node_modules/marked/package.json +0 -111
|
@@ -31,6 +31,7 @@ import { parseGitUrl } from "../../utils/git.js";
|
|
|
31
31
|
import { getCwdRelativePath } from "../../utils/paths.js";
|
|
32
32
|
import { getPiUserAgent } from "../../utils/pi-user-agent.js";
|
|
33
33
|
import { killTrackedDetachedChildren } from "../../utils/shell.js";
|
|
34
|
+
import { recordTimeSinceReset } from "../../core/timings.js";
|
|
34
35
|
import { ensureTool } from "../../utils/tools-manager.js";
|
|
35
36
|
import { checkForNewPiVersion } from "../../utils/version-check.js";
|
|
36
37
|
import { ArminComponent } from "./components/armin.js";
|
|
@@ -41,6 +42,7 @@ import { BranchSummaryMessageComponent } from "./components/branch-summary-messa
|
|
|
41
42
|
import { chatEntriesFromAgentMessages, renderChatMessageEntry, } from "./components/chat-message-renderer.js";
|
|
42
43
|
import { addChatTranscriptEntry } from "./components/chat-transcript.js";
|
|
43
44
|
import { CompactionSummaryMessageComponent } from "./components/compaction-summary-message.js";
|
|
45
|
+
import { ContextCompactionSummaryMessageComponent } from "./components/context-compaction-summary-message.js";
|
|
44
46
|
import { CountdownTimer } from "./components/countdown-timer.js";
|
|
45
47
|
import { CustomEditor } from "./components/custom-editor.js";
|
|
46
48
|
import { CustomMessageComponent } from "./components/custom-message.js";
|
|
@@ -87,6 +89,13 @@ class ExpandableText extends Text {
|
|
|
87
89
|
this.setText(this.expanded ? this.getExpandedText() : this.getCollapsedText());
|
|
88
90
|
}
|
|
89
91
|
}
|
|
92
|
+
function isContextCompactionResult(result) {
|
|
93
|
+
return (typeof result === "object" &&
|
|
94
|
+
result !== null &&
|
|
95
|
+
"stats" in result &&
|
|
96
|
+
"deletedTargets" in result &&
|
|
97
|
+
"protectedEntryIds" in result);
|
|
98
|
+
}
|
|
90
99
|
const DEAD_TERMINAL_ERROR_CODES = new Set(["EIO", "EPIPE", "ENOTCONN"]);
|
|
91
100
|
function isDeadTerminalError(error) {
|
|
92
101
|
if (!error || typeof error !== "object" || !("code" in error)) {
|
|
@@ -404,10 +413,6 @@ export class InteractiveMode {
|
|
|
404
413
|
this.registerSignalHandlers();
|
|
405
414
|
// Load changelog (only show new entries, skip for resumed sessions)
|
|
406
415
|
this.changelogMarkdown = this.getChangelogForDisplay();
|
|
407
|
-
// Ensure fd and rg are available (downloads if missing, adds to PATH via getBinDir)
|
|
408
|
-
// Both are needed: fd for autocomplete, rg for grep tool and bash commands
|
|
409
|
-
const [fdPath] = await Promise.all([ensureTool("fd"), ensureTool("rg")]);
|
|
410
|
-
this.fdPath = fdPath;
|
|
411
416
|
// Add header container as first child
|
|
412
417
|
this.ui.addChild(this.headerContainer);
|
|
413
418
|
// Add the quiet startup identity (unless silenced). Resource details are
|
|
@@ -444,9 +449,21 @@ export class InteractiveMode {
|
|
|
444
449
|
this.ui.setFocus(this.editor);
|
|
445
450
|
this.setupKeyHandlers();
|
|
446
451
|
this.setupEditorSubmitHandler();
|
|
447
|
-
// Start the UI before initializing extensions so session_start handlers can use interactive dialogs
|
|
452
|
+
// Start the UI before initializing extensions so session_start handlers can use interactive dialogs.
|
|
453
|
+
// fd/rg readiness is intentionally checked after first paint because ensureTool may spawn
|
|
454
|
+
// or download tools on cold machines.
|
|
448
455
|
this.ui.start();
|
|
456
|
+
recordTimeSinceReset("time-to-first-frame");
|
|
449
457
|
this.isInitialized = true;
|
|
458
|
+
void Promise.all([ensureTool("fd"), ensureTool("rg")])
|
|
459
|
+
.then(([fdPath]) => {
|
|
460
|
+
this.fdPath = fdPath;
|
|
461
|
+
this.setupAutocompleteProvider();
|
|
462
|
+
})
|
|
463
|
+
.catch((error) => {
|
|
464
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
465
|
+
console.error(`Tool readiness check failed: ${message}`);
|
|
466
|
+
});
|
|
450
467
|
// Initialize extensions first so resources are shown before messages
|
|
451
468
|
await this.rebindCurrentSession();
|
|
452
469
|
// Render initial messages AFTER showing loaded resources
|
|
@@ -461,8 +478,11 @@ export class InteractiveMode {
|
|
|
461
478
|
this.footerDataProvider.onBranchChange(() => {
|
|
462
479
|
this.ui.requestRender();
|
|
463
480
|
});
|
|
464
|
-
// Initialize available provider count for footer display
|
|
465
|
-
|
|
481
|
+
// Initialize available provider count for footer display without delaying first-frame startup.
|
|
482
|
+
void this.updateAvailableProviderCount().catch((error) => {
|
|
483
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
484
|
+
console.error(`Failed to update provider count: ${message}`);
|
|
485
|
+
});
|
|
466
486
|
}
|
|
467
487
|
/**
|
|
468
488
|
* Update terminal title with session name and cwd.
|
|
@@ -2237,12 +2257,13 @@ export class InteractiveMode {
|
|
|
2237
2257
|
await this.handleClearCommand();
|
|
2238
2258
|
return;
|
|
2239
2259
|
}
|
|
2240
|
-
if (
|
|
2241
|
-
const customInstructions = text.startsWith("/compact ")
|
|
2242
|
-
? text.slice(9).trim()
|
|
2243
|
-
: undefined;
|
|
2260
|
+
if (/^\/compact(?:\s|$)/.test(text)) {
|
|
2244
2261
|
this.editor.setText("");
|
|
2245
|
-
|
|
2262
|
+
if (text !== "/compact") {
|
|
2263
|
+
this.showWarning("Usage: /compact");
|
|
2264
|
+
return;
|
|
2265
|
+
}
|
|
2266
|
+
await this.handleCompactCommand();
|
|
2246
2267
|
return;
|
|
2247
2268
|
}
|
|
2248
2269
|
if (text === "/reload") {
|
|
@@ -2541,10 +2562,11 @@ export class InteractiveMode {
|
|
|
2541
2562
|
};
|
|
2542
2563
|
this.statusContainer.clear();
|
|
2543
2564
|
const cancelHint = `(${keyText("app.interrupt")} Cancel)`;
|
|
2565
|
+
const isOverflowAutoCompaction = event.reason === "overflow";
|
|
2544
2566
|
const label = event.reason === "manual"
|
|
2545
2567
|
? `Compacting context... ${cancelHint}`
|
|
2546
|
-
: `${
|
|
2547
|
-
this.autoCompactionLoader = new Loader(this.ui, (spinner) => theme.fg("accent", spinner), (text) => theme.fg("muted", text), label);
|
|
2568
|
+
: `${isOverflowAutoCompaction ? "Context overflow detected. " : ""}Auto-compacting... ${cancelHint}`;
|
|
2569
|
+
this.autoCompactionLoader = new Loader(this.ui, (spinner) => theme.fg("accent", spinner), (text) => theme.fg(isOverflowAutoCompaction ? "warning" : "muted", text), label);
|
|
2548
2570
|
this.statusContainer.addChild(this.autoCompactionLoader);
|
|
2549
2571
|
this.ui.requestRender();
|
|
2550
2572
|
break;
|
|
@@ -2573,7 +2595,12 @@ export class InteractiveMode {
|
|
|
2573
2595
|
else if (event.result) {
|
|
2574
2596
|
this.chatContainer.clear();
|
|
2575
2597
|
this.rebuildChatFromMessages();
|
|
2576
|
-
|
|
2598
|
+
if (isContextCompactionResult(event.result)) {
|
|
2599
|
+
this.addContextCompactionSummaryToChat(event.result);
|
|
2600
|
+
}
|
|
2601
|
+
else {
|
|
2602
|
+
this.addMessageToChat(createCompactionSummaryMessage(event.result.summary, event.result.tokensBefore, new Date().toISOString()));
|
|
2603
|
+
}
|
|
2577
2604
|
this.footer.invalidate();
|
|
2578
2605
|
}
|
|
2579
2606
|
else if (event.errorMessage) {
|
|
@@ -2589,6 +2616,50 @@ export class InteractiveMode {
|
|
|
2589
2616
|
this.ui.requestRender();
|
|
2590
2617
|
break;
|
|
2591
2618
|
}
|
|
2619
|
+
case "context_compaction_start": {
|
|
2620
|
+
if (this.settingsManager.getShowTerminalProgress()) {
|
|
2621
|
+
this.ui.terminal.setProgress(true);
|
|
2622
|
+
}
|
|
2623
|
+
this.autoCompactionEscapeHandler = this.defaultEditor.onEscape;
|
|
2624
|
+
this.defaultEditor.onEscape = () => {
|
|
2625
|
+
this.session.abortCompaction();
|
|
2626
|
+
};
|
|
2627
|
+
this.statusContainer.clear();
|
|
2628
|
+
const cancelHint = `(${keyText("app.interrupt")} Cancel)`;
|
|
2629
|
+
this.autoCompactionLoader = new Loader(this.ui, (spinner) => theme.fg("accent", spinner), (text) => theme.fg("muted", text), `Compacting context... ${cancelHint}`);
|
|
2630
|
+
this.statusContainer.addChild(this.autoCompactionLoader);
|
|
2631
|
+
this.ui.requestRender();
|
|
2632
|
+
break;
|
|
2633
|
+
}
|
|
2634
|
+
case "context_compaction_end": {
|
|
2635
|
+
if (this.settingsManager.getShowTerminalProgress()) {
|
|
2636
|
+
this.ui.terminal.setProgress(false);
|
|
2637
|
+
}
|
|
2638
|
+
if (this.autoCompactionEscapeHandler) {
|
|
2639
|
+
this.defaultEditor.onEscape = this.autoCompactionEscapeHandler;
|
|
2640
|
+
this.autoCompactionEscapeHandler = undefined;
|
|
2641
|
+
}
|
|
2642
|
+
if (this.autoCompactionLoader) {
|
|
2643
|
+
this.autoCompactionLoader.stop();
|
|
2644
|
+
this.autoCompactionLoader = undefined;
|
|
2645
|
+
this.statusContainer.clear();
|
|
2646
|
+
}
|
|
2647
|
+
if (event.aborted) {
|
|
2648
|
+
this.showError("Context compaction cancelled");
|
|
2649
|
+
}
|
|
2650
|
+
else if (event.result) {
|
|
2651
|
+
this.chatContainer.clear();
|
|
2652
|
+
this.rebuildChatFromMessages();
|
|
2653
|
+
this.addContextCompactionSummaryToChat(event.result);
|
|
2654
|
+
this.footer.invalidate();
|
|
2655
|
+
}
|
|
2656
|
+
else if (event.errorMessage) {
|
|
2657
|
+
this.showError(event.errorMessage);
|
|
2658
|
+
}
|
|
2659
|
+
void this.flushCompactionQueue({ willRetry: event.willRetry });
|
|
2660
|
+
this.ui.requestRender();
|
|
2661
|
+
break;
|
|
2662
|
+
}
|
|
2592
2663
|
case "auto_retry_start": {
|
|
2593
2664
|
// Set up escape to abort retry
|
|
2594
2665
|
this.retryEscapeHandler = this.defaultEditor.onEscape;
|
|
@@ -2688,6 +2759,12 @@ export class InteractiveMode {
|
|
|
2688
2759
|
addChatTranscriptEntry(this.chatContainer, component, entry.role);
|
|
2689
2760
|
return component;
|
|
2690
2761
|
}
|
|
2762
|
+
addContextCompactionSummaryToChat(result) {
|
|
2763
|
+
this.chatContainer.addChild(new Spacer(1));
|
|
2764
|
+
const component = new ContextCompactionSummaryMessageComponent(result, this.getMarkdownThemeWithSettings());
|
|
2765
|
+
component.setExpanded(this.toolOutputExpanded);
|
|
2766
|
+
this.chatContainer.addChild(component);
|
|
2767
|
+
}
|
|
2691
2768
|
addMessageToChat(message, options) {
|
|
2692
2769
|
switch (message.role) {
|
|
2693
2770
|
case "bashExecution": {
|
|
@@ -4821,7 +4898,7 @@ export class InteractiveMode {
|
|
|
4821
4898
|
this.bashComponent = undefined;
|
|
4822
4899
|
this.ui.requestRender();
|
|
4823
4900
|
}
|
|
4824
|
-
async handleCompactCommand(
|
|
4901
|
+
async handleCompactCommand() {
|
|
4825
4902
|
const entries = this.sessionManager.getEntries();
|
|
4826
4903
|
const messageCount = entries.filter((e) => e.type === "message").length;
|
|
4827
4904
|
if (messageCount < 2) {
|
|
@@ -4834,7 +4911,7 @@ export class InteractiveMode {
|
|
|
4834
4911
|
}
|
|
4835
4912
|
this.statusContainer.clear();
|
|
4836
4913
|
try {
|
|
4837
|
-
await this.session.compact(
|
|
4914
|
+
await this.session.compact();
|
|
4838
4915
|
}
|
|
4839
4916
|
catch {
|
|
4840
4917
|
// Ignore, will be emitted as an event
|