@prestyj/cli 4.3.209 → 4.3.237
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/README.md +17 -9
- package/dist/cli/auth.d.ts +4 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +344 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/command-routing.d.ts +28 -0
- package/dist/cli/command-routing.d.ts.map +1 -0
- package/dist/cli/command-routing.js +53 -0
- package/dist/cli/command-routing.js.map +1 -0
- package/dist/cli/command-routing.test.d.ts +2 -0
- package/dist/cli/command-routing.test.d.ts.map +1 -0
- package/dist/cli/command-routing.test.js +60 -0
- package/dist/cli/command-routing.test.js.map +1 -0
- package/dist/cli/mcp.d.ts +2 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +309 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/pixel.d.ts +27 -0
- package/dist/cli/pixel.d.ts.map +1 -0
- package/dist/cli/pixel.js +103 -0
- package/dist/cli/pixel.js.map +1 -0
- package/dist/cli/shared.d.ts +13 -0
- package/dist/cli/shared.d.ts.map +1 -0
- package/dist/cli/shared.js +82 -0
- package/dist/cli/shared.js.map +1 -0
- package/dist/cli.d.ts +4 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +174 -724
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +4 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -1
- package/dist/config.js.map +1 -1
- package/dist/config.test.d.ts +2 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +29 -0
- package/dist/config.test.js.map +1 -0
- package/dist/core/agent-session-compaction.test.d.ts +2 -0
- package/dist/core/agent-session-compaction.test.d.ts.map +1 -0
- package/dist/core/agent-session-compaction.test.js +114 -0
- package/dist/core/agent-session-compaction.test.js.map +1 -0
- package/dist/core/agent-session.d.ts +0 -23
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -101
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/checkpoint-store.d.ts +93 -0
- package/dist/core/checkpoint-store.d.ts.map +1 -0
- package/dist/core/checkpoint-store.js +188 -0
- package/dist/core/checkpoint-store.js.map +1 -0
- package/dist/core/checkpoint-store.test.d.ts +2 -0
- package/dist/core/checkpoint-store.test.d.ts.map +1 -0
- package/dist/core/checkpoint-store.test.js +111 -0
- package/dist/core/checkpoint-store.test.js.map +1 -0
- package/dist/core/compaction/compactor.d.ts +4 -0
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +81 -28
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +33 -9
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/compaction/token-estimator.test.js +1 -1
- package/dist/core/continue-replay-inventory.test.d.ts +2 -0
- package/dist/core/continue-replay-inventory.test.d.ts.map +1 -0
- package/dist/core/continue-replay-inventory.test.js +42 -0
- package/dist/core/continue-replay-inventory.test.js.map +1 -0
- package/dist/core/goal-controller.d.ts +4 -0
- package/dist/core/goal-controller.d.ts.map +1 -1
- package/dist/core/goal-controller.js +223 -32
- package/dist/core/goal-controller.js.map +1 -1
- package/dist/core/goal-controller.test.js +387 -22
- package/dist/core/goal-controller.test.js.map +1 -1
- package/dist/core/goal-lifecycle-smoke.test.js +49 -8
- package/dist/core/goal-lifecycle-smoke.test.js.map +1 -1
- package/dist/core/goal-prerequisites.d.ts +23 -0
- package/dist/core/goal-prerequisites.d.ts.map +1 -0
- package/dist/core/goal-prerequisites.js +114 -0
- package/dist/core/goal-prerequisites.js.map +1 -0
- package/dist/core/goal-prerequisites.test.d.ts +2 -0
- package/dist/core/goal-prerequisites.test.d.ts.map +1 -0
- package/dist/core/goal-prerequisites.test.js +118 -0
- package/dist/core/goal-prerequisites.test.js.map +1 -0
- package/dist/core/goal-store.d.ts +12 -1
- package/dist/core/goal-store.d.ts.map +1 -1
- package/dist/core/goal-store.js +146 -40
- package/dist/core/goal-store.js.map +1 -1
- package/dist/core/goal-store.test.js +65 -8
- package/dist/core/goal-store.test.js.map +1 -1
- package/dist/core/goal-verifier.d.ts.map +1 -1
- package/dist/core/goal-verifier.js +4 -1
- package/dist/core/goal-verifier.js.map +1 -1
- package/dist/core/goal-verifier.test.js +43 -0
- package/dist/core/goal-verifier.test.js.map +1 -1
- package/dist/core/goal-worker.d.ts +2 -0
- package/dist/core/goal-worker.d.ts.map +1 -1
- package/dist/core/goal-worker.js +31 -7
- package/dist/core/goal-worker.js.map +1 -1
- package/dist/core/goal-worker.test.js +44 -0
- package/dist/core/goal-worker.test.js.map +1 -1
- package/dist/core/ideal-review.d.ts +20 -0
- package/dist/core/ideal-review.d.ts.map +1 -0
- package/dist/core/ideal-review.js +55 -0
- package/dist/core/ideal-review.js.map +1 -0
- package/dist/core/ideal-review.test.d.ts +2 -0
- package/dist/core/ideal-review.test.d.ts.map +1 -0
- package/dist/core/ideal-review.test.js +59 -0
- package/dist/core/ideal-review.test.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/loop-breaker.d.ts +46 -0
- package/dist/core/loop-breaker.d.ts.map +1 -0
- package/dist/core/loop-breaker.js +79 -0
- package/dist/core/loop-breaker.js.map +1 -0
- package/dist/core/loop-breaker.test.d.ts +2 -0
- package/dist/core/loop-breaker.test.d.ts.map +1 -0
- package/dist/core/loop-breaker.test.js +110 -0
- package/dist/core/loop-breaker.test.js.map +1 -0
- package/dist/core/mcp/client.d.ts +20 -0
- package/dist/core/mcp/client.d.ts.map +1 -1
- package/dist/core/mcp/client.js +55 -11
- package/dist/core/mcp/client.js.map +1 -1
- package/dist/core/mcp/defaults.d.ts +7 -0
- package/dist/core/mcp/defaults.d.ts.map +1 -1
- package/dist/core/mcp/defaults.js +14 -0
- package/dist/core/mcp/defaults.js.map +1 -1
- package/dist/core/mcp/index.d.ts +6 -1
- package/dist/core/mcp/index.d.ts.map +1 -1
- package/dist/core/mcp/index.js +3 -1
- package/dist/core/mcp/index.js.map +1 -1
- package/dist/core/mcp/parse-add-command.d.ts +25 -0
- package/dist/core/mcp/parse-add-command.d.ts.map +1 -0
- package/dist/core/mcp/parse-add-command.js +220 -0
- package/dist/core/mcp/parse-add-command.js.map +1 -0
- package/dist/core/mcp/parse-add-command.test.d.ts +2 -0
- package/dist/core/mcp/parse-add-command.test.d.ts.map +1 -0
- package/dist/core/mcp/parse-add-command.test.js +75 -0
- package/dist/core/mcp/parse-add-command.test.js.map +1 -0
- package/dist/core/mcp/store.d.ts +80 -0
- package/dist/core/mcp/store.d.ts.map +1 -0
- package/dist/core/mcp/store.js +157 -0
- package/dist/core/mcp/store.js.map +1 -0
- package/dist/core/mcp/store.test.d.ts +2 -0
- package/dist/core/mcp/store.test.d.ts.map +1 -0
- package/dist/core/mcp/store.test.js +101 -0
- package/dist/core/mcp/store.test.js.map +1 -0
- package/dist/core/model-registry.d.ts +2 -2
- package/dist/core/model-registry.js +4 -4
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-registry.test.js +1 -1
- package/dist/core/model-registry.test.js.map +1 -1
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +64 -894
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/prompt-commands.test.js +49 -41
- package/dist/core/prompt-commands.test.js.map +1 -1
- package/dist/core/regrounding.d.ts +23 -0
- package/dist/core/regrounding.d.ts.map +1 -0
- package/dist/core/regrounding.js +21 -0
- package/dist/core/regrounding.js.map +1 -0
- package/dist/core/regrounding.test.d.ts +2 -0
- package/dist/core/regrounding.test.d.ts.map +1 -0
- package/dist/core/regrounding.test.js +38 -0
- package/dist/core/regrounding.test.js.map +1 -0
- package/dist/core/runtime-mode.d.ts +23 -0
- package/dist/core/runtime-mode.d.ts.map +1 -0
- package/dist/core/runtime-mode.js +30 -0
- package/dist/core/runtime-mode.js.map +1 -0
- package/dist/core/session-manager.d.ts +4 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +20 -0
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-restore-display.test.d.ts +2 -0
- package/dist/core/session-restore-display.test.d.ts.map +1 -0
- package/dist/core/session-restore-display.test.js +78 -0
- package/dist/core/session-restore-display.test.js.map +1 -0
- package/dist/core/settings-manager.d.ts +4 -2
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +3 -6
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts +0 -2
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +10 -15
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/style-packs/index.js +1 -1
- package/dist/core/style-packs/index.js.map +1 -1
- package/dist/core/task-store.d.ts +26 -0
- package/dist/core/task-store.d.ts.map +1 -0
- package/dist/core/task-store.js +147 -0
- package/dist/core/task-store.js.map +1 -0
- package/dist/core/tasks-store.d.ts +24 -0
- package/dist/core/tasks-store.d.ts.map +1 -0
- package/dist/core/tasks-store.js +81 -0
- package/dist/core/tasks-store.js.map +1 -0
- package/dist/core/thinking-level.d.ts +5 -0
- package/dist/core/thinking-level.d.ts.map +1 -0
- package/dist/core/thinking-level.js +59 -0
- package/dist/core/thinking-level.js.map +1 -0
- package/dist/core/thinking-level.test.d.ts +2 -0
- package/dist/core/thinking-level.test.d.ts.map +1 -0
- package/dist/core/thinking-level.test.js +38 -0
- package/dist/core/thinking-level.test.js.map +1 -0
- package/dist/core/verify-commands.js +4 -4
- package/dist/core/verify-commands.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +3 -1
- package/dist/interactive.js.map +1 -1
- package/dist/system-prompt.d.ts +5 -1
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +76 -48
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +98 -46
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/tools/bash.d.ts +6 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +21 -3
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/checkpoint-hook.test.d.ts +2 -0
- package/dist/tools/checkpoint-hook.test.d.ts.map +1 -0
- package/dist/tools/checkpoint-hook.test.js +65 -0
- package/dist/tools/checkpoint-hook.test.js.map +1 -0
- package/dist/tools/edit-diff.d.ts +17 -4
- package/dist/tools/edit-diff.d.ts.map +1 -1
- package/dist/tools/edit-diff.js +78 -16
- package/dist/tools/edit-diff.js.map +1 -1
- package/dist/tools/edit-diff.test.js +31 -1
- package/dist/tools/edit-diff.test.js.map +1 -1
- package/dist/tools/edit-robustness.test.d.ts +2 -0
- package/dist/tools/edit-robustness.test.d.ts.map +1 -0
- package/dist/tools/edit-robustness.test.js +415 -0
- package/dist/tools/edit-robustness.test.js.map +1 -0
- package/dist/tools/edit.d.ts +8 -2
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +48 -20
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/edit.test.js +23 -22
- package/dist/tools/edit.test.js.map +1 -1
- package/dist/tools/enter-plan.d.ts +1 -1
- package/dist/tools/enter-plan.d.ts.map +1 -1
- package/dist/tools/enter-plan.js +8 -11
- package/dist/tools/enter-plan.js.map +1 -1
- package/dist/tools/exit-plan.d.ts.map +1 -1
- package/dist/tools/exit-plan.js +8 -9
- package/dist/tools/exit-plan.js.map +1 -1
- package/dist/tools/goal-mode.test.d.ts +2 -0
- package/dist/tools/goal-mode.test.d.ts.map +1 -0
- package/dist/tools/goal-mode.test.js +121 -0
- package/dist/tools/goal-mode.test.js.map +1 -0
- package/dist/tools/goals.d.ts +14 -2
- package/dist/tools/goals.d.ts.map +1 -1
- package/dist/tools/goals.js +257 -26
- package/dist/tools/goals.js.map +1 -1
- package/dist/tools/goals.test.js +365 -1
- package/dist/tools/goals.test.js.map +1 -1
- package/dist/tools/html-extract.d.ts +58 -0
- package/dist/tools/html-extract.d.ts.map +1 -0
- package/dist/tools/html-extract.js +130 -0
- package/dist/tools/html-extract.js.map +1 -0
- package/dist/tools/html-extract.test.d.ts +2 -0
- package/dist/tools/html-extract.test.d.ts.map +1 -0
- package/dist/tools/html-extract.test.js +60 -0
- package/dist/tools/html-extract.test.js.map +1 -0
- package/dist/tools/index.d.ts +16 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +11 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/pdf-extract.d.ts +18 -0
- package/dist/tools/pdf-extract.d.ts.map +1 -0
- package/dist/tools/pdf-extract.js +43 -0
- package/dist/tools/pdf-extract.js.map +1 -0
- package/dist/tools/pdf-extract.test.d.ts +2 -0
- package/dist/tools/pdf-extract.test.d.ts.map +1 -0
- package/dist/tools/pdf-extract.test.js +15 -0
- package/dist/tools/pdf-extract.test.js.map +1 -0
- package/dist/tools/plan-mode.test.js +82 -221
- package/dist/tools/plan-mode.test.js.map +1 -1
- package/dist/tools/prompt-hints.d.ts.map +1 -1
- package/dist/tools/prompt-hints.js +6 -9
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/read-only-bash.d.ts +13 -0
- package/dist/tools/read-only-bash.d.ts.map +1 -0
- package/dist/tools/read-only-bash.js +155 -0
- package/dist/tools/read-only-bash.js.map +1 -0
- package/dist/tools/read-only-bash.test.d.ts +2 -0
- package/dist/tools/read-only-bash.test.d.ts.map +1 -0
- package/dist/tools/read-only-bash.test.js +47 -0
- package/dist/tools/read-only-bash.test.js.map +1 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +14 -1
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/read.test.js +4 -0
- package/dist/tools/read.test.js.map +1 -1
- package/dist/tools/screenshot.d.ts +25 -0
- package/dist/tools/screenshot.d.ts.map +1 -0
- package/dist/tools/screenshot.js +165 -0
- package/dist/tools/screenshot.js.map +1 -0
- package/dist/tools/screenshot.test.d.ts +2 -0
- package/dist/tools/screenshot.test.d.ts.map +1 -0
- package/dist/tools/screenshot.test.js +145 -0
- package/dist/tools/screenshot.test.js.map +1 -0
- package/dist/tools/subagent.d.ts +7 -2
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +32 -11
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +22 -58
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +16 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +357 -45
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-fetch.test.js +263 -2
- package/dist/tools/web-fetch.test.js.map +1 -1
- package/dist/tools/web-search.d.ts +14 -0
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +321 -35
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools/web-search.test.js +144 -1
- package/dist/tools/web-search.test.js.map +1 -1
- package/dist/tools/write.d.ts +8 -2
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +36 -9
- package/dist/tools/write.js.map +1 -1
- package/dist/tools/write.test.js +0 -16
- package/dist/tools/write.test.js.map +1 -1
- package/dist/ui/App.d.ts +52 -272
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +1606 -2199
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/activity-phrases.d.ts.map +1 -1
- package/dist/ui/activity-phrases.js +0 -2
- package/dist/ui/activity-phrases.js.map +1 -1
- package/dist/ui/app-items.d.ts +276 -0
- package/dist/ui/app-items.d.ts.map +1 -0
- package/dist/ui/app-items.js +52 -0
- package/dist/ui/app-items.js.map +1 -0
- package/dist/ui/app-items.test.d.ts +2 -0
- package/dist/ui/app-items.test.d.ts.map +1 -0
- package/dist/ui/app-items.test.js +38 -0
- package/dist/ui/app-items.test.js.map +1 -0
- package/dist/ui/app-state-persistence.test.js +45 -160
- package/dist/ui/app-state-persistence.test.js.map +1 -1
- package/dist/ui/assistant-stream-flush-parity.test.d.ts +2 -0
- package/dist/ui/assistant-stream-flush-parity.test.d.ts.map +1 -0
- package/dist/ui/assistant-stream-flush-parity.test.js +85 -0
- package/dist/ui/assistant-stream-flush-parity.test.js.map +1 -0
- package/dist/ui/chat-layout-pinning.test.d.ts +2 -0
- package/dist/ui/chat-layout-pinning.test.d.ts.map +1 -0
- package/dist/ui/chat-layout-pinning.test.js +525 -0
- package/dist/ui/chat-layout-pinning.test.js.map +1 -0
- package/dist/ui/components/ActivityIndicator.d.ts +1 -2
- package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
- package/dist/ui/components/ActivityIndicator.js +63 -94
- package/dist/ui/components/ActivityIndicator.js.map +1 -1
- package/dist/ui/components/AnimationContext.d.ts.map +1 -1
- package/dist/ui/components/AnimationContext.js +3 -5
- package/dist/ui/components/AnimationContext.js.map +1 -1
- package/dist/ui/components/AssistantMessage.d.ts +6 -2
- package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
- package/dist/ui/components/AssistantMessage.js +9 -4
- package/dist/ui/components/AssistantMessage.js.map +1 -1
- package/dist/ui/components/AssistantMessage.test.d.ts +2 -0
- package/dist/ui/components/AssistantMessage.test.d.ts.map +1 -0
- package/dist/ui/components/AssistantMessage.test.js +387 -0
- package/dist/ui/components/AssistantMessage.test.js.map +1 -0
- package/dist/ui/components/BackgroundTasksBar.d.ts +1 -3
- package/dist/ui/components/BackgroundTasksBar.d.ts.map +1 -1
- package/dist/ui/components/BackgroundTasksBar.js +8 -10
- package/dist/ui/components/BackgroundTasksBar.js.map +1 -1
- package/dist/ui/components/Banner.d.ts +1 -2
- package/dist/ui/components/Banner.d.ts.map +1 -1
- package/dist/ui/components/Banner.js +9 -4
- package/dist/ui/components/Banner.js.map +1 -1
- package/dist/ui/components/ChatFooterPane.d.ts +25 -0
- package/dist/ui/components/ChatFooterPane.d.ts.map +1 -0
- package/dist/ui/components/ChatFooterPane.js +15 -0
- package/dist/ui/components/ChatFooterPane.js.map +1 -0
- package/dist/ui/components/ChatInputStack.d.ts +36 -0
- package/dist/ui/components/ChatInputStack.d.ts.map +1 -0
- package/dist/ui/components/ChatInputStack.js +10 -0
- package/dist/ui/components/ChatInputStack.js.map +1 -0
- package/dist/ui/components/ChatLayout.d.ts +37 -0
- package/dist/ui/components/ChatLayout.d.ts.map +1 -0
- package/dist/ui/components/ChatLayout.js +21 -0
- package/dist/ui/components/ChatLayout.js.map +1 -0
- package/dist/ui/components/ChatLivePane.d.ts +18 -0
- package/dist/ui/components/ChatLivePane.d.ts.map +1 -0
- package/dist/ui/components/ChatLivePane.js +22 -0
- package/dist/ui/components/ChatLivePane.js.map +1 -0
- package/dist/ui/components/ChatScreen.d.ts +136 -0
- package/dist/ui/components/ChatScreen.d.ts.map +1 -0
- package/dist/ui/components/ChatScreen.js +16 -0
- package/dist/ui/components/ChatScreen.js.map +1 -0
- package/dist/ui/components/ChatStatusRow.d.ts +34 -0
- package/dist/ui/components/ChatStatusRow.d.ts.map +1 -0
- package/dist/ui/components/ChatStatusRow.js +11 -0
- package/dist/ui/components/ChatStatusRow.js.map +1 -0
- package/dist/ui/components/CompactionNotice.d.ts +4 -2
- package/dist/ui/components/CompactionNotice.d.ts.map +1 -1
- package/dist/ui/components/CompactionNotice.js +4 -4
- package/dist/ui/components/CompactionNotice.js.map +1 -1
- package/dist/ui/components/Footer.d.ts +27 -6
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +75 -30
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/ui/components/FooterStatusRow.d.ts +20 -0
- package/dist/ui/components/FooterStatusRow.d.ts.map +1 -0
- package/dist/ui/components/FooterStatusRow.js +10 -0
- package/dist/ui/components/FooterStatusRow.js.map +1 -0
- package/dist/ui/components/FullScreenOverlayRouter.d.ts +19 -0
- package/dist/ui/components/FullScreenOverlayRouter.d.ts.map +1 -0
- package/dist/ui/components/FullScreenOverlayRouter.js +18 -0
- package/dist/ui/components/FullScreenOverlayRouter.js.map +1 -0
- package/dist/ui/components/GoalOverlay.d.ts +28 -20
- package/dist/ui/components/GoalOverlay.d.ts.map +1 -1
- package/dist/ui/components/GoalOverlay.js +283 -253
- package/dist/ui/components/GoalOverlay.js.map +1 -1
- package/dist/ui/components/GoalStatusBar.d.ts.map +1 -1
- package/dist/ui/components/GoalStatusBar.js +2 -1
- package/dist/ui/components/GoalStatusBar.js.map +1 -1
- package/dist/ui/components/IdealHookMessage.d.ts +14 -0
- package/dist/ui/components/IdealHookMessage.d.ts.map +1 -0
- package/dist/ui/components/IdealHookMessage.js +26 -0
- package/dist/ui/components/IdealHookMessage.js.map +1 -0
- package/dist/ui/components/InputArea.d.ts +31 -6
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +208 -50
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/InputArea.test.js +11 -1
- package/dist/ui/components/InputArea.test.js.map +1 -1
- package/dist/ui/components/LiveToolPanel.d.ts +30 -0
- package/dist/ui/components/LiveToolPanel.d.ts.map +1 -0
- package/dist/ui/components/LiveToolPanel.js +66 -0
- package/dist/ui/components/LiveToolPanel.js.map +1 -0
- package/dist/ui/components/Markdown.d.ts +11 -11
- package/dist/ui/components/Markdown.d.ts.map +1 -1
- package/dist/ui/components/Markdown.js +28 -198
- package/dist/ui/components/Markdown.js.map +1 -1
- package/dist/ui/components/ModelSelector.d.ts.map +1 -1
- package/dist/ui/components/ModelSelector.js +18 -18
- package/dist/ui/components/ModelSelector.js.map +1 -1
- package/dist/ui/components/PlanModeLogo.d.ts +3 -0
- package/dist/ui/components/PlanModeLogo.d.ts.map +1 -0
- package/dist/ui/components/PlanModeLogo.js +49 -0
- package/dist/ui/components/PlanModeLogo.js.map +1 -0
- package/dist/ui/components/PlanOverlay.d.ts +7 -0
- package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
- package/dist/ui/components/PlanOverlay.js +17 -3
- package/dist/ui/components/PlanOverlay.js.map +1 -1
- package/dist/ui/components/PlanOverlay.test.d.ts +2 -0
- package/dist/ui/components/PlanOverlay.test.d.ts.map +1 -0
- package/dist/ui/components/PlanOverlay.test.js +24 -0
- package/dist/ui/components/PlanOverlay.test.js.map +1 -0
- package/dist/ui/components/QueueIndicator.d.ts +9 -0
- package/dist/ui/components/QueueIndicator.d.ts.map +1 -0
- package/dist/ui/components/QueueIndicator.js +9 -0
- package/dist/ui/components/QueueIndicator.js.map +1 -0
- package/dist/ui/components/RewindOverlay.d.ts +18 -0
- package/dist/ui/components/RewindOverlay.d.ts.map +1 -0
- package/dist/ui/components/RewindOverlay.js +52 -0
- package/dist/ui/components/RewindOverlay.js.map +1 -0
- package/dist/ui/components/SelectList.d.ts.map +1 -1
- package/dist/ui/components/SelectList.js +5 -0
- package/dist/ui/components/SelectList.js.map +1 -1
- package/dist/ui/components/ServerToolExecution.d.ts +2 -0
- package/dist/ui/components/ServerToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ServerToolExecution.js +7 -23
- package/dist/ui/components/ServerToolExecution.js.map +1 -1
- package/dist/ui/components/SessionSummary.d.ts +5 -0
- package/dist/ui/components/SessionSummary.d.ts.map +1 -0
- package/dist/ui/components/SessionSummary.js +32 -0
- package/dist/ui/components/SessionSummary.js.map +1 -0
- package/dist/ui/components/SlashCommandMenu.d.ts +4 -3
- package/dist/ui/components/SlashCommandMenu.d.ts.map +1 -1
- package/dist/ui/components/SlashCommandMenu.js +38 -26
- package/dist/ui/components/SlashCommandMenu.js.map +1 -1
- package/dist/ui/components/SlashStyledSelectList.d.ts +21 -0
- package/dist/ui/components/SlashStyledSelectList.d.ts.map +1 -0
- package/dist/ui/components/SlashStyledSelectList.js +71 -0
- package/dist/ui/components/SlashStyledSelectList.js.map +1 -0
- package/dist/ui/components/StreamingArea.d.ts +11 -2
- package/dist/ui/components/StreamingArea.d.ts.map +1 -1
- package/dist/ui/components/StreamingArea.js +20 -23
- package/dist/ui/components/StreamingArea.js.map +1 -1
- package/dist/ui/components/StreamingArea.test.d.ts +2 -0
- package/dist/ui/components/StreamingArea.test.d.ts.map +1 -0
- package/dist/ui/components/StreamingArea.test.js +18 -0
- package/dist/ui/components/StreamingArea.test.js.map +1 -0
- package/dist/ui/components/SubAgentPanel.d.ts +2 -1
- package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
- package/dist/ui/components/SubAgentPanel.js +4 -3
- package/dist/ui/components/SubAgentPanel.js.map +1 -1
- package/dist/ui/components/TaskOverlay.d.ts.map +1 -1
- package/dist/ui/components/TaskOverlay.js +53 -82
- package/dist/ui/components/TaskOverlay.js.map +1 -1
- package/dist/ui/components/TaskPickerMenu.d.ts +9 -0
- package/dist/ui/components/TaskPickerMenu.d.ts.map +1 -0
- package/dist/ui/components/TaskPickerMenu.js +33 -0
- package/dist/ui/components/TaskPickerMenu.js.map +1 -0
- package/dist/ui/components/ThemeSelector.js +2 -2
- package/dist/ui/components/ThemeSelector.js.map +1 -1
- package/dist/ui/components/ToolExecution.d.ts +2 -0
- package/dist/ui/components/ToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolExecution.js +18 -52
- package/dist/ui/components/ToolExecution.js.map +1 -1
- package/dist/ui/components/ToolGroupExecution.d.ts +6 -2
- package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolGroupExecution.js +15 -147
- package/dist/ui/components/ToolGroupExecution.js.map +1 -1
- package/dist/ui/components/ToolUseLoader.d.ts +3 -1
- package/dist/ui/components/ToolUseLoader.d.ts.map +1 -1
- package/dist/ui/components/ToolUseLoader.js +2 -2
- package/dist/ui/components/ToolUseLoader.js.map +1 -1
- package/dist/ui/components/TranscriptViewport.d.ts +34 -0
- package/dist/ui/components/TranscriptViewport.d.ts.map +1 -0
- package/dist/ui/components/TranscriptViewport.js +45 -0
- package/dist/ui/components/TranscriptViewport.js.map +1 -0
- package/dist/ui/components/UserMessage.d.ts.map +1 -1
- package/dist/ui/components/UserMessage.js +15 -10
- package/dist/ui/components/UserMessage.js.map +1 -1
- package/dist/ui/components/UserMessage.test.d.ts +2 -0
- package/dist/ui/components/UserMessage.test.d.ts.map +1 -0
- package/dist/ui/components/UserMessage.test.js +39 -0
- package/dist/ui/components/UserMessage.test.js.map +1 -0
- package/dist/ui/components/index.d.ts +5 -0
- package/dist/ui/components/index.d.ts.map +1 -1
- package/dist/ui/components/index.js +5 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/duration-format.d.ts +2 -0
- package/dist/ui/duration-format.d.ts.map +1 -0
- package/dist/ui/duration-format.js +9 -0
- package/dist/ui/duration-format.js.map +1 -0
- package/dist/ui/duration-summary.d.ts +2 -0
- package/dist/ui/duration-summary.d.ts.map +1 -0
- package/dist/ui/duration-summary.js +66 -0
- package/dist/ui/duration-summary.js.map +1 -0
- package/dist/ui/error-item.d.ts +8 -0
- package/dist/ui/error-item.d.ts.map +1 -0
- package/dist/ui/error-item.js +32 -0
- package/dist/ui/error-item.js.map +1 -0
- package/dist/ui/footer-jump-regression.test.d.ts +2 -0
- package/dist/ui/footer-jump-regression.test.d.ts.map +1 -0
- package/dist/ui/footer-jump-regression.test.js +177 -0
- package/dist/ui/footer-jump-regression.test.js.map +1 -0
- package/dist/ui/footer-status-layout.test.js +22 -7
- package/dist/ui/footer-status-layout.test.js.map +1 -1
- package/dist/ui/goal-events.d.ts.map +1 -1
- package/dist/ui/goal-events.js +14 -6
- package/dist/ui/goal-events.js.map +1 -1
- package/dist/ui/goal-events.test.js +40 -2
- package/dist/ui/goal-events.test.js.map +1 -1
- package/dist/ui/goal-lifecycle-orchestration.test.d.ts +2 -0
- package/dist/ui/goal-lifecycle-orchestration.test.d.ts.map +1 -0
- package/dist/ui/goal-lifecycle-orchestration.test.js +512 -0
- package/dist/ui/goal-lifecycle-orchestration.test.js.map +1 -0
- package/dist/ui/goal-overlay.test.js +122 -44
- package/dist/ui/goal-overlay.test.js.map +1 -1
- package/dist/ui/goal-status-bar.test.js +29 -0
- package/dist/ui/goal-status-bar.test.js.map +1 -1
- package/dist/ui/goal-summary.d.ts +14 -0
- package/dist/ui/goal-summary.d.ts.map +1 -0
- package/dist/ui/goal-summary.js +194 -0
- package/dist/ui/goal-summary.js.map +1 -0
- package/dist/ui/hooks/useAgentLoop.d.ts +25 -4
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +197 -22
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.test.d.ts +2 -0
- package/dist/ui/hooks/useAgentLoop.test.d.ts.map +1 -0
- package/dist/ui/hooks/useAgentLoop.test.js +8 -0
- package/dist/ui/hooks/useAgentLoop.test.js.map +1 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts +45 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts.map +1 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.js +97 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.js.map +1 -0
- package/dist/ui/hooks/useContextCompaction.d.ts +41 -0
- package/dist/ui/hooks/useContextCompaction.d.ts.map +1 -0
- package/dist/ui/hooks/useContextCompaction.js +149 -0
- package/dist/ui/hooks/useContextCompaction.js.map +1 -0
- package/dist/ui/hooks/useModeState.d.ts +56 -0
- package/dist/ui/hooks/useModeState.d.ts.map +1 -0
- package/dist/ui/hooks/useModeState.js +65 -0
- package/dist/ui/hooks/useModeState.js.map +1 -0
- package/dist/ui/hooks/usePixelFixFlow.d.ts +57 -0
- package/dist/ui/hooks/usePixelFixFlow.d.ts.map +1 -0
- package/dist/ui/hooks/usePixelFixFlow.js +102 -0
- package/dist/ui/hooks/usePixelFixFlow.js.map +1 -0
- package/dist/ui/hooks/useSessionPersistence.d.ts +34 -0
- package/dist/ui/hooks/useSessionPersistence.d.ts.map +1 -0
- package/dist/ui/hooks/useSessionPersistence.js +67 -0
- package/dist/ui/hooks/useSessionPersistence.js.map +1 -0
- package/dist/ui/hooks/useTaskPickerController.d.ts +19 -0
- package/dist/ui/hooks/useTaskPickerController.d.ts.map +1 -0
- package/dist/ui/hooks/useTaskPickerController.js +41 -0
- package/dist/ui/hooks/useTaskPickerController.js.map +1 -0
- package/dist/ui/hooks/useTerminalSize.d.ts +13 -10
- package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalSize.js +21 -16
- package/dist/ui/hooks/useTerminalSize.js.map +1 -1
- package/dist/ui/hooks/useTranscriptHistory.d.ts +48 -0
- package/dist/ui/hooks/useTranscriptHistory.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.js +113 -0
- package/dist/ui/hooks/useTranscriptHistory.js.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.test.d.ts +2 -0
- package/dist/ui/hooks/useTranscriptHistory.test.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.test.js +61 -0
- package/dist/ui/hooks/useTranscriptHistory.test.js.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.d.ts +30 -0
- package/dist/ui/hooks/useTranscriptScroll.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.js +44 -0
- package/dist/ui/hooks/useTranscriptScroll.js.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.test.d.ts +2 -0
- package/dist/ui/hooks/useTranscriptScroll.test.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.test.js +119 -0
- package/dist/ui/hooks/useTranscriptScroll.test.js.map +1 -0
- package/dist/ui/item-helpers.d.ts +26 -0
- package/dist/ui/item-helpers.d.ts.map +1 -0
- package/dist/ui/item-helpers.js +114 -0
- package/dist/ui/item-helpers.js.map +1 -0
- package/dist/ui/layout-decisions.d.ts +81 -0
- package/dist/ui/layout-decisions.d.ts.map +1 -0
- package/dist/ui/layout-decisions.js +89 -0
- package/dist/ui/layout-decisions.js.map +1 -0
- package/dist/ui/live-area-clamp.test.d.ts +2 -0
- package/dist/ui/live-area-clamp.test.d.ts.map +1 -0
- package/dist/ui/live-area-clamp.test.js +88 -0
- package/dist/ui/live-area-clamp.test.js.map +1 -0
- package/dist/ui/live-area-height.d.ts +35 -0
- package/dist/ui/live-area-height.d.ts.map +1 -0
- package/dist/ui/live-area-height.js +80 -0
- package/dist/ui/live-area-height.js.map +1 -0
- package/dist/ui/live-area-height.test.d.ts +2 -0
- package/dist/ui/live-area-height.test.d.ts.map +1 -0
- package/dist/ui/live-area-height.test.js +67 -0
- package/dist/ui/live-area-height.test.js.map +1 -0
- package/dist/ui/live-frame-height.test.d.ts +2 -0
- package/dist/ui/live-frame-height.test.d.ts.map +1 -0
- package/dist/ui/live-frame-height.test.js +116 -0
- package/dist/ui/live-frame-height.test.js.map +1 -0
- package/dist/ui/live-item-flush.d.ts +2 -2
- package/dist/ui/live-item-flush.d.ts.map +1 -1
- package/dist/ui/live-item-flush.js +8 -4
- package/dist/ui/live-item-flush.js.map +1 -1
- package/dist/ui/login.js +1 -1
- package/dist/ui/long-prompt-regression-harness.test.d.ts +2 -0
- package/dist/ui/long-prompt-regression-harness.test.d.ts.map +1 -0
- package/dist/ui/long-prompt-regression-harness.test.js +195 -0
- package/dist/ui/long-prompt-regression-harness.test.js.map +1 -0
- package/dist/ui/mcp.d.ts +62 -0
- package/dist/ui/mcp.d.ts.map +1 -0
- package/dist/ui/mcp.js +306 -0
- package/dist/ui/mcp.js.map +1 -0
- package/dist/ui/plan-overlay.test.js +7 -29
- package/dist/ui/plan-overlay.test.js.map +1 -1
- package/dist/ui/prompt-routing.d.ts +11 -0
- package/dist/ui/prompt-routing.d.ts.map +1 -0
- package/dist/ui/prompt-routing.js +61 -0
- package/dist/ui/prompt-routing.js.map +1 -0
- package/dist/ui/queued-message.test.d.ts +2 -0
- package/dist/ui/queued-message.test.d.ts.map +1 -0
- package/dist/ui/queued-message.test.js +162 -0
- package/dist/ui/queued-message.test.js.map +1 -0
- package/dist/ui/render.d.ts +38 -34
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +128 -41
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/render.test.d.ts +2 -0
- package/dist/ui/render.test.d.ts.map +1 -0
- package/dist/ui/render.test.js +16 -0
- package/dist/ui/render.test.js.map +1 -0
- package/dist/ui/scroll-stabilization.test.js +1 -7
- package/dist/ui/scroll-stabilization.test.js.map +1 -1
- package/dist/ui/session-summary.d.ts +63 -0
- package/dist/ui/session-summary.d.ts.map +1 -0
- package/dist/ui/session-summary.js +81 -0
- package/dist/ui/session-summary.js.map +1 -0
- package/dist/ui/slash-command-images.test.js +12 -11
- package/dist/ui/slash-command-images.test.js.map +1 -1
- package/dist/ui/stores/transcript-scroll-store.d.ts +27 -0
- package/dist/ui/stores/transcript-scroll-store.d.ts.map +1 -0
- package/dist/ui/stores/transcript-scroll-store.js +73 -0
- package/dist/ui/stores/transcript-scroll-store.js.map +1 -0
- package/dist/ui/stores/transcript-scroll-store.test.d.ts +2 -0
- package/dist/ui/stores/transcript-scroll-store.test.d.ts.map +1 -0
- package/dist/ui/stores/transcript-scroll-store.test.js +73 -0
- package/dist/ui/stores/transcript-scroll-store.test.js.map +1 -0
- package/dist/ui/streaming-flush-bounce.test.d.ts +2 -0
- package/dist/ui/streaming-flush-bounce.test.d.ts.map +1 -0
- package/dist/ui/streaming-flush-bounce.test.js +156 -0
- package/dist/ui/streaming-flush-bounce.test.js.map +1 -0
- package/dist/ui/submit-prompt-command.d.ts +49 -0
- package/dist/ui/submit-prompt-command.d.ts.map +1 -0
- package/dist/ui/submit-prompt-command.js +107 -0
- package/dist/ui/submit-prompt-command.js.map +1 -0
- package/dist/ui/submit-slash-commands.d.ts +12 -0
- package/dist/ui/submit-slash-commands.d.ts.map +1 -0
- package/dist/ui/submit-slash-commands.js +32 -0
- package/dist/ui/submit-slash-commands.js.map +1 -0
- package/dist/ui/terminal-history-format.d.ts +43 -0
- package/dist/ui/terminal-history-format.d.ts.map +1 -0
- package/dist/ui/terminal-history-format.js +133 -0
- package/dist/ui/terminal-history-format.js.map +1 -0
- package/dist/ui/terminal-history-retry-dedup.test.d.ts +2 -0
- package/dist/ui/terminal-history-retry-dedup.test.d.ts.map +1 -0
- package/dist/ui/terminal-history-retry-dedup.test.js +61 -0
- package/dist/ui/terminal-history-retry-dedup.test.js.map +1 -0
- package/dist/ui/terminal-history-spacing.d.ts +2 -0
- package/dist/ui/terminal-history-spacing.d.ts.map +1 -0
- package/dist/ui/terminal-history-spacing.js +2 -0
- package/dist/ui/terminal-history-spacing.js.map +1 -0
- package/dist/ui/terminal-history-status-renderers.d.ts +15 -0
- package/dist/ui/terminal-history-status-renderers.d.ts.map +1 -0
- package/dist/ui/terminal-history-status-renderers.js +99 -0
- package/dist/ui/terminal-history-status-renderers.js.map +1 -0
- package/dist/ui/terminal-history.d.ts +26 -0
- package/dist/ui/terminal-history.d.ts.map +1 -0
- package/dist/ui/terminal-history.js +916 -0
- package/dist/ui/terminal-history.js.map +1 -0
- package/dist/ui/terminal-history.test.d.ts +2 -0
- package/dist/ui/terminal-history.test.d.ts.map +1 -0
- package/dist/ui/terminal-history.test.js +550 -0
- package/dist/ui/terminal-history.test.js.map +1 -0
- package/dist/ui/testing/screen-recorder.d.ts +29 -0
- package/dist/ui/testing/screen-recorder.d.ts.map +1 -0
- package/dist/ui/testing/screen-recorder.js +179 -0
- package/dist/ui/testing/screen-recorder.js.map +1 -0
- package/dist/ui/thinking-level-cycle.test.d.ts +2 -0
- package/dist/ui/thinking-level-cycle.test.d.ts.map +1 -0
- package/dist/ui/thinking-level-cycle.test.js +45 -0
- package/dist/ui/thinking-level-cycle.test.js.map +1 -0
- package/dist/ui/thinking-level.d.ts +2 -0
- package/dist/ui/thinking-level.d.ts.map +1 -0
- package/dist/ui/thinking-level.js +2 -0
- package/dist/ui/thinking-level.js.map +1 -0
- package/dist/ui/tool-group-summary.d.ts +24 -0
- package/dist/ui/tool-group-summary.d.ts.map +1 -0
- package/dist/ui/tool-group-summary.js +233 -0
- package/dist/ui/tool-group-summary.js.map +1 -0
- package/dist/ui/tool-group-summary.test.d.ts +2 -0
- package/dist/ui/tool-group-summary.test.d.ts.map +1 -0
- package/dist/ui/tool-group-summary.test.js +79 -0
- package/dist/ui/tool-group-summary.test.js.map +1 -0
- package/dist/ui/tool-line-summary.d.ts +29 -0
- package/dist/ui/tool-line-summary.d.ts.map +1 -0
- package/dist/ui/tool-line-summary.js +153 -0
- package/dist/ui/tool-line-summary.js.map +1 -0
- package/dist/ui/transcript/MiscRows.d.ts +26 -0
- package/dist/ui/transcript/MiscRows.d.ts.map +1 -0
- package/dist/ui/transcript/MiscRows.js +68 -0
- package/dist/ui/transcript/MiscRows.js.map +1 -0
- package/dist/ui/transcript/StatusRow.d.ts +14 -0
- package/dist/ui/transcript/StatusRow.d.ts.map +1 -0
- package/dist/ui/transcript/StatusRow.js +14 -0
- package/dist/ui/transcript/StatusRow.js.map +1 -0
- package/dist/ui/transcript/ToolRows.d.ts +20 -0
- package/dist/ui/transcript/ToolRows.d.ts.map +1 -0
- package/dist/ui/transcript/ToolRows.js +25 -0
- package/dist/ui/transcript/ToolRows.js.map +1 -0
- package/dist/ui/transcript/TranscriptItemFrame.d.ts +8 -0
- package/dist/ui/transcript/TranscriptItemFrame.d.ts.map +1 -0
- package/dist/ui/transcript/TranscriptItemFrame.js +9 -0
- package/dist/ui/transcript/TranscriptItemFrame.js.map +1 -0
- package/dist/ui/transcript/TranscriptRenderer.d.ts +22 -0
- package/dist/ui/transcript/TranscriptRenderer.d.ts.map +1 -0
- package/dist/ui/transcript/TranscriptRenderer.js +111 -0
- package/dist/ui/transcript/TranscriptRenderer.js.map +1 -0
- package/dist/ui/transcript/presentation.d.ts +61 -0
- package/dist/ui/transcript/presentation.d.ts.map +1 -0
- package/dist/ui/transcript/presentation.js +86 -0
- package/dist/ui/transcript/presentation.js.map +1 -0
- package/dist/ui/transcript/spacing.d.ts +56 -0
- package/dist/ui/transcript/spacing.d.ts.map +1 -0
- package/dist/ui/transcript/spacing.js +129 -0
- package/dist/ui/transcript/spacing.js.map +1 -0
- package/dist/ui/transcript/spacing.test.d.ts +2 -0
- package/dist/ui/transcript/spacing.test.d.ts.map +1 -0
- package/dist/ui/transcript/spacing.test.js +193 -0
- package/dist/ui/transcript/spacing.test.js.map +1 -0
- package/dist/ui/transcript/tool-presentation.d.ts +12 -0
- package/dist/ui/transcript/tool-presentation.d.ts.map +1 -0
- package/dist/ui/transcript/tool-presentation.js +55 -0
- package/dist/ui/transcript/tool-presentation.js.map +1 -0
- package/dist/ui/transcript/transcript-lines.d.ts +32 -0
- package/dist/ui/transcript/transcript-lines.d.ts.map +1 -0
- package/dist/ui/transcript/transcript-lines.js +86 -0
- package/dist/ui/transcript/transcript-lines.js.map +1 -0
- package/dist/ui/transcript/transcript-lines.test.d.ts +2 -0
- package/dist/ui/transcript/transcript-lines.test.d.ts.map +1 -0
- package/dist/ui/transcript/transcript-lines.test.js +76 -0
- package/dist/ui/transcript/transcript-lines.test.js.map +1 -0
- package/dist/ui/transcript-viewport-pinning.test.d.ts +2 -0
- package/dist/ui/transcript-viewport-pinning.test.d.ts.map +1 -0
- package/dist/ui/transcript-viewport-pinning.test.js +148 -0
- package/dist/ui/transcript-viewport-pinning.test.js.map +1 -0
- package/dist/ui/tui-history-parity.test.d.ts +2 -0
- package/dist/ui/tui-history-parity.test.d.ts.map +1 -0
- package/dist/ui/tui-history-parity.test.js +381 -0
- package/dist/ui/tui-history-parity.test.js.map +1 -0
- package/dist/ui/tui-simulation.test.d.ts +2 -0
- package/dist/ui/tui-simulation.test.d.ts.map +1 -0
- package/dist/ui/tui-simulation.test.js +139 -0
- package/dist/ui/tui-simulation.test.js.map +1 -0
- package/dist/ui/tui-terminal-recorder.test.d.ts +2 -0
- package/dist/ui/tui-terminal-recorder.test.d.ts.map +1 -0
- package/dist/ui/tui-terminal-recorder.test.js +134 -0
- package/dist/ui/tui-terminal-recorder.test.js.map +1 -0
- package/dist/ui/utils/assistant-stream-split.d.ts +23 -0
- package/dist/ui/utils/assistant-stream-split.d.ts.map +1 -0
- package/dist/ui/utils/assistant-stream-split.js +41 -0
- package/dist/ui/utils/assistant-stream-split.js.map +1 -0
- package/dist/ui/utils/assistant-stream-split.test.d.ts +2 -0
- package/dist/ui/utils/assistant-stream-split.test.d.ts.map +1 -0
- package/dist/ui/utils/assistant-stream-split.test.js +40 -0
- package/dist/ui/utils/assistant-stream-split.test.js.map +1 -0
- package/dist/ui/utils/latex-to-unicode.d.ts +22 -0
- package/dist/ui/utils/latex-to-unicode.d.ts.map +1 -0
- package/dist/ui/utils/latex-to-unicode.js +538 -0
- package/dist/ui/utils/latex-to-unicode.js.map +1 -0
- package/dist/ui/utils/markdown-renderer.d.ts +20 -0
- package/dist/ui/utils/markdown-renderer.d.ts.map +1 -0
- package/dist/ui/utils/markdown-renderer.js +327 -0
- package/dist/ui/utils/markdown-renderer.js.map +1 -0
- package/dist/ui/utils/markdown-table.d.ts +9 -0
- package/dist/ui/utils/markdown-table.d.ts.map +1 -0
- package/dist/ui/utils/markdown-table.js +95 -0
- package/dist/ui/utils/markdown-table.js.map +1 -0
- package/dist/ui/utils/terminal-graphics.d.ts +16 -0
- package/dist/ui/utils/terminal-graphics.d.ts.map +1 -0
- package/dist/ui/utils/terminal-graphics.js +68 -0
- package/dist/ui/utils/terminal-graphics.js.map +1 -0
- package/dist/ui/utils/terminal-graphics.test.d.ts +2 -0
- package/dist/ui/utils/terminal-graphics.test.d.ts.map +1 -0
- package/dist/ui/utils/terminal-graphics.test.js +61 -0
- package/dist/ui/utils/terminal-graphics.test.js.map +1 -0
- package/dist/ui/utils/terminal-input.d.ts +3 -0
- package/dist/ui/utils/terminal-input.d.ts.map +1 -0
- package/dist/ui/utils/terminal-input.js +28 -0
- package/dist/ui/utils/terminal-input.js.map +1 -0
- package/dist/ui/utils/terminal-input.test.d.ts +2 -0
- package/dist/ui/utils/terminal-input.test.d.ts.map +1 -0
- package/dist/ui/utils/terminal-input.test.js +15 -0
- package/dist/ui/utils/terminal-input.test.js.map +1 -0
- package/dist/ui/utils/text-utils.d.ts +8 -0
- package/dist/ui/utils/text-utils.d.ts.map +1 -0
- package/dist/ui/utils/text-utils.js +16 -0
- package/dist/ui/utils/text-utils.js.map +1 -0
- package/dist/ui/utils/token-to-ansi.js +19 -9
- package/dist/ui/utils/token-to-ansi.js.map +1 -1
- package/dist/ui/utils/user-message-display.d.ts +7 -0
- package/dist/ui/utils/user-message-display.d.ts.map +1 -0
- package/dist/ui/utils/user-message-display.js +26 -0
- package/dist/ui/utils/user-message-display.js.map +1 -0
- package/dist/utils/format.js +7 -9
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/image.d.ts +9 -0
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +25 -0
- package/dist/utils/image.js.map +1 -1
- package/dist/utils/plan-steps.d.ts.map +1 -1
- package/dist/utils/plan-steps.js +5 -1
- package/dist/utils/plan-steps.js.map +1 -1
- package/dist/utils/plan-steps.test.d.ts +2 -0
- package/dist/utils/plan-steps.test.d.ts.map +1 -0
- package/dist/utils/plan-steps.test.js +16 -0
- package/dist/utils/plan-steps.test.js.map +1 -0
- package/package.json +50 -10
- package/dist/core/repomap-context.d.ts +0 -11
- package/dist/core/repomap-context.d.ts.map +0 -1
- package/dist/core/repomap-context.js +0 -68
- package/dist/core/repomap-context.js.map +0 -1
- package/dist/core/repomap-context.test.d.ts +0 -2
- package/dist/core/repomap-context.test.d.ts.map +0 -1
- package/dist/core/repomap-context.test.js +0 -47
- package/dist/core/repomap-context.test.js.map +0 -1
- package/dist/core/repomap.d.ts +0 -74
- package/dist/core/repomap.d.ts.map +0 -1
- package/dist/core/repomap.js +0 -906
- package/dist/core/repomap.js.map +0 -1
- package/dist/core/repomap.test.d.ts +0 -2
- package/dist/core/repomap.test.d.ts.map +0 -1
- package/dist/core/repomap.test.js +0 -494
- package/dist/core/repomap.test.js.map +0 -1
- package/dist/ui/components/EyesOverlay.d.ts +0 -10
- package/dist/ui/components/EyesOverlay.d.ts.map +0 -1
- package/dist/ui/components/EyesOverlay.js +0 -220
- package/dist/ui/components/EyesOverlay.js.map +0 -1
package/dist/ui/render.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { render } from "ink";
|
|
3
3
|
import { App } from "./App.js";
|
|
4
|
-
import {
|
|
4
|
+
import { createTerminalHistoryPrinter } from "./terminal-history.js";
|
|
5
5
|
import { ThemeContext, SetThemeContext, loadTheme } from "./theme/theme.js";
|
|
6
6
|
import { detectTheme } from "./theme/detect-theme.js";
|
|
7
7
|
import { AnimationProvider } from "./components/AnimationContext.js";
|
|
@@ -27,6 +27,34 @@ const INK_OPTIONS = {
|
|
|
27
27
|
// exitOnCtrlC is true. Disable it so our InputArea handles Ctrl+C.
|
|
28
28
|
exitOnCtrlC: false,
|
|
29
29
|
};
|
|
30
|
+
// Fullscreen alt-screen render tuning. Two settings work together to make
|
|
31
|
+
// scrolling smooth instead of jumpy/flickery:
|
|
32
|
+
//
|
|
33
|
+
// - incrementalRendering: Ink's default "standard" renderer erases ALL of the
|
|
34
|
+
// previous frame's lines (ansiEscapes.eraseLines) and rewrites the whole
|
|
35
|
+
// frame every tick. For a full-height fullscreen frame that means redrawing
|
|
36
|
+
// the footer/input/status rows — which never change during a scroll — on
|
|
37
|
+
// every step, and that erase-then-refill is the visible flicker. Ink's
|
|
38
|
+
// incremental renderer rewrites ONLY the lines that actually changed (the
|
|
39
|
+
// transcript region), leaving the controls untouched. No erase pass = no
|
|
40
|
+
// flicker. It also has explicit handling for the no-trailing-newline
|
|
41
|
+
// fullscreen frame, so it's the intended mode for this layout.
|
|
42
|
+
//
|
|
43
|
+
// NOTE: incremental rendering is fullscreen-ONLY. In the default scrollback
|
|
44
|
+
// path it desyncs against writeToStdout's log.clear()/scrollback flushes —
|
|
45
|
+
// the renderer's line cache no longer matches the terminal, so the input
|
|
46
|
+
// row gets re-emitted instead of diffed and the prompt duplicates down the
|
|
47
|
+
// screen. Keep it out of INK_OPTIONS.
|
|
48
|
+
//
|
|
49
|
+
// - maxFps: the default 30fps cap (~33ms/frame) makes the coalesced scroll
|
|
50
|
+
// updates feel stepped. A higher cap lets paints keep up for a smooth glide;
|
|
51
|
+
// combined with incremental rendering each paint is cheap (only the changed
|
|
52
|
+
// rows are written). Ink wraps each frame in synchronized output (BSU/ESU)
|
|
53
|
+
// on a TTY, so higher fps doesn't tear.
|
|
54
|
+
//
|
|
55
|
+
// The legacy scrollback path keeps the conservative defaults (it appends to
|
|
56
|
+
// native scrollback, so there's no repaint to optimize).
|
|
57
|
+
const FULLSCREEN_INK_OPTIONS = { ...INK_OPTIONS, maxFps: 120, incrementalRendering: true };
|
|
30
58
|
// XTMODKEYS "off" — turns off xterm's modifyOtherKeys=2 mode where Shift+Enter,
|
|
31
59
|
// Ctrl+letters, etc. arrive as ESC[27;<mod>;<keycode>~. Some terminals
|
|
32
60
|
// (Terminal.app, tmux passthrough, certain xterm configs) leave this enabled
|
|
@@ -40,12 +68,39 @@ const INK_OPTIONS = {
|
|
|
40
68
|
const DISABLE_MODIFY_OTHER_KEYS = "\x1b[>4;0m";
|
|
41
69
|
const DISABLE_FOCUS_REPORTING = "\x1b[?1004l";
|
|
42
70
|
const SCREEN_CLEAR = DISABLE_MODIFY_OTHER_KEYS + "\x1b[2J\x1b[3J\x1b[H";
|
|
71
|
+
const VIEWPORT_CLEAR = DISABLE_MODIFY_OTHER_KEYS + "\x1b[2J\x1b[H";
|
|
72
|
+
// Alternate screen buffer (smcup/rmcup). Entering gives a fresh blank screen
|
|
73
|
+
// with no native scrollback, so nothing can ever scroll Ink's live frame —
|
|
74
|
+
// this is what makes the footer a truly fixed bottom region. Leaving restores
|
|
75
|
+
// the user's original shell screen + scrollback intact.
|
|
76
|
+
const ALT_SCREEN_ENTER = "\x1b[?1049h";
|
|
77
|
+
const ALT_SCREEN_LEAVE = "\x1b[?1049l";
|
|
78
|
+
/**
|
|
79
|
+
* Fullscreen alternate-screen viewport mode. Default OFF: native terminal
|
|
80
|
+
* scrollback is the default (smooth, GPU-accelerated, real mouse-wheel scroll).
|
|
81
|
+
* Set `GG_FULLSCREEN=1` to opt into the alternate-screen in-Ink viewport
|
|
82
|
+
* (pinned footer, but no native scrollback). Non-TTY / CI / print modes never
|
|
83
|
+
* use it.
|
|
84
|
+
*/
|
|
85
|
+
export function isFullscreenViewportEnabled() {
|
|
86
|
+
if (process.env.GG_FULLSCREEN === "1") {
|
|
87
|
+
return Boolean(process.stdout.isTTY && process.stdin.isTTY);
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
export function getResetClearMode(options) {
|
|
92
|
+
return options?.wipeSession || options?.history || options?.resizeRedraw ? "screen" : "viewport";
|
|
93
|
+
}
|
|
43
94
|
export async function renderApp(config) {
|
|
44
95
|
const themeSetting = config.theme ?? "auto";
|
|
45
96
|
const resolvedTheme = themeSetting === "auto" ? await detectTheme() : themeSetting;
|
|
97
|
+
const fullscreen = isFullscreenViewportEnabled();
|
|
46
98
|
// Clear screen + scrollback so old commands don't appear above the TUI.
|
|
47
|
-
// Also disables modifyOtherKeys (see DISABLE_MODIFY_OTHER_KEYS).
|
|
48
|
-
|
|
99
|
+
// Also disables modifyOtherKeys (see DISABLE_MODIFY_OTHER_KEYS). In fullscreen
|
|
100
|
+
// mode we first switch to the alternate screen buffer so the entire viewport
|
|
101
|
+
// (bounded transcript + pinned controls) is owned by Ink and nothing written
|
|
102
|
+
// around it can scroll the frame.
|
|
103
|
+
process.stdout.write((fullscreen ? ALT_SCREEN_ENTER : "") + SCREEN_CLEAR);
|
|
49
104
|
// Belt-and-suspenders cleanup: tmux can re-enable modifyOtherKeys when it
|
|
50
105
|
// forwards keyboard mode changes, and Ink's unmount path doesn't touch this
|
|
51
106
|
// mode (it manages kitty + alternate-screen but not XTMODKEYS). Re-disable
|
|
@@ -53,7 +108,9 @@ export async function renderApp(config) {
|
|
|
53
108
|
// that confuse the parent shell.
|
|
54
109
|
const onProcessExit = () => {
|
|
55
110
|
try {
|
|
56
|
-
|
|
111
|
+
// Leave the alternate screen LAST so the user's original shell scrollback
|
|
112
|
+
// returns intact, with no leftover artifacts from the fullscreen viewport.
|
|
113
|
+
process.stdout.write(DISABLE_MODIFY_OTHER_KEYS + DISABLE_FOCUS_REPORTING + (fullscreen ? ALT_SCREEN_LEAVE : ""));
|
|
57
114
|
}
|
|
58
115
|
catch {
|
|
59
116
|
// stdout may already be torn down; nothing useful to do here.
|
|
@@ -81,16 +138,20 @@ export async function renderApp(config) {
|
|
|
81
138
|
approvedPlanPath: undefined,
|
|
82
139
|
planSteps: [],
|
|
83
140
|
sessionPath: config.sessionPath,
|
|
141
|
+
sessionId: config.sessionId,
|
|
84
142
|
sessionTitle: undefined,
|
|
85
143
|
sessionTitleGenerated: false,
|
|
86
144
|
overlay: config.initialOverlay ?? null,
|
|
87
145
|
planAutoExpand: false,
|
|
88
146
|
pendingAction: undefined,
|
|
89
|
-
|
|
90
|
-
|
|
147
|
+
planMode: config.planModeRef?.current ?? false,
|
|
148
|
+
goalMode: config.goalModeRef?.current ?? "off",
|
|
149
|
+
idealReviewEnabled: config.idealReviewEnabled ?? true,
|
|
91
150
|
};
|
|
151
|
+
const terminalHistoryPrinter = createTerminalHistoryPrinter();
|
|
152
|
+
const inkOptions = fullscreen ? FULLSCREEN_INK_OPTIONS : INK_OPTIONS;
|
|
92
153
|
const ref = { instance: null };
|
|
93
|
-
const buildElement = () => React.createElement(ThemeProvider, { initial: resolvedTheme }, React.createElement(TerminalSizeProvider, { isAgentRunning: () => !!sessionStore.isAgentRunning }, React.createElement(AnimationProvider, null, React.createElement(App, {
|
|
154
|
+
const buildElement = () => React.createElement(ThemeProvider, { initial: resolvedTheme }, React.createElement(TerminalSizeProvider, { isAgentRunning: () => !!sessionStore.isAgentRunning, fullscreen }, React.createElement(AnimationProvider, null, React.createElement(App, {
|
|
94
155
|
provider: runtimeState.provider,
|
|
95
156
|
model: runtimeState.model,
|
|
96
157
|
tools: config.tools,
|
|
@@ -105,36 +166,35 @@ export async function renderApp(config) {
|
|
|
105
166
|
cwd: config.cwd,
|
|
106
167
|
version: config.version,
|
|
107
168
|
showTokenUsage: config.showTokenUsage,
|
|
169
|
+
idealReviewEnabled: sessionStore.idealReviewEnabled,
|
|
108
170
|
onSlashCommand: config.onSlashCommand,
|
|
109
171
|
loggedInProviders: config.loggedInProviders,
|
|
110
172
|
credentialsByProvider: config.credentialsByProvider,
|
|
111
173
|
initialHistory: sessionStore.history,
|
|
112
174
|
sessionsDir: config.sessionsDir,
|
|
113
175
|
sessionPath: sessionStore.sessionPath,
|
|
176
|
+
sessionId: sessionStore.sessionId,
|
|
114
177
|
processManager: config.processManager,
|
|
115
178
|
settingsFile: config.settingsFile,
|
|
116
179
|
mcpManager: config.mcpManager,
|
|
117
180
|
authStorage: config.authStorage,
|
|
118
181
|
planModeRef: config.planModeRef,
|
|
119
|
-
|
|
120
|
-
onExitPlanRef: config.onExitPlanRef,
|
|
182
|
+
goalModeRef: config.goalModeRef,
|
|
121
183
|
skills: config.skills,
|
|
184
|
+
checkpointStore: config.checkpointStore,
|
|
122
185
|
initialOverlay: config.initialOverlay,
|
|
123
186
|
rebuildToolsForCwd: config.rebuildToolsForCwd,
|
|
124
|
-
|
|
125
|
-
|
|
187
|
+
connectInitialMcpTools: config.connectInitialMcpTools,
|
|
188
|
+
planCallbacks: config.planCallbacks,
|
|
189
|
+
terminalHistoryPrinter,
|
|
190
|
+
fullscreen,
|
|
126
191
|
resetUI,
|
|
127
192
|
onRuntimeStateChange,
|
|
128
193
|
sessionStore,
|
|
129
194
|
}))));
|
|
130
|
-
// Nuke-and-rebuild
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
// drifts on subsequent streaming responses — Ink's cursor math depends on
|
|
134
|
-
// terminal-state assumptions that ANSI clearing breaks. The only RELIABLE
|
|
135
|
-
// reset is to tear down the React tree entirely, clear after Ink has flushed
|
|
136
|
-
// its teardown frame, and then render a fresh Ink instance. gg-boss arrived
|
|
137
|
-
// at the same conclusion (orchestrator-app.tsx).
|
|
195
|
+
// Nuke-and-rebuild paths tear down the React tree and render a fresh Ink
|
|
196
|
+
// instance. Non-wipe remounts clear only the live viewport while preserving
|
|
197
|
+
// real terminal scrollback; fresh sessions clear screen + scrollback intentionally.
|
|
138
198
|
function resetUI(options) {
|
|
139
199
|
const old = ref.instance;
|
|
140
200
|
if (!old)
|
|
@@ -143,6 +203,7 @@ export async function renderApp(config) {
|
|
|
143
203
|
// Wipe everything session-scoped FIRST. Other options below can then
|
|
144
204
|
// re-seed specific fields (e.g. plan accept wipes the chat then sets
|
|
145
205
|
// approvedPlanPath + planSteps for the implementation phase).
|
|
206
|
+
terminalHistoryPrinter.clear();
|
|
146
207
|
sessionStore.history = [{ kind: "banner", id: "banner" }];
|
|
147
208
|
sessionStore.liveItems = [];
|
|
148
209
|
sessionStore.doneStatus = null;
|
|
@@ -150,12 +211,13 @@ export async function renderApp(config) {
|
|
|
150
211
|
sessionStore.planSteps = [];
|
|
151
212
|
sessionStore.sessionTitle = undefined;
|
|
152
213
|
sessionStore.sessionTitleGenerated = false;
|
|
153
|
-
sessionStore.goalStatusEntries = [];
|
|
154
214
|
}
|
|
155
215
|
if (options?.messages)
|
|
156
216
|
sessionStore.messages = options.messages;
|
|
157
|
-
if (options?.history)
|
|
217
|
+
if (options?.history) {
|
|
218
|
+
terminalHistoryPrinter.clear();
|
|
158
219
|
sessionStore.history = options.history;
|
|
220
|
+
}
|
|
159
221
|
if (options?.approvedPlanPath !== undefined) {
|
|
160
222
|
sessionStore.approvedPlanPath = options.approvedPlanPath;
|
|
161
223
|
}
|
|
@@ -163,41 +225,67 @@ export async function renderApp(config) {
|
|
|
163
225
|
sessionStore.planSteps = options.planSteps;
|
|
164
226
|
if (options?.sessionPath !== undefined)
|
|
165
227
|
sessionStore.sessionPath = options.sessionPath;
|
|
228
|
+
if (options?.sessionPath !== undefined && !sessionStore.sessionId) {
|
|
229
|
+
sessionStore.sessionId = config.sessionId;
|
|
230
|
+
}
|
|
166
231
|
if (options?.pendingAction)
|
|
167
232
|
sessionStore.pendingAction = options.pendingAction;
|
|
168
233
|
old.unmount();
|
|
169
|
-
|
|
170
|
-
|
|
234
|
+
if (options?.resizeRedraw) {
|
|
235
|
+
terminalHistoryPrinter.resetPrinted();
|
|
236
|
+
}
|
|
237
|
+
// Fullscreen alt-screen mode owns the entire screen and renders the
|
|
238
|
+
// transcript inside Ink, so there is no native scrollback to preserve or
|
|
239
|
+
// repaint — "clear" is just a screen wipe + cursor home before re-render.
|
|
240
|
+
if (fullscreen) {
|
|
241
|
+
process.stdout.write(VIEWPORT_CLEAR);
|
|
242
|
+
ref.instance = render(buildElement(), inkOptions);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
// Resize can leave log-update frames at the old width in the visible viewport.
|
|
246
|
+
// Repaint the durable transcript after a full clear so messages don't appear
|
|
247
|
+
// to vanish on maximize and old input/status frames don't stack as duplicates.
|
|
248
|
+
// Other non-wipe remounts keep scrollback and only clear the live viewport.
|
|
249
|
+
process.stdout.write(getResetClearMode(options) === "screen" ? SCREEN_CLEAR : VIEWPORT_CLEAR);
|
|
250
|
+
if (options?.resizeRedraw && sessionStore.history.length > 0) {
|
|
251
|
+
terminalHistoryPrinter.print(sessionStore.history, {
|
|
252
|
+
theme: loadTheme(resolvedTheme),
|
|
253
|
+
columns: Math.max(40, process.stdout.columns ?? 80),
|
|
254
|
+
version: config.version,
|
|
255
|
+
model: runtimeState.model,
|
|
256
|
+
provider: runtimeState.provider,
|
|
257
|
+
cwd: config.cwd,
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
ref.instance = render(buildElement(), inkOptions);
|
|
171
261
|
}
|
|
172
|
-
ref.instance = render(buildElement(),
|
|
173
|
-
// Terminal resize → full unmount/remount.
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
//
|
|
177
|
-
//
|
|
178
|
-
// of the viewport with new chat lines disappearing off-screen. Same
|
|
179
|
-
// symptom /clear hit; same fix — tear down the React tree and start
|
|
180
|
-
// fresh. Debounced 250ms (shorter than the hook's 300ms) so resetUI wins
|
|
181
|
-
// the race; the hook's pending timer is cancelled by its own useEffect
|
|
182
|
-
// cleanup when the old instance unmounts.
|
|
262
|
+
ref.instance = render(buildElement(), inkOptions);
|
|
263
|
+
// Terminal resize → full unmount/remount. Completed transcript rows are real
|
|
264
|
+
// terminal output now, so resetUI() only rebuilds the live Ink controls unless
|
|
265
|
+
// a fresh-session path asked to wipe scrollback. Debounced 250ms (shorter than
|
|
266
|
+
// the hook's 300ms) so resetUI wins the race; the hook's pending timer is
|
|
267
|
+
// cancelled by its own useEffect cleanup when the old instance unmounts.
|
|
183
268
|
let resizeTimer = null;
|
|
184
269
|
const onTerminalResize = () => {
|
|
270
|
+
// Fullscreen alt-screen mode owns a full-height frame that Ink repaints in
|
|
271
|
+
// place on dimension changes (handled inside TerminalSizeProvider). No
|
|
272
|
+
// unmount/remount is needed — and doing one would flash the whole screen.
|
|
273
|
+
if (fullscreen)
|
|
274
|
+
return;
|
|
185
275
|
if (resizeTimer)
|
|
186
276
|
clearTimeout(resizeTimer);
|
|
187
277
|
resizeTimer = setTimeout(() => {
|
|
188
278
|
resizeTimer = null;
|
|
189
279
|
// While the agent is running, the full unmount/remount would fire
|
|
190
280
|
// useAgentLoop's cleanup and abort the in-flight request — so the
|
|
191
|
-
// agent dies on maximize. Skip the unmount in that case
|
|
192
|
-
// useTerminalSize already clears the screen and bumps resizeKey so
|
|
193
|
-
// <Static> remounts and re-prints the full history. Flag
|
|
281
|
+
// agent dies on maximize. Skip the unmount in that case. Flag
|
|
194
282
|
// pendingResetUI so App.tsx fires a deferred resetUI the moment the
|
|
195
|
-
// agent goes idle, fixing any
|
|
283
|
+
// agent goes idle, fixing any live-area drift that accumulated.
|
|
196
284
|
if (sessionStore.isAgentRunning) {
|
|
197
285
|
sessionStore.pendingResetUI = true;
|
|
198
286
|
return;
|
|
199
287
|
}
|
|
200
|
-
resetUI();
|
|
288
|
+
resetUI({ resizeRedraw: true });
|
|
201
289
|
}, 250);
|
|
202
290
|
};
|
|
203
291
|
process.stdout.on("resize", onTerminalResize);
|
|
@@ -222,12 +310,11 @@ export async function renderApp(config) {
|
|
|
222
310
|
if (resizeTimer)
|
|
223
311
|
clearTimeout(resizeTimer);
|
|
224
312
|
process.off("exit", onProcessExit);
|
|
225
|
-
shutdownGoalWorkers(config.cwd);
|
|
226
313
|
// Final cleanup on normal exit — also covered by the "exit" handler,
|
|
227
314
|
// but writing here ensures the disable lands before Node tears stdout
|
|
228
315
|
// down on process termination.
|
|
229
316
|
try {
|
|
230
|
-
process.stdout.write(DISABLE_MODIFY_OTHER_KEYS + DISABLE_FOCUS_REPORTING);
|
|
317
|
+
process.stdout.write(DISABLE_MODIFY_OTHER_KEYS + DISABLE_FOCUS_REPORTING + (fullscreen ? ALT_SCREEN_LEAVE : ""));
|
|
231
318
|
}
|
|
232
319
|
catch {
|
|
233
320
|
// ignored
|
package/dist/ui/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/ui/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAgC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/ui/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.test.d.ts","sourceRoot":"","sources":["../../src/ui/render.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { getResetClearMode } from "./render.js";
|
|
3
|
+
describe("getResetClearMode", () => {
|
|
4
|
+
it("uses a full screen redraw for terminal resize remounts", () => {
|
|
5
|
+
expect(getResetClearMode({ resizeRedraw: true })).toBe("screen");
|
|
6
|
+
});
|
|
7
|
+
it("keeps ordinary overlay remounts to a viewport clear", () => {
|
|
8
|
+
expect(getResetClearMode(undefined)).toBe("viewport");
|
|
9
|
+
expect(getResetClearMode({})).toBe("viewport");
|
|
10
|
+
});
|
|
11
|
+
it("uses a full screen redraw for explicit session/history replacement", () => {
|
|
12
|
+
expect(getResetClearMode({ wipeSession: true })).toBe("screen");
|
|
13
|
+
expect(getResetClearMode({ history: [{ kind: "banner", id: "banner" }] })).toBe("screen");
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=render.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.test.js","sourceRoot":"","sources":["../../src/ui/render.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { getScrollStabilizationDecision, getStaticHistoryKey, isTallLiveUserMessage,
|
|
2
|
+
import { getScrollStabilizationDecision, getStaticHistoryKey, isTallLiveUserMessage, } from "./layout-decisions.js";
|
|
3
3
|
describe("getScrollStabilizationDecision", () => {
|
|
4
4
|
it("preserves Static and disables auto-follow when the user is intentionally scrolled and output arrives", () => {
|
|
5
5
|
expect(getScrollStabilizationDecision({
|
|
@@ -60,11 +60,5 @@ describe("getScrollStabilizationDecision", () => {
|
|
|
60
60
|
hasNewOutput: false,
|
|
61
61
|
})).toEqual({ preserveStatic: false, autoFollow: false });
|
|
62
62
|
});
|
|
63
|
-
it("identifies long polling overlay panes that need rerender stabilization while an agent runs", () => {
|
|
64
|
-
expect(shouldStabilizeOverlayPaneRerender({ overlayPane: "goal", isAgentRunning: true })).toBe(true);
|
|
65
|
-
expect(shouldStabilizeOverlayPaneRerender({ overlayPane: "plan", isAgentRunning: true })).toBe(true);
|
|
66
|
-
expect(shouldStabilizeOverlayPaneRerender({ overlayPane: "skills", isAgentRunning: true })).toBe(false);
|
|
67
|
-
expect(shouldStabilizeOverlayPaneRerender({ overlayPane: "goal", isAgentRunning: false })).toBe(false);
|
|
68
|
-
});
|
|
69
63
|
});
|
|
70
64
|
//# sourceMappingURL=scroll-stabilization.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-stabilization.test.js","sourceRoot":"","sources":["../../src/ui/scroll-stabilization.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"scroll-stabilization.test.js","sourceRoot":"","sources":["../../src/ui/scroll-stabilization.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Provider, Usage } from "@prestyj/ai";
|
|
2
|
+
export interface ToolSessionStats {
|
|
3
|
+
totalCalls: number;
|
|
4
|
+
totalSuccess: number;
|
|
5
|
+
totalFail: number;
|
|
6
|
+
totalDurationMs: number;
|
|
7
|
+
byName: Record<string, {
|
|
8
|
+
calls: number;
|
|
9
|
+
success: number;
|
|
10
|
+
fail: number;
|
|
11
|
+
durationMs: number;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
export interface SessionStats {
|
|
15
|
+
sessionId?: string;
|
|
16
|
+
startedAt: number;
|
|
17
|
+
turns: number;
|
|
18
|
+
totalUsage: Usage;
|
|
19
|
+
tools: ToolSessionStats;
|
|
20
|
+
serverToolCalls: number;
|
|
21
|
+
linesChanged: {
|
|
22
|
+
added: number;
|
|
23
|
+
removed: number;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface SessionSummary {
|
|
27
|
+
title: string;
|
|
28
|
+
sessionId?: string;
|
|
29
|
+
provider: Provider;
|
|
30
|
+
model: string;
|
|
31
|
+
cwd: string;
|
|
32
|
+
wallDurationMs: number;
|
|
33
|
+
turns: number;
|
|
34
|
+
usage: Usage;
|
|
35
|
+
tools: ToolSessionStats;
|
|
36
|
+
serverToolCalls: number;
|
|
37
|
+
linesChanged: {
|
|
38
|
+
added: number;
|
|
39
|
+
removed: number;
|
|
40
|
+
};
|
|
41
|
+
footer?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function createSessionStats(options?: {
|
|
44
|
+
sessionId?: string;
|
|
45
|
+
now?: () => number;
|
|
46
|
+
}): SessionStats;
|
|
47
|
+
export declare function recordTurnEnd(stats: SessionStats, usage: Usage): void;
|
|
48
|
+
export declare function recordToolEnd(stats: SessionStats, toolName: string, isError: boolean, durationMs: number): void;
|
|
49
|
+
export declare function recordServerToolCall(stats: SessionStats): void;
|
|
50
|
+
export declare function addLinesChanged(stats: SessionStats, delta: {
|
|
51
|
+
added: number;
|
|
52
|
+
removed: number;
|
|
53
|
+
}): void;
|
|
54
|
+
export declare function buildSessionSummary(options: {
|
|
55
|
+
stats: SessionStats;
|
|
56
|
+
provider: Provider;
|
|
57
|
+
model: string;
|
|
58
|
+
cwd: string;
|
|
59
|
+
now?: () => number;
|
|
60
|
+
footer?: string;
|
|
61
|
+
}): SessionSummary;
|
|
62
|
+
export declare function getToolSuccessRate(tools: ToolSessionStats): number | null;
|
|
63
|
+
//# sourceMappingURL=session-summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-summary.d.ts","sourceRoot":"","sources":["../../src/ui/session-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9F;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;IAClB,KAAK,EAAE,gBAAgB,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,gBAAgB,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GACvD,YAAY,CAgBd;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAkBrE;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,IAAI,CAaN;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAE9D;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC,IAAI,CAGN;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,cAAc,CAmBjB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAGzE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
export function createSessionStats(options = {}) {
|
|
2
|
+
return {
|
|
3
|
+
sessionId: options.sessionId,
|
|
4
|
+
startedAt: options.now?.() ?? Date.now(),
|
|
5
|
+
turns: 0,
|
|
6
|
+
totalUsage: { inputTokens: 0, outputTokens: 0 },
|
|
7
|
+
tools: {
|
|
8
|
+
totalCalls: 0,
|
|
9
|
+
totalSuccess: 0,
|
|
10
|
+
totalFail: 0,
|
|
11
|
+
totalDurationMs: 0,
|
|
12
|
+
byName: {},
|
|
13
|
+
},
|
|
14
|
+
serverToolCalls: 0,
|
|
15
|
+
linesChanged: { added: 0, removed: 0 },
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function recordTurnEnd(stats, usage) {
|
|
19
|
+
stats.turns += 1;
|
|
20
|
+
stats.totalUsage.inputTokens += usage.inputTokens;
|
|
21
|
+
stats.totalUsage.outputTokens += usage.outputTokens;
|
|
22
|
+
stats.totalUsage.cacheRead = (stats.totalUsage.cacheRead ?? 0) + (usage.cacheRead ?? 0);
|
|
23
|
+
stats.totalUsage.cacheWrite = (stats.totalUsage.cacheWrite ?? 0) + (usage.cacheWrite ?? 0);
|
|
24
|
+
const existingServerToolUse = stats.totalUsage.serverToolUse;
|
|
25
|
+
if (usage.serverToolUse || existingServerToolUse) {
|
|
26
|
+
stats.totalUsage.serverToolUse = {
|
|
27
|
+
webSearchRequests: (existingServerToolUse?.webSearchRequests ?? 0) +
|
|
28
|
+
(usage.serverToolUse?.webSearchRequests ?? 0),
|
|
29
|
+
webFetchRequests: (existingServerToolUse?.webFetchRequests ?? 0) +
|
|
30
|
+
(usage.serverToolUse?.webFetchRequests ?? 0),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function recordToolEnd(stats, toolName, isError, durationMs) {
|
|
35
|
+
stats.tools.totalCalls += 1;
|
|
36
|
+
stats.tools.totalDurationMs += durationMs;
|
|
37
|
+
if (isError)
|
|
38
|
+
stats.tools.totalFail += 1;
|
|
39
|
+
else
|
|
40
|
+
stats.tools.totalSuccess += 1;
|
|
41
|
+
const current = stats.tools.byName[toolName] ?? { calls: 0, success: 0, fail: 0, durationMs: 0 };
|
|
42
|
+
stats.tools.byName[toolName] = {
|
|
43
|
+
calls: current.calls + 1,
|
|
44
|
+
success: current.success + (isError ? 0 : 1),
|
|
45
|
+
fail: current.fail + (isError ? 1 : 0),
|
|
46
|
+
durationMs: current.durationMs + durationMs,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export function recordServerToolCall(stats) {
|
|
50
|
+
stats.serverToolCalls += 1;
|
|
51
|
+
}
|
|
52
|
+
export function addLinesChanged(stats, delta) {
|
|
53
|
+
stats.linesChanged.added += delta.added;
|
|
54
|
+
stats.linesChanged.removed += delta.removed;
|
|
55
|
+
}
|
|
56
|
+
export function buildSessionSummary(options) {
|
|
57
|
+
const now = options.now?.() ?? Date.now();
|
|
58
|
+
return {
|
|
59
|
+
title: "EZ Coder is powering down. Goodbye!",
|
|
60
|
+
sessionId: options.stats.sessionId,
|
|
61
|
+
provider: options.provider,
|
|
62
|
+
model: options.model,
|
|
63
|
+
cwd: options.cwd,
|
|
64
|
+
wallDurationMs: Math.max(0, now - options.stats.startedAt),
|
|
65
|
+
turns: options.stats.turns,
|
|
66
|
+
usage: { ...options.stats.totalUsage },
|
|
67
|
+
tools: {
|
|
68
|
+
...options.stats.tools,
|
|
69
|
+
byName: { ...options.stats.tools.byName },
|
|
70
|
+
},
|
|
71
|
+
serverToolCalls: options.stats.serverToolCalls,
|
|
72
|
+
linesChanged: { ...options.stats.linesChanged },
|
|
73
|
+
footer: options.footer,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export function getToolSuccessRate(tools) {
|
|
77
|
+
if (tools.totalCalls === 0)
|
|
78
|
+
return null;
|
|
79
|
+
return (tools.totalSuccess / tools.totalCalls) * 100;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=session-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-summary.js","sourceRoot":"","sources":["../../src/ui/session-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { buildUserContentWithAttachments, routePromptCommandInput } from "./
|
|
2
|
+
import { buildUserContentWithAttachments, routePromptCommandInput } from "./prompt-routing.js";
|
|
3
3
|
describe("prompt-template slash commands with attachments", () => {
|
|
4
|
-
it("routes /
|
|
5
|
-
const route = routePromptCommandInput("/
|
|
4
|
+
it("routes /expand input to a wrapper containing user args", () => {
|
|
5
|
+
const route = routePromptCommandInput("/expand do X");
|
|
6
6
|
expect(route).not.toBeNull();
|
|
7
|
-
expect(route?.cmdName).toBe("
|
|
7
|
+
expect(route?.cmdName).toBe("expand");
|
|
8
8
|
expect(route?.cmdArgs).toBe("do X");
|
|
9
9
|
expect(route?.fullPrompt).toContain(route?.promptText);
|
|
10
10
|
expect(route?.fullPrompt).toContain("## User Instructions");
|
|
11
11
|
expect(route?.fullPrompt).toContain("do X");
|
|
12
|
-
expect(route?.fullPrompt).toContain("concrete success criteria that can be verified");
|
|
13
|
-
expect(route?.fullPrompt).toContain("Completion means verifier evidence satisfies the original success criteria");
|
|
14
12
|
});
|
|
15
|
-
it("routes
|
|
13
|
+
it("routes markdown and multiline text without losing rendered edge cases", () => {
|
|
16
14
|
const args = "prove **bold** UI renders\n- keep `code` text\n- wrap very long labels";
|
|
17
|
-
const route = routePromptCommandInput(`/
|
|
18
|
-
expect(route).toMatchObject({ cmdName: "
|
|
15
|
+
const route = routePromptCommandInput(`/expand ${args}`);
|
|
16
|
+
expect(route).toMatchObject({ cmdName: "expand", cmdArgs: args });
|
|
19
17
|
expect(route?.fullPrompt).toContain(`## User Instructions\n\n${args}`);
|
|
20
18
|
expect(route?.fullPrompt).toContain("**bold** UI renders");
|
|
21
19
|
expect(route?.fullPrompt).toContain("`code` text");
|
|
22
20
|
});
|
|
21
|
+
it("does not route an unknown command", () => {
|
|
22
|
+
expect(routePromptCommandInput("/not-a-command do X")).toBeNull();
|
|
23
|
+
});
|
|
23
24
|
it("builds multimodal user content with the full prompt text and image block", () => {
|
|
24
|
-
const fullPrompt = "
|
|
25
|
+
const fullPrompt = "Command prompt\n\n## User Instructions\n\ndo X";
|
|
25
26
|
const imageAttachment = {
|
|
26
27
|
kind: "image",
|
|
27
28
|
fileName: "screenshot.png",
|
|
@@ -50,7 +51,7 @@ describe("prompt-template slash commands with attachments", () => {
|
|
|
50
51
|
]);
|
|
51
52
|
});
|
|
52
53
|
it("returns the original prompt string when no attachments are provided", () => {
|
|
53
|
-
const fullPrompt = "
|
|
54
|
+
const fullPrompt = "Command prompt\n\n## User Instructions\n\ndo X";
|
|
54
55
|
expect(buildUserContentWithAttachments(fullPrompt, [], true)).toBe(fullPrompt);
|
|
55
56
|
});
|
|
56
57
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slash-command-images.test.js","sourceRoot":"","sources":["../../src/ui/slash-command-images.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,+BAA+B,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"slash-command-images.test.js","sourceRoot":"","sources":["../../src/ui/slash-command-images.test.ts"],"names":[],"mappings":"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"}
|