@intrect/openswarm 0.17.1 → 0.17.3

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 (336) hide show
  1. package/README.md +21 -5
  2. package/config.example.yaml +18 -0
  3. package/dist/adapters/agenticLoop.d.ts +2 -0
  4. package/dist/adapters/agenticLoop.d.ts.map +1 -1
  5. package/dist/adapters/agenticLoop.js +7 -4
  6. package/dist/adapters/agenticLoop.js.map +1 -1
  7. package/dist/adapters/base.d.ts.map +1 -1
  8. package/dist/adapters/base.js +9 -0
  9. package/dist/adapters/base.js.map +1 -1
  10. package/dist/adapters/claude.d.ts.map +1 -1
  11. package/dist/adapters/claude.js +6 -3
  12. package/dist/adapters/claude.js.map +1 -1
  13. package/dist/adapters/codex.d.ts.map +1 -1
  14. package/dist/adapters/codex.js +3 -2
  15. package/dist/adapters/codex.js.map +1 -1
  16. package/dist/adapters/codexResponses.d.ts +2 -1
  17. package/dist/adapters/codexResponses.d.ts.map +1 -1
  18. package/dist/adapters/codexResponses.js +35 -31
  19. package/dist/adapters/codexResponses.js.map +1 -1
  20. package/dist/adapters/errorClassification.d.ts +11 -0
  21. package/dist/adapters/errorClassification.d.ts.map +1 -1
  22. package/dist/adapters/errorClassification.js +22 -0
  23. package/dist/adapters/errorClassification.js.map +1 -1
  24. package/dist/adapters/gpt.d.ts.map +1 -1
  25. package/dist/adapters/gpt.js +2 -1
  26. package/dist/adapters/gpt.js.map +1 -1
  27. package/dist/adapters/local.d.ts.map +1 -1
  28. package/dist/adapters/local.js +2 -1
  29. package/dist/adapters/local.js.map +1 -1
  30. package/dist/adapters/openrouter.d.ts.map +1 -1
  31. package/dist/adapters/openrouter.js +2 -1
  32. package/dist/adapters/openrouter.js.map +1 -1
  33. package/dist/adapters/processRegistry.d.ts.map +1 -1
  34. package/dist/adapters/processRegistry.js +8 -0
  35. package/dist/adapters/processRegistry.js.map +1 -1
  36. package/dist/adapters/types.d.ts +2 -0
  37. package/dist/adapters/types.d.ts.map +1 -1
  38. package/dist/agents/pairPipeline.d.ts +10 -139
  39. package/dist/agents/pairPipeline.d.ts.map +1 -1
  40. package/dist/agents/pairPipeline.js +127 -35
  41. package/dist/agents/pairPipeline.js.map +1 -1
  42. package/dist/agents/pairPipelineTypes.d.ts +109 -0
  43. package/dist/agents/pairPipelineTypes.d.ts.map +1 -0
  44. package/dist/agents/pairPipelineTypes.js +2 -0
  45. package/dist/agents/pairPipelineTypes.js.map +1 -0
  46. package/dist/agents/pipelineGuards.d.ts.map +1 -1
  47. package/dist/agents/pipelineGuards.js +346 -0
  48. package/dist/agents/pipelineGuards.js.map +1 -1
  49. package/dist/agents/pipelineTaskPrefix.d.ts +3 -0
  50. package/dist/agents/pipelineTaskPrefix.d.ts.map +1 -0
  51. package/dist/agents/pipelineTaskPrefix.js +16 -0
  52. package/dist/agents/pipelineTaskPrefix.js.map +1 -0
  53. package/dist/agents/reflection.d.ts +1 -1
  54. package/dist/agents/reflection.d.ts.map +1 -1
  55. package/dist/agents/reflection.js +3 -1
  56. package/dist/agents/reflection.js.map +1 -1
  57. package/dist/agents/reviewer.d.ts +6 -0
  58. package/dist/agents/reviewer.d.ts.map +1 -1
  59. package/dist/agents/reviewer.js +4 -1
  60. package/dist/agents/reviewer.js.map +1 -1
  61. package/dist/agents/stageErrorClassification.d.ts +16 -0
  62. package/dist/agents/stageErrorClassification.d.ts.map +1 -0
  63. package/dist/agents/stageErrorClassification.js +38 -0
  64. package/dist/agents/stageErrorClassification.js.map +1 -0
  65. package/dist/agents/stageModelResolver.d.ts +8 -0
  66. package/dist/agents/stageModelResolver.d.ts.map +1 -0
  67. package/dist/agents/stageModelResolver.js +22 -0
  68. package/dist/agents/stageModelResolver.js.map +1 -0
  69. package/dist/agents/worker.d.ts +33 -0
  70. package/dist/agents/worker.d.ts.map +1 -1
  71. package/dist/agents/worker.js +62 -5
  72. package/dist/agents/worker.js.map +1 -1
  73. package/dist/agents/workerFanout.d.ts +38 -0
  74. package/dist/agents/workerFanout.d.ts.map +1 -0
  75. package/dist/agents/workerFanout.js +277 -0
  76. package/dist/agents/workerFanout.js.map +1 -0
  77. package/dist/agents/workerFanoutGate.d.ts +48 -0
  78. package/dist/agents/workerFanoutGate.d.ts.map +1 -0
  79. package/dist/agents/workerFanoutGate.js +146 -0
  80. package/dist/agents/workerFanoutGate.js.map +1 -0
  81. package/dist/agents/workerValidationEvidence.d.ts +5 -0
  82. package/dist/agents/workerValidationEvidence.d.ts.map +1 -0
  83. package/dist/agents/workerValidationEvidence.js +75 -0
  84. package/dist/agents/workerValidationEvidence.js.map +1 -0
  85. package/dist/auth/linearPkce.d.ts.map +1 -1
  86. package/dist/auth/linearPkce.js +1 -12
  87. package/dist/auth/linearPkce.js.map +1 -1
  88. package/dist/auth/oauthPkce.d.ts.map +1 -1
  89. package/dist/auth/oauthPkce.js +1 -14
  90. package/dist/auth/oauthPkce.js.map +1 -1
  91. package/dist/auth/oauthStore.d.ts.map +1 -1
  92. package/dist/auth/oauthStore.js +28 -2
  93. package/dist/auth/oauthStore.js.map +1 -1
  94. package/dist/auth/openBrowser.d.ts +2 -0
  95. package/dist/auth/openBrowser.d.ts.map +1 -0
  96. package/dist/auth/openBrowser.js +32 -0
  97. package/dist/auth/openBrowser.js.map +1 -0
  98. package/dist/auth/openrouterPkce.d.ts.map +1 -1
  99. package/dist/auth/openrouterPkce.js +1 -14
  100. package/dist/auth/openrouterPkce.js.map +1 -1
  101. package/dist/automation/autonomousRunner.d.ts +24 -6
  102. package/dist/automation/autonomousRunner.d.ts.map +1 -1
  103. package/dist/automation/autonomousRunner.js +242 -41
  104. package/dist/automation/autonomousRunner.js.map +1 -1
  105. package/dist/automation/backlogGrooming.d.ts +52 -0
  106. package/dist/automation/backlogGrooming.d.ts.map +1 -0
  107. package/dist/automation/backlogGrooming.js +231 -0
  108. package/dist/automation/backlogGrooming.js.map +1 -0
  109. package/dist/automation/runnerExecution.d.ts +1 -1
  110. package/dist/automation/runnerExecution.d.ts.map +1 -1
  111. package/dist/automation/runnerExecution.js +31 -9
  112. package/dist/automation/runnerExecution.js.map +1 -1
  113. package/dist/automation/runnerTypes.d.ts +3 -1
  114. package/dist/automation/runnerTypes.d.ts.map +1 -1
  115. package/dist/automation/taskSource.d.ts +6 -3
  116. package/dist/automation/taskSource.d.ts.map +1 -1
  117. package/dist/automation/taskSource.js +5 -0
  118. package/dist/automation/taskSource.js.map +1 -1
  119. package/dist/cli/daemon.d.ts +20 -3
  120. package/dist/cli/daemon.d.ts.map +1 -1
  121. package/dist/cli/daemon.js +42 -2
  122. package/dist/cli/daemon.js.map +1 -1
  123. package/dist/cli/fixBoard.d.ts +14 -0
  124. package/dist/cli/fixBoard.d.ts.map +1 -0
  125. package/dist/cli/fixBoard.js +32 -0
  126. package/dist/cli/fixBoard.js.map +1 -0
  127. package/dist/cli/fixCommand.d.ts +8 -0
  128. package/dist/cli/fixCommand.d.ts.map +1 -1
  129. package/dist/cli/fixCommand.js +47 -8
  130. package/dist/cli/fixCommand.js.map +1 -1
  131. package/dist/cli/memoryCommand.d.ts +37 -0
  132. package/dist/cli/memoryCommand.d.ts.map +1 -0
  133. package/dist/cli/memoryCommand.js +156 -0
  134. package/dist/cli/memoryCommand.js.map +1 -0
  135. package/dist/cli/reviewAudit.d.ts +68 -0
  136. package/dist/cli/reviewAudit.d.ts.map +1 -1
  137. package/dist/cli/reviewAudit.js +147 -4
  138. package/dist/cli/reviewAudit.js.map +1 -1
  139. package/dist/cli/reviewMaxCommand.d.ts +2 -0
  140. package/dist/cli/reviewMaxCommand.d.ts.map +1 -1
  141. package/dist/cli/reviewMaxCommand.js +61 -33
  142. package/dist/cli/reviewMaxCommand.js.map +1 -1
  143. package/dist/cli.js +68 -13
  144. package/dist/cli.js.map +1 -1
  145. package/dist/core/config.d.ts +413 -0
  146. package/dist/core/config.d.ts.map +1 -1
  147. package/dist/core/config.js +51 -5
  148. package/dist/core/config.js.map +1 -1
  149. package/dist/core/eventHub.d.ts +22 -0
  150. package/dist/core/eventHub.d.ts.map +1 -1
  151. package/dist/core/eventHub.js +1 -0
  152. package/dist/core/eventHub.js.map +1 -1
  153. package/dist/core/providerOverride.d.ts +9 -0
  154. package/dist/core/providerOverride.d.ts.map +1 -1
  155. package/dist/core/providerOverride.js +12 -0
  156. package/dist/core/providerOverride.js.map +1 -1
  157. package/dist/core/service.d.ts.map +1 -1
  158. package/dist/core/service.js +8 -2
  159. package/dist/core/service.js.map +1 -1
  160. package/dist/core/types.d.ts +61 -1
  161. package/dist/core/types.d.ts.map +1 -1
  162. package/dist/linear/linear.d.ts +2 -1
  163. package/dist/linear/linear.d.ts.map +1 -1
  164. package/dist/linear/linear.js +34 -12
  165. package/dist/linear/linear.js.map +1 -1
  166. package/dist/linear/projectUpdater.d.ts.map +1 -1
  167. package/dist/linear/projectUpdater.js +40 -13
  168. package/dist/linear/projectUpdater.js.map +1 -1
  169. package/dist/locale/prompts/en.d.ts.map +1 -1
  170. package/dist/locale/prompts/en.js +15 -5
  171. package/dist/locale/prompts/en.js.map +1 -1
  172. package/dist/locale/prompts/ko.d.ts.map +1 -1
  173. package/dist/locale/prompts/ko.js +15 -5
  174. package/dist/locale/prompts/ko.js.map +1 -1
  175. package/dist/mcp/mcpClient.d.ts.map +1 -1
  176. package/dist/mcp/mcpClient.js +85 -4
  177. package/dist/mcp/mcpClient.js.map +1 -1
  178. package/dist/memory/compaction.d.ts +2 -2
  179. package/dist/memory/compaction.d.ts.map +1 -1
  180. package/dist/memory/compaction.js +22 -17
  181. package/dist/memory/compaction.js.map +1 -1
  182. package/dist/memory/index.d.ts +3 -3
  183. package/dist/memory/index.js +3 -3
  184. package/dist/memory/memoryCore.d.ts +16 -27
  185. package/dist/memory/memoryCore.d.ts.map +1 -1
  186. package/dist/memory/memoryCore.js +160 -102
  187. package/dist/memory/memoryCore.js.map +1 -1
  188. package/dist/memory/memoryFilters.d.ts +8 -0
  189. package/dist/memory/memoryFilters.d.ts.map +1 -0
  190. package/dist/memory/memoryFilters.js +26 -0
  191. package/dist/memory/memoryFilters.js.map +1 -0
  192. package/dist/memory/memoryOps.d.ts +7 -23
  193. package/dist/memory/memoryOps.d.ts.map +1 -1
  194. package/dist/memory/memoryOps.js +54 -117
  195. package/dist/memory/memoryOps.js.map +1 -1
  196. package/dist/memory/repoKnowledge.d.ts.map +1 -1
  197. package/dist/memory/repoKnowledge.js +48 -3
  198. package/dist/memory/repoKnowledge.js.map +1 -1
  199. package/dist/notify/notifier.d.ts.map +1 -1
  200. package/dist/notify/notifier.js +23 -16
  201. package/dist/notify/notifier.js.map +1 -1
  202. package/dist/orchestration/conflictDetector.d.ts.map +1 -1
  203. package/dist/orchestration/conflictDetector.js +48 -12
  204. package/dist/orchestration/conflictDetector.js.map +1 -1
  205. package/dist/orchestration/taskParser.d.ts.map +1 -1
  206. package/dist/orchestration/taskParser.js +18 -7
  207. package/dist/orchestration/taskParser.js.map +1 -1
  208. package/dist/orchestration/taskScheduler.d.ts +5 -0
  209. package/dist/orchestration/taskScheduler.d.ts.map +1 -1
  210. package/dist/orchestration/taskScheduler.js +37 -12
  211. package/dist/orchestration/taskScheduler.js.map +1 -1
  212. package/dist/registry/bsDetector.d.ts.map +1 -1
  213. package/dist/registry/bsDetector.js +23 -3
  214. package/dist/registry/bsDetector.js.map +1 -1
  215. package/dist/registry/entityScanner.d.ts.map +1 -1
  216. package/dist/registry/entityScanner.js +10 -5
  217. package/dist/registry/entityScanner.js.map +1 -1
  218. package/dist/registry/graphql/resolvers.d.ts +1 -1
  219. package/dist/registry/graphql/resolvers.d.ts.map +1 -1
  220. package/dist/registry/graphql/resolvers.js +92 -15
  221. package/dist/registry/graphql/resolvers.js.map +1 -1
  222. package/dist/registry/memoryBridge.js +4 -4
  223. package/dist/registry/memoryBridge.js.map +1 -1
  224. package/dist/registry/sqliteStore.d.ts +1 -1
  225. package/dist/registry/sqliteStore.d.ts.map +1 -1
  226. package/dist/registry/sqliteStore.js +20 -5
  227. package/dist/registry/sqliteStore.js.map +1 -1
  228. package/dist/support/chatMemory.js +1 -1
  229. package/dist/support/chatMemory.js.map +1 -1
  230. package/dist/support/dashboardHtml.d.ts +1 -1
  231. package/dist/support/dashboardHtml.d.ts.map +1 -1
  232. package/dist/support/dashboardHtml.js +12 -0
  233. package/dist/support/dashboardHtml.js.map +1 -1
  234. package/dist/support/gitTracker.d.ts +30 -3
  235. package/dist/support/gitTracker.d.ts.map +1 -1
  236. package/dist/support/gitTracker.js +108 -29
  237. package/dist/support/gitTracker.js.map +1 -1
  238. package/dist/support/projectMapper.d.ts.map +1 -1
  239. package/dist/support/projectMapper.js +5 -0
  240. package/dist/support/projectMapper.js.map +1 -1
  241. package/dist/support/repoMetadata.d.ts +10 -0
  242. package/dist/support/repoMetadata.d.ts.map +1 -1
  243. package/dist/support/repoMetadata.js +31 -0
  244. package/dist/support/repoMetadata.js.map +1 -1
  245. package/dist/support/rollback.d.ts.map +1 -1
  246. package/dist/support/rollback.js +10 -3
  247. package/dist/support/rollback.js.map +1 -1
  248. package/dist/support/timeWindow.d.ts.map +1 -1
  249. package/dist/support/timeWindow.js +46 -40
  250. package/dist/support/timeWindow.js.map +1 -1
  251. package/dist/support/updateNotifier.d.ts +12 -0
  252. package/dist/support/updateNotifier.d.ts.map +1 -1
  253. package/dist/support/updateNotifier.js +71 -0
  254. package/dist/support/updateNotifier.js.map +1 -1
  255. package/dist/support/web.d.ts.map +1 -1
  256. package/dist/support/web.js +74 -8
  257. package/dist/support/web.js.map +1 -1
  258. package/dist/support/worktreeManager.d.ts +33 -0
  259. package/dist/support/worktreeManager.d.ts.map +1 -1
  260. package/dist/support/worktreeManager.js +172 -2
  261. package/dist/support/worktreeManager.js.map +1 -1
  262. package/dist/taskState/store.d.ts.map +1 -1
  263. package/dist/taskState/store.js +2 -3
  264. package/dist/taskState/store.js.map +1 -1
  265. package/dist/tui/App.js +1 -1
  266. package/dist/tui/App.js.map +1 -1
  267. package/dist/tui/chatModel.d.ts +2 -4
  268. package/dist/tui/chatModel.d.ts.map +1 -1
  269. package/dist/tui/chatModel.js +5 -10
  270. package/dist/tui/chatModel.js.map +1 -1
  271. package/dist/tui/components/AuditBoard.d.ts +3 -2
  272. package/dist/tui/components/AuditBoard.d.ts.map +1 -1
  273. package/dist/tui/components/AuditBoard.js +13 -4
  274. package/dist/tui/components/AuditBoard.js.map +1 -1
  275. package/dist/tui/components/ChatInput.js +1 -1
  276. package/dist/tui/components/ChatLog.js +1 -1
  277. package/dist/tui/components/ChatLog.js.map +1 -1
  278. package/dist/tui/components/DataTable.d.ts +3 -1
  279. package/dist/tui/components/DataTable.d.ts.map +1 -1
  280. package/dist/tui/components/DataTable.js +22 -4
  281. package/dist/tui/components/DataTable.js.map +1 -1
  282. package/dist/tui/components/LiveLog.js +1 -1
  283. package/dist/tui/components/LiveLog.js.map +1 -1
  284. package/dist/tui/components/StageTimeline.d.ts +1 -1
  285. package/dist/tui/components/StageTimeline.d.ts.map +1 -1
  286. package/dist/tui/components/StageTimeline.js +6 -3
  287. package/dist/tui/components/StageTimeline.js.map +1 -1
  288. package/dist/tui/components/SubagentTree.d.ts +6 -6
  289. package/dist/tui/components/SubagentTree.d.ts.map +1 -1
  290. package/dist/tui/components/SubagentTree.js +39 -7
  291. package/dist/tui/components/SubagentTree.js.map +1 -1
  292. package/dist/tui/eventCoalescer.d.ts +29 -0
  293. package/dist/tui/eventCoalescer.d.ts.map +1 -0
  294. package/dist/tui/eventCoalescer.js +56 -0
  295. package/dist/tui/eventCoalescer.js.map +1 -0
  296. package/dist/tui/hooks/useMonitor.d.ts +3 -1
  297. package/dist/tui/hooks/useMonitor.d.ts.map +1 -1
  298. package/dist/tui/hooks/useMonitor.js +17 -1
  299. package/dist/tui/hooks/useMonitor.js.map +1 -1
  300. package/dist/tui/hooks/usePipelineEvents.d.ts +1 -1
  301. package/dist/tui/hooks/usePipelineEvents.d.ts.map +1 -1
  302. package/dist/tui/hooks/usePipelineEvents.js +18 -4
  303. package/dist/tui/hooks/usePipelineEvents.js.map +1 -1
  304. package/dist/tui/hooks/useTerminalSize.d.ts.map +1 -1
  305. package/dist/tui/hooks/useTerminalSize.js +3 -1
  306. package/dist/tui/hooks/useTerminalSize.js.map +1 -1
  307. package/dist/tui/monitorApi.d.ts +4 -4
  308. package/dist/tui/monitorApi.d.ts.map +1 -1
  309. package/dist/tui/monitorApi.js +13 -7
  310. package/dist/tui/monitorApi.js.map +1 -1
  311. package/dist/tui/monitorRows.d.ts +41 -2
  312. package/dist/tui/monitorRows.d.ts.map +1 -1
  313. package/dist/tui/monitorRows.js +86 -7
  314. package/dist/tui/monitorRows.js.map +1 -1
  315. package/dist/tui/panels/ChatPanel.d.ts.map +1 -1
  316. package/dist/tui/panels/ChatPanel.js +70 -15
  317. package/dist/tui/panels/ChatPanel.js.map +1 -1
  318. package/dist/tui/panels/MonitorPanel.d.ts +2 -1
  319. package/dist/tui/panels/MonitorPanel.d.ts.map +1 -1
  320. package/dist/tui/panels/MonitorPanel.js +2 -2
  321. package/dist/tui/panels/MonitorPanel.js.map +1 -1
  322. package/dist/tui/panels/PipelinePanel.d.ts.map +1 -1
  323. package/dist/tui/panels/PipelinePanel.js +6 -1
  324. package/dist/tui/panels/PipelinePanel.js.map +1 -1
  325. package/dist/tui/pipelineEvents.d.ts +14 -0
  326. package/dist/tui/pipelineEvents.d.ts.map +1 -1
  327. package/dist/tui/pipelineEvents.js +89 -1
  328. package/dist/tui/pipelineEvents.js.map +1 -1
  329. package/dist/tui/sse.d.ts.map +1 -1
  330. package/dist/tui/sse.js +29 -3
  331. package/dist/tui/sse.js.map +1 -1
  332. package/dist/tui/subagentTree.d.ts +26 -3
  333. package/dist/tui/subagentTree.d.ts.map +1 -1
  334. package/dist/tui/subagentTree.js +89 -14
  335. package/dist/tui/subagentTree.js.map +1 -1
  336. package/package.json +1 -1
@@ -41,6 +41,9 @@ export function ChatPanel({ active, provider: providerProp, model: modelProp, pr
41
41
  const createdAtRef = useRef(new Date().toISOString());
42
42
  const goalRef = useRef(goalProp);
43
43
  const abortRef = useRef(null);
44
+ const mountedRef = useRef(true);
45
+ const modelSelectorRequestRef = useRef(0);
46
+ const resumedGoalRef = useRef(false);
44
47
  const persistenceErrorRef = useRef(null);
45
48
  // When set, the next submitted line is routed here (a /plan confirm or edit)
46
49
  // instead of being treated as chat — the Ink analogue of blessed pendingInput.
@@ -52,9 +55,20 @@ export function ChatPanel({ active, provider: providerProp, model: modelProp, pr
52
55
  const [selector, setSelector] = useState(null);
53
56
  const [selectorIndex, setSelectorIndex] = useState(0);
54
57
  const cwd = projectPath ?? process.cwd();
58
+ useEffect(() => {
59
+ mountedRef.current = true;
60
+ return () => {
61
+ mountedRef.current = false;
62
+ modelSelectorRequestRef.current += 1;
63
+ abortRef.current?.abort();
64
+ };
65
+ }, []);
66
+ useEffect(() => {
67
+ modelSelectorRequestRef.current += 1;
68
+ }, [provider]);
55
69
  // Persist the conversation on every change so it survives exit and can be
56
70
  // reopened with `openswarm resume`. System/UI lines are dropped by
57
- // historyToMessages; the goal rides along so resume keeps pursuing it. (INT-2014)
71
+ // historyToMessages; an active goal rides along so resume can restart it. (INT-2014)
58
72
  useEffect(() => {
59
73
  if (state.history.length === 0)
60
74
  return;
@@ -70,22 +84,34 @@ export function ChatPanel({ active, provider: providerProp, model: modelProp, pr
70
84
  goal: goalRef.current,
71
85
  })
72
86
  .then(() => {
87
+ if (!mountedRef.current)
88
+ return;
73
89
  persistenceErrorRef.current = null;
74
90
  })
75
91
  .catch((e) => {
92
+ if (!mountedRef.current)
93
+ return;
76
94
  const msg = e instanceof Error ? e.message : String(e);
77
95
  if (persistenceErrorRef.current === msg)
78
96
  return;
79
97
  persistenceErrorRef.current = msg;
80
98
  dispatch({ type: 'system', content: `✖ failed to save session: ${msg}` });
81
99
  });
82
- }, [state.history, provider, model]);
100
+ }, [state.history, provider, model, goalActive]);
83
101
  const ask = useCallback((prompt) => new Promise((resolve) => {
102
+ if (!mountedRef.current) {
103
+ resolve('no');
104
+ return;
105
+ }
84
106
  dispatch({ type: 'system', content: prompt });
85
107
  setPending({ resolve });
86
108
  }), []);
87
109
  const planIO = {
88
- print: (line) => dispatch({ type: 'system', content: line }),
110
+ print: (line) => {
111
+ if (!mountedRef.current)
112
+ return;
113
+ dispatch({ type: 'system', content: line });
114
+ },
89
115
  confirm: async (prompt) => normalizeConfirm(await ask(prompt)),
90
116
  promptText: (prompt) => ask(prompt),
91
117
  };
@@ -95,10 +121,13 @@ export function ChatPanel({ active, provider: providerProp, model: modelProp, pr
95
121
  await runPlanCommand(goal, planIO, { projectPath: cwd, model });
96
122
  }
97
123
  catch (e) {
124
+ if (!mountedRef.current)
125
+ return;
98
126
  dispatch({ type: 'system', content: `✖ plan failed: ${e instanceof Error ? e.message : String(e)}` });
99
127
  }
100
128
  finally {
101
- setBusy(false);
129
+ if (mountedRef.current)
130
+ setBusy(false);
102
131
  }
103
132
  },
104
133
  // planIO is rebuilt each render but only closes over stable dispatch/ask.
@@ -117,9 +146,13 @@ export function ChatPanel({ active, provider: providerProp, model: modelProp, pr
117
146
  // buffer — that's the /goal token-spam (INT-2013). Drop them here; codex
118
147
  // surfaces reasoning separately via onLog ('💭 …'). (INT-2014)
119
148
  (t, isThinking) => {
149
+ if (!mountedRef.current)
150
+ return;
120
151
  if (!isThinking)
121
152
  dispatch({ type: 'stream', chunk: t });
122
153
  }, (line) => {
154
+ if (!mountedRef.current)
155
+ return;
123
156
  if (isActivityNoise(line))
124
157
  return;
125
158
  setActivity((a) => [...a, line].slice(-10));
@@ -127,16 +160,21 @@ export function ChatPanel({ active, provider: providerProp, model: modelProp, pr
127
160
  cwd);
128
161
  }
129
162
  catch (e) {
163
+ if (!mountedRef.current)
164
+ return;
130
165
  const msg = e instanceof Error ? e.message : String(e);
131
166
  // An abort (from /goal clear) is intentional, not an error.
132
167
  if (!ac.signal.aborted)
133
168
  dispatch({ type: 'stream', chunk: `\n[error] ${msg}` });
134
169
  }
135
170
  finally {
136
- dispatch({ type: 'commit' });
137
- setActivity([]);
138
- setBusy(false);
139
- abortRef.current = null;
171
+ if (mountedRef.current) {
172
+ dispatch({ type: 'commit' });
173
+ setActivity([]);
174
+ setBusy(false);
175
+ if (abortRef.current === ac)
176
+ abortRef.current = null;
177
+ }
140
178
  }
141
179
  }, [provider, model, cwd]);
142
180
  // /goal routes by complexity: simple → pursue in-session (streamed), complex →
@@ -149,28 +187,45 @@ export function ChatPanel({ active, provider: providerProp, model: modelProp, pr
149
187
  await runGoalCommand(goal, planIO, { projectPath: cwd, model, provider }, { pursue: (g) => streamChat(buildGoalPursuitPrompt(g), GOAL_PURSUIT_MAX_TURNS) });
150
188
  }
151
189
  catch (e) {
190
+ if (!mountedRef.current)
191
+ return;
152
192
  dispatch({ type: 'system', content: `✖ goal failed: ${e instanceof Error ? e.message : String(e)}` });
153
193
  }
154
194
  finally {
155
- setBusy(false);
156
- // Pursuit turn finished — unblock input. The goal itself stays set
157
- // (goalRef) until /goal clear, so resume keeps pursuing it.
158
- setGoalActive(false);
195
+ if (mountedRef.current) {
196
+ goalRef.current = undefined;
197
+ setBusy(false);
198
+ // Pursuit turn finished — unblock input and remove the completed goal
199
+ // from the persisted session.
200
+ setGoalActive(false);
201
+ }
159
202
  }
160
203
  }, [cwd, model, provider, streamChat]);
204
+ useEffect(() => {
205
+ if (!goalProp || resumedGoalRef.current)
206
+ return;
207
+ resumedGoalRef.current = true;
208
+ void runGoal(goalProp);
209
+ }, [goalProp, runGoal]);
161
210
  // Open the /model selector for the current provider (async catalog). (INT-1961)
162
211
  const openModelSelector = useCallback(async () => {
212
+ const requestId = ++modelSelectorRequestRef.current;
213
+ const requestedProvider = provider;
163
214
  dispatch({ type: 'system', content: `Fetching models for ${provider}…` });
164
215
  try {
165
- const models = await listChatModels(provider);
216
+ const models = await listChatModels(requestedProvider);
217
+ if (!mountedRef.current || requestId !== modelSelectorRequestRef.current)
218
+ return;
166
219
  if (!models.length) {
167
- dispatch({ type: 'system', content: `No models listed for ${provider}. Use /model <name>.` });
220
+ dispatch({ type: 'system', content: `No models listed for ${requestedProvider}. Use /model <name>.` });
168
221
  return;
169
222
  }
170
223
  setSelectorIndex(Math.max(0, models.indexOf(model)));
171
- setSelector({ kind: 'model', title: `Switch model (${provider}):`, items: models });
224
+ setSelector({ kind: 'model', title: `Switch model (${requestedProvider}):`, items: models });
172
225
  }
173
226
  catch (e) {
227
+ if (!mountedRef.current || requestId !== modelSelectorRequestRef.current)
228
+ return;
174
229
  dispatch({ type: 'system', content: `✖ failed to list models: ${e instanceof Error ? e.message : String(e)}` });
175
230
  }
176
231
  }, [provider, model]);
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.js","sourceRoot":"","sources":["../../../src/tui/panels/ChatPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatPanel.js","sourceRoot":"","sources":["../../../src/tui/panels/ChatPanel.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export interface MonitorPanelProps {
3
3
  port?: number;
4
4
  fetcher: (port: number) => Promise<Table>;
5
5
  empty?: string;
6
+ terminalWidth?: number;
6
7
  }
7
- export declare function MonitorPanel({ port, fetcher, empty }: MonitorPanelProps): import("react").JSX.Element;
8
+ export declare function MonitorPanel({ port, fetcher, empty, terminalWidth }: MonitorPanelProps): import("react").JSX.Element;
8
9
  //# sourceMappingURL=MonitorPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonitorPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/panels/MonitorPanel.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,iBAAiB,+BAMvE"}
1
+ {"version":3,"file":"MonitorPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/panels/MonitorPanel.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,iBAAiB,+BAMtF"}
@@ -6,7 +6,7 @@ import { Text } from 'ink';
6
6
  import { DataTable } from '../components/DataTable.js';
7
7
  import { useMonitor } from '../hooks/useMonitor.js';
8
8
  import { theme } from '../theme.js';
9
- export function MonitorPanel({ port, fetcher, empty }) {
9
+ export function MonitorPanel({ port, fetcher, empty, terminalWidth }) {
10
10
  const { table, error, loading } = useMonitor(port, fetcher);
11
11
  if (!port)
12
12
  return _jsx(Text, { dimColor: true, children: "\u25CB daemon port unknown" });
@@ -14,6 +14,6 @@ export function MonitorPanel({ port, fetcher, empty }) {
14
14
  return _jsx(Text, { color: theme.err, children: `load failed: ${error}` });
15
15
  if (!table)
16
16
  return _jsx(Text, { dimColor: true, children: loading ? 'loading…' : '(no data)' });
17
- return _jsx(DataTable, { columns: table.columns, rows: table.rows, empty: empty });
17
+ return _jsx(DataTable, { columns: table.columns, rows: table.rows, empty: empty, terminalWidth: terminalWidth });
18
18
  }
19
19
  //# sourceMappingURL=MonitorPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonitorPanel.js","sourceRoot":"","sources":["../../../src/tui/panels/MonitorPanel.tsx"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,2EAA2E;AAC3E,+EAA+E;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AASpC,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAqB;IACtE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI;QAAE,OAAO,KAAC,IAAI,IAAC,QAAQ,iDAA6B,CAAC;IAC9D,IAAI,KAAK;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,GAAG,YAAG,gBAAgB,KAAK,EAAE,GAAQ,CAAC;IAC3E,IAAI,CAAC,KAAK;QAAE,OAAO,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,GAAQ,CAAC;IAC9E,OAAO,KAAC,SAAS,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"MonitorPanel.js","sourceRoot":"","sources":["../../../src/tui/panels/MonitorPanel.tsx"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,2EAA2E;AAC3E,+EAA+E;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAUpC,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAqB;IACrF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI;QAAE,OAAO,KAAC,IAAI,IAAC,QAAQ,iDAA6B,CAAC;IAC9D,IAAI,KAAK;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,GAAG,YAAG,gBAAgB,KAAK,EAAE,GAAQ,CAAC;IAC3E,IAAI,CAAC,KAAK;QAAE,OAAO,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,GAAQ,CAAC;IAC9E,OAAO,KAAC,SAAS,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,GAAI,CAAC;AAC7G,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PipelinePanel.d.ts","sourceRoot":"","sources":["../../../src/tui/panels/PipelinePanel.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,+BAuBzD"}
1
+ {"version":3,"file":"PipelinePanel.d.ts","sourceRoot":"","sources":["../../../src/tui/panels/PipelinePanel.tsx"],"names":[],"mappings":"AAYA,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,+BA2BzD"}
@@ -3,6 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  // Subscribes to the daemon SSE stream and shows the stage timeline + live log,
4
4
  // the CLI counterpart of the web dashboard's PIPELINE tab.
5
5
  import { Box, Text } from 'ink';
6
+ import { useMemo } from 'react';
6
7
  import { StageTimeline } from '../components/StageTimeline.js';
7
8
  import { SubagentTree } from '../components/SubagentTree.js';
8
9
  import { LiveLog } from '../components/LiveLog.js';
@@ -11,12 +12,16 @@ import { buildSubagentTree } from '../subagentTree.js';
11
12
  import { theme } from '../theme.js';
12
13
  export function PipelinePanel({ port }) {
13
14
  const { stages, logs, connected } = usePipelineEvents(port);
15
+ // Stabilize the tree identity so it only rebuilds when stages actually change
16
+ // (log-only updates keep the same `stages` reference). Prevents SubagentTree's
17
+ // spinner effect from re-subscribing every render + lets React.memo skip it. (INT-2407)
18
+ const repositories = useMemo(() => buildSubagentTree(stages), [stages]);
14
19
  const live = !!port && connected;
15
20
  const label = !port
16
21
  ? ' daemon port unknown'
17
22
  : connected
18
23
  ? ` live (:${port})`
19
24
  : ` connecting :${port}…`;
20
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: live ? theme.ok : theme.dim, children: live ? '●' : '○' }), _jsx(Text, { dimColor: true, children: label })] }), _jsx(SubagentTree, { tasks: buildSubagentTree(stages) }), _jsx(Box, { marginTop: 1, children: _jsx(StageTimeline, { stages: stages }) }), _jsx(Box, { marginTop: 1, children: _jsx(LiveLog, { logs: logs }) })] }));
25
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: live ? theme.ok : theme.dim, children: live ? '●' : '○' }), _jsx(Text, { dimColor: true, children: label })] }), _jsx(SubagentTree, { repositories: repositories }), _jsx(Box, { marginTop: 1, children: _jsx(StageTimeline, { stages: stages }) }), _jsx(Box, { marginTop: 1, children: _jsx(LiveLog, { logs: logs }) })] }));
21
26
  }
22
27
  //# sourceMappingURL=PipelinePanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PipelinePanel.js","sourceRoot":"","sources":["../../../src/tui/panels/PipelinePanel.tsx"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,2DAA2D;AAC3D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOpC,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,EAAsB;IACxD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;IACjC,MAAM,KAAK,GAAG,CAAC,IAAI;QACjB,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,WAAW,IAAI,GAAG;YACpB,CAAC,CAAC,gBAAgB,IAAI,GAAG,CAAC;IAC5B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,YAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,EACnE,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,GAAQ,IACxB,EACP,KAAC,YAAY,IAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAI,EAClD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,GAAI,GAC7B,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,GAAI,GACnB,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"PipelinePanel.js","sourceRoot":"","sources":["../../../src/tui/panels/PipelinePanel.tsx"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,2DAA2D;AAC3D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOpC,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,EAAsB;IACxD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5D,8EAA8E;IAC9E,+EAA+E;IAC/E,wFAAwF;IACxF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;IACjC,MAAM,KAAK,GAAG,CAAC,IAAI;QACjB,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,WAAW,IAAI,GAAG;YACpB,CAAC,CAAC,gBAAgB,IAAI,GAAG,CAAC;IAC5B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,YAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,EACnE,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,GAAQ,IACxB,EACP,KAAC,YAAY,IAAC,YAAY,EAAE,YAAY,GAAI,EAC5C,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,GAAI,GAC7B,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,GAAI,GACnB,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -3,11 +3,19 @@ export interface StageEntry {
3
3
  taskId: string;
4
4
  stage: string;
5
5
  status: 'start' | 'complete' | 'fail';
6
+ repository?: string;
7
+ projectPath?: string;
8
+ worktree?: string;
9
+ branch?: string;
10
+ issueIdentifier?: string;
11
+ title?: string;
6
12
  model?: string;
7
13
  durationMs?: number;
8
14
  costUsd?: number;
9
15
  decision?: 'approve' | 'revise' | 'reject';
10
16
  summary?: string;
17
+ activity?: string;
18
+ rateLimitResetsAt?: number;
11
19
  }
12
20
  export interface PipelineState {
13
21
  stages: StageEntry[];
@@ -18,4 +26,10 @@ export declare const MAX_LOGS = 200;
18
26
  export declare const initialPipelineState: PipelineState;
19
27
  /** Fold one HubEvent into pipeline state (reducer shape: (state, action)). */
20
28
  export declare function reducePipelineEvent(state: PipelineState, ev: HubEvent): PipelineState;
29
+ /**
30
+ * Fold a batch of events into state in a single step so a coalesced burst of
31
+ * SSE events produces one new state (one commit → one repaint). (INT-2407)
32
+ */
33
+ export declare function reducePipelineEvents(state: PipelineState, events: HubEvent[]): PipelineState;
34
+ export declare function classifyActivity(line: string): string | undefined;
21
35
  //# sourceMappingURL=pipelineEvents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineEvents.d.ts","sourceRoot":"","sources":["../../src/tui/pipelineEvents.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,QAAQ,MAAM,CAAC;AAE5B,eAAO,MAAM,oBAAoB,EAAE,aAAwC,CAAC;AAE5E,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,GAAG,aAAa,CAmBrF"}
1
+ {"version":3,"file":"pipelineEvents.d.ts","sourceRoot":"","sources":["../../src/tui/pipelineEvents.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,QAAQ,MAAM,CAAC;AAE5B,eAAO,MAAM,oBAAoB,EAAE,aAAwC,CAAC;AAE5E,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,GAAG,aAAa,CA+DrF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAE5F;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAajE"}
@@ -14,17 +14,105 @@ export function reducePipelineEvent(state, ev) {
14
14
  taskId: d.taskId,
15
15
  stage: d.stage,
16
16
  status: d.status,
17
+ repository: d.repository,
18
+ projectPath: d.projectPath,
19
+ worktree: d.worktree,
20
+ branch: d.branch,
21
+ issueIdentifier: d.issueIdentifier,
22
+ title: d.title,
17
23
  model: d.model,
18
24
  durationMs: d.durationMs,
19
25
  costUsd: d.costUsd,
20
26
  decision: d.decision,
21
27
  summary: d.summary,
28
+ activity: d.status === 'start' ? 'waiting' : activityFromStage(d.error),
29
+ rateLimitResetsAt: d.rateLimitResetsAt,
30
+ };
31
+ return { ...state, stages: [...state.stages, entry].slice(-MAX_STAGES) };
32
+ }
33
+ if (ev.type === 'pipeline:fanout') {
34
+ const d = ev.data;
35
+ const summary = d.enabled
36
+ ? `${d.shouldFanOut ? 'fan-out recommended' : 'single-worker path'} (score ${d.score}/${d.threshold})`
37
+ : 'fan-out disabled';
38
+ const entry = {
39
+ taskId: d.taskId,
40
+ stage: 'fanout',
41
+ status: 'complete',
42
+ summary: d.reasons.length > 0 ? `${summary}: ${d.reasons.join(', ')}` : summary,
43
+ activity: d.shouldFanOut ? 'fan-out' : 'single-worker',
22
44
  };
23
45
  return { ...state, stages: [...state.stages, entry].slice(-MAX_STAGES) };
24
46
  }
25
47
  if (ev.type === 'log') {
26
- return { ...state, logs: [...state.logs, `[${ev.data.stage}] ${ev.data.line}`].slice(-MAX_LOGS) };
48
+ const activity = classifyActivity(ev.data.line);
49
+ return {
50
+ ...state,
51
+ stages: activity
52
+ ? updateLatestActivity(state.stages, ev.data.taskId, ev.data.stage, activity)
53
+ : state.stages,
54
+ logs: [...state.logs, `[${ev.data.stage}] ${ev.data.line}`].slice(-MAX_LOGS),
55
+ };
56
+ }
57
+ if (ev.type === 'process:spawn') {
58
+ return {
59
+ ...state,
60
+ stages: updateLatestActivity(state.stages, ev.data.taskId, ev.data.stage, 'waiting', ev.data.model),
61
+ };
62
+ }
63
+ if (ev.type === 'process:exit') {
64
+ if (!ev.data.taskId || !ev.data.stage)
65
+ return state;
66
+ return {
67
+ ...state,
68
+ stages: state.stages.map((stage) => stage.taskId === ev.data.taskId && stage.stage === ev.data.stage && stage.activity === 'waiting'
69
+ ? { ...stage, activity: undefined }
70
+ : stage),
71
+ };
27
72
  }
28
73
  return state;
29
74
  }
75
+ /**
76
+ * Fold a batch of events into state in a single step so a coalesced burst of
77
+ * SSE events produces one new state (one commit → one repaint). (INT-2407)
78
+ */
79
+ export function reducePipelineEvents(state, events) {
80
+ return events.reduce(reducePipelineEvent, state);
81
+ }
82
+ export function classifyActivity(line) {
83
+ const text = line.trim();
84
+ const lower = text.toLowerCase();
85
+ if (/\b(rate[-\s]?limit|quota|429)\b/.test(lower))
86
+ return 'rate-limited';
87
+ const tool = text.match(/(?:tool[:\s]+|🔧\s*)([a-zA-Z_][\w-]*)/);
88
+ if (tool)
89
+ return `tool: ${tool[1]}`;
90
+ if (/\b(apply_patch|read_file|write_file|edit_file|bash|shell|rg|grep)\b/.test(lower)) {
91
+ const matched = lower.match(/\b(apply_patch|read_file|write_file|edit_file|bash|shell|rg|grep)\b/);
92
+ return matched ? `tool: ${matched[1]}` : 'tool';
93
+ }
94
+ if (/\b(reasoning|thinking|analyzing|checking|planning)\b/.test(lower) || text.startsWith('💭'))
95
+ return 'thinking';
96
+ if (/\b(waiting|pending|queued)\b/.test(lower))
97
+ return 'waiting';
98
+ return undefined;
99
+ }
100
+ function activityFromStage(error) {
101
+ return error ? classifyActivity(error) : undefined;
102
+ }
103
+ function updateLatestActivity(stages, taskId, stageName, activity, model) {
104
+ for (let i = stages.length - 1; i >= 0; i--) {
105
+ const stage = stages[i];
106
+ if (stage.taskId !== taskId || stage.stage !== stageName || stage.status !== 'start')
107
+ continue;
108
+ const next = stages.slice();
109
+ next[i] = {
110
+ ...stage,
111
+ activity,
112
+ model: stage.model ?? model,
113
+ };
114
+ return next;
115
+ }
116
+ return stages;
117
+ }
30
118
  //# sourceMappingURL=pipelineEvents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineEvents.js","sourceRoot":"","sources":["../../src/tui/pipelineEvents.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,mEAAmE;AACnE,8EAA8E;AAC9E,4DAA4D;AAC5D,+CAA+C;AAoB/C,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC;AAC9B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAE5B,MAAM,CAAC,MAAM,oBAAoB,GAAkB,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAE5E,8EAA8E;AAC9E,MAAM,UAAU,mBAAmB,CAAC,KAAoB,EAAE,EAAY;IACpE,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClB,MAAM,KAAK,GAAe;YACxB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC;QACF,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"pipelineEvents.js","sourceRoot":"","sources":["../../src/tui/pipelineEvents.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/tui/sse.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAoBnF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAE3D;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CA4C9E"}
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/tui/sse.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAoBnF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAE3D;AAaD,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CA2D9E"}
package/dist/tui/sse.js CHANGED
@@ -5,6 +5,7 @@
5
5
  // replacing the old 5-second poll in the TUI.
6
6
  // ============================================
7
7
  import http from 'node:http';
8
+ const MAX_SSE_PARTIAL_BUFFER_CHARS = 64 * 1024;
8
9
  /**
9
10
  * Parse accumulated SSE text into events + the leftover (incomplete) tail.
10
11
  * Wire format (eventHub): `data: <json>\n\n` per event. Malformed frames are
@@ -37,6 +38,16 @@ export function parseSseFrames(buffer) {
37
38
  export function eventStreamPath(skipReplay) {
38
39
  return skipReplay ? '/api/events?skipReplay=1' : '/api/events';
39
40
  }
41
+ function isValidSseResponse(res) {
42
+ if (typeof res.statusCode === 'number' && (res.statusCode < 200 || res.statusCode >= 300))
43
+ return false;
44
+ // Unit tests use a tiny EventEmitter mock; real IncomingMessage always has headers.
45
+ if (!Object.prototype.hasOwnProperty.call(res, 'headers'))
46
+ return true;
47
+ const rawContentType = res.headers['content-type'];
48
+ const contentType = Array.isArray(rawContentType) ? rawContentType.join(';') : rawContentType;
49
+ return typeof contentType === 'string' && contentType.toLowerCase().includes('text/event-stream');
50
+ }
40
51
  /** Subscribe to the daemon's /api/events SSE stream, auto-reconnecting on drop. */
41
52
  export function connectEventStream(opts) {
42
53
  const host = opts.host ?? '127.0.0.1';
@@ -47,25 +58,40 @@ export function connectEventStream(opts) {
47
58
  let req = null;
48
59
  let timer = null;
49
60
  const scheduleReconnect = () => {
50
- opts.onStatus?.(false);
51
- if (closed)
61
+ if (closed || timer)
52
62
  return;
53
- timer = setTimeout(connect, reconnectMs);
63
+ buffer = '';
64
+ opts.onStatus?.(false);
65
+ timer = setTimeout(() => {
66
+ timer = null;
67
+ connect();
68
+ }, reconnectMs);
54
69
  };
55
70
  function connect() {
56
71
  if (closed)
57
72
  return;
58
73
  req = http.get({ host, port: opts.port, path: eventStreamPath(connectedOnce), headers: { Accept: 'text/event-stream' } }, (res) => {
74
+ if (!isValidSseResponse(res)) {
75
+ res.resume();
76
+ scheduleReconnect();
77
+ return;
78
+ }
59
79
  connectedOnce = true;
60
80
  opts.onStatus?.(true);
61
81
  res.setEncoding('utf-8');
62
82
  res.on('data', (chunk) => {
63
83
  buffer += chunk;
84
+ if (buffer.length > MAX_SSE_PARTIAL_BUFFER_CHARS) {
85
+ buffer = '';
86
+ res.destroy(new Error('SSE partial buffer exceeded limit'));
87
+ return;
88
+ }
64
89
  const { events, rest } = parseSseFrames(buffer);
65
90
  buffer = rest;
66
91
  for (const e of events)
67
92
  opts.onEvent(e);
68
93
  });
94
+ res.on('error', scheduleReconnect);
69
95
  res.on('end', scheduleReconnect);
70
96
  });
71
97
  req.on('error', scheduleReconnect);
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/tui/sse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/tui/sse.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,33 @@
1
1
  import type { StageEntry } from './pipelineEvents.js';
2
2
  export type TaskStatus = 'start' | 'complete' | 'fail';
3
- export interface TaskNode {
3
+ export interface RoleNode {
4
+ role: string;
5
+ status: TaskStatus;
6
+ model?: string;
7
+ durationMs?: number;
8
+ decision?: 'approve' | 'revise' | 'reject';
9
+ summary?: string;
10
+ activity?: string;
11
+ rateLimitResetsAt?: number;
12
+ }
13
+ export interface WorktreeNode {
4
14
  taskId: string;
5
- stages: StageEntry[];
15
+ issueIdentifier?: string;
16
+ title?: string;
17
+ branch?: string;
18
+ worktree?: string;
19
+ currentStage?: string;
20
+ durationMs?: number;
21
+ decision?: 'approve' | 'revise' | 'reject';
22
+ roles: RoleNode[];
6
23
  /** Rolled-up status: fail if any stage failed, complete if all complete, else running. */
7
24
  status: TaskStatus;
8
25
  }
9
- export declare function buildSubagentTree(stages: StageEntry[]): TaskNode[];
26
+ export interface RepositoryNode {
27
+ repository: string;
28
+ projectPath?: string;
29
+ worktrees: WorktreeNode[];
30
+ status: TaskStatus;
31
+ }
32
+ export declare function buildSubagentTree(stages: StageEntry[]): RepositoryNode[];
10
33
  //# sourceMappingURL=subagentTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagentTree.d.ts","sourceRoot":"","sources":["../../src/tui/subagentTree.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,0FAA0F;IAC1F,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAelE"}
1
+ {"version":3,"file":"subagentTree.d.ts","sourceRoot":"","sources":["../../src/tui/subagentTree.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,0FAA0F;IAC1F,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAoDxE"}