@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,626 @@
1
+ // omg — turn execution, extracted from cli.ts runInteractive (pure move).
2
+ // runTurnFor drives one chat turn for an owning tab; predictNext ghosts
3
+ // the likely next user message. State the closures mutated by reference
4
+ // travels through TurnContext.
5
+ import { makeAdapter } from "../core/orchestration/orchestrator.js";
6
+ import { EventDispatcher } from "../ipc/dispatcher.js";
7
+ import { contextWindowForProvider, estimateHistoryTokens, usageIsCumulative, } from "../core/context/contextWindows.js";
8
+ import { shouldAutoCompact, compactThreshold, compactTimeoutMs, } from "../core/context/summarizer.js";
9
+ import { compactTab, formatCompactSuccess } from "./compactor.js";
10
+ import { autoCommit, formatAutoCommitOutcome } from "./autoCommit.js";
11
+ import { snapshotChangedPaths, newlyTouched } from "./touchedFiles.js";
12
+ import { appendEntry as appendContinuumEntry, bumpTurn as bumpContinuumTurn, loadManifest as loadContinuumManifest, runDigest as runContinuumDigest, shouldRunDigest as shouldRunContinuumDigest, } from "../core/continuum/index.js";
13
+ import { parseBgTaskResult } from "./bgTasks.js";
14
+ export async function predictNext(tab, lastReply, ctx) {
15
+ const text = lastReply.replace(/\s+/g, " ").trim().slice(0, 1500);
16
+ if (!text)
17
+ return;
18
+ const prompt = "You are predicting the single most likely next message the USER " +
19
+ "will type in this CLI coding session, given the assistant's last " +
20
+ "reply below. Output ONLY that one short line — no quotes, no " +
21
+ "preamble, no explanation. Match the user's language. If you can't " +
22
+ "predict confidently, output nothing.\n\n" +
23
+ "Assistant's last reply:\n" +
24
+ text;
25
+ // Phase 246 (audit): record a cancel handle on the tab so /close
26
+ // can SIGTERM the predict child if the user kills the tab before
27
+ // the prediction lands. Cleared in finally so a stale handle
28
+ // doesn't survive past completion.
29
+ // Phase 249 (2nd-round audit): set the cancel flag BEFORE awaiting
30
+ // makeAdapter — `await` opens a window where /close could fire and
31
+ // find `predictCancel` still undefined, then makeAdapter resolves
32
+ // and spawns the child anyway. Now /close flips `cancelled` first;
33
+ // we observe it post-await and bail out before stream() is called.
34
+ let predictAdapter;
35
+ let cancelled = false;
36
+ tab.predictCancel = () => {
37
+ cancelled = true;
38
+ predictAdapter?.cancel?.();
39
+ };
40
+ try {
41
+ // Cheapest available model: claude-cli → haiku; otherwise reuse
42
+ // the tab's active model (an empty model breaks adapters that
43
+ // require one, so don't force one we can't name).
44
+ const cheapModel = tab.provider === "claude-cli" ? "haiku" : tab.model || "";
45
+ predictAdapter = await makeAdapter(tab.provider, cheapModel, {
46
+ ...ctx.adapterOptsBase,
47
+ disableTools: true,
48
+ enableSessionResume: false,
49
+ });
50
+ if (cancelled)
51
+ return;
52
+ const parts = [];
53
+ const stream = predictAdapter.stream(prompt);
54
+ for await (const c of stream) {
55
+ if (cancelled)
56
+ break;
57
+ if (c.type === "text" && typeof c.text === "string")
58
+ parts.push(c.text);
59
+ if (c.type === "stream_end")
60
+ break;
61
+ }
62
+ if (cancelled)
63
+ return;
64
+ const line = parts.join("").trim().split("\n")[0].trim().slice(0, 200);
65
+ if (line) {
66
+ ctx.pushNotif({
67
+ jsonrpc: "2.0",
68
+ method: "event/predict",
69
+ // Phase 186: tag the prediction with the owning tab so the
70
+ // UI can drop ghosts that belong to a background tab.
71
+ params: { text: line, tabName: tab.name },
72
+ }, tab);
73
+ }
74
+ }
75
+ catch {
76
+ /* prediction is best-effort */
77
+ }
78
+ finally {
79
+ tab.predictCancel = undefined;
80
+ }
81
+ }
82
+ // Phase 51: one turn body, scoped to a specific owning tab. The
83
+ // tab parameter is captured at the moment the user submitted; if
84
+ // they /switch elsewhere mid-stream, the writer still routes to
85
+ // this tab. UI sees the events only when the tab is currently
86
+ // active (pushNotif's contract).
87
+ export async function runTurnFor(tab, ctx) {
88
+ tab.inFlight = true;
89
+ tab.inFlightSince = Date.now();
90
+ // Phase 221 (hotfix): publish the per-tab state snapshot so the
91
+ // upper-rule chip shows `● <idx>` for background tabs in flight.
92
+ ctx.pushStatus({ tabsState: ctx.snapshotTabsState() });
93
+ // Phase 149: a plain turn is cancelled by SIGTERMing its adapter.
94
+ tab.cancel = () => {
95
+ tab.adapter.cancel?.();
96
+ };
97
+ // Phase 182: if the last turn pushed us past ~80% of the model's
98
+ // context window, summarize the older messages before sending. Empty
99
+ // summary or too few messages → no-op; the original history stays.
100
+ // Phase 207: surface a "compacting…" spinner so the user knows the
101
+ // delay isn't a hang. Mirrors claude-code's visible auto-compact.
102
+ // Phase 321: Phase 317 gated this on `lastRateLimitStatus !==
103
+ // "rejected"` to skip a futile summary while rate-limited — but a stale
104
+ // "rejected" flag (set once, never cleared if no "allowed" event
105
+ // followed) then silently disabled auto-compact forever, leaving the
106
+ // context to grow to 100% with no spinner. Drop the gate: always
107
+ // compact when over threshold. A genuinely rejected summary just
108
+ // returns empty fast (Phase 313's shortened timeout still bounds it),
109
+ // which is far better than never compacting at all.
110
+ if (shouldAutoCompact(tab.tokensIn, contextWindowForProvider(tab.provider, tab.model), compactThreshold(tab.provider))) {
111
+ ctx.pushNotif({
112
+ jsonrpc: "2.0",
113
+ method: "event/stream_start",
114
+ params: { label: "compacting" },
115
+ }, tab);
116
+ // Phase 259: cap compact so a stuck summarizer doesn't hang the
117
+ // whole turn. Wire `tab.cancel` to the summarizer's adapter so Esc
118
+ // kills it mid-flight too — pre-259 the user saw "compacting… 4m"
119
+ // with no way out. The normal cap is sized for the worst-case real
120
+ // run (200K+ tokens through claude-cli haiku takes ~5 min).
121
+ // Phase 313: when the provider is rate-limited (tab.lastRateLimitStatus
122
+ // set), the summary call competes for the throttled quota and stalls,
123
+ // so compactTimeoutMs() drops the cap to ~45s — the user falls through
124
+ // to full context in seconds instead of watching "compacting… 5m".
125
+ const rateLimited = tab.lastRateLimitStatus;
126
+ const timeoutMs = compactTimeoutMs(rateLimited);
127
+ let compactCancelled = false;
128
+ let compactHandle = null;
129
+ tab.cancel = () => {
130
+ compactCancelled = true;
131
+ compactHandle?.cancel();
132
+ };
133
+ const timeoutTimer = setTimeout(() => {
134
+ compactCancelled = true;
135
+ compactHandle?.cancel();
136
+ }, timeoutMs);
137
+ timeoutTimer.unref?.();
138
+ try {
139
+ const r = await compactTab(tab, ctx.adapterOptsBase, {
140
+ onCancel: (h) => {
141
+ compactHandle = h;
142
+ },
143
+ // Phase 318: live "↓ Ntok" motion on the compacting spinner.
144
+ onProgress: (chars) => ctx.pushNotif({
145
+ jsonrpc: "2.0",
146
+ method: "event/stream_progress",
147
+ params: { chars },
148
+ }, tab),
149
+ });
150
+ clearTimeout(timeoutTimer);
151
+ ctx.pushNotif({ jsonrpc: "2.0", method: "event/stream_end", params: {} }, tab);
152
+ if (compactCancelled) {
153
+ // Phase 313: name the rate-limit cause when that's why it was
154
+ // cut short, so the user knows it isn't a plain hang.
155
+ const why = rateLimited
156
+ ? `cut short — near your rate limit (${rateLimited}), so the summary call was stalling. `
157
+ : `cancelled — `;
158
+ ctx.pushNotif({
159
+ jsonrpc: "2.0",
160
+ method: "event/text",
161
+ params: {
162
+ text: `[compact] ${why}proceeding with full context. If compact keeps timing out, /reset clears the session.\n`,
163
+ },
164
+ }, tab);
165
+ }
166
+ else if (r.ok) {
167
+ ctx.pushNotif({
168
+ jsonrpc: "2.0",
169
+ method: "event/text",
170
+ params: {
171
+ text: formatCompactSuccess(r),
172
+ },
173
+ }, tab);
174
+ tab.tokensIn = 0;
175
+ // Phase 328: also push the reset to the UI so the info bar's ctx%
176
+ // drops immediately. Without this it kept the stale pre-compact
177
+ // value (e.g. 100%) until the turn's next usage event — the manual
178
+ // /compact path already does this; the auto path didn't.
179
+ ctx.pushStatus({ tokensIn: 0 }, tab);
180
+ }
181
+ else {
182
+ // Phase 258: surface WHY compact didn't help. Pre-258 we hid
183
+ // this — user saw the spinner, no follow-up message, and
184
+ // concluded auto-compact was broken even though it ran. Two
185
+ // failure modes the diagnostic distinguishes:
186
+ // too-short — the entire conversation is in the last few
187
+ // messages (typical when one giant first prompt + few
188
+ // replies pushed us past 80%); compact can't summarize
189
+ // what's about to stay verbatim. Workaround: /reset to
190
+ // drop claude-cli's session entirely.
191
+ // empty-summary — the cheap summarizer returned nothing
192
+ // (rate limit, auth, etc). Workaround: retry next turn,
193
+ // or /compact manually.
194
+ const detail = r.reason === "too-short"
195
+ ? `only ${r.messagesCount} messages on this tab (keep-last is ${r.keepLast}). Try /reset to drop the session and start fresh, or split your next message.`
196
+ : "the cheap summarizer (haiku) returned an empty body. Will retry next turn.";
197
+ ctx.pushNotif({
198
+ jsonrpc: "2.0",
199
+ method: "event/text",
200
+ params: {
201
+ text: `[compact] skipped — ${detail}\n`,
202
+ },
203
+ }, tab);
204
+ }
205
+ }
206
+ catch {
207
+ clearTimeout(timeoutTimer);
208
+ ctx.pushNotif({ jsonrpc: "2.0", method: "event/stream_end", params: {} }, tab);
209
+ /* compaction is best-effort; fall through to the regular turn */
210
+ }
211
+ finally {
212
+ // Restore the main-turn cancel handle below at line 158.
213
+ tab.cancel = undefined;
214
+ }
215
+ }
216
+ // Phase 338: for codex (cumulative usage — not latched mid-turn, Phase
217
+ // 334), seed the context gauge from the carried conversation at turn
218
+ // start so ctx% shows a sane in-progress estimate immediately instead of
219
+ // 0% (first turn) or the stale previous value. It stays ~constant during
220
+ // the turn — codex's internal tool-output growth is invisible to omg —
221
+ // and the end-of-turn recompute then folds in this turn's reply. Runs
222
+ // after any auto-compact above so it reflects the post-compaction size.
223
+ if (usageIsCumulative(tab.provider)) {
224
+ const carried = estimateHistoryTokens(tab.messages);
225
+ if (tab.tokensIn > 0 && tab.tokensIn !== carried) {
226
+ tab.prevTokensIn = tab.tokensIn;
227
+ }
228
+ tab.tokensIn = carried;
229
+ ctx.pushStatus({ tokensIn: carried }, tab);
230
+ }
231
+ ctx.pushNotif({
232
+ jsonrpc: "2.0",
233
+ method: "event/stream_start",
234
+ params: {
235
+ label: `${tab.provider} ${tab.model || ""}`.trim(),
236
+ },
237
+ }, tab);
238
+ // Phase 341: snapshot the working tree so files this turn dirties get
239
+ // attributed to THIS tab (for scoped commits). Best-effort; null off-repo.
240
+ const touchedBefore = await snapshotChangedPaths(tab.cwd);
241
+ const captured = [];
242
+ const toolCalls = [];
243
+ let stepInTurn = 0;
244
+ // Phase 257: remember Bash tool calls whose input asked for
245
+ // `run_in_background: true`. The matching tool_use_end carries the
246
+ // task id + output path in its result text — we register the
247
+ // watcher there.
248
+ const pendingBgStarts = new Map();
249
+ const writer = async (m) => {
250
+ ctx.pushNotif(m, tab);
251
+ if (m.method === "event/text") {
252
+ const t = m.params.text;
253
+ if (typeof t === "string")
254
+ captured.push(t);
255
+ }
256
+ else if (m.method === "event/tool_use_start") {
257
+ const p = m.params;
258
+ toolCalls.push({
259
+ toolId: String(p.id ?? ""),
260
+ toolName: String(p.name ?? ""),
261
+ toolInput: p.input !== null && typeof p.input === "object"
262
+ ? { ...p.input }
263
+ : {},
264
+ });
265
+ // Phase 257: stash Bash + run_in_background tool calls so the
266
+ // matching tool_use_end can register the watcher with the
267
+ // command that started it (for the auto-resume prompt).
268
+ if (ctx.bgTasks &&
269
+ String(p.name ?? "") === "Bash" &&
270
+ p.input !== null &&
271
+ typeof p.input === "object") {
272
+ const input = p.input;
273
+ if (input.run_in_background === true) {
274
+ pendingBgStarts.set(String(p.id ?? ""), typeof input.command === "string" ? input.command : "");
275
+ }
276
+ }
277
+ tab.toolCalls += 1;
278
+ stepInTurn += 1;
279
+ // Phase 228 (hotfix, root cause for "agent on other tab jitter"):
280
+ // toolCalls + step are per-tab. Pre-228 they were pushed without
281
+ // a tab arg, so a background tab's writer kept overwriting the
282
+ // active tab's status bar with its own counts and forcing the
283
+ // whole Ink tree to re-render per tool call. Tagging routes the
284
+ // status through `target === currentTab()` so it ONLY reaches
285
+ // App when the user is looking at this tab.
286
+ ctx.pushStatus({ toolCalls: tab.toolCalls, step: stepInTurn }, tab);
287
+ }
288
+ else if (m.method === "event/tool_use_end") {
289
+ // Phase 257: match against the Bash + run_in_background calls
290
+ // we stashed on tool_use_start. The result text carries the
291
+ // task id and the output file path; parseBgTaskResult handles
292
+ // the format quirks. Register the watcher; cli.ts wired the
293
+ // completion callback that auto-injects a continuation prompt
294
+ // into this tab.
295
+ if (ctx.bgTasks) {
296
+ const p = m.params;
297
+ const toolId = String(p.id ?? "");
298
+ const command = pendingBgStarts.get(toolId);
299
+ if (command !== undefined) {
300
+ pendingBgStarts.delete(toolId);
301
+ const parsed = parseBgTaskResult(p.result);
302
+ if (parsed) {
303
+ const now = Date.now();
304
+ ctx.bgTasks.track({
305
+ tabName: tab.name,
306
+ toolId: parsed.taskId,
307
+ outputPath: parsed.outputPath,
308
+ command,
309
+ startedAt: now,
310
+ lastSize: -1,
311
+ stableSince: now,
312
+ });
313
+ }
314
+ }
315
+ }
316
+ }
317
+ else if (m.method === "event/status") {
318
+ // Rolling usage windows are user-global, not per-tab — push
319
+ // unconditionally so the active tab's bar shows the latest
320
+ // sums even when the activity came from a background tab.
321
+ const p = m.params;
322
+ // Phase 182: latch the latest input-token count on the tab so
323
+ // auto-compact can decide whether the next turn would overflow
324
+ // the model's context window.
325
+ // Phase 334: SKIP this for codex — its usage.input_tokens is
326
+ // cumulative across the turn's tool-call steps (a 31-tool turn
327
+ // reported 910K vs a 256K window), so latching it gives a false
328
+ // "ctx 100%+". For codex the gauge is recomputed from the carried
329
+ // conversation at end-of-turn (see below); the cache split is
330
+ // likewise cumulative and not comparable to that gauge, so it's
331
+ // skipped too.
332
+ if (!usageIsCumulative(tab.provider)) {
333
+ if (typeof p.tokensIn === "number" && p.tokensIn > 0) {
334
+ // Phase 322: remember the pre-turn total so /context can show the
335
+ // per-turn Δ. The first usage event of a turn is the jump from the
336
+ // previous turn; later events within the same turn keep prev fixed.
337
+ if (tab.tokensIn > 0 && tab.tokensIn !== p.tokensIn) {
338
+ tab.prevTokensIn = tab.tokensIn;
339
+ }
340
+ tab.tokensIn = p.tokensIn;
341
+ }
342
+ // Phase 322: latch the prompt-cache split for /context.
343
+ if (typeof p.cacheReadTokens === "number") {
344
+ tab.cacheReadTokens = p.cacheReadTokens;
345
+ }
346
+ if (typeof p.freshTokens === "number") {
347
+ tab.freshTokens = p.freshTokens;
348
+ }
349
+ }
350
+ // Phase 313: latch the provider's rate-limit status so the next
351
+ // turn's auto-compact can shorten its timeout while throttled.
352
+ // "" (Phase 312's clear-on-allowed) resets it to undefined.
353
+ if (typeof p.rateLimitStatus === "string") {
354
+ tab.lastRateLimitStatus = p.rateLimitStatus || undefined;
355
+ }
356
+ if (typeof p.tokensOut === "number" && p.tokensOut > 0) {
357
+ const now = Date.now();
358
+ ctx.usage.five.record(now, p.tokensOut);
359
+ ctx.usage.weekly.record(now, p.tokensOut);
360
+ ctx.usage.session.tokens += p.tokensOut;
361
+ ctx.pushStatus({
362
+ tokensUsed5h: ctx.usage.five.sum(now),
363
+ tokensUsedWeekly: ctx.usage.weekly.sum(now),
364
+ tokensUsedSession: ctx.usage.session.tokens,
365
+ capFiveHour: ctx.usage.capFive,
366
+ capWeekly: ctx.usage.capWeekly,
367
+ capSession: ctx.usage.capSession,
368
+ });
369
+ }
370
+ }
371
+ };
372
+ // Phase 91: interactive chat wants live streaming. Without a
373
+ // flushThreshold the dispatcher buffers every text chunk until
374
+ // the stream ends (or a non-text boundary lands), which makes
375
+ // the UI feel frozen until the model finishes. A 1-char threshold
376
+ // flushes every adapter delta to the writer immediately — text
377
+ // appears as it's generated, the same as claude code / codex /
378
+ // gemini CLI.
379
+ const dispatcher = new EventDispatcher(writer, { flushThreshold: 1 });
380
+ let streamOk = true;
381
+ // Phase 201d: if /model just swapped providers on this tab, the
382
+ // pendingContinuumInjection carries decisions + recent turns from
383
+ // the project's transcript. Prepend it to the last user message
384
+ // text on THIS stream only — tab.messages itself stays clean.
385
+ let messages = tab.messages;
386
+ if (tab.pendingContinuumInjection) {
387
+ const injection = tab.pendingContinuumInjection;
388
+ tab.pendingContinuumInjection = undefined;
389
+ const copy = [...tab.messages];
390
+ for (let i = copy.length - 1; i >= 0; i--) {
391
+ if (copy[i].role === "user") {
392
+ copy[i] = { role: "user", text: injection + copy[i].text };
393
+ break;
394
+ }
395
+ }
396
+ messages = copy;
397
+ }
398
+ const conv = ctx.state.planMode
399
+ ? {
400
+ system: "Plan mode: before acting, outline your plan in numbered steps. " +
401
+ "Do not execute changes until the user approves the plan.",
402
+ messages: [...messages],
403
+ }
404
+ : { messages: [...messages] };
405
+ try {
406
+ await dispatcher.run(tab.adapter.stream(conv));
407
+ }
408
+ catch (e) {
409
+ streamOk = false;
410
+ ctx.pushNotif({
411
+ jsonrpc: "2.0",
412
+ method: "event/text",
413
+ params: { text: `\n[adapter error: ${e.message}]\n` },
414
+ }, tab);
415
+ }
416
+ // Phase 92 → 317: surface "stream ended with no output" so the user
417
+ // doesn't stare at a silent prompt wondering if it's their fault.
418
+ // Lead with the rate/session-limit cause (the common one, and the
419
+ // chip confirms it) — an empty turn is far more often a hit limit than
420
+ // a genuinely silent model. Other causes: a wrong model alias, or auth.
421
+ if (streamOk && captured.length === 0 && toolCalls.length === 0) {
422
+ const limited = tab.lastRateLimitStatus
423
+ ? `you've hit a ${tab.provider} rate/usage limit (the [limit:] chip shows when it resets) — switch with /model <prov>/<model> or wait for the reset`
424
+ : `you may have hit a ${tab.provider} rate/usage limit (check the [limit:] chip), the model alias may be wrong (try /model <prov>/<another-model>), or auth is missing`;
425
+ ctx.pushNotif({
426
+ jsonrpc: "2.0",
427
+ method: "event/text",
428
+ params: {
429
+ text: `\n[${tab.provider}/${tab.model || "(default)"}] turn ended with no output. ` +
430
+ `Most likely ${limited}. Run \`OMG_VERBOSE_STDERR=1 omg\` to see the host CLI's stderr.\n`,
431
+ },
432
+ }, tab);
433
+ }
434
+ ctx.pushNotif({
435
+ jsonrpc: "2.0",
436
+ method: "event/stream_end",
437
+ params: { ok: streamOk },
438
+ }, tab);
439
+ const prevSession = tab.sessionId;
440
+ tab.sessionId = tab.adapter.currentSessionId;
441
+ if (tab.sessionId && tab.sessionId !== prevSession) {
442
+ // Phase 72: persist immediately so a crash mid-session doesn't
443
+ // strand a freshly minted sessionId.
444
+ ctx.persistTabs();
445
+ }
446
+ // Phase 228 (hotfix): sessionId + step are per-tab; route with the
447
+ // tab tag so a background tab's turn doesn't overwrite the active
448
+ // tab's status bar with its own session/step values. The
449
+ // activeTab/tabCount/tabIndex fields ARE global UI state, but
450
+ // they're already consistent with whatever the active tab is, so
451
+ // tagging the whole status is safe — if the route filters it out
452
+ // (user on a different tab), the active tab's chip already has
453
+ // the right activeTab value.
454
+ ctx.pushStatus({
455
+ sessionId: tab.adapter.currentSessionId,
456
+ step: 0,
457
+ activeTab: ctx.state.activeTabName,
458
+ tabCount: ctx.tabs.size,
459
+ tabIndex: ctx.tabIndex(ctx.state.activeTabName),
460
+ }, tab);
461
+ // Phase 112: let the usage cache (if configured) override omg's
462
+ // own rolling estimate with the provider's real cap + usage. Runs
463
+ // at turn end so the file is read at most once per turn, not per
464
+ // chunk.
465
+ ctx.refreshUsageFromCache();
466
+ // Phase 88: no bell on slow-turn completion either — Phase 86
467
+ // dropped the background bell; this one was the last source of
468
+ // stray \x07 bytes the user kept seeing as "t"/"b" stutter in
469
+ // their terminal.
470
+ if (streamOk) {
471
+ const assistantText = captured.join("");
472
+ tab.messages.push({
473
+ role: "assistant",
474
+ text: assistantText,
475
+ toolCalls,
476
+ });
477
+ // Phase 334: for codex (cumulative per-turn usage), gauge context from
478
+ // the carried conversation — what omg actually re-sends next turn —
479
+ // now that this turn's reply is in tab.messages. This replaces codex's
480
+ // wildly-overshooting cumulative usage (the false "ctx 100%+") with a
481
+ // bounded, monotonic estimate, and makes auto-compact fire on the real
482
+ // re-sent size (which /compact can then actually shrink). It omits the
483
+ // codex-side floor (AGENTS.md, read by codex from disk and invisible to
484
+ // omg), so it under-rather-than-wildly-over reports — accuracy over a
485
+ // 3.5×-wrong number.
486
+ if (usageIsCumulative(tab.provider)) {
487
+ const carried = estimateHistoryTokens(tab.messages);
488
+ if (tab.tokensIn > 0 && tab.tokensIn !== carried) {
489
+ tab.prevTokensIn = tab.tokensIn;
490
+ }
491
+ tab.tokensIn = carried;
492
+ ctx.pushStatus({ tokensIn: carried }, tab);
493
+ }
494
+ // Phase 341: attribute files this turn dirtied to the tab so a scoped
495
+ // commit (/commit or auto-commit) stages only this tab's work, not the
496
+ // whole shared tree. Best-effort; null snapshots (off-repo) yield [].
497
+ const touchedAfter = await snapshotChangedPaths(tab.cwd);
498
+ const newly = newlyTouched(touchedBefore, touchedAfter);
499
+ if (newly.length > 0) {
500
+ const set = (tab.touchedFiles ??= new Set());
501
+ for (const p of newly)
502
+ set.add(p);
503
+ }
504
+ // Phase 201b: mirror the assistant reply to the continuum + bump
505
+ // turn count. Best-effort; continuum failure must not break a
506
+ // turn that streamed successfully.
507
+ if (tab.continuumId) {
508
+ try {
509
+ appendContinuumEntry(tab.continuumId, {
510
+ version: 1,
511
+ kind: "assistant",
512
+ provider: tab.provider,
513
+ model: tab.model,
514
+ text: assistantText,
515
+ ts: Date.now(),
516
+ tabName: tab.name,
517
+ });
518
+ bumpContinuumTurn(tab.continuumId);
519
+ // Phase 201e: opportunistically fire an auto-digest when the
520
+ // undigested window crosses the threshold. Fire-and-forget;
521
+ // the haiku call runs in the background and never blocks the
522
+ // next turn. shouldRunDigest is cheap (single manifest read).
523
+ const m = loadContinuumManifest(tab.continuumId);
524
+ if (shouldRunContinuumDigest(m)) {
525
+ void runContinuumDigest(tab.continuumId).catch(() => {
526
+ /* digest failure is silent — transcript stays raw */
527
+ });
528
+ }
529
+ }
530
+ catch {
531
+ /* continuum write best-effort */
532
+ }
533
+ }
534
+ // Phase 209: opt-in atomic commit. Fire-and-forget; the git
535
+ // commands run via execFile so they don't share stdio with the
536
+ // adapter. Result (sha + message, or a failure reason) is pushed
537
+ // back through the event stream so the user sees the trail in
538
+ // their scrollback.
539
+ if (tab.autoCommit) {
540
+ // Phase 341: scope the auto-commit to this tab's touched files.
541
+ const scopedPaths = [...(tab.touchedFiles ?? [])];
542
+ void autoCommit(tab.cwd, tab.name, assistantText, scopedPaths)
543
+ .then((outcome) => {
544
+ if (outcome.kind === "committed")
545
+ tab.touchedFiles?.clear();
546
+ const line = formatAutoCommitOutcome(outcome);
547
+ if (line) {
548
+ ctx.pushNotif({
549
+ jsonrpc: "2.0",
550
+ method: "event/text",
551
+ params: { text: line + "\n" },
552
+ }, tab);
553
+ }
554
+ })
555
+ .catch(() => {
556
+ /* autoCommit catches its own errors; this is defense in depth */
557
+ });
558
+ }
559
+ // Phase 120: opt-in next-message prediction. Fire-and-forget so
560
+ // it never blocks the turn; the ghost shows up a beat later.
561
+ if (ctx.state.predictMode)
562
+ void predictNext(tab, assistantText, ctx).catch(() => { });
563
+ }
564
+ tab.inFlight = false;
565
+ tab.inFlightSince = undefined;
566
+ tab.cancel = undefined; // Phase 149: turn done — nothing to cancel.
567
+ // Phase 221 (hotfix): tab flipped from running → idle; publish so
568
+ // the chip drops the `●` marker for this tab.
569
+ ctx.pushStatus({ tabsState: ctx.snapshotTabsState() });
570
+ // Phase 53: if the tab is still wearing its auto-assigned
571
+ // name ("main" / "tab-N"), retitle it from the first user
572
+ // message. Only once per tab; collision-resolved with -2/-3.
573
+ if (tab.autoNamed) {
574
+ const before = tab.name;
575
+ ctx.maybeAutoName(tab);
576
+ if (tab.name !== before) {
577
+ // Refresh status if this is the active tab so the bar shows
578
+ // the new name. The tabIndex doesn't change.
579
+ if (tab === ctx.currentTab()) {
580
+ ctx.pushStatus({
581
+ activeTab: tab.name,
582
+ tabCount: ctx.tabs.size,
583
+ tabIndex: ctx.tabIndex(tab.name),
584
+ });
585
+ }
586
+ }
587
+ }
588
+ // Phase 52 → 86: signal a finished background tab silently. The
589
+ // active tab's spinner already cleared above; a background tab just
590
+ // raises an unread flag that the status bar surfaces as `ready:N`
591
+ // and that /tabs annotates per-row. No bell, no desktop
592
+ // notification — those fired even for long multi-tab sessions the
593
+ // user didn't want pinged about.
594
+ if (tab !== ctx.currentTab()) {
595
+ tab.hasUnreadCompletion = true;
596
+ ctx.pushStatus({
597
+ tabsReady: ctx.readyCount(),
598
+ tabsState: ctx.snapshotTabsState(),
599
+ });
600
+ }
601
+ // Phase 159: drain one queued (type-ahead) message — run it as the
602
+ // next turn on this tab. FIFO; further queued messages chain through
603
+ // the same path as each turn completes.
604
+ if (tab.queued && tab.queued.length > 0) {
605
+ const next = tab.queued.shift();
606
+ tab.messages.push({ role: "user", text: next });
607
+ // Phase 201b: queued (type-ahead) user messages are conversation
608
+ // turns too; record them.
609
+ if (tab.continuumId) {
610
+ try {
611
+ appendContinuumEntry(tab.continuumId, {
612
+ version: 1,
613
+ kind: "user",
614
+ text: next,
615
+ ts: Date.now(),
616
+ tabName: tab.name,
617
+ });
618
+ }
619
+ catch {
620
+ /* continuum write best-effort */
621
+ }
622
+ }
623
+ void ctx.runTurn(tab).catch(ctx.reportAsyncError("turn", tab));
624
+ }
625
+ }
626
+ //# sourceMappingURL=turn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn.js","sourceRoot":"","sources":["../../src/cli/turn.ts"],"names":[],"mappings":"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"}