@kenkaiiii/ggcoder 4.3.212 → 4.3.214
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 +5 -8
- package/dist/cli.d.ts +3 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +112 -61
- package/dist/cli.js.map +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 +2 -0
- package/dist/core/goal-controller.d.ts.map +1 -1
- package/dist/core/goal-controller.js +283 -24
- package/dist/core/goal-controller.js.map +1 -1
- package/dist/core/goal-controller.test.js +413 -16
- package/dist/core/goal-controller.test.js.map +1 -1
- package/dist/core/goal-lifecycle-smoke.test.js +48 -6
- package/dist/core/goal-lifecycle-smoke.test.js.map +1 -1
- package/dist/core/goal-prerequisites.d.ts +5 -0
- package/dist/core/goal-prerequisites.d.ts.map +1 -1
- package/dist/core/goal-prerequisites.js +37 -0
- package/dist/core/goal-prerequisites.js.map +1 -1
- package/dist/core/goal-prerequisites.test.js +29 -1
- package/dist/core/goal-prerequisites.test.js.map +1 -1
- package/dist/core/goal-references.d.ts +14 -0
- package/dist/core/goal-references.d.ts.map +1 -0
- package/dist/core/goal-references.js +153 -0
- package/dist/core/goal-references.js.map +1 -0
- package/dist/core/goal-references.test.d.ts +2 -0
- package/dist/core/goal-references.test.d.ts.map +1 -0
- package/dist/core/goal-references.test.js +77 -0
- package/dist/core/goal-references.test.js.map +1 -0
- package/dist/core/goal-store.d.ts +25 -0
- package/dist/core/goal-store.d.ts.map +1 -1
- package/dist/core/goal-store.js +150 -36
- package/dist/core/goal-store.js.map +1 -1
- package/dist/core/goal-store.test.js +19 -2
- 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 +33 -9
- package/dist/core/goal-worker.js.map +1 -1
- package/dist/core/goal-worker.test.js +49 -1
- package/dist/core/goal-worker.test.js.map +1 -1
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +28 -846
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/prompt-commands.test.js +40 -78
- package/dist/core/prompt-commands.test.js.map +1 -1
- package/dist/core/runtime-mode.d.ts +14 -0
- package/dist/core/runtime-mode.d.ts.map +1 -0
- package/dist/core/runtime-mode.js +10 -0
- package/dist/core/runtime-mode.js.map +1 -0
- 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 +100 -0
- package/dist/core/session-restore-display.test.js.map +1 -0
- package/dist/core/verify-commands.js +4 -4
- package/dist/core/verify-commands.js.map +1 -1
- package/dist/system-prompt.d.ts +2 -1
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +51 -37
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +147 -40
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/tools/bash.d.ts +3 -2
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +11 -4
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts +5 -3
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +14 -4
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/edit.test.js +0 -10
- package/dist/tools/edit.test.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 +15 -3
- package/dist/tools/goals.d.ts.map +1 -1
- package/dist/tools/goals.js +336 -26
- package/dist/tools/goals.js.map +1 -1
- package/dist/tools/goals.test.js +346 -6
- package/dist/tools/goals.test.js.map +1 -1
- package/dist/tools/index.d.ts +7 -10
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -19
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/plan-mode.test.js +34 -224
- 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 +2 -6
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/subagent.d.ts +3 -2
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +4 -9
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/write.d.ts +5 -3
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +14 -13
- 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 +145 -28
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +1153 -864
- 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-state-persistence.test.js +173 -5
- package/dist/ui/app-state-persistence.test.js.map +1 -1
- 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 +407 -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/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 +369 -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 +2 -4
- package/dist/ui/components/BackgroundTasksBar.js.map +1 -1
- package/dist/ui/components/Banner.d.ts +1 -3
- package/dist/ui/components/Banner.d.ts.map +1 -1
- package/dist/ui/components/Banner.js +7 -3
- package/dist/ui/components/Banner.js.map +1 -1
- package/dist/ui/components/Footer.d.ts +26 -4
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +73 -21
- package/dist/ui/components/Footer.js.map +1 -1
- 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/InputArea.d.ts +2 -6
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +40 -32
- 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/Markdown.d.ts +11 -11
- package/dist/ui/components/Markdown.d.ts.map +1 -1
- package/dist/ui/components/Markdown.js +25 -198
- package/dist/ui/components/Markdown.js.map +1 -1
- package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
- package/dist/ui/components/PlanOverlay.js +1 -1
- package/dist/ui/components/PlanOverlay.js.map +1 -1
- 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/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/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/ToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolExecution.js +11 -27
- package/dist/ui/components/ToolExecution.js.map +1 -1
- package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolGroupExecution.js +9 -124
- package/dist/ui/components/ToolGroupExecution.js.map +1 -1
- 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/footer-status-layout.test.js +21 -7
- package/dist/ui/footer-status-layout.test.js.map +1 -1
- package/dist/ui/goal-events.d.ts +13 -0
- package/dist/ui/goal-events.d.ts.map +1 -1
- package/dist/ui/goal-events.js +81 -16
- package/dist/ui/goal-events.js.map +1 -1
- package/dist/ui/goal-events.test.js +76 -2
- package/dist/ui/goal-events.test.js.map +1 -1
- package/dist/ui/goal-lifecycle-orchestration.test.js +131 -34
- package/dist/ui/goal-lifecycle-orchestration.test.js.map +1 -1
- package/dist/ui/goal-overlay.test.js +121 -43
- package/dist/ui/goal-overlay.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 +8 -2
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +20 -9
- 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/useTerminalSize.d.ts +5 -9
- package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalSize.js +9 -14
- package/dist/ui/hooks/useTerminalSize.js.map +1 -1
- 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/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/plan-overlay.test.js +7 -29
- package/dist/ui/plan-overlay.test.js.map +1 -1
- package/dist/ui/queued-message.test.d.ts.map +1 -1
- package/dist/ui/queued-message.test.js +76 -14
- package/dist/ui/queued-message.test.js.map +1 -1
- package/dist/ui/render.d.ts +21 -24
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +46 -28
- 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 -1
- package/dist/ui/scroll-stabilization.test.js.map +1 -1
- package/dist/ui/slash-command-images.test.js +79 -4
- package/dist/ui/slash-command-images.test.js.map +1 -1
- 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 +910 -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 +314 -0
- package/dist/ui/terminal-history.test.js.map +1 -0
- package/dist/ui/tool-group-summary.d.ts +16 -0
- package/dist/ui/tool-group-summary.d.ts.map +1 -0
- package/dist/ui/tool-group-summary.js +123 -0
- package/dist/ui/tool-group-summary.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 +243 -0
- package/dist/ui/tui-history-parity.test.js.map +1 -0
- package/dist/ui/utils/assistant-stream-split.d.ts +6 -0
- package/dist/ui/utils/assistant-stream-split.d.ts.map +1 -0
- package/dist/ui/utils/assistant-stream-split.js +37 -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 +58 -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/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 +0 -9
- package/dist/utils/format.js.map +1 -1
- package/package.json +9 -4
- package/dist/tools/enter-plan.d.ts +0 -8
- package/dist/tools/enter-plan.d.ts.map +0 -1
- package/dist/tools/enter-plan.js +0 -30
- package/dist/tools/enter-plan.js.map +0 -1
- package/dist/tools/exit-plan.d.ts +0 -8
- package/dist/tools/exit-plan.d.ts.map +0 -1
- package/dist/tools/exit-plan.js +0 -36
- package/dist/tools/exit-plan.js.map +0 -1
- package/dist/tools/tasks.d.ts +0 -16
- package/dist/tools/tasks.d.ts.map +0 -1
- package/dist/tools/tasks.js +0 -133
- package/dist/tools/tasks.js.map +0 -1
- package/dist/ui/components/EyesOverlay.d.ts +0 -10
- package/dist/ui/components/EyesOverlay.d.ts.map +0 -1
- package/dist/ui/components/EyesOverlay.js +0 -220
- package/dist/ui/components/EyesOverlay.js.map +0 -1
- package/dist/ui/components/TaskOverlay.d.ts +0 -10
- package/dist/ui/components/TaskOverlay.d.ts.map +0 -1
- package/dist/ui/components/TaskOverlay.js +0 -267
- package/dist/ui/components/TaskOverlay.js.map +0 -1
package/dist/ui/render.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ import type { Skill } from "../core/skills.js";
|
|
|
7
7
|
import { type CompletedItem, type DoneStatus } from "./App.js";
|
|
8
8
|
import type { GoalStatusEntry } from "./components/GoalStatusBar.js";
|
|
9
9
|
import type { PlanStep } from "../utils/plan-steps.js";
|
|
10
|
+
import type { GoalReference, GoalRun } from "../core/goal-store.js";
|
|
11
|
+
import type { GoalMode } from "../core/runtime-mode.js";
|
|
10
12
|
import { type ThemeName } from "./theme/theme.js";
|
|
11
13
|
export interface RenderAppConfig {
|
|
12
14
|
provider: Provider;
|
|
@@ -39,18 +41,15 @@ export interface RenderAppConfig {
|
|
|
39
41
|
settingsFile?: string;
|
|
40
42
|
mcpManager?: MCPClientManager;
|
|
41
43
|
authStorage?: AuthStorage;
|
|
42
|
-
|
|
43
|
-
current:
|
|
44
|
-
};
|
|
45
|
-
onEnterPlanRef?: {
|
|
46
|
-
current: (reason?: string) => void;
|
|
47
|
-
};
|
|
48
|
-
onExitPlanRef?: {
|
|
49
|
-
current: (planPath: string) => Promise<string>;
|
|
44
|
+
goalModeRef?: {
|
|
45
|
+
current: GoalMode;
|
|
50
46
|
};
|
|
51
47
|
skills?: Skill[];
|
|
52
48
|
initialOverlay?: "pixel" | "goal";
|
|
53
49
|
rebuildToolsForCwd?: (cwd: string) => AgentTool[];
|
|
50
|
+
goalReferencesRef?: {
|
|
51
|
+
current: readonly GoalReference[] | undefined;
|
|
52
|
+
};
|
|
54
53
|
repoMapChangedFilesRef?: {
|
|
55
54
|
current: Set<string>;
|
|
56
55
|
};
|
|
@@ -62,7 +61,7 @@ export interface RenderAppConfig {
|
|
|
62
61
|
* Session state that needs to survive unmount/remount for paths that
|
|
63
62
|
* KEEP the conversation (overlay close, plan reject) — and which we
|
|
64
63
|
* deliberately wipe for paths that start a fresh session (`/clear`,
|
|
65
|
-
* plan accept,
|
|
64
|
+
* plan accept, pixel fix).
|
|
66
65
|
*
|
|
67
66
|
* App.tsx mirrors its in-React state into this object via useEffects,
|
|
68
67
|
* so when `resetUI` rebuilds the Ink instance, the new App can re-seed
|
|
@@ -70,7 +69,7 @@ export interface RenderAppConfig {
|
|
|
70
69
|
* as our reset mechanism (the only thing that actually escapes Ink's
|
|
71
70
|
* cumulative live-area drift).
|
|
72
71
|
*/
|
|
73
|
-
type OverlayKind = "model" | "
|
|
72
|
+
type OverlayKind = "model" | "goal" | "skills" | "plan" | "theme" | "pixel" | null;
|
|
74
73
|
export interface SessionStore {
|
|
75
74
|
messages: Message[];
|
|
76
75
|
history: CompletedItem[];
|
|
@@ -83,14 +82,14 @@ export interface SessionStore {
|
|
|
83
82
|
sessionPath?: string;
|
|
84
83
|
sessionTitle?: string;
|
|
85
84
|
sessionTitleGenerated: boolean;
|
|
86
|
-
/** Which overlay (
|
|
85
|
+
/** Which overlay (Goal, Skills, Plan, Pixel, Theme, Model) is open. */
|
|
87
86
|
overlay?: OverlayKind;
|
|
88
87
|
/** Plan overlay auto-expand-newest flag (only meaningful when overlay==='plan'). */
|
|
89
88
|
planAutoExpand?: boolean;
|
|
90
89
|
/**
|
|
91
90
|
* Action to run on the next mount (consumed once). Used by paths that
|
|
92
91
|
* remount AND immediately drive the agent — plan accept / reject,
|
|
93
|
-
*
|
|
92
|
+
* pixel fix, etc. The new App reads this on mount, fires the agent,
|
|
94
93
|
* and clears the field.
|
|
95
94
|
*/
|
|
96
95
|
pendingAction?: {
|
|
@@ -103,6 +102,8 @@ export interface SessionStore {
|
|
|
103
102
|
detail?: string;
|
|
104
103
|
};
|
|
105
104
|
};
|
|
105
|
+
/** Goal run to activate immediately after a visual remount clears review scrollback. */
|
|
106
|
+
pendingGoalRun?: GoalRun;
|
|
106
107
|
/**
|
|
107
108
|
* True while the agent loop is running. Mirrored by App.tsx so renderApp's
|
|
108
109
|
* resize handler can skip the unmount/remount that would abort the agent
|
|
@@ -119,22 +120,15 @@ export interface SessionStore {
|
|
|
119
120
|
*/
|
|
120
121
|
pendingResetUI?: boolean;
|
|
121
122
|
/**
|
|
122
|
-
*
|
|
123
|
-
* (
|
|
124
|
-
*
|
|
125
|
-
* the onDone callback's auto-chain check (`if (runAllTasksRef.current)`)
|
|
126
|
-
* is always false on the second task onward.
|
|
127
|
-
*/
|
|
128
|
-
runAllTasks?: boolean;
|
|
129
|
-
/**
|
|
130
|
-
* Same pattern as `runAllTasks` — pixel fix auto-chaining flag. Survives
|
|
131
|
-
* the deferred resetUI() that may fire when the agent goes idle (e.g.
|
|
132
|
-
* after a pane was toggled mid-fix). Without this, the second fix
|
|
133
|
-
* onward loses the chaining intent.
|
|
123
|
+
* Pixel fix auto-chaining flag. Survives the deferred resetUI() that may
|
|
124
|
+
* fire when the agent goes idle (e.g. after a pane was toggled mid-fix).
|
|
125
|
+
* Without this, the second fix onward loses the chaining intent.
|
|
134
126
|
*/
|
|
135
127
|
runAllPixel?: boolean;
|
|
136
128
|
/** Active goal status bar entries. Preserved across Goal pane open/close remounts. */
|
|
137
129
|
goalStatusEntries?: GoalStatusEntry[];
|
|
130
|
+
/** Goal orchestration mode display state. */
|
|
131
|
+
goalMode?: GoalMode;
|
|
138
132
|
}
|
|
139
133
|
export interface ResetUIOptions {
|
|
140
134
|
/** Replace messages entirely (e.g. fresh system prompt for `/clear` or plan accept). */
|
|
@@ -149,6 +143,8 @@ export interface ResetUIOptions {
|
|
|
149
143
|
planSteps?: PlanStep[];
|
|
150
144
|
/** Override session path (e.g. plan accept creates a new session file). */
|
|
151
145
|
sessionPath?: string;
|
|
146
|
+
/** Clear malformed live frames after terminal resize and redraw durable history. */
|
|
147
|
+
resizeRedraw?: boolean;
|
|
152
148
|
/** Action to fire on the new mount (info banner + agent prompt). */
|
|
153
149
|
pendingAction?: {
|
|
154
150
|
prompt: string;
|
|
@@ -161,6 +157,7 @@ export interface ResetUIOptions {
|
|
|
161
157
|
};
|
|
162
158
|
};
|
|
163
159
|
}
|
|
160
|
+
export declare function getResetClearMode(options: Pick<ResetUIOptions, "wipeSession" | "history" | "resizeRedraw"> | undefined): "screen" | "viewport";
|
|
164
161
|
export declare function renderApp(config: RenderAppConfig): Promise<void>;
|
|
165
162
|
export {};
|
|
166
163
|
//# sourceMappingURL=render.d.ts.map
|
package/dist/ui/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/ui/render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAO,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/ui/render.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/render.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { render } from "ink";
|
|
3
3
|
import { App } from "./App.js";
|
|
4
|
+
import { createTerminalHistoryPrinter } from "./terminal-history.js";
|
|
4
5
|
import { shutdownGoalWorkers } from "../core/goal-worker.js";
|
|
5
6
|
import { ThemeContext, SetThemeContext, loadTheme } from "./theme/theme.js";
|
|
6
7
|
import { detectTheme } from "./theme/detect-theme.js";
|
|
@@ -40,6 +41,10 @@ const INK_OPTIONS = {
|
|
|
40
41
|
const DISABLE_MODIFY_OTHER_KEYS = "\x1b[>4;0m";
|
|
41
42
|
const DISABLE_FOCUS_REPORTING = "\x1b[?1004l";
|
|
42
43
|
const SCREEN_CLEAR = DISABLE_MODIFY_OTHER_KEYS + "\x1b[2J\x1b[3J\x1b[H";
|
|
44
|
+
const VIEWPORT_CLEAR = DISABLE_MODIFY_OTHER_KEYS + "\x1b[2J\x1b[H";
|
|
45
|
+
export function getResetClearMode(options) {
|
|
46
|
+
return options?.wipeSession || options?.history || options?.resizeRedraw ? "screen" : "viewport";
|
|
47
|
+
}
|
|
43
48
|
export async function renderApp(config) {
|
|
44
49
|
const themeSetting = config.theme ?? "auto";
|
|
45
50
|
const resolvedTheme = themeSetting === "auto" ? await detectTheme() : themeSetting;
|
|
@@ -86,8 +91,11 @@ export async function renderApp(config) {
|
|
|
86
91
|
overlay: config.initialOverlay ?? null,
|
|
87
92
|
planAutoExpand: false,
|
|
88
93
|
pendingAction: undefined,
|
|
94
|
+
pendingGoalRun: undefined,
|
|
89
95
|
goalStatusEntries: [],
|
|
96
|
+
goalMode: config.goalModeRef?.current ?? "off",
|
|
90
97
|
};
|
|
98
|
+
const terminalHistoryPrinter = createTerminalHistoryPrinter();
|
|
91
99
|
const ref = { instance: null };
|
|
92
100
|
const buildElement = () => React.createElement(ThemeProvider, { initial: resolvedTheme }, React.createElement(TerminalSizeProvider, { isAgentRunning: () => !!sessionStore.isAgentRunning }, React.createElement(AnimationProvider, null, React.createElement(App, {
|
|
93
101
|
provider: runtimeState.provider,
|
|
@@ -114,26 +122,21 @@ export async function renderApp(config) {
|
|
|
114
122
|
settingsFile: config.settingsFile,
|
|
115
123
|
mcpManager: config.mcpManager,
|
|
116
124
|
authStorage: config.authStorage,
|
|
117
|
-
|
|
118
|
-
onEnterPlanRef: config.onEnterPlanRef,
|
|
119
|
-
onExitPlanRef: config.onExitPlanRef,
|
|
125
|
+
goalModeRef: config.goalModeRef,
|
|
120
126
|
skills: config.skills,
|
|
121
127
|
initialOverlay: config.initialOverlay,
|
|
122
128
|
rebuildToolsForCwd: config.rebuildToolsForCwd,
|
|
129
|
+
goalReferencesRef: config.goalReferencesRef,
|
|
123
130
|
repoMapChangedFilesRef: config.repoMapChangedFilesRef,
|
|
124
131
|
repoMapReadFilesRef: config.repoMapReadFilesRef,
|
|
132
|
+
terminalHistoryPrinter,
|
|
125
133
|
resetUI,
|
|
126
134
|
onRuntimeStateChange,
|
|
127
135
|
sessionStore,
|
|
128
136
|
}))));
|
|
129
|
-
// Nuke-and-rebuild
|
|
130
|
-
//
|
|
131
|
-
//
|
|
132
|
-
// drifts on subsequent streaming responses — Ink's cursor math depends on
|
|
133
|
-
// terminal-state assumptions that ANSI clearing breaks. The only RELIABLE
|
|
134
|
-
// reset is to tear down the React tree entirely, clear after Ink has flushed
|
|
135
|
-
// its teardown frame, and then render a fresh Ink instance. gg-boss arrived
|
|
136
|
-
// at the same conclusion (orchestrator-app.tsx).
|
|
137
|
+
// Nuke-and-rebuild paths tear down the React tree and render a fresh Ink
|
|
138
|
+
// instance. Non-wipe remounts clear only the live viewport while preserving
|
|
139
|
+
// real terminal scrollback; fresh sessions clear screen + scrollback intentionally.
|
|
137
140
|
function resetUI(options) {
|
|
138
141
|
const old = ref.instance;
|
|
139
142
|
if (!old)
|
|
@@ -142,6 +145,7 @@ export async function renderApp(config) {
|
|
|
142
145
|
// Wipe everything session-scoped FIRST. Other options below can then
|
|
143
146
|
// re-seed specific fields (e.g. plan accept wipes the chat then sets
|
|
144
147
|
// approvedPlanPath + planSteps for the implementation phase).
|
|
148
|
+
terminalHistoryPrinter.clear();
|
|
145
149
|
sessionStore.history = [{ kind: "banner", id: "banner" }];
|
|
146
150
|
sessionStore.liveItems = [];
|
|
147
151
|
sessionStore.doneStatus = null;
|
|
@@ -150,11 +154,15 @@ export async function renderApp(config) {
|
|
|
150
154
|
sessionStore.sessionTitle = undefined;
|
|
151
155
|
sessionStore.sessionTitleGenerated = false;
|
|
152
156
|
sessionStore.goalStatusEntries = [];
|
|
157
|
+
if (config.goalReferencesRef)
|
|
158
|
+
config.goalReferencesRef.current = undefined;
|
|
153
159
|
}
|
|
154
160
|
if (options?.messages)
|
|
155
161
|
sessionStore.messages = options.messages;
|
|
156
|
-
if (options?.history)
|
|
162
|
+
if (options?.history) {
|
|
163
|
+
terminalHistoryPrinter.clear();
|
|
157
164
|
sessionStore.history = options.history;
|
|
165
|
+
}
|
|
158
166
|
if (options?.approvedPlanPath !== undefined) {
|
|
159
167
|
sessionStore.approvedPlanPath = options.approvedPlanPath;
|
|
160
168
|
}
|
|
@@ -165,20 +173,32 @@ export async function renderApp(config) {
|
|
|
165
173
|
if (options?.pendingAction)
|
|
166
174
|
sessionStore.pendingAction = options.pendingAction;
|
|
167
175
|
old.unmount();
|
|
168
|
-
|
|
176
|
+
if (options?.resizeRedraw) {
|
|
177
|
+
terminalHistoryPrinter.resetPrinted();
|
|
178
|
+
}
|
|
179
|
+
// Resize can leave log-update frames at the old width in the visible viewport.
|
|
180
|
+
// Repaint the durable transcript after a full clear so messages don't appear
|
|
181
|
+
// to vanish on maximize and old input/status frames don't stack as duplicates.
|
|
182
|
+
// Other non-wipe remounts keep scrollback and only clear the live viewport.
|
|
183
|
+
process.stdout.write(getResetClearMode(options) === "screen" ? SCREEN_CLEAR : VIEWPORT_CLEAR);
|
|
184
|
+
if (options?.resizeRedraw && sessionStore.history.length > 0) {
|
|
185
|
+
terminalHistoryPrinter.print(sessionStore.history, {
|
|
186
|
+
theme: loadTheme(resolvedTheme),
|
|
187
|
+
columns: Math.max(40, process.stdout.columns ?? 80),
|
|
188
|
+
version: config.version,
|
|
189
|
+
model: runtimeState.model,
|
|
190
|
+
provider: runtimeState.provider,
|
|
191
|
+
cwd: config.cwd,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
169
194
|
ref.instance = render(buildElement(), INK_OPTIONS);
|
|
170
195
|
}
|
|
171
196
|
ref.instance = render(buildElement(), INK_OPTIONS);
|
|
172
|
-
// Terminal resize → full unmount/remount.
|
|
173
|
-
//
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
//
|
|
177
|
-
// of the viewport with new chat lines disappearing off-screen. Same
|
|
178
|
-
// symptom /clear hit; same fix — tear down the React tree and start
|
|
179
|
-
// fresh. Debounced 250ms (shorter than the hook's 300ms) so resetUI wins
|
|
180
|
-
// the race; the hook's pending timer is cancelled by its own useEffect
|
|
181
|
-
// cleanup when the old instance unmounts.
|
|
197
|
+
// Terminal resize → full unmount/remount. Completed transcript rows are real
|
|
198
|
+
// terminal output now, so resetUI() only rebuilds the live Ink controls unless
|
|
199
|
+
// a fresh-session path asked to wipe scrollback. Debounced 250ms (shorter than
|
|
200
|
+
// the hook's 300ms) so resetUI wins the race; the hook's pending timer is
|
|
201
|
+
// cancelled by its own useEffect cleanup when the old instance unmounts.
|
|
182
202
|
let resizeTimer = null;
|
|
183
203
|
const onTerminalResize = () => {
|
|
184
204
|
if (resizeTimer)
|
|
@@ -187,16 +207,14 @@ export async function renderApp(config) {
|
|
|
187
207
|
resizeTimer = null;
|
|
188
208
|
// While the agent is running, the full unmount/remount would fire
|
|
189
209
|
// useAgentLoop's cleanup and abort the in-flight request — so the
|
|
190
|
-
// agent dies on maximize. Skip the unmount in that case
|
|
191
|
-
// useTerminalSize already clears the screen and bumps resizeKey so
|
|
192
|
-
// <Static> remounts and re-prints the full history. Flag
|
|
210
|
+
// agent dies on maximize. Skip the unmount in that case. Flag
|
|
193
211
|
// pendingResetUI so App.tsx fires a deferred resetUI the moment the
|
|
194
|
-
// agent goes idle, fixing any
|
|
212
|
+
// agent goes idle, fixing any live-area drift that accumulated.
|
|
195
213
|
if (sessionStore.isAgentRunning) {
|
|
196
214
|
sessionStore.pendingResetUI = true;
|
|
197
215
|
return;
|
|
198
216
|
}
|
|
199
|
-
resetUI();
|
|
217
|
+
resetUI({ resizeRedraw: true });
|
|
200
218
|
}, 250);
|
|
201
219
|
};
|
|
202
220
|
process.stdout.on("resize", onTerminalResize);
|
package/dist/ui/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/ui/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAgC,MAAM,KAAK,CAAC;AAO3D,OAAO,EAAE,GAAG,EAAuC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/ui/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAgC,MAAM,KAAK,CAAC;AAO3D,OAAO,EAAE,GAAG,EAAuC,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAuJlE,mFAAmF;AACnF,SAAS,aAAa,CAAC,EACrB,OAAO,EACP,QAAQ,GAGR;IACA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhF,OAAO,KAAK,CAAC,aAAa,CACxB,eAAe,CAAC,QAAQ,EACxB,EAAE,KAAK,EAAE,QAAQ,EAAE,EACnB,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,kEAAkE;IAClE,mEAAmE;IACnE,oDAAoD;IACpD,aAAa,EAAE;QACb,IAAI,EAAE,SAAkB;QACxB,KAAK,EAAE,CAAC,yBAAkC,CAAC;KAC5C;IACD,oEAAoE;IACpE,oEAAoE;IACpE,gEAAgE;IAChE,mEAAmE;IACnE,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF,gFAAgF;AAChF,uEAAuE;AACvE,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,wEAAwE;AACxE,gFAAgF;AAChF,uEAAuE;AACvE,4EAA4E;AAC5E,oCAAoC;AACpC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAC/C,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAC9C,MAAM,YAAY,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;AACxE,MAAM,cAAc,GAAG,yBAAyB,GAAG,eAAe,CAAC;AAEnE,MAAM,UAAU,iBAAiB,CAC/B,OAAqF;IAErF,OAAO,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;AACnG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAuB;IACrD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;IAC5C,MAAM,aAAa,GAAG,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAEnF,wEAAwE;IACxE,iEAAiE;IACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEnC,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,aAAa,GAAG,GAAS,EAAE;QAC/B,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,uBAAuB,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAElC,sEAAsE;IACtE,sDAAsD;IACtD,MAAM,YAAY,GAAiB;QACjC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,OAA8B,EAAQ,EAAE;QACpE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,sEAAsE;IACtE,sEAAsE;IACtE,mCAAmC;IACnC,MAAM,YAAY,GAAiB;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;QACpE,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,IAAI;QAChB,gBAAgB,EAAE,SAAS;QAC3B,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,SAAS;QACvB,qBAAqB,EAAE,KAAK;QAC5B,OAAO,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;QACtC,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,SAAS;QACzB,iBAAiB,EAAE,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,IAAI,KAAK;KAC/C,CAAC;IAEF,MAAM,sBAAsB,GAAG,4BAA4B,EAAE,CAAC;IAC9D,MAAM,GAAG,GAAqC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEjE,MAAM,YAAY,GAAG,GAAuB,EAAE,CAC5C,KAAK,CAAC,aAAa,CACjB,aAAa,EACb,EAAE,OAAO,EAAE,aAAa,EAAE,EAC1B,KAAK,CAAC,aAAa,CACjB,oBAAoB,EACpB,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,EACvD,KAAK,CAAC,aAAa,CACjB,iBAAiB,EACjB,IAAI,EACJ,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACvB,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,cAAc,EAAE,YAAY,CAAC,OAAO;QACpC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;QACrD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,sBAAsB;QACtB,OAAO;QACP,oBAAoB;QACpB,YAAY;KACb,CAAC,CACH,CACF,CACF,CAAC;IAEJ,yEAAyE;IACzE,4EAA4E;IAC5E,oFAAoF;IACpF,SAAS,OAAO,CAAC,OAAwB;QACvC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC;QACzB,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;YACzB,qEAAqE;YACrE,qEAAqE;YACrE,8DAA8D;YAC9D,sBAAsB,CAAC,KAAK,EAAE,CAAC;YAC/B,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1D,YAAY,CAAC,SAAS,GAAG,EAAE,CAAC;YAC5B,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;YAC/B,YAAY,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAC1C,YAAY,CAAC,SAAS,GAAG,EAAE,CAAC;YAC5B,YAAY,CAAC,YAAY,GAAG,SAAS,CAAC;YACtC,YAAY,CAAC,qBAAqB,GAAG,KAAK,CAAC;YAC3C,YAAY,CAAC,iBAAiB,GAAG,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,iBAAiB;gBAAE,MAAM,CAAC,iBAAiB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC7E,CAAC;QACD,IAAI,OAAO,EAAE,QAAQ;YAAE,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAChE,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,sBAAsB,CAAC,KAAK,EAAE,CAAC;YAC/B,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACzC,CAAC;QACD,IAAI,OAAO,EAAE,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC5C,YAAY,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAC3D,CAAC;QACD,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS;YAAE,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACjF,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS;YAAE,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvF,IAAI,OAAO,EAAE,aAAa;YAAE,YAAY,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAE/E,GAAG,CAAC,OAAO,EAAE,CAAC;QACd,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,sBAAsB,CAAC,YAAY,EAAE,CAAC;QACxC,CAAC;QACD,+EAA+E;QAC/E,6EAA6E;QAC7E,+EAA+E;QAC/E,4EAA4E;QAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC9F,IAAI,OAAO,EAAE,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE;gBACjD,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC;gBAC/B,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnD,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;QACD,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;IAEnD,6EAA6E;IAC7E,+EAA+E;IAC/E,+EAA+E;IAC/E,0EAA0E;IAC1E,yEAAyE;IACzE,IAAI,WAAW,GAAyC,IAAI,CAAC;IAC7D,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAClC,IAAI,WAAW;YAAE,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3C,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,WAAW,GAAG,IAAI,CAAC;YACnB,kEAAkE;YAClE,kEAAkE;YAClE,8DAA8D;YAC9D,oEAAoE;YACpE,gEAAgE;YAChE,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;gBAChC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAE9C,wEAAwE;IACxE,mEAAmE;IACnE,uEAAuE;IACvE,gCAAgC;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,OAAO,GAAuB,GAAG,CAAC,QAAQ,CAAC;YACjD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC7B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC/C,IAAI,WAAW;YAAE,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,qEAAqE;QACrE,sEAAsE;QACtE,+BAA+B;QAC/B,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,uBAAuB,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,UAAU;QACZ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.test.d.ts","sourceRoot":"","sources":["../../src/ui/render.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { getResetClearMode } from "./render.js";
|
|
3
|
+
describe("getResetClearMode", () => {
|
|
4
|
+
it("uses a full screen redraw for terminal resize remounts", () => {
|
|
5
|
+
expect(getResetClearMode({ resizeRedraw: true })).toBe("screen");
|
|
6
|
+
});
|
|
7
|
+
it("keeps ordinary overlay remounts to a viewport clear", () => {
|
|
8
|
+
expect(getResetClearMode(undefined)).toBe("viewport");
|
|
9
|
+
expect(getResetClearMode({})).toBe("viewport");
|
|
10
|
+
});
|
|
11
|
+
it("uses a full screen redraw for explicit session/history replacement", () => {
|
|
12
|
+
expect(getResetClearMode({ wipeSession: true })).toBe("screen");
|
|
13
|
+
expect(getResetClearMode({ history: [{ kind: "banner", id: "banner" }] })).toBe("screen");
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=render.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.test.js","sourceRoot":"","sources":["../../src/ui/render.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -62,7 +62,7 @@ describe("getScrollStabilizationDecision", () => {
|
|
|
62
62
|
});
|
|
63
63
|
it("identifies long polling overlay panes that need rerender stabilization while an agent runs", () => {
|
|
64
64
|
expect(shouldStabilizeOverlayPaneRerender({ overlayPane: "goal", isAgentRunning: true })).toBe(true);
|
|
65
|
-
expect(shouldStabilizeOverlayPaneRerender({ overlayPane: "plan", isAgentRunning: true })).toBe(
|
|
65
|
+
expect(shouldStabilizeOverlayPaneRerender({ overlayPane: "plan", isAgentRunning: true })).toBe(false);
|
|
66
66
|
expect(shouldStabilizeOverlayPaneRerender({ overlayPane: "skills", isAgentRunning: true })).toBe(false);
|
|
67
67
|
expect(shouldStabilizeOverlayPaneRerender({ overlayPane: "goal", isAgentRunning: false })).toBe(false);
|
|
68
68
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-stabilization.test.js","sourceRoot":"","sources":["../../src/ui/scroll-stabilization.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scroll-stabilization.test.js","sourceRoot":"","sources":["../../src/ui/scroll-stabilization.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { buildUserContentWithAttachments, routePromptCommandInput } from "./App.js";
|
|
2
|
+
import { buildGoalSetupPromptFromPlanner, buildUserContentWithAttachments, collectAssistantTextSince, isGoalPromptCommandName, routePromptCommandInput, runGoalPromptSetupSequence, } from "./App.js";
|
|
3
3
|
describe("prompt-template slash commands with attachments", () => {
|
|
4
|
-
it("routes /goal input to a
|
|
4
|
+
it("routes /goal input to a short setup wrapper containing user args", () => {
|
|
5
5
|
const route = routePromptCommandInput("/goal do X");
|
|
6
6
|
expect(route).not.toBeNull();
|
|
7
7
|
expect(route?.cmdName).toBe("goal");
|
|
@@ -9,8 +9,10 @@ describe("prompt-template slash commands with attachments", () => {
|
|
|
9
9
|
expect(route?.fullPrompt).toContain(route?.promptText);
|
|
10
10
|
expect(route?.fullPrompt).toContain("## User Instructions");
|
|
11
11
|
expect(route?.fullPrompt).toContain("do X");
|
|
12
|
-
expect(route?.fullPrompt).toContain("
|
|
13
|
-
expect(route?.fullPrompt).toContain("
|
|
12
|
+
expect(route?.fullPrompt).toContain("First plan/research only if needed");
|
|
13
|
+
expect(route?.fullPrompt).toContain("Goal setup will consume that plan");
|
|
14
|
+
expect(route?.fullPrompt).not.toContain("Completion means verifier evidence satisfies");
|
|
15
|
+
expect(route?.fullPrompt.length).toBeLessThan(600);
|
|
14
16
|
});
|
|
15
17
|
it("routes /goal markdown and multiline text without losing rendered edge cases", () => {
|
|
16
18
|
const args = "prove **bold** UI renders\n- keep `code` text\n- wrap very long labels";
|
|
@@ -20,6 +22,79 @@ describe("prompt-template slash commands with attachments", () => {
|
|
|
20
22
|
expect(route?.fullPrompt).toContain("**bold** UI renders");
|
|
21
23
|
expect(route?.fullPrompt).toContain("`code` text");
|
|
22
24
|
});
|
|
25
|
+
it("routes /g alias through the same short Goal setup wrapper", () => {
|
|
26
|
+
const route = routePromptCommandInput("/g prove the release flow");
|
|
27
|
+
expect(route).toMatchObject({ cmdName: "g", cmdArgs: "prove the release flow" });
|
|
28
|
+
expect(route?.fullPrompt).toContain("Create a Goal run for the following objective");
|
|
29
|
+
expect(route?.fullPrompt).toContain("First plan/research only if needed");
|
|
30
|
+
expect(route?.fullPrompt).toContain("## User Instructions\n\nprove the release flow");
|
|
31
|
+
expect(route?.fullPrompt).not.toContain("## Plan Mode (ACTIVE)");
|
|
32
|
+
});
|
|
33
|
+
it("detects /goal and /g as Goal setup commands", () => {
|
|
34
|
+
expect(isGoalPromptCommandName("goal")).toBe(true);
|
|
35
|
+
expect(isGoalPromptCommandName("g")).toBe(true);
|
|
36
|
+
expect(isGoalPromptCommandName("goals")).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
it("does not route /goals as /goal", () => {
|
|
39
|
+
expect(routePromptCommandInput("/goals do X")).toBeNull();
|
|
40
|
+
});
|
|
41
|
+
it("collects compact assistant planner output since a message index", () => {
|
|
42
|
+
const text = collectAssistantTextSince([
|
|
43
|
+
{ role: "system", content: "system" },
|
|
44
|
+
{ role: "assistant", content: "old" },
|
|
45
|
+
{ role: "user", content: "planner prompt" },
|
|
46
|
+
{ role: "assistant", content: "GOAL_PLAN\nresearch=none\nEND_GOAL_PLAN" },
|
|
47
|
+
], 2);
|
|
48
|
+
expect(text).toBe("GOAL_PLAN\nresearch=none\nEND_GOAL_PLAN");
|
|
49
|
+
});
|
|
50
|
+
it("truncates collected planner output before setup embedding", () => {
|
|
51
|
+
const text = collectAssistantTextSince([{ role: "assistant", content: "x".repeat(20) }], 0, 8);
|
|
52
|
+
expect(text).toBe("xxxxxxxx\n[planner output truncated]");
|
|
53
|
+
});
|
|
54
|
+
it("builds setup prompt with planner output embedded once", () => {
|
|
55
|
+
const prompt = buildGoalSetupPromptFromPlanner({
|
|
56
|
+
originalGoalPrompt: "Create a Goal run\n\n## User Instructions\n\ndo X",
|
|
57
|
+
plannerOutput: "GOAL_PLAN\nresearch=docs\nproof=run tests\nEND_GOAL_PLAN",
|
|
58
|
+
});
|
|
59
|
+
expect(prompt).toContain("Create a Goal run");
|
|
60
|
+
expect(prompt).toContain("## User Instructions\n\ndo X");
|
|
61
|
+
expect(prompt.match(/## Goal Planner Output/g)).toHaveLength(1);
|
|
62
|
+
expect(prompt.match(/^GOAL_PLAN$/gm)).toHaveLength(1);
|
|
63
|
+
expect(prompt).toContain("Use the original objective plus this planner output");
|
|
64
|
+
expect(prompt).toContain("create durable Goal setup only");
|
|
65
|
+
});
|
|
66
|
+
it("runs /goal in planner then setup order with planner output handed off", async () => {
|
|
67
|
+
const events = [];
|
|
68
|
+
const messagesRef = {
|
|
69
|
+
current: [
|
|
70
|
+
{ role: "system", content: "system" },
|
|
71
|
+
{ role: "user", content: "before goal" },
|
|
72
|
+
],
|
|
73
|
+
};
|
|
74
|
+
await runGoalPromptSetupSequence({
|
|
75
|
+
userContent: "Create a Goal run\n\n## User Instructions\n\ndo X",
|
|
76
|
+
fullPrompt: "Create a Goal run\n\n## User Instructions\n\ndo X",
|
|
77
|
+
messagesRef,
|
|
78
|
+
async setGoalModeAndPrompt(nextMode) {
|
|
79
|
+
events.push(`mode:${nextMode}`);
|
|
80
|
+
},
|
|
81
|
+
async runAgent(content) {
|
|
82
|
+
events.push(`run:${typeof content === "string" ? content : "multimodal"}`);
|
|
83
|
+
if (events.at(-2) === "mode:planner") {
|
|
84
|
+
messagesRef.current.push({
|
|
85
|
+
role: "assistant",
|
|
86
|
+
content: "GOAL_PLAN\nresearch=none\nproof=goal verifier\nEND_GOAL_PLAN",
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
expect(events[0]).toBe("mode:planner");
|
|
92
|
+
expect(events[1]).toContain("run:Create a Goal run");
|
|
93
|
+
expect(events[2]).toBe("mode:setup");
|
|
94
|
+
expect(events[3]).toContain("## Goal Planner Output");
|
|
95
|
+
expect(events[3]).toContain("GOAL_PLAN\nresearch=none\nproof=goal verifier\nEND_GOAL_PLAN");
|
|
96
|
+
expect(events[3]).toContain("create durable Goal setup only");
|
|
97
|
+
});
|
|
23
98
|
it("builds multimodal user content with the full prompt text and image block", () => {
|
|
24
99
|
const fullPrompt = "Goal command prompt\n\n## User Instructions\n\ndo X";
|
|
25
100
|
const imageAttachment = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slash-command-images.test.js","sourceRoot":"","sources":["../../src/ui/slash-command-images.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"slash-command-images.test.js","sourceRoot":"","sources":["../../src/ui/slash-command-images.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Provider } from "@kenkaiiii/gg-ai";
|
|
2
|
+
import type { CompletedItem } from "./App.js";
|
|
3
|
+
import type { Theme } from "./theme/theme.js";
|
|
4
|
+
export interface TerminalHistoryPrinter {
|
|
5
|
+
print(items: readonly CompletedItem[], context: TerminalHistoryContext, options?: {
|
|
6
|
+
force?: boolean;
|
|
7
|
+
write?: (data: string) => void;
|
|
8
|
+
}): void;
|
|
9
|
+
clear(): void;
|
|
10
|
+
resetPrinted(): void;
|
|
11
|
+
readonly printedIds: ReadonlySet<string>;
|
|
12
|
+
}
|
|
13
|
+
export interface TerminalHistoryPrinterOptions {
|
|
14
|
+
stream?: NodeJS.WriteStream;
|
|
15
|
+
}
|
|
16
|
+
export interface TerminalHistoryContext {
|
|
17
|
+
theme: Theme;
|
|
18
|
+
columns: number;
|
|
19
|
+
version: string;
|
|
20
|
+
model: string;
|
|
21
|
+
provider: Provider;
|
|
22
|
+
cwd: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function createTerminalHistoryPrinter({ stream, }?: TerminalHistoryPrinterOptions): TerminalHistoryPrinter;
|
|
25
|
+
export declare function serializeCompletedItemToTerminalHistory(item: CompletedItem, context: TerminalHistoryContext): string;
|
|
26
|
+
//# sourceMappingURL=terminal-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-history.d.ts","sourceRoot":"","sources":["../../src/ui/terminal-history.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAmC9C,MAAM,WAAW,sBAAsB;IACrC,KAAK,CACH,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,OAAO,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,GAC5D,IAAI,CAAC;IACR,KAAK,IAAI,IAAI,CAAC;IACd,YAAY,IAAI,IAAI,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAyBD,wBAAgB,4BAA4B,CAAC,EAC3C,MAAuB,GACxB,GAAE,6BAAkC,GAAG,sBAAsB,CAoC7D;AAED,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAsHR"}
|