@kenkaiiii/ggcoder 4.3.219 → 4.3.220
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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +39 -20
- package/dist/cli.js.map +1 -1
- package/dist/core/agent-session-compaction.test.js +0 -7
- package/dist/core/agent-session-compaction.test.js.map +1 -1
- 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 +4 -98
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/continue-replay-inventory.test.js +1 -1
- package/dist/core/continue-replay-inventory.test.js.map +1 -1
- package/dist/core/goal-controller.d.ts +2 -0
- package/dist/core/goal-controller.d.ts.map +1 -1
- package/dist/core/goal-controller.js +152 -8
- package/dist/core/goal-controller.js.map +1 -1
- package/dist/core/goal-controller.test.js +232 -3
- package/dist/core/goal-controller.test.js.map +1 -1
- package/dist/core/goal-overhead-harness.d.ts +33 -0
- package/dist/core/goal-overhead-harness.d.ts.map +1 -0
- package/dist/core/goal-overhead-harness.js +268 -0
- package/dist/core/goal-overhead-harness.js.map +1 -0
- package/dist/core/goal-store.d.ts +1 -0
- package/dist/core/goal-store.d.ts.map +1 -1
- package/dist/core/goal-store.js +43 -3
- package/dist/core/goal-store.js.map +1 -1
- package/dist/core/goal-store.test.js +13 -0
- package/dist/core/goal-store.test.js.map +1 -1
- package/dist/core/goal-worker.d.ts.map +1 -1
- package/dist/core/goal-worker.js +17 -11
- package/dist/core/goal-worker.js.map +1 -1
- package/dist/core/goal-worker.test.js +41 -8
- package/dist/core/goal-worker.test.js.map +1 -1
- package/dist/core/goal-worktree.d.ts +21 -0
- package/dist/core/goal-worktree.d.ts.map +1 -1
- package/dist/core/goal-worktree.js +71 -1
- package/dist/core/goal-worktree.js.map +1 -1
- package/dist/core/goal-worktree.test.js +127 -2
- package/dist/core/goal-worktree.test.js.map +1 -1
- package/dist/core/prompt-commands.js +2 -2
- package/dist/core/prompt-commands.test.js +1 -1
- package/dist/core/prompt-commands.test.js.map +1 -1
- package/dist/core/runtime-mode.d.ts +7 -0
- package/dist/core/runtime-mode.d.ts.map +1 -1
- package/dist/core/runtime-mode.js +6 -0
- package/dist/core/runtime-mode.js.map +1 -1
- package/dist/core/session-manager.d.ts +3 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +16 -0
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-restore-display.test.js +84 -0
- package/dist/core/session-restore-display.test.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 +0 -15
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/system-prompt.d.ts +1 -1
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +13 -1
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +2 -2
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/tools/bash.d.ts +2 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +5 -2
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts +2 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +16 -3
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/enter-plan.d.ts +8 -0
- package/dist/tools/enter-plan.d.ts.map +1 -0
- package/dist/tools/enter-plan.js +27 -0
- package/dist/tools/enter-plan.js.map +1 -0
- package/dist/tools/exit-plan.d.ts +8 -0
- package/dist/tools/exit-plan.d.ts.map +1 -0
- package/dist/tools/exit-plan.js +35 -0
- package/dist/tools/exit-plan.js.map +1 -0
- package/dist/tools/goals.d.ts +8 -5
- package/dist/tools/goals.d.ts.map +1 -1
- package/dist/tools/goals.js +124 -49
- package/dist/tools/goals.js.map +1 -1
- package/dist/tools/goals.test.js +356 -11
- package/dist/tools/goals.test.js.map +1 -1
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/plan-mode.test.js +63 -24
- 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 +4 -0
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/subagent.d.ts +3 -1
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +5 -2
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/write.d.ts +2 -0
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +23 -3
- package/dist/tools/write.js.map +1 -1
- package/dist/ui/App.d.ts +9 -6
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +572 -925
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/app-items.d.ts +1 -0
- package/dist/ui/app-items.d.ts.map +1 -1
- package/dist/ui/app-items.js +1 -1
- package/dist/ui/app-items.js.map +1 -1
- package/dist/ui/app-state-persistence.test.js +22 -22
- package/dist/ui/app-state-persistence.test.js.map +1 -1
- package/dist/ui/components/AssistantMessage.test.js +7 -7
- package/dist/ui/components/AssistantMessage.test.js.map +1 -1
- package/dist/ui/components/BackgroundTasksBar.d.ts.map +1 -1
- package/dist/ui/components/BackgroundTasksBar.js +6 -6
- package/dist/ui/components/BackgroundTasksBar.js.map +1 -1
- package/dist/ui/components/ChatFooterPane.d.ts +29 -0
- package/dist/ui/components/ChatFooterPane.d.ts.map +1 -0
- package/dist/ui/components/ChatFooterPane.js +16 -0
- package/dist/ui/components/ChatFooterPane.js.map +1 -0
- package/dist/ui/components/ChatInputStack.d.ts +34 -0
- package/dist/ui/components/ChatInputStack.d.ts.map +1 -0
- package/dist/ui/components/ChatInputStack.js +9 -0
- package/dist/ui/components/ChatInputStack.js.map +1 -0
- package/dist/ui/components/ChatLayout.d.ts +23 -0
- package/dist/ui/components/ChatLayout.d.ts.map +1 -0
- package/dist/ui/components/ChatLayout.js +16 -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 +8 -0
- package/dist/ui/components/ChatLivePane.js.map +1 -0
- package/dist/ui/components/ChatScreen.d.ts +118 -0
- package/dist/ui/components/ChatScreen.d.ts.map +1 -0
- package/dist/ui/components/ChatScreen.js +14 -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 +6 -3
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +14 -4
- 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 +2 -1
- package/dist/ui/components/GoalOverlay.d.ts.map +1 -1
- package/dist/ui/components/GoalOverlay.js +11 -6
- package/dist/ui/components/GoalOverlay.js.map +1 -1
- package/dist/ui/components/GoalStatusBar.d.ts +2 -0
- package/dist/ui/components/GoalStatusBar.d.ts.map +1 -1
- package/dist/ui/components/GoalStatusBar.js +27 -11
- package/dist/ui/components/GoalStatusBar.js.map +1 -1
- package/dist/ui/components/GoalStatusBar.test.d.ts +2 -0
- package/dist/ui/components/GoalStatusBar.test.d.ts.map +1 -0
- package/dist/ui/components/GoalStatusBar.test.js +17 -0
- package/dist/ui/components/GoalStatusBar.test.js.map +1 -0
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +6 -5
- package/dist/ui/components/InputArea.js.map +1 -1
- 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 +16 -2
- 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/ServerToolExecution.d.ts +2 -0
- package/dist/ui/components/ServerToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ServerToolExecution.js +3 -2
- package/dist/ui/components/ServerToolExecution.js.map +1 -1
- package/dist/ui/components/StreamingArea.js +1 -1
- package/dist/ui/components/StreamingArea.js.map +1 -1
- 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 +2 -2
- package/dist/ui/components/SubAgentPanel.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 +13 -11
- package/dist/ui/components/ToolExecution.js.map +1 -1
- package/dist/ui/components/ToolGroupExecution.d.ts +2 -1
- package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolGroupExecution.js +5 -3
- package/dist/ui/components/ToolGroupExecution.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-status-layout.test.js +4 -3
- package/dist/ui/footer-status-layout.test.js.map +1 -1
- package/dist/ui/goal-events.d.ts +1 -0
- package/dist/ui/goal-events.d.ts.map +1 -1
- package/dist/ui/goal-events.js +2 -1
- package/dist/ui/goal-events.js.map +1 -1
- package/dist/ui/goal-events.test.js +16 -0
- package/dist/ui/goal-events.test.js.map +1 -1
- package/dist/ui/goal-lifecycle-orchestration.test.js +105 -18
- package/dist/ui/goal-lifecycle-orchestration.test.js.map +1 -1
- package/dist/ui/goal-progress.d.ts +1 -1
- package/dist/ui/goal-progress.d.ts.map +1 -1
- package/dist/ui/goal-progress.js +11 -13
- package/dist/ui/goal-progress.js.map +1 -1
- package/dist/ui/goal-run-helpers.d.ts +16 -0
- package/dist/ui/goal-run-helpers.d.ts.map +1 -0
- package/dist/ui/goal-run-helpers.js +61 -0
- package/dist/ui/goal-run-helpers.js.map +1 -0
- package/dist/ui/goal-status-bar.test.js +8 -6
- package/dist/ui/goal-status-bar.test.js.map +1 -1
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts +38 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts.map +1 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.js +71 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.js.map +1 -0
- package/dist/ui/hooks/useGoalPickerController.d.ts +22 -0
- package/dist/ui/hooks/useGoalPickerController.d.ts.map +1 -0
- package/dist/ui/hooks/useGoalPickerController.js +35 -0
- package/dist/ui/hooks/useGoalPickerController.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/useTranscriptHistory.d.ts +34 -0
- package/dist/ui/hooks/useTranscriptHistory.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.js +96 -0
- package/dist/ui/hooks/useTranscriptHistory.js.map +1 -0
- package/dist/ui/layout-decisions.d.ts +3 -12
- package/dist/ui/layout-decisions.d.ts.map +1 -1
- package/dist/ui/layout-decisions.js +7 -65
- package/dist/ui/layout-decisions.js.map +1 -1
- package/dist/ui/prompt-routing.d.ts.map +1 -1
- package/dist/ui/prompt-routing.js +36 -2
- package/dist/ui/prompt-routing.js.map +1 -1
- package/dist/ui/prompt-routing.test.d.ts +2 -0
- package/dist/ui/prompt-routing.test.d.ts.map +1 -0
- package/dist/ui/prompt-routing.test.js +48 -0
- package/dist/ui/prompt-routing.test.js.map +1 -0
- package/dist/ui/render.d.ts +9 -6
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +3 -2
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/slash-command-images.test.js +3 -2
- package/dist/ui/slash-command-images.test.js.map +1 -1
- package/dist/ui/submit-prompt-command.d.ts +40 -0
- package/dist/ui/submit-prompt-command.d.ts.map +1 -0
- package/dist/ui/submit-prompt-command.js +92 -0
- package/dist/ui/submit-prompt-command.js.map +1 -0
- package/dist/ui/submit-slash-commands.d.ts +13 -0
- package/dist/ui/submit-slash-commands.d.ts.map +1 -0
- package/dist/ui/submit-slash-commands.js +36 -0
- package/dist/ui/submit-slash-commands.js.map +1 -0
- package/dist/ui/terminal-history-format.d.ts +1 -0
- package/dist/ui/terminal-history-format.d.ts.map +1 -1
- package/dist/ui/terminal-history-format.js +2 -1
- package/dist/ui/terminal-history-format.js.map +1 -1
- package/dist/ui/terminal-history-spacing.d.ts +1 -2
- package/dist/ui/terminal-history-spacing.d.ts.map +1 -1
- package/dist/ui/terminal-history-spacing.js +1 -28
- package/dist/ui/terminal-history-spacing.js.map +1 -1
- package/dist/ui/terminal-history-status-renderers.d.ts +2 -2
- package/dist/ui/terminal-history-status-renderers.d.ts.map +1 -1
- package/dist/ui/terminal-history-status-renderers.js +36 -17
- package/dist/ui/terminal-history-status-renderers.js.map +1 -1
- package/dist/ui/terminal-history.d.ts.map +1 -1
- package/dist/ui/terminal-history.js +55 -24
- package/dist/ui/terminal-history.js.map +1 -1
- package/dist/ui/terminal-history.test.js +2 -1
- package/dist/ui/terminal-history.test.js.map +1 -1
- package/dist/ui/tool-group-summary.d.ts +2 -2
- package/dist/ui/tool-group-summary.d.ts.map +1 -1
- package/dist/ui/tool-group-summary.js +18 -18
- package/dist/ui/tool-group-summary.js.map +1 -1
- package/dist/ui/transcript/GoalRows.d.ts +10 -0
- package/dist/ui/transcript/GoalRows.d.ts.map +1 -0
- package/dist/ui/transcript/GoalRows.js +35 -0
- package/dist/ui/transcript/GoalRows.js.map +1 -0
- package/dist/ui/transcript/MiscRows.d.ts +23 -0
- package/dist/ui/transcript/MiscRows.d.ts.map +1 -0
- package/dist/ui/transcript/MiscRows.js +41 -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 +84 -0
- package/dist/ui/transcript/TranscriptRenderer.js.map +1 -0
- package/dist/ui/transcript/presentation.d.ts +76 -0
- package/dist/ui/transcript/presentation.d.ts.map +1 -0
- package/dist/ui/transcript/presentation.js +109 -0
- package/dist/ui/transcript/presentation.js.map +1 -0
- package/dist/ui/transcript/spacing.d.ts +29 -0
- package/dist/ui/transcript/spacing.d.ts.map +1 -0
- package/dist/ui/transcript/spacing.js +91 -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 +21 -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/tui-history-parity.test.js +3 -2
- package/dist/ui/tui-history-parity.test.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 +6 -6
- package/dist/core/repomap-budget.d.ts +0 -7
- package/dist/core/repomap-budget.d.ts.map +0 -1
- package/dist/core/repomap-budget.js +0 -10
- package/dist/core/repomap-budget.js.map +0 -1
- package/dist/core/repomap-budget.test.d.ts +0 -2
- package/dist/core/repomap-budget.test.d.ts.map +0 -1
- package/dist/core/repomap-budget.test.js +0 -26
- package/dist/core/repomap-budget.test.js.map +0 -1
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal-progress.js","sourceRoot":"","sources":["../../src/ui/goal-progress.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,GAE7B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,
|
|
1
|
+
{"version":3,"file":"goal-progress.js","sourceRoot":"","sources":["../../src/ui/goal-progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type GoalRun } from "../core/goal-store.js";
|
|
2
|
+
import type { decideGoalNextAction } from "../core/goal-controller.js";
|
|
3
|
+
import type { GoalWorktreeDirtyError } from "../core/goal-worktree.js";
|
|
4
|
+
export declare function buildGoalTaskPromptWithReferences(run: GoalRun, taskPrompt: string): string;
|
|
5
|
+
export declare function shouldRunGoalTaskInMainCheckout(taskTitle: string): boolean;
|
|
6
|
+
export declare function goalTaskProgress(run: GoalRun, task: GoalRun["tasks"][number] | undefined): {
|
|
7
|
+
taskNumber: number;
|
|
8
|
+
taskTotal: number;
|
|
9
|
+
} | undefined;
|
|
10
|
+
export declare function buildGoalDirtyWorktreeUserPrompt(error: GoalWorktreeDirtyError): string;
|
|
11
|
+
export declare function goalDirtyWorktreeInfoText(): string;
|
|
12
|
+
export declare function buildGoalDirtyWorktreePauseRun(run: GoalRun, error: GoalWorktreeDirtyError): GoalRun;
|
|
13
|
+
export declare function buildGoalUserPauseRun(run: GoalRun): GoalRun;
|
|
14
|
+
export declare function goalRunNeedsExplicitContinuationAfterWorker(run: GoalRun | undefined): boolean;
|
|
15
|
+
export declare function shouldKeepGoalRunTrackedAfterDecision(decision: ReturnType<typeof decideGoalNextAction>): boolean;
|
|
16
|
+
//# sourceMappingURL=goal-run-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goal-run-helpers.d.ts","sourceRoot":"","sources":["../../src/ui/goal-run-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAKnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAI1F;AAED,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAK1E;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,GACzC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAKvD;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAMtF;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAoBD,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAKT;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAK3D;AAED,wBAAgB,2CAA2C,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAE7F;AAED,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,GAChD,OAAO,CAOT"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { formatGoalReferencesForPrompt } from "../core/goal-references.js";
|
|
2
|
+
import { goalHasBlockingPrerequisites } from "../core/goal-store.js";
|
|
3
|
+
import { APPLY_INTEGRATION_TO_MAIN_TASK_TITLE, COMMIT_INTEGRATED_GOAL_CHANGES_TASK_TITLE, } from "../core/goal-controller.js";
|
|
4
|
+
export function buildGoalTaskPromptWithReferences(run, taskPrompt) {
|
|
5
|
+
if (taskPrompt.includes("## Goal References (MANDATORY)"))
|
|
6
|
+
return taskPrompt;
|
|
7
|
+
const references = formatGoalReferencesForPrompt(run.references ?? []);
|
|
8
|
+
return references ? `${references}\n\n${taskPrompt}` : taskPrompt;
|
|
9
|
+
}
|
|
10
|
+
export function shouldRunGoalTaskInMainCheckout(taskTitle) {
|
|
11
|
+
return (taskTitle === APPLY_INTEGRATION_TO_MAIN_TASK_TITLE ||
|
|
12
|
+
taskTitle === COMMIT_INTEGRATED_GOAL_CHANGES_TASK_TITLE);
|
|
13
|
+
}
|
|
14
|
+
export function goalTaskProgress(run, task) {
|
|
15
|
+
if (!task)
|
|
16
|
+
return undefined;
|
|
17
|
+
const taskIndex = run.tasks.findIndex((item) => item.id === task.id);
|
|
18
|
+
if (taskIndex < 0 || run.tasks.length === 0)
|
|
19
|
+
return undefined;
|
|
20
|
+
return { taskNumber: taskIndex + 1, taskTotal: run.tasks.length };
|
|
21
|
+
}
|
|
22
|
+
export function buildGoalDirtyWorktreeUserPrompt(error) {
|
|
23
|
+
return (`A Goal worker could not start because the project needs a clean working tree before GG Coder can create an isolated Goal worktree.\n\n` +
|
|
24
|
+
`Dirty files from \`git status --porcelain\`:\n${error.dirtyStatus}\n\n` +
|
|
25
|
+
`Explain this clearly to the user in one short message. Ask whether they want you to commit the current changes, stash them, or pause the Goal. If the user chooses commit, inspect \`git status --porcelain\`, stage only the listed dirty files the user approved, run an appropriate git commit command, then resume/continue the Goal only after the working tree is clean. Do not run git commit, git stash, or discard changes unless the user explicitly chooses one.`);
|
|
26
|
+
}
|
|
27
|
+
export function goalDirtyWorktreeInfoText() {
|
|
28
|
+
return "Goal paused: your working tree has uncommitted changes. Asking whether to commit or stash them before starting isolated Goal workers.";
|
|
29
|
+
}
|
|
30
|
+
function summarizeDirtyStatusForBlocker(dirtyStatus) {
|
|
31
|
+
return dirtyStatus
|
|
32
|
+
.split("\n")
|
|
33
|
+
.map((line) => line.trim())
|
|
34
|
+
.filter(Boolean)
|
|
35
|
+
.join("; ");
|
|
36
|
+
}
|
|
37
|
+
function buildGoalPauseRun(run, blocker) {
|
|
38
|
+
return {
|
|
39
|
+
...run,
|
|
40
|
+
status: "paused",
|
|
41
|
+
activeWorkerId: undefined,
|
|
42
|
+
continueRequestedAt: undefined,
|
|
43
|
+
blockers: Array.from(new Set([...run.blockers, blocker])),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function buildGoalDirtyWorktreePauseRun(run, error) {
|
|
47
|
+
return buildGoalPauseRun(run, `Goal worker startup is awaiting a human choice because the working tree has uncommitted changes: ${summarizeDirtyStatusForBlocker(error.dirtyStatus)}. Commit the current changes, stash them, or keep the Goal paused before starting isolated Goal workers.`);
|
|
48
|
+
}
|
|
49
|
+
export function buildGoalUserPauseRun(run) {
|
|
50
|
+
return buildGoalPauseRun(run, "Goal paused by user from the mini TUI; auto-continuation is stopped until resumed.");
|
|
51
|
+
}
|
|
52
|
+
export function goalRunNeedsExplicitContinuationAfterWorker(run) {
|
|
53
|
+
return !!run?.continueRequestedAt && !goalHasBlockingPrerequisites(run);
|
|
54
|
+
}
|
|
55
|
+
export function shouldKeepGoalRunTrackedAfterDecision(decision) {
|
|
56
|
+
return (decision.kind === "start_worker" ||
|
|
57
|
+
decision.kind === "run_verifier" ||
|
|
58
|
+
decision.kind === "create_task" ||
|
|
59
|
+
(decision.kind === "wait" && decision.workerId !== undefined));
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=goal-run-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goal-run-helpers.js","sourceRoot":"","sources":["../../src/ui/goal-run-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,17 +26,19 @@ describe("GoalStatusBar helpers", () => {
|
|
|
26
26
|
expect(formatGoalElapsed(1_000)).toBe("0:01");
|
|
27
27
|
expect(formatGoalElapsed(65_400)).toBe("1:05");
|
|
28
28
|
});
|
|
29
|
-
it("formats active worker text with
|
|
29
|
+
it("formats active worker text with the running task number and goal title", () => {
|
|
30
30
|
expect(formatGoalStatusActiveText({
|
|
31
31
|
runId: "run-1",
|
|
32
|
-
label: "
|
|
32
|
+
label: "Fix Codex reasoning leaks",
|
|
33
33
|
phase: "worker",
|
|
34
34
|
startedAt: 0,
|
|
35
35
|
workerId: "worker-secret",
|
|
36
36
|
goalNumber: 1,
|
|
37
|
-
|
|
37
|
+
taskNumber: 2,
|
|
38
|
+
taskTotal: 3,
|
|
39
|
+
})).toBe("(2/3) Goal in progress: Fix Codex reasoning lea…");
|
|
38
40
|
});
|
|
39
|
-
it("formats verifier text with
|
|
41
|
+
it("formats verifier text with goal-in-progress copy", () => {
|
|
40
42
|
expect(formatGoalStatusActiveText({
|
|
41
43
|
runId: "run-2",
|
|
42
44
|
label: "Long verification title",
|
|
@@ -44,7 +46,7 @@ describe("GoalStatusBar helpers", () => {
|
|
|
44
46
|
startedAt: 0,
|
|
45
47
|
detail: "pnpm test",
|
|
46
48
|
goalNumber: 2,
|
|
47
|
-
})).toBe("Goal
|
|
49
|
+
})).toBe("Goal in progress: Long verification title");
|
|
48
50
|
});
|
|
49
51
|
it("mirrors upsert and clear changes through a sessionStore-shaped snapshot", () => {
|
|
50
52
|
const sessionStore = { goalStatusEntries: [] };
|
|
@@ -166,7 +168,7 @@ describe("GoalStatusBar helpers", () => {
|
|
|
166
168
|
});
|
|
167
169
|
const remountedEntries = sessionStore.goalStatusEntries ?? [];
|
|
168
170
|
expect(remountedEntries).toHaveLength(1);
|
|
169
|
-
expect(remountedEntries.map(formatGoalStatusActiveText)).toContain("Goal
|
|
171
|
+
expect(remountedEntries.map(formatGoalStatusActiveText)).toContain("Goal in progress: Implement status persis…");
|
|
170
172
|
});
|
|
171
173
|
});
|
|
172
174
|
//# sourceMappingURL=goal-status-bar.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal-status-bar.test.js","sourceRoot":"","sources":["../../src/ui/goal-status-bar.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,kCAAkC,EAClC,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,+BAA+B,CAAC;AAGvC,SAAS,OAAO,CAAC,YAA8B,EAAE;IAC/C,OAAO;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,OAAO;QACf,SAAS,EAAE,0BAA0B;QACrC,SAAS,EAAE,0BAA0B;QACrC,WAAW,EAAE,cAAc;QAC3B,eAAe,EAAE,EAAE;QACnB,aAAa,EAAE,EAAE;QACjB,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"goal-status-bar.test.js","sourceRoot":"","sources":["../../src/ui/goal-status-bar.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type DOMElement } from "ink";
|
|
2
|
+
import type { ThinkingLevel } from "@kenkaiiii/gg-ai";
|
|
3
|
+
import type { ContextWindowOptions } from "../../core/model-registry.js";
|
|
4
|
+
import type { GoalMode } from "../../core/runtime-mode.js";
|
|
5
|
+
import { type FooterStatusLayoutDecision } from "../components/BackgroundTasksBar.js";
|
|
6
|
+
import { type DoneStatus } from "../layout-decisions.js";
|
|
7
|
+
interface UseChatLayoutMeasurementsOptions {
|
|
8
|
+
rows: number;
|
|
9
|
+
columns: number;
|
|
10
|
+
backgroundTaskCount: number;
|
|
11
|
+
updatePending: boolean;
|
|
12
|
+
agentRunning: boolean;
|
|
13
|
+
activityPhase: string;
|
|
14
|
+
stallError: unknown;
|
|
15
|
+
doneStatus: DoneStatus | null;
|
|
16
|
+
currentModel: string;
|
|
17
|
+
contextUsed: number;
|
|
18
|
+
contextWindowOptions?: ContextWindowOptions;
|
|
19
|
+
displayedCwd: string;
|
|
20
|
+
gitBranch?: string | null;
|
|
21
|
+
thinkingLevel?: ThinkingLevel;
|
|
22
|
+
goalMode: GoalMode;
|
|
23
|
+
exitPending: boolean;
|
|
24
|
+
taskBarExpanded: boolean;
|
|
25
|
+
goalStatusEntryCount: number;
|
|
26
|
+
}
|
|
27
|
+
interface ChatLayoutMeasurements {
|
|
28
|
+
footerStatusLayout: FooterStatusLayoutDecision;
|
|
29
|
+
activityVisible: boolean;
|
|
30
|
+
stallStatusVisible: boolean;
|
|
31
|
+
doneStatusVisible: boolean;
|
|
32
|
+
statusSlotVisible: boolean;
|
|
33
|
+
mainControlsRef: (node: DOMElement | null) => void;
|
|
34
|
+
measuredLiveAreaRows: number;
|
|
35
|
+
}
|
|
36
|
+
export declare function useChatLayoutMeasurements({ rows, columns, backgroundTaskCount, updatePending, agentRunning, activityPhase, stallError, doneStatus, currentModel, contextUsed, contextWindowOptions, displayedCwd, gitBranch, thinkingLevel, goalMode, exitPending, taskBarExpanded, goalStatusEntryCount, }: UseChatLayoutMeasurementsOptions): ChatLayoutMeasurements;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=useChatLayoutMeasurements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatLayoutMeasurements.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useChatLayoutMeasurements.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,wBAAwB,CAAC;AAEhC,UAAU,gCAAgC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,UAAU,sBAAsB;IAC9B,kBAAkB,EAAE,0BAA0B,CAAC;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,yBAAyB,CAAC,EACxC,IAAI,EACJ,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,eAAe,EACf,oBAAoB,GACrB,EAAE,gCAAgC,GAAG,sBAAsB,CAkE3D"}
|
|
@@ -0,0 +1,71 @@
|
|
|
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, goalMode, exitPending, taskBarExpanded, goalStatusEntryCount, }) {
|
|
7
|
+
const footerStatusLayout = getFooterStatusLayoutDecision({
|
|
8
|
+
columns,
|
|
9
|
+
backgroundTaskCount,
|
|
10
|
+
updatePending,
|
|
11
|
+
});
|
|
12
|
+
const activityVisible = agentRunning && activityPhase !== "idle";
|
|
13
|
+
const stallStatusVisible = !activityVisible && !!stallError;
|
|
14
|
+
const doneStatusVisible = !activityVisible && !stallStatusVisible && !!doneStatus && !agentRunning;
|
|
15
|
+
const statusSlotVisible = activityVisible || stallStatusVisible || doneStatusVisible;
|
|
16
|
+
const [controlsHeight, setControlsHeight] = useState(0);
|
|
17
|
+
const controlsObserverRef = useRef(null);
|
|
18
|
+
const mainControlsRef = useCallback((node) => {
|
|
19
|
+
if (controlsObserverRef.current) {
|
|
20
|
+
controlsObserverRef.current.disconnect();
|
|
21
|
+
controlsObserverRef.current = null;
|
|
22
|
+
}
|
|
23
|
+
if (!node || typeof ResizeObserver === "undefined")
|
|
24
|
+
return;
|
|
25
|
+
const observer = new ResizeObserver((entries) => {
|
|
26
|
+
const entry = entries[0];
|
|
27
|
+
if (!entry)
|
|
28
|
+
return;
|
|
29
|
+
const roundedHeight = Math.round(entry.contentRect.height);
|
|
30
|
+
setControlsHeight((prev) => (roundedHeight !== prev ? roundedHeight : prev));
|
|
31
|
+
});
|
|
32
|
+
observer.observe(node);
|
|
33
|
+
controlsObserverRef.current = observer;
|
|
34
|
+
}, []);
|
|
35
|
+
useEffect(() => () => controlsObserverRef.current?.disconnect(), []);
|
|
36
|
+
const footerFitsOnOneLine = doesFooterFitOnOneLine({
|
|
37
|
+
columns,
|
|
38
|
+
model: currentModel,
|
|
39
|
+
tokensIn: contextUsed,
|
|
40
|
+
contextWindowOptions,
|
|
41
|
+
cwd: displayedCwd,
|
|
42
|
+
gitBranch,
|
|
43
|
+
thinkingLevel,
|
|
44
|
+
goalMode,
|
|
45
|
+
});
|
|
46
|
+
const chatControlsLayout = getChatControlsLayoutDecision({
|
|
47
|
+
rows,
|
|
48
|
+
columns,
|
|
49
|
+
agentRunning,
|
|
50
|
+
activityVisible,
|
|
51
|
+
doneStatusVisible,
|
|
52
|
+
stallStatusVisible,
|
|
53
|
+
exitPending,
|
|
54
|
+
footerStatusLayout,
|
|
55
|
+
taskBarExpanded,
|
|
56
|
+
goalStatusEntryCount,
|
|
57
|
+
footerFitsOnOneLine,
|
|
58
|
+
});
|
|
59
|
+
const stableControlsRows = controlsHeight > 0 ? controlsHeight : chatControlsLayout.controlsRows;
|
|
60
|
+
const measuredLiveAreaRows = Math.max(MIN_LIVE_AREA_ROWS, rows - stableControlsRows - 1);
|
|
61
|
+
return {
|
|
62
|
+
footerStatusLayout,
|
|
63
|
+
activityVisible,
|
|
64
|
+
stallStatusVisible,
|
|
65
|
+
doneStatusVisible,
|
|
66
|
+
statusSlotVisible,
|
|
67
|
+
mainControlsRef,
|
|
68
|
+
measuredLiveAreaRows,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# 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,22 @@
|
|
|
1
|
+
import { type GoalRun } from "../../core/goal-store.js";
|
|
2
|
+
interface UseGoalPickerControllerOptions {
|
|
3
|
+
cwd: string;
|
|
4
|
+
onRunGoal: (run: GoalRun) => void;
|
|
5
|
+
onDeleteGoalSideEffects: (run: GoalRun) => Promise<void> | void;
|
|
6
|
+
onPauseGoal: (run: GoalRun) => void;
|
|
7
|
+
onError: (err: unknown) => void;
|
|
8
|
+
}
|
|
9
|
+
interface GoalPickerController {
|
|
10
|
+
open: boolean;
|
|
11
|
+
goals: GoalRun[];
|
|
12
|
+
close: () => void;
|
|
13
|
+
openPicker: () => void;
|
|
14
|
+
toggle: () => void;
|
|
15
|
+
run: (run: GoalRun) => void;
|
|
16
|
+
deleteGoal: (run: GoalRun) => void;
|
|
17
|
+
pause: (run: GoalRun) => void;
|
|
18
|
+
refresh: () => void;
|
|
19
|
+
}
|
|
20
|
+
export declare function useGoalPickerController({ cwd, onRunGoal, onDeleteGoalSideEffects, onPauseGoal, onError, }: UseGoalPickerControllerOptions): GoalPickerController;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=useGoalPickerController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGoalPickerController.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useGoalPickerController.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,0BAA0B,CAAC;AAElC,UAAU,8BAA8B;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,uBAAuB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChE,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACjC;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,uBAAuB,CAAC,EACtC,GAAG,EACH,SAAS,EACT,uBAAuB,EACvB,WAAW,EACX,OAAO,GACR,EAAE,8BAA8B,GAAG,oBAAoB,CAiDvD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useCallback, useState } from "react";
|
|
2
|
+
import { loadGoalRuns, loadGoalRunsSync, saveGoalRuns, } from "../../core/goal-store.js";
|
|
3
|
+
export function useGoalPickerController({ cwd, onRunGoal, onDeleteGoalSideEffects, onPauseGoal, onError, }) {
|
|
4
|
+
const [open, setOpen] = useState(false);
|
|
5
|
+
const [goals, setGoals] = useState(() => loadGoalRunsSync(cwd));
|
|
6
|
+
const refresh = useCallback(() => setGoals(loadGoalRunsSync(cwd)), [cwd]);
|
|
7
|
+
const close = useCallback(() => setOpen(false), []);
|
|
8
|
+
const openPicker = useCallback(() => {
|
|
9
|
+
setGoals(loadGoalRunsSync(cwd));
|
|
10
|
+
setOpen(true);
|
|
11
|
+
}, [cwd]);
|
|
12
|
+
const toggle = useCallback(() => {
|
|
13
|
+
setGoals(loadGoalRunsSync(cwd));
|
|
14
|
+
setOpen((current) => !current);
|
|
15
|
+
}, [cwd]);
|
|
16
|
+
const run = useCallback((goalRun) => {
|
|
17
|
+
setOpen(false);
|
|
18
|
+
onRunGoal(goalRun);
|
|
19
|
+
}, [onRunGoal]);
|
|
20
|
+
const deleteGoal = useCallback((goalRun) => {
|
|
21
|
+
setOpen(false);
|
|
22
|
+
void (async () => {
|
|
23
|
+
await onDeleteGoalSideEffects(goalRun);
|
|
24
|
+
const nextGoals = (await loadGoalRuns(cwd)).filter((candidate) => candidate.id !== goalRun.id);
|
|
25
|
+
await saveGoalRuns(cwd, nextGoals);
|
|
26
|
+
setGoals(nextGoals);
|
|
27
|
+
})().catch(onError);
|
|
28
|
+
}, [cwd, onDeleteGoalSideEffects, onError]);
|
|
29
|
+
const pause = useCallback((goalRun) => {
|
|
30
|
+
setOpen(false);
|
|
31
|
+
onPauseGoal(goalRun);
|
|
32
|
+
}, [onPauseGoal]);
|
|
33
|
+
return { open, goals, close, openPicker, toggle, run, deleteGoal, pause, refresh };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=useGoalPickerController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGoalPickerController.js","sourceRoot":"","sources":["../../../src/ui/hooks/useGoalPickerController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,GAEb,MAAM,0BAA0B,CAAC;AAsBlC,MAAM,UAAU,uBAAuB,CAAC,EACtC,GAAG,EACH,SAAS,EACT,uBAAuB,EACvB,WAAW,EACX,OAAO,GACwB;IAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3E,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,MAAM,GAAG,GAAG,WAAW,CACrB,CAAC,OAAgB,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,SAAS,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,OAAgB,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAChD,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAC3C,CAAC;YACF,MAAM,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACnC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,EACD,CAAC,GAAG,EAAE,uBAAuB,EAAE,OAAO,CAAC,CACxC,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CACvB,CAAC,OAAgB,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,WAAW,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type TaskRecord } from "../../core/tasks-store.js";
|
|
2
|
+
interface UseTaskPickerControllerOptions {
|
|
3
|
+
displayedCwd: string;
|
|
4
|
+
onStartTask: (title: string, prompt: string, taskId: string) => void;
|
|
5
|
+
onRunAllTasksChange: (runAll: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
interface TaskPickerController {
|
|
8
|
+
open: boolean;
|
|
9
|
+
tasks: TaskRecord[];
|
|
10
|
+
close: () => void;
|
|
11
|
+
openPicker: () => void;
|
|
12
|
+
toggle: () => void;
|
|
13
|
+
start: (task: TaskRecord) => void;
|
|
14
|
+
runAll: (task?: TaskRecord) => void;
|
|
15
|
+
deleteTask: (task: TaskRecord) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function useTaskPickerController({ displayedCwd, onStartTask, onRunAllTasksChange, }: UseTaskPickerControllerOptions): TaskPickerController;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=useTaskPickerController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTaskPickerController.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useTaskPickerController.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AAEnC,UAAU,8BAA8B;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,mBAAmB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CACxC;AAED,wBAAgB,uBAAuB,CAAC,EACtC,YAAY,EACZ,WAAW,EACX,mBAAmB,GACpB,EAAE,8BAA8B,GAAG,oBAAoB,CAoDvD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useCallback, useState } from "react";
|
|
2
|
+
import { getNextPendingTask, loadTasksSync, markTaskInProgress, saveTasksSync, } from "../../core/tasks-store.js";
|
|
3
|
+
export function useTaskPickerController({ displayedCwd, onStartTask, onRunAllTasksChange, }) {
|
|
4
|
+
const [open, setOpen] = useState(false);
|
|
5
|
+
const [tasks, setTasks] = useState(() => loadTasksSync(displayedCwd));
|
|
6
|
+
const refresh = useCallback(() => setTasks(loadTasksSync(displayedCwd)), [displayedCwd]);
|
|
7
|
+
const close = useCallback(() => setOpen(false), []);
|
|
8
|
+
const openPicker = useCallback(() => {
|
|
9
|
+
setTasks(loadTasksSync(displayedCwd));
|
|
10
|
+
setOpen(true);
|
|
11
|
+
}, [displayedCwd]);
|
|
12
|
+
const toggle = useCallback(() => {
|
|
13
|
+
setTasks(loadTasksSync(displayedCwd));
|
|
14
|
+
setOpen((current) => !current);
|
|
15
|
+
}, [displayedCwd]);
|
|
16
|
+
const start = useCallback((task) => {
|
|
17
|
+
setOpen(false);
|
|
18
|
+
markTaskInProgress(displayedCwd, task.id);
|
|
19
|
+
refresh();
|
|
20
|
+
onStartTask(task.title, task.prompt, task.id);
|
|
21
|
+
}, [displayedCwd, onStartTask, refresh]);
|
|
22
|
+
const runAll = useCallback((task) => {
|
|
23
|
+
setOpen(false);
|
|
24
|
+
onRunAllTasksChange(true);
|
|
25
|
+
const selected = task
|
|
26
|
+
? { id: task.id, title: task.title, prompt: task.prompt || task.text || task.title }
|
|
27
|
+
: getNextPendingTask(displayedCwd);
|
|
28
|
+
if (!selected)
|
|
29
|
+
return;
|
|
30
|
+
markTaskInProgress(displayedCwd, selected.id);
|
|
31
|
+
refresh();
|
|
32
|
+
onStartTask(selected.title, selected.prompt, selected.id);
|
|
33
|
+
}, [displayedCwd, onRunAllTasksChange, onStartTask, refresh]);
|
|
34
|
+
const deleteTask = useCallback((task) => {
|
|
35
|
+
const nextTasks = loadTasksSync(displayedCwd).filter((candidate) => candidate.id !== task.id);
|
|
36
|
+
saveTasksSync(displayedCwd, nextTasks);
|
|
37
|
+
setTasks(nextTasks);
|
|
38
|
+
}, [displayedCwd]);
|
|
39
|
+
return { open, tasks, close, openPicker, toggle, start, runAll, deleteTask };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=useTaskPickerController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTaskPickerController.js","sourceRoot":"","sources":["../../../src/ui/hooks/useTaskPickerController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type SessionManager } from "../../core/session-manager.js";
|
|
2
|
+
import type { CompletedItem } from "../app-items.js";
|
|
3
|
+
import type { TerminalHistoryContext, TerminalHistoryPrinter } from "../terminal-history.js";
|
|
4
|
+
interface SessionStoreLike {
|
|
5
|
+
history?: CompletedItem[];
|
|
6
|
+
liveItems?: CompletedItem[];
|
|
7
|
+
}
|
|
8
|
+
interface UseTranscriptHistoryOptions {
|
|
9
|
+
terminalHistoryPrinter?: TerminalHistoryPrinter;
|
|
10
|
+
terminalHistoryContext: TerminalHistoryContext;
|
|
11
|
+
writeStdout: (data: string) => void;
|
|
12
|
+
sessionPathRef: React.RefObject<string | undefined>;
|
|
13
|
+
sessionManagerRef: React.RefObject<SessionManager | null>;
|
|
14
|
+
sessionStore?: SessionStoreLike;
|
|
15
|
+
history: readonly CompletedItem[];
|
|
16
|
+
setHistory: React.Dispatch<React.SetStateAction<CompletedItem[]>>;
|
|
17
|
+
setLiveItems: React.Dispatch<React.SetStateAction<CompletedItem[]>>;
|
|
18
|
+
}
|
|
19
|
+
interface UseTranscriptHistoryResult {
|
|
20
|
+
pendingHistoryFlushRef: React.RefObject<CompletedItem[]>;
|
|
21
|
+
streamedAssistantFlushRef: React.RefObject<{
|
|
22
|
+
flushedChars: number;
|
|
23
|
+
text: string;
|
|
24
|
+
}>;
|
|
25
|
+
printHistoryItems: (items: readonly CompletedItem[], options?: {
|
|
26
|
+
force?: boolean;
|
|
27
|
+
}) => void;
|
|
28
|
+
queueFlush: (items: CompletedItem[]) => void;
|
|
29
|
+
finalizeSubmittedUserItem: (item: CompletedItem) => void;
|
|
30
|
+
clearPendingHistory: () => void;
|
|
31
|
+
}
|
|
32
|
+
export declare function useTranscriptHistory({ terminalHistoryPrinter, terminalHistoryContext, writeStdout, sessionPathRef, sessionManagerRef, sessionStore, history, setHistory, setLiveItems, }: UseTranscriptHistoryOptions): UseTranscriptHistoryResult;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=useTranscriptHistory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranscriptHistory.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useTranscriptHistory.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAE7F,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,UAAU,2BAA2B;IACnC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAClE,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;CACrE;AAED,UAAU,0BAA0B;IAClC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;IACzD,yBAAyB,EAAE,KAAK,CAAC,SAAS,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,iBAAiB,EAAE,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5F,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAC7C,yBAAyB,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACzD,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,wBAAgB,oBAAoB,CAAC,EACnC,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,UAAU,EACV,YAAY,GACb,EAAE,2BAA2B,GAAG,0BAA0B,CAsG1D"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { DISPLAY_ITEM_CUSTOM_KIND } from "../../core/session-manager.js";
|
|
3
|
+
import { compactHistory } from "../item-helpers.js";
|
|
4
|
+
import { trimFlushedItems } from "../live-item-flush.js";
|
|
5
|
+
export function useTranscriptHistory({ terminalHistoryPrinter, terminalHistoryContext, writeStdout, sessionPathRef, sessionManagerRef, sessionStore, history, setHistory, setLiveItems, }) {
|
|
6
|
+
const terminalHistoryContextRef = useRef(terminalHistoryContext);
|
|
7
|
+
const pendingHistoryFlushRef = useRef([]);
|
|
8
|
+
const persistedDisplayItemIdsRef = useRef(new Set());
|
|
9
|
+
const streamedAssistantFlushRef = useRef({
|
|
10
|
+
flushedChars: 0,
|
|
11
|
+
text: "",
|
|
12
|
+
});
|
|
13
|
+
const [historyFlushGeneration, setHistoryFlushGeneration] = useState(0);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
terminalHistoryContextRef.current = terminalHistoryContext;
|
|
16
|
+
}, [terminalHistoryContext]);
|
|
17
|
+
const printHistoryItems = useCallback((items, options) => {
|
|
18
|
+
if (!terminalHistoryPrinter || items.length === 0)
|
|
19
|
+
return;
|
|
20
|
+
terminalHistoryPrinter.print(items, terminalHistoryContextRef.current, {
|
|
21
|
+
...options,
|
|
22
|
+
write: writeStdout,
|
|
23
|
+
});
|
|
24
|
+
}, [terminalHistoryPrinter, writeStdout]);
|
|
25
|
+
const queueFlush = useCallback((items) => {
|
|
26
|
+
const flushed = trimFlushedItems(items);
|
|
27
|
+
if (flushed.length === 0)
|
|
28
|
+
return;
|
|
29
|
+
pendingHistoryFlushRef.current = [...pendingHistoryFlushRef.current, ...flushed];
|
|
30
|
+
const sessionPath = sessionPathRef.current;
|
|
31
|
+
const sessionManager = sessionManagerRef.current;
|
|
32
|
+
if (sessionPath && sessionManager) {
|
|
33
|
+
for (const item of flushed) {
|
|
34
|
+
if (persistedDisplayItemIdsRef.current.has(item.id))
|
|
35
|
+
continue;
|
|
36
|
+
persistedDisplayItemIdsRef.current.add(item.id);
|
|
37
|
+
void sessionManager.appendEntry(sessionPath, {
|
|
38
|
+
type: "custom",
|
|
39
|
+
kind: DISPLAY_ITEM_CUSTOM_KIND,
|
|
40
|
+
data: { version: 1, item },
|
|
41
|
+
id: `display-${item.id}`,
|
|
42
|
+
parentId: null,
|
|
43
|
+
timestamp: new Date().toISOString(),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (sessionStore) {
|
|
48
|
+
const queuedIds = new Set(items.map((item) => item.id));
|
|
49
|
+
sessionStore.liveItems = (sessionStore.liveItems ?? []).filter((item) => !queuedIds.has(item.id));
|
|
50
|
+
}
|
|
51
|
+
setHistoryFlushGeneration((generation) => generation + 1);
|
|
52
|
+
}, [sessionManagerRef, sessionPathRef, sessionStore]);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
printHistoryItems(history);
|
|
55
|
+
}, [history, printHistoryItems]);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
const flushed = pendingHistoryFlushRef.current;
|
|
58
|
+
if (flushed.length === 0)
|
|
59
|
+
return;
|
|
60
|
+
pendingHistoryFlushRef.current = [];
|
|
61
|
+
printHistoryItems(flushed);
|
|
62
|
+
const flushedIds = new Set(flushed.map((item) => item.id));
|
|
63
|
+
setLiveItems((prev) => prev.filter((item) => !flushedIds.has(item.id)));
|
|
64
|
+
setHistory((prev) => {
|
|
65
|
+
const existingIds = new Set(prev.map((item) => item.id));
|
|
66
|
+
const nextItems = flushed.filter((item) => !existingIds.has(item.id));
|
|
67
|
+
if (nextItems.length === 0)
|
|
68
|
+
return prev;
|
|
69
|
+
const next = compactHistory([...prev, ...nextItems]);
|
|
70
|
+
if (sessionStore)
|
|
71
|
+
sessionStore.history = next;
|
|
72
|
+
return next;
|
|
73
|
+
});
|
|
74
|
+
}, [historyFlushGeneration, printHistoryItems, sessionStore, setHistory, setLiveItems]);
|
|
75
|
+
const finalizeSubmittedUserItem = useCallback((item) => {
|
|
76
|
+
streamedAssistantFlushRef.current = { flushedChars: 0, text: "" };
|
|
77
|
+
setLiveItems((prev) => {
|
|
78
|
+
if (prev.length > 0)
|
|
79
|
+
queueFlush(prev);
|
|
80
|
+
return [item];
|
|
81
|
+
});
|
|
82
|
+
}, [queueFlush, setLiveItems]);
|
|
83
|
+
const clearPendingHistory = useCallback(() => {
|
|
84
|
+
pendingHistoryFlushRef.current = [];
|
|
85
|
+
terminalHistoryPrinter?.clear();
|
|
86
|
+
}, [terminalHistoryPrinter]);
|
|
87
|
+
return {
|
|
88
|
+
pendingHistoryFlushRef,
|
|
89
|
+
streamedAssistantFlushRef,
|
|
90
|
+
printHistoryItems,
|
|
91
|
+
queueFlush,
|
|
92
|
+
finalizeSubmittedUserItem,
|
|
93
|
+
clearPendingHistory,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=useTranscriptHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranscriptHistory.js","sourceRoot":"","sources":["../../../src/ui/hooks/useTranscriptHistory.ts"],"names":[],"mappings":"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"}
|