@yjjeong/omg 0.1.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 (702) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/LICENSE +21 -0
  3. package/README.md +153 -0
  4. package/dist/cli/args.d.ts +39 -0
  5. package/dist/cli/args.d.ts.map +1 -0
  6. package/dist/cli/args.js +129 -0
  7. package/dist/cli/args.js.map +1 -0
  8. package/dist/cli/autoCommit.d.ts +20 -0
  9. package/dist/cli/autoCommit.d.ts.map +1 -0
  10. package/dist/cli/autoCommit.js +121 -0
  11. package/dist/cli/autoCommit.js.map +1 -0
  12. package/dist/cli/bgTasks.d.ts +57 -0
  13. package/dist/cli/bgTasks.d.ts.map +1 -0
  14. package/dist/cli/bgTasks.js +193 -0
  15. package/dist/cli/bgTasks.js.map +1 -0
  16. package/dist/cli/compactor.d.ts +48 -0
  17. package/dist/cli/compactor.d.ts.map +1 -0
  18. package/dist/cli/compactor.js +73 -0
  19. package/dist/cli/compactor.js.map +1 -0
  20. package/dist/cli/doctor.d.ts +77 -0
  21. package/dist/cli/doctor.d.ts.map +1 -0
  22. package/dist/cli/doctor.js +279 -0
  23. package/dist/cli/doctor.js.map +1 -0
  24. package/dist/cli/gitStatus.d.ts +7 -0
  25. package/dist/cli/gitStatus.d.ts.map +1 -0
  26. package/dist/cli/gitStatus.js +70 -0
  27. package/dist/cli/gitStatus.js.map +1 -0
  28. package/dist/cli/handoff.d.ts +36 -0
  29. package/dist/cli/handoff.d.ts.map +1 -0
  30. package/dist/cli/handoff.js +60 -0
  31. package/dist/cli/handoff.js.map +1 -0
  32. package/dist/cli/interactive/brokers.d.ts +31 -0
  33. package/dist/cli/interactive/brokers.d.ts.map +1 -0
  34. package/dist/cli/interactive/brokers.js +259 -0
  35. package/dist/cli/interactive/brokers.js.map +1 -0
  36. package/dist/cli/interactive/index.d.ts +8 -0
  37. package/dist/cli/interactive/index.d.ts.map +1 -0
  38. package/dist/cli/interactive/index.js +731 -0
  39. package/dist/cli/interactive/index.js.map +1 -0
  40. package/dist/cli/interactive/proxyQuestions.d.ts +15 -0
  41. package/dist/cli/interactive/proxyQuestions.d.ts.map +1 -0
  42. package/dist/cli/interactive/proxyQuestions.js +48 -0
  43. package/dist/cli/interactive/proxyQuestions.js.map +1 -0
  44. package/dist/cli/interactive/tabManager.d.ts +32 -0
  45. package/dist/cli/interactive/tabManager.d.ts.map +1 -0
  46. package/dist/cli/interactive/tabManager.js +244 -0
  47. package/dist/cli/interactive/tabManager.js.map +1 -0
  48. package/dist/cli/interactive/teamHint.d.ts +2 -0
  49. package/dist/cli/interactive/teamHint.d.ts.map +1 -0
  50. package/dist/cli/interactive/teamHint.js +14 -0
  51. package/dist/cli/interactive/teamHint.js.map +1 -0
  52. package/dist/cli/login.d.ts +13 -0
  53. package/dist/cli/login.d.ts.map +1 -0
  54. package/dist/cli/login.js +53 -0
  55. package/dist/cli/login.js.map +1 -0
  56. package/dist/cli/modes/demo.d.ts +12 -0
  57. package/dist/cli/modes/demo.d.ts.map +1 -0
  58. package/dist/cli/modes/demo.js +48 -0
  59. package/dist/cli/modes/demo.js.map +1 -0
  60. package/dist/cli/modes/doctor.d.ts +28 -0
  61. package/dist/cli/modes/doctor.d.ts.map +1 -0
  62. package/dist/cli/modes/doctor.js +79 -0
  63. package/dist/cli/modes/doctor.js.map +1 -0
  64. package/dist/cli/modes/login.d.ts +5 -0
  65. package/dist/cli/modes/login.d.ts.map +1 -0
  66. package/dist/cli/modes/login.js +40 -0
  67. package/dist/cli/modes/login.js.map +1 -0
  68. package/dist/cli/modes/mcpServe.d.ts +9 -0
  69. package/dist/cli/modes/mcpServe.d.ts.map +1 -0
  70. package/dist/cli/modes/mcpServe.js +112 -0
  71. package/dist/cli/modes/mcpServe.js.map +1 -0
  72. package/dist/cli/modes/orchestrator.d.ts +14 -0
  73. package/dist/cli/modes/orchestrator.d.ts.map +1 -0
  74. package/dist/cli/modes/orchestrator.js +64 -0
  75. package/dist/cli/modes/orchestrator.js.map +1 -0
  76. package/dist/cli/modes/team.d.ts +14 -0
  77. package/dist/cli/modes/team.d.ts.map +1 -0
  78. package/dist/cli/modes/team.js +87 -0
  79. package/dist/cli/modes/team.js.map +1 -0
  80. package/dist/cli/registry.d.ts +3 -0
  81. package/dist/cli/registry.d.ts.map +1 -0
  82. package/dist/cli/registry.js +15 -0
  83. package/dist/cli/registry.js.map +1 -0
  84. package/dist/cli/slash/core.d.ts +3 -0
  85. package/dist/cli/slash/core.d.ts.map +1 -0
  86. package/dist/cli/slash/core.js +509 -0
  87. package/dist/cli/slash/core.js.map +1 -0
  88. package/dist/cli/slash/index.d.ts +3 -0
  89. package/dist/cli/slash/index.d.ts.map +1 -0
  90. package/dist/cli/slash/index.js +28 -0
  91. package/dist/cli/slash/index.js.map +1 -0
  92. package/dist/cli/slash/modes.d.ts +3 -0
  93. package/dist/cli/slash/modes.d.ts.map +1 -0
  94. package/dist/cli/slash/modes.js +530 -0
  95. package/dist/cli/slash/modes.js.map +1 -0
  96. package/dist/cli/slash/session.d.ts +3 -0
  97. package/dist/cli/slash/session.d.ts.map +1 -0
  98. package/dist/cli/slash/session.js +376 -0
  99. package/dist/cli/slash/session.js.map +1 -0
  100. package/dist/cli/slash/shared.d.ts +43 -0
  101. package/dist/cli/slash/shared.d.ts.map +1 -0
  102. package/dist/cli/slash/shared.js +6 -0
  103. package/dist/cli/slash/shared.js.map +1 -0
  104. package/dist/cli/slash/tabs.d.ts +3 -0
  105. package/dist/cli/slash/tabs.d.ts.map +1 -0
  106. package/dist/cli/slash/tabs.js +497 -0
  107. package/dist/cli/slash/tabs.js.map +1 -0
  108. package/dist/cli/slash/team.d.ts +3 -0
  109. package/dist/cli/slash/team.d.ts.map +1 -0
  110. package/dist/cli/slash/team.js +85 -0
  111. package/dist/cli/slash/team.js.map +1 -0
  112. package/dist/cli/slash.d.ts +3 -0
  113. package/dist/cli/slash.d.ts.map +1 -0
  114. package/dist/cli/slash.js +8 -0
  115. package/dist/cli/slash.js.map +1 -0
  116. package/dist/cli/teamPipeline.d.ts +42 -0
  117. package/dist/cli/teamPipeline.d.ts.map +1 -0
  118. package/dist/cli/teamPipeline.js +406 -0
  119. package/dist/cli/teamPipeline.js.map +1 -0
  120. package/dist/cli/touchedFiles.d.ts +14 -0
  121. package/dist/cli/touchedFiles.d.ts.map +1 -0
  122. package/dist/cli/touchedFiles.js +66 -0
  123. package/dist/cli/touchedFiles.js.map +1 -0
  124. package/dist/cli/turn.d.ts +47 -0
  125. package/dist/cli/turn.d.ts.map +1 -0
  126. package/dist/cli/turn.js +626 -0
  127. package/dist/cli/turn.js.map +1 -0
  128. package/dist/cli/types.d.ts +47 -0
  129. package/dist/cli/types.d.ts.map +1 -0
  130. package/dist/cli/types.js +5 -0
  131. package/dist/cli/types.js.map +1 -0
  132. package/dist/cli/uiSession.d.ts +10 -0
  133. package/dist/cli/uiSession.d.ts.map +1 -0
  134. package/dist/cli/uiSession.js +66 -0
  135. package/dist/cli/uiSession.js.map +1 -0
  136. package/dist/cli.d.ts +3 -0
  137. package/dist/cli.d.ts.map +1 -0
  138. package/dist/cli.js +128 -0
  139. package/dist/cli.js.map +1 -0
  140. package/dist/core/adapter.d.ts +47 -0
  141. package/dist/core/adapter.d.ts.map +1 -0
  142. package/dist/core/adapter.js +48 -0
  143. package/dist/core/adapter.js.map +1 -0
  144. package/dist/core/adapters/anthropic.d.ts +35 -0
  145. package/dist/core/adapters/anthropic.d.ts.map +1 -0
  146. package/dist/core/adapters/anthropic.js +203 -0
  147. package/dist/core/adapters/anthropic.js.map +1 -0
  148. package/dist/core/adapters/claudeCli.d.ts +126 -0
  149. package/dist/core/adapters/claudeCli.d.ts.map +1 -0
  150. package/dist/core/adapters/claudeCli.js +584 -0
  151. package/dist/core/adapters/claudeCli.js.map +1 -0
  152. package/dist/core/adapters/cliAdapterBase.d.ts +48 -0
  153. package/dist/core/adapters/cliAdapterBase.d.ts.map +1 -0
  154. package/dist/core/adapters/cliAdapterBase.js +105 -0
  155. package/dist/core/adapters/cliAdapterBase.js.map +1 -0
  156. package/dist/core/adapters/cliStderr.d.ts +35 -0
  157. package/dist/core/adapters/cliStderr.d.ts.map +1 -0
  158. package/dist/core/adapters/cliStderr.js +87 -0
  159. package/dist/core/adapters/cliStderr.js.map +1 -0
  160. package/dist/core/adapters/codexCli.d.ts +113 -0
  161. package/dist/core/adapters/codexCli.d.ts.map +1 -0
  162. package/dist/core/adapters/codexCli.js +424 -0
  163. package/dist/core/adapters/codexCli.js.map +1 -0
  164. package/dist/core/adapters/gemini.d.ts +17 -0
  165. package/dist/core/adapters/gemini.d.ts.map +1 -0
  166. package/dist/core/adapters/gemini.js +133 -0
  167. package/dist/core/adapters/gemini.js.map +1 -0
  168. package/dist/core/adapters/geminiCli.d.ts +91 -0
  169. package/dist/core/adapters/geminiCli.d.ts.map +1 -0
  170. package/dist/core/adapters/geminiCli.js +276 -0
  171. package/dist/core/adapters/geminiCli.js.map +1 -0
  172. package/dist/core/adapters/nudges.d.ts +21 -0
  173. package/dist/core/adapters/nudges.d.ts.map +1 -0
  174. package/dist/core/adapters/nudges.js +75 -0
  175. package/dist/core/adapters/nudges.js.map +1 -0
  176. package/dist/core/adapters/openai.d.ts +17 -0
  177. package/dist/core/adapters/openai.d.ts.map +1 -0
  178. package/dist/core/adapters/openai.js +138 -0
  179. package/dist/core/adapters/openai.js.map +1 -0
  180. package/dist/core/adapters/parseFailures.d.ts +10 -0
  181. package/dist/core/adapters/parseFailures.d.ts.map +1 -0
  182. package/dist/core/adapters/parseFailures.js +35 -0
  183. package/dist/core/adapters/parseFailures.js.map +1 -0
  184. package/dist/core/adapters/utils.d.ts +11 -0
  185. package/dist/core/adapters/utils.d.ts.map +1 -0
  186. package/dist/core/adapters/utils.js +33 -0
  187. package/dist/core/adapters/utils.js.map +1 -0
  188. package/dist/core/askBroker.d.ts +11 -0
  189. package/dist/core/askBroker.d.ts.map +1 -0
  190. package/dist/core/askBroker.js +78 -0
  191. package/dist/core/askBroker.js.map +1 -0
  192. package/dist/core/atomicWrite.d.ts +5 -0
  193. package/dist/core/atomicWrite.d.ts.map +1 -0
  194. package/dist/core/atomicWrite.js +18 -0
  195. package/dist/core/atomicWrite.js.map +1 -0
  196. package/dist/core/brokers/askBroker.d.ts +11 -0
  197. package/dist/core/brokers/askBroker.d.ts.map +1 -0
  198. package/dist/core/brokers/askBroker.js +78 -0
  199. package/dist/core/brokers/askBroker.js.map +1 -0
  200. package/dist/core/brokers/permissionBroker.d.ts +7 -0
  201. package/dist/core/brokers/permissionBroker.d.ts.map +1 -0
  202. package/dist/core/brokers/permissionBroker.js +63 -0
  203. package/dist/core/brokers/permissionBroker.js.map +1 -0
  204. package/dist/core/brokers/socketBroker.d.ts +35 -0
  205. package/dist/core/brokers/socketBroker.d.ts.map +1 -0
  206. package/dist/core/brokers/socketBroker.js +74 -0
  207. package/dist/core/brokers/socketBroker.js.map +1 -0
  208. package/dist/core/clipboard.d.ts +4 -0
  209. package/dist/core/clipboard.d.ts.map +1 -0
  210. package/dist/core/clipboard.js +46 -0
  211. package/dist/core/clipboard.js.map +1 -0
  212. package/dist/core/compactor.d.ts +32 -0
  213. package/dist/core/compactor.d.ts.map +1 -0
  214. package/dist/core/compactor.js +91 -0
  215. package/dist/core/compactor.js.map +1 -0
  216. package/dist/core/consensusEngine.d.ts +21 -0
  217. package/dist/core/consensusEngine.d.ts.map +1 -0
  218. package/dist/core/consensusEngine.js +116 -0
  219. package/dist/core/consensusEngine.js.map +1 -0
  220. package/dist/core/context/contextCompressor.d.ts +10 -0
  221. package/dist/core/context/contextCompressor.d.ts.map +1 -0
  222. package/dist/core/context/contextCompressor.js +54 -0
  223. package/dist/core/context/contextCompressor.js.map +1 -0
  224. package/dist/core/context/contextWindows.d.ts +25 -0
  225. package/dist/core/context/contextWindows.d.ts.map +1 -0
  226. package/dist/core/context/contextWindows.js +101 -0
  227. package/dist/core/context/contextWindows.js.map +1 -0
  228. package/dist/core/context/summarizer.d.ts +65 -0
  229. package/dist/core/context/summarizer.d.ts.map +1 -0
  230. package/dist/core/context/summarizer.js +184 -0
  231. package/dist/core/context/summarizer.js.map +1 -0
  232. package/dist/core/context/usageCache.d.ts +19 -0
  233. package/dist/core/context/usageCache.d.ts.map +1 -0
  234. package/dist/core/context/usageCache.js +157 -0
  235. package/dist/core/context/usageCache.js.map +1 -0
  236. package/dist/core/context/usageWindow.d.ts +19 -0
  237. package/dist/core/context/usageWindow.d.ts.map +1 -0
  238. package/dist/core/context/usageWindow.js +73 -0
  239. package/dist/core/context/usageWindow.js.map +1 -0
  240. package/dist/core/contextCompressor.d.ts +10 -0
  241. package/dist/core/contextCompressor.d.ts.map +1 -0
  242. package/dist/core/contextCompressor.js +54 -0
  243. package/dist/core/contextCompressor.js.map +1 -0
  244. package/dist/core/contextWindows.d.ts +5 -0
  245. package/dist/core/contextWindows.d.ts.map +1 -0
  246. package/dist/core/contextWindows.js +60 -0
  247. package/dist/core/contextWindows.js.map +1 -0
  248. package/dist/core/continuum/digest.d.ts +35 -0
  249. package/dist/core/continuum/digest.d.ts.map +1 -0
  250. package/dist/core/continuum/digest.js +91 -0
  251. package/dist/core/continuum/digest.js.map +1 -0
  252. package/dist/core/continuum/index.d.ts +6 -0
  253. package/dist/core/continuum/index.d.ts.map +1 -0
  254. package/dist/core/continuum/index.js +7 -0
  255. package/dist/core/continuum/index.js.map +1 -0
  256. package/dist/core/continuum/inject.d.ts +9 -0
  257. package/dist/core/continuum/inject.d.ts.map +1 -0
  258. package/dist/core/continuum/inject.js +78 -0
  259. package/dist/core/continuum/inject.js.map +1 -0
  260. package/dist/core/continuum/projectId.d.ts +10 -0
  261. package/dist/core/continuum/projectId.d.ts.map +1 -0
  262. package/dist/core/continuum/projectId.js +60 -0
  263. package/dist/core/continuum/projectId.js.map +1 -0
  264. package/dist/core/continuum/store.d.ts +24 -0
  265. package/dist/core/continuum/store.d.ts.map +1 -0
  266. package/dist/core/continuum/store.js +144 -0
  267. package/dist/core/continuum/store.js.map +1 -0
  268. package/dist/core/continuum/types.d.ts +87 -0
  269. package/dist/core/continuum/types.d.ts.map +1 -0
  270. package/dist/core/continuum/types.js +9 -0
  271. package/dist/core/continuum/types.js.map +1 -0
  272. package/dist/core/dag.d.ts +21 -0
  273. package/dist/core/dag.d.ts.map +1 -0
  274. package/dist/core/dag.js +71 -0
  275. package/dist/core/dag.js.map +1 -0
  276. package/dist/core/director.d.ts +11 -0
  277. package/dist/core/director.d.ts.map +1 -0
  278. package/dist/core/director.js +37 -0
  279. package/dist/core/director.js.map +1 -0
  280. package/dist/core/hookedToolBroker.d.ts +25 -0
  281. package/dist/core/hookedToolBroker.d.ts.map +1 -0
  282. package/dist/core/hookedToolBroker.js +95 -0
  283. package/dist/core/hookedToolBroker.js.map +1 -0
  284. package/dist/core/langHint.d.ts +9 -0
  285. package/dist/core/langHint.d.ts.map +1 -0
  286. package/dist/core/langHint.js +33 -0
  287. package/dist/core/langHint.js.map +1 -0
  288. package/dist/core/mcp/mcpClient.d.ts +42 -0
  289. package/dist/core/mcp/mcpClient.d.ts.map +1 -0
  290. package/dist/core/mcp/mcpClient.js +134 -0
  291. package/dist/core/mcp/mcpClient.js.map +1 -0
  292. package/dist/core/mcp/mcpConfig.d.ts +58 -0
  293. package/dist/core/mcp/mcpConfig.d.ts.map +1 -0
  294. package/dist/core/mcp/mcpConfig.js +148 -0
  295. package/dist/core/mcp/mcpConfig.js.map +1 -0
  296. package/dist/core/mcp/mcpManager.d.ts +31 -0
  297. package/dist/core/mcp/mcpManager.d.ts.map +1 -0
  298. package/dist/core/mcp/mcpManager.js +83 -0
  299. package/dist/core/mcp/mcpManager.js.map +1 -0
  300. package/dist/core/mcpClient.d.ts +42 -0
  301. package/dist/core/mcpClient.d.ts.map +1 -0
  302. package/dist/core/mcpClient.js +134 -0
  303. package/dist/core/mcpClient.js.map +1 -0
  304. package/dist/core/mcpConfig.d.ts +24 -0
  305. package/dist/core/mcpConfig.d.ts.map +1 -0
  306. package/dist/core/mcpConfig.js +74 -0
  307. package/dist/core/mcpConfig.js.map +1 -0
  308. package/dist/core/mcpManager.d.ts +31 -0
  309. package/dist/core/mcpManager.d.ts.map +1 -0
  310. package/dist/core/mcpManager.js +83 -0
  311. package/dist/core/mcpManager.js.map +1 -0
  312. package/dist/core/memory.d.ts +22 -0
  313. package/dist/core/memory.d.ts.map +1 -0
  314. package/dist/core/memory.js +102 -0
  315. package/dist/core/memory.js.map +1 -0
  316. package/dist/core/omgToolManifest.d.ts +34 -0
  317. package/dist/core/omgToolManifest.d.ts.map +1 -0
  318. package/dist/core/omgToolManifest.js +59 -0
  319. package/dist/core/omgToolManifest.js.map +1 -0
  320. package/dist/core/orchestration/consensusEngine.d.ts +21 -0
  321. package/dist/core/orchestration/consensusEngine.d.ts.map +1 -0
  322. package/dist/core/orchestration/consensusEngine.js +116 -0
  323. package/dist/core/orchestration/consensusEngine.js.map +1 -0
  324. package/dist/core/orchestration/dag.d.ts +21 -0
  325. package/dist/core/orchestration/dag.d.ts.map +1 -0
  326. package/dist/core/orchestration/dag.js +71 -0
  327. package/dist/core/orchestration/dag.js.map +1 -0
  328. package/dist/core/orchestration/director.d.ts +11 -0
  329. package/dist/core/orchestration/director.d.ts.map +1 -0
  330. package/dist/core/orchestration/director.js +37 -0
  331. package/dist/core/orchestration/director.js.map +1 -0
  332. package/dist/core/orchestration/orchestrator.d.ts +32 -0
  333. package/dist/core/orchestration/orchestrator.d.ts.map +1 -0
  334. package/dist/core/orchestration/orchestrator.js +214 -0
  335. package/dist/core/orchestration/orchestrator.js.map +1 -0
  336. package/dist/core/orchestration/roleRouter.d.ts +28 -0
  337. package/dist/core/orchestration/roleRouter.d.ts.map +1 -0
  338. package/dist/core/orchestration/roleRouter.js +64 -0
  339. package/dist/core/orchestration/roleRouter.js.map +1 -0
  340. package/dist/core/orchestration/teamRunner.d.ts +69 -0
  341. package/dist/core/orchestration/teamRunner.d.ts.map +1 -0
  342. package/dist/core/orchestration/teamRunner.js +477 -0
  343. package/dist/core/orchestration/teamRunner.js.map +1 -0
  344. package/dist/core/orchestration/types.d.ts +115 -0
  345. package/dist/core/orchestration/types.d.ts.map +1 -0
  346. package/dist/core/orchestration/types.js +71 -0
  347. package/dist/core/orchestration/types.js.map +1 -0
  348. package/dist/core/orchestrator.d.ts +32 -0
  349. package/dist/core/orchestrator.d.ts.map +1 -0
  350. package/dist/core/orchestrator.js +214 -0
  351. package/dist/core/orchestrator.js.map +1 -0
  352. package/dist/core/permissionBroker.d.ts +7 -0
  353. package/dist/core/permissionBroker.d.ts.map +1 -0
  354. package/dist/core/permissionBroker.js +63 -0
  355. package/dist/core/permissionBroker.js.map +1 -0
  356. package/dist/core/planConfig.d.ts +15 -0
  357. package/dist/core/planConfig.d.ts.map +1 -0
  358. package/dist/core/planConfig.js +98 -0
  359. package/dist/core/planConfig.js.map +1 -0
  360. package/dist/core/presetPersistence.d.ts +4 -0
  361. package/dist/core/presetPersistence.d.ts.map +1 -0
  362. package/dist/core/presetPersistence.js +64 -0
  363. package/dist/core/presetPersistence.js.map +1 -0
  364. package/dist/core/roleRouter.d.ts +26 -0
  365. package/dist/core/roleRouter.d.ts.map +1 -0
  366. package/dist/core/roleRouter.js +62 -0
  367. package/dist/core/roleRouter.js.map +1 -0
  368. package/dist/core/sessionList.d.ts +26 -0
  369. package/dist/core/sessionList.d.ts.map +1 -0
  370. package/dist/core/sessionList.js +278 -0
  371. package/dist/core/sessionList.js.map +1 -0
  372. package/dist/core/slugify.d.ts +2 -0
  373. package/dist/core/slugify.d.ts.map +1 -0
  374. package/dist/core/slugify.js +17 -0
  375. package/dist/core/slugify.js.map +1 -0
  376. package/dist/core/socketBroker.d.ts +19 -0
  377. package/dist/core/socketBroker.d.ts.map +1 -0
  378. package/dist/core/socketBroker.js +48 -0
  379. package/dist/core/socketBroker.js.map +1 -0
  380. package/dist/core/state/agentsMdScaffold.d.ts +15 -0
  381. package/dist/core/state/agentsMdScaffold.d.ts.map +1 -0
  382. package/dist/core/state/agentsMdScaffold.js +118 -0
  383. package/dist/core/state/agentsMdScaffold.js.map +1 -0
  384. package/dist/core/state/atomicWrite.d.ts +5 -0
  385. package/dist/core/state/atomicWrite.d.ts.map +1 -0
  386. package/dist/core/state/atomicWrite.js +18 -0
  387. package/dist/core/state/atomicWrite.js.map +1 -0
  388. package/dist/core/state/handoff.d.ts +20 -0
  389. package/dist/core/state/handoff.d.ts.map +1 -0
  390. package/dist/core/state/handoff.js +71 -0
  391. package/dist/core/state/handoff.js.map +1 -0
  392. package/dist/core/state/mcpCatalog.d.ts +11 -0
  393. package/dist/core/state/mcpCatalog.d.ts.map +1 -0
  394. package/dist/core/state/mcpCatalog.js +51 -0
  395. package/dist/core/state/mcpCatalog.js.map +1 -0
  396. package/dist/core/state/mcpRecommendations.d.ts +7 -0
  397. package/dist/core/state/mcpRecommendations.d.ts.map +1 -0
  398. package/dist/core/state/mcpRecommendations.js +57 -0
  399. package/dist/core/state/mcpRecommendations.js.map +1 -0
  400. package/dist/core/state/memory.d.ts +22 -0
  401. package/dist/core/state/memory.d.ts.map +1 -0
  402. package/dist/core/state/memory.js +102 -0
  403. package/dist/core/state/memory.js.map +1 -0
  404. package/dist/core/state/planConfig.d.ts +15 -0
  405. package/dist/core/state/planConfig.d.ts.map +1 -0
  406. package/dist/core/state/planConfig.js +98 -0
  407. package/dist/core/state/planConfig.js.map +1 -0
  408. package/dist/core/state/presetPersistence.d.ts +4 -0
  409. package/dist/core/state/presetPersistence.d.ts.map +1 -0
  410. package/dist/core/state/presetPersistence.js +67 -0
  411. package/dist/core/state/presetPersistence.js.map +1 -0
  412. package/dist/core/state/sessionList.d.ts +26 -0
  413. package/dist/core/state/sessionList.d.ts.map +1 -0
  414. package/dist/core/state/sessionList.js +278 -0
  415. package/dist/core/state/sessionList.js.map +1 -0
  416. package/dist/core/state/stackDetect.d.ts +8 -0
  417. package/dist/core/state/stackDetect.d.ts.map +1 -0
  418. package/dist/core/state/stackDetect.js +40 -0
  419. package/dist/core/state/stackDetect.js.map +1 -0
  420. package/dist/core/state/tabPersistence.d.ts +29 -0
  421. package/dist/core/state/tabPersistence.d.ts.map +1 -0
  422. package/dist/core/state/tabPersistence.js +65 -0
  423. package/dist/core/state/tabPersistence.js.map +1 -0
  424. package/dist/core/tabPersistence.d.ts +29 -0
  425. package/dist/core/tabPersistence.d.ts.map +1 -0
  426. package/dist/core/tabPersistence.js +65 -0
  427. package/dist/core/tabPersistence.js.map +1 -0
  428. package/dist/core/teamRunner.d.ts +42 -0
  429. package/dist/core/teamRunner.d.ts.map +1 -0
  430. package/dist/core/teamRunner.js +248 -0
  431. package/dist/core/teamRunner.js.map +1 -0
  432. package/dist/core/toolGate.d.ts +23 -0
  433. package/dist/core/toolGate.d.ts.map +1 -0
  434. package/dist/core/toolGate.js +51 -0
  435. package/dist/core/toolGate.js.map +1 -0
  436. package/dist/core/toolInterceptor.d.ts +7 -0
  437. package/dist/core/toolInterceptor.d.ts.map +1 -0
  438. package/dist/core/toolInterceptor.js +108 -0
  439. package/dist/core/toolInterceptor.js.map +1 -0
  440. package/dist/core/tools/hookedToolBroker.d.ts +25 -0
  441. package/dist/core/tools/hookedToolBroker.d.ts.map +1 -0
  442. package/dist/core/tools/hookedToolBroker.js +95 -0
  443. package/dist/core/tools/hookedToolBroker.js.map +1 -0
  444. package/dist/core/tools/omgToolManifest.d.ts +42 -0
  445. package/dist/core/tools/omgToolManifest.d.ts.map +1 -0
  446. package/dist/core/tools/omgToolManifest.js +66 -0
  447. package/dist/core/tools/omgToolManifest.js.map +1 -0
  448. package/dist/core/tools/toolGate.d.ts +23 -0
  449. package/dist/core/tools/toolGate.d.ts.map +1 -0
  450. package/dist/core/tools/toolGate.js +51 -0
  451. package/dist/core/tools/toolGate.js.map +1 -0
  452. package/dist/core/tools/toolInterceptor.d.ts +7 -0
  453. package/dist/core/tools/toolInterceptor.d.ts.map +1 -0
  454. package/dist/core/tools/toolInterceptor.js +108 -0
  455. package/dist/core/tools/toolInterceptor.js.map +1 -0
  456. package/dist/core/tools/tools.d.ts +34 -0
  457. package/dist/core/tools/tools.d.ts.map +1 -0
  458. package/dist/core/tools/tools.js +328 -0
  459. package/dist/core/tools/tools.js.map +1 -0
  460. package/dist/core/tools.d.ts +34 -0
  461. package/dist/core/tools.d.ts.map +1 -0
  462. package/dist/core/tools.js +300 -0
  463. package/dist/core/tools.js.map +1 -0
  464. package/dist/core/types.d.ts +107 -0
  465. package/dist/core/types.d.ts.map +1 -0
  466. package/dist/core/types.js +55 -0
  467. package/dist/core/types.js.map +1 -0
  468. package/dist/core/usageCache.d.ts +19 -0
  469. package/dist/core/usageCache.d.ts.map +1 -0
  470. package/dist/core/usageCache.js +157 -0
  471. package/dist/core/usageCache.js.map +1 -0
  472. package/dist/core/usageWindow.d.ts +19 -0
  473. package/dist/core/usageWindow.d.ts.map +1 -0
  474. package/dist/core/usageWindow.js +73 -0
  475. package/dist/core/usageWindow.js.map +1 -0
  476. package/dist/core/util/bgProtocol.d.ts +5 -0
  477. package/dist/core/util/bgProtocol.d.ts.map +1 -0
  478. package/dist/core/util/bgProtocol.js +20 -0
  479. package/dist/core/util/bgProtocol.js.map +1 -0
  480. package/dist/core/util/clipboard.d.ts +4 -0
  481. package/dist/core/util/clipboard.d.ts.map +1 -0
  482. package/dist/core/util/clipboard.js +46 -0
  483. package/dist/core/util/clipboard.js.map +1 -0
  484. package/dist/core/util/clipboardImage.d.ts +3 -0
  485. package/dist/core/util/clipboardImage.d.ts.map +1 -0
  486. package/dist/core/util/clipboardImage.js +58 -0
  487. package/dist/core/util/clipboardImage.js.map +1 -0
  488. package/dist/core/util/langHint.d.ts +9 -0
  489. package/dist/core/util/langHint.d.ts.map +1 -0
  490. package/dist/core/util/langHint.js +33 -0
  491. package/dist/core/util/langHint.js.map +1 -0
  492. package/dist/core/util/slugify.d.ts +2 -0
  493. package/dist/core/util/slugify.d.ts.map +1 -0
  494. package/dist/core/util/slugify.js +28 -0
  495. package/dist/core/util/slugify.js.map +1 -0
  496. package/dist/hooks/hookedToolProxy.mjs +118 -0
  497. package/dist/index.d.ts +2 -0
  498. package/dist/index.d.ts.map +1 -0
  499. package/dist/index.js +8 -0
  500. package/dist/index.js.map +1 -0
  501. package/dist/ipc/dispatcher.d.ts +21 -0
  502. package/dist/ipc/dispatcher.d.ts.map +1 -0
  503. package/dist/ipc/dispatcher.js +160 -0
  504. package/dist/ipc/dispatcher.js.map +1 -0
  505. package/dist/ipc/events.d.ts +33 -0
  506. package/dist/ipc/events.d.ts.map +1 -0
  507. package/dist/ipc/events.js +42 -0
  508. package/dist/ipc/events.js.map +1 -0
  509. package/dist/ipc/rpc.d.ts +31 -0
  510. package/dist/ipc/rpc.d.ts.map +1 -0
  511. package/dist/ipc/rpc.js +110 -0
  512. package/dist/ipc/rpc.js.map +1 -0
  513. package/dist/ipc/stdio.d.ts +11 -0
  514. package/dist/ipc/stdio.d.ts.map +1 -0
  515. package/dist/ipc/stdio.js +52 -0
  516. package/dist/ipc/stdio.js.map +1 -0
  517. package/dist/mcp/askClient.d.ts +9 -0
  518. package/dist/mcp/askClient.d.ts.map +1 -0
  519. package/dist/mcp/askClient.js +70 -0
  520. package/dist/mcp/askClient.js.map +1 -0
  521. package/dist/mcp/constants.d.ts +6 -0
  522. package/dist/mcp/constants.d.ts.map +1 -0
  523. package/dist/mcp/constants.js +8 -0
  524. package/dist/mcp/constants.js.map +1 -0
  525. package/dist/mcp/permissionClient.d.ts +5 -0
  526. package/dist/mcp/permissionClient.d.ts.map +1 -0
  527. package/dist/mcp/permissionClient.js +71 -0
  528. package/dist/mcp/permissionClient.js.map +1 -0
  529. package/dist/mcp/schemas.d.ts +9 -0
  530. package/dist/mcp/schemas.d.ts.map +1 -0
  531. package/dist/mcp/schemas.js +121 -0
  532. package/dist/mcp/schemas.js.map +1 -0
  533. package/dist/mcp/server.d.ts +41 -0
  534. package/dist/mcp/server.d.ts.map +1 -0
  535. package/dist/mcp/server.js +204 -0
  536. package/dist/mcp/server.js.map +1 -0
  537. package/dist/policy/loader.d.ts +27 -0
  538. package/dist/policy/loader.d.ts.map +1 -0
  539. package/dist/policy/loader.js +89 -0
  540. package/dist/policy/loader.js.map +1 -0
  541. package/dist/policy/team-claude-only.yaml +46 -0
  542. package/dist/policy/team-codex-only.yaml +46 -0
  543. package/dist/policy/team-codex.yaml +54 -0
  544. package/dist/policy/team.yaml +104 -0
  545. package/dist/toolhook/hookedToolProxy.mjs +118 -0
  546. package/dist/ui/components/App.d.ts +14 -0
  547. package/dist/ui/components/App.d.ts.map +1 -0
  548. package/dist/ui/components/App.js +803 -0
  549. package/dist/ui/components/App.js.map +1 -0
  550. package/dist/ui/components/AskPicker.d.ts +8 -0
  551. package/dist/ui/components/AskPicker.d.ts.map +1 -0
  552. package/dist/ui/components/AskPicker.js +202 -0
  553. package/dist/ui/components/AskPicker.js.map +1 -0
  554. package/dist/ui/components/CommandInput.d.ts +63 -0
  555. package/dist/ui/components/CommandInput.d.ts.map +1 -0
  556. package/dist/ui/components/CommandInput.js +994 -0
  557. package/dist/ui/components/CommandInput.js.map +1 -0
  558. package/dist/ui/components/DiffView.d.ts +19 -0
  559. package/dist/ui/components/DiffView.d.ts.map +1 -0
  560. package/dist/ui/components/DiffView.js +93 -0
  561. package/dist/ui/components/DiffView.js.map +1 -0
  562. package/dist/ui/components/Dock.d.ts +49 -0
  563. package/dist/ui/components/Dock.d.ts.map +1 -0
  564. package/dist/ui/components/Dock.js +52 -0
  565. package/dist/ui/components/Dock.js.map +1 -0
  566. package/dist/ui/components/EventLog.d.ts +42 -0
  567. package/dist/ui/components/EventLog.d.ts.map +1 -0
  568. package/dist/ui/components/EventLog.js +450 -0
  569. package/dist/ui/components/EventLog.js.map +1 -0
  570. package/dist/ui/components/FileSuggest.d.ts +8 -0
  571. package/dist/ui/components/FileSuggest.d.ts.map +1 -0
  572. package/dist/ui/components/FileSuggest.js +19 -0
  573. package/dist/ui/components/FileSuggest.js.map +1 -0
  574. package/dist/ui/components/HRule.d.ts +27 -0
  575. package/dist/ui/components/HRule.d.ts.map +1 -0
  576. package/dist/ui/components/HRule.js +75 -0
  577. package/dist/ui/components/HRule.js.map +1 -0
  578. package/dist/ui/components/HintBar.d.ts +2 -0
  579. package/dist/ui/components/HintBar.d.ts.map +1 -0
  580. package/dist/ui/components/HintBar.js +19 -0
  581. package/dist/ui/components/HintBar.js.map +1 -0
  582. package/dist/ui/components/MarkdownText.d.ts +13 -0
  583. package/dist/ui/components/MarkdownText.d.ts.map +1 -0
  584. package/dist/ui/components/MarkdownText.js +255 -0
  585. package/dist/ui/components/MarkdownText.js.map +1 -0
  586. package/dist/ui/components/PermissionPrompt.d.ts +8 -0
  587. package/dist/ui/components/PermissionPrompt.d.ts.map +1 -0
  588. package/dist/ui/components/PermissionPrompt.js +37 -0
  589. package/dist/ui/components/PermissionPrompt.js.map +1 -0
  590. package/dist/ui/components/SessionPicker.d.ts +16 -0
  591. package/dist/ui/components/SessionPicker.d.ts.map +1 -0
  592. package/dist/ui/components/SessionPicker.js +116 -0
  593. package/dist/ui/components/SessionPicker.js.map +1 -0
  594. package/dist/ui/components/SlashPalette.d.ts +8 -0
  595. package/dist/ui/components/SlashPalette.d.ts.map +1 -0
  596. package/dist/ui/components/SlashPalette.js +41 -0
  597. package/dist/ui/components/SlashPalette.js.map +1 -0
  598. package/dist/ui/components/Spinner.d.ts +37 -0
  599. package/dist/ui/components/Spinner.d.ts.map +1 -0
  600. package/dist/ui/components/Spinner.js +139 -0
  601. package/dist/ui/components/Spinner.js.map +1 -0
  602. package/dist/ui/components/StatusBar.d.ts +92 -0
  603. package/dist/ui/components/StatusBar.d.ts.map +1 -0
  604. package/dist/ui/components/StatusBar.js +268 -0
  605. package/dist/ui/components/StatusBar.js.map +1 -0
  606. package/dist/ui/components/TabChip.d.ts +11 -0
  607. package/dist/ui/components/TabChip.d.ts.map +1 -0
  608. package/dist/ui/components/TabChip.js +23 -0
  609. package/dist/ui/components/TabChip.js.map +1 -0
  610. package/dist/ui/components/TeamIndicator.d.ts +6 -0
  611. package/dist/ui/components/TeamIndicator.d.ts.map +1 -0
  612. package/dist/ui/components/TeamIndicator.js +17 -0
  613. package/dist/ui/components/TeamIndicator.js.map +1 -0
  614. package/dist/ui/components/TeamStatusPanel.d.ts +14 -0
  615. package/dist/ui/components/TeamStatusPanel.d.ts.map +1 -0
  616. package/dist/ui/components/TeamStatusPanel.js +65 -0
  617. package/dist/ui/components/TeamStatusPanel.js.map +1 -0
  618. package/dist/ui/components/ThinkingBlock.d.ts +10 -0
  619. package/dist/ui/components/ThinkingBlock.d.ts.map +1 -0
  620. package/dist/ui/components/ThinkingBlock.js +21 -0
  621. package/dist/ui/components/ThinkingBlock.js.map +1 -0
  622. package/dist/ui/components/TodoIndicator.d.ts +11 -0
  623. package/dist/ui/components/TodoIndicator.d.ts.map +1 -0
  624. package/dist/ui/components/TodoIndicator.js +37 -0
  625. package/dist/ui/components/TodoIndicator.js.map +1 -0
  626. package/dist/ui/components/ToolCallCard.d.ts +16 -0
  627. package/dist/ui/components/ToolCallCard.d.ts.map +1 -0
  628. package/dist/ui/components/ToolCallCard.js +195 -0
  629. package/dist/ui/components/ToolCallCard.js.map +1 -0
  630. package/dist/ui/components/Welcome.d.ts +8 -0
  631. package/dist/ui/components/Welcome.d.ts.map +1 -0
  632. package/dist/ui/components/Welcome.js +53 -0
  633. package/dist/ui/components/Welcome.js.map +1 -0
  634. package/dist/ui/cursorState.d.ts +29 -0
  635. package/dist/ui/cursorState.d.ts.map +1 -0
  636. package/dist/ui/cursorState.js +49 -0
  637. package/dist/ui/cursorState.js.map +1 -0
  638. package/dist/ui/diff.d.ts +34 -0
  639. package/dist/ui/diff.d.ts.map +1 -0
  640. package/dist/ui/diff.js +184 -0
  641. package/dist/ui/diff.js.map +1 -0
  642. package/dist/ui/diffLang.d.ts +2 -0
  643. package/dist/ui/diffLang.d.ts.map +1 -0
  644. package/dist/ui/diffLang.js +36 -0
  645. package/dist/ui/diffLang.js.map +1 -0
  646. package/dist/ui/emoji.d.ts +4 -0
  647. package/dist/ui/emoji.d.ts.map +1 -0
  648. package/dist/ui/emoji.js +73 -0
  649. package/dist/ui/emoji.js.map +1 -0
  650. package/dist/ui/fileMentions.d.ts +41 -0
  651. package/dist/ui/fileMentions.d.ts.map +1 -0
  652. package/dist/ui/fileMentions.js +135 -0
  653. package/dist/ui/fileMentions.js.map +1 -0
  654. package/dist/ui/hooks/useLineEditor.d.ts +44 -0
  655. package/dist/ui/hooks/useLineEditor.d.ts.map +1 -0
  656. package/dist/ui/hooks/useLineEditor.js +142 -0
  657. package/dist/ui/hooks/useLineEditor.js.map +1 -0
  658. package/dist/ui/inputHistory.d.ts +8 -0
  659. package/dist/ui/inputHistory.d.ts.map +1 -0
  660. package/dist/ui/inputHistory.js +56 -0
  661. package/dist/ui/inputHistory.js.map +1 -0
  662. package/dist/ui/jsonrpc.d.ts +17 -0
  663. package/dist/ui/jsonrpc.d.ts.map +1 -0
  664. package/dist/ui/jsonrpc.js +41 -0
  665. package/dist/ui/jsonrpc.js.map +1 -0
  666. package/dist/ui/launcher.d.ts +20 -0
  667. package/dist/ui/launcher.d.ts.map +1 -0
  668. package/dist/ui/launcher.js +185 -0
  669. package/dist/ui/launcher.js.map +1 -0
  670. package/dist/ui/markdown.d.ts +104 -0
  671. package/dist/ui/markdown.d.ts.map +1 -0
  672. package/dist/ui/markdown.js +449 -0
  673. package/dist/ui/markdown.js.map +1 -0
  674. package/dist/ui/mouse.d.ts +22 -0
  675. package/dist/ui/mouse.d.ts.map +1 -0
  676. package/dist/ui/mouse.js +31 -0
  677. package/dist/ui/mouse.js.map +1 -0
  678. package/dist/ui/outbound.d.ts +20 -0
  679. package/dist/ui/outbound.d.ts.map +1 -0
  680. package/dist/ui/outbound.js +49 -0
  681. package/dist/ui/outbound.js.map +1 -0
  682. package/dist/ui/screenMode.d.ts +25 -0
  683. package/dist/ui/screenMode.d.ts.map +1 -0
  684. package/dist/ui/screenMode.js +43 -0
  685. package/dist/ui/screenMode.js.map +1 -0
  686. package/dist/ui/slashCatalog.d.ts +18 -0
  687. package/dist/ui/slashCatalog.d.ts.map +1 -0
  688. package/dist/ui/slashCatalog.js +243 -0
  689. package/dist/ui/slashCatalog.js.map +1 -0
  690. package/dist/ui/syntax.d.ts +11 -0
  691. package/dist/ui/syntax.d.ts.map +1 -0
  692. package/dist/ui/syntax.js +78 -0
  693. package/dist/ui/syntax.js.map +1 -0
  694. package/dist/ui/theme.d.ts +165 -0
  695. package/dist/ui/theme.d.ts.map +1 -0
  696. package/dist/ui/theme.js +394 -0
  697. package/dist/ui/theme.js.map +1 -0
  698. package/dist/ui/types.d.ts +203 -0
  699. package/dist/ui/types.d.ts.map +1 -0
  700. package/dist/ui/types.js +53 -0
  701. package/dist/ui/types.js.map +1 -0
  702. package/package.json +104 -0
@@ -0,0 +1,42 @@
1
+ import type { SlashContext } from "./slash.js";
2
+ import type { Tab } from "./types.js";
3
+ export interface ParsedTeamArgs {
4
+ prompt: string;
5
+ withPlanner: boolean;
6
+ forceNew: boolean;
7
+ }
8
+ /** Strip the leading `--no-plan` / `--plan` / `--new` flags (in any
9
+ * order) from a /team argument string. Multi-pass so combinations like
10
+ * `/team --new --no-plan x` and `/team --no-plan --new x` both work.
11
+ * Phase 302: the planner is on by default; `--no-plan` opts out. */
12
+ export declare function parseTeamArgs(args: string): ParsedTeamArgs;
13
+ export interface SelectedTeamTab {
14
+ teamTab: Tab;
15
+ teamTabName: string;
16
+ /** True when this call created a fresh tab. False when an existing
17
+ * idle team-* tab was reused (Phase 198). */
18
+ isNew: boolean;
19
+ }
20
+ /** Phase 198: reuse the most-recent idle team-* tab when one exists.
21
+ * Falls back to creating a fresh `team-N` when none are idle (or
22
+ * `forceNew` is set). Pushes an error notif + returns null only on
23
+ * makeTab failure — the caller should `return true` to swallow. */
24
+ export declare function selectOrCreateTeamTab(ctx: SlashContext, forceNew: boolean): Promise<SelectedTeamTab | null>;
25
+ export interface RoleStateRow {
26
+ role: string;
27
+ status: string;
28
+ elapsedMs?: number;
29
+ provider?: string;
30
+ model?: string;
31
+ }
32
+ /** Phase 202b: the heavy /team async block. Builds per-role adapters,
33
+ * wires teamWriter that tees events into the UI + tracks per-role
34
+ * usage + parses banner lines into a live `teamPhase` status, runs
35
+ * the TeamRunner, and seeds the tab's follow-up chat history with the
36
+ * team result so the tab's own adapter can answer follow-ups in
37
+ * context.
38
+ *
39
+ * Designed to be void-called (fire-and-forget). All error paths
40
+ * surface via ctx.pushNotif into `teamTab`. */
41
+ export declare function runTeamPipeline(prompt: string, withPlanner: boolean, teamTab: Tab, ctx: SlashContext): Promise<void>;
42
+ //# sourceMappingURL=teamPipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teamPipeline.d.ts","sourceRoot":"","sources":["../../src/cli/teamPipeline.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAwBtC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;qEAGqE;AACrE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAwB1D;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,GAAG,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB;kDAC8C;IAC9C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;qEAGqE;AACrE,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAsCjC;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;gDAQgD;AAChD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,GAAG,EACZ,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,CAoUf"}
@@ -0,0 +1,406 @@
1
+ // Phase 202a/b: team-pipeline subsystem extracted from dispatchTeam.
2
+ //
3
+ // 202a: parseTeamArgs + selectOrCreateTeamTab (pure helpers).
4
+ // 202b: runTeamPipeline — the void-async block that builds per-role
5
+ // adapters, runs the TeamRunner, ties usage tracking, and seeds
6
+ // the tab's follow-up history. ~200 LOC moved out of slash.ts.
7
+ import { makeAdapter, makeTeamStubAdapter } from "../core/orchestration/orchestrator.js";
8
+ import { TeamRunner } from "../core/orchestration/teamRunner.js";
9
+ import { RoleRouter } from "../core/orchestration/roleRouter.js";
10
+ import { languageDirective } from "../core/util/langHint.js";
11
+ import { DirectorEscalateStrategy } from "../core/orchestration/consensusEngine.js";
12
+ import { contextWindowForProvider } from "../core/context/contextWindows.js";
13
+ // Phase 107: verdict glyphs for the ◆ team final line. Inlined to
14
+ // avoid coupling the CLI backend to the UI theme module.
15
+ const VERDICT_ICON = {
16
+ approve: "✓",
17
+ reject: "✗",
18
+ request_rework: "↻",
19
+ escalate: "⚠",
20
+ };
21
+ // Phase 144: per-reviewer review lens. Roles absent here (general
22
+ // "reviewer") just use the default review prompt.
23
+ const REVIEW_FOCUS = {
24
+ security: "You are the SECURITY reviewer. Focus on security, secrets handling, " +
25
+ "injection/escape risks, auth, and unsafe operations. Judge mainly on " +
26
+ "those; defer style/UX to other reviewers.",
27
+ design: "You are the DESIGN/UX reviewer. Focus on user-facing behavior, " +
28
+ "accessibility, naming, API/component ergonomics, and consistency. " +
29
+ "Defer deep security/perf to other reviewers.",
30
+ };
31
+ /** Strip the leading `--no-plan` / `--plan` / `--new` flags (in any
32
+ * order) from a /team argument string. Multi-pass so combinations like
33
+ * `/team --new --no-plan x` and `/team --no-plan --new x` both work.
34
+ * Phase 302: the planner is on by default; `--no-plan` opts out. */
35
+ export function parseTeamArgs(args) {
36
+ let raw = args.trim();
37
+ // Phase 302: the planner runs by DEFAULT now — every /team gets an
38
+ // opus planning pass before the implementer (the plan is the backbone).
39
+ // `--no-plan` opts out for a fast straight implementer→review loop;
40
+ // `--plan` is kept as an explicit (now redundant) no-op for back-compat.
41
+ let withPlanner = true;
42
+ let forceNew = false;
43
+ // Up to 3 leading flags, any order: --no-plan / --plan / --new.
44
+ for (let i = 0; i < 3; i++) {
45
+ if (raw.startsWith("--no-plan ") || raw === "--no-plan") {
46
+ withPlanner = false;
47
+ raw = raw.slice("--no-plan".length).trim();
48
+ }
49
+ else if (raw.startsWith("--plan ") || raw === "--plan") {
50
+ withPlanner = true;
51
+ raw = raw.slice("--plan".length).trim();
52
+ }
53
+ else if (raw.startsWith("--new ") || raw === "--new") {
54
+ forceNew = true;
55
+ raw = raw.slice("--new".length).trim();
56
+ }
57
+ else {
58
+ break;
59
+ }
60
+ }
61
+ return { prompt: raw, withPlanner, forceNew };
62
+ }
63
+ /** Phase 198: reuse the most-recent idle team-* tab when one exists.
64
+ * Falls back to creating a fresh `team-N` when none are idle (or
65
+ * `forceNew` is set). Pushes an error notif + returns null only on
66
+ * makeTab failure — the caller should `return true` to swallow. */
67
+ export async function selectOrCreateTeamTab(ctx, forceNew) {
68
+ if (!forceNew) {
69
+ const reusable = [...ctx.tabs.entries()]
70
+ .filter(([n, t]) => n.startsWith("team-") && !t.inFlight)
71
+ .sort(([a], [b]) => {
72
+ const na = parseInt(a.slice("team-".length), 10);
73
+ const nb = parseInt(b.slice("team-".length), 10);
74
+ return (isFinite(nb) ? nb : 0) - (isFinite(na) ? na : 0);
75
+ })[0];
76
+ if (reusable) {
77
+ return { teamTab: reusable[1], teamTabName: reusable[0], isNew: false };
78
+ }
79
+ }
80
+ const state = ctx.state;
81
+ let teamTabName = `team-${state.nextTabSerial++}`;
82
+ while (ctx.tabs.has(teamTabName)) {
83
+ teamTabName = `team-${state.nextTabSerial++}`;
84
+ }
85
+ const current = ctx.currentTab();
86
+ try {
87
+ const teamTab = await ctx.makeTab(teamTabName, current.provider, current.model, { autoNamed: true, cwd: current.cwd });
88
+ ctx.tabs.set(teamTabName, teamTab);
89
+ return { teamTab, teamTabName, isNew: true };
90
+ }
91
+ catch (e) {
92
+ ctx.pushNotif({
93
+ jsonrpc: "2.0",
94
+ method: "event/text",
95
+ params: {
96
+ text: `[team] failed to build tab: ${e.message}\n`,
97
+ },
98
+ });
99
+ return null;
100
+ }
101
+ }
102
+ /** Phase 202b: the heavy /team async block. Builds per-role adapters,
103
+ * wires teamWriter that tees events into the UI + tracks per-role
104
+ * usage + parses banner lines into a live `teamPhase` status, runs
105
+ * the TeamRunner, and seeds the tab's follow-up chat history with the
106
+ * team result so the tab's own adapter can answer follow-ups in
107
+ * context.
108
+ *
109
+ * Designed to be void-called (fire-and-forget). All error paths
110
+ * surface via ctx.pushNotif into `teamTab`. */
111
+ export async function runTeamPipeline(prompt, withPlanner, teamTab, ctx) {
112
+ const tab = teamTab;
113
+ // Phase 149: declared up here so the catch can tell a cancel apart
114
+ // from a real failure.
115
+ const teamAbort = new AbortController();
116
+ // Phase 287 (A): hoisted above the try so the cancel/error path can
117
+ // seed the partial team output into the tab history (mirroring the
118
+ // success path). Without this a cancelled team left the tab's adapter
119
+ // with zero context, so a chat follow-up like "팀작업 이어가줘" had
120
+ // nothing to continue from and the bare provider model reinterpreted
121
+ // "team" in its own terms.
122
+ const teamCaptured = [];
123
+ try {
124
+ const tabRouter = RoleRouter.default();
125
+ // Phase 141: every role replies in the user's language. Baked
126
+ // into the adapter's system prompt at construction so it reaches
127
+ // claude-cli (--append-system-prompt) and API adapters (system)
128
+ // alike.
129
+ const langSystem = languageDirective(prompt);
130
+ const teamAdapterFor = async (role) => {
131
+ const cfg = tabRouter.configFor(role);
132
+ const eff = cfg.llm.provider;
133
+ if (eff === "stub")
134
+ return makeTeamStubAdapter(role);
135
+ const baseSystem = ctx.adapterOptsBase.system;
136
+ const system = [baseSystem, langSystem, REVIEW_FOCUS[role]]
137
+ .filter(Boolean)
138
+ .join("\n\n");
139
+ // Phase 348: per-role MCP scoping. Clone the base omgTools and tag it
140
+ // with this role's allowlist (team.yaml `mcp:`) + provider, so the
141
+ // role's omg MCP child exposes only its targeted servers. Roles with no
142
+ // `mcp` list see all enabled servers (unchanged).
143
+ const baseOmg = ctx.adapterOptsBase.omgTools;
144
+ const omgTools = baseOmg
145
+ ? { ...baseOmg, provider: eff, ...(cfg.mcp ? { mcpAllow: [...cfg.mcp] } : {}) }
146
+ : undefined;
147
+ return await makeAdapter(eff, cfg.llm.model, {
148
+ ...ctx.adapterOptsBase,
149
+ cwd: tab.cwd,
150
+ system,
151
+ ...(omgTools ? { omgTools } : {}),
152
+ });
153
+ };
154
+ const cache = new Map();
155
+ // Phase 144: a small review panel of distinct lenses.
156
+ const teamReviewers = ["reviewer", "security", "design"];
157
+ const prebuild = ["implementer", ...teamReviewers];
158
+ if (withPlanner)
159
+ prebuild.push("planner");
160
+ for (const role of prebuild) {
161
+ if (!cache.has(role))
162
+ cache.set(role, await teamAdapterFor(role));
163
+ }
164
+ const factory = (role) => {
165
+ const cached = cache.get(role);
166
+ if (cached === undefined) {
167
+ throw new Error(`adapter for role '${role}' not prebuilt`);
168
+ }
169
+ return cached;
170
+ };
171
+ // Phase 149: Esc on the team tab aborts the whole pipeline.
172
+ tab.cancel = () => {
173
+ teamAbort.abort();
174
+ for (const a of cache.values()) {
175
+ a.cancel?.();
176
+ }
177
+ };
178
+ // Phase 106: capture the team's text output + surface the active
179
+ // role/iteration as a teamPhase status field. (teamCaptured is
180
+ // hoisted above the try — see Phase 287.)
181
+ // Phase 143: banners use `◆ iteration N/M · role` / `◆ planning · role`.
182
+ const PHASE_RE = /^◆\s+iteration\s+(\d+)(?:\/(\d+))?\s+·\s+([\w-]+)|^◆\s+planning\s+·\s+([\w-]+)/;
183
+ // Phase 109: per-role token usage.
184
+ let currentRole = "implementer";
185
+ const roleUsage = new Map();
186
+ // Phase 252 (4th-round audit): providers emit cumulative usage
187
+ // during a single stream — anthropic emits at message_start +
188
+ // every message_delta with growing input/output counts. The
189
+ // original code summed every (tin+tout), so a single 10K-token
190
+ // turn with 50 deltas reported 500K+. For multi-iter team runs
191
+ // the figure exploded ("implementer 22827.8K" = ~22M tokens for
192
+ // what was really tens of thousands).
193
+ //
194
+ // Track lastSeen per role and add only the DELTA when the
195
+ // cumulative grows. When it drops (candidate < last), the role
196
+ // started a new turn — add the full candidate as the new turn's
197
+ // baseline. Total = sum of each turn's final cumulative.
198
+ const roleLastSeen = new Map();
199
+ // Phase 142: live per-role status for the team panel.
200
+ const roleState = new Map();
201
+ const teamWriter = async (m) => {
202
+ if (m.method === "event/role_status") {
203
+ const p = m.params;
204
+ if (typeof p.role === "string" && typeof p.status === "string") {
205
+ roleState.set(p.role, {
206
+ role: p.role,
207
+ status: p.status,
208
+ elapsedMs: typeof p.elapsedMs === "number" ? p.elapsedMs : undefined,
209
+ provider: typeof p.provider === "string" ? p.provider : undefined,
210
+ model: typeof p.model === "string" ? p.model : undefined,
211
+ });
212
+ tab.teamRoles = [...roleState.values()];
213
+ ctx.pushStatus({ teamRoles: tab.teamRoles }, tab);
214
+ }
215
+ return;
216
+ }
217
+ if (m.method === "event/text") {
218
+ const t = m.params.text;
219
+ if (typeof t === "string") {
220
+ teamCaptured.push(t);
221
+ const line = t.trim();
222
+ const pm = PHASE_RE.exec(line);
223
+ if (pm) {
224
+ currentRole = pm[4] ?? pm[3];
225
+ const phase = pm[4]
226
+ ? `planning · ${pm[4]}`
227
+ : `${pm[3]} · iter ${pm[1]}${pm[2] ? `/${pm[2]}` : ""}`;
228
+ tab.teamPhase = phase;
229
+ ctx.pushStatus({ teamPhase: phase }, tab);
230
+ }
231
+ }
232
+ }
233
+ if (m.method === "event/status") {
234
+ const p = m.params;
235
+ const tin = typeof p.tokensIn === "number" ? p.tokensIn : 0;
236
+ const tout = typeof p.tokensOut === "number" ? p.tokensOut : 0;
237
+ const candidate = tin + tout;
238
+ if (candidate > 0) {
239
+ // Phase 252: delta-from-last instead of straight sum.
240
+ // Cumulative-within-turn → growing → add delta.
241
+ // New turn (candidate drops below lastSeen) → reset
242
+ // lastSeen and add the full candidate as that turn's
243
+ // baseline contribution.
244
+ const last = roleLastSeen.get(currentRole) ?? 0;
245
+ const delta = candidate >= last ? candidate - last : candidate;
246
+ roleUsage.set(currentRole, (roleUsage.get(currentRole) ?? 0) + delta);
247
+ roleLastSeen.set(currentRole, candidate);
248
+ }
249
+ // Phase 222 (hotfix): strip per-role tokensIn / tokensOut /
250
+ // contextWindow from the forwarded status. Each role uses its
251
+ // own model (gemini-pro 1M, opus 200K, gpt-5-codex 256K…), and
252
+ // forwarding the raw number into the tab's chip causes
253
+ // ctx % > 100 when the role's window differs from the tab's
254
+ // default. The tab's chip should track the tab's *own*
255
+ // conversation, not a transient sub-pipeline's role-specific
256
+ // adapter call. Role-level usage is preserved separately in
257
+ // `roleUsage` above and surfaced via the `◆ team usage` line.
258
+ const rest = { ...(m.params ?? {}) };
259
+ delete rest.tokensIn;
260
+ delete rest.tokensOut;
261
+ delete rest.contextWindow;
262
+ // Only forward if something remains (e.g. rateLimitStatus,
263
+ // tokensUsed5h aggregates from the user-global usage windows
264
+ // which runTurnFor's writer fills in elsewhere).
265
+ if (Object.keys(rest).length > 0) {
266
+ ctx.pushNotif({ jsonrpc: "2.0", method: "event/status", params: rest }, tab);
267
+ }
268
+ return;
269
+ }
270
+ ctx.pushNotif(m, tab);
271
+ };
272
+ const runner = new TeamRunner(tabRouter, teamWriter, factory, {});
273
+ // Phase 347: the team used to stop after a fixed 3 rounds, so a
274
+ // multi-part request that the reviewers approved one slice of ended
275
+ // half-done and the user had to re-ask. Now the run loops until the
276
+ // completion gate (the verifier judging the ORIGINAL request) reports
277
+ // COMPLETE, bounded by a higher safety cap (override:
278
+ // OMG_TEAM_MAX_ITERATIONS). The gate ends early the moment work is
279
+ // actually done, so the raised cap only costs rounds when there's
280
+ // genuinely more to finish.
281
+ const capEnv = Number(process.env.OMG_TEAM_MAX_ITERATIONS);
282
+ const maxIterations = Number.isFinite(capEnv) && capEnv > 0 ? Math.floor(capEnv) : 8;
283
+ const outcome = await runner.runTeam(prompt, {
284
+ reviewerRoles: teamReviewers,
285
+ plannerRole: withPlanner ? "planner" : undefined,
286
+ strategy: new DirectorEscalateStrategy(),
287
+ maxIterations,
288
+ completionRole: "verifier",
289
+ signal: teamAbort.signal,
290
+ // Phase 288: a chat message typed while the team runs is parked on
291
+ // tab.queued (interactive/index.ts). The team pipeline never goes
292
+ // through runTurnFor, so without this those messages were orphaned
293
+ // (drained only by a later solo follow-up turn, out of context).
294
+ // Hand them to the runner as checkpoint steering: pulled and
295
+ // cleared at each role boundary, folded into the implementer.
296
+ drainSteering: () => {
297
+ const q = tab.queued ?? [];
298
+ if (q.length === 0)
299
+ return [];
300
+ tab.queued = [];
301
+ return q;
302
+ },
303
+ });
304
+ tab.teamPhase = undefined;
305
+ tab.teamRoles = undefined;
306
+ // Phase 222 (hotfix): restore the tab's *own* tokensIn on the
307
+ // status snapshot. During team work the writer used to forward
308
+ // each role's adapter tokensIn, which polluted status.tokensIn
309
+ // with sub-pipeline counts from differently-sized model windows.
310
+ // Pushing the cached tab.tokensIn here resets the chip to the
311
+ // tab's actual conversation length.
312
+ ctx.pushStatus({
313
+ teamPhase: "",
314
+ teamRoles: [],
315
+ tokensIn: tab.tokensIn,
316
+ contextWindow: contextWindowForProvider(tab.provider, tab.model),
317
+ }, tab);
318
+ // Seed the tab's chat history with the team run so follow-ups
319
+ // (e.g. "explain in Korean") have context.
320
+ tab.messages.push({ role: "user", text: prompt });
321
+ tab.messages.push({
322
+ role: "assistant",
323
+ text: `[team result · ${outcome.final}]\n` + teamCaptured.join("").trim(),
324
+ toolCalls: [],
325
+ });
326
+ const usageParts = [];
327
+ for (const [role, total] of roleUsage) {
328
+ usageParts.push(`${role} ${total < 1000 ? total : (total / 1000).toFixed(1) + "K"}`);
329
+ }
330
+ const usageLine = usageParts.length > 0 ? `◆ team usage: ${usageParts.join(" · ")}\n` : "";
331
+ ctx.pushNotif({
332
+ jsonrpc: "2.0",
333
+ method: "event/text",
334
+ params: {
335
+ text: `\n◆ team final: ${VERDICT_ICON[outcome.final] ?? "•"} ${outcome.final} (${outcome.strategy}) · follow-ups now have the full team context\n` +
336
+ usageLine,
337
+ },
338
+ }, tab);
339
+ // Phase 220 / 223 (hotfix): predict the next message after a team
340
+ // finish, mirroring runTurnFor at turn.ts:390. Phase 223 cleans up
341
+ // the input — pre-223 we passed the raw teamCaptured which was
342
+ // dominated by `◆ iteration N · role` banners and the per-role
343
+ // event-text noise, so haiku saw mostly framing text and returned
344
+ // nothing useful. Now we feed it the team result line + the trimmed
345
+ // implementer output (the substantive part of the team's reply).
346
+ if (ctx.state.predictMode) {
347
+ const summary = `Team result: ${outcome.final} (${outcome.strategy}).\n\n` +
348
+ teamCaptured.join("").trim().slice(-3000);
349
+ const { predictNext } = await import("./turn.js");
350
+ void predictNext(tab, summary, ctx).catch(() => { });
351
+ }
352
+ }
353
+ catch (e) {
354
+ tab.teamPhase = undefined;
355
+ tab.teamRoles = undefined;
356
+ // Phase 222 (hotfix): see success-path comment above.
357
+ ctx.pushStatus({
358
+ teamPhase: "",
359
+ teamRoles: [],
360
+ tokensIn: tab.tokensIn,
361
+ contextWindow: contextWindowForProvider(tab.provider, tab.model),
362
+ }, tab);
363
+ const text = teamAbort.signal.aborted
364
+ ? `\n[team] cancelled\n`
365
+ : `\n[team] failed: ${e.message}\n`;
366
+ ctx.pushNotif({ jsonrpc: "2.0", method: "event/text", params: { text } }, tab);
367
+ // Phase 287 (A): seed whatever the team produced before the
368
+ // cancel/failure into the tab history (same shape as the success
369
+ // path), so a chat follow-up on this tab continues from the real
370
+ // work instead of an empty context. Skip when nothing was captured.
371
+ const partial = teamCaptured.join("").trim();
372
+ if (partial) {
373
+ tab.messages.push({ role: "user", text: prompt });
374
+ tab.messages.push({
375
+ role: "assistant",
376
+ text: `[team ${teamAbort.signal.aborted ? "cancelled" : "failed"} · partial]\n` +
377
+ partial,
378
+ toolCalls: [],
379
+ });
380
+ }
381
+ }
382
+ finally {
383
+ tab.inFlight = false;
384
+ tab.inFlightSince = undefined;
385
+ tab.teamInFlight = undefined;
386
+ tab.cancel = undefined;
387
+ // Phase 256 (hotfix): the tabsState push was gated on
388
+ // `tab !== currentTab()` — only the case where the user has
389
+ // /switch'd away during the team run. But Phase 236c made the
390
+ // Spinner's visibility derive from `tabsState[active].running`,
391
+ // so when the user STAYS on the team tab through completion, no
392
+ // tabsState push fires, the snapshot still says running:true,
393
+ // and the spinner keeps spinning on a finished team. The
394
+ // hasUnreadCompletion + tabsReady fields still only matter for
395
+ // the background-completion case, but the tabsState push must
396
+ // fire either way to keep the Spinner correct.
397
+ if (tab !== ctx.currentTab()) {
398
+ tab.hasUnreadCompletion = true;
399
+ }
400
+ ctx.pushStatus({
401
+ tabsReady: ctx.readyCount(),
402
+ tabsState: ctx.snapshotTabsState(),
403
+ });
404
+ }
405
+ }
406
+ //# sourceMappingURL=teamPipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teamPipeline.js","sourceRoot":"","sources":["../../src/cli/teamPipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /** Extract the path from one `git status --porcelain` line. Handles the
2
+ * `XY ` status prefix, rename arrows (`old -> new` → new), and git's
3
+ * quoting of paths with special chars. Returns null for an empty line. */
4
+ export declare function parsePorcelainPath(line: string): string | null;
5
+ /** Set of changed paths in `cwd` (modified / staged / untracked / deleted),
6
+ * as git reports them relative to cwd. null when cwd isn't a git work tree
7
+ * (or git is unavailable) — callers treat null as "no attribution". */
8
+ export declare function snapshotChangedPaths(cwd: string): Promise<Set<string> | null>;
9
+ /** Paths that became dirty between `before` and `after` (i.e. this turn's
10
+ * work). When `before` is null (first snapshot failed / not a repo) returns
11
+ * []. A path already dirty in `before` is NOT re-attributed — the tab that
12
+ * first dirtied it owns it (see the same-file limitation above). */
13
+ export declare function newlyTouched(before: Set<string> | null, after: Set<string> | null): string[];
14
+ //# sourceMappingURL=touchedFiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"touchedFiles.d.ts","sourceRoot":"","sources":["../../src/cli/touchedFiles.ts"],"names":[],"mappings":"AAmBA;;2EAE2E;AAC3E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU9D;AAED;;wEAEwE;AACxE,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAc7B;AAED;;;qEAGqE;AACrE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GACxB,MAAM,EAAE,CAKV"}
@@ -0,0 +1,66 @@
1
+ // Phase 341: per-tab change attribution for scoped commits.
2
+ //
3
+ // omg tabs share one working directory (the project mission), so when
4
+ // several tabs edit in parallel their diffs interleave and a plain
5
+ // `git add -A` commits everyone's work together. Instead, omg snapshots
6
+ // the set of changed files at each turn boundary; whatever became dirty
7
+ // DURING a tab's turn is attributed to that tab (turn.ts accumulates it
8
+ // into tab.touchedFiles). A scoped commit then stages + commits only that
9
+ // tab's paths, leaving other tabs' changes in the tree.
10
+ //
11
+ // Limitation (documented): attribution is by working-tree delta, so if two
12
+ // tabs run turns SIMULTANEOUSLY or edit the SAME file, the split is
13
+ // approximate — that's the case the opt-in `/worktree` model would isolate.
14
+ import { execFile } from "node:child_process";
15
+ import { promisify } from "node:util";
16
+ const execAsync = promisify(execFile);
17
+ /** Extract the path from one `git status --porcelain` line. Handles the
18
+ * `XY ` status prefix, rename arrows (`old -> new` → new), and git's
19
+ * quoting of paths with special chars. Returns null for an empty line. */
20
+ export function parsePorcelainPath(line) {
21
+ if (line.length < 4)
22
+ return null;
23
+ let p = line.slice(3); // drop the 2-char status + the separating space
24
+ const arrow = p.indexOf(" -> ");
25
+ if (arrow >= 0)
26
+ p = p.slice(arrow + 4); // rename: keep the destination
27
+ if (p.length >= 2 && p.startsWith('"') && p.endsWith('"')) {
28
+ p = p.slice(1, -1);
29
+ }
30
+ const trimmed = p.trim();
31
+ return trimmed.length > 0 ? trimmed : null;
32
+ }
33
+ /** Set of changed paths in `cwd` (modified / staged / untracked / deleted),
34
+ * as git reports them relative to cwd. null when cwd isn't a git work tree
35
+ * (or git is unavailable) — callers treat null as "no attribution". */
36
+ export async function snapshotChangedPaths(cwd) {
37
+ try {
38
+ const { stdout } = await execAsync("git", ["status", "--porcelain"], {
39
+ cwd,
40
+ });
41
+ const set = new Set();
42
+ for (const line of stdout.split("\n")) {
43
+ const p = parsePorcelainPath(line);
44
+ if (p)
45
+ set.add(p);
46
+ }
47
+ return set;
48
+ }
49
+ catch {
50
+ return null; // not a repo, or git missing
51
+ }
52
+ }
53
+ /** Paths that became dirty between `before` and `after` (i.e. this turn's
54
+ * work). When `before` is null (first snapshot failed / not a repo) returns
55
+ * []. A path already dirty in `before` is NOT re-attributed — the tab that
56
+ * first dirtied it owns it (see the same-file limitation above). */
57
+ export function newlyTouched(before, after) {
58
+ if (!before || !after)
59
+ return [];
60
+ const out = [];
61
+ for (const p of after)
62
+ if (!before.has(p))
63
+ out.push(p);
64
+ return out;
65
+ }
66
+ //# sourceMappingURL=touchedFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"touchedFiles.js","sourceRoot":"","sources":["../../src/cli/touchedFiles.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AACnE,wEAAwE;AACxE,wEAAwE;AACxE,wEAAwE;AACxE,0EAA0E;AAC1E,wDAAwD;AACxD,EAAE;AACF,2EAA2E;AAC3E,oEAAoE;AACpE,4EAA4E;AAE5E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEtC;;2EAE2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD;IACvE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,KAAK,IAAI,CAAC;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,+BAA+B;IACvE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED;;wEAEwE;AACxE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAW;IAEX,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE;YACnE,GAAG;SACJ,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,6BAA6B;IAC5C,CAAC;AACH,CAAC;AAED;;;qEAGqE;AACrE,MAAM,UAAU,YAAY,CAC1B,MAA0B,EAC1B,KAAyB;IAEzB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { RollingUsage } from "../core/context/usageWindow.js";
2
+ import { type JsonRpcNotification } from "../ipc/events.js";
3
+ import type { SlashState } from "./slash.js";
4
+ import type { Tab } from "./types.js";
5
+ import { type BgTaskWatcher } from "./bgTasks.js";
6
+ export interface UsageAccumulators {
7
+ five: RollingUsage;
8
+ weekly: RollingUsage;
9
+ session: {
10
+ tokens: number;
11
+ };
12
+ capFive: number | undefined;
13
+ capWeekly: number | undefined;
14
+ capSession: number | undefined;
15
+ }
16
+ export interface TurnContext {
17
+ state: SlashState;
18
+ tabs: Map<string, Tab>;
19
+ pushNotif: (n: JsonRpcNotification, tab?: Tab) => void;
20
+ pushStatus: (s: Record<string, unknown>, tab?: Tab) => void;
21
+ snapshotTabsState: () => Array<{
22
+ index: number;
23
+ name: string;
24
+ running: boolean;
25
+ ready: boolean;
26
+ asking: boolean;
27
+ runningSince?: number;
28
+ }>;
29
+ currentTab: () => Tab;
30
+ tabIndex: (name: string) => number;
31
+ readyCount: () => number;
32
+ maybeAutoName: (tab: Tab) => void;
33
+ persistTabs: () => void;
34
+ refreshUsageFromCache: () => void;
35
+ adapterOptsBase: Record<string, unknown>;
36
+ usage: UsageAccumulators;
37
+ reportAsyncError: (label: string, tab?: Tab) => (e: unknown) => void;
38
+ runTurn: (tab: Tab) => Promise<void>;
39
+ bgTasks?: BgTaskWatcher;
40
+ }
41
+ export interface PredictContext {
42
+ adapterOptsBase: TurnContext["adapterOptsBase"];
43
+ pushNotif: TurnContext["pushNotif"];
44
+ }
45
+ export declare function predictNext(tab: Tab, lastReply: string, ctx: PredictContext): Promise<void>;
46
+ export declare function runTurnFor(tab: Tab, ctx: TurnContext): Promise<void>;
47
+ //# sourceMappingURL=turn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn.d.ts","sourceRoot":"","sources":["../../src/cli/turn.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAsB5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,cAAc,CAAC;AAMrE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvB,SAAS,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvD,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5D,iBAAiB,EAAE,MAAM,KAAK,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,UAAU,EAAE,MAAM,GAAG,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAIrC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAWD,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAChD,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;CACrC;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAmEf;AAOD,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwlB1E"}