@prestyj/cli 4.3.210 → 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 -732
- 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 -3
- package/dist/tools/enter-plan.d.ts.map +1 -1
- package/dist/tools/enter-plan.js +9 -21
- 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 +15 -12
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +12 -8
- 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 -243
- 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 +31 -9
- 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 -280
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +1608 -2235
- 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 -42
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +128 -42
- 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
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import {} from "ink";
|
|
3
|
+
import { doesFooterFitOnOneLine } from "../components/Footer.js";
|
|
4
|
+
import { getFooterStatusLayoutDecision, } from "../components/BackgroundTasksBar.js";
|
|
5
|
+
import { getChatControlsLayoutDecision, MIN_LIVE_AREA_ROWS, } from "../layout-decisions.js";
|
|
6
|
+
export function useChatLayoutMeasurements({ rows, columns, backgroundTaskCount, updatePending, agentRunning, activityPhase, stallError, doneStatus, currentModel, contextUsed, contextWindowOptions, displayedCwd, gitBranch, thinkingLevel, exitPending, taskBarExpanded, liveToolFeedCount, }) {
|
|
7
|
+
const footerStatusLayout = getFooterStatusLayoutDecision({
|
|
8
|
+
columns,
|
|
9
|
+
backgroundTaskCount,
|
|
10
|
+
updatePending,
|
|
11
|
+
});
|
|
12
|
+
const activityVisible = agentRunning && activityPhase !== "idle";
|
|
13
|
+
// The pinned LiveToolPanel renders for the whole active turn: as soon as the
|
|
14
|
+
// feed has a tool it stays visible — including while the agent streams
|
|
15
|
+
// intermediate replies between tool calls — and only disappears when the run
|
|
16
|
+
// ends (activity goes idle). Keep this predicate identical to ChatInputStack's
|
|
17
|
+
// render gate so the budget and the rendered rows never differ.
|
|
18
|
+
const liveToolPanelVisible = activityVisible;
|
|
19
|
+
const liveToolPanelRows = liveToolPanelVisible && liveToolFeedCount > 0 ? Math.min(liveToolFeedCount, 3) : 0;
|
|
20
|
+
const stallStatusVisible = !activityVisible && !!stallError;
|
|
21
|
+
const doneStatusVisible = !activityVisible && !stallStatusVisible && !!doneStatus && !agentRunning;
|
|
22
|
+
const statusSlotVisible = activityVisible || stallStatusVisible || doneStatusVisible;
|
|
23
|
+
const [controlsHeight, setControlsHeight] = useState(0);
|
|
24
|
+
const controlsObserverRef = useRef(null);
|
|
25
|
+
const mainControlsRef = useCallback((node) => {
|
|
26
|
+
if (controlsObserverRef.current) {
|
|
27
|
+
controlsObserverRef.current.disconnect();
|
|
28
|
+
controlsObserverRef.current = null;
|
|
29
|
+
}
|
|
30
|
+
if (!node || typeof ResizeObserver === "undefined")
|
|
31
|
+
return;
|
|
32
|
+
const observer = new ResizeObserver((entries) => {
|
|
33
|
+
const entry = entries[0];
|
|
34
|
+
if (!entry)
|
|
35
|
+
return;
|
|
36
|
+
const roundedHeight = Math.round(entry.contentRect.height);
|
|
37
|
+
setControlsHeight((prev) => (roundedHeight !== prev ? roundedHeight : prev));
|
|
38
|
+
});
|
|
39
|
+
observer.observe(node);
|
|
40
|
+
controlsObserverRef.current = observer;
|
|
41
|
+
}, []);
|
|
42
|
+
useEffect(() => () => controlsObserverRef.current?.disconnect(), []);
|
|
43
|
+
const footerFitsOnOneLine = doesFooterFitOnOneLine({
|
|
44
|
+
columns,
|
|
45
|
+
model: currentModel,
|
|
46
|
+
tokensIn: contextUsed,
|
|
47
|
+
contextWindowOptions,
|
|
48
|
+
cwd: displayedCwd,
|
|
49
|
+
gitBranch,
|
|
50
|
+
thinkingLevel,
|
|
51
|
+
});
|
|
52
|
+
const chatControlsLayout = getChatControlsLayoutDecision({
|
|
53
|
+
rows,
|
|
54
|
+
columns,
|
|
55
|
+
agentRunning,
|
|
56
|
+
activityVisible,
|
|
57
|
+
doneStatusVisible,
|
|
58
|
+
stallStatusVisible,
|
|
59
|
+
exitPending,
|
|
60
|
+
footerStatusLayout,
|
|
61
|
+
taskBarExpanded,
|
|
62
|
+
footerFitsOnOneLine,
|
|
63
|
+
liveToolPanelRows,
|
|
64
|
+
});
|
|
65
|
+
// Mirror Gemini's stableControlsHeight: while a turn is active, never let the
|
|
66
|
+
// measured controls height shrink (transient ResizeObserver dips would grow the
|
|
67
|
+
// live budget for one frame and bounce the footer). Reset to the live value at
|
|
68
|
+
// idle so legitimate shrink (e.g. background task finished) is picked up.
|
|
69
|
+
const prevControlsHeightRef = useRef(0);
|
|
70
|
+
const measuredControlsRows = controlsHeight > 0 ? controlsHeight : chatControlsLayout.controlsRows;
|
|
71
|
+
// While running, take the max of: the carried-forward height, the measured
|
|
72
|
+
// height, and the freshly computed formula (which now includes the live tool
|
|
73
|
+
// panel rows). The formula updates synchronously with the tool feed, so it
|
|
74
|
+
// acts as a proactive floor that shrinks the live area in the SAME render the
|
|
75
|
+
// panel grows — beating the one-frame ResizeObserver lag that otherwise lets
|
|
76
|
+
// the frame overflow the terminal and bounce the footer on each tool step.
|
|
77
|
+
const stableControlsRows = agentRunning
|
|
78
|
+
? Math.max(prevControlsHeightRef.current, measuredControlsRows, chatControlsLayout.controlsRows)
|
|
79
|
+
: measuredControlsRows;
|
|
80
|
+
prevControlsHeightRef.current = stableControlsRows;
|
|
81
|
+
// Subtract a 2-row cushion (not 1) so the total live frame stays <= rows - 1
|
|
82
|
+
// even with rounding from the ResizeObserver-measured controlsHeight, keeping
|
|
83
|
+
// Ink out of its fullscreen clearTerminal path that snaps the controls upward.
|
|
84
|
+
const measuredLiveAreaRows = Math.max(MIN_LIVE_AREA_ROWS, rows - stableControlsRows - 2);
|
|
85
|
+
const viewportRows = Math.max(MIN_LIVE_AREA_ROWS, rows - stableControlsRows);
|
|
86
|
+
return {
|
|
87
|
+
footerStatusLayout,
|
|
88
|
+
activityVisible,
|
|
89
|
+
stallStatusVisible,
|
|
90
|
+
doneStatusVisible,
|
|
91
|
+
statusSlotVisible,
|
|
92
|
+
mainControlsRef,
|
|
93
|
+
measuredLiveAreaRows,
|
|
94
|
+
viewportRows,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=useChatLayoutMeasurements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatLayoutMeasurements.js","sourceRoot":"","sources":["../../../src/ui/hooks/useChatLayoutMeasurements.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type Dispatch, type MutableRefObject, type SetStateAction } from "react";
|
|
2
|
+
import type { Message, Provider } from "@prestyj/ai";
|
|
3
|
+
import { type ContextWindowOptions } from "../../core/model-registry.js";
|
|
4
|
+
import type { AuthStorage } from "../../core/auth-storage.js";
|
|
5
|
+
import type { SettingsManager } from "../../core/settings-manager.js";
|
|
6
|
+
import type { CompletedItem } from "../app-items.js";
|
|
7
|
+
interface UseContextCompactionOptions {
|
|
8
|
+
currentModel: string;
|
|
9
|
+
currentProvider: Provider;
|
|
10
|
+
maxTokens: number;
|
|
11
|
+
authStorage?: AuthStorage;
|
|
12
|
+
contextWindowOptions: ContextWindowOptions;
|
|
13
|
+
activeApiKey: string | undefined;
|
|
14
|
+
activeAccountId: string | undefined;
|
|
15
|
+
activeProjectId: string | undefined;
|
|
16
|
+
activeBaseUrl: string | undefined;
|
|
17
|
+
setLiveItems: Dispatch<SetStateAction<CompletedItem[]>>;
|
|
18
|
+
getId: () => string;
|
|
19
|
+
approvedPlanPathRef: MutableRefObject<string | undefined>;
|
|
20
|
+
settingsRef: MutableRefObject<SettingsManager | null>;
|
|
21
|
+
messagesRef: MutableRefObject<Message[]>;
|
|
22
|
+
lastActualTokensRef: MutableRefObject<number>;
|
|
23
|
+
lastActualTokensTimestampRef: MutableRefObject<number>;
|
|
24
|
+
persistCompactedSession: (compactedMessages: readonly Message[]) => Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export interface ContextCompaction {
|
|
27
|
+
compactionAbortRef: MutableRefObject<AbortController | null>;
|
|
28
|
+
compactConversation: (messages: Message[], signal?: AbortSignal) => Promise<Message[]>;
|
|
29
|
+
transformContext: (messages: Message[], options?: {
|
|
30
|
+
force?: boolean;
|
|
31
|
+
}) => Promise<Message[]>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Owns context compaction: the manual `compactConversation` flow (spinner +
|
|
35
|
+
* credential resolution + abort handling) and the `transformContext` callback
|
|
36
|
+
* the agent loop calls before each turn / on overflow. Extracted verbatim from
|
|
37
|
+
* `App.tsx`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function useContextCompaction({ currentModel, currentProvider, maxTokens, authStorage, contextWindowOptions, activeApiKey, activeAccountId, activeProjectId, activeBaseUrl, setLiveItems, getId, approvedPlanPathRef, settingsRef, messagesRef, lastActualTokensRef, lastActualTokensTimestampRef, persistCompactedSession, }: UseContextCompactionOptions): ContextCompaction;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=useContextCompaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useContextCompaction.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useContextCompaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOrD,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAE3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,iBAAiB,CAAC;AAGpE,UAAU,2BAA2B;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,QAAQ,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACxD,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,mBAAmB,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1D,WAAW,EAAE,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACtD,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,mBAAmB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9C,4BAA4B,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvD,uBAAuB,EAAE,CAAC,iBAAiB,EAAE,SAAS,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAC7D,mBAAmB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,gBAAgB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC9F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,eAAe,EACf,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,YAAY,EACZ,KAAK,EACL,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,4BAA4B,EAC5B,uBAAuB,GACxB,EAAE,2BAA2B,GAAG,iBAAiB,CAmKjD"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { useCallback, useRef, } from "react";
|
|
2
|
+
import { compact, shouldCompact, getCompactionReserveTokens, } from "../../core/compaction/compactor.js";
|
|
3
|
+
import { estimateConversationTokens } from "../../core/compaction/token-estimator.js";
|
|
4
|
+
import { getContextWindow } from "../../core/model-registry.js";
|
|
5
|
+
import { log } from "../../core/logger.js";
|
|
6
|
+
import { toErrorItem } from "../error-item.js";
|
|
7
|
+
/**
|
|
8
|
+
* Owns context compaction: the manual `compactConversation` flow (spinner +
|
|
9
|
+
* credential resolution + abort handling) and the `transformContext` callback
|
|
10
|
+
* the agent loop calls before each turn / on overflow. Extracted verbatim from
|
|
11
|
+
* `App.tsx`.
|
|
12
|
+
*/
|
|
13
|
+
export function useContextCompaction({ currentModel, currentProvider, maxTokens, authStorage, contextWindowOptions, activeApiKey, activeAccountId, activeProjectId, activeBaseUrl, setLiveItems, getId, approvedPlanPathRef, settingsRef, messagesRef, lastActualTokensRef, lastActualTokensTimestampRef, persistCompactedSession, }) {
|
|
14
|
+
const compactionAbortRef = useRef(null);
|
|
15
|
+
const lastCompactionTimeRef = useRef(0);
|
|
16
|
+
const compactConversation = useCallback(async (messages, signal) => {
|
|
17
|
+
const contextWindow = getContextWindow(currentModel, contextWindowOptions);
|
|
18
|
+
const tokensBefore = estimateConversationTokens(messages);
|
|
19
|
+
const spinId = getId();
|
|
20
|
+
log("INFO", "compaction", `Running compaction`, {
|
|
21
|
+
messages: String(messages.length),
|
|
22
|
+
estimatedTokens: String(tokensBefore),
|
|
23
|
+
contextWindow: String(contextWindow),
|
|
24
|
+
});
|
|
25
|
+
// Show animated spinner
|
|
26
|
+
setLiveItems((prev) => [...prev, { kind: "compacting", id: spinId }]);
|
|
27
|
+
const ownedAbort = signal ? null : new AbortController();
|
|
28
|
+
const compactionSignal = signal ?? ownedAbort?.signal;
|
|
29
|
+
if (ownedAbort)
|
|
30
|
+
compactionAbortRef.current = ownedAbort;
|
|
31
|
+
try {
|
|
32
|
+
// Resolve fresh credentials for compaction too
|
|
33
|
+
let compactApiKey = activeApiKey;
|
|
34
|
+
let compactAccountId = activeAccountId;
|
|
35
|
+
let compactProjectId = activeProjectId;
|
|
36
|
+
let compactBaseUrl = activeBaseUrl;
|
|
37
|
+
if (authStorage) {
|
|
38
|
+
const creds = await authStorage.resolveCredentials(currentProvider);
|
|
39
|
+
compactApiKey = creds.accessToken;
|
|
40
|
+
compactAccountId = creds.accountId;
|
|
41
|
+
compactProjectId = creds.projectId;
|
|
42
|
+
compactBaseUrl = creds.baseUrl ?? compactBaseUrl;
|
|
43
|
+
}
|
|
44
|
+
const result = await compact(messages, {
|
|
45
|
+
provider: currentProvider,
|
|
46
|
+
model: currentModel,
|
|
47
|
+
apiKey: compactApiKey,
|
|
48
|
+
accountId: compactAccountId,
|
|
49
|
+
projectId: compactProjectId,
|
|
50
|
+
baseUrl: compactBaseUrl,
|
|
51
|
+
contextWindow,
|
|
52
|
+
signal: compactionSignal,
|
|
53
|
+
approvedPlanPath: approvedPlanPathRef.current,
|
|
54
|
+
});
|
|
55
|
+
if (result.result.compacted) {
|
|
56
|
+
// Replace spinner with completed notice
|
|
57
|
+
setLiveItems((prev) => prev.map((item) => item.id === spinId
|
|
58
|
+
? {
|
|
59
|
+
kind: "compacted",
|
|
60
|
+
originalCount: result.result.originalCount,
|
|
61
|
+
newCount: result.result.newCount,
|
|
62
|
+
tokensBefore: result.result.tokensBeforeEstimate,
|
|
63
|
+
tokensAfter: result.result.tokensAfterEstimate,
|
|
64
|
+
id: spinId,
|
|
65
|
+
}
|
|
66
|
+
: item));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Nothing was actually compacted — remove spinner silently
|
|
70
|
+
log("INFO", "compaction", `Compaction skipped: ${result.result.reason ?? "unknown"}`);
|
|
71
|
+
setLiveItems((prev) => prev.filter((item) => item.id !== spinId));
|
|
72
|
+
}
|
|
73
|
+
return result.messages;
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
77
|
+
const isAbort = compactionSignal?.aborted || msg.includes("aborted") || msg.includes("abort");
|
|
78
|
+
log(isAbort ? "WARN" : "ERROR", "compaction", isAbort ? "Compaction aborted" : `Compaction failed: ${msg}`);
|
|
79
|
+
setLiveItems((prev) => isAbort
|
|
80
|
+
? prev.filter((item) => item.id !== spinId)
|
|
81
|
+
: prev.map((item) => item.id === spinId ? toErrorItem(err, spinId, "Compaction failed") : item));
|
|
82
|
+
return messages; // Return unchanged on failure/abort
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
if (ownedAbort && compactionAbortRef.current === ownedAbort)
|
|
86
|
+
compactionAbortRef.current = null;
|
|
87
|
+
}
|
|
88
|
+
}, [
|
|
89
|
+
currentModel,
|
|
90
|
+
currentProvider,
|
|
91
|
+
activeApiKey,
|
|
92
|
+
activeAccountId,
|
|
93
|
+
activeProjectId,
|
|
94
|
+
activeBaseUrl,
|
|
95
|
+
contextWindowOptions,
|
|
96
|
+
authStorage,
|
|
97
|
+
setLiveItems,
|
|
98
|
+
getId,
|
|
99
|
+
approvedPlanPathRef,
|
|
100
|
+
]);
|
|
101
|
+
const transformContext = useCallback(async (messages, options) => {
|
|
102
|
+
const settings = settingsRef.current;
|
|
103
|
+
const autoCompact = settings?.get("autoCompact") ?? true;
|
|
104
|
+
const threshold = settings?.get("compactThreshold") ?? 0.8;
|
|
105
|
+
// Force-compact on context overflow regardless of settings
|
|
106
|
+
if (options?.force) {
|
|
107
|
+
const result = await compactConversation(messages);
|
|
108
|
+
if (result !== messages) {
|
|
109
|
+
messagesRef.current = result;
|
|
110
|
+
await persistCompactedSession(result);
|
|
111
|
+
}
|
|
112
|
+
lastCompactionTimeRef.current = Date.now();
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
if (!autoCompact)
|
|
116
|
+
return messages;
|
|
117
|
+
// Time-based cooldown: skip if compaction ran within the last 30 seconds
|
|
118
|
+
if (Date.now() - lastCompactionTimeRef.current < 30_000) {
|
|
119
|
+
log("INFO", "compaction", `Skipping compaction — cooldown active`);
|
|
120
|
+
return messages;
|
|
121
|
+
}
|
|
122
|
+
const contextWindow = getContextWindow(currentModel, contextWindowOptions);
|
|
123
|
+
const reserveTokens = getCompactionReserveTokens(maxTokens);
|
|
124
|
+
const tokensFresh = lastActualTokensTimestampRef.current > lastCompactionTimeRef.current;
|
|
125
|
+
const actualTokens = lastActualTokensRef.current > 0 && tokensFresh ? lastActualTokensRef.current : undefined;
|
|
126
|
+
if (shouldCompact(messages, contextWindow, threshold, actualTokens, reserveTokens)) {
|
|
127
|
+
const result = await compactConversation(messages);
|
|
128
|
+
if (result !== messages) {
|
|
129
|
+
messagesRef.current = result;
|
|
130
|
+
await persistCompactedSession(result);
|
|
131
|
+
}
|
|
132
|
+
lastCompactionTimeRef.current = Date.now();
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
return messages;
|
|
136
|
+
}, [
|
|
137
|
+
currentModel,
|
|
138
|
+
compactConversation,
|
|
139
|
+
contextWindowOptions,
|
|
140
|
+
persistCompactedSession,
|
|
141
|
+
maxTokens,
|
|
142
|
+
settingsRef,
|
|
143
|
+
messagesRef,
|
|
144
|
+
lastActualTokensRef,
|
|
145
|
+
lastActualTokensTimestampRef,
|
|
146
|
+
]);
|
|
147
|
+
return { compactionAbortRef, compactConversation, transformContext };
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=useContextCompaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useContextCompaction.js","sourceRoot":"","sources":["../../../src/ui/hooks/useContextCompaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type MutableRefObject } from "react";
|
|
2
|
+
import type { Message, Provider } from "@prestyj/ai";
|
|
3
|
+
import type { AgentTool } from "@prestyj/agent";
|
|
4
|
+
import type { LanguageId } from "../../core/language-detector.js";
|
|
5
|
+
import type { Skill } from "../../core/skills.js";
|
|
6
|
+
import type { GoalMode } from "../../core/runtime-mode.js";
|
|
7
|
+
/** Options accepted by {@link useModeState.rebuildSystemPrompt}. */
|
|
8
|
+
export interface RebuildSystemPromptOptions {
|
|
9
|
+
cwd?: string;
|
|
10
|
+
approvedPlanPath?: string;
|
|
11
|
+
clearApprovedPlan?: boolean;
|
|
12
|
+
activeLanguages?: Set<LanguageId>;
|
|
13
|
+
tools?: AgentTool[];
|
|
14
|
+
planMode?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Minimal session-store surface the mode state mirrors into for remount survival. */
|
|
17
|
+
interface ModeSessionStore {
|
|
18
|
+
planMode?: boolean;
|
|
19
|
+
goalMode?: GoalMode;
|
|
20
|
+
}
|
|
21
|
+
interface UseModeStateOptions {
|
|
22
|
+
initialPlanMode: boolean;
|
|
23
|
+
initialGoalMode?: GoalMode;
|
|
24
|
+
skills: Skill[] | undefined;
|
|
25
|
+
planModeRef?: {
|
|
26
|
+
current: boolean;
|
|
27
|
+
};
|
|
28
|
+
goalModeRef?: {
|
|
29
|
+
current: GoalMode;
|
|
30
|
+
};
|
|
31
|
+
sessionStore?: ModeSessionStore;
|
|
32
|
+
cwdRef: MutableRefObject<string>;
|
|
33
|
+
currentToolsRef: MutableRefObject<AgentTool[]>;
|
|
34
|
+
providerRef: MutableRefObject<Provider>;
|
|
35
|
+
approvedPlanPathRef: MutableRefObject<string | undefined>;
|
|
36
|
+
injectedLanguagesRef: MutableRefObject<Set<LanguageId>>;
|
|
37
|
+
messagesRef: MutableRefObject<Message[]>;
|
|
38
|
+
}
|
|
39
|
+
export interface ModeState {
|
|
40
|
+
planMode: boolean;
|
|
41
|
+
goalMode: GoalMode;
|
|
42
|
+
planModeStateRef: MutableRefObject<boolean>;
|
|
43
|
+
goalModeStateRef: MutableRefObject<GoalMode>;
|
|
44
|
+
rebuildSystemPrompt: (options?: RebuildSystemPromptOptions) => Promise<string>;
|
|
45
|
+
replaceSystemPrompt: (options?: RebuildSystemPromptOptions) => Promise<string>;
|
|
46
|
+
setPlanModeAndPrompt: (nextMode: boolean) => Promise<void>;
|
|
47
|
+
setGoalModeAndPrompt: (nextMode: GoalMode) => Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Owns the `planMode` runtime state and the system-prompt rebuild cluster
|
|
51
|
+
* (`rebuildSystemPrompt`, `replaceSystemPrompt`, `setPlanModeAndPrompt`).
|
|
52
|
+
* Extracted from `App.tsx` as a self-contained controller.
|
|
53
|
+
*/
|
|
54
|
+
export declare function useModeState({ initialPlanMode, initialGoalMode, skills, planModeRef, goalModeRef, sessionStore, cwdRef, currentToolsRef, providerRef, approvedPlanPathRef, injectedLanguagesRef, messagesRef, }: UseModeStateOptions): ModeState;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=useModeState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useModeState.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useModeState.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACxF,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,oEAAoE;AACpE,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,sFAAsF;AACtF,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,UAAU,mBAAmB;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACnC,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,QAAQ,CAAA;KAAE,CAAC;IACpC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjC,eAAe,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC;IAE/C,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,mBAAmB,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1D,oBAAoB,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,0BAA0B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,0BAA0B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,oBAAoB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,oBAAoB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,eAAe,EACf,eAAuB,EACvB,MAAM,EACN,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,GACZ,EAAE,mBAAmB,GAAG,SAAS,CA8EjC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { buildSystemPrompt } from "../../system-prompt.js";
|
|
3
|
+
/**
|
|
4
|
+
* Owns the `planMode` runtime state and the system-prompt rebuild cluster
|
|
5
|
+
* (`rebuildSystemPrompt`, `replaceSystemPrompt`, `setPlanModeAndPrompt`).
|
|
6
|
+
* Extracted from `App.tsx` as a self-contained controller.
|
|
7
|
+
*/
|
|
8
|
+
export function useModeState({ initialPlanMode, initialGoalMode = "off", skills, planModeRef, goalModeRef, sessionStore, cwdRef, currentToolsRef, providerRef, approvedPlanPathRef, injectedLanguagesRef, messagesRef, }) {
|
|
9
|
+
const [planMode, setPlanMode] = useState(initialPlanMode);
|
|
10
|
+
const [goalMode, setGoalMode] = useState(initialGoalMode);
|
|
11
|
+
const planModeStateRef = useRef(planMode);
|
|
12
|
+
const goalModeStateRef = useRef(goalMode);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
planModeStateRef.current = planMode;
|
|
15
|
+
if (planModeRef)
|
|
16
|
+
planModeRef.current = planMode;
|
|
17
|
+
}, [planMode, planModeRef]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
goalModeStateRef.current = goalMode;
|
|
20
|
+
if (goalModeRef)
|
|
21
|
+
goalModeRef.current = goalMode;
|
|
22
|
+
}, [goalMode, goalModeRef]);
|
|
23
|
+
const rebuildSystemPrompt = useCallback(async (options) => {
|
|
24
|
+
const approvedPlanPath = options?.clearApprovedPlan
|
|
25
|
+
? undefined
|
|
26
|
+
: (options?.approvedPlanPath ?? approvedPlanPathRef.current);
|
|
27
|
+
return buildSystemPrompt(options?.cwd ?? cwdRef.current, skills, options?.planMode ?? planModeStateRef.current, approvedPlanPath, (options?.tools ?? currentToolsRef.current).map((tool) => tool.name), options?.activeLanguages ?? injectedLanguagesRef.current, providerRef.current, goalModeStateRef.current);
|
|
28
|
+
}, [skills, approvedPlanPathRef, cwdRef, currentToolsRef, providerRef, injectedLanguagesRef]);
|
|
29
|
+
const replaceSystemPrompt = useCallback(async (options) => {
|
|
30
|
+
const newPrompt = await rebuildSystemPrompt(options);
|
|
31
|
+
if (messagesRef.current[0]?.role === "system") {
|
|
32
|
+
messagesRef.current[0] = { role: "system", content: newPrompt };
|
|
33
|
+
}
|
|
34
|
+
return newPrompt;
|
|
35
|
+
}, [rebuildSystemPrompt, messagesRef]);
|
|
36
|
+
const setPlanModeAndPrompt = useCallback(async (nextMode) => {
|
|
37
|
+
planModeStateRef.current = nextMode;
|
|
38
|
+
if (planModeRef)
|
|
39
|
+
planModeRef.current = nextMode;
|
|
40
|
+
if (sessionStore)
|
|
41
|
+
sessionStore.planMode = nextMode;
|
|
42
|
+
setPlanMode(nextMode);
|
|
43
|
+
await replaceSystemPrompt({ planMode: nextMode });
|
|
44
|
+
}, [planModeRef, sessionStore, replaceSystemPrompt]);
|
|
45
|
+
const setGoalModeAndPrompt = useCallback(async (nextMode) => {
|
|
46
|
+
goalModeStateRef.current = nextMode;
|
|
47
|
+
if (goalModeRef)
|
|
48
|
+
goalModeRef.current = nextMode;
|
|
49
|
+
if (sessionStore)
|
|
50
|
+
sessionStore.goalMode = nextMode;
|
|
51
|
+
setGoalMode(nextMode);
|
|
52
|
+
await replaceSystemPrompt();
|
|
53
|
+
}, [goalModeRef, sessionStore, replaceSystemPrompt]);
|
|
54
|
+
return {
|
|
55
|
+
planMode,
|
|
56
|
+
goalMode,
|
|
57
|
+
planModeStateRef,
|
|
58
|
+
goalModeStateRef,
|
|
59
|
+
rebuildSystemPrompt,
|
|
60
|
+
replaceSystemPrompt,
|
|
61
|
+
setPlanModeAndPrompt,
|
|
62
|
+
setGoalModeAndPrompt,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=useModeState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useModeState.js","sourceRoot":"","sources":["../../../src/ui/hooks/useModeState.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type Dispatch, type MutableRefObject, type SetStateAction } from "react";
|
|
2
|
+
import type { Message, Provider } from "@prestyj/ai";
|
|
3
|
+
import type { AgentTool } from "@prestyj/agent";
|
|
4
|
+
import { type LanguageId } from "../../core/language-detector.js";
|
|
5
|
+
import type { PreparedPixelFix } from "../../core/pixel-fix.js";
|
|
6
|
+
import type { SessionManager } from "../../core/session-manager.js";
|
|
7
|
+
import type { UseAgentLoopReturn } from "./useAgentLoop.js";
|
|
8
|
+
import type { RebuildSystemPromptOptions } from "./useModeState.js";
|
|
9
|
+
import type { CompletedItem } from "../app-items.js";
|
|
10
|
+
import type { DoneStatus } from "../layout-decisions.js";
|
|
11
|
+
/** Minimal session-store surface the pixel run-all flag mirrors into. */
|
|
12
|
+
interface PixelSessionStore {
|
|
13
|
+
runAllPixel?: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface UsePixelFixFlowOptions {
|
|
16
|
+
agentLoop: UseAgentLoopReturn;
|
|
17
|
+
cwd: string;
|
|
18
|
+
currentProvider: Provider;
|
|
19
|
+
currentModel: string;
|
|
20
|
+
rebuildToolsForCwd?: (cwd: string) => AgentTool[];
|
|
21
|
+
sessionStore?: PixelSessionStore;
|
|
22
|
+
currentPixelFixRef: MutableRefObject<PreparedPixelFix | null>;
|
|
23
|
+
runAllPixelRef: MutableRefObject<boolean>;
|
|
24
|
+
startPixelFixRef: MutableRefObject<(errorId: string) => void>;
|
|
25
|
+
cwdRef: MutableRefObject<string>;
|
|
26
|
+
currentToolsRef: MutableRefObject<AgentTool[]>;
|
|
27
|
+
injectedLanguagesRef: MutableRefObject<Set<LanguageId>>;
|
|
28
|
+
setupHintShownRef: MutableRefObject<boolean>;
|
|
29
|
+
messagesRef: MutableRefObject<Message[]>;
|
|
30
|
+
persistedIndexRef: MutableRefObject<number>;
|
|
31
|
+
sessionManagerRef: MutableRefObject<SessionManager | null>;
|
|
32
|
+
sessionPathRef: MutableRefObject<string | undefined>;
|
|
33
|
+
setDisplayedCwd: Dispatch<SetStateAction<string>>;
|
|
34
|
+
setCurrentTools: Dispatch<SetStateAction<AgentTool[]>>;
|
|
35
|
+
setHistory: Dispatch<SetStateAction<CompletedItem[]>>;
|
|
36
|
+
setLiveItems: Dispatch<SetStateAction<CompletedItem[]>>;
|
|
37
|
+
setLastUserMessage: Dispatch<SetStateAction<string>>;
|
|
38
|
+
setDoneStatus: Dispatch<SetStateAction<DoneStatus | null>>;
|
|
39
|
+
rebuildSystemPrompt: (options?: RebuildSystemPromptOptions) => Promise<string>;
|
|
40
|
+
clearPendingHistory: () => void;
|
|
41
|
+
getId: () => string;
|
|
42
|
+
initialRunAllPixel: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface PixelFixFlow {
|
|
45
|
+
startPixelFix: (errorId: string) => void;
|
|
46
|
+
runAllPixel: boolean;
|
|
47
|
+
setRunAllPixel: Dispatch<SetStateAction<boolean>>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Owns the in-Ink pixel-fix flow: swapping cwd/tools/system-prompt/banner in
|
|
51
|
+
* lockstep, resetting chat state, kicking off the agent run, and the "fix all"
|
|
52
|
+
* run-all flag. Extracted verbatim from `App.tsx`; see CLAUDE.md for the
|
|
53
|
+
* four-things-in-lockstep contract.
|
|
54
|
+
*/
|
|
55
|
+
export declare function usePixelFixFlow({ agentLoop, cwd, currentProvider, currentModel, rebuildToolsForCwd, sessionStore, currentPixelFixRef, runAllPixelRef, startPixelFixRef, cwdRef, currentToolsRef, injectedLanguagesRef, setupHintShownRef, messagesRef, persistedIndexRef, sessionManagerRef, sessionPathRef, setDisplayedCwd, setCurrentTools, setHistory, setLiveItems, setLastUserMessage, setDoneStatus, rebuildSystemPrompt, clearPendingHistory, getId, initialRunAllPixel, }: UsePixelFixFlowOptions): PixelFixFlow;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=usePixelFixFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePixelFixFlow.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/usePixelFixFlow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState, } from "react";
|
|
2
|
+
import { log } from "../../core/logger.js";
|
|
3
|
+
import { detectLanguages } from "../../core/language-detector.js";
|
|
4
|
+
import { toErrorItem } from "../error-item.js";
|
|
5
|
+
/**
|
|
6
|
+
* Owns the in-Ink pixel-fix flow: swapping cwd/tools/system-prompt/banner in
|
|
7
|
+
* lockstep, resetting chat state, kicking off the agent run, and the "fix all"
|
|
8
|
+
* run-all flag. Extracted verbatim from `App.tsx`; see CLAUDE.md for the
|
|
9
|
+
* four-things-in-lockstep contract.
|
|
10
|
+
*/
|
|
11
|
+
export function usePixelFixFlow({ agentLoop, cwd, currentProvider, currentModel, rebuildToolsForCwd, sessionStore, currentPixelFixRef, runAllPixelRef, startPixelFixRef, cwdRef, currentToolsRef, injectedLanguagesRef, setupHintShownRef, messagesRef, persistedIndexRef, sessionManagerRef, sessionPathRef, setDisplayedCwd, setCurrentTools, setHistory, setLiveItems, setLastUserMessage, setDoneStatus, rebuildSystemPrompt, clearPendingHistory, getId, initialRunAllPixel, }) {
|
|
12
|
+
const [runAllPixel, setRunAllPixel] = useState(initialRunAllPixel);
|
|
13
|
+
const startPixelFix = useCallback((errorId) => {
|
|
14
|
+
void (async () => {
|
|
15
|
+
try {
|
|
16
|
+
const { preparePixelFix } = await import("../../core/pixel-fix.js");
|
|
17
|
+
const prep = await preparePixelFix(errorId);
|
|
18
|
+
currentPixelFixRef.current = prep;
|
|
19
|
+
// Move the agent into the error's project root. Four things must
|
|
20
|
+
// change in lockstep, otherwise the agent (or the chrome around
|
|
21
|
+
// it) shows the wrong project:
|
|
22
|
+
// 1. process.cwd — for any code reading it directly
|
|
23
|
+
// 2. cwd-bound tools (read/write/bash/grep/…) — baked at creation
|
|
24
|
+
// 3. the system prompt's "Working directory: …" line — the only
|
|
25
|
+
// place the model itself learns where it is
|
|
26
|
+
// 4. displayedCwd state — Banner + Footer read this for display
|
|
27
|
+
try {
|
|
28
|
+
process.chdir(prep.projectPath);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
log("WARN", "pixel", `chdir failed: ${err.message}`);
|
|
32
|
+
}
|
|
33
|
+
cwdRef.current = prep.projectPath;
|
|
34
|
+
setDisplayedCwd(prep.projectPath);
|
|
35
|
+
let toolsForPixelFix = currentToolsRef.current;
|
|
36
|
+
if (rebuildToolsForCwd) {
|
|
37
|
+
toolsForPixelFix = rebuildToolsForCwd(prep.projectPath);
|
|
38
|
+
currentToolsRef.current = toolsForPixelFix;
|
|
39
|
+
setCurrentTools(toolsForPixelFix);
|
|
40
|
+
}
|
|
41
|
+
// Pixel-fix swaps the project root — reset injected packs so the
|
|
42
|
+
// new project re-detects from scratch on the next tool call. Also
|
|
43
|
+
// reset the setup-hint flag so the new project's first badge re-
|
|
44
|
+
// surfaces the tip (different project, may need the reminder).
|
|
45
|
+
injectedLanguagesRef.current = new Set();
|
|
46
|
+
setupHintShownRef.current = false;
|
|
47
|
+
const detectedForPixelFix = detectLanguages(prep.projectPath);
|
|
48
|
+
injectedLanguagesRef.current = detectedForPixelFix;
|
|
49
|
+
const newSystemPrompt = await rebuildSystemPrompt({
|
|
50
|
+
cwd: prep.projectPath,
|
|
51
|
+
clearApprovedPlan: true,
|
|
52
|
+
activeLanguages: detectedForPixelFix,
|
|
53
|
+
tools: toolsForPixelFix,
|
|
54
|
+
});
|
|
55
|
+
// Now that the cwd swap is committed, reset chat. Do not clear the
|
|
56
|
+
// terminal here; terminal clear sequences can erase saved scrollback.
|
|
57
|
+
clearPendingHistory();
|
|
58
|
+
setHistory([{ kind: "banner", id: "banner" }]);
|
|
59
|
+
setLiveItems([]);
|
|
60
|
+
messagesRef.current = messagesRef.current.slice(0, 1);
|
|
61
|
+
agentLoop.reset();
|
|
62
|
+
persistedIndexRef.current = messagesRef.current.length;
|
|
63
|
+
const sm = sessionManagerRef.current;
|
|
64
|
+
if (sm) {
|
|
65
|
+
void sm.create(prep.projectPath, currentProvider, currentModel).then((s) => {
|
|
66
|
+
sessionPathRef.current = s.path;
|
|
67
|
+
log("INFO", "pixel", "New session for pixel fix", { path: s.path });
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (messagesRef.current[0]?.role === "system") {
|
|
71
|
+
messagesRef.current[0] = { role: "system", content: newSystemPrompt };
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
messagesRef.current.unshift({ role: "system", content: newSystemPrompt });
|
|
75
|
+
}
|
|
76
|
+
const title = `Fix ${errorId.slice(0, 12)}… in ${prep.projectName}`;
|
|
77
|
+
const taskItem = { kind: "task", title, id: getId() };
|
|
78
|
+
setLastUserMessage(title);
|
|
79
|
+
setDoneStatus(null);
|
|
80
|
+
setLiveItems([taskItem]);
|
|
81
|
+
await agentLoop.run(prep.prompt);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
85
|
+
log("ERROR", "pixel", msg);
|
|
86
|
+
currentPixelFixRef.current = null;
|
|
87
|
+
setRunAllPixel(false);
|
|
88
|
+
setLiveItems((prev) => [...prev, toErrorItem(err, getId())]);
|
|
89
|
+
}
|
|
90
|
+
})();
|
|
91
|
+
}, [cwd, agentLoop, currentProvider, currentModel]);
|
|
92
|
+
startPixelFixRef.current = startPixelFix;
|
|
93
|
+
// Seed from sessionStore so "Fix All" chaining survives a deferred
|
|
94
|
+
// resetUI() if it fires between pixel fixes (e.g. user toggled a pane).
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
runAllPixelRef.current = runAllPixel;
|
|
97
|
+
if (sessionStore)
|
|
98
|
+
sessionStore.runAllPixel = runAllPixel;
|
|
99
|
+
}, [runAllPixel, sessionStore, runAllPixelRef]);
|
|
100
|
+
return { startPixelFix, runAllPixel, setRunAllPixel };
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=usePixelFixFlow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePixelFixFlow.js","sourceRoot":"","sources":["../../../src/ui/hooks/usePixelFixFlow.ts"],"names":[],"mappings":"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"}
|