@kenkaiiii/ggcoder 4.3.232 → 4.3.234
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 +1 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -89
- package/dist/cli.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +8 -16
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/prompt-commands.test.js +14 -44
- package/dist/core/prompt-commands.test.js.map +1 -1
- package/dist/core/runtime-mode.d.ts +0 -11
- package/dist/core/runtime-mode.d.ts.map +1 -1
- package/dist/core/runtime-mode.js +0 -9
- package/dist/core/runtime-mode.js.map +1 -1
- package/dist/core/session-restore-display.test.js +4 -110
- package/dist/core/session-restore-display.test.js.map +1 -1
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +1 -1
- package/dist/interactive.js.map +1 -1
- package/dist/system-prompt.d.ts +1 -2
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +11 -58
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +3 -158
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/tools/bash.d.ts +1 -4
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +3 -12
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/checkpoint-hook.test.js +3 -3
- package/dist/tools/checkpoint-hook.test.js.map +1 -1
- package/dist/tools/edit.d.ts +1 -4
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +5 -13
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/enter-plan.js +1 -1
- package/dist/tools/enter-plan.js.map +1 -1
- package/dist/tools/index.d.ts +0 -9
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/prompt-hints.d.ts.map +1 -1
- package/dist/tools/prompt-hints.js +0 -2
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/screenshot.d.ts +1 -1
- package/dist/tools/subagent.d.ts +1 -4
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +2 -5
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/write.d.ts +1 -4
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +5 -13
- package/dist/tools/write.js.map +1 -1
- package/dist/ui/App.d.ts +5 -20
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +134 -309
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/app-items.d.ts +23 -25
- package/dist/ui/app-items.d.ts.map +1 -1
- package/dist/ui/app-items.js +37 -0
- package/dist/ui/app-items.js.map +1 -1
- package/dist/ui/app-items.test.d.ts +2 -0
- package/dist/ui/app-items.test.d.ts.map +1 -0
- package/dist/ui/app-items.test.js +38 -0
- package/dist/ui/app-items.test.js.map +1 -0
- package/dist/ui/app-state-persistence.test.js +14 -318
- package/dist/ui/app-state-persistence.test.js.map +1 -1
- package/dist/ui/chat-layout-pinning.test.js +74 -4
- package/dist/ui/chat-layout-pinning.test.js.map +1 -1
- package/dist/ui/components/AssistantMessage.test.js +6 -9
- package/dist/ui/components/AssistantMessage.test.js.map +1 -1
- package/dist/ui/components/Banner.js +1 -1
- package/dist/ui/components/Banner.js.map +1 -1
- package/dist/ui/components/ChatFooterPane.d.ts +1 -5
- package/dist/ui/components/ChatFooterPane.d.ts.map +1 -1
- package/dist/ui/components/ChatFooterPane.js +3 -4
- package/dist/ui/components/ChatFooterPane.js.map +1 -1
- package/dist/ui/components/ChatInputStack.d.ts +3 -1
- package/dist/ui/components/ChatInputStack.d.ts.map +1 -1
- package/dist/ui/components/ChatInputStack.js +4 -3
- package/dist/ui/components/ChatInputStack.js.map +1 -1
- package/dist/ui/components/ChatScreen.d.ts +3 -16
- package/dist/ui/components/ChatScreen.d.ts.map +1 -1
- package/dist/ui/components/ChatScreen.js +2 -3
- package/dist/ui/components/ChatScreen.js.map +1 -1
- package/dist/ui/components/Footer.d.ts +3 -8
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +5 -25
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/ui/components/InputArea.d.ts +1 -9
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +2 -44
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/LiveToolPanel.d.ts +30 -0
- package/dist/ui/components/LiveToolPanel.d.ts.map +1 -0
- package/dist/ui/components/LiveToolPanel.js +66 -0
- package/dist/ui/components/LiveToolPanel.js.map +1 -0
- package/dist/ui/components/ToolExecution.js +0 -2
- package/dist/ui/components/ToolExecution.js.map +1 -1
- package/dist/ui/components/TranscriptViewport.d.ts +1 -1
- package/dist/ui/components/TranscriptViewport.js +1 -1
- package/dist/ui/footer-jump-regression.test.js +12 -2
- package/dist/ui/footer-jump-regression.test.js.map +1 -1
- package/dist/ui/footer-status-layout.test.js +4 -12
- package/dist/ui/footer-status-layout.test.js.map +1 -1
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts +3 -4
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts.map +1 -1
- package/dist/ui/hooks/useChatLayoutMeasurements.js +26 -4
- package/dist/ui/hooks/useChatLayoutMeasurements.js.map +1 -1
- package/dist/ui/hooks/useModeState.d.ts +4 -19
- package/dist/ui/hooks/useModeState.d.ts.map +1 -1
- package/dist/ui/hooks/useModeState.js +5 -45
- package/dist/ui/hooks/useModeState.js.map +1 -1
- package/dist/ui/hooks/usePixelFixFlow.js +2 -2
- package/dist/ui/layout-decisions.d.ts +11 -34
- package/dist/ui/layout-decisions.d.ts.map +1 -1
- package/dist/ui/layout-decisions.js +15 -42
- package/dist/ui/layout-decisions.js.map +1 -1
- package/dist/ui/live-area-height.d.ts.map +1 -1
- package/dist/ui/live-area-height.js +6 -1
- package/dist/ui/live-area-height.js.map +1 -1
- package/dist/ui/live-frame-height.test.js +26 -1
- package/dist/ui/live-frame-height.test.js.map +1 -1
- package/dist/ui/plan-overlay.test.js +1 -1
- package/dist/ui/plan-overlay.test.js.map +1 -1
- package/dist/ui/prompt-routing.d.ts +1 -19
- package/dist/ui/prompt-routing.d.ts.map +1 -1
- package/dist/ui/prompt-routing.js +1 -79
- package/dist/ui/prompt-routing.js.map +1 -1
- package/dist/ui/render.d.ts +3 -18
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +0 -10
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/scroll-stabilization.test.js +1 -7
- package/dist/ui/scroll-stabilization.test.js.map +1 -1
- package/dist/ui/slash-command-images.test.js +11 -86
- package/dist/ui/slash-command-images.test.js.map +1 -1
- package/dist/ui/streaming-flush-bounce.test.d.ts +2 -0
- package/dist/ui/streaming-flush-bounce.test.d.ts.map +1 -0
- package/dist/ui/streaming-flush-bounce.test.js +156 -0
- package/dist/ui/streaming-flush-bounce.test.js.map +1 -0
- package/dist/ui/submit-prompt-command.d.ts +1 -16
- package/dist/ui/submit-prompt-command.d.ts.map +1 -1
- package/dist/ui/submit-prompt-command.js +4 -54
- package/dist/ui/submit-prompt-command.js.map +1 -1
- package/dist/ui/submit-slash-commands.d.ts +0 -1
- package/dist/ui/submit-slash-commands.d.ts.map +1 -1
- package/dist/ui/submit-slash-commands.js +0 -4
- package/dist/ui/submit-slash-commands.js.map +1 -1
- package/dist/ui/terminal-history-status-renderers.d.ts +0 -1
- package/dist/ui/terminal-history-status-renderers.d.ts.map +1 -1
- package/dist/ui/terminal-history-status-renderers.js +0 -3
- 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 +11 -56
- package/dist/ui/terminal-history.js.map +1 -1
- package/dist/ui/terminal-history.test.js +6 -33
- package/dist/ui/terminal-history.test.js.map +1 -1
- package/dist/ui/tool-line-summary.d.ts +29 -0
- package/dist/ui/tool-line-summary.d.ts.map +1 -0
- package/dist/ui/tool-line-summary.js +153 -0
- package/dist/ui/tool-line-summary.js.map +1 -0
- package/dist/ui/transcript/TranscriptRenderer.d.ts +1 -1
- package/dist/ui/transcript/TranscriptRenderer.d.ts.map +1 -1
- package/dist/ui/transcript/TranscriptRenderer.js +18 -12
- package/dist/ui/transcript/TranscriptRenderer.js.map +1 -1
- package/dist/ui/transcript/presentation.d.ts +1 -17
- package/dist/ui/transcript/presentation.d.ts.map +1 -1
- package/dist/ui/transcript/presentation.js +0 -26
- package/dist/ui/transcript/presentation.js.map +1 -1
- package/dist/ui/transcript/spacing.d.ts +2 -2
- package/dist/ui/transcript/spacing.d.ts.map +1 -1
- package/dist/ui/transcript/spacing.js +14 -9
- package/dist/ui/transcript/spacing.js.map +1 -1
- package/dist/ui/transcript/spacing.test.js +5 -8
- package/dist/ui/transcript/spacing.test.js.map +1 -1
- package/dist/ui/transcript/tool-presentation.js +1 -1
- package/dist/ui/transcript/tool-presentation.js.map +1 -1
- package/dist/ui/transcript/transcript-lines.d.ts.map +1 -1
- package/dist/ui/transcript/transcript-lines.js +4 -0
- package/dist/ui/transcript/transcript-lines.js.map +1 -1
- package/dist/ui/tui-history-parity.test.js +0 -47
- package/dist/ui/tui-history-parity.test.js.map +1 -1
- package/dist/ui/tui-simulation.test.js +2 -1
- package/dist/ui/tui-simulation.test.js.map +1 -1
- package/package.json +3 -3
- package/dist/core/goal-controller.d.ts +0 -82
- package/dist/core/goal-controller.d.ts.map +0 -1
- package/dist/core/goal-controller.js +0 -838
- package/dist/core/goal-controller.js.map +0 -1
- package/dist/core/goal-controller.test.d.ts +0 -2
- package/dist/core/goal-controller.test.d.ts.map +0 -1
- package/dist/core/goal-controller.test.js +0 -1279
- package/dist/core/goal-controller.test.js.map +0 -1
- package/dist/core/goal-engine.d.ts +0 -61
- package/dist/core/goal-engine.d.ts.map +0 -1
- package/dist/core/goal-engine.js +0 -123
- package/dist/core/goal-engine.js.map +0 -1
- package/dist/core/goal-engine.test.d.ts +0 -2
- package/dist/core/goal-engine.test.d.ts.map +0 -1
- package/dist/core/goal-engine.test.js +0 -295
- package/dist/core/goal-engine.test.js.map +0 -1
- package/dist/core/goal-integration.d.ts +0 -80
- package/dist/core/goal-integration.d.ts.map +0 -1
- package/dist/core/goal-integration.js +0 -296
- package/dist/core/goal-integration.js.map +0 -1
- package/dist/core/goal-integration.test.d.ts +0 -2
- package/dist/core/goal-integration.test.d.ts.map +0 -1
- package/dist/core/goal-integration.test.js +0 -369
- package/dist/core/goal-integration.test.js.map +0 -1
- package/dist/core/goal-lifecycle-smoke.test.d.ts +0 -2
- package/dist/core/goal-lifecycle-smoke.test.d.ts.map +0 -1
- package/dist/core/goal-lifecycle-smoke.test.js +0 -248
- package/dist/core/goal-lifecycle-smoke.test.js.map +0 -1
- package/dist/core/goal-overhead-harness.d.ts +0 -33
- package/dist/core/goal-overhead-harness.d.ts.map +0 -1
- package/dist/core/goal-overhead-harness.js +0 -268
- package/dist/core/goal-overhead-harness.js.map +0 -1
- package/dist/core/goal-prerequisites.d.ts +0 -23
- package/dist/core/goal-prerequisites.d.ts.map +0 -1
- package/dist/core/goal-prerequisites.js +0 -114
- package/dist/core/goal-prerequisites.js.map +0 -1
- package/dist/core/goal-prerequisites.test.d.ts +0 -2
- package/dist/core/goal-prerequisites.test.d.ts.map +0 -1
- package/dist/core/goal-prerequisites.test.js +0 -154
- package/dist/core/goal-prerequisites.test.js.map +0 -1
- package/dist/core/goal-references.d.ts +0 -14
- package/dist/core/goal-references.d.ts.map +0 -1
- package/dist/core/goal-references.js +0 -153
- package/dist/core/goal-references.js.map +0 -1
- package/dist/core/goal-references.test.d.ts +0 -2
- package/dist/core/goal-references.test.d.ts.map +0 -1
- package/dist/core/goal-references.test.js +0 -77
- package/dist/core/goal-references.test.js.map +0 -1
- package/dist/core/goal-store.d.ts +0 -289
- package/dist/core/goal-store.d.ts.map +0 -1
- package/dist/core/goal-store.js +0 -1156
- package/dist/core/goal-store.js.map +0 -1
- package/dist/core/goal-store.test.d.ts +0 -2
- package/dist/core/goal-store.test.d.ts.map +0 -1
- package/dist/core/goal-store.test.js +0 -530
- package/dist/core/goal-store.test.js.map +0 -1
- package/dist/core/goal-verifier.d.ts +0 -17
- package/dist/core/goal-verifier.d.ts.map +0 -1
- package/dist/core/goal-verifier.js +0 -87
- package/dist/core/goal-verifier.js.map +0 -1
- package/dist/core/goal-verifier.test.d.ts +0 -2
- package/dist/core/goal-verifier.test.d.ts.map +0 -1
- package/dist/core/goal-verifier.test.js +0 -131
- package/dist/core/goal-verifier.test.js.map +0 -1
- package/dist/core/goal-worker-dev-server-lifecycle.test.d.ts +0 -2
- package/dist/core/goal-worker-dev-server-lifecycle.test.d.ts.map +0 -1
- package/dist/core/goal-worker-dev-server-lifecycle.test.js +0 -68
- package/dist/core/goal-worker-dev-server-lifecycle.test.js.map +0 -1
- package/dist/core/goal-worker.d.ts +0 -61
- package/dist/core/goal-worker.d.ts.map +0 -1
- package/dist/core/goal-worker.js +0 -467
- package/dist/core/goal-worker.js.map +0 -1
- package/dist/core/goal-worker.test.d.ts +0 -2
- package/dist/core/goal-worker.test.d.ts.map +0 -1
- package/dist/core/goal-worker.test.js +0 -493
- package/dist/core/goal-worker.test.js.map +0 -1
- package/dist/core/goal-worktree.d.ts +0 -108
- package/dist/core/goal-worktree.d.ts.map +0 -1
- package/dist/core/goal-worktree.js +0 -300
- package/dist/core/goal-worktree.js.map +0 -1
- package/dist/core/goal-worktree.test.d.ts +0 -2
- package/dist/core/goal-worktree.test.d.ts.map +0 -1
- package/dist/core/goal-worktree.test.js +0 -448
- package/dist/core/goal-worktree.test.js.map +0 -1
- package/dist/tools/goal-mode.test.d.ts +0 -2
- package/dist/tools/goal-mode.test.d.ts.map +0 -1
- package/dist/tools/goal-mode.test.js +0 -121
- package/dist/tools/goal-mode.test.js.map +0 -1
- package/dist/tools/goals.d.ts +0 -143
- package/dist/tools/goals.d.ts.map +0 -1
- package/dist/tools/goals.js +0 -1038
- package/dist/tools/goals.js.map +0 -1
- package/dist/tools/goals.test.d.ts +0 -2
- package/dist/tools/goals.test.d.ts.map +0 -1
- package/dist/tools/goals.test.js +0 -1444
- package/dist/tools/goals.test.js.map +0 -1
- package/dist/ui/components/GoalOverlay.d.ts +0 -83
- package/dist/ui/components/GoalOverlay.d.ts.map +0 -1
- package/dist/ui/components/GoalOverlay.js +0 -710
- package/dist/ui/components/GoalOverlay.js.map +0 -1
- package/dist/ui/components/GoalPickerMenu.d.ts +0 -9
- package/dist/ui/components/GoalPickerMenu.d.ts.map +0 -1
- package/dist/ui/components/GoalPickerMenu.js +0 -37
- package/dist/ui/components/GoalPickerMenu.js.map +0 -1
- package/dist/ui/components/GoalStatusBar.d.ts +0 -26
- package/dist/ui/components/GoalStatusBar.d.ts.map +0 -1
- package/dist/ui/components/GoalStatusBar.js +0 -130
- package/dist/ui/components/GoalStatusBar.js.map +0 -1
- package/dist/ui/components/GoalStatusBar.test.d.ts +0 -2
- package/dist/ui/components/GoalStatusBar.test.d.ts.map +0 -1
- package/dist/ui/components/GoalStatusBar.test.js +0 -17
- package/dist/ui/components/GoalStatusBar.test.js.map +0 -1
- package/dist/ui/goal-events.d.ts +0 -125
- package/dist/ui/goal-events.d.ts.map +0 -1
- package/dist/ui/goal-events.js +0 -407
- package/dist/ui/goal-events.js.map +0 -1
- package/dist/ui/goal-events.test.d.ts +0 -2
- package/dist/ui/goal-events.test.d.ts.map +0 -1
- package/dist/ui/goal-events.test.js +0 -416
- package/dist/ui/goal-events.test.js.map +0 -1
- package/dist/ui/goal-lifecycle-orchestration.test.d.ts +0 -2
- package/dist/ui/goal-lifecycle-orchestration.test.d.ts.map +0 -1
- package/dist/ui/goal-lifecycle-orchestration.test.js +0 -555
- package/dist/ui/goal-lifecycle-orchestration.test.js.map +0 -1
- package/dist/ui/goal-overlay.test.d.ts +0 -2
- package/dist/ui/goal-overlay.test.d.ts.map +0 -1
- package/dist/ui/goal-overlay.test.js +0 -384
- package/dist/ui/goal-overlay.test.js.map +0 -1
- package/dist/ui/goal-progress.d.ts +0 -31
- package/dist/ui/goal-progress.d.ts.map +0 -1
- package/dist/ui/goal-progress.js +0 -149
- package/dist/ui/goal-progress.js.map +0 -1
- package/dist/ui/goal-run-helpers.d.ts +0 -12
- package/dist/ui/goal-run-helpers.d.ts.map +0 -1
- package/dist/ui/goal-run-helpers.js +0 -42
- package/dist/ui/goal-run-helpers.js.map +0 -1
- package/dist/ui/goal-status-bar.test.d.ts +0 -2
- package/dist/ui/goal-status-bar.test.d.ts.map +0 -1
- package/dist/ui/goal-status-bar.test.js +0 -174
- package/dist/ui/goal-status-bar.test.js.map +0 -1
- package/dist/ui/goal-summary.d.ts +0 -14
- package/dist/ui/goal-summary.d.ts.map +0 -1
- package/dist/ui/goal-summary.js +0 -194
- package/dist/ui/goal-summary.js.map +0 -1
- package/dist/ui/hooks/useGoalOrchestration.d.ts +0 -82
- package/dist/ui/hooks/useGoalOrchestration.d.ts.map +0 -1
- package/dist/ui/hooks/useGoalOrchestration.js +0 -863
- package/dist/ui/hooks/useGoalOrchestration.js.map +0 -1
- package/dist/ui/hooks/useGoalPickerController.d.ts +0 -22
- package/dist/ui/hooks/useGoalPickerController.d.ts.map +0 -1
- package/dist/ui/hooks/useGoalPickerController.js +0 -35
- package/dist/ui/hooks/useGoalPickerController.js.map +0 -1
- package/dist/ui/prompt-routing.test.d.ts +0 -2
- package/dist/ui/prompt-routing.test.d.ts.map +0 -1
- package/dist/ui/prompt-routing.test.js +0 -48
- package/dist/ui/prompt-routing.test.js.map +0 -1
- package/dist/ui/transcript/GoalRows.d.ts +0 -10
- package/dist/ui/transcript/GoalRows.d.ts.map +0 -1
- package/dist/ui/transcript/GoalRows.js +0 -35
- package/dist/ui/transcript/GoalRows.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"goal-lifecycle-smoke.test.js","sourceRoot":"","sources":["../../src/core/goal-lifecycle-smoke.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export interface GoalOverheadStageMeasurement {
|
|
2
|
-
stage: string;
|
|
3
|
-
promptChars: number;
|
|
4
|
-
taskCount: number;
|
|
5
|
-
blockerCount: number;
|
|
6
|
-
requiredProofGates: number;
|
|
7
|
-
decisionKind?: string;
|
|
8
|
-
decisionReasonChars?: number;
|
|
9
|
-
}
|
|
10
|
-
export interface GoalOverheadScenarioMeasurement {
|
|
11
|
-
scenario: "simple" | "complex";
|
|
12
|
-
stageCount: number;
|
|
13
|
-
promptChars: number;
|
|
14
|
-
taskCount: number;
|
|
15
|
-
blockerCount: number;
|
|
16
|
-
requiredProofGates: number;
|
|
17
|
-
stages: GoalOverheadStageMeasurement[];
|
|
18
|
-
}
|
|
19
|
-
export interface GoalOverheadHarnessResult {
|
|
20
|
-
intendedExperience: string;
|
|
21
|
-
failureModes: string[];
|
|
22
|
-
observedSignals: string[];
|
|
23
|
-
scenarios: GoalOverheadScenarioMeasurement[];
|
|
24
|
-
comparisons: {
|
|
25
|
-
promptCharsComplexToSimpleRatio: number;
|
|
26
|
-
stageCountDelta: number;
|
|
27
|
-
taskCountDelta: number;
|
|
28
|
-
blockerCountDelta: number;
|
|
29
|
-
requiredProofGateDelta: number;
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
export declare function runGoalOverheadHarness(): Promise<GoalOverheadHarnessResult>;
|
|
33
|
-
//# sourceMappingURL=goal-overhead-harness.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"goal-overhead-harness.d.ts","sourceRoot":"","sources":["../../src/core/goal-overhead-harness.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,4BAA4B,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,+BAA+B,EAAE,CAAC;IAC7C,WAAW,EAAE;QACX,+BAA+B,EAAE,MAAM,CAAC;QACxC,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;CACH;AAmHD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAsNjF"}
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import { decideGoalNextAction } from "./goal-controller.js";
|
|
2
|
-
import { buildGoalWorkerSystemPrompt } from "./goal-worker.js";
|
|
3
|
-
import { buildGoalSetupPromptFromPlanner, collectAssistantTextSince, } from "../ui/prompt-routing.js";
|
|
4
|
-
import { buildSystemPrompt } from "../system-prompt.js";
|
|
5
|
-
const ORIGINAL_GOAL_PROMPT_REFERENCE = "[original-goal-prompt]";
|
|
6
|
-
const CREATED_AT = "2024-01-01T00:00:00.000Z";
|
|
7
|
-
function baseRun(overrides) {
|
|
8
|
-
return {
|
|
9
|
-
id: "goal-overhead-harness",
|
|
10
|
-
title: "Goal overhead harness",
|
|
11
|
-
goal: "Optimize /goal to be faster, lower-token, less blocker-prone, and simpler while preserving durable delivery using [original-goal-prompt].",
|
|
12
|
-
status: "ready",
|
|
13
|
-
createdAt: CREATED_AT,
|
|
14
|
-
updatedAt: CREATED_AT,
|
|
15
|
-
projectPath: "/tmp/ggcoder-goal-overhead-harness",
|
|
16
|
-
successCriteria: [],
|
|
17
|
-
prerequisites: [],
|
|
18
|
-
harness: [],
|
|
19
|
-
evidencePlan: [],
|
|
20
|
-
tasks: [],
|
|
21
|
-
evidence: [
|
|
22
|
-
{
|
|
23
|
-
id: "planner-plan",
|
|
24
|
-
kind: "summary",
|
|
25
|
-
label: "Planner GOAL_PLAN",
|
|
26
|
-
content: "GOAL_PLAN\nresearch=local goal overhead harness\nsuccess=compare simple and complex /goal setup/controller overhead using [original-goal-prompt]\nEND_GOAL_PLAN",
|
|
27
|
-
createdAt: CREATED_AT,
|
|
28
|
-
},
|
|
29
|
-
],
|
|
30
|
-
blockers: [],
|
|
31
|
-
references: [
|
|
32
|
-
{
|
|
33
|
-
id: "original-goal-prompt",
|
|
34
|
-
kind: "prompt",
|
|
35
|
-
label: "Original Goal prompt",
|
|
36
|
-
source: "user",
|
|
37
|
-
content: "Users report /goal is slow, high-token, blocker-prone, and over-engineered; optimize it while preserving reliable durable delivery.",
|
|
38
|
-
},
|
|
39
|
-
],
|
|
40
|
-
...overrides,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
function proofGateCount(run) {
|
|
44
|
-
const verifierGate = run.verifier?.command ? 1 : 0;
|
|
45
|
-
const finalAuditGate = run.verifier?.lastResult?.status === "pass" ? 1 : 0;
|
|
46
|
-
return (run.prerequisites.length +
|
|
47
|
-
run.harness.length +
|
|
48
|
-
run.evidencePlan.length +
|
|
49
|
-
verifierGate +
|
|
50
|
-
finalAuditGate);
|
|
51
|
-
}
|
|
52
|
-
function blockerCount(run) {
|
|
53
|
-
const missingPrerequisites = run.prerequisites.filter((item) => item.status === "missing").length;
|
|
54
|
-
const blockedEvidence = run.evidencePlan.filter((item) => item.status === "blocked").length;
|
|
55
|
-
const blockedTasks = run.tasks.filter((item) => item.status === "blocked").length;
|
|
56
|
-
return run.blockers.length + missingPrerequisites + blockedEvidence + blockedTasks;
|
|
57
|
-
}
|
|
58
|
-
function promptCharCount(...prompts) {
|
|
59
|
-
return prompts.reduce((total, prompt) => total + (prompt?.length ?? 0), 0);
|
|
60
|
-
}
|
|
61
|
-
function measureControllerStage(stage, run) {
|
|
62
|
-
const decision = decideGoalNextAction(run);
|
|
63
|
-
const prompt = decision.kind === "create_task" ? decision.prompt : undefined;
|
|
64
|
-
return {
|
|
65
|
-
stage,
|
|
66
|
-
promptChars: promptCharCount(prompt),
|
|
67
|
-
taskCount: run.tasks.length,
|
|
68
|
-
blockerCount: blockerCount(run),
|
|
69
|
-
requiredProofGates: proofGateCount(run),
|
|
70
|
-
decisionKind: decision.kind,
|
|
71
|
-
decisionReasonChars: decision.reason.length,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
function scenarioTotals(scenario, stages) {
|
|
75
|
-
return {
|
|
76
|
-
scenario,
|
|
77
|
-
stageCount: stages.length,
|
|
78
|
-
promptChars: stages.reduce((total, stage) => total + stage.promptChars, 0),
|
|
79
|
-
taskCount: stages.reduce((total, stage) => total + stage.taskCount, 0),
|
|
80
|
-
blockerCount: stages.reduce((total, stage) => total + stage.blockerCount, 0),
|
|
81
|
-
requiredProofGates: stages.reduce((total, stage) => total + stage.requiredProofGates, 0),
|
|
82
|
-
stages,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
function measurePromptSetup(originalGoalPrompt, plannerOutput) {
|
|
86
|
-
const messages = [{ role: "assistant", content: plannerOutput }];
|
|
87
|
-
const collectedPlannerOutput = collectAssistantTextSince(messages, 0);
|
|
88
|
-
const setupPrompt = buildGoalSetupPromptFromPlanner({
|
|
89
|
-
originalGoalPrompt,
|
|
90
|
-
plannerOutput: collectedPlannerOutput,
|
|
91
|
-
});
|
|
92
|
-
return {
|
|
93
|
-
stage: "prompt-routing: planner-to-setup",
|
|
94
|
-
promptChars: promptCharCount(originalGoalPrompt, collectedPlannerOutput, setupPrompt),
|
|
95
|
-
taskCount: 0,
|
|
96
|
-
blockerCount: 0,
|
|
97
|
-
requiredProofGates: 0,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
export async function runGoalOverheadHarness() {
|
|
101
|
-
const simpleOriginalPrompt = `/goal Fix a small local bug. ${ORIGINAL_GOAL_PROMPT_REFERENCE}`;
|
|
102
|
-
const complexOriginalPrompt = `/goal Optimize the GG Coder /goal system using ${ORIGINAL_GOAL_PROMPT_REFERENCE}: make runs faster, lower-token, less blocker-prone, and simpler while preserving durable delivery.`;
|
|
103
|
-
const simpleRun = baseRun({
|
|
104
|
-
successCriteria: [
|
|
105
|
-
"Local verifier proves the small bug is fixed and mentions [original-goal-prompt].",
|
|
106
|
-
],
|
|
107
|
-
evidencePlan: [
|
|
108
|
-
{
|
|
109
|
-
id: "local-proof",
|
|
110
|
-
label: "Local proof for [original-goal-prompt]",
|
|
111
|
-
mechanism: "test",
|
|
112
|
-
description: "A single local command proves the change.",
|
|
113
|
-
status: "ready",
|
|
114
|
-
evidence: "local command available",
|
|
115
|
-
command: "pnpm test --filter local-proof",
|
|
116
|
-
},
|
|
117
|
-
],
|
|
118
|
-
verifier: {
|
|
119
|
-
description: "Run one local verifier for [original-goal-prompt].",
|
|
120
|
-
command: "pnpm test --filter local-proof",
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
const complexRun = baseRun({
|
|
124
|
-
successCriteria: [
|
|
125
|
-
"Compare representative simple vs complex Goal overhead by stage count and prompt characters using [original-goal-prompt].",
|
|
126
|
-
"Measure task count, blocker count, and required proof gates before changing the flow.",
|
|
127
|
-
"Preserve durable verifier and final audit reliability.",
|
|
128
|
-
],
|
|
129
|
-
prerequisites: [
|
|
130
|
-
{
|
|
131
|
-
id: "external-service",
|
|
132
|
-
label: "External benchmark service",
|
|
133
|
-
status: "missing",
|
|
134
|
-
instructions: "Provide paid benchmark credentials.",
|
|
135
|
-
},
|
|
136
|
-
],
|
|
137
|
-
harness: [
|
|
138
|
-
{
|
|
139
|
-
id: "missing-harness",
|
|
140
|
-
label: "Synthetic /goal overhead harness",
|
|
141
|
-
description: "Compares setup/controller overhead.",
|
|
142
|
-
},
|
|
143
|
-
],
|
|
144
|
-
evidencePlan: [
|
|
145
|
-
{
|
|
146
|
-
id: "overhead-metrics",
|
|
147
|
-
label: "Synthetic /goal overhead metrics for [original-goal-prompt]",
|
|
148
|
-
mechanism: "test",
|
|
149
|
-
description: "Captures stage count, prompt characters, task count, blocker count, and required proof gates.",
|
|
150
|
-
status: "planned",
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
id: "audit-proof",
|
|
154
|
-
label: "Final audit proof gate",
|
|
155
|
-
mechanism: "command",
|
|
156
|
-
description: "Confirms reliable durable delivery remains present.",
|
|
157
|
-
status: "planned",
|
|
158
|
-
},
|
|
159
|
-
],
|
|
160
|
-
tasks: [
|
|
161
|
-
{
|
|
162
|
-
id: "task-1",
|
|
163
|
-
title: "Research hotspots",
|
|
164
|
-
prompt: "Inspect prompt-routing.ts, system-prompt.ts, goal-controller.ts, and goal-worker.ts for [original-goal-prompt].",
|
|
165
|
-
status: "done",
|
|
166
|
-
attempts: 1,
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
id: "task-2",
|
|
170
|
-
title: "Implement simplification",
|
|
171
|
-
prompt: "Reduce overhead while preserving [original-goal-prompt] reliability.",
|
|
172
|
-
status: "pending",
|
|
173
|
-
attempts: 0,
|
|
174
|
-
dependsOn: ["task-1"],
|
|
175
|
-
},
|
|
176
|
-
],
|
|
177
|
-
blockers: ["Unnecessary missing external prerequisite should be visible to blocker metrics."],
|
|
178
|
-
});
|
|
179
|
-
const simpleStages = [
|
|
180
|
-
measurePromptSetup(simpleOriginalPrompt, "GOAL_PLAN\nresearch=none\nsuccess=single local verifier using [original-goal-prompt]\nEND_GOAL_PLAN"),
|
|
181
|
-
measureControllerStage("controller: ready-to-verify", simpleRun),
|
|
182
|
-
{
|
|
183
|
-
stage: "worker: system-prompt",
|
|
184
|
-
promptChars: promptCharCount(buildGoalWorkerSystemPrompt({
|
|
185
|
-
cwd: simpleRun.projectPath,
|
|
186
|
-
goalRunId: simpleRun.id,
|
|
187
|
-
goalTaskId: "simple-task",
|
|
188
|
-
taskTitle: "Simple local work",
|
|
189
|
-
})),
|
|
190
|
-
taskCount: 1,
|
|
191
|
-
blockerCount: 0,
|
|
192
|
-
requiredProofGates: proofGateCount(simpleRun),
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
stage: "system: goal-mode prompt",
|
|
196
|
-
promptChars: promptCharCount(await buildSystemPrompt(simpleRun.projectPath, undefined, undefined, undefined, undefined, undefined, "setup")),
|
|
197
|
-
taskCount: 0,
|
|
198
|
-
blockerCount: 0,
|
|
199
|
-
requiredProofGates: 0,
|
|
200
|
-
},
|
|
201
|
-
];
|
|
202
|
-
const complexStages = [
|
|
203
|
-
measurePromptSetup(complexOriginalPrompt, "GOAL_PLAN\nresearch=prompt-routing.ts system-prompt.ts goal-controller.ts goal-worker.ts\nsuccess=stage count, prompt chars, task count, blocker count, proof gates for [original-goal-prompt]\nproof=synthetic harness\nEND_GOAL_PLAN"),
|
|
204
|
-
measureControllerStage("controller: blocked-prerequisite", complexRun),
|
|
205
|
-
measureControllerStage("controller: evidence-instrumentation", baseRun({
|
|
206
|
-
...complexRun,
|
|
207
|
-
prerequisites: [],
|
|
208
|
-
blockers: [],
|
|
209
|
-
})),
|
|
210
|
-
measureControllerStage("controller: harness-instrumentation", baseRun({
|
|
211
|
-
...complexRun,
|
|
212
|
-
prerequisites: [],
|
|
213
|
-
blockers: [],
|
|
214
|
-
evidencePlan: complexRun.evidencePlan.map((item) => ({
|
|
215
|
-
...item,
|
|
216
|
-
status: "ready",
|
|
217
|
-
evidence: "ready for harness comparison",
|
|
218
|
-
})),
|
|
219
|
-
})),
|
|
220
|
-
{
|
|
221
|
-
stage: "worker: system-prompt",
|
|
222
|
-
promptChars: promptCharCount(buildGoalWorkerSystemPrompt({
|
|
223
|
-
cwd: complexRun.projectPath,
|
|
224
|
-
goalRunId: complexRun.id,
|
|
225
|
-
goalTaskId: "complex-task",
|
|
226
|
-
taskTitle: "Complex optimization work",
|
|
227
|
-
})),
|
|
228
|
-
taskCount: complexRun.tasks.length,
|
|
229
|
-
blockerCount: blockerCount(complexRun),
|
|
230
|
-
requiredProofGates: proofGateCount(complexRun),
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
stage: "system: goal-mode prompt",
|
|
234
|
-
promptChars: promptCharCount(await buildSystemPrompt(complexRun.projectPath, undefined, undefined, undefined, undefined, undefined, "setup")),
|
|
235
|
-
taskCount: 0,
|
|
236
|
-
blockerCount: 0,
|
|
237
|
-
requiredProofGates: 0,
|
|
238
|
-
},
|
|
239
|
-
];
|
|
240
|
-
const simple = scenarioTotals("simple", simpleStages);
|
|
241
|
-
const complex = scenarioTotals("complex", complexStages);
|
|
242
|
-
return {
|
|
243
|
-
intendedExperience: "A /goal run should move from the user's original-goal-prompt to local work, verifier evidence, and durable delivery with minimal stages, compact prompts, and no avoidable blockers when local proof is possible.",
|
|
244
|
-
failureModes: [
|
|
245
|
-
"Prompt-routing or system/worker prompts inflate token use before any useful work begins.",
|
|
246
|
-
"Controller creates extra instrumentation/audit tasks for simple local goals instead of proceeding A-to-Z.",
|
|
247
|
-
"Missing or blocked prerequisites stop a run even though local/free evidence could be produced.",
|
|
248
|
-
"Proof gates multiply beyond the verifier/audit needed for reliable durable delivery.",
|
|
249
|
-
],
|
|
250
|
-
observedSignals: [
|
|
251
|
-
"stageCount",
|
|
252
|
-
"promptChars",
|
|
253
|
-
"taskCount",
|
|
254
|
-
"blockerCount",
|
|
255
|
-
"requiredProofGates",
|
|
256
|
-
"controller decision kind and reason length",
|
|
257
|
-
],
|
|
258
|
-
scenarios: [simple, complex],
|
|
259
|
-
comparisons: {
|
|
260
|
-
promptCharsComplexToSimpleRatio: Number((complex.promptChars / simple.promptChars).toFixed(2)),
|
|
261
|
-
stageCountDelta: complex.stageCount - simple.stageCount,
|
|
262
|
-
taskCountDelta: complex.taskCount - simple.taskCount,
|
|
263
|
-
blockerCountDelta: complex.blockerCount - simple.blockerCount,
|
|
264
|
-
requiredProofGateDelta: complex.requiredProofGates - simple.requiredProofGates,
|
|
265
|
-
},
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
//# sourceMappingURL=goal-overhead-harness.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"goal-overhead-harness.js","sourceRoot":"","sources":["../../src/core/goal-overhead-harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { GoalPrerequisite, GoalPrerequisiteStatus, GoalRun } from "./goal-store.js";
|
|
2
|
-
export declare const DEFAULT_GOAL_PREREQUISITE_CHECK_TIMEOUT_MS = 15000;
|
|
3
|
-
export interface GoalPrerequisiteCheckResult {
|
|
4
|
-
status: GoalPrerequisiteStatus;
|
|
5
|
-
evidence: string;
|
|
6
|
-
}
|
|
7
|
-
export interface PrerequisiteCommandSafetyResult {
|
|
8
|
-
safe: boolean;
|
|
9
|
-
reason?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface RunGoalPrerequisiteChecksResult {
|
|
12
|
-
run: GoalRun;
|
|
13
|
-
checkedCount: number;
|
|
14
|
-
}
|
|
15
|
-
export declare function validateGoalPrerequisiteCheckCommand(command: string): PrerequisiteCommandSafetyResult;
|
|
16
|
-
export declare function runGoalPrerequisiteCheckCommand({ cwd, command, timeoutMs, }: {
|
|
17
|
-
cwd: string;
|
|
18
|
-
command: string;
|
|
19
|
-
timeoutMs?: number;
|
|
20
|
-
}): Promise<GoalPrerequisiteCheckResult>;
|
|
21
|
-
export declare function shouldRunGoalPrerequisiteCheck(item: GoalPrerequisite): boolean;
|
|
22
|
-
export declare function runGoalPrerequisiteChecks(cwd: string, run: GoalRun, timeoutMs?: number): Promise<RunGoalPrerequisiteChecksResult>;
|
|
23
|
-
//# sourceMappingURL=goal-prerequisites.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"goal-prerequisites.d.ts","sourceRoot":"","sources":["../../src/core/goal-prerequisites.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEzF,eAAO,MAAM,0CAA0C,QAAS,CAAC;AAGjE,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,OAAO,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAeD,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,GACd,+BAA+B,CA2BjC;AAED,wBAAsB,+BAA+B,CAAC,EACpD,GAAG,EACH,OAAO,EACP,SAAsD,GACvD,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAyCvC;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAE9E;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,OAAO,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,+BAA+B,CAAC,CAsB1C"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
export const DEFAULT_GOAL_PREREQUISITE_CHECK_TIMEOUT_MS = 15_000;
|
|
3
|
-
const MAX_PREREQUISITE_EVIDENCE_CHARS = 500;
|
|
4
|
-
function appendOutput(output, chunk) {
|
|
5
|
-
const next = output + chunk.toString("utf-8");
|
|
6
|
-
return next.length > MAX_PREREQUISITE_EVIDENCE_CHARS
|
|
7
|
-
? next.slice(next.length - MAX_PREREQUISITE_EVIDENCE_CHARS)
|
|
8
|
-
: next;
|
|
9
|
-
}
|
|
10
|
-
function summarizePrerequisiteCheck(command, exitCode, output) {
|
|
11
|
-
const normalizedOutput = output.trim().replace(/\s+/g, " ");
|
|
12
|
-
const suffix = normalizedOutput ? `; output: ${normalizedOutput}` : "";
|
|
13
|
-
return `Checked locally: \`${command}\` exited ${exitCode}${suffix}`;
|
|
14
|
-
}
|
|
15
|
-
export function validateGoalPrerequisiteCheckCommand(command) {
|
|
16
|
-
const normalized = command.trim();
|
|
17
|
-
if (!normalized)
|
|
18
|
-
return { safe: false, reason: "empty prerequisite check command" };
|
|
19
|
-
const checks = [
|
|
20
|
-
[/\brm\s+(?:-[^\s]*r[^\s]*f|-f[^\s]*r|-rf|-fr)\b/i, "destructive rm -rf command"],
|
|
21
|
-
[
|
|
22
|
-
/\b(?:npm|pnpm|yarn|bun)\s+(?:i|install|add|remove|uninstall|update|upgrade)\b/i,
|
|
23
|
-
"package mutation command",
|
|
24
|
-
],
|
|
25
|
-
[
|
|
26
|
-
/\b(?:apt|apt-get|brew|pip|pip3|gem|cargo)\s+(?:install|add|remove|uninstall|update|upgrade)\b/i,
|
|
27
|
-
"system/package mutation command",
|
|
28
|
-
],
|
|
29
|
-
[/(^|[^<])>>?\s*[^\s&|;]/, "shell redirection that writes files"],
|
|
30
|
-
[/\b(?:tee)\b(?!\s+-a?\s*\/dev\/null)/i, "tee file write command"],
|
|
31
|
-
[/\b(?:touch|mkdir|mv|cp|chmod|chown|truncate)\b/i, "file mutation command"],
|
|
32
|
-
[
|
|
33
|
-
/\b(?:serve|vite|next\s+dev|npm\s+run\s+dev|pnpm\s+dev|yarn\s+dev)\b/i,
|
|
34
|
-
"background/dev server command",
|
|
35
|
-
],
|
|
36
|
-
[/[;&|]\s*$/, "trailing shell control operator"],
|
|
37
|
-
[/&\s*(?:$|[#;])/, "background command"],
|
|
38
|
-
];
|
|
39
|
-
for (const [pattern, reason] of checks) {
|
|
40
|
-
if (pattern.test(normalized))
|
|
41
|
-
return { safe: false, reason };
|
|
42
|
-
}
|
|
43
|
-
return { safe: true };
|
|
44
|
-
}
|
|
45
|
-
export async function runGoalPrerequisiteCheckCommand({ cwd, command, timeoutMs = DEFAULT_GOAL_PREREQUISITE_CHECK_TIMEOUT_MS, }) {
|
|
46
|
-
const safety = validateGoalPrerequisiteCheckCommand(command);
|
|
47
|
-
if (!safety.safe) {
|
|
48
|
-
return {
|
|
49
|
-
status: "missing",
|
|
50
|
-
evidence: `Prerequisite check rejected as unsafe: ${safety.reason}. Command was not executed: \`${command}\``,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
return await new Promise((resolve) => {
|
|
54
|
-
const child = spawn(command, {
|
|
55
|
-
cwd,
|
|
56
|
-
shell: true,
|
|
57
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
58
|
-
env: { ...process.env },
|
|
59
|
-
});
|
|
60
|
-
let output = "";
|
|
61
|
-
let settled = false;
|
|
62
|
-
const finish = (code, forcedOutput) => {
|
|
63
|
-
if (settled)
|
|
64
|
-
return;
|
|
65
|
-
settled = true;
|
|
66
|
-
clearTimeout(timeout);
|
|
67
|
-
const exitCode = code ?? 1;
|
|
68
|
-
resolve({
|
|
69
|
-
status: exitCode === 0 ? "met" : "missing",
|
|
70
|
-
evidence: summarizePrerequisiteCheck(command, exitCode, forcedOutput ?? output),
|
|
71
|
-
});
|
|
72
|
-
};
|
|
73
|
-
const timeout = setTimeout(() => {
|
|
74
|
-
if (child.pid)
|
|
75
|
-
child.kill("SIGTERM");
|
|
76
|
-
finish(124, `Prerequisite check timed out after ${timeoutMs}ms.`);
|
|
77
|
-
}, timeoutMs);
|
|
78
|
-
timeout.unref?.();
|
|
79
|
-
child.stdout?.on("data", (chunk) => {
|
|
80
|
-
output = appendOutput(output, chunk);
|
|
81
|
-
});
|
|
82
|
-
child.stderr?.on("data", (chunk) => {
|
|
83
|
-
output = appendOutput(output, chunk);
|
|
84
|
-
});
|
|
85
|
-
child.on("close", (code) => finish(code));
|
|
86
|
-
child.on("error", (err) => finish(1, `Prerequisite check process error: ${err.message}`));
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
export function shouldRunGoalPrerequisiteCheck(item) {
|
|
90
|
-
return !!item.checkCommand && (item.status !== "met" || !item.evidence?.trim());
|
|
91
|
-
}
|
|
92
|
-
export async function runGoalPrerequisiteChecks(cwd, run, timeoutMs) {
|
|
93
|
-
let checkedCount = 0;
|
|
94
|
-
const prerequisites = await Promise.all(run.prerequisites.map(async (item) => {
|
|
95
|
-
if (!shouldRunGoalPrerequisiteCheck(item) || !item.checkCommand)
|
|
96
|
-
return item;
|
|
97
|
-
checkedCount += 1;
|
|
98
|
-
const result = await runGoalPrerequisiteCheckCommand({
|
|
99
|
-
cwd,
|
|
100
|
-
command: item.checkCommand,
|
|
101
|
-
timeoutMs,
|
|
102
|
-
});
|
|
103
|
-
return {
|
|
104
|
-
...item,
|
|
105
|
-
status: result.status,
|
|
106
|
-
evidence: result.evidence,
|
|
107
|
-
...(result.status === "missing" && !item.instructions
|
|
108
|
-
? { instructions: `Make \`${item.checkCommand}\` pass locally.` }
|
|
109
|
-
: {}),
|
|
110
|
-
};
|
|
111
|
-
}));
|
|
112
|
-
return { run: { ...run, prerequisites }, checkedCount };
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=goal-prerequisites.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"goal-prerequisites.js","sourceRoot":"","sources":["../../src/core/goal-prerequisites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,MAAM,CAAC,MAAM,0CAA0C,GAAG,MAAM,CAAC;AACjE,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAiB5C,SAAS,YAAY,CAAC,MAAc,EAAE,KAAa;IACjD,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,MAAM,GAAG,+BAA+B;QAClD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC;QAC3D,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAe,EAAE,QAAgB,EAAE,MAAc;IACnF,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,aAAa,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,OAAO,sBAAsB,OAAO,aAAa,QAAQ,GAAG,MAAM,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,OAAe;IAEf,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;IACpF,MAAM,MAAM,GAA4B;QACtC,CAAC,iDAAiD,EAAE,4BAA4B,CAAC;QACjF;YACE,gFAAgF;YAChF,0BAA0B;SAC3B;QACD;YACE,gGAAgG;YAChG,iCAAiC;SAClC;QACD,CAAC,wBAAwB,EAAE,qCAAqC,CAAC;QACjE,CAAC,sCAAsC,EAAE,wBAAwB,CAAC;QAClE,CAAC,iDAAiD,EAAE,uBAAuB,CAAC;QAC5E;YACE,sEAAsE;YACtE,+BAA+B;SAChC;QACD,CAAC,WAAW,EAAE,iCAAiC,CAAC;QAChD,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;KACzC,CAAC;IACF,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,EACpD,GAAG,EACH,OAAO,EACP,SAAS,GAAG,0CAA0C,GAKvD;IACC,MAAM,MAAM,GAAG,oCAAoC,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,0CAA0C,MAAM,CAAC,MAAM,iCAAiC,OAAO,IAAI;SAC9G,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,IAAI,OAAO,CAA8B,CAAC,OAAO,EAAE,EAAE;QAChE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE;YAC3B,GAAG;YACH,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,IAAmB,EAAE,YAAqB,EAAE,EAAE;YAC5D,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC;gBACN,MAAM,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC1C,QAAQ,EAAE,0BAA0B,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,IAAI,MAAM,CAAC;aAChF,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,KAAK,CAAC,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,EAAE,sCAAsC,SAAS,KAAK,CAAC,CAAC;QACpE,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAClB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,qCAAqC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAAsB;IACnE,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,GAAW,EACX,GAAY,EACZ,SAAkB;IAElB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA6B,EAAE;QAC9D,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAC7E,YAAY,IAAI,CAAC,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC;YACnD,GAAG;YACH,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,SAAS;SACV,CAAC,CAAC;QACH,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY;gBACnD,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,IAAI,CAAC,YAAY,kBAAkB,EAAE;gBACjE,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IACF,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,EAAE,YAAY,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"goal-prerequisites.test.d.ts","sourceRoot":"","sources":["../../src/core/goal-prerequisites.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import fs from "node:fs/promises";
|
|
3
|
-
import os from "node:os";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { goalHasBlockingPrerequisites, goalHasUnmetLocalPrerequisites, isBlockingGoalPrerequisite, prerequisiteKind, } from "./goal-store.js";
|
|
6
|
-
import { runGoalPrerequisiteCheckCommand, runGoalPrerequisiteChecks, shouldRunGoalPrerequisiteCheck, validateGoalPrerequisiteCheckCommand, } from "./goal-prerequisites.js";
|
|
7
|
-
function goalRun(overrides = {}) {
|
|
8
|
-
return {
|
|
9
|
-
id: "goal-a",
|
|
10
|
-
title: "Goal",
|
|
11
|
-
goal: "Check prerequisites before workers",
|
|
12
|
-
status: "ready",
|
|
13
|
-
createdAt: "2024-01-01T00:00:00.000Z",
|
|
14
|
-
updatedAt: "2024-01-01T00:00:00.000Z",
|
|
15
|
-
projectPath: "/tmp/project",
|
|
16
|
-
successCriteria: [],
|
|
17
|
-
prerequisites: [],
|
|
18
|
-
harness: [],
|
|
19
|
-
evidencePlan: [],
|
|
20
|
-
tasks: [],
|
|
21
|
-
evidence: [],
|
|
22
|
-
blockers: [],
|
|
23
|
-
...overrides,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
describe("goal prerequisite checks", () => {
|
|
27
|
-
it("rejects unsafe prerequisite commands without executing mutations", async () => {
|
|
28
|
-
expect(validateGoalPrerequisiteCheckCommand("rm -rf .goal-evidence")).toEqual({
|
|
29
|
-
safe: false,
|
|
30
|
-
reason: "destructive rm -rf command",
|
|
31
|
-
});
|
|
32
|
-
expect(validateGoalPrerequisiteCheckCommand("pnpm install left-pad")).toEqual({
|
|
33
|
-
safe: false,
|
|
34
|
-
reason: "package mutation command",
|
|
35
|
-
});
|
|
36
|
-
expect(validateGoalPrerequisiteCheckCommand("echo secret > leaked.txt")).toEqual({
|
|
37
|
-
safe: false,
|
|
38
|
-
reason: "shell redirection that writes files",
|
|
39
|
-
});
|
|
40
|
-
expect(validateGoalPrerequisiteCheckCommand("test -f package.json")).toEqual({ safe: true });
|
|
41
|
-
const tmpProject = await fs.mkdtemp(path.join(os.tmpdir(), "goal-prereq-safety-project-"));
|
|
42
|
-
try {
|
|
43
|
-
const result = await runGoalPrerequisiteCheckCommand({
|
|
44
|
-
cwd: tmpProject,
|
|
45
|
-
command: "echo unsafe > should-not-exist.txt",
|
|
46
|
-
});
|
|
47
|
-
expect(result.status).toBe("missing");
|
|
48
|
-
expect(result.evidence).toContain("rejected as unsafe");
|
|
49
|
-
await expect(fs.access(path.join(tmpProject, "should-not-exist.txt"))).rejects.toThrow();
|
|
50
|
-
}
|
|
51
|
-
finally {
|
|
52
|
-
await fs.rm(tmpProject, { recursive: true, force: true });
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
it("runs cheap local check commands and records non-secret evidence", async () => {
|
|
56
|
-
const tmpProject = await fs.mkdtemp(path.join(os.tmpdir(), "goal-prereq-test-project-"));
|
|
57
|
-
try {
|
|
58
|
-
await fs.writeFile(path.join(tmpProject, "fixture.txt"), "ready", "utf-8");
|
|
59
|
-
const result = await runGoalPrerequisiteCheckCommand({
|
|
60
|
-
cwd: tmpProject,
|
|
61
|
-
command: "test -f fixture.txt",
|
|
62
|
-
});
|
|
63
|
-
expect(result.status).toBe("met");
|
|
64
|
-
expect(result.evidence).toContain("`test -f fixture.txt` exited 0");
|
|
65
|
-
}
|
|
66
|
-
finally {
|
|
67
|
-
await fs.rm(tmpProject, { recursive: true, force: true });
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
it("only skips prerequisites that are met with recorded evidence", () => {
|
|
71
|
-
expect(shouldRunGoalPrerequisiteCheck({
|
|
72
|
-
id: "checked",
|
|
73
|
-
label: "Checked",
|
|
74
|
-
status: "met",
|
|
75
|
-
evidence: "Already checked.",
|
|
76
|
-
checkCommand: "true",
|
|
77
|
-
})).toBe(false);
|
|
78
|
-
expect(shouldRunGoalPrerequisiteCheck({
|
|
79
|
-
id: "unchecked",
|
|
80
|
-
label: "Unchecked",
|
|
81
|
-
status: "met",
|
|
82
|
-
checkCommand: "true",
|
|
83
|
-
})).toBe(true);
|
|
84
|
-
expect(shouldRunGoalPrerequisiteCheck({
|
|
85
|
-
id: "unknown",
|
|
86
|
-
label: "Unknown",
|
|
87
|
-
status: "unknown",
|
|
88
|
-
checkCommand: "true",
|
|
89
|
-
})).toBe(true);
|
|
90
|
-
});
|
|
91
|
-
it("infers prerequisite kind and keeps explicit kind", () => {
|
|
92
|
-
expect(prerequisiteKind({ id: "a", label: "a", status: "unknown", checkCommand: "true" })).toBe("local");
|
|
93
|
-
expect(prerequisiteKind({ id: "b", label: "b", status: "unknown" })).toBe("external");
|
|
94
|
-
expect(prerequisiteKind({
|
|
95
|
-
id: "c",
|
|
96
|
-
label: "c",
|
|
97
|
-
status: "unknown",
|
|
98
|
-
kind: "external",
|
|
99
|
-
checkCommand: "true",
|
|
100
|
-
})).toBe("external");
|
|
101
|
-
expect(prerequisiteKind({ id: "d", label: "d", status: "unknown", kind: "local" })).toBe("local");
|
|
102
|
-
});
|
|
103
|
-
it("local unmet prerequisites do not block; external unmet ones do", () => {
|
|
104
|
-
const localPrereq = {
|
|
105
|
-
id: "node",
|
|
106
|
-
label: "Node",
|
|
107
|
-
status: "missing",
|
|
108
|
-
checkCommand: "node --version",
|
|
109
|
-
};
|
|
110
|
-
const externalPrereq = { id: "key", label: "API key", status: "missing" };
|
|
111
|
-
expect(isBlockingGoalPrerequisite(localPrereq)).toBe(false);
|
|
112
|
-
expect(isBlockingGoalPrerequisite(externalPrereq)).toBe(true);
|
|
113
|
-
const localOnly = goalRun({ prerequisites: [localPrereq] });
|
|
114
|
-
expect(goalHasBlockingPrerequisites(localOnly)).toBe(false);
|
|
115
|
-
expect(goalHasUnmetLocalPrerequisites(localOnly)).toBe(true);
|
|
116
|
-
const withExternal = goalRun({ prerequisites: [localPrereq, externalPrereq] });
|
|
117
|
-
expect(goalHasBlockingPrerequisites(withExternal)).toBe(true);
|
|
118
|
-
});
|
|
119
|
-
it("updates a Goal run with checked prerequisite statuses before workers start", async () => {
|
|
120
|
-
const tmpProject = await fs.mkdtemp(path.join(os.tmpdir(), "goal-prereq-test-project-"));
|
|
121
|
-
try {
|
|
122
|
-
const result = await runGoalPrerequisiteChecks(tmpProject, goalRun({
|
|
123
|
-
prerequisites: [
|
|
124
|
-
{
|
|
125
|
-
id: "pass",
|
|
126
|
-
label: "Passing check",
|
|
127
|
-
status: "unknown",
|
|
128
|
-
kind: "local",
|
|
129
|
-
checkCommand: "true",
|
|
130
|
-
},
|
|
131
|
-
{ id: "fail", label: "Failing check", status: "unknown", checkCommand: "false" },
|
|
132
|
-
],
|
|
133
|
-
}));
|
|
134
|
-
expect(result.checkedCount).toBe(2);
|
|
135
|
-
expect(result.run.prerequisites).toEqual([
|
|
136
|
-
expect.objectContaining({
|
|
137
|
-
id: "pass",
|
|
138
|
-
status: "met",
|
|
139
|
-
kind: "local",
|
|
140
|
-
evidence: expect.stringContaining("exited 0"),
|
|
141
|
-
}),
|
|
142
|
-
expect.objectContaining({
|
|
143
|
-
id: "fail",
|
|
144
|
-
status: "missing",
|
|
145
|
-
evidence: expect.stringContaining("exited 1"),
|
|
146
|
-
}),
|
|
147
|
-
]);
|
|
148
|
-
}
|
|
149
|
-
finally {
|
|
150
|
-
await fs.rm(tmpProject, { recursive: true, force: true });
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
//# sourceMappingURL=goal-prerequisites.test.js.map
|