@kenkaiiii/ggcoder 4.3.232 → 4.3.233

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.
Files changed (348) hide show
  1. package/README.md +1 -2
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +7 -89
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/agent-session.d.ts.map +1 -1
  6. package/dist/core/agent-session.js +2 -2
  7. package/dist/core/agent-session.js.map +1 -1
  8. package/dist/core/prompt-commands.d.ts.map +1 -1
  9. package/dist/core/prompt-commands.js +8 -16
  10. package/dist/core/prompt-commands.js.map +1 -1
  11. package/dist/core/prompt-commands.test.js +14 -44
  12. package/dist/core/prompt-commands.test.js.map +1 -1
  13. package/dist/core/runtime-mode.d.ts +0 -11
  14. package/dist/core/runtime-mode.d.ts.map +1 -1
  15. package/dist/core/runtime-mode.js +0 -9
  16. package/dist/core/runtime-mode.js.map +1 -1
  17. package/dist/core/session-restore-display.test.js +4 -110
  18. package/dist/core/session-restore-display.test.js.map +1 -1
  19. package/dist/interactive.d.ts.map +1 -1
  20. package/dist/interactive.js +1 -1
  21. package/dist/interactive.js.map +1 -1
  22. package/dist/system-prompt.d.ts +1 -2
  23. package/dist/system-prompt.d.ts.map +1 -1
  24. package/dist/system-prompt.js +11 -58
  25. package/dist/system-prompt.js.map +1 -1
  26. package/dist/system-prompt.test.js +3 -158
  27. package/dist/system-prompt.test.js.map +1 -1
  28. package/dist/tools/bash.d.ts +1 -4
  29. package/dist/tools/bash.d.ts.map +1 -1
  30. package/dist/tools/bash.js +3 -12
  31. package/dist/tools/bash.js.map +1 -1
  32. package/dist/tools/checkpoint-hook.test.js +3 -3
  33. package/dist/tools/checkpoint-hook.test.js.map +1 -1
  34. package/dist/tools/edit.d.ts +1 -4
  35. package/dist/tools/edit.d.ts.map +1 -1
  36. package/dist/tools/edit.js +5 -13
  37. package/dist/tools/edit.js.map +1 -1
  38. package/dist/tools/enter-plan.js +1 -1
  39. package/dist/tools/enter-plan.js.map +1 -1
  40. package/dist/tools/index.d.ts +0 -9
  41. package/dist/tools/index.d.ts.map +1 -1
  42. package/dist/tools/index.js +4 -8
  43. package/dist/tools/index.js.map +1 -1
  44. package/dist/tools/prompt-hints.d.ts.map +1 -1
  45. package/dist/tools/prompt-hints.js +0 -2
  46. package/dist/tools/prompt-hints.js.map +1 -1
  47. package/dist/tools/screenshot.d.ts +1 -1
  48. package/dist/tools/subagent.d.ts +1 -4
  49. package/dist/tools/subagent.d.ts.map +1 -1
  50. package/dist/tools/subagent.js +2 -5
  51. package/dist/tools/subagent.js.map +1 -1
  52. package/dist/tools/write.d.ts +1 -4
  53. package/dist/tools/write.d.ts.map +1 -1
  54. package/dist/tools/write.js +5 -13
  55. package/dist/tools/write.js.map +1 -1
  56. package/dist/ui/App.d.ts +5 -20
  57. package/dist/ui/App.d.ts.map +1 -1
  58. package/dist/ui/App.js +71 -309
  59. package/dist/ui/App.js.map +1 -1
  60. package/dist/ui/app-items.d.ts +23 -25
  61. package/dist/ui/app-items.d.ts.map +1 -1
  62. package/dist/ui/app-items.js +37 -0
  63. package/dist/ui/app-items.js.map +1 -1
  64. package/dist/ui/app-items.test.d.ts +2 -0
  65. package/dist/ui/app-items.test.d.ts.map +1 -0
  66. package/dist/ui/app-items.test.js +38 -0
  67. package/dist/ui/app-items.test.js.map +1 -0
  68. package/dist/ui/app-state-persistence.test.js +14 -318
  69. package/dist/ui/app-state-persistence.test.js.map +1 -1
  70. package/dist/ui/chat-layout-pinning.test.js +74 -4
  71. package/dist/ui/chat-layout-pinning.test.js.map +1 -1
  72. package/dist/ui/components/AssistantMessage.test.js +6 -9
  73. package/dist/ui/components/AssistantMessage.test.js.map +1 -1
  74. package/dist/ui/components/Banner.js +1 -1
  75. package/dist/ui/components/Banner.js.map +1 -1
  76. package/dist/ui/components/ChatFooterPane.d.ts +1 -5
  77. package/dist/ui/components/ChatFooterPane.d.ts.map +1 -1
  78. package/dist/ui/components/ChatFooterPane.js +3 -4
  79. package/dist/ui/components/ChatFooterPane.js.map +1 -1
  80. package/dist/ui/components/ChatInputStack.d.ts +3 -1
  81. package/dist/ui/components/ChatInputStack.d.ts.map +1 -1
  82. package/dist/ui/components/ChatInputStack.js +4 -3
  83. package/dist/ui/components/ChatInputStack.js.map +1 -1
  84. package/dist/ui/components/ChatScreen.d.ts +3 -16
  85. package/dist/ui/components/ChatScreen.d.ts.map +1 -1
  86. package/dist/ui/components/ChatScreen.js +2 -3
  87. package/dist/ui/components/ChatScreen.js.map +1 -1
  88. package/dist/ui/components/Footer.d.ts +3 -8
  89. package/dist/ui/components/Footer.d.ts.map +1 -1
  90. package/dist/ui/components/Footer.js +5 -25
  91. package/dist/ui/components/Footer.js.map +1 -1
  92. package/dist/ui/components/InputArea.d.ts +1 -9
  93. package/dist/ui/components/InputArea.d.ts.map +1 -1
  94. package/dist/ui/components/InputArea.js +2 -44
  95. package/dist/ui/components/InputArea.js.map +1 -1
  96. package/dist/ui/components/LiveToolPanel.d.ts +30 -0
  97. package/dist/ui/components/LiveToolPanel.d.ts.map +1 -0
  98. package/dist/ui/components/LiveToolPanel.js +66 -0
  99. package/dist/ui/components/LiveToolPanel.js.map +1 -0
  100. package/dist/ui/components/ToolExecution.js +0 -2
  101. package/dist/ui/components/ToolExecution.js.map +1 -1
  102. package/dist/ui/components/TranscriptViewport.d.ts +1 -1
  103. package/dist/ui/components/TranscriptViewport.js +1 -1
  104. package/dist/ui/footer-jump-regression.test.js +12 -2
  105. package/dist/ui/footer-jump-regression.test.js.map +1 -1
  106. package/dist/ui/footer-status-layout.test.js +4 -12
  107. package/dist/ui/footer-status-layout.test.js.map +1 -1
  108. package/dist/ui/hooks/useChatLayoutMeasurements.d.ts +3 -4
  109. package/dist/ui/hooks/useChatLayoutMeasurements.d.ts.map +1 -1
  110. package/dist/ui/hooks/useChatLayoutMeasurements.js +26 -4
  111. package/dist/ui/hooks/useChatLayoutMeasurements.js.map +1 -1
  112. package/dist/ui/hooks/useModeState.d.ts +4 -19
  113. package/dist/ui/hooks/useModeState.d.ts.map +1 -1
  114. package/dist/ui/hooks/useModeState.js +5 -45
  115. package/dist/ui/hooks/useModeState.js.map +1 -1
  116. package/dist/ui/hooks/usePixelFixFlow.js +2 -2
  117. package/dist/ui/layout-decisions.d.ts +11 -34
  118. package/dist/ui/layout-decisions.d.ts.map +1 -1
  119. package/dist/ui/layout-decisions.js +15 -42
  120. package/dist/ui/layout-decisions.js.map +1 -1
  121. package/dist/ui/live-area-height.d.ts.map +1 -1
  122. package/dist/ui/live-area-height.js +6 -1
  123. package/dist/ui/live-area-height.js.map +1 -1
  124. package/dist/ui/live-frame-height.test.js +26 -1
  125. package/dist/ui/live-frame-height.test.js.map +1 -1
  126. package/dist/ui/plan-overlay.test.js +1 -1
  127. package/dist/ui/plan-overlay.test.js.map +1 -1
  128. package/dist/ui/prompt-routing.d.ts +1 -19
  129. package/dist/ui/prompt-routing.d.ts.map +1 -1
  130. package/dist/ui/prompt-routing.js +1 -79
  131. package/dist/ui/prompt-routing.js.map +1 -1
  132. package/dist/ui/render.d.ts +3 -18
  133. package/dist/ui/render.d.ts.map +1 -1
  134. package/dist/ui/render.js +0 -10
  135. package/dist/ui/render.js.map +1 -1
  136. package/dist/ui/scroll-stabilization.test.js +1 -7
  137. package/dist/ui/scroll-stabilization.test.js.map +1 -1
  138. package/dist/ui/slash-command-images.test.js +11 -86
  139. package/dist/ui/slash-command-images.test.js.map +1 -1
  140. package/dist/ui/streaming-flush-bounce.test.d.ts +2 -0
  141. package/dist/ui/streaming-flush-bounce.test.d.ts.map +1 -0
  142. package/dist/ui/streaming-flush-bounce.test.js +156 -0
  143. package/dist/ui/streaming-flush-bounce.test.js.map +1 -0
  144. package/dist/ui/submit-prompt-command.d.ts +1 -16
  145. package/dist/ui/submit-prompt-command.d.ts.map +1 -1
  146. package/dist/ui/submit-prompt-command.js +4 -54
  147. package/dist/ui/submit-prompt-command.js.map +1 -1
  148. package/dist/ui/submit-slash-commands.d.ts +0 -1
  149. package/dist/ui/submit-slash-commands.d.ts.map +1 -1
  150. package/dist/ui/submit-slash-commands.js +0 -4
  151. package/dist/ui/submit-slash-commands.js.map +1 -1
  152. package/dist/ui/terminal-history-status-renderers.d.ts +0 -1
  153. package/dist/ui/terminal-history-status-renderers.d.ts.map +1 -1
  154. package/dist/ui/terminal-history-status-renderers.js +0 -3
  155. package/dist/ui/terminal-history-status-renderers.js.map +1 -1
  156. package/dist/ui/terminal-history.d.ts.map +1 -1
  157. package/dist/ui/terminal-history.js +11 -56
  158. package/dist/ui/terminal-history.js.map +1 -1
  159. package/dist/ui/terminal-history.test.js +6 -33
  160. package/dist/ui/terminal-history.test.js.map +1 -1
  161. package/dist/ui/tool-line-summary.d.ts +29 -0
  162. package/dist/ui/tool-line-summary.d.ts.map +1 -0
  163. package/dist/ui/tool-line-summary.js +153 -0
  164. package/dist/ui/tool-line-summary.js.map +1 -0
  165. package/dist/ui/transcript/TranscriptRenderer.d.ts +1 -1
  166. package/dist/ui/transcript/TranscriptRenderer.d.ts.map +1 -1
  167. package/dist/ui/transcript/TranscriptRenderer.js +18 -12
  168. package/dist/ui/transcript/TranscriptRenderer.js.map +1 -1
  169. package/dist/ui/transcript/presentation.d.ts +1 -17
  170. package/dist/ui/transcript/presentation.d.ts.map +1 -1
  171. package/dist/ui/transcript/presentation.js +0 -26
  172. package/dist/ui/transcript/presentation.js.map +1 -1
  173. package/dist/ui/transcript/spacing.d.ts +2 -2
  174. package/dist/ui/transcript/spacing.d.ts.map +1 -1
  175. package/dist/ui/transcript/spacing.js +14 -9
  176. package/dist/ui/transcript/spacing.js.map +1 -1
  177. package/dist/ui/transcript/spacing.test.js +5 -8
  178. package/dist/ui/transcript/spacing.test.js.map +1 -1
  179. package/dist/ui/transcript/tool-presentation.js +1 -1
  180. package/dist/ui/transcript/tool-presentation.js.map +1 -1
  181. package/dist/ui/transcript/transcript-lines.d.ts.map +1 -1
  182. package/dist/ui/transcript/transcript-lines.js +4 -0
  183. package/dist/ui/transcript/transcript-lines.js.map +1 -1
  184. package/dist/ui/tui-history-parity.test.js +0 -47
  185. package/dist/ui/tui-history-parity.test.js.map +1 -1
  186. package/dist/ui/tui-simulation.test.js +2 -1
  187. package/dist/ui/tui-simulation.test.js.map +1 -1
  188. package/package.json +4 -4
  189. package/dist/core/goal-controller.d.ts +0 -82
  190. package/dist/core/goal-controller.d.ts.map +0 -1
  191. package/dist/core/goal-controller.js +0 -838
  192. package/dist/core/goal-controller.js.map +0 -1
  193. package/dist/core/goal-controller.test.d.ts +0 -2
  194. package/dist/core/goal-controller.test.d.ts.map +0 -1
  195. package/dist/core/goal-controller.test.js +0 -1279
  196. package/dist/core/goal-controller.test.js.map +0 -1
  197. package/dist/core/goal-engine.d.ts +0 -61
  198. package/dist/core/goal-engine.d.ts.map +0 -1
  199. package/dist/core/goal-engine.js +0 -123
  200. package/dist/core/goal-engine.js.map +0 -1
  201. package/dist/core/goal-engine.test.d.ts +0 -2
  202. package/dist/core/goal-engine.test.d.ts.map +0 -1
  203. package/dist/core/goal-engine.test.js +0 -295
  204. package/dist/core/goal-engine.test.js.map +0 -1
  205. package/dist/core/goal-integration.d.ts +0 -80
  206. package/dist/core/goal-integration.d.ts.map +0 -1
  207. package/dist/core/goal-integration.js +0 -296
  208. package/dist/core/goal-integration.js.map +0 -1
  209. package/dist/core/goal-integration.test.d.ts +0 -2
  210. package/dist/core/goal-integration.test.d.ts.map +0 -1
  211. package/dist/core/goal-integration.test.js +0 -369
  212. package/dist/core/goal-integration.test.js.map +0 -1
  213. package/dist/core/goal-lifecycle-smoke.test.d.ts +0 -2
  214. package/dist/core/goal-lifecycle-smoke.test.d.ts.map +0 -1
  215. package/dist/core/goal-lifecycle-smoke.test.js +0 -248
  216. package/dist/core/goal-lifecycle-smoke.test.js.map +0 -1
  217. package/dist/core/goal-overhead-harness.d.ts +0 -33
  218. package/dist/core/goal-overhead-harness.d.ts.map +0 -1
  219. package/dist/core/goal-overhead-harness.js +0 -268
  220. package/dist/core/goal-overhead-harness.js.map +0 -1
  221. package/dist/core/goal-prerequisites.d.ts +0 -23
  222. package/dist/core/goal-prerequisites.d.ts.map +0 -1
  223. package/dist/core/goal-prerequisites.js +0 -114
  224. package/dist/core/goal-prerequisites.js.map +0 -1
  225. package/dist/core/goal-prerequisites.test.d.ts +0 -2
  226. package/dist/core/goal-prerequisites.test.d.ts.map +0 -1
  227. package/dist/core/goal-prerequisites.test.js +0 -154
  228. package/dist/core/goal-prerequisites.test.js.map +0 -1
  229. package/dist/core/goal-references.d.ts +0 -14
  230. package/dist/core/goal-references.d.ts.map +0 -1
  231. package/dist/core/goal-references.js +0 -153
  232. package/dist/core/goal-references.js.map +0 -1
  233. package/dist/core/goal-references.test.d.ts +0 -2
  234. package/dist/core/goal-references.test.d.ts.map +0 -1
  235. package/dist/core/goal-references.test.js +0 -77
  236. package/dist/core/goal-references.test.js.map +0 -1
  237. package/dist/core/goal-store.d.ts +0 -289
  238. package/dist/core/goal-store.d.ts.map +0 -1
  239. package/dist/core/goal-store.js +0 -1156
  240. package/dist/core/goal-store.js.map +0 -1
  241. package/dist/core/goal-store.test.d.ts +0 -2
  242. package/dist/core/goal-store.test.d.ts.map +0 -1
  243. package/dist/core/goal-store.test.js +0 -530
  244. package/dist/core/goal-store.test.js.map +0 -1
  245. package/dist/core/goal-verifier.d.ts +0 -17
  246. package/dist/core/goal-verifier.d.ts.map +0 -1
  247. package/dist/core/goal-verifier.js +0 -87
  248. package/dist/core/goal-verifier.js.map +0 -1
  249. package/dist/core/goal-verifier.test.d.ts +0 -2
  250. package/dist/core/goal-verifier.test.d.ts.map +0 -1
  251. package/dist/core/goal-verifier.test.js +0 -131
  252. package/dist/core/goal-verifier.test.js.map +0 -1
  253. package/dist/core/goal-worker-dev-server-lifecycle.test.d.ts +0 -2
  254. package/dist/core/goal-worker-dev-server-lifecycle.test.d.ts.map +0 -1
  255. package/dist/core/goal-worker-dev-server-lifecycle.test.js +0 -68
  256. package/dist/core/goal-worker-dev-server-lifecycle.test.js.map +0 -1
  257. package/dist/core/goal-worker.d.ts +0 -61
  258. package/dist/core/goal-worker.d.ts.map +0 -1
  259. package/dist/core/goal-worker.js +0 -467
  260. package/dist/core/goal-worker.js.map +0 -1
  261. package/dist/core/goal-worker.test.d.ts +0 -2
  262. package/dist/core/goal-worker.test.d.ts.map +0 -1
  263. package/dist/core/goal-worker.test.js +0 -493
  264. package/dist/core/goal-worker.test.js.map +0 -1
  265. package/dist/core/goal-worktree.d.ts +0 -108
  266. package/dist/core/goal-worktree.d.ts.map +0 -1
  267. package/dist/core/goal-worktree.js +0 -300
  268. package/dist/core/goal-worktree.js.map +0 -1
  269. package/dist/core/goal-worktree.test.d.ts +0 -2
  270. package/dist/core/goal-worktree.test.d.ts.map +0 -1
  271. package/dist/core/goal-worktree.test.js +0 -448
  272. package/dist/core/goal-worktree.test.js.map +0 -1
  273. package/dist/tools/goal-mode.test.d.ts +0 -2
  274. package/dist/tools/goal-mode.test.d.ts.map +0 -1
  275. package/dist/tools/goal-mode.test.js +0 -121
  276. package/dist/tools/goal-mode.test.js.map +0 -1
  277. package/dist/tools/goals.d.ts +0 -143
  278. package/dist/tools/goals.d.ts.map +0 -1
  279. package/dist/tools/goals.js +0 -1038
  280. package/dist/tools/goals.js.map +0 -1
  281. package/dist/tools/goals.test.d.ts +0 -2
  282. package/dist/tools/goals.test.d.ts.map +0 -1
  283. package/dist/tools/goals.test.js +0 -1444
  284. package/dist/tools/goals.test.js.map +0 -1
  285. package/dist/ui/components/GoalOverlay.d.ts +0 -83
  286. package/dist/ui/components/GoalOverlay.d.ts.map +0 -1
  287. package/dist/ui/components/GoalOverlay.js +0 -710
  288. package/dist/ui/components/GoalOverlay.js.map +0 -1
  289. package/dist/ui/components/GoalPickerMenu.d.ts +0 -9
  290. package/dist/ui/components/GoalPickerMenu.d.ts.map +0 -1
  291. package/dist/ui/components/GoalPickerMenu.js +0 -37
  292. package/dist/ui/components/GoalPickerMenu.js.map +0 -1
  293. package/dist/ui/components/GoalStatusBar.d.ts +0 -26
  294. package/dist/ui/components/GoalStatusBar.d.ts.map +0 -1
  295. package/dist/ui/components/GoalStatusBar.js +0 -130
  296. package/dist/ui/components/GoalStatusBar.js.map +0 -1
  297. package/dist/ui/components/GoalStatusBar.test.d.ts +0 -2
  298. package/dist/ui/components/GoalStatusBar.test.d.ts.map +0 -1
  299. package/dist/ui/components/GoalStatusBar.test.js +0 -17
  300. package/dist/ui/components/GoalStatusBar.test.js.map +0 -1
  301. package/dist/ui/goal-events.d.ts +0 -125
  302. package/dist/ui/goal-events.d.ts.map +0 -1
  303. package/dist/ui/goal-events.js +0 -407
  304. package/dist/ui/goal-events.js.map +0 -1
  305. package/dist/ui/goal-events.test.d.ts +0 -2
  306. package/dist/ui/goal-events.test.d.ts.map +0 -1
  307. package/dist/ui/goal-events.test.js +0 -416
  308. package/dist/ui/goal-events.test.js.map +0 -1
  309. package/dist/ui/goal-lifecycle-orchestration.test.d.ts +0 -2
  310. package/dist/ui/goal-lifecycle-orchestration.test.d.ts.map +0 -1
  311. package/dist/ui/goal-lifecycle-orchestration.test.js +0 -555
  312. package/dist/ui/goal-lifecycle-orchestration.test.js.map +0 -1
  313. package/dist/ui/goal-overlay.test.d.ts +0 -2
  314. package/dist/ui/goal-overlay.test.d.ts.map +0 -1
  315. package/dist/ui/goal-overlay.test.js +0 -384
  316. package/dist/ui/goal-overlay.test.js.map +0 -1
  317. package/dist/ui/goal-progress.d.ts +0 -31
  318. package/dist/ui/goal-progress.d.ts.map +0 -1
  319. package/dist/ui/goal-progress.js +0 -149
  320. package/dist/ui/goal-progress.js.map +0 -1
  321. package/dist/ui/goal-run-helpers.d.ts +0 -12
  322. package/dist/ui/goal-run-helpers.d.ts.map +0 -1
  323. package/dist/ui/goal-run-helpers.js +0 -42
  324. package/dist/ui/goal-run-helpers.js.map +0 -1
  325. package/dist/ui/goal-status-bar.test.d.ts +0 -2
  326. package/dist/ui/goal-status-bar.test.d.ts.map +0 -1
  327. package/dist/ui/goal-status-bar.test.js +0 -174
  328. package/dist/ui/goal-status-bar.test.js.map +0 -1
  329. package/dist/ui/goal-summary.d.ts +0 -14
  330. package/dist/ui/goal-summary.d.ts.map +0 -1
  331. package/dist/ui/goal-summary.js +0 -194
  332. package/dist/ui/goal-summary.js.map +0 -1
  333. package/dist/ui/hooks/useGoalOrchestration.d.ts +0 -82
  334. package/dist/ui/hooks/useGoalOrchestration.d.ts.map +0 -1
  335. package/dist/ui/hooks/useGoalOrchestration.js +0 -863
  336. package/dist/ui/hooks/useGoalOrchestration.js.map +0 -1
  337. package/dist/ui/hooks/useGoalPickerController.d.ts +0 -22
  338. package/dist/ui/hooks/useGoalPickerController.d.ts.map +0 -1
  339. package/dist/ui/hooks/useGoalPickerController.js +0 -35
  340. package/dist/ui/hooks/useGoalPickerController.js.map +0 -1
  341. package/dist/ui/prompt-routing.test.d.ts +0 -2
  342. package/dist/ui/prompt-routing.test.d.ts.map +0 -1
  343. package/dist/ui/prompt-routing.test.js +0 -48
  344. package/dist/ui/prompt-routing.test.js.map +0 -1
  345. package/dist/ui/transcript/GoalRows.d.ts +0 -10
  346. package/dist/ui/transcript/GoalRows.d.ts.map +0 -1
  347. package/dist/ui/transcript/GoalRows.js +0 -35
  348. package/dist/ui/transcript/GoalRows.js.map +0 -1
@@ -1,493 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
- import { EventEmitter } from "node:events";
3
- import { PassThrough } from "node:stream";
4
- import fs from "node:fs/promises";
5
- import os from "node:os";
6
- import path from "node:path";
7
- import { getGoalRun, updateGoalTask, upsertGoalRun } from "./goal-store.js";
8
- const spawnMock = vi.hoisted(() => vi.fn());
9
- const killProcessTreeMock = vi.hoisted(() => vi.fn());
10
- vi.mock("node:child_process", () => ({ spawn: spawnMock, execFile: vi.fn() }));
11
- vi.mock("../utils/process.js", () => ({ killProcessTree: killProcessTreeMock }));
12
- class FakeChild extends EventEmitter {
13
- stdout = new PassThrough();
14
- stderr = new PassThrough();
15
- pid = 4242;
16
- kill = vi.fn();
17
- }
18
- let tmpBase;
19
- let tmpProject;
20
- let child;
21
- async function flushUntil(assertion) {
22
- let lastError;
23
- for (let i = 0; i < 50; i += 1) {
24
- await new Promise((resolve) => setTimeout(resolve, 1));
25
- try {
26
- await assertion();
27
- return;
28
- }
29
- catch (error) {
30
- lastError = error;
31
- }
32
- }
33
- throw lastError;
34
- }
35
- async function seedGoal() {
36
- await upsertGoalRun(tmpProject, {
37
- id: "goal-a",
38
- title: "Worker harness",
39
- goal: "Exercise worker exits",
40
- status: "ready",
41
- successCriteria: ["worker covered"],
42
- prerequisites: [],
43
- harness: [],
44
- tasks: [],
45
- evidence: [],
46
- blockers: [],
47
- });
48
- await updateGoalTask(tmpProject, "goal-a", "task-a", {
49
- id: "task-a",
50
- title: "Run worker",
51
- prompt: "Do work",
52
- status: "pending",
53
- attempts: 0,
54
- });
55
- }
56
- async function start(onComplete = vi.fn()) {
57
- const mod = await import("./goal-worker.js");
58
- const record = await mod.startGoalWorker({
59
- cwd: tmpProject,
60
- provider: "anthropic",
61
- model: "claude-test",
62
- goalRunId: "goal-a",
63
- goalTaskId: "task-a",
64
- prompt: "Do deterministic work",
65
- isolateWorktree: false,
66
- onComplete,
67
- });
68
- return { mod, record, onComplete };
69
- }
70
- beforeEach(async () => {
71
- tmpBase = await fs.mkdtemp(path.join(os.tmpdir(), "goal-worker-test-base-"));
72
- tmpProject = await fs.mkdtemp(path.join(os.tmpdir(), "goal-worker-test-project-"));
73
- process.env.GG_GOALS_BASE = tmpBase;
74
- child = new FakeChild();
75
- spawnMock.mockReturnValue(child);
76
- killProcessTreeMock.mockReset();
77
- process.argv[1] = "/tmp/fake-ggcoder-cli.js";
78
- await seedGoal();
79
- });
80
- afterEach(async () => {
81
- const mod = await import("./goal-worker.js");
82
- mod.shutdownGoalWorkers(tmpProject);
83
- vi.clearAllMocks();
84
- delete process.env.GG_GOALS_BASE;
85
- await fs.rm(tmpBase, { recursive: true, force: true });
86
- await fs.rm(tmpProject, { recursive: true, force: true });
87
- });
88
- describe("goal worker failure propagation", () => {
89
- it("times out hanging workers, kills the process tree, and records timeout evidence", async () => {
90
- vi.useFakeTimers();
91
- const onComplete = vi.fn();
92
- const mod = await import("./goal-worker.js");
93
- const record = await mod.startGoalWorker({
94
- cwd: tmpProject,
95
- provider: "anthropic",
96
- model: "claude-test",
97
- goalRunId: "goal-a",
98
- goalTaskId: "task-a",
99
- prompt: "Hang forever",
100
- isolateWorktree: false,
101
- timeoutMs: 10,
102
- onComplete,
103
- });
104
- await vi.advanceTimersByTimeAsync(11);
105
- child.emit("close", null);
106
- await vi.runOnlyPendingTimersAsync();
107
- vi.useRealTimers();
108
- await flushUntil(() => expect(onComplete).toHaveBeenCalled());
109
- const run = await getGoalRun(tmpProject, "goal-a");
110
- expect(killProcessTreeMock).toHaveBeenCalledWith(4242);
111
- expect(record.status).toBe("failed");
112
- expect(run?.activeWorkerId).toBeUndefined();
113
- expect(run?.tasks[0]).toMatchObject({
114
- status: "failed",
115
- workerId: record.id,
116
- lastSummary: expect.stringContaining("timed out after 10ms"),
117
- });
118
- expect(run?.evidence.some((item) => item.label === `Worker ${record.id} timeout`)).toBe(true);
119
- expect(onComplete).toHaveBeenCalledWith(expect.objectContaining({ status: "failed", exitCode: 124, reason: "timeout" }));
120
- });
121
- it("prompts workers with explicit durable Goal context before claiming verification", async () => {
122
- await start();
123
- const args = spawnMock.mock.calls[0]?.[1];
124
- const systemPromptIndex = args.indexOf("--system-prompt") + 1;
125
- const prompt = args[systemPromptIndex];
126
- expect(args).not.toContain("--thinking");
127
- expect(prompt).toContain(`cwd=${tmpProject}`);
128
- expect(prompt).toContain("run_id=goal-a");
129
- expect(prompt).toContain("task_id=task-a");
130
- expect(prompt).toContain("model the intended experience");
131
- expect(prompt).toContain("choose the required senses/signals");
132
- expect(prompt).toContain("simplest local/free proof path");
133
- expect(prompt).toContain("when they directly observe those signals");
134
- expect(prompt).toContain("source_path/docs/kencode research when relevant");
135
- expect(prompt).toContain("do not default to generic artifacts");
136
- expect(prompt).toContain("command/file/screenshot/log evidence");
137
- expect(prompt).toContain("isolated git worktree");
138
- expect(prompt).toContain("do not merge or touch the main checkout");
139
- expect(prompt).toContain("candidate packet");
140
- expect(prompt).toContain("base SHA");
141
- expect(prompt).toContain("diffstat");
142
- expect(prompt).toContain("patch path");
143
- expect(prompt).toContain("depends_on");
144
- expect(prompt).toContain("parallel_group");
145
- expect(prompt).toContain("expected_changed_scope");
146
- expect(prompt).toContain("integration");
147
- expect(prompt).toContain('goals({ action: "evidence" | "task", run_id: "goal-a", task_id: "task-a"');
148
- });
149
- it("passes the active thinking level to the worker CLI when enabled", async () => {
150
- const mod = await import("./goal-worker.js");
151
- await mod.startGoalWorker({
152
- cwd: tmpProject,
153
- provider: "anthropic",
154
- model: "claude-test",
155
- thinkingLevel: "xhigh",
156
- goalRunId: "goal-a",
157
- goalTaskId: "task-a",
158
- prompt: "Do deterministic work",
159
- isolateWorktree: false,
160
- });
161
- const args = spawnMock.mock.calls[0]?.[1];
162
- expect(args).toEqual(expect.arrayContaining(["--thinking", "xhigh"]));
163
- });
164
- it("launches workers through JSON mode so they use the AgentSession auto-compaction path", async () => {
165
- await start();
166
- const args = spawnMock.mock.calls[0]?.[1];
167
- expect(args).toEqual(expect.arrayContaining([
168
- "--json",
169
- "--provider",
170
- "anthropic",
171
- "--model",
172
- "claude-test",
173
- "--max-turns",
174
- "12",
175
- "--system-prompt",
176
- ]));
177
- expect(args.at(-1)).toBe("Do deterministic work");
178
- });
179
- it("creates and launches implementation workers inside an isolated git worktree by default", async () => {
180
- const worktreeCalls = [];
181
- const runner = {
182
- execFile: vi.fn(async (_file, args) => {
183
- worktreeCalls.push(args);
184
- if (args[0] === "rev-parse" && args[1] === "--is-inside-work-tree")
185
- return { stdout: "true\n", stderr: "" };
186
- if (args[0] === "rev-parse" && args[1] === "--verify")
187
- return { stdout: "base-sha\n", stderr: "" };
188
- return { stdout: "", stderr: "" };
189
- }),
190
- };
191
- const mod = await import("./goal-worker.js");
192
- const record = await mod.startGoalWorker({
193
- cwd: tmpProject,
194
- provider: "anthropic",
195
- model: "claude-test",
196
- goalRunId: "goal-a",
197
- goalTaskId: "task-a",
198
- prompt: "Do deterministic work",
199
- worktreeBaseRef: "base-sha",
200
- worktreesRoot: path.join(tmpProject, "worktrees"),
201
- worktreeCommandRunner: runner,
202
- });
203
- const spawnOptions = spawnMock.mock.calls[0]?.[2];
204
- const run = await getGoalRun(tmpProject, "goal-a");
205
- expect(record.projectPath).toBe(tmpProject);
206
- expect(record.cwd).toBe(path.join(tmpProject, "worktrees", `task-a-${record.id}`));
207
- expect(record.worktree).toMatchObject({
208
- baseRef: "base-sha",
209
- branchName: `goal/goal-a/task-a-${record.id}`,
210
- path: record.cwd,
211
- });
212
- expect(spawnOptions.cwd).toBe(record.cwd);
213
- expect(spawnOptions.env.GG_GOAL_PROJECT_PATH).toBe(tmpProject);
214
- expect(worktreeCalls).toEqual([
215
- ["rev-parse", "--is-inside-work-tree"],
216
- ["rev-parse", "--verify", "HEAD"],
217
- ["status", "--porcelain"],
218
- ["status", "--porcelain"],
219
- ["worktree", "add", "-b", `goal/goal-a/task-a-${record.id}`, record.cwd, "base-sha"],
220
- ]);
221
- expect(run?.tasks[0]?.worktree).toMatchObject({
222
- baseRef: "base-sha",
223
- branchName: `goal/goal-a/task-a-${record.id}`,
224
- path: record.cwd,
225
- status: "created",
226
- });
227
- expect(run?.evidence.some((item) => item.label === `Worker ${record.id} worktree created` && item.path === record.cwd)).toBe(true);
228
- });
229
- it("launches the apply-integration task in the main checkout", async () => {
230
- const worktreeCalls = [];
231
- const runner = {
232
- execFile: vi.fn(async (_file, args) => {
233
- worktreeCalls.push(args);
234
- return { stdout: "", stderr: "" };
235
- }),
236
- };
237
- const mod = await import("./goal-worker.js");
238
- const record = await mod.startGoalWorker({
239
- cwd: tmpProject,
240
- provider: "anthropic",
241
- model: "claude-test",
242
- goalRunId: "goal-a",
243
- goalTaskId: "task-a",
244
- taskTitle: "Apply integrated worktree to main",
245
- prompt: "Apply accepted integration worktree changes",
246
- isolateWorktree: false,
247
- worktreeCommandRunner: runner,
248
- });
249
- const spawnOptions = spawnMock.mock.calls[0]?.[2];
250
- const args = spawnMock.mock.calls[0]?.[1];
251
- const systemPrompt = args[args.indexOf("--system-prompt") + 1];
252
- const run = await getGoalRun(tmpProject, "goal-a");
253
- expect(record.cwd).toBe(tmpProject);
254
- expect(record.worktree).toBeUndefined();
255
- expect(spawnOptions.cwd).toBe(tmpProject);
256
- expect(worktreeCalls).toEqual([]);
257
- expect(run?.tasks[0]?.worktree).toBeUndefined();
258
- expect(systemPrompt).toContain("controlled exception to worker isolation");
259
- expect(systemPrompt).toContain("main checkout");
260
- });
261
- it("auto-checkpoints a dirty working tree, records evidence, and proceeds", async () => {
262
- let committed = false;
263
- const worktreeCalls = [];
264
- const runner = {
265
- execFile: vi.fn(async (_file, args) => {
266
- worktreeCalls.push(args);
267
- if (args[0] === "rev-parse" && args[1] === "--is-inside-work-tree")
268
- return { stdout: "true\n", stderr: "" };
269
- if (args[0] === "rev-parse" && args[1] === "--verify")
270
- return { stdout: "base-sha\n", stderr: "" };
271
- if (args[0] === "status") {
272
- return committed
273
- ? { stdout: "", stderr: "" }
274
- : { stdout: " M packages/dirty.ts\n", stderr: "" };
275
- }
276
- if (args[0] === "commit") {
277
- committed = true;
278
- return { stdout: "", stderr: "" };
279
- }
280
- if (args[0] === "rev-parse")
281
- return { stdout: "checkpoint-sha\n", stderr: "" };
282
- return { stdout: "", stderr: "" };
283
- }),
284
- };
285
- const mod = await import("./goal-worker.js");
286
- const record = await mod.startGoalWorker({
287
- cwd: tmpProject,
288
- provider: "anthropic",
289
- model: "claude-test",
290
- goalRunId: "goal-a",
291
- goalTaskId: "task-a",
292
- prompt: "Do deterministic work",
293
- worktreeBaseRef: "base-sha",
294
- worktreesRoot: path.join(tmpProject, "worktrees"),
295
- worktreeCommandRunner: runner,
296
- });
297
- expect(spawnMock).toHaveBeenCalled();
298
- expect(record.worktree).toBeDefined();
299
- expect(worktreeCalls).toEqual([
300
- ["rev-parse", "--is-inside-work-tree"],
301
- ["rev-parse", "--verify", "HEAD"],
302
- ["status", "--porcelain"],
303
- ["add", "-A"],
304
- ["commit", "-m", `goal(goal-a): checkpoint uncommitted work before worker ${record.id}`],
305
- ["rev-parse", "HEAD"],
306
- ["status", "--porcelain"],
307
- ["worktree", "add", "-b", `goal/goal-a/task-a-${record.id}`, record.cwd, "base-sha"],
308
- ]);
309
- const run = await getGoalRun(tmpProject, "goal-a");
310
- expect(run?.evidence).toEqual(expect.arrayContaining([
311
- expect.objectContaining({
312
- label: "Goal working tree checkpoint",
313
- content: expect.stringContaining("checkpoint-sha"),
314
- }),
315
- ]));
316
- });
317
- it("fails the task when the checkpoint commit cannot clean the working tree", async () => {
318
- const runner = {
319
- execFile: vi.fn(async (_file, args) => {
320
- if (args[0] === "rev-parse" && args[1] === "--is-inside-work-tree")
321
- return { stdout: "true\n", stderr: "" };
322
- if (args[0] === "rev-parse" && args[1] === "--verify")
323
- return { stdout: "base-sha\n", stderr: "" };
324
- return args[0] === "status"
325
- ? { stdout: " M packages/dirty.ts\n", stderr: "" }
326
- : { stdout: "", stderr: "" };
327
- }),
328
- };
329
- const mod = await import("./goal-worker.js");
330
- await expect(mod.startGoalWorker({
331
- cwd: tmpProject,
332
- provider: "anthropic",
333
- model: "claude-test",
334
- goalRunId: "goal-a",
335
- goalTaskId: "task-a",
336
- prompt: "Do deterministic work",
337
- worktreeCommandRunner: runner,
338
- })).rejects.toThrow("Goal workers need a clean working tree");
339
- const run = await getGoalRun(tmpProject, "goal-a");
340
- expect(spawnMock).not.toHaveBeenCalled();
341
- expect(run?.tasks[0]).toMatchObject({
342
- status: "failed",
343
- lastSummary: expect.stringContaining("clean working tree"),
344
- });
345
- expect(run?.evidence).toEqual(expect.arrayContaining([
346
- expect.objectContaining({
347
- label: expect.stringContaining("worktree failed"),
348
- content: expect.stringContaining("packages/dirty.ts"),
349
- }),
350
- ]));
351
- });
352
- it("exports a testable worker system prompt/context helper", async () => {
353
- const mod = await import("./goal-worker.js");
354
- const prompt = mod.buildGoalWorkerSystemPrompt({
355
- cwd: "/repo",
356
- goalRunId: "goal-123",
357
- goalTaskId: "task-456",
358
- taskTitle: "Implement typed handoff",
359
- });
360
- expect(prompt).toContain("cwd=/repo");
361
- expect(prompt).toContain("run_id=goal-123");
362
- expect(prompt).toContain("task_id=task-456");
363
- expect(prompt).toContain("Implement typed handoff");
364
- expect(prompt).toContain("Do not mark the whole goal complete");
365
- expect(prompt).toContain("do not rely on narrative or human visual inspection");
366
- expect(prompt).toContain("isolated git worktree");
367
- expect(prompt).toContain("candidate packet");
368
- expect(prompt).toContain("depends_on");
369
- expect(prompt).toContain("parallel_group");
370
- });
371
- it("does not mark empty successful process exit as durable task completion", async () => {
372
- const { record, onComplete } = await start();
373
- child.emit("close", 0);
374
- await flushUntil(() => expect(onComplete).toHaveBeenCalled());
375
- const run = await getGoalRun(tmpProject, "goal-a");
376
- expect(record.status).toBe("failed");
377
- expect(run?.tasks[0]).toMatchObject({
378
- status: "failed",
379
- workerId: record.id,
380
- lastSummary: expect.stringContaining("without durable proof evidence"),
381
- });
382
- expect(run?.evidence.some((item) => item.label === `Worker ${record.id} failed`)).toBe(true);
383
- });
384
- it("marks the task done, persists evidence, and notifies callbacks/subscribers for worker success", async () => {
385
- const { mod, record, onComplete } = await start();
386
- const listener = vi.fn();
387
- const unsubscribe = mod.subscribeGoalWorkerCompletions(listener, tmpProject);
388
- child.stdout.write(JSON.stringify({ type: "text_delta", text: "implemented" }) + "\n");
389
- child.stdout.write(JSON.stringify({
390
- type: "tool_call_start",
391
- toolCallId: "tool-a",
392
- name: "bash",
393
- args: { command: "pnpm test" },
394
- }) + "\n");
395
- child.stdout.write(JSON.stringify({ type: "tool_call_end", toolCallId: "tool-a", isError: false }) + "\n");
396
- child.emit("close", 0);
397
- await flushUntil(() => expect(onComplete).toHaveBeenCalled());
398
- const run = await getGoalRun(tmpProject, "goal-a");
399
- expect(record.status).toBe("done");
400
- expect(run?.activeWorkerId).toBeUndefined();
401
- expect(run?.tasks[0]).toMatchObject({
402
- status: "done",
403
- workerId: record.id,
404
- lastSummary: expect.stringContaining("implemented"),
405
- });
406
- expect(run?.evidence.some((item) => item.label === `Worker ${record.id} done` && item.content?.includes("implemented"))).toBe(true);
407
- expect(onComplete).toHaveBeenCalledWith(expect.objectContaining({
408
- status: "done",
409
- exitCode: 0,
410
- toolsUsed: [{ name: "bash", ok: true }],
411
- }));
412
- expect(listener).toHaveBeenCalledWith(expect.objectContaining({
413
- worker: expect.objectContaining({ id: record.id, goalRunId: "goal-a" }),
414
- status: "done",
415
- exitCode: 0,
416
- }));
417
- unsubscribe();
418
- });
419
- it("replays a pending completion to the next subscriber after a remount gap", async () => {
420
- const { mod, record } = await start();
421
- child.stdout.write(JSON.stringify({ type: "text_delta", text: "finished during remount" }) + "\n");
422
- child.emit("close", 0);
423
- await flushUntil(() => expect(record.status).toBe("done"));
424
- const listener = vi.fn();
425
- const unsubscribe = mod.subscribeGoalWorkerCompletions(listener, tmpProject);
426
- await flushUntil(() => expect(listener).toHaveBeenCalledWith(expect.objectContaining({
427
- worker: expect.objectContaining({ id: record.id, cwd: tmpProject }),
428
- summary: expect.stringContaining("finished during remount"),
429
- status: "done",
430
- })));
431
- unsubscribe();
432
- });
433
- it("marks the task failed and persists stderr evidence for worker non-zero exit", async () => {
434
- const { record, onComplete } = await start();
435
- child.stderr.write("boom from stderr");
436
- child.emit("close", 1);
437
- await flushUntil(() => expect(onComplete).toHaveBeenCalled());
438
- const run = await getGoalRun(tmpProject, "goal-a");
439
- expect(record.status).toBe("failed");
440
- expect(run?.tasks[0]).toMatchObject({
441
- status: "failed",
442
- workerId: record.id,
443
- lastSummary: expect.stringContaining("boom from stderr"),
444
- });
445
- expect(run?.evidence.some((item) => item.label === `Worker ${record.id} failed` && item.content?.includes("boom"))).toBe(true);
446
- expect(onComplete).toHaveBeenCalledWith(expect.objectContaining({ status: "failed", exitCode: 1 }));
447
- });
448
- it("records spawn crashes as failed task evidence and notifies the orchestrator continuation path", async () => {
449
- const { mod, record, onComplete } = await start();
450
- const listener = vi.fn();
451
- const unsubscribe = mod.subscribeGoalWorkerCompletions(listener, tmpProject);
452
- child.emit("error", new Error("spawn exploded"));
453
- await flushUntil(async () => {
454
- const next = await getGoalRun(tmpProject, "goal-a");
455
- expect(next?.tasks[0]?.status).toBe("failed");
456
- expect(next?.evidence.some((item) => item.label === `Worker ${record.id} spawn failed`)).toBe(true);
457
- expect(onComplete).toHaveBeenCalled();
458
- });
459
- const run = await getGoalRun(tmpProject, "goal-a");
460
- expect(record.status).toBe("failed");
461
- expect(run?.tasks[0]).toMatchObject({
462
- status: "failed",
463
- lastSummary: "Failed to spawn Goal worker: spawn exploded",
464
- });
465
- expect(run?.evidence.some((item) => item.label === `Worker ${record.id} spawn failed` && item.content === "spawn exploded")).toBe(true);
466
- expect(onComplete).toHaveBeenCalledWith(expect.objectContaining({ status: "failed", exitCode: 1, reason: "spawn_error" }));
467
- expect(listener).toHaveBeenCalledWith(expect.objectContaining({
468
- worker: expect.objectContaining({ id: record.id, cwd: tmpProject }),
469
- status: "failed",
470
- exitCode: 1,
471
- reason: "spawn_error",
472
- }));
473
- unsubscribe();
474
- });
475
- it("manual stop blocks the task, clears the active worker, and ignores later close completion", async () => {
476
- const { mod, record, onComplete } = await start();
477
- const result = await mod.stopGoalWorker(record.id);
478
- child.emit("close", 0);
479
- await flushUntil(() => expect(record.status).toBe("stopped"));
480
- const run = await getGoalRun(tmpProject, "goal-a");
481
- expect(result).toBe(`Goal worker ${record.id} stopped.`);
482
- expect(record.status).toBe("stopped");
483
- expect(killProcessTreeMock).toHaveBeenCalledWith(4242);
484
- expect(run?.activeWorkerId).toBeUndefined();
485
- expect(run?.tasks[0]).toMatchObject({
486
- status: "blocked",
487
- lastSummary: "Worker stopped by user.",
488
- });
489
- expect(run?.evidence.some((item) => item.kind === "summary" && item.label === `Worker ${record.id} stopped`)).toBe(true);
490
- expect(onComplete).not.toHaveBeenCalled();
491
- });
492
- });
493
- //# sourceMappingURL=goal-worker.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"goal-worker.test.js","sourceRoot":"","sources":["../../src/core/goal-worker.test.ts"],"names":[],"mappings":"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"}
@@ -1,108 +0,0 @@
1
- import type { GoalRun, GoalTaskCandidate } from "./goal-store.js";
2
- export declare class GoalWorktreeDirtyError extends Error {
3
- readonly dirtyStatus: string;
4
- constructor(dirtyStatus: string);
5
- }
6
- export declare function isGoalWorktreeDirtyError(error: unknown): error is GoalWorktreeDirtyError;
7
- export interface GoalWorktreeCommandRunner {
8
- execFile(file: string, args: readonly string[], options: {
9
- cwd: string;
10
- }): Promise<{
11
- stdout: string;
12
- stderr: string;
13
- }>;
14
- }
15
- export interface GoalWorktreeRequest {
16
- projectPath: string;
17
- goalRunId: string;
18
- goalTaskId: string;
19
- workerId: string;
20
- baseRef?: string;
21
- worktreesRoot?: string;
22
- commandRunner?: GoalWorktreeCommandRunner;
23
- }
24
- export interface GoalWorktreeCandidate {
25
- baseRef: string;
26
- branchName: string;
27
- path: string;
28
- }
29
- export interface GoalWorktreeIntegrationIssue {
30
- taskId: string;
31
- taskTitle: string;
32
- workerId?: string;
33
- worktreePath: string;
34
- baseRef: string;
35
- branchName: string;
36
- files: string[];
37
- }
38
- export interface GoalWorktreeIntegrationCheck {
39
- ok: boolean;
40
- issues: GoalWorktreeIntegrationIssue[];
41
- summary: string;
42
- }
43
- export declare function defaultGoalWorktreeCommandRunner(file: string, args: readonly string[], options: {
44
- cwd: string;
45
- }): Promise<{
46
- stdout: string;
47
- stderr: string;
48
- }>;
49
- export declare function goalWorktreeRoot(projectPath: string): string;
50
- export declare function sanitizeWorktreeToken(value: string): string;
51
- export declare function checkGoalWorktreeIntegration(projectPath: string, run: GoalRun, commandRunner?: GoalWorktreeCommandRunner): Promise<GoalWorktreeIntegrationCheck>;
52
- /**
53
- * Return `-c user.name/-c user.email` args only when the repo has no committer
54
- * identity configured, so Goal auto-commits never fail on fresh clones/CI while
55
- * still preserving the user's real identity when it exists.
56
- */
57
- export declare function goalCommitterArgs(runner: GoalWorktreeCommandRunner, cwd: string): Promise<string[]>;
58
- /**
59
- * Whether `cwd` is inside a usable git work tree with at least one commit (a
60
- * resolvable HEAD to branch from). Used to decide whether Goal worktree
61
- * isolation is possible at all, so /goal degrades gracefully in non-git or
62
- * git-less environments instead of hard-crashing worker startup.
63
- */
64
- export declare function isGitWorktreeViable(projectPath: string, commandRunner?: GoalWorktreeCommandRunner): Promise<boolean>;
65
- export interface GoalCheckpointResult {
66
- committed: boolean;
67
- status: string;
68
- sha?: string;
69
- files?: string[];
70
- }
71
- /**
72
- * Commit any uncommitted work in the project as a checkpoint before an isolated
73
- * Goal worker worktree is created. This is the rollback guarantee that licenses
74
- * unattended Goal autonomy: the auto-commit is clearly prefixed and reversible.
75
- */
76
- export declare function checkpointGoalWorkingTree({ projectPath, message, commandRunner, }: {
77
- projectPath: string;
78
- message: string;
79
- commandRunner?: GoalWorktreeCommandRunner;
80
- }): Promise<GoalCheckpointResult>;
81
- /**
82
- * Commit a worktree worker's changes onto its own branch and return a typed,
83
- * structured candidate packet. This is the worker-commit discipline that lets
84
- * integration read exactly what changed instead of reverse-engineering a dirty
85
- * worktree, and it leaves the worktree clean so the integration check passes
86
- * deterministically. Returns undefined when the worker produced no changes.
87
- */
88
- export declare function commitGoalWorkerCandidate({ worktreePath, branchName, baseRef, message, commandRunner, }: {
89
- worktreePath: string;
90
- branchName: string;
91
- baseRef: string;
92
- message: string;
93
- commandRunner?: GoalWorktreeCommandRunner;
94
- }): Promise<GoalTaskCandidate | undefined>;
95
- export interface GoalWorktreeCleanupResult {
96
- removedPaths: string[];
97
- removedBranches: string[];
98
- }
99
- /**
100
- * Remove a completed Goal run's worker worktrees and their branches, then prune
101
- * stale worktree metadata. Best-effort and idempotent: anything already gone is
102
- * ignored. Keeps the user's repo free of accumulating Goal worktrees/branches
103
- * across many runs without ever touching their working tree or other branches.
104
- */
105
- export declare function removeGoalRunWorktrees(projectPath: string, run: GoalRun, commandRunner?: GoalWorktreeCommandRunner): Promise<GoalWorktreeCleanupResult>;
106
- export declare function createGoalWorkerWorktree({ projectPath, goalRunId, goalTaskId, workerId, baseRef, worktreesRoot, commandRunner, }: GoalWorktreeRequest): Promise<GoalWorktreeCandidate>;
107
- export declare function formatGitError(error: unknown): string;
108
- //# sourceMappingURL=goal-worktree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"goal-worktree.d.ts","sourceRoot":"","sources":["../../src/core/goal-worktree.ts"],"names":[],"mappings":"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"}