@intrect/openswarm 0.9.2 → 0.10.0

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 (370) hide show
  1. package/README.md +76 -1
  2. package/config.example.yaml +6 -0
  3. package/dist/adapters/agenticLoop.d.ts +24 -0
  4. package/dist/adapters/agenticLoop.d.ts.map +1 -1
  5. package/dist/adapters/agenticLoop.js +130 -11
  6. package/dist/adapters/agenticLoop.js.map +1 -1
  7. package/dist/adapters/applyPatch.d.ts +21 -0
  8. package/dist/adapters/applyPatch.d.ts.map +1 -0
  9. package/dist/adapters/applyPatch.js +175 -0
  10. package/dist/adapters/applyPatch.js.map +1 -0
  11. package/dist/adapters/base.d.ts.map +1 -1
  12. package/dist/adapters/base.js +7 -0
  13. package/dist/adapters/base.js.map +1 -1
  14. package/dist/adapters/codex.js +10 -0
  15. package/dist/adapters/codex.js.map +1 -1
  16. package/dist/adapters/codexResponses.d.ts +8 -0
  17. package/dist/adapters/codexResponses.d.ts.map +1 -1
  18. package/dist/adapters/codexResponses.js +86 -8
  19. package/dist/adapters/codexResponses.js.map +1 -1
  20. package/dist/adapters/errorClassification.d.ts +8 -0
  21. package/dist/adapters/errorClassification.d.ts.map +1 -0
  22. package/dist/adapters/errorClassification.js +54 -0
  23. package/dist/adapters/errorClassification.js.map +1 -0
  24. package/dist/adapters/gpt.d.ts.map +1 -1
  25. package/dist/adapters/gpt.js +12 -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 +9 -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 +9 -1
  32. package/dist/adapters/openrouter.js.map +1 -1
  33. package/dist/adapters/rateLimitError.d.ts +29 -0
  34. package/dist/adapters/rateLimitError.d.ts.map +1 -0
  35. package/dist/adapters/rateLimitError.js +64 -0
  36. package/dist/adapters/rateLimitError.js.map +1 -0
  37. package/dist/adapters/resultParsing.d.ts.map +1 -1
  38. package/dist/adapters/resultParsing.js +18 -0
  39. package/dist/adapters/resultParsing.js.map +1 -1
  40. package/dist/adapters/tools.d.ts +3 -0
  41. package/dist/adapters/tools.d.ts.map +1 -1
  42. package/dist/adapters/tools.js +148 -11
  43. package/dist/adapters/tools.js.map +1 -1
  44. package/dist/adapters/types.d.ts +15 -0
  45. package/dist/adapters/types.d.ts.map +1 -1
  46. package/dist/adapters/webTools.d.ts.map +1 -1
  47. package/dist/adapters/webTools.js +44 -21
  48. package/dist/adapters/webTools.js.map +1 -1
  49. package/dist/agents/agentPair.d.ts +9 -0
  50. package/dist/agents/agentPair.d.ts.map +1 -1
  51. package/dist/agents/agentPair.js.map +1 -1
  52. package/dist/agents/auditor.d.ts.map +1 -1
  53. package/dist/agents/auditor.js +3 -0
  54. package/dist/agents/auditor.js.map +1 -1
  55. package/dist/agents/documenter.d.ts.map +1 -1
  56. package/dist/agents/documenter.js +3 -0
  57. package/dist/agents/documenter.js.map +1 -1
  58. package/dist/agents/draftAnalyzer.d.ts +30 -7
  59. package/dist/agents/draftAnalyzer.d.ts.map +1 -1
  60. package/dist/agents/draftAnalyzer.js +181 -30
  61. package/dist/agents/draftAnalyzer.js.map +1 -1
  62. package/dist/agents/pairPipeline.d.ts +7 -1
  63. package/dist/agents/pairPipeline.d.ts.map +1 -1
  64. package/dist/agents/pairPipeline.js +110 -66
  65. package/dist/agents/pairPipeline.js.map +1 -1
  66. package/dist/agents/pipelineFormat.d.ts.map +1 -1
  67. package/dist/agents/pipelineFormat.js +4 -0
  68. package/dist/agents/pipelineFormat.js.map +1 -1
  69. package/dist/agents/reviewer.d.ts +16 -0
  70. package/dist/agents/reviewer.d.ts.map +1 -1
  71. package/dist/agents/reviewer.js +30 -0
  72. package/dist/agents/reviewer.js.map +1 -1
  73. package/dist/agents/skillDocumenter.d.ts.map +1 -1
  74. package/dist/agents/skillDocumenter.js +3 -0
  75. package/dist/agents/skillDocumenter.js.map +1 -1
  76. package/dist/agents/tester.d.ts.map +1 -1
  77. package/dist/agents/tester.js +3 -0
  78. package/dist/agents/tester.js.map +1 -1
  79. package/dist/agents/worker.d.ts +14 -0
  80. package/dist/agents/worker.d.ts.map +1 -1
  81. package/dist/agents/worker.js +123 -22
  82. package/dist/agents/worker.js.map +1 -1
  83. package/dist/automation/autonomousRunner.d.ts +12 -0
  84. package/dist/automation/autonomousRunner.d.ts.map +1 -1
  85. package/dist/automation/autonomousRunner.js +218 -29
  86. package/dist/automation/autonomousRunner.js.map +1 -1
  87. package/dist/automation/runnerExecution.d.ts +15 -0
  88. package/dist/automation/runnerExecution.d.ts.map +1 -1
  89. package/dist/automation/runnerExecution.js +77 -1
  90. package/dist/automation/runnerExecution.js.map +1 -1
  91. package/dist/automation/runnerState.d.ts +7 -0
  92. package/dist/automation/runnerState.d.ts.map +1 -1
  93. package/dist/automation/runnerState.js +23 -1
  94. package/dist/automation/runnerState.js.map +1 -1
  95. package/dist/automation/runnerTypes.d.ts +2 -0
  96. package/dist/automation/runnerTypes.d.ts.map +1 -1
  97. package/dist/automation/scheduler.d.ts +12 -0
  98. package/dist/automation/scheduler.d.ts.map +1 -1
  99. package/dist/automation/scheduler.js +29 -2
  100. package/dist/automation/scheduler.js.map +1 -1
  101. package/dist/automation/taskSource.d.ts +9 -1
  102. package/dist/automation/taskSource.d.ts.map +1 -1
  103. package/dist/automation/taskSource.js +13 -2
  104. package/dist/automation/taskSource.js.map +1 -1
  105. package/dist/cli/auditPM.d.ts +40 -0
  106. package/dist/cli/auditPM.d.ts.map +1 -0
  107. package/dist/cli/auditPM.js +132 -0
  108. package/dist/cli/auditPM.js.map +1 -0
  109. package/dist/cli/designPipeline.d.ts +30 -0
  110. package/dist/cli/designPipeline.d.ts.map +1 -0
  111. package/dist/cli/designPipeline.js +113 -0
  112. package/dist/cli/designPipeline.js.map +1 -0
  113. package/dist/cli/mcpCommand.d.ts +22 -0
  114. package/dist/cli/mcpCommand.d.ts.map +1 -0
  115. package/dist/cli/mcpCommand.js +93 -0
  116. package/dist/cli/mcpCommand.js.map +1 -0
  117. package/dist/cli/projectHandler.d.ts.map +1 -1
  118. package/dist/cli/projectHandler.js +4 -2
  119. package/dist/cli/projectHandler.js.map +1 -1
  120. package/dist/cli/reviewAudit.d.ts +130 -0
  121. package/dist/cli/reviewAudit.d.ts.map +1 -0
  122. package/dist/cli/reviewAudit.js +283 -0
  123. package/dist/cli/reviewAudit.js.map +1 -0
  124. package/dist/cli/reviewCommand.d.ts +53 -0
  125. package/dist/cli/reviewCommand.d.ts.map +1 -0
  126. package/dist/cli/reviewCommand.js +207 -0
  127. package/dist/cli/reviewCommand.js.map +1 -0
  128. package/dist/cli/reviewMaxCommand.d.ts +35 -0
  129. package/dist/cli/reviewMaxCommand.d.ts.map +1 -0
  130. package/dist/cli/reviewMaxCommand.js +272 -0
  131. package/dist/cli/reviewMaxCommand.js.map +1 -0
  132. package/dist/cli/reviewProgress.d.ts +34 -0
  133. package/dist/cli/reviewProgress.d.ts.map +1 -0
  134. package/dist/cli/reviewProgress.js +109 -0
  135. package/dist/cli/reviewProgress.js.map +1 -0
  136. package/dist/cli/scheduleCommand.d.ts +15 -0
  137. package/dist/cli/scheduleCommand.d.ts.map +1 -0
  138. package/dist/cli/scheduleCommand.js +68 -0
  139. package/dist/cli/scheduleCommand.js.map +1 -0
  140. package/dist/cli.js +182 -26
  141. package/dist/cli.js.map +1 -1
  142. package/dist/core/config.d.ts +24 -0
  143. package/dist/core/config.d.ts.map +1 -1
  144. package/dist/core/config.js +42 -0
  145. package/dist/core/config.js.map +1 -1
  146. package/dist/core/providerOverride.d.ts.map +1 -1
  147. package/dist/core/providerOverride.js +16 -13
  148. package/dist/core/providerOverride.js.map +1 -1
  149. package/dist/core/service.d.ts.map +1 -1
  150. package/dist/core/service.js +11 -0
  151. package/dist/core/service.js.map +1 -1
  152. package/dist/core/types.d.ts +38 -0
  153. package/dist/core/types.d.ts.map +1 -1
  154. package/dist/discord/discordHandlers.d.ts.map +1 -1
  155. package/dist/discord/discordHandlers.js +1 -0
  156. package/dist/discord/discordHandlers.js.map +1 -1
  157. package/dist/index.js +4 -0
  158. package/dist/index.js.map +1 -1
  159. package/dist/linear/linear.d.ts +21 -0
  160. package/dist/linear/linear.d.ts.map +1 -1
  161. package/dist/linear/linear.js +159 -66
  162. package/dist/linear/linear.js.map +1 -1
  163. package/dist/linear/projectUpdater.js +3 -1
  164. package/dist/linear/projectUpdater.js.map +1 -1
  165. package/dist/locale/prompts/en.d.ts.map +1 -1
  166. package/dist/locale/prompts/en.js +104 -11
  167. package/dist/locale/prompts/en.js.map +1 -1
  168. package/dist/locale/prompts/ko.d.ts.map +1 -1
  169. package/dist/locale/prompts/ko.js +103 -11
  170. package/dist/locale/prompts/ko.js.map +1 -1
  171. package/dist/locale/types.d.ts +12 -0
  172. package/dist/locale/types.d.ts.map +1 -1
  173. package/dist/mcp/mcpClient.d.ts +28 -1
  174. package/dist/mcp/mcpClient.d.ts.map +1 -1
  175. package/dist/mcp/mcpClient.js +74 -3
  176. package/dist/mcp/mcpClient.js.map +1 -1
  177. package/dist/orchestration/decisionEngine.d.ts +20 -0
  178. package/dist/orchestration/decisionEngine.d.ts.map +1 -1
  179. package/dist/orchestration/decisionEngine.js +23 -0
  180. package/dist/orchestration/decisionEngine.js.map +1 -1
  181. package/dist/orchestration/taskScheduler.d.ts.map +1 -1
  182. package/dist/orchestration/taskScheduler.js +12 -1
  183. package/dist/orchestration/taskScheduler.js.map +1 -1
  184. package/dist/support/chatBackend.d.ts +18 -0
  185. package/dist/support/chatBackend.d.ts.map +1 -1
  186. package/dist/support/chatBackend.js +92 -8
  187. package/dist/support/chatBackend.js.map +1 -1
  188. package/dist/support/chatSession.d.ts +51 -0
  189. package/dist/support/chatSession.d.ts.map +1 -0
  190. package/dist/support/chatSession.js +134 -0
  191. package/dist/support/chatSession.js.map +1 -0
  192. package/dist/support/chatTui.d.ts.map +1 -1
  193. package/dist/support/chatTui.js +6 -75
  194. package/dist/support/chatTui.js.map +1 -1
  195. package/dist/support/concurrencyPool.d.ts +18 -0
  196. package/dist/support/concurrencyPool.d.ts.map +1 -0
  197. package/dist/support/concurrencyPool.js +46 -0
  198. package/dist/support/concurrencyPool.js.map +1 -0
  199. package/dist/support/dashboardHtml.d.ts +1 -1
  200. package/dist/support/dashboardHtml.d.ts.map +1 -1
  201. package/dist/support/dashboardHtml.js +0 -28
  202. package/dist/support/dashboardHtml.js.map +1 -1
  203. package/dist/support/editParser.d.ts +26 -0
  204. package/dist/support/editParser.d.ts.map +1 -1
  205. package/dist/support/editParser.js +43 -0
  206. package/dist/support/editParser.js.map +1 -1
  207. package/dist/support/goalCommand.d.ts +35 -0
  208. package/dist/support/goalCommand.d.ts.map +1 -0
  209. package/dist/support/goalCommand.js +112 -0
  210. package/dist/support/goalCommand.js.map +1 -0
  211. package/dist/support/index.d.ts +0 -1
  212. package/dist/support/index.d.ts.map +1 -1
  213. package/dist/support/index.js +0 -1
  214. package/dist/support/index.js.map +1 -1
  215. package/dist/support/web.d.ts.map +1 -1
  216. package/dist/support/web.js +0 -7
  217. package/dist/support/web.js.map +1 -1
  218. package/dist/taskState/store.d.ts +5 -0
  219. package/dist/taskState/store.d.ts.map +1 -1
  220. package/dist/taskState/store.js +16 -0
  221. package/dist/taskState/store.js.map +1 -1
  222. package/dist/telemetry/telemetry.d.ts +42 -0
  223. package/dist/telemetry/telemetry.d.ts.map +1 -0
  224. package/dist/telemetry/telemetry.js +138 -0
  225. package/dist/telemetry/telemetry.js.map +1 -0
  226. package/dist/tui/App.d.ts +20 -0
  227. package/dist/tui/App.d.ts.map +1 -0
  228. package/dist/tui/App.js +52 -0
  229. package/dist/tui/App.js.map +1 -0
  230. package/dist/tui/chatModel.d.ts +81 -0
  231. package/dist/tui/chatModel.d.ts.map +1 -0
  232. package/dist/tui/chatModel.js +129 -0
  233. package/dist/tui/chatModel.js.map +1 -0
  234. package/dist/tui/components/AuditBoard.d.ts +10 -0
  235. package/dist/tui/components/AuditBoard.d.ts.map +1 -0
  236. package/dist/tui/components/AuditBoard.js +50 -0
  237. package/dist/tui/components/AuditBoard.js.map +1 -0
  238. package/dist/tui/components/ChatInput.d.ts +14 -0
  239. package/dist/tui/components/ChatInput.d.ts.map +1 -0
  240. package/dist/tui/components/ChatInput.js +46 -0
  241. package/dist/tui/components/ChatInput.js.map +1 -0
  242. package/dist/tui/components/ChatLog.d.ts +12 -0
  243. package/dist/tui/components/ChatLog.d.ts.map +1 -0
  244. package/dist/tui/components/ChatLog.js +47 -0
  245. package/dist/tui/components/ChatLog.js.map +1 -0
  246. package/dist/tui/components/CommandPalette.d.ts +6 -0
  247. package/dist/tui/components/CommandPalette.d.ts.map +1 -0
  248. package/dist/tui/components/CommandPalette.js +14 -0
  249. package/dist/tui/components/CommandPalette.js.map +1 -0
  250. package/dist/tui/components/ContextBar.d.ts +9 -0
  251. package/dist/tui/components/ContextBar.d.ts.map +1 -0
  252. package/dist/tui/components/ContextBar.js +18 -0
  253. package/dist/tui/components/ContextBar.js.map +1 -0
  254. package/dist/tui/components/DataTable.d.ts +6 -0
  255. package/dist/tui/components/DataTable.d.ts.map +1 -0
  256. package/dist/tui/components/DataTable.js +13 -0
  257. package/dist/tui/components/DataTable.js.map +1 -0
  258. package/dist/tui/components/HelpBar.d.ts +2 -0
  259. package/dist/tui/components/HelpBar.d.ts.map +1 -0
  260. package/dist/tui/components/HelpBar.js +8 -0
  261. package/dist/tui/components/HelpBar.js.map +1 -0
  262. package/dist/tui/components/LiveLog.d.ts +6 -0
  263. package/dist/tui/components/LiveLog.d.ts.map +1 -0
  264. package/dist/tui/components/LiveLog.js +10 -0
  265. package/dist/tui/components/LiveLog.js.map +1 -0
  266. package/dist/tui/components/LogLine.d.ts +4 -0
  267. package/dist/tui/components/LogLine.d.ts.map +1 -0
  268. package/dist/tui/components/LogLine.js +8 -0
  269. package/dist/tui/components/LogLine.js.map +1 -0
  270. package/dist/tui/components/SelectList.d.ts +6 -0
  271. package/dist/tui/components/SelectList.d.ts.map +1 -0
  272. package/dist/tui/components/SelectList.js +15 -0
  273. package/dist/tui/components/SelectList.js.map +1 -0
  274. package/dist/tui/components/StageTimeline.d.ts +7 -0
  275. package/dist/tui/components/StageTimeline.d.ts.map +1 -0
  276. package/dist/tui/components/StageTimeline.js +18 -0
  277. package/dist/tui/components/StageTimeline.js.map +1 -0
  278. package/dist/tui/components/StatusBar.d.ts +7 -0
  279. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  280. package/dist/tui/components/StatusBar.js +8 -0
  281. package/dist/tui/components/StatusBar.js.map +1 -0
  282. package/dist/tui/components/SubagentTree.d.ts +10 -0
  283. package/dist/tui/components/SubagentTree.d.ts.map +1 -0
  284. package/dist/tui/components/SubagentTree.js +12 -0
  285. package/dist/tui/components/SubagentTree.js.map +1 -0
  286. package/dist/tui/components/TabBar.d.ts +5 -0
  287. package/dist/tui/components/TabBar.d.ts.map +1 -0
  288. package/dist/tui/components/TabBar.js +9 -0
  289. package/dist/tui/components/TabBar.js.map +1 -0
  290. package/dist/tui/components/WorkingIndicator.d.ts +6 -0
  291. package/dist/tui/components/WorkingIndicator.d.ts.map +1 -0
  292. package/dist/tui/components/WorkingIndicator.js +20 -0
  293. package/dist/tui/components/WorkingIndicator.js.map +1 -0
  294. package/dist/tui/hooks/useMonitor.d.ts +8 -0
  295. package/dist/tui/hooks/useMonitor.d.ts.map +1 -0
  296. package/dist/tui/hooks/useMonitor.js +42 -0
  297. package/dist/tui/hooks/useMonitor.js.map +1 -0
  298. package/dist/tui/hooks/usePipelineEvents.d.ts +6 -0
  299. package/dist/tui/hooks/usePipelineEvents.d.ts.map +1 -0
  300. package/dist/tui/hooks/usePipelineEvents.js +21 -0
  301. package/dist/tui/hooks/usePipelineEvents.js.map +1 -0
  302. package/dist/tui/hooks/useTerminalSize.d.ts +6 -0
  303. package/dist/tui/hooks/useTerminalSize.d.ts.map +1 -0
  304. package/dist/tui/hooks/useTerminalSize.js +26 -0
  305. package/dist/tui/hooks/useTerminalSize.js.map +1 -0
  306. package/dist/tui/index.d.ts +22 -0
  307. package/dist/tui/index.d.ts.map +1 -0
  308. package/dist/tui/index.js +18 -0
  309. package/dist/tui/index.js.map +1 -0
  310. package/dist/tui/inputDebug.d.ts +20 -0
  311. package/dist/tui/inputDebug.d.ts.map +1 -0
  312. package/dist/tui/inputDebug.js +42 -0
  313. package/dist/tui/inputDebug.js.map +1 -0
  314. package/dist/tui/loadingMessages.d.ts +11 -0
  315. package/dist/tui/loadingMessages.d.ts.map +1 -0
  316. package/dist/tui/loadingMessages.js +39 -0
  317. package/dist/tui/loadingMessages.js.map +1 -0
  318. package/dist/tui/logFormat.d.ts +10 -0
  319. package/dist/tui/logFormat.d.ts.map +1 -0
  320. package/dist/tui/logFormat.js +86 -0
  321. package/dist/tui/logFormat.js.map +1 -0
  322. package/dist/tui/markdown.d.ts +3 -0
  323. package/dist/tui/markdown.d.ts.map +1 -0
  324. package/dist/tui/markdown.js +33 -0
  325. package/dist/tui/markdown.js.map +1 -0
  326. package/dist/tui/monitorApi.d.ts +6 -0
  327. package/dist/tui/monitorApi.d.ts.map +1 -0
  328. package/dist/tui/monitorApi.js +35 -0
  329. package/dist/tui/monitorApi.js.map +1 -0
  330. package/dist/tui/monitorRows.d.ts +43 -0
  331. package/dist/tui/monitorRows.d.ts.map +1 -0
  332. package/dist/tui/monitorRows.js +65 -0
  333. package/dist/tui/monitorRows.js.map +1 -0
  334. package/dist/tui/panels/ChatPanel.d.ts +16 -0
  335. package/dist/tui/panels/ChatPanel.d.ts.map +1 -0
  336. package/dist/tui/panels/ChatPanel.js +305 -0
  337. package/dist/tui/panels/ChatPanel.js.map +1 -0
  338. package/dist/tui/panels/LogsPanel.d.ts +8 -0
  339. package/dist/tui/panels/LogsPanel.d.ts.map +1 -0
  340. package/dist/tui/panels/LogsPanel.js +19 -0
  341. package/dist/tui/panels/LogsPanel.js.map +1 -0
  342. package/dist/tui/panels/MonitorPanel.d.ts +8 -0
  343. package/dist/tui/panels/MonitorPanel.d.ts.map +1 -0
  344. package/dist/tui/panels/MonitorPanel.js +19 -0
  345. package/dist/tui/panels/MonitorPanel.js.map +1 -0
  346. package/dist/tui/panels/PipelinePanel.d.ts +6 -0
  347. package/dist/tui/panels/PipelinePanel.d.ts.map +1 -0
  348. package/dist/tui/panels/PipelinePanel.js +22 -0
  349. package/dist/tui/panels/PipelinePanel.js.map +1 -0
  350. package/dist/tui/pipelineEvents.d.ts +21 -0
  351. package/dist/tui/pipelineEvents.d.ts.map +1 -0
  352. package/dist/tui/pipelineEvents.js +30 -0
  353. package/dist/tui/pipelineEvents.js.map +1 -0
  354. package/dist/tui/sse.d.ts +24 -0
  355. package/dist/tui/sse.d.ts.map +1 -0
  356. package/dist/tui/sse.js +78 -0
  357. package/dist/tui/sse.js.map +1 -0
  358. package/dist/tui/subagentTree.d.ts +10 -0
  359. package/dist/tui/subagentTree.d.ts.map +1 -0
  360. package/dist/tui/subagentTree.js +30 -0
  361. package/dist/tui/subagentTree.js.map +1 -0
  362. package/dist/tui/tabs.d.ts +10 -0
  363. package/dist/tui/tabs.d.ts.map +1 -0
  364. package/dist/tui/tabs.js +26 -0
  365. package/dist/tui/tabs.js.map +1 -0
  366. package/dist/tui/theme.d.ts +29 -0
  367. package/dist/tui/theme.d.ts.map +1 -0
  368. package/dist/tui/theme.js +34 -0
  369. package/dist/tui/theme.js.map +1 -0
  370. package/package.json +13 -3
package/README.md CHANGED
@@ -64,6 +64,7 @@ Status bar shows: provider · model · message count · cumulative cost
64
64
  ```bash
65
65
  openswarm # TUI chat (default)
66
66
  openswarm chat [session] # Simple readline chat
67
+ openswarm resume # Reopen the most recent chat session (conversation + goal)
67
68
  openswarm start # Start full daemon (requires config.yaml)
68
69
  openswarm run "Fix the bug" -p ~/my-project # Run a single task
69
70
  openswarm exec "Run tests" --local --pipeline # Execute via daemon
@@ -71,6 +72,14 @@ openswarm init # Interactive setup wizard (provider auth, Line
71
72
  openswarm doctor # Diagnose environment (runtime, native deps, providers, ports)
72
73
  openswarm validate # Validate config.yaml
73
74
 
75
+ # Code review
76
+ openswarm review # Review the working-tree changes
77
+ openswarm review --max # Full-codebase audit: fan reviewer subagents over areas
78
+ # → report at .openswarm/audit/ + PM-synthesized Linear
79
+ # issues by default (≤10 cohesive, master + sub-issues)
80
+ # --no-linear (report only), --issues-per-area (legacy spray),
81
+ # --issues <id> (set parent), --fallback <adapter>, --out <file>
82
+
74
83
  # Code Registry & BS Detector
75
84
  openswarm check --scan # Scan repo → register all entities
76
85
  openswarm check src/foo.ts # File brief (entities, tests, risk)
@@ -308,7 +317,7 @@ Background: decay, consolidation, contradiction detection, distillation.
308
317
  (success → `system_pattern` with files changed + approach, review rejection →
309
318
  `constraint` pitfall), and the next task on the same repo recalls the most
310
319
  relevant entries into the worker prompt as a "Repository Knowledge" section.
311
- Workers get better at a codebase the more they work on it.
320
+ Workers get better at a codebase the more they work on it. Workers can also actively query accumulated repo knowledge mid-task via the `search_memory` tool.
312
321
 
313
322
  ### Benchmarks (L0–L6)
314
323
 
@@ -423,12 +432,50 @@ src/
423
432
  | `~/.openswarm/registry.db` | Code entity registry (SQLite) |
424
433
  | `~/.openswarm/issues.db` | Local issue tracker (SQLite) |
425
434
  | `~/.claude/openswarm-*.json` | Pipeline history and task state |
435
+ | `~/.config/openswarm/telemetry.json` | Anonymous install id + opt-out notice flag |
426
436
  | `config.yaml` | Main configuration |
427
437
  | `dist/` | Compiled output |
428
438
 
429
439
  ---
430
440
 
431
441
 
442
+ ## Privacy & Telemetry
443
+
444
+ OpenSwarm collects **anonymous, opt-out** usage telemetry to understand how it's
445
+ actually used (npm downloads and GitHub stars don't tell us). A single event is
446
+ sent per command invocation.
447
+
448
+ **What is sent** (and nothing else):
449
+
450
+ | Field | Example | Why |
451
+ |-------|---------|-----|
452
+ | Random install id | `V1StGXR8_Z5j...` (nanoid) | De-duplicate installs — anonymous, local-only |
453
+ | Command | `start`, `run`, `chat` | Which features are used |
454
+ | Version | `0.9.3` | Version adoption |
455
+ | OS / arch | `darwin` / `arm64` | Platform support priorities |
456
+ | Node version | `22.3.0` | Runtime support |
457
+ | Adapter family | `codex` | Which providers are popular |
458
+ | Error flag | `0` / `1` | Failure rate (boolean only) |
459
+
460
+ **Never sent:** source code, prompts, file paths, repo or issue names, Linear/Discord
461
+ content, environment variables, API keys, or any personal data.
462
+
463
+ **How to opt out** (any one):
464
+
465
+ ```bash
466
+ export OPENSWARM_TELEMETRY=0 # or DO_NOT_TRACK=1
467
+ ```
468
+ ```yaml
469
+ # config.yaml
470
+ telemetry:
471
+ enabled: false
472
+ ```
473
+
474
+ CI environments (`CI` / `GITHUB_ACTIONS`) are excluded automatically. The collector
475
+ is a Cloudflare Worker writing to a private D1 table; telemetry never blocks or slows
476
+ the CLI (fire-and-forget with a short timeout, and failures are silently ignored).
477
+
478
+
432
479
  ## Tech Stack
433
480
 
434
481
  | Category | Technology |
@@ -513,6 +560,34 @@ src/
513
560
 
514
561
  ---
515
562
 
563
+ ## Troubleshooting
564
+
565
+ ### Korean / multibyte input doubles over mobile SSH (e.g. Termius)
566
+
567
+ If the chat TUI shows each Hangul (or other multibyte) character twice —
568
+ `이이렇렇게 쓰쓰이는것` — while ASCII characters look fine, the cause is almost
569
+ always **client-side local / predictive echo** in the mobile SSH app drawing an
570
+ extra copy of wide characters. The keystroke reaches OpenSwarm once; the terminal
571
+ paints it twice.
572
+
573
+ Fix it in the SSH client:
574
+
575
+ - **Termius** → Host/Terminal settings → turn **Local Echo** (a.k.a. predictive
576
+ echo) **off**, and ensure the encoding is **UTF-8**.
577
+ - Confirm the server side is fine by running with diagnostics:
578
+
579
+ ```bash
580
+ OPENSWARM_DEBUG_INPUT=1 openswarm chat
581
+ ```
582
+
583
+ Type a few Korean characters, then inspect `~/.openswarm/input-debug.log`. If a
584
+ single keypress logs **one** code point (`cp=[51060]`) but you saw two glyphs,
585
+ the doubling is terminal echo (client-side). If it logs the code point **twice**
586
+ in one event, it's an app-level issue — please attach the log to
587
+ [a bug report](https://github.com/unohee/OpenSwarm/issues/new?template=bug_report.md).
588
+
589
+ ---
590
+
516
591
  ## Contributing
517
592
 
518
593
  Contributions are welcome — OpenSwarm is MIT-licensed and accepts pull requests from anyone. See **[CONTRIBUTING.md](CONTRIBUTING.md)** for development setup, the local check gates, branch/commit conventions, and the PR process. By participating you agree to the [Code of Conduct](CODE_OF_CONDUCT.md).
@@ -145,3 +145,9 @@ prProcessor:
145
145
  schedule: "*/15 * * * *" # Check every 15 minutes
146
146
  cooldownHours: 6 # Wait 6 hours after processing
147
147
  maxIterations: 3 # Max 3 Worker-Reviewer iterations
148
+
149
+ # Anonymous usage telemetry (opt-out). Sends command name, version, and OS only —
150
+ # never code, prompts, paths, or personal data. Disable here, or via
151
+ # OPENSWARM_TELEMETRY=0 / DO_NOT_TRACK=1. CI environments are excluded automatically.
152
+ telemetry:
153
+ enabled: true
@@ -1,4 +1,5 @@
1
1
  import { type ToolCall, type ToolDefinition } from './tools.js';
2
+ import { type EditFormat } from '../support/editParser.js';
2
3
  import type { CliRunResult } from './types.js';
3
4
  /** OpenAI Chat Completions API 메시지 포맷 */
4
5
  export type ChatMessage = {
@@ -37,6 +38,8 @@ interface ChatCompletionResponse {
37
38
  prompt_tokens: number;
38
39
  completion_tokens: number;
39
40
  total_tokens: number;
41
+ /** Cached input tokens (prompt-cache hits). Subset of prompt_tokens. */
42
+ cached_tokens?: number;
40
43
  };
41
44
  }
42
45
  /** 에이전틱 루프 설정 */
@@ -78,10 +81,21 @@ export interface AgenticLoopOptions {
78
81
  bashTimeoutMs?: number;
79
82
  /** Expose web_fetch + web_search tools (default true). Disabled e.g. for SWE-bench integrity. */
80
83
  webTools?: boolean;
84
+ /** Expose the apply_patch (V4A) tool — codex adapters only (codex models are
85
+ * RLHF-trained on V4A; non-codex models emit malformed V4A). Default false. */
86
+ applyPatch?: boolean;
81
87
  /** MCP tools (named `server__tool`) discovered from mcp.json, exposed alongside the native tools. */
82
88
  mcpTools?: ToolDefinition[];
83
89
  /** Abort the loop (checked each turn) — Esc/Ctrl+C in chat. */
84
90
  signal?: AbortSignal;
91
+ /**
92
+ * File-edit format matched to model capability (INT-1676). Default 'json'.
93
+ * - 'json': keep the edit_file / apply_patch tools (frontier models).
94
+ * - 'search-replace': hide those tools; parse Aider-style SEARCH/REPLACE blocks
95
+ * from the response text and apply them (much better for weaker models).
96
+ * - 'whole-file': hide edit_file / apply_patch; the model rewrites via write_file.
97
+ */
98
+ editFormat?: EditFormat;
85
99
  }
86
100
  /** 루프 실행 결과 */
87
101
  export interface AgenticLoopResult {
@@ -93,6 +107,8 @@ export interface AgenticLoopResult {
93
107
  apiCallCount: number;
94
108
  /** 총 토큰 사용량 (추적 가능한 경우) */
95
109
  totalTokens: number;
110
+ /** 캐시 적중 입력 토큰 누적 (totalTokens의 부분집합) — prompt-cache 효율 측정용 */
111
+ cachedTokens: number;
96
112
  /** 소요 시간 (ms) */
97
113
  durationMs: number;
98
114
  }
@@ -117,6 +133,14 @@ export declare function toolCallKey(tc: ToolCall): string;
117
133
  * not stalls (the model produced no tool calls, which ends the loop normally).
118
134
  */
119
135
  export declare function allToolCallsSeen(toolCalls: ToolCall[], seen: Set<string>): boolean;
136
+ /**
137
+ * Fixed early turn after which a read-heavy worker with zero edits gets nudged to
138
+ * act. Ported from stranded feat/v0.7.0 (8a1420f): the old guard fired at
139
+ * maxTurns-2 (too late). Fire EARLY so the model still has budget to apply edits.
140
+ */
141
+ export declare const READ_LOOP_NUDGE_AT = 6;
142
+ /** True when a worker has read/searched past the early budget with no edits yet. */
143
+ export declare function shouldNudgeReadLoop(editToolCount: number, nudgesUsed: number, nudgeMax: number, turn: number): boolean;
120
144
  /**
121
145
  * 이전 턴(assistant+tool 쌍)을 요약 1줄로 교체.
122
146
  * OpenAI API 제약: tool 메시지는 직전 assistant의 tool_call_id와 대응해야 하므로
@@ -1 +1 @@
1
- {"version":3,"file":"agenticLoop.d.ts","sourceRoot":"","sources":["../../src/adapters/agenticLoop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agenticLoop.d.ts","sourceRoot":"","sources":["../../src/adapters/agenticLoop.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,10 @@
5
5
  // OpenAI function calling 포맷 기반.
6
6
  // VEGA token_count.py 패턴 이식 — 토큰 기반 히스토리 압축.
7
7
  // ============================================
8
- import { TOOL_DEFINITIONS, executeToolCalls, createReadCache } from './tools.js';
8
+ import { TOOL_DEFINITIONS, APPLY_PATCH_TOOL, executeToolCalls, createReadCache, validatePath } from './tools.js';
9
9
  import { WEB_TOOL_DEFINITIONS } from './webTools.js';
10
+ import { detectRateLimit } from './rateLimitError.js';
11
+ import { parseSearchReplaceBlocks, applyEditBlock } from '../support/editParser.js';
10
12
  // ============ 토큰 카운팅 (VEGA token_count.py 이식) ============
11
13
  // cl100k_base 근사: 한국어 0.78t/char, 영어 0.27t/char
12
14
  function countTokensApprox(text) {
@@ -54,7 +56,7 @@ export async function runAgenticLoop(options) {
54
56
  // 긴 작업(SWE-bench급 실전 repo)에서 압축이 너무 일찍·자주 터지면 모델이 읽은
55
57
  // 파일 컨텍스트를 잃고 같은 파일을 반복 read하다 수정에 도달 못 한다(무한 탐색).
56
58
  // 현대 모델 컨텍스트(128k+)에 맞춰 임계를 넉넉히, 최근 보존 블록도 늘린다.
57
- compactTokenThreshold = 60000, compactAfterMessages = 60, keepRecentMessages = 16, nudgeMaxOnNoEdit = 0, protectedFiles, bashTimeoutMs, webTools = true, mcpTools, signal, } = options;
59
+ compactTokenThreshold = 60000, compactAfterMessages = 60, keepRecentMessages = 16, nudgeMaxOnNoEdit = 0, protectedFiles, bashTimeoutMs, webTools = true, applyPatch = false, mcpTools, signal, editFormat = 'json', } = options;
58
60
  const startTime = Date.now();
59
61
  const deadline = startTime + timeoutMs;
60
62
  // 메시지 히스토리 구성
@@ -70,9 +72,16 @@ export async function runAgenticLoop(options) {
70
72
  `All file tools operate within this root. Use paths relative to it (e.g. "src/foo.ts" or ".") ` +
71
73
  `or absolute paths under this root. Do NOT use "/" or a bare repo name — those are outside the project and will be rejected.\n\n`;
72
74
  messages.push({ role: 'user', content: cwdNote + prompt });
75
+ // In search-replace / whole-file mode the model edits via response-text blocks
76
+ // (S/R) or whole write_file calls, so the structured edit_file tool is hidden to
77
+ // force that path; apply_patch is likewise suppressed (it's a structured edit). (INT-1676)
78
+ const baseTools = editFormat === 'json'
79
+ ? TOOL_DEFINITIONS
80
+ : TOOL_DEFINITIONS.filter(t => t.function.name !== 'edit_file');
73
81
  const tools = enableTools
74
82
  ? [
75
- ...TOOL_DEFINITIONS,
83
+ ...baseTools,
84
+ ...(applyPatch && editFormat === 'json' ? [APPLY_PATCH_TOOL] : []),
76
85
  ...(webTools ? WEB_TOOL_DEFINITIONS : []),
77
86
  ...(mcpTools ?? []),
78
87
  ]
@@ -86,9 +95,20 @@ export async function runAgenticLoop(options) {
86
95
  const seenToolCalls = new Set();
87
96
  let noProgressTurns = 0;
88
97
  const NO_PROGRESS_LIMIT = 3;
89
- let nudgesUsed = 0;
98
+ // Two independent nudge budgets — they fire for different reasons and must NOT
99
+ // share a counter. read-loop nudges (mid-loop, "stop reading and edit") used to
100
+ // drain the same budget as the finish-turn no-edit guard, so a read-heavy run
101
+ // could exhaust it and then slip past the guard, ending analysis-only. (INT-1925)
102
+ let noEditNudgesUsed = 0;
103
+ let readLoopNudgesUsed = 0;
104
+ // search-replace stall guard: consecutive finish-turns where S/R blocks were
105
+ // present but ALL failed to apply. A model can re-emit the same non-matching
106
+ // block forever, burning turns at full API cost — bail after a couple. (INT-1676)
107
+ let srFailedTurns = 0;
108
+ const SR_FAILED_LIMIT = 2;
90
109
  let apiCallCount = 0;
91
110
  let totalTokens = 0;
111
+ let cachedTokens = 0;
92
112
  let finalText = '';
93
113
  for (let turn = 0; turn < maxTurns + 1; turn++) {
94
114
  // 사용자 중단 (Esc/Ctrl+C) — 현재 텍스트가 있으면 유지, 없으면 표시만.
@@ -112,6 +132,12 @@ export async function runAgenticLoop(options) {
112
132
  if (msgTokens > compactTokenThreshold) {
113
133
  onLog?.(`📦 Compacting history (${messages.length} msgs, ${msgTokens} tokens > ${compactTokenThreshold})`);
114
134
  compactPriorTurns(messages, keepRecentMessages);
135
+ // Compaction drops prior read content from the model's view, so the read
136
+ // cache's premise ("content is already earlier in the conversation") no
137
+ // longer holds — a stub re-read would leave the model without the file
138
+ // contents it needs for edit_file's old_string. Clear it so the next
139
+ // read returns full content again. (INT-1929)
140
+ readCache.store.clear();
115
141
  }
116
142
  }
117
143
  // API 호출
@@ -129,12 +155,23 @@ export async function runAgenticLoop(options) {
129
155
  break;
130
156
  }
131
157
  const msg = err instanceof Error ? err.message : String(err);
158
+ // A 429/usage-limit raised by the in-process API caller (gpt/local/
159
+ // openrouter/codex-responses) would otherwise be swallowed into finalText
160
+ // here and returned as a normal result — the scheduler never learns it was
161
+ // rate-limited. Re-throw it as a typed RateLimitError so it propagates up to
162
+ // the pipeline, which pauses instead of failing/spamming. (INT-1906)
163
+ const rl = detectRateLimit('', msg);
164
+ if (rl) {
165
+ onLog?.(`■ ${rl.message}`);
166
+ throw rl;
167
+ }
132
168
  onLog?.(`✖ API error: ${msg}`);
133
169
  finalText = `API error: ${msg}`;
134
170
  break;
135
171
  }
136
172
  if (response.usage) {
137
173
  totalTokens += response.usage.prompt_tokens + response.usage.completion_tokens;
174
+ cachedTokens += response.usage.cached_tokens ?? 0;
138
175
  }
139
176
  const choice = response.choices?.[0];
140
177
  if (!choice) {
@@ -145,16 +182,66 @@ export async function runAgenticLoop(options) {
145
182
  const assistantMsg = choice.message;
146
183
  // 도구 호출이 없으면 최종 응답
147
184
  if (!assistantMsg.tool_calls || assistantMsg.tool_calls.length === 0) {
185
+ // SEARCH/REPLACE 모드 — 도구 호출이 아니라 응답 본문의 S/R 블록으로 편집한다.
186
+ // 블록이 있으면 직접 적용하고(보호 파일은 거부) 결과를 되돌려 루프를 잇는다. (INT-1676)
187
+ if (editFormat === 'search-replace' && assistantMsg.content) {
188
+ const parsed = parseSearchReplaceBlocks(assistantMsg.content);
189
+ if (parsed.blocks.length > 0) {
190
+ const resultLines = await Promise.all(parsed.blocks.map(async (block) => {
191
+ // Containment + protection. applyEditBlock bypasses tools.ts guards, so
192
+ // run the same cwd-containment check (rejects ../ escapes) and the
193
+ // protectedFiles check here before touching disk.
194
+ let resolved;
195
+ try {
196
+ resolved = validatePath(block.filePath, cwd);
197
+ }
198
+ catch {
199
+ return `✗ ${block.filePath} — outside project root, rejected`;
200
+ }
201
+ if (protectedFiles?.some(p => resolved === p || resolved.endsWith(`/${p}`))) {
202
+ return `✗ ${block.filePath} — PROTECTED harness file, cannot modify`;
203
+ }
204
+ const r = await applyEditBlock(block, cwd);
205
+ if (r.success)
206
+ editToolCount++;
207
+ return r.success ? `✓ Applied: ${block.filePath}` : `✗ Failed: ${block.filePath} — ${r.error}`;
208
+ }));
209
+ const failed = resultLines.filter(l => l.startsWith('✗')).length;
210
+ const allFailed = failed === parsed.blocks.length;
211
+ onLog?.(`📝 SEARCH/REPLACE: applied ${parsed.blocks.length - failed}/${parsed.blocks.length} block(s)`);
212
+ // Stall guard: if every block failed for SR_FAILED_LIMIT turns running,
213
+ // the model is stuck re-emitting non-matching blocks — stop. (INT-1676)
214
+ srFailedTurns = allFailed ? srFailedTurns + 1 : 0;
215
+ if (srFailedTurns >= SR_FAILED_LIMIT) {
216
+ onLog?.(`■ SEARCH/REPLACE stalled: ${srFailedTurns} turns with no block applied — stopping`);
217
+ finalText = assistantMsg.content;
218
+ break;
219
+ }
220
+ messages.push({ role: 'assistant', content: assistantMsg.content });
221
+ messages.push({
222
+ role: 'user',
223
+ content: `Edit results:\n${resultLines.join('\n')}\n\n${failed > 0
224
+ ? 'Some edits failed — copy the SEARCH text VERBATIM from the file (exact whitespace) and retry.'
225
+ : 'All edits applied. Verify the changes and finish when done.'}`,
226
+ });
227
+ continue;
228
+ }
229
+ }
148
230
  // no-edit 종료 가드 — 수정 필수 작업인데 edit/write를 한 번도 안 하고 끝내려 하면
149
231
  // 되밀어 계속하게 한다(경량 모델의 조기 결론 패턴 차단).
150
- if (editToolCount === 0 && nudgesUsed < nudgeMaxOnNoEdit) {
151
- nudgesUsed++;
152
- onLog?.(`↩ No-edit guard: model tried to finish without editing (nudge ${nudgesUsed}/${nudgeMaxOnNoEdit})`);
232
+ if (editToolCount === 0 && noEditNudgesUsed < nudgeMaxOnNoEdit) {
233
+ noEditNudgesUsed++;
234
+ onLog?.(`↩ No-edit guard: model tried to finish without editing (nudge ${noEditNudgesUsed}/${nudgeMaxOnNoEdit})`);
235
+ const howToEdit = editFormat === 'search-replace'
236
+ ? 'Apply the fix now using SEARCH/REPLACE blocks, then verify.'
237
+ : editFormat === 'whole-file'
238
+ ? 'Apply the fix now by rewriting the file with write_file, then verify.'
239
+ : 'Apply the fix now with edit_file, then verify.';
153
240
  messages.push({ role: 'assistant', content: assistantMsg.content ?? '' });
154
241
  messages.push({
155
242
  role: 'user',
156
243
  content: 'You have not modified any files yet, but this task REQUIRES code changes. ' +
157
- 'Do not conclude with analysis only. Apply the fix now with edit_file, then verify. ' +
244
+ `Do not conclude with analysis only. ${howToEdit} ` +
158
245
  'Continue working.',
159
246
  });
160
247
  continue;
@@ -191,7 +278,7 @@ export async function runAgenticLoop(options) {
191
278
  // Count only SUCCESSFUL edits — a model whose edit_file calls all fail
192
279
  // (old_string not found, protected file) has not modified anything, and
193
280
  // counting attempts would let it slip past the no-edit guard.
194
- editToolCount += toolCalls.filter((tc, i) => (tc.function.name === 'edit_file' || tc.function.name === 'write_file') && !results[i]?.is_error).length;
281
+ editToolCount += toolCalls.filter((tc, i) => (tc.function.name === 'edit_file' || tc.function.name === 'write_file' || tc.function.name === 'apply_patch') && !results[i]?.is_error).length;
195
282
  // Progress-based stop: if every tool call this turn repeats a prior one
196
283
  // (same name+args → no new info or change), count it as a stalled turn.
197
284
  // N consecutive stalled turns → wrap up via the final-answer turn.
@@ -219,6 +306,20 @@ export async function runAgenticLoop(options) {
219
306
  onLog?.(` ✖ ${content.slice(0, 100)}`);
220
307
  }
221
308
  }
309
+ // Early read-loop nudge (ported from stranded feat/v0.7.0 8a1420f): a read-heavy
310
+ // model can burn its whole budget reading/searching and never edit — the
311
+ // finish-turn no-edit guard above never engages because it never tries to finish.
312
+ // Fire DURING the loop at a fixed early turn so the model still has budget to edit.
313
+ if (shouldNudgeReadLoop(editToolCount, readLoopNudgesUsed, nudgeMaxOnNoEdit, turn)) {
314
+ readLoopNudgesUsed++;
315
+ onLog?.(`↩ Read-loop nudge: turn ${turn}, no edits yet (nudge ${readLoopNudgesUsed}/${nudgeMaxOnNoEdit})`);
316
+ messages.push({
317
+ role: 'user',
318
+ content: 'You have spent several turns reading/searching with ZERO edits. You have enough ' +
319
+ 'context now — STOP reading and apply the fix with edit_file immediately, then verify. ' +
320
+ 'Do not read more files unless an edit actually fails.',
321
+ });
322
+ }
222
323
  }
223
324
  // Final answer turn — maxTurns/타임아웃으로 끊겼는데 모델이 최종 텍스트를 못 낸 경우,
224
325
  // 도구 없이 마지막 1회 호출로 결론을 강제한다. 이게 없으면 진단·분석형 작업이
@@ -252,6 +353,7 @@ export async function runAgenticLoop(options) {
252
353
  toolCallCount,
253
354
  apiCallCount,
254
355
  totalTokens,
356
+ cachedTokens,
255
357
  durationMs: Date.now() - startTime,
256
358
  };
257
359
  }
@@ -280,6 +382,16 @@ export function allToolCallsSeen(toolCalls, seen) {
280
382
  return false;
281
383
  return toolCalls.every((tc) => seen.has(toolCallKey(tc)));
282
384
  }
385
+ /**
386
+ * Fixed early turn after which a read-heavy worker with zero edits gets nudged to
387
+ * act. Ported from stranded feat/v0.7.0 (8a1420f): the old guard fired at
388
+ * maxTurns-2 (too late). Fire EARLY so the model still has budget to apply edits.
389
+ */
390
+ export const READ_LOOP_NUDGE_AT = 6;
391
+ /** True when a worker has read/searched past the early budget with no edits yet. */
392
+ export function shouldNudgeReadLoop(editToolCount, nudgesUsed, nudgeMax, turn) {
393
+ return editToolCount === 0 && nudgesUsed < nudgeMax && turn >= READ_LOOP_NUDGE_AT;
394
+ }
283
395
  // ============ 히스토리 압축 (VEGA compaction.py 패턴 이식) ============
284
396
  /**
285
397
  * 이전 턴(assistant+tool 쌍)을 요약 1줄로 교체.
@@ -350,8 +462,15 @@ export function compactPriorTurns(messages, keepRecent = 8) {
350
462
  // ============ 헬퍼 ============
351
463
  function summarizeToolArgs(name, args) {
352
464
  switch (name) {
353
- case 'read_file':
354
- return String(args.path ?? '');
465
+ case 'read_file': {
466
+ // Include offset/limit so a chunked walk of a large file (advancing offsets
467
+ // = legitimate investigation) is distinguishable from an identical re-read
468
+ // (a real loop). Without this the log hides the signal needed to tell them
469
+ // apart, and the turn-count nudge/maxTurns may cut a still-progressing read.
470
+ const off = args.offset != null ? ` @${args.offset}` : '';
471
+ const lim = args.limit != null ? `+${args.limit}` : '';
472
+ return `${String(args.path ?? '')}${off}${lim}`;
473
+ }
355
474
  case 'write_file':
356
475
  return String(args.path ?? '');
357
476
  case 'edit_file':
@@ -1 +1 @@
1
- {"version":3,"file":"agenticLoop.js","sourceRoot":"","sources":["../../src/adapters/agenticLoop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agenticLoop.js","sourceRoot":"","sources":["../../src/adapters/agenticLoop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface ApplyPatchResult {
2
+ changed: string[];
3
+ errors: string[];
4
+ }
5
+ interface Hunk {
6
+ oldBlock: string[];
7
+ newBlock: string[];
8
+ }
9
+ interface FileOp {
10
+ kind: 'update' | 'add' | 'delete';
11
+ filePath: string;
12
+ moveTo?: string;
13
+ hunks: Hunk[];
14
+ addLines: string[];
15
+ }
16
+ /** Parse a V4A patch envelope into file operations. Throws on malformed envelope. */
17
+ export declare function parseV4A(patchText: string): FileOp[];
18
+ /** Apply a parsed V4A patch under `cwd`. Returns touched paths + per-op errors. */
19
+ export declare function applyV4APatch(patchText: string, cwd: string, resolvePath: (p: string) => string): Promise<ApplyPatchResult>;
20
+ export {};
21
+ //# sourceMappingURL=applyPatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyPatch.d.ts","sourceRoot":"","sources":["../../src/adapters/applyPatch.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,UAAU,IAAI;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AACD,UAAU,MAAM;IACd,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAKD,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAwDpD;AAgBD,mFAAmF;AACnF,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAuE3B"}