@aragon-agent/cli 0.6.47 → 0.6.48

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 (775) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +27 -6
  3. package/dist/agent/coalesce.d.ts +1 -1
  4. package/dist/agent/controller.d.ts +21 -21
  5. package/dist/agent/controller.js +13 -13
  6. package/dist/agent/conversation-reset.d.ts +1 -1
  7. package/dist/agent/governance-wiring.d.ts +6 -6
  8. package/dist/agent/governance-wiring.js +4 -4
  9. package/dist/agent/headless.d.ts +5 -5
  10. package/dist/agent/headless.js +4 -4
  11. package/dist/agent/job-notices.d.ts +1 -1
  12. package/dist/agent/job-notices.js +1 -1
  13. package/dist/agent/kit-apply.d.ts +3 -3
  14. package/dist/agent/kit-apply.js +3 -3
  15. package/dist/agent/model-profile-settings.d.ts +2 -2
  16. package/dist/agent/model-profile-settings.js +6 -6
  17. package/dist/agent/prompt-options.d.ts +1 -1
  18. package/dist/agent/system-prompt.d.ts +1 -1
  19. package/dist/{ui → app}/App.d.ts +9 -9
  20. package/dist/{ui → app}/App.js +79 -79
  21. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  22. package/dist/{ui → app}/use-startup-notices.js +2 -2
  23. package/dist/cli.js +29 -29
  24. package/dist/commands/agents-command.js +1 -1
  25. package/dist/commands/builtins.js +9 -9
  26. package/dist/commands/governance-command.js +2 -2
  27. package/dist/commands/governance-runs-table.js +1 -1
  28. package/dist/commands/kit-command.js +1 -1
  29. package/dist/commands/perf.d.ts +3 -3
  30. package/dist/commands/perf.js +1 -1
  31. package/dist/commands/registry.d.ts +8 -8
  32. package/dist/commands/skills.js +2 -2
  33. package/dist/commands/team-command.js +1 -1
  34. package/dist/compaction/archive.d.ts +1 -1
  35. package/dist/compaction/archive.js +1 -1
  36. package/dist/compaction/child.d.ts +3 -3
  37. package/dist/compaction/child.js +4 -4
  38. package/dist/compaction/command.js +5 -5
  39. package/dist/compaction/compactor.d.ts +6 -6
  40. package/dist/compaction/compactor.js +6 -6
  41. package/dist/compaction/context-command.js +1 -1
  42. package/dist/compaction/digest.js +1 -1
  43. package/dist/compaction/memory-input.js +1 -1
  44. package/dist/compaction/memory-validation.js +1 -1
  45. package/dist/compaction/memory.js +1 -1
  46. package/dist/compaction/summarize-call.js +1 -1
  47. package/dist/compaction/summary-prompt.js +1 -1
  48. package/dist/compaction/tail-budget.js +2 -2
  49. package/dist/compaction/wiring.d.ts +5 -5
  50. package/dist/compaction/wiring.js +2 -2
  51. package/dist/config/cli-commands.d.ts +1 -1
  52. package/dist/config/cli-commands.js +3 -3
  53. package/dist/config/env.d.ts +1 -1
  54. package/dist/config/env.js +4 -4
  55. package/dist/config/load.d.ts +2 -2
  56. package/dist/config/load.js +6 -6
  57. package/dist/config/migrate-state-out-of-config.js +1 -1
  58. package/dist/config/model-profile-store.d.ts +4 -54
  59. package/dist/config/model-profile-store.js +3 -3
  60. package/dist/config/prompt-history.js +1 -1
  61. package/dist/config/store.d.ts +2 -2
  62. package/dist/config/store.js +3 -3
  63. package/dist/diagnostics/doctor.js +4 -4
  64. package/dist/exec/bridge/decisions.d.ts +1 -1
  65. package/dist/exec/bridge/human-answers.d.ts +1 -1
  66. package/dist/exec/bridge/human-answers.js +1 -1
  67. package/dist/exec/bridge/protocol.d.ts +1 -1
  68. package/dist/exec/bridge/server.js +1 -1
  69. package/dist/exec/events.d.ts +2 -2
  70. package/dist/exec/index.d.ts +1 -1
  71. package/dist/exec/index.js +1 -1
  72. package/dist/exec/permission.js +1 -1
  73. package/dist/exec/runner.d.ts +3 -3
  74. package/dist/exec/runner.js +2 -2
  75. package/dist/exec/threads/runtime.js +1 -1
  76. package/dist/fast/digest.d.ts +1 -1
  77. package/dist/fast/digest.js +1 -1
  78. package/dist/fast/frames.d.ts +1 -1
  79. package/dist/fast/frames.js +1 -1
  80. package/dist/fast/prompt.d.ts +1 -1
  81. package/dist/fast/prompt.js +1 -1
  82. package/dist/fast/review-call.js +1 -1
  83. package/dist/fast/reviewer.d.ts +3 -3
  84. package/dist/fast/reviewer.js +1 -1
  85. package/dist/fast/summary-call.d.ts +3 -3
  86. package/dist/fast/summary-call.js +2 -2
  87. package/dist/fast/summary-prompt.d.ts +1 -1
  88. package/dist/fast/summary-prompt.js +1 -1
  89. package/dist/fast/wiring.d.ts +4 -4
  90. package/dist/fast/wiring.js +1 -1
  91. package/dist/governance/card-normalize.d.ts +1 -1
  92. package/dist/governance/copy.d.ts +1 -1
  93. package/dist/governance/copy.js +2 -2
  94. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  95. package/dist/governance/engine/budget.d.ts +1 -1
  96. package/dist/governance/engine/budget.js +1 -1
  97. package/dist/governance/engine/cards.d.ts +1 -1
  98. package/dist/governance/engine/digest.js +1 -1
  99. package/dist/governance/engine/engine-core.d.ts +5 -5
  100. package/dist/governance/engine/engine-core.js +1 -1
  101. package/dist/governance/engine/engine.d.ts +1 -1
  102. package/dist/governance/engine/engine.js +1 -1
  103. package/dist/governance/engine/estimate.d.ts +1 -1
  104. package/dist/governance/engine/estimate.js +1 -1
  105. package/dist/governance/engine/inspector.js +2 -2
  106. package/dist/governance/engine/integration.d.ts +1 -1
  107. package/dist/governance/engine/lifecycle.d.ts +1 -1
  108. package/dist/governance/engine/lifecycle.js +1 -1
  109. package/dist/governance/engine/phase-members.d.ts +1 -1
  110. package/dist/governance/engine/phase-planner.d.ts +1 -1
  111. package/dist/governance/engine/phase-planner.js +1 -1
  112. package/dist/governance/engine/rebuild.d.ts +1 -1
  113. package/dist/governance/engine/report.d.ts +1 -1
  114. package/dist/governance/engine/report.js +1 -1
  115. package/dist/governance/engine/run-digest.d.ts +1 -1
  116. package/dist/governance/engine/spec-builder.d.ts +2 -2
  117. package/dist/governance/engine/spec-builder.js +2 -2
  118. package/dist/governance/engine/stage-runner.js +2 -2
  119. package/dist/governance/engine/start-input.d.ts +1 -1
  120. package/dist/governance/engine/start-input.js +1 -1
  121. package/dist/governance/engine/state-machine.d.ts +1 -1
  122. package/dist/governance/engine/state-machine.js +3 -3
  123. package/dist/governance/engine/submission-queries.d.ts +1 -1
  124. package/dist/governance/engine/submission-render.d.ts +1 -1
  125. package/dist/governance/engine/submissions.d.ts +1 -1
  126. package/dist/governance/engine/submissions.js +1 -1
  127. package/dist/governance/engine/visibility.d.ts +1 -1
  128. package/dist/governance/engine/visibility.js +1 -1
  129. package/dist/governance/posture-transition.d.ts +2 -2
  130. package/dist/governance/posture-transition.js +1 -1
  131. package/dist/governance/profiles.d.ts +1 -1
  132. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  133. package/dist/governance/prompts/orchestrator-block.js +2 -2
  134. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  135. package/dist/governance/prompts/plan-addendum.js +1 -1
  136. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  137. package/dist/governance/prompts/role-blocks.js +1 -1
  138. package/dist/governance/report-reader.js +1 -1
  139. package/dist/governance/roles.d.ts +1 -1
  140. package/dist/governance/rules/claims.d.ts +1 -1
  141. package/dist/governance/rules/claims.js +1 -1
  142. package/dist/governance/rules/elimination.d.ts +1 -1
  143. package/dist/governance/rules/elimination.js +1 -1
  144. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  145. package/dist/governance/rules/failure-analysis.js +1 -1
  146. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  147. package/dist/governance/rules/ledger-state.d.ts +1 -1
  148. package/dist/governance/rules/ledger-state.js +1 -1
  149. package/dist/governance/rules/ledger.d.ts +2 -2
  150. package/dist/governance/rules/ledger.js +2 -2
  151. package/dist/governance/rules/rca.d.ts +1 -1
  152. package/dist/governance/rules/rca.js +1 -1
  153. package/dist/governance/rules/settlement.d.ts +2 -2
  154. package/dist/governance/rules/settlement.js +2 -2
  155. package/dist/governance/rules/suspicion.d.ts +1 -1
  156. package/dist/governance/store/artifacts.d.ts +1 -1
  157. package/dist/governance/store/artifacts.js +1 -1
  158. package/dist/governance/store/events-log.d.ts +1 -1
  159. package/dist/governance/store/run-store.d.ts +1 -1
  160. package/dist/governance/store/run-store.js +1 -1
  161. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  162. package/dist/governance/tools/child-tools.d.ts +1 -1
  163. package/dist/governance/tools/guard.d.ts +1 -1
  164. package/dist/governance/tools/guard.js +1 -1
  165. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  166. package/dist/governance/tools/inspector-tools.js +2 -2
  167. package/dist/governance/tools/lead-tools.d.ts +1 -1
  168. package/dist/governance/tools/lead-tools.js +1 -1
  169. package/dist/governance/tools/normalize-util.js +1 -1
  170. package/dist/governance/tools/scan-incomplete.js +1 -1
  171. package/dist/governance/tools/shared-tools.d.ts +1 -1
  172. package/dist/governance/tools/shared-tools.js +1 -1
  173. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  174. package/dist/governance/tools/submit-normalizers.js +1 -1
  175. package/dist/governance/tools/submit-tools.d.ts +1 -1
  176. package/dist/logging/cli-commands.js +1 -1
  177. package/dist/logging/install.d.ts +1 -1
  178. package/dist/logging/install.js +3 -3
  179. package/dist/logging/logger.d.ts +2 -2
  180. package/dist/logging/logger.js +31 -2
  181. package/dist/proc/kill-tree.js +1 -1
  182. package/dist/proc/log-mirror.js +1 -1
  183. package/dist/proc/log-ring.js +2 -2
  184. package/dist/proc/notices.d.ts +1 -1
  185. package/dist/proc/notices.js +2 -2
  186. package/dist/proc/prompt.d.ts +1 -1
  187. package/dist/proc/prompt.js +1 -1
  188. package/dist/proc/readiness.js +1 -1
  189. package/dist/proc/supervisor.d.ts +1 -1
  190. package/dist/proc/supervisor.js +3 -3
  191. package/dist/proc/wait.d.ts +1 -1
  192. package/dist/proc/wait.js +1 -1
  193. package/dist/prompts/command.d.ts +1 -1
  194. package/dist/prompts/command.js +1 -1
  195. package/dist/prompts/normalize.d.ts +1 -1
  196. package/dist/prompts/normalize.js +1 -1
  197. package/dist/prompts/resolve.d.ts +1 -1
  198. package/dist/prompts/store.d.ts +2 -12
  199. package/dist/prompts/store.js +6 -60
  200. package/dist/session/checkpoint.d.ts +2 -2
  201. package/dist/session/clear-archive.d.ts +2 -2
  202. package/dist/session/persist.d.ts +2 -2
  203. package/dist/session/persist.js +1 -1
  204. package/dist/session/startup-session.d.ts +2 -2
  205. package/dist/session/validate-session.js +3 -3
  206. package/dist/skills/service.d.ts +2 -2
  207. package/dist/team/bus.d.ts +1 -1
  208. package/dist/team/bus.js +1 -1
  209. package/dist/team/child-reviewer.d.ts +2 -2
  210. package/dist/team/child-reviewer.js +1 -1
  211. package/dist/team/comm-tools.js +1 -1
  212. package/dist/team/dispatch-gate.js +1 -1
  213. package/dist/team/forced-dispatch.js +1 -1
  214. package/dist/team/forced-mode.d.ts +1 -1
  215. package/dist/team/forced-prompt.d.ts +1 -1
  216. package/dist/team/forced-prompt.js +1 -1
  217. package/dist/team/normalize.d.ts +1 -1
  218. package/dist/team/normalize.js +1 -1
  219. package/dist/team/overseer.d.ts +3 -3
  220. package/dist/team/overseer.js +3 -3
  221. package/dist/team/prompt.d.ts +1 -1
  222. package/dist/team/prompt.js +1 -1
  223. package/dist/team/report.d.ts +2 -2
  224. package/dist/team/report.js +2 -2
  225. package/dist/team/retry.d.ts +1 -1
  226. package/dist/team/retry.js +1 -1
  227. package/dist/team/runtime.d.ts +4 -4
  228. package/dist/team/runtime.js +2 -2
  229. package/dist/team/settled.d.ts +2 -2
  230. package/dist/team/subagent.d.ts +4 -4
  231. package/dist/team/subagent.js +5 -5
  232. package/dist/team/task-tool.d.ts +1 -1
  233. package/dist/team/task-tool.js +1 -1
  234. package/dist/todo/normalize.d.ts +1 -1
  235. package/dist/todo/normalize.js +1 -1
  236. package/dist/todo/prompt.d.ts +1 -1
  237. package/dist/todo/prompt.js +1 -1
  238. package/dist/todo/store.d.ts +1 -1
  239. package/dist/todo/store.js +2 -2
  240. package/dist/todo/todo-tool.d.ts +1 -1
  241. package/dist/todo/todo-tool.js +2 -2
  242. package/dist/tools/bash-tool.d.ts +1 -1
  243. package/dist/tools/bash-tool.js +2 -2
  244. package/dist/tools/diff.d.ts +1 -1
  245. package/dist/tools/diff.js +1 -1
  246. package/dist/tools/file-change-store.d.ts +1 -1
  247. package/dist/tools/fs-tools.d.ts +2 -2
  248. package/dist/tools/fs-tools.js +1 -1
  249. package/dist/tools/index.d.ts +3 -3
  250. package/dist/tools/index.js +1 -1
  251. package/dist/tools/job-tools.d.ts +2 -2
  252. package/dist/tools/job-tools.js +4 -4
  253. package/dist/tools/plan-tools.d.ts +1 -1
  254. package/dist/tools/plan-tools.js +1 -1
  255. package/dist/tools/proc-tools.d.ts +1 -1
  256. package/dist/tools/proc-tools.js +2 -2
  257. package/dist/update/classify-failure.d.ts +1 -1
  258. package/dist/update/install-lock.js +1 -1
  259. package/dist/update/install-source.d.ts +1 -1
  260. package/dist/update/installer.js +2 -2
  261. package/dist/update/npm-view.d.ts +1 -1
  262. package/dist/update/npm-view.js +1 -1
  263. package/dist/update/registry.d.ts +1 -1
  264. package/dist/update/registry.js +1 -1
  265. package/dist/update/service.d.ts +2 -2
  266. package/dist/update/service.js +2 -2
  267. package/package.json +7 -7
  268. package/dist/agent/agent-mode.d.ts +0 -108
  269. package/dist/agent/agent-mode.js +0 -121
  270. package/dist/agent/entry-limits.d.ts +0 -65
  271. package/dist/agent/entry-limits.js +0 -133
  272. package/dist/agent/governance-view.d.ts +0 -40
  273. package/dist/agent/governance-view.js +0 -40
  274. package/dist/agent/invocation-card.d.ts +0 -77
  275. package/dist/agent/invocation-card.js +0 -169
  276. package/dist/agent/model-probe-limits.d.ts +0 -39
  277. package/dist/agent/model-probe-limits.js +0 -25
  278. package/dist/agent/model-probe.d.ts +0 -104
  279. package/dist/agent/model-probe.js +0 -391
  280. package/dist/agent/queued-messages.d.ts +0 -23
  281. package/dist/agent/queued-messages.js +0 -49
  282. package/dist/agent/reducer.d.ts +0 -857
  283. package/dist/agent/reducer.js +0 -1646
  284. package/dist/agent/retry-view.d.ts +0 -68
  285. package/dist/agent/retry-view.js +0 -95
  286. package/dist/agent/usage.d.ts +0 -47
  287. package/dist/agent/usage.js +0 -84
  288. package/dist/compaction/limits.d.ts +0 -61
  289. package/dist/compaction/limits.js +0 -64
  290. package/dist/compaction/meter.d.ts +0 -276
  291. package/dist/compaction/meter.js +0 -512
  292. package/dist/compaction/pressure.d.ts +0 -163
  293. package/dist/compaction/pressure.js +0 -199
  294. package/dist/compaction/reason-text.d.ts +0 -36
  295. package/dist/compaction/reason-text.js +0 -78
  296. package/dist/compaction/types.d.ts +0 -360
  297. package/dist/compaction/types.js +0 -22
  298. package/dist/config/governance-config.d.ts +0 -125
  299. package/dist/config/governance-config.js +0 -164
  300. package/dist/config/kit-resolution.d.ts +0 -93
  301. package/dist/config/kit-resolution.js +0 -226
  302. package/dist/config/model-kits.d.ts +0 -225
  303. package/dist/config/model-kits.js +0 -302
  304. package/dist/config/model-profile-resolution.d.ts +0 -28
  305. package/dist/config/model-profile-resolution.js +0 -88
  306. package/dist/config/model-profiles.d.ts +0 -103
  307. package/dist/config/model-profiles.js +0 -188
  308. package/dist/config/schema.d.ts +0 -1645
  309. package/dist/config/schema.js +0 -1383
  310. package/dist/fast/limits.d.ts +0 -152
  311. package/dist/fast/limits.js +0 -152
  312. package/dist/fast/resolve.d.ts +0 -44
  313. package/dist/fast/resolve.js +0 -107
  314. package/dist/fast/task-summary-types.d.ts +0 -66
  315. package/dist/fast/task-summary-types.js +0 -17
  316. package/dist/fast/types.d.ts +0 -141
  317. package/dist/fast/types.js +0 -14
  318. package/dist/governance/governed-dispatch.d.ts +0 -19
  319. package/dist/governance/governed-dispatch.js +0 -17
  320. package/dist/governance/limits.d.ts +0 -107
  321. package/dist/governance/limits.js +0 -131
  322. package/dist/governance/posture.d.ts +0 -35
  323. package/dist/governance/posture.js +0 -59
  324. package/dist/governance/rules/events-table.d.ts +0 -46
  325. package/dist/governance/rules/events-table.js +0 -94
  326. package/dist/governance/types.d.ts +0 -661
  327. package/dist/governance/types.js +0 -27
  328. package/dist/input/control-sequences.d.ts +0 -71
  329. package/dist/input/control-sequences.js +0 -222
  330. package/dist/input/csiu-keys.d.ts +0 -66
  331. package/dist/input/csiu-keys.js +0 -181
  332. package/dist/input/cursor-report.d.ts +0 -61
  333. package/dist/input/cursor-report.js +0 -97
  334. package/dist/input/enter-sequences.d.ts +0 -64
  335. package/dist/input/enter-sequences.js +0 -153
  336. package/dist/input/interrupt-gesture.d.ts +0 -18
  337. package/dist/input/interrupt-gesture.js +0 -19
  338. package/dist/input/keyboard-enhancement.d.ts +0 -42
  339. package/dist/input/keyboard-enhancement.js +0 -65
  340. package/dist/input/keymap.d.ts +0 -20
  341. package/dist/input/keymap.js +0 -99
  342. package/dist/input/limits.d.ts +0 -118
  343. package/dist/input/limits.js +0 -109
  344. package/dist/input/mouse-events.d.ts +0 -87
  345. package/dist/input/mouse-events.js +0 -212
  346. package/dist/input/paste-parse.d.ts +0 -83
  347. package/dist/input/paste-parse.js +0 -107
  348. package/dist/input/pointer-router.d.ts +0 -11
  349. package/dist/input/pointer-router.js +0 -14
  350. package/dist/input/stdin-filter.d.ts +0 -112
  351. package/dist/input/stdin-filter.js +0 -657
  352. package/dist/input/win32-input-mode.d.ts +0 -61
  353. package/dist/input/win32-input-mode.js +0 -269
  354. package/dist/logging/levels.d.ts +0 -40
  355. package/dist/logging/levels.js +0 -59
  356. package/dist/logging/secret-registry.d.ts +0 -32
  357. package/dist/logging/secret-registry.js +0 -73
  358. package/dist/proc/limits.d.ts +0 -214
  359. package/dist/proc/limits.js +0 -221
  360. package/dist/proc/progress.d.ts +0 -47
  361. package/dist/proc/progress.js +0 -163
  362. package/dist/proc/types.d.ts +0 -269
  363. package/dist/proc/types.js +0 -15
  364. package/dist/proc/wait-view.d.ts +0 -65
  365. package/dist/proc/wait-view.js +0 -66
  366. package/dist/prompts/copy.d.ts +0 -89
  367. package/dist/prompts/copy.js +0 -131
  368. package/dist/prompts/fill.d.ts +0 -51
  369. package/dist/prompts/fill.js +0 -46
  370. package/dist/prompts/limits.d.ts +0 -53
  371. package/dist/prompts/limits.js +0 -53
  372. package/dist/prompts/search.d.ts +0 -58
  373. package/dist/prompts/search.js +0 -146
  374. package/dist/prompts/types.d.ts +0 -204
  375. package/dist/prompts/types.js +0 -13
  376. package/dist/team/activity.d.ts +0 -67
  377. package/dist/team/activity.js +0 -130
  378. package/dist/team/limits.d.ts +0 -308
  379. package/dist/team/limits.js +0 -330
  380. package/dist/team/model.d.ts +0 -104
  381. package/dist/team/model.js +0 -150
  382. package/dist/team/panel-rows.d.ts +0 -48
  383. package/dist/team/panel-rows.js +0 -75
  384. package/dist/team/timeline.d.ts +0 -74
  385. package/dist/team/timeline.js +0 -101
  386. package/dist/team/types.d.ts +0 -354
  387. package/dist/team/types.js +0 -13
  388. package/dist/todo/acceptance.d.ts +0 -120
  389. package/dist/todo/acceptance.js +0 -399
  390. package/dist/todo/follow-through.d.ts +0 -138
  391. package/dist/todo/follow-through.js +0 -248
  392. package/dist/todo/limits.d.ts +0 -152
  393. package/dist/todo/limits.js +0 -152
  394. package/dist/todo/panel-rows.d.ts +0 -45
  395. package/dist/todo/panel-rows.js +0 -70
  396. package/dist/todo/plan-sections.d.ts +0 -60
  397. package/dist/todo/plan-sections.js +0 -108
  398. package/dist/todo/row-window.d.ts +0 -51
  399. package/dist/todo/row-window.js +0 -107
  400. package/dist/todo/types.d.ts +0 -124
  401. package/dist/todo/types.js +0 -12
  402. package/dist/tools/human-input.d.ts +0 -212
  403. package/dist/tools/human-input.js +0 -265
  404. package/dist/tools/patch.d.ts +0 -115
  405. package/dist/tools/patch.js +0 -453
  406. package/dist/tools/terminal-output.d.ts +0 -115
  407. package/dist/tools/terminal-output.js +0 -201
  408. package/dist/tools/tool-output-store.d.ts +0 -68
  409. package/dist/tools/tool-output-store.js +0 -102
  410. package/dist/ui/ActivityLine.d.ts +0 -26
  411. package/dist/ui/ActivityLine.js +0 -51
  412. package/dist/ui/AutocompletePopup.d.ts +0 -23
  413. package/dist/ui/AutocompletePopup.js +0 -17
  414. package/dist/ui/BottomStatusRow.d.ts +0 -10
  415. package/dist/ui/BottomStatusRow.js +0 -9
  416. package/dist/ui/Composer.d.ts +0 -115
  417. package/dist/ui/Composer.js +0 -64
  418. package/dist/ui/GovernancePanel.d.ts +0 -50
  419. package/dist/ui/GovernancePanel.js +0 -77
  420. package/dist/ui/GovernanceRun.d.ts +0 -18
  421. package/dist/ui/GovernanceRun.js +0 -11
  422. package/dist/ui/Header.d.ts +0 -48
  423. package/dist/ui/Header.js +0 -27
  424. package/dist/ui/Logo.d.ts +0 -32
  425. package/dist/ui/Logo.js +0 -65
  426. package/dist/ui/Markdown.d.ts +0 -29
  427. package/dist/ui/Markdown.js +0 -116
  428. package/dist/ui/PromptCaret.d.ts +0 -11
  429. package/dist/ui/PromptCaret.js +0 -31
  430. package/dist/ui/PromptInput.d.ts +0 -192
  431. package/dist/ui/PromptInput.js +0 -689
  432. package/dist/ui/QueuePanel.d.ts +0 -8
  433. package/dist/ui/QueuePanel.js +0 -9
  434. package/dist/ui/QueueStatusRow.d.ts +0 -24
  435. package/dist/ui/QueueStatusRow.js +0 -51
  436. package/dist/ui/ScrollbackShell.d.ts +0 -132
  437. package/dist/ui/ScrollbackShell.js +0 -26
  438. package/dist/ui/SessionOpener.d.ts +0 -30
  439. package/dist/ui/SessionOpener.js +0 -12
  440. package/dist/ui/StatusBar.d.ts +0 -130
  441. package/dist/ui/StatusBar.js +0 -61
  442. package/dist/ui/TeamPanel.d.ts +0 -76
  443. package/dist/ui/TeamPanel.js +0 -103
  444. package/dist/ui/ToastStack.d.ts +0 -8
  445. package/dist/ui/ToastStack.js +0 -31
  446. package/dist/ui/TodoPanel.d.ts +0 -52
  447. package/dist/ui/TodoPanel.js +0 -214
  448. package/dist/ui/Transcript.d.ts +0 -105
  449. package/dist/ui/Transcript.js +0 -258
  450. package/dist/ui/UpdateLine.d.ts +0 -44
  451. package/dist/ui/UpdateLine.js +0 -129
  452. package/dist/ui/activity-phrases.d.ts +0 -33
  453. package/dist/ui/activity-phrases.js +0 -50
  454. package/dist/ui/capabilities.d.ts +0 -27
  455. package/dist/ui/capabilities.js +0 -65
  456. package/dist/ui/clipboard-task.d.ts +0 -29
  457. package/dist/ui/clipboard-task.js +0 -66
  458. package/dist/ui/clipboard.d.ts +0 -31
  459. package/dist/ui/clipboard.js +0 -157
  460. package/dist/ui/color-runtime.d.ts +0 -5
  461. package/dist/ui/color-runtime.js +0 -29
  462. package/dist/ui/composer-input.d.ts +0 -38
  463. package/dist/ui/composer-input.js +0 -79
  464. package/dist/ui/composer-limits.d.ts +0 -30
  465. package/dist/ui/composer-limits.js +0 -45
  466. package/dist/ui/composer-rows.d.ts +0 -73
  467. package/dist/ui/composer-rows.js +0 -129
  468. package/dist/ui/console-bridge.d.ts +0 -19
  469. package/dist/ui/console-bridge.js +0 -52
  470. package/dist/ui/density.d.ts +0 -26
  471. package/dist/ui/density.js +0 -34
  472. package/dist/ui/display-tab.d.ts +0 -51
  473. package/dist/ui/display-tab.js +0 -82
  474. package/dist/ui/editor-navigation.d.ts +0 -55
  475. package/dist/ui/editor-navigation.js +0 -96
  476. package/dist/ui/editor-reducer.d.ts +0 -108
  477. package/dist/ui/editor-reducer.js +0 -187
  478. package/dist/ui/enter-frames.d.ts +0 -47
  479. package/dist/ui/enter-frames.js +0 -117
  480. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  481. package/dist/ui/entries/AssistantEntry.js +0 -43
  482. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  483. package/dist/ui/entries/CompactionCard.js +0 -222
  484. package/dist/ui/entries/DiffView.d.ts +0 -61
  485. package/dist/ui/entries/DiffView.js +0 -103
  486. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  487. package/dist/ui/entries/EntryFrame.js +0 -6
  488. package/dist/ui/entries/FastCard.d.ts +0 -53
  489. package/dist/ui/entries/FastCard.js +0 -105
  490. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  491. package/dist/ui/entries/GovernanceCard.js +0 -32
  492. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  493. package/dist/ui/entries/InvocationCard.js +0 -32
  494. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  495. package/dist/ui/entries/QueuedEntry.js +0 -33
  496. package/dist/ui/entries/RetryCard.d.ts +0 -56
  497. package/dist/ui/entries/RetryCard.js +0 -60
  498. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  499. package/dist/ui/entries/ServiceCard.js +0 -151
  500. package/dist/ui/entries/TeamCard.d.ts +0 -55
  501. package/dist/ui/entries/TeamCard.js +0 -94
  502. package/dist/ui/entries/TodoCard.d.ts +0 -54
  503. package/dist/ui/entries/TodoCard.js +0 -98
  504. package/dist/ui/entries/ToolCard.d.ts +0 -81
  505. package/dist/ui/entries/ToolCard.js +0 -169
  506. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  507. package/dist/ui/entries/ToolPreview.js +0 -208
  508. package/dist/ui/entries/UserEntry.d.ts +0 -36
  509. package/dist/ui/entries/UserEntry.js +0 -57
  510. package/dist/ui/entries/WaitCard.d.ts +0 -37
  511. package/dist/ui/entries/WaitCard.js +0 -92
  512. package/dist/ui/exit-snapshot.d.ts +0 -43
  513. package/dist/ui/exit-snapshot.js +0 -26
  514. package/dist/ui/frame-differ.d.ts +0 -166
  515. package/dist/ui/frame-differ.js +0 -354
  516. package/dist/ui/frame-observer.d.ts +0 -17
  517. package/dist/ui/frame-observer.js +0 -94
  518. package/dist/ui/frame-parser.d.ts +0 -7
  519. package/dist/ui/frame-parser.js +0 -18
  520. package/dist/ui/gauge.d.ts +0 -39
  521. package/dist/ui/gauge.js +0 -55
  522. package/dist/ui/glyphs.d.ts +0 -178
  523. package/dist/ui/glyphs.js +0 -165
  524. package/dist/ui/governance-copy.d.ts +0 -69
  525. package/dist/ui/governance-copy.js +0 -104
  526. package/dist/ui/governance-status.d.ts +0 -145
  527. package/dist/ui/governance-status.js +0 -326
  528. package/dist/ui/gradient.d.ts +0 -11
  529. package/dist/ui/gradient.js +0 -50
  530. package/dist/ui/ink-runtime.d.ts +0 -4
  531. package/dist/ui/ink-runtime.js +0 -51
  532. package/dist/ui/interaction-copy.d.ts +0 -84
  533. package/dist/ui/interaction-copy.js +0 -41
  534. package/dist/ui/interaction-hints.d.ts +0 -44
  535. package/dist/ui/interaction-hints.js +0 -97
  536. package/dist/ui/layout/AppShell.d.ts +0 -17
  537. package/dist/ui/layout/AppShell.js +0 -6
  538. package/dist/ui/layout/Gutter.d.ts +0 -67
  539. package/dist/ui/layout/Gutter.js +0 -42
  540. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  541. package/dist/ui/layout/MeasuredEntry.js +0 -30
  542. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  543. package/dist/ui/layout/OverlayFrame.js +0 -110
  544. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  545. package/dist/ui/layout/ScrollIndicator.js +0 -22
  546. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  547. package/dist/ui/layout/ScrollViewport.js +0 -222
  548. package/dist/ui/layout/agents-board.d.ts +0 -102
  549. package/dist/ui/layout/agents-board.js +0 -389
  550. package/dist/ui/layout/autocomplete.d.ts +0 -18
  551. package/dist/ui/layout/autocomplete.js +0 -26
  552. package/dist/ui/layout/budget.d.ts +0 -43
  553. package/dist/ui/layout/budget.js +0 -52
  554. package/dist/ui/layout/cells.d.ts +0 -61
  555. package/dist/ui/layout/cells.js +0 -156
  556. package/dist/ui/layout/document-layout.d.ts +0 -13
  557. package/dist/ui/layout/document-layout.js +0 -10
  558. package/dist/ui/layout/follow-state.d.ts +0 -138
  559. package/dist/ui/layout/follow-state.js +0 -148
  560. package/dist/ui/layout/frame.d.ts +0 -36
  561. package/dist/ui/layout/frame.js +0 -39
  562. package/dist/ui/layout/governance-board.d.ts +0 -121
  563. package/dist/ui/layout/governance-board.js +0 -382
  564. package/dist/ui/layout/governance-card.d.ts +0 -53
  565. package/dist/ui/layout/governance-card.js +0 -134
  566. package/dist/ui/layout/governance-chip.d.ts +0 -38
  567. package/dist/ui/layout/governance-chip.js +0 -64
  568. package/dist/ui/layout/governance-panel.d.ts +0 -85
  569. package/dist/ui/layout/governance-panel.js +0 -358
  570. package/dist/ui/layout/governance-roster.d.ts +0 -65
  571. package/dist/ui/layout/governance-roster.js +0 -275
  572. package/dist/ui/layout/header-hints.d.ts +0 -90
  573. package/dist/ui/layout/header-hints.js +0 -110
  574. package/dist/ui/layout/header-left.d.ts +0 -115
  575. package/dist/ui/layout/header-left.js +0 -206
  576. package/dist/ui/layout/invocation-card.d.ts +0 -41
  577. package/dist/ui/layout/invocation-card.js +0 -91
  578. package/dist/ui/layout/kit-chip.d.ts +0 -50
  579. package/dist/ui/layout/kit-chip.js +0 -81
  580. package/dist/ui/layout/overlay-window.d.ts +0 -43
  581. package/dist/ui/layout/overlay-window.js +0 -51
  582. package/dist/ui/layout/queue-layout.d.ts +0 -19
  583. package/dist/ui/layout/queue-layout.js +0 -26
  584. package/dist/ui/layout/rail.d.ts +0 -7
  585. package/dist/ui/layout/rail.js +0 -16
  586. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  587. package/dist/ui/layout/scroll-indicator.js +0 -36
  588. package/dist/ui/layout/scroll.d.ts +0 -37
  589. package/dist/ui/layout/scroll.js +0 -99
  590. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  591. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  592. package/dist/ui/layout/session-chip.d.ts +0 -52
  593. package/dist/ui/layout/session-chip.js +0 -64
  594. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  595. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  596. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  597. package/dist/ui/layout/status-detail-layout.js +0 -79
  598. package/dist/ui/layout/status-layout.d.ts +0 -140
  599. package/dist/ui/layout/status-layout.js +0 -262
  600. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  601. package/dist/ui/layout/task-summary-cell.js +0 -65
  602. package/dist/ui/layout/team-panel.d.ts +0 -18
  603. package/dist/ui/layout/team-panel.js +0 -25
  604. package/dist/ui/layout/team-row.d.ts +0 -139
  605. package/dist/ui/layout/team-row.js +0 -246
  606. package/dist/ui/layout/todo-layout.d.ts +0 -62
  607. package/dist/ui/layout/todo-layout.js +0 -102
  608. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  609. package/dist/ui/layout/useTerminalSize.js +0 -50
  610. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  611. package/dist/ui/layout/viewport-geometry.js +0 -28
  612. package/dist/ui/layout/virtual-window.d.ts +0 -112
  613. package/dist/ui/layout/virtual-window.js +0 -494
  614. package/dist/ui/layout/wait-bar.d.ts +0 -34
  615. package/dist/ui/layout/wait-bar.js +0 -48
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -63
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -130
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,258 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /** Virtualized full-screen transcript and entry cards. */
3
- /** Virtualized full-screen transcript and shared entry cards. */
4
- import React, { useCallback } from 'react';
5
- import { Box, Text } from 'ink';
6
- import Spinner from 'ink-spinner';
7
- import { pickGlyphs, toolGlyph } from './glyphs.js';
8
- import { separationRows } from './density.js';
9
- import { EntryFrame } from './entries/EntryFrame.js';
10
- import { UserEntry } from './entries/UserEntry.js';
11
- import { InvocationCard } from './entries/InvocationCard.js';
12
- import { QueuedEntry } from './entries/QueuedEntry.js';
13
- import { AssistantEntry } from './entries/AssistantEntry.js';
14
- import { ToolCard, statusColor, toolEntryGlyph } from './entries/ToolCard.js';
15
- import { WaitCard } from './entries/WaitCard.js';
16
- import { TeamCard, teamCardColor } from './entries/TeamCard.js';
17
- import { GovernanceCard, governanceCardColor } from './entries/GovernanceCard.js';
18
- import { isLiveTeamCard, rosterCounts } from './team-status.js';
19
- import { TodoCard, todoCardColor } from './entries/TodoCard.js';
20
- import { RetryCard, retryCardColor } from './entries/RetryCard.js';
21
- import { FastCard, fastCardColor } from './entries/FastCard.js';
22
- import { CompactionCard, compactionCardColor } from './entries/CompactionCard.js';
23
- import { ServiceCard, serviceCardColor, serviceGlyph } from './entries/ServiceCard.js';
24
- import { MeasuredEntry } from './layout/MeasuredEntry.js';
25
- import { useViewportGeometry } from './layout/viewport-geometry.js';
26
- import { estimateEntryRows, heightKey, selectWindow, VIRTUAL_LIMITS, } from './layout/virtual-window.js';
27
- import { advanceTailRows } from './layout/follow-state.js';
28
- /**
29
- * The value `EntryView` should receive for `nowSec` on THIS entry.
30
- *
31
- * `undefined` for everything that is not a running tool, which is what keeps
32
- * every other card's memo boundary intact — `undefined === undefined` in the
33
- * comparator, on every frame, forever.
34
- *
35
- * EXPORTED for `ui/scrollback/LiveTail.tsx` (release-gate-and-native-panels §6.5), and
36
- * that is the whole of this feature's change to this file: the live region mounts the
37
- * same `EntryView` the transcript does, so it must feed it the same per-entry clock.
38
- * A copy of this rule in the band would be a second answer to "does this card tick?"
39
- * and the two would disagree the first time a consumer is added.
40
- */
41
- export function nowSecFor(entry, nowSec) {
42
- if (entry.kind === 'tool' && entry.status === 'running')
43
- return nowSec;
44
- // THE LIVE COMPACTION CARD IS THE SECOND CONSUMER (hardening W5). It is at most
45
- // ONE entry in the whole transcript, and it settles - so the memo boundary this
46
- // function protects is unchanged for every other card, forever.
47
- if (entry.kind === 'compaction' && entry.live)
48
- return nowSec;
49
- // THE FOURTH CONSUMER IS A LIVE DISPATCH CARD (tui-subagent-double-roster A-1):
50
- // a child's elapsed time must advance while it works, and `TeamCard` reads this
51
- // same 1 Hz clock instead of a second `Date.now()` per render. A suppressed card
52
- // never mounts, so this only keeps the reading honest for a directly mounted one.
53
- if (entry.kind === 'team' && entry.active)
54
- return nowSec;
55
- // THE THIRD CONSUMER IS A LIVE JOB (long-task-jobs D-8), and it is the reason
56
- // this stays a single 1 Hz clock: a task's elapsed time and its `no output`
57
- // badge both have to move, and a per-card `setInterval` would be one timer per
58
- // job. `terminal` entries are excluded so a settled record never re-renders.
59
- if (entry.kind === 'service' && !entry.terminal)
60
- return nowSec;
61
- return undefined;
62
- }
63
- function noticeColor(level, theme) {
64
- if (level === 'error')
65
- return theme.noticeError;
66
- if (level === 'warn')
67
- return theme.noticeWarn;
68
- return theme.noticeInfo;
69
- }
70
- function noticeSymbol(level, theme) {
71
- if (level === 'error')
72
- return theme.symbols.error;
73
- if (level === 'warn')
74
- return theme.symbols.warn;
75
- return theme.symbols.info;
76
- }
77
- function EntryViewImpl({ entry, prev, expanded, thinkingVisible, reducedMotion, density, theme, caps, nowSec, }) {
78
- const glyphs = pickGlyphs(caps);
79
- const separation = separationRows(prev, entry, density);
80
- const frame = (glyph, color, children) => (_jsx(EntryFrame, { glyph: glyph, color: color, continuation: glyphs.railVertical, separation: separation, spacerColor: theme.border, children: children }));
81
- switch (entry.kind) {
82
- case 'user':
83
- return frame(glyphs.user, theme.user, entry.invocation
84
- ? _jsx(InvocationCard, { card: entry.invocation, theme: theme, caps: caps })
85
- : _jsx(UserEntry, { text: entry.text, theme: theme, caps: caps }));
86
- case 'queued':
87
- // `theme.muted`: quieter than a user message, louder than a notice --
88
- // the row exists to be noticed UNTIL it is accepted, then rewritten in
89
- // place by `turnStart` (5.2.3).
90
- return frame(glyphs.queued, theme.muted, _jsx(QueuedEntry, { text: entry.text, theme: theme, caps: caps }));
91
- case 'assistant': {
92
- // Render-layer backstop for the reducer prune (defect 5) - the reducer is the
93
- // source of truth, and this only catches a settled, entirely empty bubble
94
- // that reached here some other way. Returned BEFORE `frame(...)`, so neither
95
- // the glyph row nor the separation row is drawn.
96
- if (!entry.streaming && entry.text.trim() === '' && (entry.thinking ?? '').trim() === '') {
97
- return null;
98
- }
99
- const animate = entry.streaming && !reducedMotion && caps.unicode;
100
- return frame(animate ? _jsx(Spinner, { type: "dots" }) : glyphs.assistant, theme.primary, _jsx(AssistantEntry, { text: entry.text, thinking: entry.thinking, thinkingOpen: entry.thinkingOpen, thinkingVisible: thinkingVisible, streaming: entry.streaming, aborted: entry.aborted,
101
- // `EntryViewImpl` hands each renderer EXPLICIT SCALAR PROPS, so
102
- // nothing on the entry reaches a component by itself (P1-6b).
103
- thinkingMs: entry.thinkingMs, theme: theme, caps: caps }));
104
- }
105
- case 'tool':
106
- // THE CARD IS CHOSEN FROM THE ENTRY ITSELF, with no extra prop (extended-job-wait
107
- // RV-3): `LiveTail` mounts this same component for native-scroll mode, and a
108
- // value only `Transcript` passed would leave that mode on the one-line card.
109
- if (entry.name === 'job_wait' && entry.status === 'running' && entry.wait) {
110
- return frame(toolEntryGlyph(entry.name, caps), statusColor(entry.status, theme), _jsx(WaitCard, { view: entry.wait, nowSec: nowSec, reducedMotion: reducedMotion, theme: theme, caps: caps }));
111
- }
112
- return frame(toolEntryGlyph(entry.name, caps), statusColor(entry.status, theme), _jsx(ToolCard, { name: entry.name, label: entry.label, argsRaw: entry.argsRaw, args: entry.args, status: entry.status, preview: entry.preview, patch: entry.patch, durationMs: entry.durationMs, isError: entry.isError, expanded: expanded, reducedMotion: reducedMotion,
113
- // `entry.live` AND NOT `entry.live ?? []` (P2-4): `ToolCard`'s default
114
- // comparator sees a fresh `[]` as a changed prop, which is why that
115
- // file already keeps a shared `EMPTY_LINES`.
116
- live: entry.live, lastOutputAt: entry.lastOutputAt, nowSec: nowSec, theme: theme, caps: caps }));
117
- case 'team': {
118
- // THE LIVE DISPATCH HAS EXACTLY ONE SURFACE (tui-subagent-double-roster A-2):
119
- // while `active`, the roster (`TeamPanel`) is the only live subagent block, so
120
- // the transcript draws nothing for this entry and the card appears - once - as
121
- // history the moment the dispatch settles. Returning BEFORE `frame(...)` draws
122
- // neither the rail marker nor the separation row.
123
- //
124
- // `renderer.tsx`'s offscreen measurement goes through THIS function too, which is
125
- // what makes the native print pump's `measureWindow` agree with the frame for
126
- // free. `estimateEntryRows` carries the same predicate (0 rows), so no other
127
- // arithmetic has to know about the suppression.
128
- if (isLiveTeamCard(entry))
129
- return null;
130
- return frame(glyphs.teamAgent, teamCardColor(rosterCounts(entry.runs), entry.active, entry.aborted, theme), _jsx(TeamCard, { requested: entry.requested, runs: entry.runs, aborted: entry.aborted, durationMs: entry.durationMs, active: entry.active, expanded: expanded, reducedMotion: reducedMotion, theme: theme, caps: caps, nowSec: nowSecFor(entry, nowSec) }));
131
- }
132
- case 'governance':
133
- return frame(glyphs.teamAgent, governanceCardColor(entry.card, theme), _jsx(GovernanceCard, { card: entry.card, theme: theme, caps: caps }));
134
- case 'todo':
135
- return frame(toolGlyph(glyphs, 'todo_write'), todoCardColor(entry.doneCount, entry.total, entry.live, theme), _jsx(TodoCard, { items: entry.items, doneCount: entry.doneCount, total: entry.total, acceptance: entry.acceptance ?? null, live: entry.live, interrupted: entry.interrupted, theme: theme, caps: caps }));
136
- case 'retry':
137
- return frame(entry.phase === 'exhausted' ? glyphs.error : glyphs.retry, retryCardColor(entry.phase, theme), _jsx(RetryCard, { attempt: entry.attempt, maxRetries: entry.maxRetries, errorType: entry.errorType, phase: entry.phase, resumeAt: entry.resumeAt, totalRetries: entry.totalRetries, elapsedMs: entry.elapsedMs,
138
- // READ HERE, not threaded from `App`, and that is what keeps the memo
139
- // boundary intact: a `now` prop on every `EntryView` would change on
140
- // every frame and re-render the whole transcript. The `retryTick` action
141
- // refreshes THIS entry's identity once a second, which re-renders this
142
- // one card and gives it a fresh clock; nothing else moves.
143
- now: Date.now(),
144
- // NOT THREADED FROM `App`: reaching this renderer means a TUI is
145
- // mounted, and the TUI always binds Esc to abort. Headless mode writes
146
- // its retry lines to stderr and never mounts an entry component, and the
147
- // exit replay goes through `transcript-text.ts`. `RetryCard` keeps the
148
- // prop so the render tests can assert the suppressed form.
149
- reducedMotion: reducedMotion, theme: theme, caps: caps }));
150
- case 'fast':
151
- return frame(entry.status === 'failed' ? glyphs.toolError : glyphs.teamAgent, fastCardColor(entry.status, theme), _jsx(FastCard, { reviewIndex: entry.reviewIndex, model: entry.model, status: entry.status, text: entry.text, detail: entry.detail, turn: entry.turn, durationMs: entry.durationMs, live: entry.live, reducedMotion: reducedMotion, theme: theme, caps: caps }));
152
- case 'compaction':
153
- return frame(entry.applied || entry.live ? glyphs.compaction : glyphs.toolError, compactionCardColor(entry, theme), _jsx(CompactionCard, { index: entry.index, decision: entry.decision, memoryVersion: entry.memoryVersion, trigger: entry.trigger, mode: entry.mode, applied: entry.applied, reason: entry.reason, messagesBefore: entry.messagesBefore, messagesAfter: entry.messagesAfter, tokensBefore: entry.tokensBefore, tokensAfter: entry.tokensAfter, summary: entry.summary, model: entry.model, durationMs: entry.durationMs, tailRelief: entry.tailRelief, phase: entry.phase, keepRelaxed: entry.keepRelaxed, retainedTurns: entry.retainedTurns, retainedMessages: entry.retainedMessages, keepRecentTurnsUsed: entry.keepRecentTurnsUsed, elidedMessages: entry.elidedMessages,
154
- // ONLY WHILE LIVE, and only when the clock has ticked at least once:
155
- // `nowSec` is `undefined` until then, and a settled card must keep
156
- // rendering `durationMs` rather than a figure that would drift.
157
- elapsedMs: entry.live && nowSec !== undefined && entry.startedAt !== undefined
158
- ? Math.max(0, nowSec * 1000 - entry.startedAt)
159
- : undefined, live: entry.live, expanded: expanded, reducedMotion: reducedMotion, theme: theme, caps: caps }));
160
- case 'service':
161
- return frame(serviceGlyph(entry, glyphs), serviceCardColor(entry, theme), _jsx(ServiceCard, { serviceId: entry.serviceId, jobKind: entry.jobKind, command: entry.command, status: entry.status, url: entry.url, port: entry.port, exitCode: entry.exitCode, startedAt: entry.startedAt, readyAt: entry.readyAt, endedAt: entry.endedAt, rows: entry.rows, terminal: entry.terminal, killIncomplete: entry.killIncomplete, progress: entry.progress, stalled: entry.stalled, lastOutputAt: entry.lastOutputAt, nowSec: nowSec, expanded: expanded, reducedMotion: reducedMotion, theme: theme, caps: caps }));
162
- case 'notice':
163
- return frame(noticeSymbol(entry.level, theme), noticeColor(entry.level, theme), _jsx(Text, { color: noticeColor(entry.level, theme), children: entry.text }));
164
- default:
165
- return null;
166
- }
167
- }
168
- /**
169
- * THE memo boundary that makes a long transcript cheap (L2 / R3).
170
- *
171
- * The comparator is written out rather than defaulted because `prev` is the one
172
- * prop whose identity matters for a reason the type does not show: it feeds
173
- * `separationRows`, so an entry whose PREDECESSOR changed kind must re-render
174
- * even though the entry itself did not.
175
- *
176
- * I-L2-1 — `theme` and `caps` are `useMemo`d in `App.tsx` and are therefore
177
- * referentially stable across frames. If a future change makes either a fresh
178
- * object per render, EVERY boundary below becomes a no-op AND NOTHING FAILS;
179
- * `render-memo.test.tsx` asserts that stability directly so the trap is a red
180
- * test rather than a silent regression.
181
- */
182
- export const EntryView = React.memo(EntryViewImpl, (a, b) => {
183
- return (a.entry === b.entry &&
184
- a.prev === b.prev &&
185
- a.expanded === b.expanded &&
186
- a.thinkingVisible === b.thinkingVisible &&
187
- a.reducedMotion === b.reducedMotion &&
188
- a.density === b.density &&
189
- a.theme === b.theme &&
190
- a.caps === b.caps &&
191
- /*
192
- * ELEVENTH TERM, AND OMITTING IT IS THE TRAP I-L2-1 DESCRIBES ONE COMMENT UP
193
- * (P1-3). This comparator is a CLOSED LIST: a prop absent from it changes
194
- * without invalidating the boundary, so `ToolCard` is never re-rendered and
195
- * the stall row freezes at whatever second it first drew — AC-26's "and the
196
- * seconds advance" failing with nothing reporting it.
197
- *
198
- * It is free: `nowSecFor` returns `undefined` for every entry that is not a
199
- * running tool, and `undefined === undefined` on every frame.
200
- */
201
- a.nowSec === b.nowSec);
202
- });
203
- export function TranscriptList({ entries, expandedToolIds, thinkingVisible, reducedMotion, density, nowSec, theme, caps, windowSize, cols, heights, mountedSink, tailSink, }) {
204
- const size = Math.max(1, Math.floor(windowSize));
205
- const visible = entries.length > size ? entries.slice(-size) : entries;
206
- const collapsed = entries.length - visible.length;
207
- const glyphs = pickGlyphs(caps);
208
- const geometry = useViewportGeometry();
209
- // Ctrl+T changes every assistant entry's height without changing any entry,
210
- // so it has to reach the cache key or the spacers freeze at the wrong size.
211
- const flags = thinkingVisible ? 't' : '';
212
- // ONE key builder, shared by the lookup below and by `MeasuredEntry`'s report.
213
- // Two spellings of the same key is a SILENT failure and not a compile error:
214
- // the measurement lands under a key `resolve` never asks for, every entry
215
- // falls back to its estimate for the rest of the session, and the spacers
216
- // quietly encode heights nothing will ever correct.
217
- const keyOf = (entry) => heightKey(entry, cols, !!expandedToolIds[entry.id], density, flags);
218
- const { resolve, report } = heights;
219
- const heightOf = useCallback((index) => {
220
- const entry = visible[index];
221
- // `thinkingVisible` IS PASSED, not left to the parameter's conservative
222
- // default (P1-6a / condition 5). With thinking hidden the default would
223
- // inflate every assistant entry that thought by its whole wrapped length,
224
- // and an entry estimated at 400 rows against a real height of 1 is exactly
225
- // the one `selectWindow` then never mounts and never re-measures.
226
- return resolve(keyOf(entry), () => estimateEntryRows(entry, cols, density, !!expandedToolIds[entry.id], thinkingVisible));
227
- },
228
- // Memoised only incidentally: `visible` IS `entries` while the session is
229
- // shorter than the horizon and a fresh slice once it is past it, so this
230
- // rebuilds on some frames and not others. Either is correct — `selectWindow`
231
- // consumes it synchronously below and it is never handed to a child — and
232
- // `keyOf` is omitted from the list because every input it closes over is
233
- // already in it.
234
- // eslint-disable-next-line react-hooks/exhaustive-deps
235
- [visible, expandedToolIds, cols, density, flags, resolve, thinkingVisible]);
236
- const selection = selectWindow({
237
- entries: visible,
238
- heightOf,
239
- viewportRows: geometry.viewportRows,
240
- trailingContentRows: geometry.trailingContentRows,
241
- offset: geometry.offset,
242
- overscan: VIRTUAL_LIMITS.overscan,
243
- });
244
- const slice = visible.slice(selection.startIndex, selection.endIndex);
245
- if (mountedSink)
246
- mountedSink.current = slice.length;
247
- // One more pass over the array `selectWindow` has already walked, reading the
248
- // SAME height table and never the geometry context (§4.3.1a). `visible` is
249
- // what is drawn, so its last entry is the tail; entries the horizon dropped are
250
- // not "removed rows" and must not register as one.
251
- if (tailSink) {
252
- tailSink.current = advanceTailRows(tailSink.current, visible.map((entry) => entry.id), heightOf);
253
- }
254
- return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [collapsed > 0 && (_jsxs(Text, { wrap: "truncate", color: theme.hintFg ?? theme.muted, children: [glyphs.ellipsis, " ", collapsed, " earlier ", collapsed === 1 ? 'entry' : 'entries', " collapsed (/save exports the full session)"] })), selection.leadingRows > 0 && (_jsx(Box, { flexShrink: 0, height: selection.leadingRows })), slice.map((entry, i) => {
255
- const index = selection.startIndex + i;
256
- return (_jsx(MeasuredEntry, { heightKey: keyOf(entry), onMeasure: report, children: _jsx(EntryView, { entry: entry, prev: index > 0 ? visible[index - 1] : undefined, expanded: !!expandedToolIds[entry.id], thinkingVisible: thinkingVisible, reducedMotion: reducedMotion, density: density, nowSec: nowSecFor(entry, nowSec), theme: theme, caps: caps }) }, entry.id));
257
- }), selection.trailingRows > 0 && (_jsx(Box, { flexShrink: 0, height: selection.trailingRows }))] }));
258
- }
@@ -1,44 +0,0 @@
1
- /**
2
- * The update line (cli-auto-update section 6.2) - the THIRD occupant of the
3
- * already-budgeted bottom row, after the toast stack and the activity line.
4
- *
5
- * ONE ROW, ALWAYS, AND NEVER `null` (C-15 / P0-1 / D-19). The return type is
6
- * `React.ReactElement` rather than `React.ReactElement | null`, so the compiler
7
- * refuses the shortcut: `BottomStatusRow` decides presence with `if (update)`,
8
- * which tests a REACT ELEMENT, and an element whose render returns `null` is
9
- * still truthy. Taking that branch would emit a box of ZERO rows - the frame
10
- * keeps its fixed height, Yoga hands the row to the transcript, and
11
- * `viewportRows()` goes on reporting the old number to `ScrollViewport`,
12
- * `selectWindow`, `overlayMaxRows`, `popupMaxRows` and `buildTodoRailLayout`. The
13
- * transcript would gain a row while the updater is idle and lose it the moment
14
- * it has news. Presence is the CALLER's decision, through
15
- * `shouldRenderUpdateLine`, exactly as `App.tsx` already decides the activity
16
- * line's with `running && !overlayNode`.
17
- *
18
- * PURE: a function of `snapshot + compact + theme + caps`. No state, no timer,
19
- * no clock. `<Text wrap="truncate">` so a narrow terminal degrades by truncation
20
- * rather than by wrapping into a second row the fixed frame cannot afford.
21
- *
22
- * ASCII ONLY, and every user-visible character comes from `pickGlyphs(caps)`
23
- * (C-3). No literal `...`, `+` or `~` may be spelled inline - `ActivityLine`'s
24
- * routing of even the ellipsis through `pickGlyphs` is the precedent.
25
- *
26
- * `compact` RATHER THAN `cols` (IF-1). Section 6.2 describes the width tiers in
27
- * terms of `cols`, but resolving them here would mean importing
28
- * `UPDATE_LIMITS.statusCompactCols` - a VALUE - from `update/`, and section 3.1
29
- * rule 1 requires this module's only edge into that tree to be erasable by tsc.
30
- * The caller owns `UPDATE_LIMITS` already (it computes presence from it), so it
31
- * resolves the threshold too. Same rule as presence: the call site decides.
32
- */
33
- import React from 'react';
34
- import type { Theme } from './theme.js';
35
- import type { TermCapabilities } from './capabilities.js';
36
- import type { UpdateSnapshot } from '../update/types.js';
37
- export interface UpdateLineProps {
38
- snapshot: UpdateSnapshot;
39
- /** `cols < UPDATE_LIMITS.statusCompactCols`, resolved by the caller. */
40
- compact: boolean;
41
- theme: Theme;
42
- caps: TermCapabilities;
43
- }
44
- export declare function UpdateLine({ snapshot, compact, theme, caps }: UpdateLineProps): React.ReactElement;
@@ -1,129 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { pickGlyphs } from './glyphs.js';
4
- export function UpdateLine({ snapshot, compact, theme, caps }) {
5
- const glyphs = pickGlyphs(caps);
6
- const version = snapshot.latestVersion ?? snapshot.currentVersion;
7
- const advice = snapshot.advice ?? '';
8
- const dot = glyphs.midDot;
9
- const line = (() => {
10
- if (snapshot.phase === 'installing') {
11
- return {
12
- glyph: glyphs.arrowUp,
13
- text: compact
14
- ? `${version}${glyphs.ellipsis}`
15
- : `updating to ${version}${glyphs.ellipsis}`,
16
- color: theme.muted,
17
- };
18
- }
19
- if (snapshot.phase === 'ready') {
20
- return {
21
- glyph: glyphs.check,
22
- text: compact ? `${version} ready` : `${version} installed ${dot} restart aragon to apply`,
23
- color: theme.toast.success,
24
- };
25
- }
26
- if (snapshot.phase === 'failed') {
27
- // H2's three classified failures (cli-auto-update-hardening section 8).
28
- // Each names the REAL obstacle rather than the generic one, because each
29
- // is allowed to break the three-strike silence and a notice that breaks
30
- // silence must be worth the interruption.
31
- if (snapshot.reason === 'blocked-by-os') {
32
- // `npm i -g` FROM THE SAME SHELL HITS THE SAME HANDLE. On Windows the
33
- // shim that launched us is being read by the `cmd.exe` running it for
34
- // as long as our process lives, and npm's install rewrites that shim -
35
- // so the generic advice is not merely unhelpful here, it is a wrong
36
- // instruction (R-3 / section 5.3.1).
37
- return {
38
- glyph: glyphs.warn,
39
- text: compact || !advice
40
- ? 'update blocked'
41
- : `update blocked ${dot} close other aragon windows, then: ${advice}`,
42
- color: theme.noticeWarn,
43
- };
44
- }
45
- if (snapshot.reason === 'no-space') {
46
- return {
47
- glyph: glyphs.warn,
48
- text: compact ? 'no disk space' : `update failed ${dot} no disk space`,
49
- color: theme.noticeWarn,
50
- };
51
- }
52
- if (snapshot.reason === 'not-writable') {
53
- return {
54
- glyph: glyphs.warn,
55
- text: compact || !advice
56
- ? 'update blocked'
57
- : `update needs write access ${dot} ${advice}`,
58
- color: theme.noticeWarn,
59
- };
60
- }
61
- return {
62
- glyph: glyphs.warn,
63
- text: compact || !advice ? 'update failed' : `update failed ${dot} ${advice}`,
64
- color: theme.noticeWarn,
65
- };
66
- }
67
- if (snapshot.phase === 'available') {
68
- if (snapshot.reason === 'node-too-old') {
69
- // Both numbers or neither: "needs a newer Node" without saying which is
70
- // a notice the user cannot act on.
71
- const detail = snapshot.requiredNode && snapshot.runningNode
72
- ? `${version} needs Node ${snapshot.requiredNode} (running ${snapshot.runningNode})`
73
- : `${version} needs a newer Node`;
74
- return {
75
- glyph: glyphs.warn,
76
- text: compact ? 'needs newer Node' : detail,
77
- color: theme.noticeWarn,
78
- };
79
- }
80
- if (snapshot.reason === 'install-ineffective') {
81
- return {
82
- glyph: glyphs.warn,
83
- text: compact
84
- ? 'check npm prefix'
85
- : `${version} installed elsewhere${advice ? ` ${dot} ${advice}` : ''}`,
86
- color: theme.noticeWarn,
87
- };
88
- }
89
- return {
90
- glyph: glyphs.arrowUp,
91
- text: compact
92
- ? version
93
- : `${version} available${advice ? ` ${dot} ${advice}` : ''}`,
94
- color: theme.muted,
95
- };
96
- }
97
- // H1's rollback notice, and it goes HERE rather than in a phase branch
98
- // (cli-auto-update-hardening section 8 / P0-1). It is true for a whole
99
- // SESSION rather than for a phase, so `shouldRenderUpdateLine` decides its
100
- // presence from `snapshot.rolledBackFrom` outside `phase` entirely - and the
101
- // phases that leaves are exactly `idle` / `checking`, which is this
102
- // fallthrough. An earlier draft put it in the `failed` / `available`
103
- // branches and keyed it on phase `idle`, a phase neither branch handles;
104
- // three independent suppressions, so the one line telling a user their CLI
105
- // had been silently downgraded could never have appeared.
106
- //
107
- // NOT `version` ABOVE: that is `latestVersion ?? currentVersion`, and after
108
- // a rollback `latestVersion` may well be the BAD release we just escaped.
109
- if (snapshot.rolledBackFrom) {
110
- const to = snapshot.rolledBackTo ?? snapshot.currentVersion;
111
- return {
112
- glyph: glyphs.warn,
113
- text: compact
114
- ? 'rolled back'
115
- : `rolled back to ${to} after ${snapshot.rolledBackFrom} failed to start`,
116
- color: theme.noticeWarn,
117
- };
118
- }
119
- // `idle` / `checking`, and a `failed` below the notice threshold. The CALLER
120
- // never mounts us here (`shouldRenderUpdateLine` is false), but the row must
121
- // still be exactly one row if it ever is - the same blank-row discipline
122
- // `ToastStack` applies to its own budgeted row.
123
- return null;
124
- })();
125
- if (!line) {
126
- return (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { children: " " }) }));
127
- }
128
- return (_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { wrap: "truncate", color: line.color, children: [' ', line.glyph, " ", line.text] }) }));
129
- }
@@ -1,33 +0,0 @@
1
- /**
2
- * The working line's vocabulary (agent-activity-presentation §3.2.1).
3
- *
4
- * PURE: no React, no Ink, no clock. Everything here is a function of the two
5
- * numbers the caller already has, which is what makes the rotation testable
6
- * without a terminal and without fake timers.
7
- */
8
- /** Rotation cadence. Long enough to read, short enough to prove liveness. */
9
- export declare const PHRASE_ROTATE_MS = 4000;
10
- /**
11
- * ASCII ONLY, by the rule this tree is under (`glyphs.ts` header, enforced by
12
- * `glyphs.test.ts`'s static scan). Present participles, so the line reads as an
13
- * action in progress; twelve characters or fewer so the row never fights the
14
- * terminal's width.
15
- */
16
- export declare const ACTIVITY_PHRASES: readonly string[];
17
- /**
18
- * The phrase for a run at a moment.
19
- *
20
- * PURE AND TOTAL: the same inputs give the same word, for any finite numbers,
21
- * including a `now` before `startedAt`.
22
- *
23
- * The run's start seeds the sequence, so two consecutive runs do not open on the
24
- * same word — which is what makes the line read as alive rather than as a fixed
25
- * label. (The seed's granularity is one second, so two runs starting inside the
26
- * same second do share an opening word — P2-6.)
27
- *
28
- * `rotate: false` is the reduced-motion path: the word is chosen once for the run
29
- * and then holds. Rotating text IS motion, and a user who asked for
30
- * `reducedMotion` asked for the screen to stop changing under them; degrading
31
- * only the spinner would honor the letter of the setting and not its point.
32
- */
33
- export declare function pickActivityPhrase(startedAt: number, now: number, rotate?: boolean): string;
@@ -1,50 +0,0 @@
1
- /**
2
- * The working line's vocabulary (agent-activity-presentation §3.2.1).
3
- *
4
- * PURE: no React, no Ink, no clock. Everything here is a function of the two
5
- * numbers the caller already has, which is what makes the rotation testable
6
- * without a terminal and without fake timers.
7
- */
8
- /** Rotation cadence. Long enough to read, short enough to prove liveness. */
9
- export const PHRASE_ROTATE_MS = 4_000;
10
- /**
11
- * ASCII ONLY, by the rule this tree is under (`glyphs.ts` header, enforced by
12
- * `glyphs.test.ts`'s static scan). Present participles, so the line reads as an
13
- * action in progress; twelve characters or fewer so the row never fights the
14
- * terminal's width.
15
- */
16
- export const ACTIVITY_PHRASES = [
17
- 'Assembling', 'Brewing', 'Calibrating', 'Cogitating', 'Composing',
18
- 'Computing', 'Concocting', 'Conjuring', 'Considering', 'Crunching',
19
- 'Distilling', 'Divining', 'Drafting', 'Excavating', 'Fathoming',
20
- 'Fermenting', 'Finessing', 'Foraging', 'Germinating', 'Herding',
21
- 'Incubating', 'Inferring', 'Marinating', 'Meandering', 'Mulling',
22
- 'Musing', 'Noodling', 'Percolating', 'Pondering', 'Puzzling',
23
- 'Ruminating', 'Scheming', 'Sculpting', 'Simmering', 'Sketching',
24
- 'Spelunking', 'Steeping', 'Stitching', 'Summoning', 'Tinkering',
25
- 'Unfurling', 'Untangling', 'Weaving', 'Whittling', 'Wrangling',
26
- ];
27
- /**
28
- * The phrase for a run at a moment.
29
- *
30
- * PURE AND TOTAL: the same inputs give the same word, for any finite numbers,
31
- * including a `now` before `startedAt`.
32
- *
33
- * The run's start seeds the sequence, so two consecutive runs do not open on the
34
- * same word — which is what makes the line read as alive rather than as a fixed
35
- * label. (The seed's granularity is one second, so two runs starting inside the
36
- * same second do share an opening word — P2-6.)
37
- *
38
- * `rotate: false` is the reduced-motion path: the word is chosen once for the run
39
- * and then holds. Rotating text IS motion, and a user who asked for
40
- * `reducedMotion` asked for the screen to stop changing under them; degrading
41
- * only the spinner would honor the letter of the setting and not its point.
42
- */
43
- export function pickActivityPhrase(startedAt, now, rotate = true) {
44
- const n = ACTIVITY_PHRASES.length;
45
- if (!Number.isFinite(startedAt) || !Number.isFinite(now))
46
- return ACTIVITY_PHRASES[0];
47
- const seed = Math.floor(startedAt / 1000);
48
- const step = rotate ? Math.floor(Math.max(0, now - startedAt) / PHRASE_ROTATE_MS) : 0;
49
- return ACTIVITY_PHRASES[(((seed + step) % n) + n) % n];
50
- }
@@ -1,27 +0,0 @@
1
- /**
2
- * Terminal capability detection (spec §3.2).
3
- *
4
- * A *pure* `detectCapabilities(env, stdout)` that reports how much color and
5
- * which glyph set the current terminal can render, so the theme engine can
6
- * degrade truecolor → 256 → 16 → monochrome and swap Unicode box/round glyphs
7
- * for ASCII on legacy terminals (e.g. `cmd.exe`). Keeping it env-in / value-out
8
- * makes it unit-testable without a real TTY.
9
- */
10
- export interface TermCapabilities {
11
- /** 0 none · 1 basic-16 · 2 ansi-256 · 3 truecolor. */
12
- colorLevel: 0 | 1 | 2 | 3;
13
- /** May we use box/round glyphs, spinners, and emoji-ish symbols? */
14
- unicode: boolean;
15
- }
16
- type EnvLike = Record<string, string | undefined>;
17
- interface StdoutLike {
18
- isTTY?: boolean;
19
- }
20
- /**
21
- * Detect the terminal's color depth and Unicode support. `stdout` is accepted
22
- * for future TTY-aware refinements and kept in the signature for callers.
23
- */
24
- export declare function detectCapabilities(env: EnvLike, _stdout?: StdoutLike): TermCapabilities;
25
- /** Full TUI styling is a policy, not a guess based on inherited shell markers. */
26
- export declare function resolveTuiCapabilities(env: EnvLike, color?: boolean): TermCapabilities;
27
- export {};
@@ -1,65 +0,0 @@
1
- /**
2
- * Terminal capability detection (spec §3.2).
3
- *
4
- * A *pure* `detectCapabilities(env, stdout)` that reports how much color and
5
- * which glyph set the current terminal can render, so the theme engine can
6
- * degrade truecolor → 256 → 16 → monochrome and swap Unicode box/round glyphs
7
- * for ASCII on legacy terminals (e.g. `cmd.exe`). Keeping it env-in / value-out
8
- * makes it unit-testable without a real TTY.
9
- */
10
- import chalk from 'chalk';
11
- /** Resolve the effective color depth from environment signals + chalk. */
12
- function detectColorLevel(env) {
13
- // Explicit opt-outs win (https://no-color.org — any value, even empty).
14
- if (env.NO_COLOR !== undefined)
15
- return 0;
16
- if (env.TERM === 'dumb')
17
- return 0;
18
- // FORCE_COLOR is an explicit override of the auto-detected depth.
19
- const force = env.FORCE_COLOR;
20
- if (force !== undefined) {
21
- if (force === '0' || force === 'false')
22
- return 0;
23
- if (force === '2')
24
- return 2;
25
- if (force === '3')
26
- return 3;
27
- return 1; // '1' | 'true' | '' → at least basic color
28
- }
29
- // A truecolor-capable terminal advertises itself.
30
- const colorterm = env.COLORTERM?.toLowerCase();
31
- if (colorterm === 'truecolor' || colorterm === '24bit')
32
- return 3;
33
- // Fall back to chalk's own platform detection.
34
- const level = chalk.level;
35
- return level >= 0 && level <= 3 ? level : 0;
36
- }
37
- /** Decide whether Unicode box/round glyphs are safe to emit. */
38
- function detectUnicode(env) {
39
- const locale = [env.LC_ALL, env.LC_CTYPE, env.LANG].filter(Boolean).join(' ').toUpperCase();
40
- if (locale.includes('UTF'))
41
- return true;
42
- if (env.WT_SESSION)
43
- return true; // Windows Terminal
44
- const program = env.TERM_PROGRAM;
45
- if (program === 'aragonmesh' || program === 'vscode' || program === 'iTerm.app' || program === 'Apple_Terminal')
46
- return true;
47
- // Legacy cmd.exe (no TERM, no WT_SESSION) and unknown terminals fall back to ASCII.
48
- return false;
49
- }
50
- /**
51
- * Detect the terminal's color depth and Unicode support. `stdout` is accepted
52
- * for future TTY-aware refinements and kept in the signature for callers.
53
- */
54
- export function detectCapabilities(env, _stdout) {
55
- return {
56
- colorLevel: detectColorLevel(env),
57
- unicode: detectUnicode(env),
58
- };
59
- }
60
- /** Full TUI styling is a policy, not a guess based on inherited shell markers. */
61
- export function resolveTuiCapabilities(env, color) {
62
- const disabled = color === false || env.NO_COLOR !== undefined ||
63
- env.FORCE_COLOR === '0' || env.FORCE_COLOR === 'false';
64
- return { unicode: true, colorLevel: disabled ? 0 : 3 };
65
- }
@@ -1,29 +0,0 @@
1
- import { type ClipboardOptions, type CopyResult } from './clipboard.js';
2
- export interface CopyRequest {
3
- text: string;
4
- lines: number;
5
- }
6
- export type CopyRequestResult = CopyResult | {
7
- status: 'busy';
8
- };
9
- export interface ClipboardState {
10
- busy: boolean;
11
- cleanupPending: boolean;
12
- }
13
- export interface ClipboardCoordinatorOptions {
14
- clipboard?: ClipboardOptions;
15
- /** Clears the previous Ctrl+C exit preparation for both copy entry points. */
16
- onRequest?: () => void;
17
- /** A repeated request is consumed; its selection must remain untouched. */
18
- onBusy?: (state: ClipboardState) => void;
19
- onResult?: (result: CopyResult, request: CopyRequest) => void;
20
- onStateChange?: (state: ClipboardState) => void;
21
- }
22
- export interface ClipboardCoordinator {
23
- requestCopy(request: CopyRequest): Promise<CopyRequestResult>;
24
- isBusy(): boolean;
25
- isCleanupPending(): boolean;
26
- dispose(): void;
27
- }
28
- /** Create the App-owned copy port; use its live busy state before taking a selection. */
29
- export declare function createClipboardCoordinator(options?: ClipboardCoordinatorOptions): ClipboardCoordinator;