@calliopelabs/cli 2.3.0 → 3.0.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 (538) hide show
  1. package/README.md +45 -644
  2. package/dist/acp.d.ts +78 -0
  3. package/dist/acp.d.ts.map +1 -0
  4. package/dist/acp.js +572 -0
  5. package/dist/acp.js.map +1 -0
  6. package/dist/auto-compressor.d.ts.map +1 -1
  7. package/dist/auto-compressor.js +9 -5
  8. package/dist/auto-compressor.js.map +1 -1
  9. package/dist/bin.d.ts +9 -5
  10. package/dist/bin.d.ts.map +1 -1
  11. package/dist/bin.js +108 -76
  12. package/dist/bin.js.map +1 -1
  13. package/dist/budget.d.ts +64 -0
  14. package/dist/budget.d.ts.map +1 -0
  15. package/dist/budget.js +157 -0
  16. package/dist/budget.js.map +1 -0
  17. package/dist/checkpoint.d.ts +63 -30
  18. package/dist/checkpoint.d.ts.map +1 -1
  19. package/dist/checkpoint.js +249 -150
  20. package/dist/checkpoint.js.map +1 -1
  21. package/dist/circuit-breaker/breaker.js.map +1 -1
  22. package/dist/config.d.ts +86 -81
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +237 -305
  25. package/dist/config.js.map +1 -1
  26. package/dist/cost.d.ts +114 -0
  27. package/dist/cost.d.ts.map +1 -0
  28. package/dist/cost.js +499 -0
  29. package/dist/cost.js.map +1 -0
  30. package/dist/diff.d.ts.map +1 -1
  31. package/dist/diff.js +53 -11
  32. package/dist/diff.js.map +1 -1
  33. package/dist/errors.d.ts.map +1 -1
  34. package/dist/errors.js +33 -6
  35. package/dist/errors.js.map +1 -1
  36. package/dist/files.js.map +1 -1
  37. package/dist/fleet.d.ts +30 -0
  38. package/dist/fleet.d.ts.map +1 -0
  39. package/dist/fleet.js +86 -0
  40. package/dist/fleet.js.map +1 -0
  41. package/dist/fuzzy-search.d.ts.map +1 -1
  42. package/dist/fuzzy-search.js +2 -1
  43. package/dist/fuzzy-search.js.map +1 -1
  44. package/dist/git-status.js.map +1 -1
  45. package/dist/headless.d.ts +1 -2
  46. package/dist/headless.d.ts.map +1 -1
  47. package/dist/headless.js +222 -26
  48. package/dist/headless.js.map +1 -1
  49. package/dist/hooks.d.ts +8 -2
  50. package/dist/hooks.d.ts.map +1 -1
  51. package/dist/hooks.js +97 -11
  52. package/dist/hooks.js.map +1 -1
  53. package/dist/hud/api.d.ts +3 -18
  54. package/dist/hud/api.d.ts.map +1 -1
  55. package/dist/hud/api.js +9 -352
  56. package/dist/hud/api.js.map +1 -1
  57. package/dist/hud/palettes.d.ts.map +1 -1
  58. package/dist/hud/palettes.js +0 -180
  59. package/dist/hud/palettes.js.map +1 -1
  60. package/dist/hud/skins.d.ts.map +1 -1
  61. package/dist/hud/skins.js +0 -263
  62. package/dist/hud/skins.js.map +1 -1
  63. package/dist/hud/types.d.ts +2 -5
  64. package/dist/hud/types.d.ts.map +1 -1
  65. package/dist/index.d.ts +1 -4
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +1 -4
  68. package/dist/index.js.map +1 -1
  69. package/dist/iteration-ledger.d.ts.map +1 -1
  70. package/dist/iteration-ledger.js +3 -2
  71. package/dist/iteration-ledger.js.map +1 -1
  72. package/dist/local-model.d.ts +150 -0
  73. package/dist/local-model.d.ts.map +1 -0
  74. package/dist/local-model.js +408 -0
  75. package/dist/local-model.js.map +1 -0
  76. package/dist/markdown.d.ts.map +1 -1
  77. package/dist/markdown.js +32 -10
  78. package/dist/markdown.js.map +1 -1
  79. package/dist/mcp.d.ts +35 -5
  80. package/dist/mcp.d.ts.map +1 -1
  81. package/dist/mcp.js +190 -13
  82. package/dist/mcp.js.map +1 -1
  83. package/dist/memory.d.ts.map +1 -1
  84. package/dist/memory.js +6 -4
  85. package/dist/memory.js.map +1 -1
  86. package/dist/model-detection.d.ts +14 -1
  87. package/dist/model-detection.d.ts.map +1 -1
  88. package/dist/model-detection.js +308 -115
  89. package/dist/model-detection.js.map +1 -1
  90. package/dist/parallel-tools.d.ts +9 -1
  91. package/dist/parallel-tools.d.ts.map +1 -1
  92. package/dist/parallel-tools.js +6 -5
  93. package/dist/parallel-tools.js.map +1 -1
  94. package/dist/plugins.d.ts +68 -0
  95. package/dist/plugins.d.ts.map +1 -1
  96. package/dist/plugins.js +201 -3
  97. package/dist/plugins.js.map +1 -1
  98. package/dist/policy.d.ts +43 -0
  99. package/dist/policy.d.ts.map +1 -0
  100. package/dist/policy.js +139 -0
  101. package/dist/policy.js.map +1 -0
  102. package/dist/project-config.d.ts +1 -2
  103. package/dist/project-config.d.ts.map +1 -1
  104. package/dist/project-config.js +0 -3
  105. package/dist/project-config.js.map +1 -1
  106. package/dist/providers/anthropic.d.ts.map +1 -1
  107. package/dist/providers/anthropic.js +36 -2
  108. package/dist/providers/anthropic.js.map +1 -1
  109. package/dist/providers/bedrock.d.ts.map +1 -1
  110. package/dist/providers/bedrock.js +83 -22
  111. package/dist/providers/bedrock.js.map +1 -1
  112. package/dist/providers/compat.d.ts +21 -0
  113. package/dist/providers/compat.d.ts.map +1 -1
  114. package/dist/providers/compat.js +176 -6
  115. package/dist/providers/compat.js.map +1 -1
  116. package/dist/providers/google.js.map +1 -1
  117. package/dist/providers/index.d.ts +19 -4
  118. package/dist/providers/index.d.ts.map +1 -1
  119. package/dist/providers/index.js +62 -9
  120. package/dist/providers/index.js.map +1 -1
  121. package/dist/providers/ollama.d.ts +2 -2
  122. package/dist/providers/ollama.d.ts.map +1 -1
  123. package/dist/providers/ollama.js +26 -6
  124. package/dist/providers/ollama.js.map +1 -1
  125. package/dist/providers/openai.d.ts.map +1 -1
  126. package/dist/providers/openai.js +14 -10
  127. package/dist/providers/openai.js.map +1 -1
  128. package/dist/providers/types.d.ts +8 -0
  129. package/dist/providers/types.d.ts.map +1 -1
  130. package/dist/providers/types.js +19 -10
  131. package/dist/providers/types.js.map +1 -1
  132. package/dist/replay.d.ts +37 -0
  133. package/dist/replay.d.ts.map +1 -0
  134. package/dist/replay.js +168 -0
  135. package/dist/replay.js.map +1 -0
  136. package/dist/risk.d.ts.map +1 -1
  137. package/dist/risk.js +15 -5
  138. package/dist/risk.js.map +1 -1
  139. package/dist/router.d.ts +133 -0
  140. package/dist/router.d.ts.map +1 -0
  141. package/dist/{model-router.js → router.js} +336 -10
  142. package/dist/router.js.map +1 -0
  143. package/dist/runlog.d.ts +185 -0
  144. package/dist/runlog.d.ts.map +1 -0
  145. package/dist/runlog.js +398 -0
  146. package/dist/runlog.js.map +1 -0
  147. package/dist/{sandbox.d.ts → sandbox/docker.d.ts} +1 -1
  148. package/dist/sandbox/docker.d.ts.map +1 -0
  149. package/dist/{sandbox.js → sandbox/docker.js} +1 -1
  150. package/dist/sandbox/docker.js.map +1 -0
  151. package/dist/sandbox/index.d.ts +36 -0
  152. package/dist/sandbox/index.d.ts.map +1 -0
  153. package/dist/sandbox/index.js +62 -0
  154. package/dist/sandbox/index.js.map +1 -0
  155. package/dist/{sandbox-native.d.ts → sandbox/native.d.ts} +2 -1
  156. package/dist/sandbox/native.d.ts.map +1 -0
  157. package/dist/{sandbox-native.js → sandbox/native.js} +38 -6
  158. package/dist/sandbox/native.js.map +1 -0
  159. package/dist/scope.d.ts +10 -0
  160. package/dist/scope.d.ts.map +1 -1
  161. package/dist/scope.js +76 -16
  162. package/dist/scope.js.map +1 -1
  163. package/dist/scuttlebot/client.d.ts +83 -0
  164. package/dist/scuttlebot/client.d.ts.map +1 -0
  165. package/dist/scuttlebot/client.js +350 -0
  166. package/dist/scuttlebot/client.js.map +1 -0
  167. package/dist/scuttlebot/config.d.ts +28 -0
  168. package/dist/scuttlebot/config.d.ts.map +1 -0
  169. package/dist/scuttlebot/config.js +91 -0
  170. package/dist/scuttlebot/config.js.map +1 -0
  171. package/dist/scuttlebot/http-client.d.ts +63 -0
  172. package/dist/scuttlebot/http-client.d.ts.map +1 -0
  173. package/dist/scuttlebot/http-client.js +124 -0
  174. package/dist/scuttlebot/http-client.js.map +1 -0
  175. package/dist/scuttlebot/index.d.ts +13 -0
  176. package/dist/scuttlebot/index.d.ts.map +1 -0
  177. package/dist/scuttlebot/index.js +10 -0
  178. package/dist/scuttlebot/index.js.map +1 -0
  179. package/dist/scuttlebot/irc-client.d.ts +124 -0
  180. package/dist/scuttlebot/irc-client.d.ts.map +1 -0
  181. package/dist/scuttlebot/irc-client.js +599 -0
  182. package/dist/scuttlebot/irc-client.js.map +1 -0
  183. package/dist/setup.d.ts.map +1 -1
  184. package/dist/setup.js +22 -54
  185. package/dist/setup.js.map +1 -1
  186. package/dist/skills.d.ts +58 -0
  187. package/dist/skills.d.ts.map +1 -1
  188. package/dist/skills.js +186 -16
  189. package/dist/skills.js.map +1 -1
  190. package/dist/storage.d.ts +0 -4
  191. package/dist/storage.d.ts.map +1 -1
  192. package/dist/storage.js +87 -8
  193. package/dist/storage.js.map +1 -1
  194. package/dist/streaming.d.ts +25 -0
  195. package/dist/streaming.d.ts.map +1 -1
  196. package/dist/streaming.js +59 -0
  197. package/dist/streaming.js.map +1 -1
  198. package/dist/styles.d.ts +6 -0
  199. package/dist/styles.d.ts.map +1 -1
  200. package/dist/styles.js +11 -0
  201. package/dist/styles.js.map +1 -1
  202. package/dist/summarization.js.map +1 -1
  203. package/dist/terminal-image.js +1 -1
  204. package/dist/terminal-image.js.map +1 -1
  205. package/dist/themes.d.ts +5 -4
  206. package/dist/themes.d.ts.map +1 -1
  207. package/dist/themes.js +35 -90
  208. package/dist/themes.js.map +1 -1
  209. package/dist/tools.d.ts +27 -3
  210. package/dist/tools.d.ts.map +1 -1
  211. package/dist/tools.js +352 -209
  212. package/dist/tools.js.map +1 -1
  213. package/dist/trust.d.ts +16 -3
  214. package/dist/trust.d.ts.map +1 -1
  215. package/dist/trust.js +23 -4
  216. package/dist/trust.js.map +1 -1
  217. package/dist/types.d.ts +4 -3
  218. package/dist/types.d.ts.map +1 -1
  219. package/dist/types.js +34 -44
  220. package/dist/types.js.map +1 -1
  221. package/dist/ui/agent.d.ts +4 -7
  222. package/dist/ui/agent.d.ts.map +1 -1
  223. package/dist/ui/agent.js +354 -73
  224. package/dist/ui/agent.js.map +1 -1
  225. package/dist/ui/animations.d.ts +37 -0
  226. package/dist/ui/animations.d.ts.map +1 -0
  227. package/dist/ui/animations.js +227 -0
  228. package/dist/ui/animations.js.map +1 -0
  229. package/dist/ui/chat-input-keys.d.ts +42 -0
  230. package/dist/ui/chat-input-keys.d.ts.map +1 -0
  231. package/dist/ui/chat-input-keys.js +360 -0
  232. package/dist/ui/chat-input-keys.js.map +1 -0
  233. package/dist/ui/chat-input.d.ts +5 -2
  234. package/dist/ui/chat-input.d.ts.map +1 -1
  235. package/dist/ui/chat-input.js +54 -308
  236. package/dist/ui/chat-input.js.map +1 -1
  237. package/dist/ui/commands.d.ts +15 -45
  238. package/dist/ui/commands.d.ts.map +1 -1
  239. package/dist/ui/commands.js +461 -2636
  240. package/dist/ui/commands.js.map +1 -1
  241. package/dist/ui/completions.d.ts +1 -0
  242. package/dist/ui/completions.d.ts.map +1 -1
  243. package/dist/ui/completions.js +36 -107
  244. package/dist/ui/completions.js.map +1 -1
  245. package/dist/ui/components.d.ts +14 -6
  246. package/dist/ui/components.d.ts.map +1 -1
  247. package/dist/ui/components.js +17 -226
  248. package/dist/ui/components.js.map +1 -1
  249. package/dist/ui/context.js +6 -6
  250. package/dist/ui/context.js.map +1 -1
  251. package/dist/ui/debug-log.d.ts +11 -0
  252. package/dist/ui/debug-log.d.ts.map +1 -0
  253. package/dist/ui/debug-log.js +21 -0
  254. package/dist/ui/debug-log.js.map +1 -0
  255. package/dist/ui/error-boundary.d.ts.map +1 -1
  256. package/dist/ui/error-boundary.js.map +1 -1
  257. package/dist/ui/frame.d.ts.map +1 -1
  258. package/dist/ui/frame.js +1 -3
  259. package/dist/ui/frame.js.map +1 -1
  260. package/dist/ui/index.d.ts +11 -3
  261. package/dist/ui/index.d.ts.map +1 -1
  262. package/dist/ui/index.js +46 -887
  263. package/dist/ui/index.js.map +1 -1
  264. package/dist/ui/input-utils.d.ts +20 -0
  265. package/dist/ui/input-utils.d.ts.map +1 -0
  266. package/dist/ui/input-utils.js +35 -0
  267. package/dist/ui/input-utils.js.map +1 -0
  268. package/dist/ui/messages.d.ts +8 -7
  269. package/dist/ui/messages.d.ts.map +1 -1
  270. package/dist/ui/messages.js +51 -35
  271. package/dist/ui/messages.js.map +1 -1
  272. package/dist/ui/modals/index.d.ts +11 -0
  273. package/dist/ui/modals/index.d.ts.map +1 -0
  274. package/dist/ui/modals/index.js +10 -0
  275. package/dist/ui/modals/index.js.map +1 -0
  276. package/dist/ui/{modals.d.ts → modals/prompts.d.ts} +5 -20
  277. package/dist/ui/modals/prompts.d.ts.map +1 -0
  278. package/dist/ui/{modals.js → modals/prompts.js} +14 -94
  279. package/dist/ui/modals/prompts.js.map +1 -0
  280. package/dist/ui/modals/selectors.d.ts +33 -0
  281. package/dist/ui/modals/selectors.d.ts.map +1 -0
  282. package/dist/ui/modals/selectors.js +111 -0
  283. package/dist/ui/modals/selectors.js.map +1 -0
  284. package/dist/ui/modals/setup.d.ts +17 -0
  285. package/dist/ui/modals/setup.d.ts.map +1 -0
  286. package/dist/ui/modals/setup.js +51 -0
  287. package/dist/ui/modals/setup.js.map +1 -0
  288. package/dist/ui/regions/input-region.d.ts +40 -0
  289. package/dist/ui/regions/input-region.d.ts.map +1 -0
  290. package/dist/ui/regions/input-region.js +116 -0
  291. package/dist/ui/regions/input-region.js.map +1 -0
  292. package/dist/ui/regions/modal-host.d.ts +41 -0
  293. package/dist/ui/regions/modal-host.d.ts.map +1 -0
  294. package/dist/ui/regions/modal-host.js +51 -0
  295. package/dist/ui/regions/modal-host.js.map +1 -0
  296. package/dist/ui/regions/render-probe.d.ts +22 -0
  297. package/dist/ui/regions/render-probe.d.ts.map +1 -0
  298. package/dist/ui/regions/render-probe.js +45 -0
  299. package/dist/ui/regions/render-probe.js.map +1 -0
  300. package/dist/ui/regions/static-scrollback.d.ts +39 -0
  301. package/dist/ui/regions/static-scrollback.d.ts.map +1 -0
  302. package/dist/ui/regions/static-scrollback.js +68 -0
  303. package/dist/ui/regions/static-scrollback.js.map +1 -0
  304. package/dist/ui/regions/status-region.d.ts +24 -0
  305. package/dist/ui/regions/status-region.d.ts.map +1 -0
  306. package/dist/ui/regions/status-region.js +17 -0
  307. package/dist/ui/regions/status-region.js.map +1 -0
  308. package/dist/ui/regions/transcript-region.d.ts +41 -0
  309. package/dist/ui/regions/transcript-region.d.ts.map +1 -0
  310. package/dist/ui/regions/transcript-region.js +52 -0
  311. package/dist/ui/regions/transcript-region.js.map +1 -0
  312. package/dist/ui/self-restart.d.ts +9 -0
  313. package/dist/ui/self-restart.d.ts.map +1 -0
  314. package/dist/ui/self-restart.js +24 -0
  315. package/dist/ui/self-restart.js.map +1 -0
  316. package/dist/ui/state/use-chat-controller.d.ts +23 -0
  317. package/dist/ui/state/use-chat-controller.d.ts.map +1 -0
  318. package/dist/ui/state/use-chat-controller.js +643 -0
  319. package/dist/ui/state/use-chat-controller.js.map +1 -0
  320. package/dist/ui/state/use-loop-state.d.ts +23 -0
  321. package/dist/ui/state/use-loop-state.d.ts.map +1 -0
  322. package/dist/ui/state/use-loop-state.js +39 -0
  323. package/dist/ui/state/use-loop-state.js.map +1 -0
  324. package/dist/ui/state/use-modal-state.d.ts +52 -0
  325. package/dist/ui/state/use-modal-state.d.ts.map +1 -0
  326. package/dist/ui/state/use-modal-state.js +44 -0
  327. package/dist/ui/state/use-modal-state.js.map +1 -0
  328. package/dist/ui/state/use-model-state.d.ts +29 -0
  329. package/dist/ui/state/use-model-state.d.ts.map +1 -0
  330. package/dist/ui/state/use-model-state.js +47 -0
  331. package/dist/ui/state/use-model-state.js.map +1 -0
  332. package/dist/ui/state/use-processing-state.d.ts +24 -0
  333. package/dist/ui/state/use-processing-state.d.ts.map +1 -0
  334. package/dist/ui/state/use-processing-state.js +46 -0
  335. package/dist/ui/state/use-processing-state.js.map +1 -0
  336. package/dist/ui/state/use-queue-state.d.ts +19 -0
  337. package/dist/ui/state/use-queue-state.d.ts.map +1 -0
  338. package/dist/ui/state/use-queue-state.js +30 -0
  339. package/dist/ui/state/use-queue-state.js.map +1 -0
  340. package/dist/ui/state/use-session-init.d.ts +22 -0
  341. package/dist/ui/state/use-session-init.d.ts.map +1 -0
  342. package/dist/ui/state/use-session-init.js +77 -0
  343. package/dist/ui/state/use-session-init.js.map +1 -0
  344. package/dist/ui/state/use-session-stats.d.ts +16 -0
  345. package/dist/ui/state/use-session-stats.d.ts.map +1 -0
  346. package/dist/ui/state/use-session-stats.js +18 -0
  347. package/dist/ui/state/use-session-stats.js.map +1 -0
  348. package/dist/ui/state/use-terminal-width.d.ts +8 -0
  349. package/dist/ui/state/use-terminal-width.d.ts.map +1 -0
  350. package/dist/ui/state/use-terminal-width.js +22 -0
  351. package/dist/ui/state/use-terminal-width.js.map +1 -0
  352. package/dist/ui/state/use-transcript-state.d.ts +21 -0
  353. package/dist/ui/state/use-transcript-state.d.ts.map +1 -0
  354. package/dist/ui/state/use-transcript-state.js +49 -0
  355. package/dist/ui/state/use-transcript-state.js.map +1 -0
  356. package/dist/ui/status-bar.d.ts +4 -1
  357. package/dist/ui/status-bar.d.ts.map +1 -1
  358. package/dist/ui/status-bar.js +13 -3
  359. package/dist/ui/status-bar.js.map +1 -1
  360. package/dist/ui/types.d.ts +3 -0
  361. package/dist/ui/types.d.ts.map +1 -1
  362. package/dist/version-check.d.ts.map +1 -1
  363. package/dist/version-check.js +10 -0
  364. package/dist/version-check.js.map +1 -1
  365. package/package.json +12 -8
  366. package/dist/agents/agent-config-loader.d.ts +0 -60
  367. package/dist/agents/agent-config-loader.d.ts.map +0 -1
  368. package/dist/agents/agent-config-loader.js +0 -402
  369. package/dist/agents/agent-config-loader.js.map +0 -1
  370. package/dist/agents/agent-config-presets.d.ts +0 -10
  371. package/dist/agents/agent-config-presets.d.ts.map +0 -1
  372. package/dist/agents/agent-config-presets.js +0 -940
  373. package/dist/agents/agent-config-presets.js.map +0 -1
  374. package/dist/agents/agent-config-types.d.ts +0 -145
  375. package/dist/agents/agent-config-types.d.ts.map +0 -1
  376. package/dist/agents/agent-config-types.js +0 -12
  377. package/dist/agents/agent-config-types.js.map +0 -1
  378. package/dist/agents/agent-detection.d.ts +0 -35
  379. package/dist/agents/agent-detection.d.ts.map +0 -1
  380. package/dist/agents/agent-detection.js +0 -110
  381. package/dist/agents/agent-detection.js.map +0 -1
  382. package/dist/agents/aggregator.d.ts +0 -19
  383. package/dist/agents/aggregator.d.ts.map +0 -1
  384. package/dist/agents/aggregator.js +0 -141
  385. package/dist/agents/aggregator.js.map +0 -1
  386. package/dist/agents/cli-backend.d.ts +0 -32
  387. package/dist/agents/cli-backend.d.ts.map +0 -1
  388. package/dist/agents/cli-backend.js +0 -271
  389. package/dist/agents/cli-backend.js.map +0 -1
  390. package/dist/agents/council-types.d.ts +0 -115
  391. package/dist/agents/council-types.d.ts.map +0 -1
  392. package/dist/agents/council-types.js +0 -81
  393. package/dist/agents/council-types.js.map +0 -1
  394. package/dist/agents/council.d.ts +0 -112
  395. package/dist/agents/council.d.ts.map +0 -1
  396. package/dist/agents/council.js +0 -722
  397. package/dist/agents/council.js.map +0 -1
  398. package/dist/agents/decomposer.d.ts +0 -33
  399. package/dist/agents/decomposer.d.ts.map +0 -1
  400. package/dist/agents/decomposer.js +0 -138
  401. package/dist/agents/decomposer.js.map +0 -1
  402. package/dist/agents/dynamic-tools.d.ts +0 -52
  403. package/dist/agents/dynamic-tools.d.ts.map +0 -1
  404. package/dist/agents/dynamic-tools.js +0 -395
  405. package/dist/agents/dynamic-tools.js.map +0 -1
  406. package/dist/agents/index.d.ts +0 -29
  407. package/dist/agents/index.d.ts.map +0 -1
  408. package/dist/agents/index.js +0 -29
  409. package/dist/agents/index.js.map +0 -1
  410. package/dist/agents/installer.d.ts +0 -39
  411. package/dist/agents/installer.d.ts.map +0 -1
  412. package/dist/agents/installer.js +0 -205
  413. package/dist/agents/installer.js.map +0 -1
  414. package/dist/agents/orchestrator.d.ts +0 -106
  415. package/dist/agents/orchestrator.d.ts.map +0 -1
  416. package/dist/agents/orchestrator.js +0 -363
  417. package/dist/agents/orchestrator.js.map +0 -1
  418. package/dist/agents/sdk-backend.d.ts +0 -63
  419. package/dist/agents/sdk-backend.d.ts.map +0 -1
  420. package/dist/agents/sdk-backend.js +0 -489
  421. package/dist/agents/sdk-backend.js.map +0 -1
  422. package/dist/agents/swarm-types.d.ts +0 -84
  423. package/dist/agents/swarm-types.d.ts.map +0 -1
  424. package/dist/agents/swarm-types.js +0 -20
  425. package/dist/agents/swarm-types.js.map +0 -1
  426. package/dist/agents/swarm.d.ts +0 -79
  427. package/dist/agents/swarm.d.ts.map +0 -1
  428. package/dist/agents/swarm.js +0 -375
  429. package/dist/agents/swarm.js.map +0 -1
  430. package/dist/agents/tools.d.ts +0 -26
  431. package/dist/agents/tools.d.ts.map +0 -1
  432. package/dist/agents/tools.js +0 -776
  433. package/dist/agents/tools.js.map +0 -1
  434. package/dist/agents/types.d.ts +0 -108
  435. package/dist/agents/types.d.ts.map +0 -1
  436. package/dist/agents/types.js +0 -43
  437. package/dist/agents/types.js.map +0 -1
  438. package/dist/api-server.d.ts +0 -36
  439. package/dist/api-server.d.ts.map +0 -1
  440. package/dist/api-server.js +0 -255
  441. package/dist/api-server.js.map +0 -1
  442. package/dist/auto-checkpoint.d.ts +0 -35
  443. package/dist/auto-checkpoint.d.ts.map +0 -1
  444. package/dist/auto-checkpoint.js +0 -143
  445. package/dist/auto-checkpoint.js.map +0 -1
  446. package/dist/background-jobs.d.ts +0 -45
  447. package/dist/background-jobs.d.ts.map +0 -1
  448. package/dist/background-jobs.js +0 -127
  449. package/dist/background-jobs.js.map +0 -1
  450. package/dist/branching.d.ts +0 -56
  451. package/dist/branching.d.ts.map +0 -1
  452. package/dist/branching.js +0 -211
  453. package/dist/branching.js.map +0 -1
  454. package/dist/cli/agent.d.ts +0 -9
  455. package/dist/cli/agent.d.ts.map +0 -1
  456. package/dist/cli/agent.js +0 -314
  457. package/dist/cli/agent.js.map +0 -1
  458. package/dist/cli/commands.d.ts +0 -12
  459. package/dist/cli/commands.d.ts.map +0 -1
  460. package/dist/cli/commands.js +0 -943
  461. package/dist/cli/commands.js.map +0 -1
  462. package/dist/cli/index.d.ts +0 -8
  463. package/dist/cli/index.d.ts.map +0 -1
  464. package/dist/cli/index.js +0 -237
  465. package/dist/cli/index.js.map +0 -1
  466. package/dist/cli/types.d.ts +0 -33
  467. package/dist/cli/types.d.ts.map +0 -1
  468. package/dist/cli/types.js +0 -21
  469. package/dist/cli/types.js.map +0 -1
  470. package/dist/companions.d.ts +0 -54
  471. package/dist/companions.d.ts.map +0 -1
  472. package/dist/companions.js +0 -440
  473. package/dist/companions.js.map +0 -1
  474. package/dist/completion.d.ts +0 -75
  475. package/dist/completion.d.ts.map +0 -1
  476. package/dist/completion.js +0 -234
  477. package/dist/completion.js.map +0 -1
  478. package/dist/file-watcher.d.ts +0 -91
  479. package/dist/file-watcher.d.ts.map +0 -1
  480. package/dist/file-watcher.js +0 -269
  481. package/dist/file-watcher.js.map +0 -1
  482. package/dist/hud/theme-packs/api.d.ts +0 -51
  483. package/dist/hud/theme-packs/api.d.ts.map +0 -1
  484. package/dist/hud/theme-packs/api.js +0 -145
  485. package/dist/hud/theme-packs/api.js.map +0 -1
  486. package/dist/hud/theme-packs/index.d.ts +0 -18
  487. package/dist/hud/theme-packs/index.d.ts.map +0 -1
  488. package/dist/hud/theme-packs/index.js +0 -38
  489. package/dist/hud/theme-packs/index.js.map +0 -1
  490. package/dist/hud/theme-packs/types.d.ts +0 -29
  491. package/dist/hud/theme-packs/types.d.ts.map +0 -1
  492. package/dist/hud/theme-packs/types.js +0 -9
  493. package/dist/hud/theme-packs/types.js.map +0 -1
  494. package/dist/idle-eviction.d.ts +0 -34
  495. package/dist/idle-eviction.d.ts.map +0 -1
  496. package/dist/idle-eviction.js +0 -78
  497. package/dist/idle-eviction.js.map +0 -1
  498. package/dist/keyboard.d.ts +0 -57
  499. package/dist/keyboard.d.ts.map +0 -1
  500. package/dist/keyboard.js +0 -265
  501. package/dist/keyboard.js.map +0 -1
  502. package/dist/model-router.d.ts +0 -67
  503. package/dist/model-router.d.ts.map +0 -1
  504. package/dist/model-router.js.map +0 -1
  505. package/dist/providers/openai-compat-shims.d.ts +0 -31
  506. package/dist/providers/openai-compat-shims.d.ts.map +0 -1
  507. package/dist/providers/openai-compat-shims.js +0 -179
  508. package/dist/providers/openai-compat-shims.js.map +0 -1
  509. package/dist/sandbox-native.d.ts.map +0 -1
  510. package/dist/sandbox-native.js.map +0 -1
  511. package/dist/sandbox.d.ts.map +0 -1
  512. package/dist/sandbox.js.map +0 -1
  513. package/dist/session-timeout.d.ts +0 -31
  514. package/dist/session-timeout.d.ts.map +0 -1
  515. package/dist/session-timeout.js +0 -100
  516. package/dist/session-timeout.js.map +0 -1
  517. package/dist/smart-router.d.ts +0 -73
  518. package/dist/smart-router.d.ts.map +0 -1
  519. package/dist/smart-router.js +0 -332
  520. package/dist/smart-router.js.map +0 -1
  521. package/dist/terminal-recording.d.ts +0 -55
  522. package/dist/terminal-recording.d.ts.map +0 -1
  523. package/dist/terminal-recording.js +0 -182
  524. package/dist/terminal-recording.js.map +0 -1
  525. package/dist/tmux.d.ts +0 -35
  526. package/dist/tmux.d.ts.map +0 -1
  527. package/dist/tmux.js +0 -106
  528. package/dist/tmux.js.map +0 -1
  529. package/dist/ui/modals.d.ts.map +0 -1
  530. package/dist/ui/modals.js.map +0 -1
  531. package/dist/ui/pack-picker.d.ts +0 -12
  532. package/dist/ui/pack-picker.d.ts.map +0 -1
  533. package/dist/ui/pack-picker.js +0 -101
  534. package/dist/ui/pack-picker.js.map +0 -1
  535. package/dist/ui/theme-picker.d.ts +0 -24
  536. package/dist/ui/theme-picker.d.ts.map +0 -1
  537. package/dist/ui/theme-picker.js +0 -190
  538. package/dist/ui/theme-picker.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ /**
2
+ * UI region - modal host
3
+ *
4
+ * Renders whichever modal `modalMode` selects. Purely presentational: every bit
5
+ * of logic (session loading, provider config, upgrade) is supplied by the
6
+ * controller as a stable callback. Memoized so it stays put on keystrokes.
7
+ */
8
+ import React from 'react';
9
+ import type { ModelInfo } from '../../model-detection.js';
10
+ import type { SessionInfo } from '../types.js';
11
+ import type { ProviderEntry } from '../modals/index.js';
12
+ import type { ModalMode, PendingComplexPrompt, PreviousSessionInfo } from '../state/use-modal-state.js';
13
+ export interface ModalHostProps {
14
+ modalMode: ModalMode;
15
+ availableModels: ModelInfo[];
16
+ onModelSelect: (model: string) => void;
17
+ onModalCancel: () => void;
18
+ availableSessions: SessionInfo[];
19
+ onSessionSelect: (session: SessionInfo) => void;
20
+ onSessionDelete: (session: SessionInfo) => void;
21
+ latestVersion: string | null;
22
+ onUpgradeConfirm: () => void;
23
+ previousSession: PreviousSessionInfo | null;
24
+ onSessionResume: () => void;
25
+ onSessionResumeNew: () => void;
26
+ pendingComplexPrompt: PendingComplexPrompt | null;
27
+ onComplexityProceed: () => void;
28
+ onComplexityPlan: () => void;
29
+ onComplexityCancel: () => void;
30
+ onKeybindingsClose: () => void;
31
+ providerEntries: ProviderEntry[];
32
+ onProviderSelect: (entry: ProviderEntry) => void;
33
+ onProviderCancel: () => void;
34
+ pendingSetupProvider: ProviderEntry | null;
35
+ onApiKeySubmit: (value: string) => void;
36
+ onApiKeyCancel: () => void;
37
+ }
38
+ declare function ModalHostInner(props: ModalHostProps): import("react/jsx-runtime").JSX.Element | null;
39
+ export declare const ModalHost: React.MemoExoticComponent<typeof ModalHostInner>;
40
+ export {};
41
+ //# sourceMappingURL=modal-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal-host.d.ts","sourceRoot":"","sources":["../../../src/ui/regions/modal-host.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EACV,SAAS,EAAE,oBAAoB,EAAE,mBAAmB,EACrD,MAAM,6BAA6B,CAAC;AAGrC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IAErB,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,iBAAiB,EAAE,WAAW,EAAE,CAAC;IACjC,eAAe,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAChD,eAAe,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAEhD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAE7B,eAAe,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5C,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAE/B,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAE/B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAE/B,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAE7B,oBAAoB,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3C,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,cAAc,kDAgG5C;AAED,eAAO,MAAM,SAAS,kDAA6B,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * UI region - modal host
4
+ *
5
+ * Renders whichever modal `modalMode` selects. Purely presentational: every bit
6
+ * of logic (session loading, provider config, upgrade) is supplied by the
7
+ * controller as a stable callback. Memoized so it stays put on keystrokes.
8
+ */
9
+ import React from 'react';
10
+ import { getVersion } from '../../version-check.js';
11
+ import { ModelSelector, SessionSelector, UpgradePrompt, ComplexityWarning, SessionResumePrompt, KeybindingsModal, ProviderSelector, ApiKeySetup, } from '../modals/index.js';
12
+ import { probeRender } from './render-probe.js';
13
+ function ModalHostInner(props) {
14
+ probeRender('modal');
15
+ const { modalMode } = props;
16
+ if (modalMode === 'model' && props.availableModels.length > 0) {
17
+ return (_jsx(ModelSelector, { models: props.availableModels, onSelect: props.onModelSelect, onCancel: props.onModalCancel }));
18
+ }
19
+ if (modalMode === 'sessions') {
20
+ return (_jsx(SessionSelector, { sessions: props.availableSessions, onSelect: props.onSessionSelect, onDelete: props.onSessionDelete, onCancel: props.onModalCancel }));
21
+ }
22
+ if (modalMode === 'upgrade' && props.latestVersion) {
23
+ return (_jsx(UpgradePrompt, { currentVersion: getVersion(), latestVersion: props.latestVersion, onConfirm: props.onUpgradeConfirm, onCancel: props.onModalCancel }));
24
+ }
25
+ if (modalMode === 'session-resume' && props.previousSession) {
26
+ return (_jsx(SessionResumePrompt, { session: props.previousSession, onResume: props.onSessionResume, onNew: props.onSessionResumeNew }));
27
+ }
28
+ if (modalMode === 'complexity-warning' && props.pendingComplexPrompt) {
29
+ const { pendingComplexPrompt } = props;
30
+ return (_jsx(ComplexityWarning, { reason: pendingComplexPrompt.complexity.reason || 'Complex operation detected', prompt: typeof pendingComplexPrompt.prompt === 'string' ? pendingComplexPrompt.prompt : undefined, onProceed: props.onComplexityProceed, onPlan: props.onComplexityPlan, onCancel: props.onComplexityCancel }));
31
+ }
32
+ if (modalMode === 'keys') {
33
+ return _jsx(KeybindingsModal, { onClose: props.onKeybindingsClose });
34
+ }
35
+ if (modalMode === 'provider' && props.providerEntries.length > 0) {
36
+ return (_jsx(ProviderSelector, { providers: props.providerEntries, onSelect: props.onProviderSelect, onCancel: props.onProviderCancel }));
37
+ }
38
+ if (modalMode === 'api-key-setup' && props.pendingSetupProvider) {
39
+ const { pendingSetupProvider } = props;
40
+ return (_jsx(ApiKeySetup, { provider: pendingSetupProvider.id, configHint: pendingSetupProvider.configHint, onSubmit: props.onApiKeySubmit, onCancel: props.onApiKeyCancel, extraInstructions: pendingSetupProvider.id === 'ollama'
41
+ ? 'e.g. http://localhost:11434 (start with: ollama serve)'
42
+ : pendingSetupProvider.id === 'bedrock'
43
+ ? 'Enter your AWS profile name. Ensure it exists in ~/.aws/credentials or ~/.aws/config.'
44
+ : pendingSetupProvider.id === 'litellm'
45
+ ? 'e.g. http://localhost:4000'
46
+ : undefined }));
47
+ }
48
+ return null;
49
+ }
50
+ export const ModalHost = React.memo(ModalHostInner);
51
+ //# sourceMappingURL=modal-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal-host.js","sourceRoot":"","sources":["../../../src/ui/regions/modal-host.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EACL,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAChE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,GACrE,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAoChD,SAAS,cAAc,CAAC,KAAqB;IAC3C,WAAW,CAAC,OAAO,CAAC,CAAC;IAErB,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE5B,IAAI,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,OAAO,CACL,KAAC,aAAa,IACZ,MAAM,EAAE,KAAK,CAAC,eAAe,EAC7B,QAAQ,EAAE,KAAK,CAAC,aAAa,EAC7B,QAAQ,EAAE,KAAK,CAAC,aAAa,GAC7B,CACH,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,CACL,KAAC,eAAe,IACd,QAAQ,EAAE,KAAK,CAAC,iBAAiB,EACjC,QAAQ,EAAE,KAAK,CAAC,eAAe,EAC/B,QAAQ,EAAE,KAAK,CAAC,eAAe,EAC/B,QAAQ,EAAE,KAAK,CAAC,aAAa,GAC7B,CACH,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACnD,OAAO,CACL,KAAC,aAAa,IACZ,cAAc,EAAE,UAAU,EAAE,EAC5B,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,SAAS,EAAE,KAAK,CAAC,gBAAgB,EACjC,QAAQ,EAAE,KAAK,CAAC,aAAa,GAC7B,CACH,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,KAAK,gBAAgB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC5D,OAAO,CACL,KAAC,mBAAmB,IAClB,OAAO,EAAE,KAAK,CAAC,eAAe,EAC9B,QAAQ,EAAE,KAAK,CAAC,eAAe,EAC/B,KAAK,EAAE,KAAK,CAAC,kBAAkB,GAC/B,CACH,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,KAAK,oBAAoB,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACrE,MAAM,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC;QACvC,OAAO,CACL,KAAC,iBAAiB,IAChB,MAAM,EAAE,oBAAoB,CAAC,UAAU,CAAC,MAAM,IAAI,4BAA4B,EAC9E,MAAM,EAAE,OAAO,oBAAoB,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACjG,SAAS,EAAE,KAAK,CAAC,mBAAmB,EACpC,MAAM,EAAE,KAAK,CAAC,gBAAgB,EAC9B,QAAQ,EAAE,KAAK,CAAC,kBAAkB,GAClC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,KAAC,gBAAgB,IAAC,OAAO,EAAE,KAAK,CAAC,kBAAkB,GAAI,CAAC;IACjE,CAAC;IAED,IAAI,SAAS,KAAK,UAAU,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,OAAO,CACL,KAAC,gBAAgB,IACf,SAAS,EAAE,KAAK,CAAC,eAAe,EAChC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,EAChC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,GAChC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,KAAK,eAAe,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAChE,MAAM,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC;QACvC,OAAO,CACL,KAAC,WAAW,IACV,QAAQ,EAAE,oBAAoB,CAAC,EAAE,EACjC,UAAU,EAAE,oBAAoB,CAAC,UAAU,EAC3C,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,iBAAiB,EACf,oBAAoB,CAAC,EAAE,KAAK,QAAQ;gBAClC,CAAC,CAAC,yDAAyD;gBAC3D,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,SAAS;oBACvC,CAAC,CAAC,uFAAuF;oBACzF,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,SAAS;wBACvC,CAAC,CAAC,4BAA4B;wBAC9B,CAAC,CAAC,SAAS,GAEf,CACH,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * UI Module - Render Probe (test/automation instrumentation)
3
+ *
4
+ * Region components call `probeRender(name)` at the top of their render and
5
+ * `probeMount(name)` from a mount effect. Both are no-ops in production (the
6
+ * probe is disabled), so the overhead is a single boolean check per render.
7
+ *
8
+ * The render-isolation test enables the probe, renders the decomposed tree,
9
+ * drives stdin, and asserts which regions re-rendered — this is how we prove a
10
+ * keystroke touches only the input region and that resetSession() resets state
11
+ * without remounting (mount count stays 1).
12
+ */
13
+ /** Enable (and reset) or disable render/mount counting. */
14
+ export declare function enableRenderProbe(on?: boolean): void;
15
+ export declare function isRenderProbeEnabled(): boolean;
16
+ /** Count one render of the named component. No-op unless the probe is enabled. */
17
+ export declare function probeRender(name: string): void;
18
+ /** Count one mount of the named component. No-op unless the probe is enabled. */
19
+ export declare function probeMount(name: string): void;
20
+ export declare function getRenderCount(name: string): number;
21
+ export declare function getMountCount(name: string): number;
22
+ //# sourceMappingURL=render-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-probe.d.ts","sourceRoot":"","sources":["../../../src/ui/regions/render-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,EAAE,UAAO,GAAG,IAAI,CAMjD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * UI Module - Render Probe (test/automation instrumentation)
3
+ *
4
+ * Region components call `probeRender(name)` at the top of their render and
5
+ * `probeMount(name)` from a mount effect. Both are no-ops in production (the
6
+ * probe is disabled), so the overhead is a single boolean check per render.
7
+ *
8
+ * The render-isolation test enables the probe, renders the decomposed tree,
9
+ * drives stdin, and asserts which regions re-rendered — this is how we prove a
10
+ * keystroke touches only the input region and that resetSession() resets state
11
+ * without remounting (mount count stays 1).
12
+ */
13
+ let enabled = false;
14
+ const renderCounts = Object.create(null);
15
+ const mountCounts = Object.create(null);
16
+ /** Enable (and reset) or disable render/mount counting. */
17
+ export function enableRenderProbe(on = true) {
18
+ enabled = on;
19
+ if (on) {
20
+ for (const k of Object.keys(renderCounts))
21
+ delete renderCounts[k];
22
+ for (const k of Object.keys(mountCounts))
23
+ delete mountCounts[k];
24
+ }
25
+ }
26
+ export function isRenderProbeEnabled() {
27
+ return enabled;
28
+ }
29
+ /** Count one render of the named component. No-op unless the probe is enabled. */
30
+ export function probeRender(name) {
31
+ if (enabled)
32
+ renderCounts[name] = (renderCounts[name] ?? 0) + 1;
33
+ }
34
+ /** Count one mount of the named component. No-op unless the probe is enabled. */
35
+ export function probeMount(name) {
36
+ if (enabled)
37
+ mountCounts[name] = (mountCounts[name] ?? 0) + 1;
38
+ }
39
+ export function getRenderCount(name) {
40
+ return renderCounts[name] ?? 0;
41
+ }
42
+ export function getMountCount(name) {
43
+ return mountCounts[name] ?? 0;
44
+ }
45
+ //# sourceMappingURL=render-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-probe.js","sourceRoot":"","sources":["../../../src/ui/regions/render-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,MAAM,YAAY,GAA2B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjE,MAAM,WAAW,GAA2B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAEhE,2DAA2D;AAC3D,MAAM,UAAU,iBAAiB,CAAC,EAAE,GAAG,IAAI;IACzC,OAAO,GAAG,EAAE,CAAC;IACb,IAAI,EAAE,EAAE,CAAC;QACP,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,OAAO;QAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,OAAO;QAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * UI region - static scrollback
3
+ *
4
+ * Completed transcript entries rendered through Ink's <Static>. Static writes
5
+ * each item to stdout exactly once and never re-traverses it, so a growing
6
+ * scrollback and per-token streaming updates below no longer pay a full-frame
7
+ * redraw for history that hasn't changed.
8
+ *
9
+ * Two Static constraints shape this component:
10
+ *
11
+ * 1. APPEND-ONLY. Static tracks how many items it has emitted and only renders
12
+ * the tail beyond that count. Items must therefore be appended, never
13
+ * reordered or truncated. Every UIMessage is finalized before the next one
14
+ * is appended (streaming text lives in the separate live zone, not here), so
15
+ * `messages` is naturally append-only during a turn. Clearing/undo replace
16
+ * the array non-append-only; the parent remounts this component (keyed on
17
+ * clearCount) to reset Static's emitted-count rather than mutating it.
18
+ *
19
+ * 2. WRITE-ONCE COLLAPSE (tradeoff). A tool message's rendering depends on its
20
+ * ordinal among tools (collapseTools/toolDisplayLimit windowing). Under
21
+ * <Static> each item renders once, at append time, so that decision is
22
+ * FROZEN then: a tool shown expanded when it was the newest stays expanded
23
+ * even as newer tools arrive — the sliding collapse window no longer
24
+ * re-collapses already-printed tools. This only affects sessions that opt
25
+ * into collapseTools (default off; collapseThinking is currently always
26
+ * off), where the default configuration is byte-identical to the previous
27
+ * non-Static rendering. This is accepted, not worked around: a re-render
28
+ * escape hatch would defeat the write-once guarantee that is the point.
29
+ */
30
+ import React from 'react';
31
+ import type { UIMessage, CollapseSettings } from '../types.js';
32
+ export interface StaticScrollbackProps {
33
+ messages: UIMessage[];
34
+ collapseSettings: CollapseSettings;
35
+ }
36
+ declare function StaticScrollbackInner({ messages, collapseSettings }: StaticScrollbackProps): import("react/jsx-runtime").JSX.Element;
37
+ export declare const StaticScrollback: React.MemoExoticComponent<typeof StaticScrollbackInner>;
38
+ export {};
39
+ //# sourceMappingURL=static-scrollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-scrollback.d.ts","sourceRoot":"","sources":["../../../src/ui/regions/static-scrollback.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,iBAAS,qBAAqB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,qBAAqB,2CAqCnF;AAMD,eAAO,MAAM,gBAAgB,yDAAoC,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * UI region - static scrollback
4
+ *
5
+ * Completed transcript entries rendered through Ink's <Static>. Static writes
6
+ * each item to stdout exactly once and never re-traverses it, so a growing
7
+ * scrollback and per-token streaming updates below no longer pay a full-frame
8
+ * redraw for history that hasn't changed.
9
+ *
10
+ * Two Static constraints shape this component:
11
+ *
12
+ * 1. APPEND-ONLY. Static tracks how many items it has emitted and only renders
13
+ * the tail beyond that count. Items must therefore be appended, never
14
+ * reordered or truncated. Every UIMessage is finalized before the next one
15
+ * is appended (streaming text lives in the separate live zone, not here), so
16
+ * `messages` is naturally append-only during a turn. Clearing/undo replace
17
+ * the array non-append-only; the parent remounts this component (keyed on
18
+ * clearCount) to reset Static's emitted-count rather than mutating it.
19
+ *
20
+ * 2. WRITE-ONCE COLLAPSE (tradeoff). A tool message's rendering depends on its
21
+ * ordinal among tools (collapseTools/toolDisplayLimit windowing). Under
22
+ * <Static> each item renders once, at append time, so that decision is
23
+ * FROZEN then: a tool shown expanded when it was the newest stays expanded
24
+ * even as newer tools arrive — the sliding collapse window no longer
25
+ * re-collapses already-printed tools. This only affects sessions that opt
26
+ * into collapseTools (default off; collapseThinking is currently always
27
+ * off), where the default configuration is byte-identical to the previous
28
+ * non-Static rendering. This is accepted, not worked around: a re-render
29
+ * escape hatch would defeat the write-once guarantee that is the point.
30
+ */
31
+ import React, { useEffect } from 'react';
32
+ import { Box, Static } from 'ink';
33
+ import { MessageItem } from '../messages.js';
34
+ import { probeMount, probeRender } from './render-probe.js';
35
+ function StaticScrollbackInner({ messages, collapseSettings }) {
36
+ // Counts once per mount; the parent keys this component on clearCount, so a
37
+ // clear/reset remounts it and this fires again — the render-isolation proof
38
+ // that clearing actually resets Static's internal emitted-count.
39
+ useEffect(() => {
40
+ probeMount('transcript-static');
41
+ }, []);
42
+ // Per-item collapse context (ordinal among tools + tool count), matching the
43
+ // previous MessageHistory. Computed each render but consumed by Static only
44
+ // for newly-appended items, so a tool's context is captured at append time.
45
+ const totalTools = messages.reduce((n, m) => (m.type === 'tool' ? n + 1 : n), 0);
46
+ const toolOrdinal = new Map();
47
+ let ordinal = 0;
48
+ for (const m of messages) {
49
+ if (m.type === 'tool')
50
+ toolOrdinal.set(m.id, ordinal++);
51
+ }
52
+ return (_jsx(Static, { items: messages, children: (msg) => {
53
+ // Runs exactly once per message (Static only renders the unseen tail),
54
+ // so this count stays flat across streaming updates and rising only by
55
+ // one per appended message.
56
+ probeRender('transcript-item');
57
+ const collapse = msg.type === 'tool'
58
+ ? { ...collapseSettings, toolIndex: toolOrdinal.get(msg.id), totalTools }
59
+ : collapseSettings;
60
+ return (_jsx(Box, { children: _jsx(MessageItem, { msg: msg, collapse: collapse }) }, msg.id));
61
+ } }));
62
+ }
63
+ // Memoized so a streaming/stats prop change on the parent transcript region
64
+ // does not re-run Static's diff for unchanged history; only a new `messages`
65
+ // reference (a message was appended) re-renders it. A clearCount change remounts
66
+ // it via the `key` in the parent, independent of this comparison.
67
+ export const StaticScrollback = React.memo(StaticScrollbackInner);
68
+ //# sourceMappingURL=static-scrollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-scrollback.js","sourceRoot":"","sources":["../../../src/ui/regions/static-scrollback.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAO5D,SAAS,qBAAqB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAyB;IAClF,4EAA4E;IAC5E,4EAA4E;IAC5E,iEAAiE;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CACL,KAAC,MAAM,IAAC,KAAK,EAAE,QAAQ,YACpB,CAAC,GAAc,EAAE,EAAE;YAClB,uEAAuE;YACvE,uEAAuE;YACvE,4BAA4B;YAC5B,WAAW,CAAC,iBAAiB,CAAC,CAAC;YAC/B,MAAM,QAAQ,GACZ,GAAG,CAAC,IAAI,KAAK,MAAM;gBACjB,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE;gBACzE,CAAC,CAAC,gBAAgB,CAAC;YACvB,OAAO,CACL,KAAC,GAAG,cACF,KAAC,WAAW,IAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAI,IADrC,GAAG,CAAC,EAAE,CAEV,CACP,CAAC;QACJ,CAAC,GACM,CACV,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,6EAA6E;AAC7E,iFAAiF;AACjF,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * UI region - status bar
3
+ *
4
+ * Thin wrapper around StatusBar. Memoized so keystrokes (which never change
5
+ * these props) don't re-render the footer; stats/cost/context updates flow in
6
+ * as prop changes and re-render only this region.
7
+ */
8
+ import React from 'react';
9
+ import type { SessionStats } from '../types.js';
10
+ import type { Mode } from '../../types.js';
11
+ export interface StatusRegionProps {
12
+ provider: string;
13
+ model: string;
14
+ mode: Mode;
15
+ stats: SessionStats;
16
+ contextTokens: number;
17
+ breakerHealth?: 'ok' | 'warning' | 'tripped';
18
+ smartRouteActive: boolean;
19
+ width: number;
20
+ }
21
+ declare function StatusRegionInner({ provider, model, mode, stats, contextTokens, breakerHealth, smartRouteActive, width, }: StatusRegionProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare const StatusRegion: React.MemoExoticComponent<typeof StatusRegionInner>;
23
+ export {};
24
+ //# sourceMappingURL=status-region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-region.d.ts","sourceRoot":"","sources":["../../../src/ui/regions/status-region.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;IAC7C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iBAAS,iBAAiB,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,KAAK,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,KAAK,GACN,EAAE,iBAAiB,2CAenB;AAED,eAAO,MAAM,YAAY,qDAAgC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * UI region - status bar
4
+ *
5
+ * Thin wrapper around StatusBar. Memoized so keystrokes (which never change
6
+ * these props) don't re-render the footer; stats/cost/context updates flow in
7
+ * as prop changes and re-render only this region.
8
+ */
9
+ import React from 'react';
10
+ import { StatusBar } from '../status-bar.js';
11
+ import { probeRender } from './render-probe.js';
12
+ function StatusRegionInner({ provider, model, mode, stats, contextTokens, breakerHealth, smartRouteActive, width, }) {
13
+ probeRender('status');
14
+ return (_jsx(StatusBar, { provider: provider, model: model, mode: mode, stats: stats, contextTokens: contextTokens, breakerHealth: breakerHealth, smartRouteActive: smartRouteActive, width: width }));
15
+ }
16
+ export const StatusRegion = React.memo(StatusRegionInner);
17
+ //# sourceMappingURL=status-region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-region.js","sourceRoot":"","sources":["../../../src/ui/regions/status-region.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAahD,SAAS,iBAAiB,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,KAAK,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,KAAK,GACa;IAClB,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEtB,OAAO,CACL,KAAC,SAAS,IACR,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,KAAK,GACZ,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * UI region - transcript
3
+ *
4
+ * Splits into two zones:
5
+ * - STATIC ZONE: completed messages, rendered write-once via <StaticScrollback>
6
+ * (Ink <Static>) so history is emitted to stdout once and never re-traversed
7
+ * on streaming/stats updates or scrollback growth.
8
+ * - LIVE ZONE: the processing/thinking/streaming indicators, the streaming
9
+ * response block, the state transition, and the optional debug overlay — the
10
+ * only things that change per token/tick.
11
+ *
12
+ * Owns the state-transition tracking (derived purely from the processing props)
13
+ * so that logic lives with the only region that renders it.
14
+ *
15
+ * Memoized: a keystroke never changes these props, so typing does not re-render
16
+ * the transcript. Streaming/stats updates flow in as prop changes and re-render
17
+ * this region's live zone only — the memoized StaticScrollback skips re-render
18
+ * because its `messages`/`collapseSettings` props are unchanged.
19
+ */
20
+ import React from 'react';
21
+ import type { UIMessage, CollapseSettings, ThinkingState, ActivityState } from '../types.js';
22
+ import type { Mode } from '../../types.js';
23
+ export interface TranscriptRegionProps {
24
+ messages: UIMessage[];
25
+ collapseSettings: CollapseSettings;
26
+ /** Monotonic counter bumped when `messages` is cleared/replaced non-append.
27
+ * Used as the StaticScrollback `key` so Static remounts (fresh emitted-count)
28
+ * instead of desyncing against a truncated list. */
29
+ clearCount: number;
30
+ isProcessing: boolean;
31
+ thinkingState: ThinkingState | null;
32
+ streamingResponse: string;
33
+ activityState: ActivityState | null;
34
+ debugEnabled: boolean;
35
+ mode: Mode;
36
+ queuedCount: number;
37
+ }
38
+ declare function TranscriptRegionInner({ messages, collapseSettings, clearCount, isProcessing, thinkingState, streamingResponse, activityState, debugEnabled, mode, queuedCount, }: TranscriptRegionProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare const TranscriptRegion: React.MemoExoticComponent<typeof TranscriptRegionInner>;
40
+ export {};
41
+ //# sourceMappingURL=transcript-region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-region.d.ts","sourceRoot":"","sources":["../../../src/ui/regions/transcript-region.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAO3C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC;;yDAEqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,iBAAS,qBAAqB,CAAC,EAC7B,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,IAAI,EACJ,WAAW,GACZ,EAAE,qBAAqB,2CAmEvB;AAED,eAAO,MAAM,gBAAgB,yDAAoC,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * UI region - transcript
4
+ *
5
+ * Splits into two zones:
6
+ * - STATIC ZONE: completed messages, rendered write-once via <StaticScrollback>
7
+ * (Ink <Static>) so history is emitted to stdout once and never re-traversed
8
+ * on streaming/stats updates or scrollback growth.
9
+ * - LIVE ZONE: the processing/thinking/streaming indicators, the streaming
10
+ * response block, the state transition, and the optional debug overlay — the
11
+ * only things that change per token/tick.
12
+ *
13
+ * Owns the state-transition tracking (derived purely from the processing props)
14
+ * so that logic lives with the only region that renders it.
15
+ *
16
+ * Memoized: a keystroke never changes these props, so typing does not re-render
17
+ * the transcript. Streaming/stats updates flow in as prop changes and re-render
18
+ * this region's live zone only — the memoized StaticScrollback skips re-render
19
+ * because its `messages`/`collapseSettings` props are unchanged.
20
+ */
21
+ import React, { useState, useEffect, useRef } from 'react';
22
+ import { Box, Text } from 'ink';
23
+ import { StaticScrollback } from './static-scrollback.js';
24
+ import { ThinkingDisplay, ProcessingIndicator, StreamingIndicator, StateTransition } from '../components.js';
25
+ import { probeRender } from './render-probe.js';
26
+ function TranscriptRegionInner({ messages, collapseSettings, clearCount, isProcessing, thinkingState, streamingResponse, activityState, debugEnabled, mode, queuedCount, }) {
27
+ probeRender('transcript');
28
+ // State transition tracking (moved here from the parent — this is the only
29
+ // place the transition is rendered).
30
+ const prevProcessingState = useRef('idle');
31
+ const [transition, setTransition] = useState(null);
32
+ useEffect(() => {
33
+ const current = isProcessing && thinkingState && !streamingResponse ? 'thinking' :
34
+ isProcessing && streamingResponse ? 'streaming' :
35
+ !isProcessing && prevProcessingState.current !== 'idle' ? 'done' : 'idle';
36
+ if (current !== prevProcessingState.current) {
37
+ const from = prevProcessingState.current;
38
+ // Only show transitions for meaningful state changes
39
+ if (from !== 'idle' || current !== 'idle') {
40
+ setTransition({ from, to: current });
41
+ }
42
+ prevProcessingState.current = current;
43
+ }
44
+ }, [isProcessing, thinkingState, streamingResponse]);
45
+ // Streaming response block (reused across layouts)
46
+ const StreamingResponseBox = streamingResponse ? (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "cyan", children: "\u2727 Calliope:" }), streamingResponse.split('\n').map((line, i) => (_jsxs(Text, { children: [_jsx(Text, { color: "blue", children: "\u2502" }), " ", line] }, i))), _jsx(Text, { color: "cyan", children: "\u258C" })] })) : null;
47
+ // Thinking/Processing indicator with state transitions
48
+ const ProcessingBox = (_jsxs(_Fragment, { children: [transition && (_jsx(StateTransition, { from: transition.from, to: transition.to, onComplete: () => setTransition(null) })), isProcessing && thinkingState && !streamingResponse && _jsx(ThinkingDisplay, { state: thinkingState }), isProcessing && !thinkingState && !streamingResponse && _jsx(ProcessingIndicator, { label: "Waiting for response" }), isProcessing && streamingResponse && _jsx(StreamingIndicator, { activity: activityState ?? undefined })] }));
49
+ return (_jsxs(_Fragment, { children: [_jsx(StaticScrollback, { messages: messages, collapseSettings: collapseSettings }, clearCount), ProcessingBox, StreamingResponseBox, debugEnabled && (_jsx(Box, { marginY: 0, children: _jsxs(Text, { dimColor: true, children: ["[dbg] proc=", isProcessing ? 'Y' : 'N', " think=", thinkingState ? 'Y' : 'N', " stream=", streamingResponse.length, " mode=", mode, " queue=", queuedCount, " activity=", activityState?.action || 'none'] }) }))] }));
50
+ }
51
+ export const TranscriptRegion = React.memo(TranscriptRegionInner);
52
+ //# sourceMappingURL=transcript-region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-region.js","sourceRoot":"","sources":["../../../src/ui/regions/transcript-region.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * UI Module - Self-restart
3
+ *
4
+ * After an in-place upgrade the CLI re-launches itself. The upgrade handler
5
+ * records the desired argv; startInkCLI spawns it after Ink exits.
6
+ */
7
+ export declare function requestSelfRestart(args?: string[]): void;
8
+ export declare function spawnPendingRestart(): Promise<void>;
9
+ //# sourceMappingURL=self-restart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-restart.d.ts","sourceRoot":"","sources":["../../src/ui/self-restart.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,IAAI,CAE/E;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAazD"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * UI Module - Self-restart
3
+ *
4
+ * After an in-place upgrade the CLI re-launches itself. The upgrade handler
5
+ * records the desired argv; startInkCLI spawns it after Ink exits.
6
+ */
7
+ let pendingRestartArgs = null;
8
+ export function requestSelfRestart(args = process.argv.slice(1)) {
9
+ pendingRestartArgs = [...args];
10
+ }
11
+ export async function spawnPendingRestart() {
12
+ if (!pendingRestartArgs) {
13
+ return;
14
+ }
15
+ const restartArgs = pendingRestartArgs;
16
+ pendingRestartArgs = null;
17
+ const { spawn } = await import('child_process');
18
+ const child = spawn(process.argv[0], restartArgs, {
19
+ stdio: 'inherit',
20
+ detached: true,
21
+ });
22
+ child.unref();
23
+ }
24
+ //# sourceMappingURL=self-restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-restart.js","sourceRoot":"","sources":["../../src/ui/self-restart.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,IAAI,kBAAkB,GAAoB,IAAI,CAAC;AAE/C,MAAM,UAAU,kBAAkB,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC;IACvC,kBAAkB,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,WAAW,EAAE;QACjD,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * UI orchestration - chat controller
3
+ *
4
+ * Assembles every state group, the long-lived refs, the agent/command context
5
+ * builders, and all handlers, then returns flat prop bags for the four regions
6
+ * plus resetSession(). This is the "orchestration" half of the old TerminalChat
7
+ * body; index.tsx keeps only composition. It carries no JSX, so it is a plain
8
+ * module (not a component file).
9
+ */
10
+ import type { TranscriptRegionProps } from '../regions/transcript-region.js';
11
+ import type { StatusRegionProps } from '../regions/status-region.js';
12
+ import type { InputRegionProps } from '../regions/input-region.js';
13
+ import type { ModalHostProps } from '../regions/modal-host.js';
14
+ export interface ChatController {
15
+ width: number;
16
+ resetSession: () => void;
17
+ transcript: TranscriptRegionProps;
18
+ status: StatusRegionProps;
19
+ input: InputRegionProps;
20
+ modal: ModalHostProps;
21
+ }
22
+ export declare function useChatController(): ChatController;
23
+ //# sourceMappingURL=use-chat-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-chat-controller.d.ts","sourceRoot":"","sources":["../../../src/ui/state/use-chat-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuCH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,qBAAqB,CAAC;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,cAAc,CAAC;CACvB;AAoBD,wBAAgB,iBAAiB,IAAI,cAAc,CAwnBlD"}