@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,450 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Phase 22 rewrite.
3
+ //
4
+ // We no longer render one row per Notification verbatim. Instead the
5
+ // stream is grouped into render units that match how a reader thinks
6
+ // about a conversation:
7
+ //
8
+ // - Consecutive event/text chunks → a single MarkdownText block,
9
+ // so streamed deltas join into one paragraph and fenced code
10
+ // blocks straddle chunk boundaries without fragmenting.
11
+ // - event/tool_use_start + matching event/tool_use_end → a single
12
+ // ToolCallCard so the user sees one bordered unit per call,
13
+ // instead of a start row and a far-away end row.
14
+ // - event/end / event/verdict / dangling tool ends → one row each,
15
+ // same as before.
16
+ //
17
+ // In normal-screen transcript mode, Static commits past groups to
18
+ // scrollback once they're "settled" (i.e. text groups followed by
19
+ // something else, tool cards that have their end, and compact batches
20
+ // whose shape can no longer change). Live tail is the active group
21
+ // plus anything that might still mutate. Alt-screen keeps the
22
+ // viewport renderer because alternate buffers have no usable native
23
+ // scrollback during the session.
24
+ import { memo } from "react";
25
+ import { Box, Static, Text, useStdout } from "ink";
26
+ import stringWidth from "string-width";
27
+ import { MarkdownText } from "./MarkdownText.js";
28
+ import { ToolCallCard } from "./ToolCallCard.js";
29
+ import { ThinkingBlock } from "./ThinkingBlock.js";
30
+ import { theme, verdictColor, verdictIcon } from "../theme.js";
31
+ const LIGHTWEIGHT_TOOLS = new Set([
32
+ "Read",
33
+ "Glob",
34
+ "Grep",
35
+ "LS",
36
+ "WebSearch",
37
+ "WebFetch",
38
+ ]);
39
+ function isLightweightOk(g) {
40
+ if (!g.end)
41
+ return false;
42
+ if (!LIGHTWEIGHT_TOOLS.has(g.start.params.name))
43
+ return false;
44
+ // Only batch successful calls — keep failures visible on their own.
45
+ const result = g.end.params.result;
46
+ if (typeof result === "object" &&
47
+ result !== null &&
48
+ "ok" in result &&
49
+ result.ok === false) {
50
+ return false;
51
+ }
52
+ return true;
53
+ }
54
+ function groupEvents(events) {
55
+ const groups = [];
56
+ let textBuf = "";
57
+ let thinkBuf = "";
58
+ const flushText = () => {
59
+ if (textBuf.length > 0) {
60
+ groups.push({ kind: "text", text: textBuf });
61
+ textBuf = "";
62
+ }
63
+ };
64
+ const flushThink = () => {
65
+ if (thinkBuf.length > 0) {
66
+ groups.push({ kind: "thinking", text: thinkBuf });
67
+ thinkBuf = "";
68
+ }
69
+ };
70
+ for (const ev of events) {
71
+ if (ev.method === "event/text") {
72
+ // Phase 143: a discrete `◆ …` team line renders as its own header
73
+ // group instead of coalescing into the surrounding prose.
74
+ if (ev.params.text.trim().startsWith("◆")) {
75
+ flushText();
76
+ flushThink();
77
+ groups.push({ kind: "team-banner", text: ev.params.text.trim() });
78
+ continue;
79
+ }
80
+ flushThink();
81
+ textBuf += ev.params.text;
82
+ continue;
83
+ }
84
+ if (ev.method === "event/thinking") {
85
+ flushText();
86
+ thinkBuf += ev.params.text;
87
+ continue;
88
+ }
89
+ if (ev.method === "event/user_echo") {
90
+ flushText();
91
+ flushThink();
92
+ // Phase 140: collapse a duplicate echo of the same message. When a
93
+ // team is launched mid-conversation the message can be echoed
94
+ // twice (UI-side Phase 115 + team-handler Phase 117); de-dupe the
95
+ // adjacent identical user line so the scrollback shows it once.
96
+ const last = groups[groups.length - 1];
97
+ if (last && last.kind === "user" && last.text === ev.params.text) {
98
+ continue;
99
+ }
100
+ groups.push({ kind: "user", text: ev.params.text });
101
+ continue;
102
+ }
103
+ flushText();
104
+ flushThink();
105
+ if (ev.method === "event/tool_use_start") {
106
+ groups.push({ kind: "tool", start: ev, progress: "" });
107
+ continue;
108
+ }
109
+ if (ev.method === "event/tool_use_progress") {
110
+ // Phase 79: append progress text to the matching tool group.
111
+ // We walk backwards because the most recent matching start is
112
+ // typically the one in flight.
113
+ for (let i = groups.length - 1; i >= 0; i--) {
114
+ const g = groups[i];
115
+ if (g.kind === "tool" &&
116
+ !g.end &&
117
+ g.start.params.id === ev.params.id) {
118
+ g.progress += ev.params.text;
119
+ break;
120
+ }
121
+ }
122
+ continue;
123
+ }
124
+ if (ev.method === "event/tool_use_end") {
125
+ // Attach to the most recent unended tool with matching id.
126
+ for (let i = groups.length - 1; i >= 0; i--) {
127
+ const g = groups[i];
128
+ if (g.kind === "tool" && !g.end && g.start.params.id === ev.params.id) {
129
+ g.end = ev;
130
+ break;
131
+ }
132
+ }
133
+ // Phase 111: a tool_use_end with no matching start is noise —
134
+ // it happens when a Task/subagent runs its own tools whose
135
+ // start events omg never saw. The old "(orphan tool end)
136
+ // toolu_…" rows just cluttered the log. Drop them silently.
137
+ continue;
138
+ }
139
+ if (ev.method === "event/end") {
140
+ groups.push({ kind: "end", event: ev });
141
+ continue;
142
+ }
143
+ if (ev.method === "event/verdict") {
144
+ groups.push({ kind: "verdict", event: ev });
145
+ continue;
146
+ }
147
+ // status / stream_start / stream_end are consumed by App, not
148
+ // EventLog, so we don't see them here.
149
+ }
150
+ flushText();
151
+ flushThink();
152
+ return groups;
153
+ }
154
+ /** Phase 97: walk the group list once and fold runs of ≥2
155
+ * consecutive lightweight-successful tool groups into a single
156
+ * `tool-batch` group. Standalone calls (one lightweight tool, or
157
+ * a heavy tool, or a failure) stay verbatim. */
158
+ function collapseLightweightBatches(groups) {
159
+ const out = [];
160
+ for (const g of groups) {
161
+ if (g.kind === "tool" && isLightweightOk(g)) {
162
+ const last = out[out.length - 1];
163
+ if (last && last.kind === "tool-batch") {
164
+ last.tools.push(g);
165
+ continue;
166
+ }
167
+ if (last && last.kind === "tool" && isLightweightOk(last)) {
168
+ out.pop();
169
+ out.push({ kind: "tool-batch", tools: [last, g] });
170
+ continue;
171
+ }
172
+ }
173
+ out.push(g);
174
+ }
175
+ return out;
176
+ }
177
+ function isSettledForTranscript(g, index, lastIndex, streaming) {
178
+ // During an active stream, final text/thinking groups can still
179
+ // absorb more chunks. End/verdict/user rows cannot, so do not drag
180
+ // an old turn boundary back into the live region on stream_start.
181
+ if (g.kind === "text" || g.kind === "thinking") {
182
+ return !(streaming && index === lastIndex);
183
+ }
184
+ if (g.kind === "tool") {
185
+ if (!g.end)
186
+ return false;
187
+ // A trailing lightweight success may still fold into a compact
188
+ // batch if the next tool is another successful Read/Grep/LS/etc.
189
+ if (streaming && index === lastIndex && isLightweightOk(g))
190
+ return false;
191
+ return true;
192
+ }
193
+ return true;
194
+ }
195
+ function canStartLightweightRun(g) {
196
+ if (!g || g.kind !== "tool")
197
+ return false;
198
+ return LIGHTWEIGHT_TOOLS.has(g.start.params.name);
199
+ }
200
+ function isLightweightSuccessGroup(g) {
201
+ return Boolean(g && g.kind === "tool" && isLightweightOk(g));
202
+ }
203
+ function splitTranscriptGroups(groups, streaming) {
204
+ if (groups.length === 0)
205
+ return { committed: [], live: [] };
206
+ const lastIndex = groups.length - 1;
207
+ let commitEnd = groups.length;
208
+ for (let i = 0; i < groups.length; i++) {
209
+ if (!isSettledForTranscript(groups[i], i, lastIndex, streaming)) {
210
+ commitEnd = i;
211
+ break;
212
+ }
213
+ }
214
+ // Compact mode can fold adjacent successful lightweight tools into
215
+ // a single "Read 2, Searched 1" row. Do not Static-commit a trailing
216
+ // lightweight-success run while the stream is still active, because
217
+ // the next in-flight lightweight tool may later join that batch. By
218
+ // holding the run in the live region, <Static>'s append-only index
219
+ // never points at rows whose compact shape can still change.
220
+ if (streaming) {
221
+ while (commitEnd > 0 && isLightweightSuccessGroup(groups[commitEnd - 1])) {
222
+ commitEnd--;
223
+ }
224
+ // If the first live group is a lightweight tool that has not yet
225
+ // succeeded, a trailing successful run immediately before it can
226
+ // still collapse with it once the end event arrives.
227
+ if (canStartLightweightRun(groups[commitEnd])) {
228
+ while (commitEnd > 0 &&
229
+ isLightweightSuccessGroup(groups[commitEnd - 1])) {
230
+ commitEnd--;
231
+ }
232
+ }
233
+ }
234
+ return {
235
+ committed: groups.slice(0, commitEnd),
236
+ live: groups.slice(commitEnd),
237
+ };
238
+ }
239
+ // Phase 236a: TAIL_SIZE removed. In alt-screen / explicit
240
+ // scrollOffset mode, the visible window comes from the terminal height
241
+ // calculation below. Phase 270 reintroduces <Static> only for
242
+ // normal-screen settled transcript rows.
243
+ // Phase 260: rough per-group row estimate used to fit a window of
244
+ // groups inside the terminal's available height. Underestimates when
245
+ // long lines wrap and when MarkdownText/ToolCallCard chrome lands on
246
+ // extra rows — that's OK: this is the budget for "how many groups can
247
+ // I render before overflowing", and undershooting just means we keep
248
+ // a few more groups than strictly fit. What we MUST avoid is rendering
249
+ // a 5000-event tall column that Ink then tries to cursor-up-redraw
250
+ // over (the pre-260 bug that corrupted scrollback and lagged the
251
+ // terminal). Cheap and stable beats accurate.
252
+ function estimateGroupHeight(g) {
253
+ switch (g.kind) {
254
+ case "text":
255
+ case "thinking":
256
+ return Math.max(1, g.text.split("\n").length);
257
+ case "user":
258
+ // marginTop + marginBottom (Phase 159) bump 2 extra rows.
259
+ return Math.max(1, g.text.split("\n").length) + 2;
260
+ case "team-banner":
261
+ return Math.max(1, g.text.split("\n").length) + 1;
262
+ case "tool":
263
+ // ToolCallCard is a bordered region; rough est. accounts for
264
+ // header + arg + body + optional output footer.
265
+ return g.end ? 5 : 3;
266
+ case "tool-batch":
267
+ return 1;
268
+ case "end":
269
+ case "verdict":
270
+ return 1;
271
+ default:
272
+ return 1;
273
+ }
274
+ }
275
+ // Phase 115 → 137: the user's own message, rendered claude-code style as
276
+ // a full-width gray block with a `›` gutter so it reads as a distinct
277
+ // input bubble in the scrollback. Each visual line is padded to the
278
+ // terminal width (display-width aware, so CJK pads correctly) so the
279
+ // background bar spans the row.
280
+ function UserEcho({ text }) {
281
+ const { stdout } = useStdout();
282
+ const width = Math.max(20, stdout?.columns ?? 80);
283
+ const bg = theme.userEcho.bgColor;
284
+ return (
285
+ // Phase 159: blank line above + below so the user's message reads as
286
+ // a distinct turn boundary, not glued to the surrounding agent text.
287
+ _jsx(Box, { flexDirection: "column", marginTop: 1, marginBottom: 1, children: text.split("\n").map((line, i) => {
288
+ const gutter = i === 0 ? theme.userEcho.glyph + " " : " ";
289
+ const used = stringWidth(gutter) + stringWidth(line);
290
+ const pad = " ".repeat(Math.max(0, width - used));
291
+ return (_jsxs(Text, { backgroundColor: bg, children: [_jsx(Text, { color: theme.userEcho.glyphColor, children: gutter }), _jsx(Text, { color: theme.userEcho.textColor, children: line }), pad] }, i));
292
+ }) }));
293
+ }
294
+ function GroupRow({ group, thinkVisible, reasoningExpanded, liveCursor, verbose, }) {
295
+ if (group.kind === "user") {
296
+ return _jsx(UserEcho, { text: group.text });
297
+ }
298
+ if (group.kind === "team-banner") {
299
+ return (_jsx(Box, { flexDirection: "column", marginTop: 1, children: group.text.split("\n").map((line, i) => (_jsx(Text, { color: theme.team.headerColor, bold: true, children: line }, i))) }));
300
+ }
301
+ if (group.kind === "text") {
302
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(MarkdownText, { text: group.text }), liveCursor && _jsx(Text, { color: theme.spinner.color, children: "\u258C" })] }));
303
+ }
304
+ if (group.kind === "thinking") {
305
+ // Phase 308: /reasoning forces reasoning visible + expanded, even when
306
+ // /think is off, for a live codex progress feel.
307
+ if (!thinkVisible && !reasoningExpanded)
308
+ return null;
309
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(ThinkingBlock, { text: group.text, collapsed: !verbose && !reasoningExpanded }), liveCursor && _jsx(Text, { color: theme.thinking.bodyColor, children: "\u258C" })] }));
310
+ }
311
+ if (group.kind === "tool")
312
+ return (_jsx(ToolCallCard, { start: group.start, end: group.end, progress: group.progress, verbose: verbose }));
313
+ if (group.kind === "tool-batch") {
314
+ // Count by display name so "Searched 5, Read 3" reads naturally.
315
+ const counts = new Map();
316
+ for (const t of group.tools) {
317
+ const name = t.start.params.name;
318
+ counts.set(name, (counts.get(name) ?? 0) + 1);
319
+ }
320
+ const DISPLAY = {
321
+ Read: "Read",
322
+ Glob: "Searched",
323
+ Grep: "Searched",
324
+ LS: "Listed",
325
+ WebSearch: "Searched",
326
+ WebFetch: "Fetched",
327
+ };
328
+ const parts = [];
329
+ for (const [name, n] of counts) {
330
+ const label = DISPLAY[name] ?? name;
331
+ parts.push(`${label} ${n}`);
332
+ }
333
+ return (_jsxs(Box, { children: [_jsx(Text, { color: theme.toolCard.headGlyphColor, children: theme.toolCard.headGlyph + " " }), _jsx(Text, { color: theme.toolCard.argLabelColor, children: parts.join(", ") })] }));
334
+ }
335
+ if (group.kind === "end") {
336
+ return (_jsxs(Text, { color: theme.end.lineColor, children: [theme.end.line, " (", group.event.params.stop_reason, ")"] }));
337
+ }
338
+ if (group.kind === "verdict") {
339
+ const verdict = group.event.params.verdict;
340
+ const color = verdictColor(verdict);
341
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: color, bold: true, children: [verdictIcon(verdict), " ", verdict] }), _jsxs(Text, { color: theme.verdict.rationaleColor, children: [" ", "\u00B7 iter ", group.event.params.iteration, " \u2014 ", group.event.params.rationale] })] }));
342
+ }
343
+ return null;
344
+ }
345
+ function EventLogImpl({ events, thinkVisible = true, reasoningExpanded = false, streaming = false, verbose = false, scrollOffset = 0, transcriptMode = false, transcriptResetKey = 0, showLiveCursor = true, }) {
346
+ // Phase 236a → 260: window-cap rendering.
347
+ //
348
+ // 236a dropped Ink's `<Static>` so multi-tab /switch wouldn't
349
+ // re-commit the destination tab's events to terminal scrollback
350
+ // (Static's watermark resets on remount → all items emitted again
351
+ // on every switch). The replacement — render every group as a live
352
+ // `<Box>` row — fixed the duplication on /switch but introduced two
353
+ // worse symptoms once a tab accumulated more than a terminal-height
354
+ // of content:
355
+ //
356
+ // 1. Terminal lag — every 32ms batch flush re-laid out thousands
357
+ // of Box children. Ink's reconciler + cursor-move emission is
358
+ // O(visible rows); a 5000-event session renders fine in JS but
359
+ // stalls the terminal emulator.
360
+ // 2. Scrollback "duplication" — when the rendered column is
361
+ // taller than the terminal, Ink's in-place repaint (cursor-up
362
+ // then rewrite) loses track and writes partial frames into
363
+ // the terminal's native scrollback. Mouse-scroll up shows
364
+ // corrupted/duplicated past content.
365
+ //
366
+ // 260 fixed alt-screen and internal-scroll cases by rendering only
367
+ // the slice that fits in the available terminal height. Phase 270
368
+ // takes the normal-screen path back to a transcript-first model:
369
+ // immutable rows are emitted through <Static> once and native
370
+ // terminal scrollback owns history, while the live tail remains the
371
+ // only repainting region. PageUp/Down (`scrollOffset`) still falls
372
+ // back to the viewport path because that is an explicit request to
373
+ // inspect historical app state inside the live region.
374
+ const rawGroups = groupEvents(events);
375
+ const { stdout } = useStdout();
376
+ // Reserve rows for Dock + 2 HRules + TabChip + CommandInput +
377
+ // StatusBar + HintBar. The Dock alone can grow up to ~12 rows in
378
+ // team-panel mode (Phase 232 collapsed all chrome surfaces but
379
+ // didn't bound their height); err high so the chrome never gets
380
+ // pushed off-screen. If stdout has no rows (ink-testing-library
381
+ // and non-TTY paths) skip the cap entirely so the test render and
382
+ // any headless callers still see every group — production raw-mode
383
+ // TTYs always report rows.
384
+ const CHROME_RESERVE = 14;
385
+ const rawRows = stdout?.rows;
386
+ const availableRows = typeof rawRows === "number" && rawRows > 0
387
+ ? Math.max(6, rawRows - CHROME_RESERVE)
388
+ : Number.POSITIVE_INFINITY;
389
+ if (transcriptMode && scrollOffset === 0) {
390
+ const { committed: rawCommitted, live: rawLive } = splitTranscriptGroups(rawGroups, streaming);
391
+ const committed = verbose
392
+ ? rawCommitted
393
+ : collapseLightweightBatches(rawCommitted);
394
+ const liveGroups = verbose ? rawLive : collapseLightweightBatches(rawLive);
395
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Static, { items: committed, children: (g, i) => (_jsx(Box, { flexDirection: "column", marginTop: i > 0 ? 1 : 0, children: _jsx(GroupRow, { group: g, thinkVisible: thinkVisible, reasoningExpanded: reasoningExpanded, liveCursor: false, verbose: verbose }) }, i)) }, transcriptResetKey), liveGroups.map((g, i) => {
396
+ const absoluteIndex = committed.length + i;
397
+ const isLast = i === liveGroups.length - 1;
398
+ const live = showLiveCursor &&
399
+ isLast &&
400
+ streaming &&
401
+ (g.kind === "text" || g.kind === "thinking");
402
+ return (_jsx(Box, { flexDirection: "column", marginTop: absoluteIndex > 0 ? 1 : 0, children: _jsx(GroupRow, { group: g, thinkVisible: thinkVisible, reasoningExpanded: reasoningExpanded, liveCursor: live, verbose: verbose }) }, `live-${i}`));
403
+ })] }));
404
+ }
405
+ // Phase 310: the collapse pass is only needed for the windowed path —
406
+ // the transcript path above returns before this, having collapsed its
407
+ // own committed/live split. Computing it here (instead of unconditionally
408
+ // up top) saves an O(groups) scan + allocation on every transcript-mode
409
+ // repaint, which is the default UX.
410
+ const allGroups = verbose ? rawGroups : collapseLightweightBatches(rawGroups);
411
+ // Anchor the window: when offset is 0, the latest group is the
412
+ // visual bottom; positive offset slides the bottom back through
413
+ // history. Clamp so we never produce a negative range and so the
414
+ // user can't scroll past the very first group.
415
+ const total = allGroups.length;
416
+ const maxOffset = Math.max(0, total - 1);
417
+ const clampedOffset = Math.max(0, Math.min(scrollOffset, maxOffset));
418
+ const end = total - clampedOffset;
419
+ // Walk backwards from the anchor, accumulating estimated rows + 1
420
+ // for the inter-group marginTop. Always include at least one group
421
+ // even if a huge text/thinking block alone exceeds the budget —
422
+ // partial-group truncation is more trouble than it's worth, and a
423
+ // single group overflowing is rare in practice.
424
+ let height = 0;
425
+ let start = end;
426
+ for (let i = end - 1; i >= 0; i--) {
427
+ const h = estimateGroupHeight(allGroups[i]);
428
+ if (start < end && height + h + 1 > availableRows)
429
+ break;
430
+ height += h + (start < end ? 1 : 0);
431
+ start = i;
432
+ }
433
+ const visible = allGroups.slice(start, end);
434
+ return (_jsx(Box, { flexDirection: "column", children: visible.map((g, i) => {
435
+ const isLast = i === visible.length - 1 && clampedOffset === 0;
436
+ const live = showLiveCursor &&
437
+ isLast &&
438
+ streaming &&
439
+ (g.kind === "text" || g.kind === "thinking");
440
+ return (_jsx(Box, { flexDirection: "column", marginTop: i > 0 ? 1 : 0, children: _jsx(GroupRow, { group: g, thinkVisible: thinkVisible, reasoningExpanded: reasoningExpanded, liveCursor: live, verbose: verbose }) }, i));
441
+ }) }));
442
+ }
443
+ // Phase 148: memoize so App re-renders driven by the spinner tick, the
444
+ // team-status panel tick, status-bar updates, or the streaming
445
+ // char-counter do NOT re-render (and re-group) the whole log. EventLog
446
+ // now only re-renders when its actual props change (events / flags),
447
+ // which — with batched event appends — kills the in-place repaint
448
+ // flicker during streaming.
449
+ export const EventLog = memo(EventLogImpl);
450
+ //# sourceMappingURL=EventLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventLog.js","sourceRoot":"","sources":["../../../src/ui/components/EventLog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { FileSuggestion } from "../fileMentions.js";
2
+ interface Props {
3
+ items: FileSuggestion[];
4
+ selectedIdx: number;
5
+ }
6
+ export declare function FileSuggest({ items, selectedIdx }: Props): import("react/jsx-runtime").JSX.Element | null;
7
+ export {};
8
+ //# sourceMappingURL=FileSuggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSuggest.d.ts","sourceRoot":"","sources":["../../../src/ui/components/FileSuggest.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,UAAU,KAAK;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,kDA+BxD"}
@@ -0,0 +1,19 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ // Phase 64: popup that lists @file completion candidates.
3
+ //
4
+ // CommandInput drives this — it computes the active mention via
5
+ // activeMention(), runs scanDir() for the current candidate set, and
6
+ // renders <FileSuggest> when the result is non-empty. Selection is
7
+ // owned by CommandInput; this component only renders.
8
+ import { Box, Text } from "ink";
9
+ import { theme } from "../theme.js";
10
+ export function FileSuggest({ items, selectedIdx }) {
11
+ if (items.length === 0)
12
+ return null;
13
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { children: _jsxs(Text, { color: theme.prompt.suggestionsLabelColor, children: [" ", "@ files \u2014 \u2191/\u2193 \u00B7 Tab accept \u00B7 Esc close"] }) }), items.map((it, i) => (_jsx(Box, { children: _jsxs(Text, { color: i === selectedIdx
14
+ ? theme.picker.selectedColor
15
+ : it.isDir
16
+ ? theme.prompt.suggestionColor
17
+ : theme.status.valueColor, backgroundColor: i === selectedIdx ? theme.picker.selectedBg : undefined, bold: i === selectedIdx, children: [i === selectedIdx ? ` ${theme.picker.pointer} ` : " ", it.display] }) }, it.display)))] }));
18
+ }
19
+ //# sourceMappingURL=FileSuggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSuggest.js","sourceRoot":"","sources":["../../../src/ui/components/FileSuggest.tsx"],"names":[],"mappings":";AAAA,0DAA0D;AAC1D,EAAE;AACF,gEAAgE;AAChE,qEAAqE;AACrE,mEAAmE;AACnE,sDAAsD;AAEtD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOpC,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAS;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,qBAAqB,aAC5C,IAAI,uEACA,GACH,EACL,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CACpB,KAAC,GAAG,cACF,MAAC,IAAI,IACH,KAAK,EACH,CAAC,KAAK,WAAW;wBACf,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa;wBAC5B,CAAC,CAAC,EAAE,CAAC,KAAK;4BACR,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe;4BAC9B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAE/B,eAAe,EACb,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAEzD,IAAI,EAAE,CAAC,KAAK,WAAW,aAEtB,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EACzD,EAAE,CAAC,OAAO,IACN,IAhBC,EAAE,CAAC,OAAO,CAiBd,CACP,CAAC,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface HRuleSegment {
2
+ /** Text rendered as-is unless `spinner` is true, in which case the
3
+ * text is treated as a placeholder replaced by the current
4
+ * animation frame. */
5
+ text: string;
6
+ color?: string;
7
+ bold?: boolean;
8
+ /** When true, this segment's `text` is overridden every tick with
9
+ * the next frame from `theme.spinner.frames`. Triggers HRule's
10
+ * local interval; without any spinner segments the interval
11
+ * stays parked. */
12
+ spinner?: boolean;
13
+ }
14
+ export interface HRuleProps {
15
+ /** Single-color chip body — kept for the existing `ctx` warning
16
+ * caller and unit tests that pass plain text. New callers should
17
+ * prefer `rightSegments` for per-segment styling. */
18
+ rightLabel?: string;
19
+ rightLabelColor?: string;
20
+ rightLabelBg?: string;
21
+ /** Multi-segment chip body. Each segment renders as its own `<Text>`
22
+ * with optional color/bold. Segments are joined into the chip
23
+ * with no separators (caller decides). */
24
+ rightSegments?: HRuleSegment[];
25
+ }
26
+ export declare function HRule({ rightLabel, rightLabelColor, rightLabelBg, rightSegments, }?: HRuleProps): import("react/jsx-runtime").JSX.Element;
27
+ //# sourceMappingURL=HRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HRule.d.ts","sourceRoot":"","sources":["../../../src/ui/components/HRule.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,YAAY;IAC3B;;2BAEuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;wBAGoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB;;0DAEsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;+CAE2C;IAC3C,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC;AAQD,wBAAgB,KAAK,CAAC,EACpB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,aAAa,GACd,GAAE,UAAe,2CAuFjB"}
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Phase 67: horizontal rule.
3
+ //
4
+ // A thin "──────" line used as a divider between the event log, the
5
+ // command input, and the status bar — replacing the bordered boxes
6
+ // that didn't align cleanly with wrapped fields.
7
+ //
8
+ // Phase 190: optional right-aligned chip embedded in the rule so the
9
+ // caller can park a status indicator on the divider (e.g. the ctx
10
+ // warning) without it pretending to be a chat message.
11
+ //
12
+ // Phase 230: chip extended to multi-segment with per-segment color +
13
+ // optional animated spinner glyph. Used by the tab strip — active tab
14
+ // in green, running tabs cycle a spinner glyph, ready tabs marked
15
+ // `▒`, asking tabs `?`. The animation interval lives inside HRule so
16
+ // only this component re-renders on each tick, not the whole App.
17
+ import { useEffect, useState } from "react";
18
+ import { Box, Text, useStdout } from "ink";
19
+ import { theme } from "../theme.js";
20
+ function visibleLength(segments) {
21
+ let n = 0;
22
+ for (const s of segments)
23
+ n += [...s.text].length;
24
+ return n;
25
+ }
26
+ export function HRule({ rightLabel, rightLabelColor, rightLabelBg, rightSegments, } = {}) {
27
+ const { stdout } = useStdout();
28
+ const cols = stdout?.columns ?? 80;
29
+ const w = Math.max(8, Math.min(cols, 200));
30
+ const rule = theme.prompt.rule;
31
+ const ruleColor = theme.prompt.ruleColor;
32
+ // Phase 230: spinner frame state, ticking only when at least one
33
+ // segment is animated. Idle HRule never starts the interval.
34
+ // Phase 242 (audit): the dep array used to be `[anyAnimated.current]`
35
+ // — a ref read. React reads refs during the render that registered
36
+ // the effect, but ref mutations don't trigger re-renders, and the
37
+ // value captured in the dep can be stale relative to the body's
38
+ // closure read. Refactored to a derived boolean computed each
39
+ // render so React's effect-comparison is unambiguous.
40
+ const [frame, setFrame] = useState(0);
41
+ const hasSpinner = !!rightSegments?.some((s) => s.spinner);
42
+ useEffect(() => {
43
+ if (!hasSpinner)
44
+ return;
45
+ const t = setInterval(() => setFrame((f) => (f + 1) % theme.spinner.frames.length), theme.spinner.intervalMs);
46
+ // unref so a stray running tab can't keep omg alive past /quit
47
+ t.unref?.();
48
+ return () => clearInterval(t);
49
+ }, [hasSpinner]);
50
+ // Compose segments if provided; otherwise wrap the legacy
51
+ // rightLabel string into a single segment.
52
+ const segments = rightSegments
53
+ ? rightSegments
54
+ : rightLabel
55
+ ? [{ text: rightLabel, color: rightLabelColor }]
56
+ : null;
57
+ if (!segments) {
58
+ return (_jsx(Box, { children: _jsx(Text, { color: ruleColor, children: rule.repeat(w) }) }));
59
+ }
60
+ // Phase 207: chip body gets a single-space pad on each side so the
61
+ // tint reads as a block, not a tight bracket clamp.
62
+ const chipWidth = visibleLength(segments) + 4; // " [ ... ] " (2 inner pads + 2 brackets)
63
+ const tailLen = 3;
64
+ // 2 spaces of padding around the chip + the trailing dash run.
65
+ const headLen = Math.max(2, w - chipWidth - tailLen - 2);
66
+ const bg = rightLabelBg;
67
+ const chipFg = theme.prompt.chipFg;
68
+ return (_jsxs(Box, { children: [_jsx(Text, { color: ruleColor, children: rule.repeat(headLen) }), _jsx(Text, { color: ruleColor, children: " " }), _jsx(Text, { color: chipFg, backgroundColor: bg, children: "[" }), _jsx(Text, { color: chipFg, backgroundColor: bg, children: " " }), segments.map((seg, i) => {
69
+ const txt = seg.spinner
70
+ ? theme.spinner.frames[frame % theme.spinner.frames.length]
71
+ : seg.text;
72
+ return (_jsx(Text, { color: seg.color ?? chipFg, backgroundColor: bg, bold: seg.bold, children: txt }, i));
73
+ }), _jsx(Text, { color: chipFg, backgroundColor: bg, children: " " }), _jsx(Text, { color: chipFg, backgroundColor: bg, children: "]" }), _jsx(Text, { color: ruleColor, children: " " + rule.repeat(tailLen) })] }));
74
+ }
75
+ //# sourceMappingURL=HRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HRule.js","sourceRoot":"","sources":["../../../src/ui/components/HRule.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function HintBar(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=HintBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HintBar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/HintBar.tsx"],"names":[],"mappings":"AAsBA,wBAAgB,OAAO,4CAYtB"}