@aragon-agent/cli 0.6.46 → 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 +28 -0
  2. package/README.md +80 -12
  3. package/dist/agent/coalesce.d.ts +5 -1
  4. package/dist/agent/coalesce.js +13 -0
  5. package/dist/agent/controller.d.ts +41 -20
  6. package/dist/agent/controller.js +68 -15
  7. package/dist/agent/conversation-reset.d.ts +1 -1
  8. package/dist/agent/governance-wiring.d.ts +6 -6
  9. package/dist/agent/governance-wiring.js +4 -4
  10. package/dist/agent/headless.d.ts +5 -5
  11. package/dist/agent/headless.js +4 -4
  12. package/dist/agent/job-notices.d.ts +1 -1
  13. package/dist/agent/job-notices.js +1 -1
  14. package/dist/agent/kit-apply.d.ts +3 -3
  15. package/dist/agent/kit-apply.js +3 -3
  16. package/dist/agent/model-profile-settings.d.ts +2 -2
  17. package/dist/agent/model-profile-settings.js +6 -6
  18. package/dist/agent/prompt-options.d.ts +1 -1
  19. package/dist/agent/system-prompt.d.ts +1 -1
  20. package/dist/agent/user-attention.d.ts +17 -0
  21. package/dist/agent/user-attention.js +32 -0
  22. package/dist/{ui → app}/App.d.ts +9 -9
  23. package/dist/{ui → app}/App.js +113 -79
  24. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  25. package/dist/{ui → app}/use-startup-notices.js +2 -2
  26. package/dist/cli.js +31 -32
  27. package/dist/commands/agents-command.js +1 -1
  28. package/dist/commands/builtins.js +9 -9
  29. package/dist/commands/governance-command.js +2 -2
  30. package/dist/commands/governance-runs-table.js +1 -1
  31. package/dist/commands/kit-command.js +1 -1
  32. package/dist/commands/perf.d.ts +3 -3
  33. package/dist/commands/perf.js +1 -1
  34. package/dist/commands/registry.d.ts +8 -8
  35. package/dist/commands/skills.js +2 -2
  36. package/dist/commands/team-command.js +1 -1
  37. package/dist/compaction/archive.d.ts +1 -1
  38. package/dist/compaction/archive.js +1 -1
  39. package/dist/compaction/child.d.ts +3 -3
  40. package/dist/compaction/child.js +4 -4
  41. package/dist/compaction/command.js +5 -5
  42. package/dist/compaction/compactor.d.ts +6 -6
  43. package/dist/compaction/compactor.js +6 -6
  44. package/dist/compaction/context-command.js +1 -1
  45. package/dist/compaction/digest.js +1 -1
  46. package/dist/compaction/memory-input.js +1 -1
  47. package/dist/compaction/memory-validation.js +1 -1
  48. package/dist/compaction/memory.js +1 -1
  49. package/dist/compaction/summarize-call.js +1 -1
  50. package/dist/compaction/summary-prompt.js +1 -1
  51. package/dist/compaction/tail-budget.js +2 -2
  52. package/dist/compaction/wiring.d.ts +5 -5
  53. package/dist/compaction/wiring.js +2 -2
  54. package/dist/config/cli-commands.d.ts +1 -1
  55. package/dist/config/cli-commands.js +3 -3
  56. package/dist/config/env.d.ts +1 -1
  57. package/dist/config/env.js +4 -4
  58. package/dist/config/load.d.ts +2 -2
  59. package/dist/config/load.js +10 -31
  60. package/dist/config/migrate-state-out-of-config.js +1 -1
  61. package/dist/config/model-profile-store.d.ts +4 -54
  62. package/dist/config/model-profile-store.js +3 -3
  63. package/dist/config/prompt-history.js +1 -1
  64. package/dist/config/store.d.ts +2 -2
  65. package/dist/config/store.js +3 -3
  66. package/dist/diagnostics/doctor.js +4 -4
  67. package/dist/exec/bridge/decisions.d.ts +1 -1
  68. package/dist/exec/bridge/human-answers.d.ts +1 -1
  69. package/dist/exec/bridge/human-answers.js +1 -1
  70. package/dist/exec/bridge/protocol.d.ts +1 -1
  71. package/dist/exec/bridge/server.js +1 -1
  72. package/dist/exec/events.d.ts +2 -2
  73. package/dist/exec/index.d.ts +1 -1
  74. package/dist/exec/index.js +1 -1
  75. package/dist/exec/permission.js +1 -1
  76. package/dist/exec/runner.d.ts +3 -3
  77. package/dist/exec/runner.js +2 -2
  78. package/dist/exec/threads/runtime.js +1 -1
  79. package/dist/fast/digest.d.ts +1 -1
  80. package/dist/fast/digest.js +1 -1
  81. package/dist/fast/frames.d.ts +1 -1
  82. package/dist/fast/frames.js +1 -1
  83. package/dist/fast/prompt.d.ts +1 -1
  84. package/dist/fast/prompt.js +1 -1
  85. package/dist/fast/review-call.js +1 -1
  86. package/dist/fast/reviewer.d.ts +3 -3
  87. package/dist/fast/reviewer.js +1 -1
  88. package/dist/fast/summary-call.d.ts +3 -3
  89. package/dist/fast/summary-call.js +2 -2
  90. package/dist/fast/summary-prompt.d.ts +1 -1
  91. package/dist/fast/summary-prompt.js +1 -1
  92. package/dist/fast/wiring.d.ts +4 -4
  93. package/dist/fast/wiring.js +1 -1
  94. package/dist/governance/card-normalize.d.ts +1 -1
  95. package/dist/governance/copy.d.ts +1 -1
  96. package/dist/governance/copy.js +2 -2
  97. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  98. package/dist/governance/engine/budget.d.ts +1 -1
  99. package/dist/governance/engine/budget.js +1 -1
  100. package/dist/governance/engine/cards.d.ts +1 -1
  101. package/dist/governance/engine/digest.js +1 -1
  102. package/dist/governance/engine/engine-core.d.ts +5 -5
  103. package/dist/governance/engine/engine-core.js +1 -1
  104. package/dist/governance/engine/engine.d.ts +1 -1
  105. package/dist/governance/engine/engine.js +1 -1
  106. package/dist/governance/engine/estimate.d.ts +1 -1
  107. package/dist/governance/engine/estimate.js +1 -1
  108. package/dist/governance/engine/inspector.js +2 -2
  109. package/dist/governance/engine/integration.d.ts +1 -1
  110. package/dist/governance/engine/lifecycle.d.ts +1 -1
  111. package/dist/governance/engine/lifecycle.js +1 -1
  112. package/dist/governance/engine/phase-members.d.ts +1 -1
  113. package/dist/governance/engine/phase-planner.d.ts +1 -1
  114. package/dist/governance/engine/phase-planner.js +1 -1
  115. package/dist/governance/engine/rebuild.d.ts +1 -1
  116. package/dist/governance/engine/report.d.ts +1 -1
  117. package/dist/governance/engine/report.js +1 -1
  118. package/dist/governance/engine/run-digest.d.ts +1 -1
  119. package/dist/governance/engine/spec-builder.d.ts +2 -2
  120. package/dist/governance/engine/spec-builder.js +2 -2
  121. package/dist/governance/engine/stage-runner.js +2 -2
  122. package/dist/governance/engine/start-input.d.ts +1 -1
  123. package/dist/governance/engine/start-input.js +1 -1
  124. package/dist/governance/engine/state-machine.d.ts +1 -1
  125. package/dist/governance/engine/state-machine.js +3 -3
  126. package/dist/governance/engine/submission-queries.d.ts +1 -1
  127. package/dist/governance/engine/submission-render.d.ts +1 -1
  128. package/dist/governance/engine/submissions.d.ts +1 -1
  129. package/dist/governance/engine/submissions.js +1 -1
  130. package/dist/governance/engine/visibility.d.ts +1 -1
  131. package/dist/governance/engine/visibility.js +1 -1
  132. package/dist/governance/posture-transition.d.ts +2 -2
  133. package/dist/governance/posture-transition.js +1 -1
  134. package/dist/governance/profiles.d.ts +1 -1
  135. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  136. package/dist/governance/prompts/orchestrator-block.js +2 -2
  137. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  138. package/dist/governance/prompts/plan-addendum.js +1 -1
  139. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  140. package/dist/governance/prompts/role-blocks.js +1 -1
  141. package/dist/governance/report-reader.js +1 -1
  142. package/dist/governance/roles.d.ts +1 -1
  143. package/dist/governance/rules/claims.d.ts +1 -1
  144. package/dist/governance/rules/claims.js +1 -1
  145. package/dist/governance/rules/elimination.d.ts +1 -1
  146. package/dist/governance/rules/elimination.js +1 -1
  147. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  148. package/dist/governance/rules/failure-analysis.js +1 -1
  149. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  150. package/dist/governance/rules/ledger-state.d.ts +1 -1
  151. package/dist/governance/rules/ledger-state.js +1 -1
  152. package/dist/governance/rules/ledger.d.ts +2 -2
  153. package/dist/governance/rules/ledger.js +2 -2
  154. package/dist/governance/rules/rca.d.ts +1 -1
  155. package/dist/governance/rules/rca.js +1 -1
  156. package/dist/governance/rules/settlement.d.ts +2 -2
  157. package/dist/governance/rules/settlement.js +2 -2
  158. package/dist/governance/rules/suspicion.d.ts +1 -1
  159. package/dist/governance/store/artifacts.d.ts +1 -1
  160. package/dist/governance/store/artifacts.js +1 -1
  161. package/dist/governance/store/events-log.d.ts +1 -1
  162. package/dist/governance/store/run-store.d.ts +1 -1
  163. package/dist/governance/store/run-store.js +1 -1
  164. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  165. package/dist/governance/tools/child-tools.d.ts +1 -1
  166. package/dist/governance/tools/guard.d.ts +1 -1
  167. package/dist/governance/tools/guard.js +1 -1
  168. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  169. package/dist/governance/tools/inspector-tools.js +2 -2
  170. package/dist/governance/tools/lead-tools.d.ts +1 -1
  171. package/dist/governance/tools/lead-tools.js +1 -1
  172. package/dist/governance/tools/normalize-util.js +1 -1
  173. package/dist/governance/tools/scan-incomplete.js +1 -1
  174. package/dist/governance/tools/shared-tools.d.ts +1 -1
  175. package/dist/governance/tools/shared-tools.js +1 -1
  176. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  177. package/dist/governance/tools/submit-normalizers.js +1 -1
  178. package/dist/governance/tools/submit-tools.d.ts +1 -1
  179. package/dist/logging/cli-commands.js +1 -1
  180. package/dist/logging/install.d.ts +1 -1
  181. package/dist/logging/install.js +3 -3
  182. package/dist/logging/logger.d.ts +2 -2
  183. package/dist/logging/logger.js +31 -2
  184. package/dist/proc/kill-tree.js +1 -1
  185. package/dist/proc/log-mirror.js +1 -1
  186. package/dist/proc/log-ring.js +2 -2
  187. package/dist/proc/notices.d.ts +1 -1
  188. package/dist/proc/notices.js +2 -2
  189. package/dist/proc/prompt.d.ts +1 -1
  190. package/dist/proc/prompt.js +8 -5
  191. package/dist/proc/readiness.js +1 -1
  192. package/dist/proc/supervisor.d.ts +1 -1
  193. package/dist/proc/supervisor.js +10 -4
  194. package/dist/proc/wait-plan.d.ts +39 -0
  195. package/dist/proc/wait-plan.js +77 -0
  196. package/dist/proc/wait.d.ts +37 -4
  197. package/dist/proc/wait.js +68 -5
  198. package/dist/prompts/command.d.ts +1 -1
  199. package/dist/prompts/command.js +1 -1
  200. package/dist/prompts/normalize.d.ts +1 -1
  201. package/dist/prompts/normalize.js +1 -1
  202. package/dist/prompts/resolve.d.ts +1 -1
  203. package/dist/prompts/store.d.ts +2 -12
  204. package/dist/prompts/store.js +6 -60
  205. package/dist/session/checkpoint.d.ts +2 -2
  206. package/dist/session/checkpoint.js +2 -0
  207. package/dist/session/clear-archive.d.ts +2 -2
  208. package/dist/session/persist.d.ts +2 -2
  209. package/dist/session/persist.js +20 -3
  210. package/dist/session/startup-session.d.ts +2 -2
  211. package/dist/session/validate-session.js +6 -3
  212. package/dist/skills/service.d.ts +2 -2
  213. package/dist/team/bus.d.ts +1 -1
  214. package/dist/team/bus.js +1 -1
  215. package/dist/team/child-reviewer.d.ts +2 -2
  216. package/dist/team/child-reviewer.js +1 -1
  217. package/dist/team/comm-tools.js +1 -1
  218. package/dist/team/dispatch-gate.js +1 -1
  219. package/dist/team/forced-dispatch.js +1 -1
  220. package/dist/team/forced-mode.d.ts +1 -1
  221. package/dist/team/forced-prompt.d.ts +1 -1
  222. package/dist/team/forced-prompt.js +1 -1
  223. package/dist/team/normalize.d.ts +1 -1
  224. package/dist/team/normalize.js +1 -1
  225. package/dist/team/overseer.d.ts +3 -3
  226. package/dist/team/overseer.js +3 -3
  227. package/dist/team/prompt.d.ts +1 -1
  228. package/dist/team/prompt.js +1 -1
  229. package/dist/team/report.d.ts +2 -2
  230. package/dist/team/report.js +2 -2
  231. package/dist/team/retry.d.ts +1 -1
  232. package/dist/team/retry.js +1 -1
  233. package/dist/team/runtime.d.ts +4 -4
  234. package/dist/team/runtime.js +2 -2
  235. package/dist/team/settled.d.ts +2 -2
  236. package/dist/team/subagent.d.ts +4 -4
  237. package/dist/team/subagent.js +5 -5
  238. package/dist/team/task-tool.d.ts +1 -1
  239. package/dist/team/task-tool.js +1 -1
  240. package/dist/todo/normalize.d.ts +1 -1
  241. package/dist/todo/normalize.js +1 -1
  242. package/dist/todo/prompt.d.ts +1 -1
  243. package/dist/todo/prompt.js +1 -1
  244. package/dist/todo/store.d.ts +1 -1
  245. package/dist/todo/store.js +2 -2
  246. package/dist/todo/todo-tool.d.ts +1 -1
  247. package/dist/todo/todo-tool.js +2 -2
  248. package/dist/tools/bash-tool.d.ts +1 -1
  249. package/dist/tools/bash-tool.js +2 -2
  250. package/dist/tools/diff.d.ts +1 -1
  251. package/dist/tools/diff.js +1 -1
  252. package/dist/tools/file-change-store.d.ts +1 -1
  253. package/dist/tools/fs-tools.d.ts +2 -2
  254. package/dist/tools/fs-tools.js +1 -1
  255. package/dist/tools/index.d.ts +3 -3
  256. package/dist/tools/index.js +1 -1
  257. package/dist/tools/job-tools.d.ts +14 -3
  258. package/dist/tools/job-tools.js +158 -35
  259. package/dist/tools/plan-tools.d.ts +1 -1
  260. package/dist/tools/plan-tools.js +1 -1
  261. package/dist/tools/proc-tools.d.ts +1 -1
  262. package/dist/tools/proc-tools.js +2 -2
  263. package/dist/update/classify-failure.d.ts +1 -1
  264. package/dist/update/install-lock.js +1 -1
  265. package/dist/update/install-source.d.ts +1 -1
  266. package/dist/update/installer.js +2 -2
  267. package/dist/update/npm-view.d.ts +1 -1
  268. package/dist/update/npm-view.js +1 -1
  269. package/dist/update/registry.d.ts +1 -1
  270. package/dist/update/registry.js +1 -1
  271. package/dist/update/service.d.ts +2 -2
  272. package/dist/update/service.js +2 -2
  273. package/package.json +7 -7
  274. package/dist/agent/agent-mode.d.ts +0 -108
  275. package/dist/agent/agent-mode.js +0 -121
  276. package/dist/agent/entry-limits.d.ts +0 -65
  277. package/dist/agent/entry-limits.js +0 -133
  278. package/dist/agent/governance-view.d.ts +0 -40
  279. package/dist/agent/governance-view.js +0 -40
  280. package/dist/agent/invocation-card.d.ts +0 -77
  281. package/dist/agent/invocation-card.js +0 -169
  282. package/dist/agent/model-probe-limits.d.ts +0 -39
  283. package/dist/agent/model-probe-limits.js +0 -25
  284. package/dist/agent/model-probe.d.ts +0 -104
  285. package/dist/agent/model-probe.js +0 -391
  286. package/dist/agent/queued-messages.d.ts +0 -23
  287. package/dist/agent/queued-messages.js +0 -49
  288. package/dist/agent/reducer.d.ts +0 -837
  289. package/dist/agent/reducer.js +0 -1617
  290. package/dist/agent/retry-view.d.ts +0 -68
  291. package/dist/agent/retry-view.js +0 -95
  292. package/dist/agent/usage.d.ts +0 -47
  293. package/dist/agent/usage.js +0 -84
  294. package/dist/compaction/limits.d.ts +0 -61
  295. package/dist/compaction/limits.js +0 -64
  296. package/dist/compaction/meter.d.ts +0 -276
  297. package/dist/compaction/meter.js +0 -512
  298. package/dist/compaction/pressure.d.ts +0 -163
  299. package/dist/compaction/pressure.js +0 -199
  300. package/dist/compaction/reason-text.d.ts +0 -36
  301. package/dist/compaction/reason-text.js +0 -78
  302. package/dist/compaction/types.d.ts +0 -360
  303. package/dist/compaction/types.js +0 -22
  304. package/dist/config/governance-config.d.ts +0 -125
  305. package/dist/config/governance-config.js +0 -164
  306. package/dist/config/kit-resolution.d.ts +0 -93
  307. package/dist/config/kit-resolution.js +0 -226
  308. package/dist/config/model-kits.d.ts +0 -225
  309. package/dist/config/model-kits.js +0 -302
  310. package/dist/config/model-profile-resolution.d.ts +0 -28
  311. package/dist/config/model-profile-resolution.js +0 -88
  312. package/dist/config/model-profiles.d.ts +0 -103
  313. package/dist/config/model-profiles.js +0 -188
  314. package/dist/config/schema.d.ts +0 -1645
  315. package/dist/config/schema.js +0 -1377
  316. package/dist/fast/limits.d.ts +0 -152
  317. package/dist/fast/limits.js +0 -152
  318. package/dist/fast/resolve.d.ts +0 -44
  319. package/dist/fast/resolve.js +0 -107
  320. package/dist/fast/task-summary-types.d.ts +0 -66
  321. package/dist/fast/task-summary-types.js +0 -17
  322. package/dist/fast/types.d.ts +0 -141
  323. package/dist/fast/types.js +0 -14
  324. package/dist/governance/governed-dispatch.d.ts +0 -19
  325. package/dist/governance/governed-dispatch.js +0 -17
  326. package/dist/governance/limits.d.ts +0 -107
  327. package/dist/governance/limits.js +0 -131
  328. package/dist/governance/posture.d.ts +0 -35
  329. package/dist/governance/posture.js +0 -59
  330. package/dist/governance/rules/events-table.d.ts +0 -46
  331. package/dist/governance/rules/events-table.js +0 -94
  332. package/dist/governance/types.d.ts +0 -661
  333. package/dist/governance/types.js +0 -27
  334. package/dist/input/control-sequences.d.ts +0 -71
  335. package/dist/input/control-sequences.js +0 -222
  336. package/dist/input/csiu-keys.d.ts +0 -66
  337. package/dist/input/csiu-keys.js +0 -181
  338. package/dist/input/cursor-report.d.ts +0 -61
  339. package/dist/input/cursor-report.js +0 -97
  340. package/dist/input/enter-sequences.d.ts +0 -64
  341. package/dist/input/enter-sequences.js +0 -153
  342. package/dist/input/interrupt-gesture.d.ts +0 -18
  343. package/dist/input/interrupt-gesture.js +0 -19
  344. package/dist/input/keyboard-enhancement.d.ts +0 -42
  345. package/dist/input/keyboard-enhancement.js +0 -65
  346. package/dist/input/keymap.d.ts +0 -20
  347. package/dist/input/keymap.js +0 -99
  348. package/dist/input/limits.d.ts +0 -118
  349. package/dist/input/limits.js +0 -109
  350. package/dist/input/mouse-events.d.ts +0 -87
  351. package/dist/input/mouse-events.js +0 -212
  352. package/dist/input/paste-parse.d.ts +0 -83
  353. package/dist/input/paste-parse.js +0 -107
  354. package/dist/input/pointer-router.d.ts +0 -11
  355. package/dist/input/pointer-router.js +0 -14
  356. package/dist/input/stdin-filter.d.ts +0 -112
  357. package/dist/input/stdin-filter.js +0 -657
  358. package/dist/input/win32-input-mode.d.ts +0 -61
  359. package/dist/input/win32-input-mode.js +0 -269
  360. package/dist/logging/levels.d.ts +0 -40
  361. package/dist/logging/levels.js +0 -59
  362. package/dist/logging/secret-registry.d.ts +0 -32
  363. package/dist/logging/secret-registry.js +0 -73
  364. package/dist/proc/limits.d.ts +0 -200
  365. package/dist/proc/limits.js +0 -207
  366. package/dist/proc/progress.d.ts +0 -40
  367. package/dist/proc/progress.js +0 -135
  368. package/dist/proc/types.d.ts +0 -263
  369. package/dist/proc/types.js +0 -15
  370. package/dist/prompts/copy.d.ts +0 -89
  371. package/dist/prompts/copy.js +0 -131
  372. package/dist/prompts/fill.d.ts +0 -51
  373. package/dist/prompts/fill.js +0 -46
  374. package/dist/prompts/limits.d.ts +0 -53
  375. package/dist/prompts/limits.js +0 -53
  376. package/dist/prompts/search.d.ts +0 -58
  377. package/dist/prompts/search.js +0 -146
  378. package/dist/prompts/types.d.ts +0 -204
  379. package/dist/prompts/types.js +0 -13
  380. package/dist/team/activity.d.ts +0 -67
  381. package/dist/team/activity.js +0 -130
  382. package/dist/team/limits.d.ts +0 -308
  383. package/dist/team/limits.js +0 -330
  384. package/dist/team/model.d.ts +0 -104
  385. package/dist/team/model.js +0 -150
  386. package/dist/team/panel-rows.d.ts +0 -48
  387. package/dist/team/panel-rows.js +0 -75
  388. package/dist/team/timeline.d.ts +0 -74
  389. package/dist/team/timeline.js +0 -101
  390. package/dist/team/types.d.ts +0 -354
  391. package/dist/team/types.js +0 -13
  392. package/dist/todo/acceptance.d.ts +0 -120
  393. package/dist/todo/acceptance.js +0 -399
  394. package/dist/todo/follow-through.d.ts +0 -138
  395. package/dist/todo/follow-through.js +0 -248
  396. package/dist/todo/limits.d.ts +0 -152
  397. package/dist/todo/limits.js +0 -152
  398. package/dist/todo/panel-rows.d.ts +0 -45
  399. package/dist/todo/panel-rows.js +0 -70
  400. package/dist/todo/plan-sections.d.ts +0 -60
  401. package/dist/todo/plan-sections.js +0 -108
  402. package/dist/todo/row-window.d.ts +0 -51
  403. package/dist/todo/row-window.js +0 -107
  404. package/dist/todo/types.d.ts +0 -124
  405. package/dist/todo/types.js +0 -12
  406. package/dist/tools/human-input.d.ts +0 -212
  407. package/dist/tools/human-input.js +0 -265
  408. package/dist/tools/patch.d.ts +0 -115
  409. package/dist/tools/patch.js +0 -453
  410. package/dist/tools/terminal-output.d.ts +0 -115
  411. package/dist/tools/terminal-output.js +0 -201
  412. package/dist/tools/tool-output-store.d.ts +0 -68
  413. package/dist/tools/tool-output-store.js +0 -102
  414. package/dist/ui/ActivityLine.d.ts +0 -26
  415. package/dist/ui/ActivityLine.js +0 -48
  416. package/dist/ui/AutocompletePopup.d.ts +0 -23
  417. package/dist/ui/AutocompletePopup.js +0 -17
  418. package/dist/ui/BottomStatusRow.d.ts +0 -10
  419. package/dist/ui/BottomStatusRow.js +0 -9
  420. package/dist/ui/Composer.d.ts +0 -115
  421. package/dist/ui/Composer.js +0 -64
  422. package/dist/ui/GovernancePanel.d.ts +0 -50
  423. package/dist/ui/GovernancePanel.js +0 -77
  424. package/dist/ui/GovernanceRun.d.ts +0 -18
  425. package/dist/ui/GovernanceRun.js +0 -11
  426. package/dist/ui/Header.d.ts +0 -48
  427. package/dist/ui/Header.js +0 -27
  428. package/dist/ui/Logo.d.ts +0 -32
  429. package/dist/ui/Logo.js +0 -65
  430. package/dist/ui/Markdown.d.ts +0 -29
  431. package/dist/ui/Markdown.js +0 -116
  432. package/dist/ui/PromptCaret.d.ts +0 -11
  433. package/dist/ui/PromptCaret.js +0 -31
  434. package/dist/ui/PromptInput.d.ts +0 -192
  435. package/dist/ui/PromptInput.js +0 -689
  436. package/dist/ui/QueuePanel.d.ts +0 -8
  437. package/dist/ui/QueuePanel.js +0 -9
  438. package/dist/ui/QueueStatusRow.d.ts +0 -24
  439. package/dist/ui/QueueStatusRow.js +0 -51
  440. package/dist/ui/ScrollbackShell.d.ts +0 -132
  441. package/dist/ui/ScrollbackShell.js +0 -26
  442. package/dist/ui/SessionOpener.d.ts +0 -30
  443. package/dist/ui/SessionOpener.js +0 -12
  444. package/dist/ui/StatusBar.d.ts +0 -129
  445. package/dist/ui/StatusBar.js +0 -61
  446. package/dist/ui/TeamPanel.d.ts +0 -76
  447. package/dist/ui/TeamPanel.js +0 -103
  448. package/dist/ui/ToastStack.d.ts +0 -8
  449. package/dist/ui/ToastStack.js +0 -31
  450. package/dist/ui/TodoPanel.d.ts +0 -52
  451. package/dist/ui/TodoPanel.js +0 -214
  452. package/dist/ui/Transcript.d.ts +0 -105
  453. package/dist/ui/Transcript.js +0 -251
  454. package/dist/ui/UpdateLine.d.ts +0 -44
  455. package/dist/ui/UpdateLine.js +0 -129
  456. package/dist/ui/activity-phrases.d.ts +0 -33
  457. package/dist/ui/activity-phrases.js +0 -50
  458. package/dist/ui/capabilities.d.ts +0 -27
  459. package/dist/ui/capabilities.js +0 -65
  460. package/dist/ui/clipboard-task.d.ts +0 -29
  461. package/dist/ui/clipboard-task.js +0 -66
  462. package/dist/ui/clipboard.d.ts +0 -31
  463. package/dist/ui/clipboard.js +0 -157
  464. package/dist/ui/color-runtime.d.ts +0 -5
  465. package/dist/ui/color-runtime.js +0 -29
  466. package/dist/ui/composer-input.d.ts +0 -38
  467. package/dist/ui/composer-input.js +0 -79
  468. package/dist/ui/composer-limits.d.ts +0 -30
  469. package/dist/ui/composer-limits.js +0 -45
  470. package/dist/ui/composer-rows.d.ts +0 -73
  471. package/dist/ui/composer-rows.js +0 -129
  472. package/dist/ui/console-bridge.d.ts +0 -19
  473. package/dist/ui/console-bridge.js +0 -52
  474. package/dist/ui/density.d.ts +0 -26
  475. package/dist/ui/density.js +0 -34
  476. package/dist/ui/display-tab.d.ts +0 -51
  477. package/dist/ui/display-tab.js +0 -82
  478. package/dist/ui/editor-navigation.d.ts +0 -55
  479. package/dist/ui/editor-navigation.js +0 -96
  480. package/dist/ui/editor-reducer.d.ts +0 -108
  481. package/dist/ui/editor-reducer.js +0 -187
  482. package/dist/ui/enter-frames.d.ts +0 -47
  483. package/dist/ui/enter-frames.js +0 -117
  484. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  485. package/dist/ui/entries/AssistantEntry.js +0 -43
  486. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  487. package/dist/ui/entries/CompactionCard.js +0 -222
  488. package/dist/ui/entries/DiffView.d.ts +0 -61
  489. package/dist/ui/entries/DiffView.js +0 -103
  490. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  491. package/dist/ui/entries/EntryFrame.js +0 -6
  492. package/dist/ui/entries/FastCard.d.ts +0 -53
  493. package/dist/ui/entries/FastCard.js +0 -105
  494. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  495. package/dist/ui/entries/GovernanceCard.js +0 -32
  496. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  497. package/dist/ui/entries/InvocationCard.js +0 -32
  498. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  499. package/dist/ui/entries/QueuedEntry.js +0 -33
  500. package/dist/ui/entries/RetryCard.d.ts +0 -56
  501. package/dist/ui/entries/RetryCard.js +0 -60
  502. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  503. package/dist/ui/entries/ServiceCard.js +0 -151
  504. package/dist/ui/entries/TeamCard.d.ts +0 -55
  505. package/dist/ui/entries/TeamCard.js +0 -94
  506. package/dist/ui/entries/TodoCard.d.ts +0 -54
  507. package/dist/ui/entries/TodoCard.js +0 -98
  508. package/dist/ui/entries/ToolCard.d.ts +0 -81
  509. package/dist/ui/entries/ToolCard.js +0 -160
  510. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  511. package/dist/ui/entries/ToolPreview.js +0 -208
  512. package/dist/ui/entries/UserEntry.d.ts +0 -36
  513. package/dist/ui/entries/UserEntry.js +0 -57
  514. package/dist/ui/exit-snapshot.d.ts +0 -43
  515. package/dist/ui/exit-snapshot.js +0 -26
  516. package/dist/ui/frame-differ.d.ts +0 -166
  517. package/dist/ui/frame-differ.js +0 -354
  518. package/dist/ui/frame-observer.d.ts +0 -17
  519. package/dist/ui/frame-observer.js +0 -94
  520. package/dist/ui/frame-parser.d.ts +0 -7
  521. package/dist/ui/frame-parser.js +0 -18
  522. package/dist/ui/gauge.d.ts +0 -39
  523. package/dist/ui/gauge.js +0 -55
  524. package/dist/ui/glyphs.d.ts +0 -178
  525. package/dist/ui/glyphs.js +0 -165
  526. package/dist/ui/governance-copy.d.ts +0 -69
  527. package/dist/ui/governance-copy.js +0 -104
  528. package/dist/ui/governance-status.d.ts +0 -145
  529. package/dist/ui/governance-status.js +0 -326
  530. package/dist/ui/gradient.d.ts +0 -11
  531. package/dist/ui/gradient.js +0 -50
  532. package/dist/ui/ink-runtime.d.ts +0 -4
  533. package/dist/ui/ink-runtime.js +0 -51
  534. package/dist/ui/interaction-copy.d.ts +0 -82
  535. package/dist/ui/interaction-copy.js +0 -38
  536. package/dist/ui/interaction-hints.d.ts +0 -44
  537. package/dist/ui/interaction-hints.js +0 -97
  538. package/dist/ui/layout/AppShell.d.ts +0 -17
  539. package/dist/ui/layout/AppShell.js +0 -6
  540. package/dist/ui/layout/Gutter.d.ts +0 -67
  541. package/dist/ui/layout/Gutter.js +0 -42
  542. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  543. package/dist/ui/layout/MeasuredEntry.js +0 -30
  544. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  545. package/dist/ui/layout/OverlayFrame.js +0 -110
  546. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  547. package/dist/ui/layout/ScrollIndicator.js +0 -22
  548. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  549. package/dist/ui/layout/ScrollViewport.js +0 -222
  550. package/dist/ui/layout/agents-board.d.ts +0 -102
  551. package/dist/ui/layout/agents-board.js +0 -389
  552. package/dist/ui/layout/autocomplete.d.ts +0 -18
  553. package/dist/ui/layout/autocomplete.js +0 -26
  554. package/dist/ui/layout/budget.d.ts +0 -43
  555. package/dist/ui/layout/budget.js +0 -52
  556. package/dist/ui/layout/cells.d.ts +0 -61
  557. package/dist/ui/layout/cells.js +0 -156
  558. package/dist/ui/layout/document-layout.d.ts +0 -13
  559. package/dist/ui/layout/document-layout.js +0 -10
  560. package/dist/ui/layout/follow-state.d.ts +0 -138
  561. package/dist/ui/layout/follow-state.js +0 -148
  562. package/dist/ui/layout/frame.d.ts +0 -36
  563. package/dist/ui/layout/frame.js +0 -39
  564. package/dist/ui/layout/governance-board.d.ts +0 -121
  565. package/dist/ui/layout/governance-board.js +0 -382
  566. package/dist/ui/layout/governance-card.d.ts +0 -53
  567. package/dist/ui/layout/governance-card.js +0 -134
  568. package/dist/ui/layout/governance-chip.d.ts +0 -38
  569. package/dist/ui/layout/governance-chip.js +0 -64
  570. package/dist/ui/layout/governance-panel.d.ts +0 -85
  571. package/dist/ui/layout/governance-panel.js +0 -358
  572. package/dist/ui/layout/governance-roster.d.ts +0 -65
  573. package/dist/ui/layout/governance-roster.js +0 -275
  574. package/dist/ui/layout/header-hints.d.ts +0 -90
  575. package/dist/ui/layout/header-hints.js +0 -110
  576. package/dist/ui/layout/header-left.d.ts +0 -115
  577. package/dist/ui/layout/header-left.js +0 -206
  578. package/dist/ui/layout/invocation-card.d.ts +0 -41
  579. package/dist/ui/layout/invocation-card.js +0 -91
  580. package/dist/ui/layout/kit-chip.d.ts +0 -50
  581. package/dist/ui/layout/kit-chip.js +0 -81
  582. package/dist/ui/layout/overlay-window.d.ts +0 -43
  583. package/dist/ui/layout/overlay-window.js +0 -51
  584. package/dist/ui/layout/queue-layout.d.ts +0 -19
  585. package/dist/ui/layout/queue-layout.js +0 -26
  586. package/dist/ui/layout/rail.d.ts +0 -7
  587. package/dist/ui/layout/rail.js +0 -16
  588. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  589. package/dist/ui/layout/scroll-indicator.js +0 -36
  590. package/dist/ui/layout/scroll.d.ts +0 -37
  591. package/dist/ui/layout/scroll.js +0 -99
  592. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  593. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  594. package/dist/ui/layout/session-chip.d.ts +0 -52
  595. package/dist/ui/layout/session-chip.js +0 -64
  596. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  597. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  598. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  599. package/dist/ui/layout/status-detail-layout.js +0 -79
  600. package/dist/ui/layout/status-layout.d.ts +0 -139
  601. package/dist/ui/layout/status-layout.js +0 -253
  602. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  603. package/dist/ui/layout/task-summary-cell.js +0 -65
  604. package/dist/ui/layout/team-panel.d.ts +0 -18
  605. package/dist/ui/layout/team-panel.js +0 -25
  606. package/dist/ui/layout/team-row.d.ts +0 -139
  607. package/dist/ui/layout/team-row.js +0 -246
  608. package/dist/ui/layout/todo-layout.d.ts +0 -62
  609. package/dist/ui/layout/todo-layout.js +0 -102
  610. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  611. package/dist/ui/layout/useTerminalSize.js +0 -50
  612. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  613. package/dist/ui/layout/viewport-geometry.js +0 -28
  614. package/dist/ui/layout/virtual-window.d.ts +0 -112
  615. package/dist/ui/layout/virtual-window.js +0 -488
  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 -61
  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 -118
  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,251 +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 { TeamCard, teamCardColor } from './entries/TeamCard.js';
16
- import { GovernanceCard, governanceCardColor } from './entries/GovernanceCard.js';
17
- import { isLiveTeamCard, rosterCounts } from './team-status.js';
18
- import { TodoCard, todoCardColor } from './entries/TodoCard.js';
19
- import { RetryCard, retryCardColor } from './entries/RetryCard.js';
20
- import { FastCard, fastCardColor } from './entries/FastCard.js';
21
- import { CompactionCard, compactionCardColor } from './entries/CompactionCard.js';
22
- import { ServiceCard, serviceCardColor, serviceGlyph } from './entries/ServiceCard.js';
23
- import { MeasuredEntry } from './layout/MeasuredEntry.js';
24
- import { useViewportGeometry } from './layout/viewport-geometry.js';
25
- import { estimateEntryRows, heightKey, selectWindow, VIRTUAL_LIMITS, } from './layout/virtual-window.js';
26
- import { advanceTailRows } from './layout/follow-state.js';
27
- /**
28
- * The value `EntryView` should receive for `nowSec` on THIS entry.
29
- *
30
- * `undefined` for everything that is not a running tool, which is what keeps
31
- * every other card's memo boundary intact — `undefined === undefined` in the
32
- * comparator, on every frame, forever.
33
- *
34
- * EXPORTED for `ui/scrollback/LiveTail.tsx` (release-gate-and-native-panels §6.5), and
35
- * that is the whole of this feature's change to this file: the live region mounts the
36
- * same `EntryView` the transcript does, so it must feed it the same per-entry clock.
37
- * A copy of this rule in the band would be a second answer to "does this card tick?"
38
- * and the two would disagree the first time a consumer is added.
39
- */
40
- export function nowSecFor(entry, nowSec) {
41
- if (entry.kind === 'tool' && entry.status === 'running')
42
- return nowSec;
43
- // THE LIVE COMPACTION CARD IS THE SECOND CONSUMER (hardening W5). It is at most
44
- // ONE entry in the whole transcript, and it settles - so the memo boundary this
45
- // function protects is unchanged for every other card, forever.
46
- if (entry.kind === 'compaction' && entry.live)
47
- return nowSec;
48
- // THE FOURTH CONSUMER IS A LIVE DISPATCH CARD (tui-subagent-double-roster A-1):
49
- // a child's elapsed time must advance while it works, and `TeamCard` reads this
50
- // same 1 Hz clock instead of a second `Date.now()` per render. A suppressed card
51
- // never mounts, so this only keeps the reading honest for a directly mounted one.
52
- if (entry.kind === 'team' && entry.active)
53
- return nowSec;
54
- // THE THIRD CONSUMER IS A LIVE JOB (long-task-jobs D-8), and it is the reason
55
- // this stays a single 1 Hz clock: a task's elapsed time and its `no output`
56
- // badge both have to move, and a per-card `setInterval` would be one timer per
57
- // job. `terminal` entries are excluded so a settled record never re-renders.
58
- if (entry.kind === 'service' && !entry.terminal)
59
- return nowSec;
60
- return undefined;
61
- }
62
- function noticeColor(level, theme) {
63
- if (level === 'error')
64
- return theme.noticeError;
65
- if (level === 'warn')
66
- return theme.noticeWarn;
67
- return theme.noticeInfo;
68
- }
69
- function noticeSymbol(level, theme) {
70
- if (level === 'error')
71
- return theme.symbols.error;
72
- if (level === 'warn')
73
- return theme.symbols.warn;
74
- return theme.symbols.info;
75
- }
76
- function EntryViewImpl({ entry, prev, expanded, thinkingVisible, reducedMotion, density, theme, caps, nowSec, }) {
77
- const glyphs = pickGlyphs(caps);
78
- const separation = separationRows(prev, entry, density);
79
- const frame = (glyph, color, children) => (_jsx(EntryFrame, { glyph: glyph, color: color, continuation: glyphs.railVertical, separation: separation, spacerColor: theme.border, children: children }));
80
- switch (entry.kind) {
81
- case 'user':
82
- return frame(glyphs.user, theme.user, entry.invocation
83
- ? _jsx(InvocationCard, { card: entry.invocation, theme: theme, caps: caps })
84
- : _jsx(UserEntry, { text: entry.text, theme: theme, caps: caps }));
85
- case 'queued':
86
- // `theme.muted`: quieter than a user message, louder than a notice --
87
- // the row exists to be noticed UNTIL it is accepted, then rewritten in
88
- // place by `turnStart` (5.2.3).
89
- return frame(glyphs.queued, theme.muted, _jsx(QueuedEntry, { text: entry.text, theme: theme, caps: caps }));
90
- case 'assistant': {
91
- // Render-layer backstop for the reducer prune (defect 5) - the reducer is the
92
- // source of truth, and this only catches a settled, entirely empty bubble
93
- // that reached here some other way. Returned BEFORE `frame(...)`, so neither
94
- // the glyph row nor the separation row is drawn.
95
- if (!entry.streaming && entry.text.trim() === '' && (entry.thinking ?? '').trim() === '') {
96
- return null;
97
- }
98
- const animate = entry.streaming && !reducedMotion && caps.unicode;
99
- 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,
100
- // `EntryViewImpl` hands each renderer EXPLICIT SCALAR PROPS, so
101
- // nothing on the entry reaches a component by itself (P1-6b).
102
- thinkingMs: entry.thinkingMs, theme: theme, caps: caps }));
103
- }
104
- case 'tool':
105
- 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,
106
- // `entry.live` AND NOT `entry.live ?? []` (P2-4): `ToolCard`'s default
107
- // comparator sees a fresh `[]` as a changed prop, which is why that
108
- // file already keeps a shared `EMPTY_LINES`.
109
- live: entry.live, lastOutputAt: entry.lastOutputAt, nowSec: nowSec, theme: theme, caps: caps }));
110
- case 'team': {
111
- // THE LIVE DISPATCH HAS EXACTLY ONE SURFACE (tui-subagent-double-roster A-2):
112
- // while `active`, the roster (`TeamPanel`) is the only live subagent block, so
113
- // the transcript draws nothing for this entry and the card appears - once - as
114
- // history the moment the dispatch settles. Returning BEFORE `frame(...)` draws
115
- // neither the rail marker nor the separation row.
116
- //
117
- // `renderer.tsx`'s offscreen measurement goes through THIS function too, which is
118
- // what makes the native print pump's `measureWindow` agree with the frame for
119
- // free. `estimateEntryRows` carries the same predicate (0 rows), so no other
120
- // arithmetic has to know about the suppression.
121
- if (isLiveTeamCard(entry))
122
- return null;
123
- 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) }));
124
- }
125
- case 'governance':
126
- return frame(glyphs.teamAgent, governanceCardColor(entry.card, theme), _jsx(GovernanceCard, { card: entry.card, theme: theme, caps: caps }));
127
- case 'todo':
128
- 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 }));
129
- case 'retry':
130
- 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,
131
- // READ HERE, not threaded from `App`, and that is what keeps the memo
132
- // boundary intact: a `now` prop on every `EntryView` would change on
133
- // every frame and re-render the whole transcript. The `retryTick` action
134
- // refreshes THIS entry's identity once a second, which re-renders this
135
- // one card and gives it a fresh clock; nothing else moves.
136
- now: Date.now(),
137
- // NOT THREADED FROM `App`: reaching this renderer means a TUI is
138
- // mounted, and the TUI always binds Esc to abort. Headless mode writes
139
- // its retry lines to stderr and never mounts an entry component, and the
140
- // exit replay goes through `transcript-text.ts`. `RetryCard` keeps the
141
- // prop so the render tests can assert the suppressed form.
142
- reducedMotion: reducedMotion, theme: theme, caps: caps }));
143
- case 'fast':
144
- 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 }));
145
- case 'compaction':
146
- 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,
147
- // ONLY WHILE LIVE, and only when the clock has ticked at least once:
148
- // `nowSec` is `undefined` until then, and a settled card must keep
149
- // rendering `durationMs` rather than a figure that would drift.
150
- elapsedMs: entry.live && nowSec !== undefined && entry.startedAt !== undefined
151
- ? Math.max(0, nowSec * 1000 - entry.startedAt)
152
- : undefined, live: entry.live, expanded: expanded, reducedMotion: reducedMotion, theme: theme, caps: caps }));
153
- case 'service':
154
- 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 }));
155
- case 'notice':
156
- return frame(noticeSymbol(entry.level, theme), noticeColor(entry.level, theme), _jsx(Text, { color: noticeColor(entry.level, theme), children: entry.text }));
157
- default:
158
- return null;
159
- }
160
- }
161
- /**
162
- * THE memo boundary that makes a long transcript cheap (L2 / R3).
163
- *
164
- * The comparator is written out rather than defaulted because `prev` is the one
165
- * prop whose identity matters for a reason the type does not show: it feeds
166
- * `separationRows`, so an entry whose PREDECESSOR changed kind must re-render
167
- * even though the entry itself did not.
168
- *
169
- * I-L2-1 — `theme` and `caps` are `useMemo`d in `App.tsx` and are therefore
170
- * referentially stable across frames. If a future change makes either a fresh
171
- * object per render, EVERY boundary below becomes a no-op AND NOTHING FAILS;
172
- * `render-memo.test.tsx` asserts that stability directly so the trap is a red
173
- * test rather than a silent regression.
174
- */
175
- export const EntryView = React.memo(EntryViewImpl, (a, b) => {
176
- return (a.entry === b.entry &&
177
- a.prev === b.prev &&
178
- a.expanded === b.expanded &&
179
- a.thinkingVisible === b.thinkingVisible &&
180
- a.reducedMotion === b.reducedMotion &&
181
- a.density === b.density &&
182
- a.theme === b.theme &&
183
- a.caps === b.caps &&
184
- /*
185
- * ELEVENTH TERM, AND OMITTING IT IS THE TRAP I-L2-1 DESCRIBES ONE COMMENT UP
186
- * (P1-3). This comparator is a CLOSED LIST: a prop absent from it changes
187
- * without invalidating the boundary, so `ToolCard` is never re-rendered and
188
- * the stall row freezes at whatever second it first drew — AC-26's "and the
189
- * seconds advance" failing with nothing reporting it.
190
- *
191
- * It is free: `nowSecFor` returns `undefined` for every entry that is not a
192
- * running tool, and `undefined === undefined` on every frame.
193
- */
194
- a.nowSec === b.nowSec);
195
- });
196
- export function TranscriptList({ entries, expandedToolIds, thinkingVisible, reducedMotion, density, nowSec, theme, caps, windowSize, cols, heights, mountedSink, tailSink, }) {
197
- const size = Math.max(1, Math.floor(windowSize));
198
- const visible = entries.length > size ? entries.slice(-size) : entries;
199
- const collapsed = entries.length - visible.length;
200
- const glyphs = pickGlyphs(caps);
201
- const geometry = useViewportGeometry();
202
- // Ctrl+T changes every assistant entry's height without changing any entry,
203
- // so it has to reach the cache key or the spacers freeze at the wrong size.
204
- const flags = thinkingVisible ? 't' : '';
205
- // ONE key builder, shared by the lookup below and by `MeasuredEntry`'s report.
206
- // Two spellings of the same key is a SILENT failure and not a compile error:
207
- // the measurement lands under a key `resolve` never asks for, every entry
208
- // falls back to its estimate for the rest of the session, and the spacers
209
- // quietly encode heights nothing will ever correct.
210
- const keyOf = (entry) => heightKey(entry, cols, !!expandedToolIds[entry.id], density, flags);
211
- const { resolve, report } = heights;
212
- const heightOf = useCallback((index) => {
213
- const entry = visible[index];
214
- // `thinkingVisible` IS PASSED, not left to the parameter's conservative
215
- // default (P1-6a / condition 5). With thinking hidden the default would
216
- // inflate every assistant entry that thought by its whole wrapped length,
217
- // and an entry estimated at 400 rows against a real height of 1 is exactly
218
- // the one `selectWindow` then never mounts and never re-measures.
219
- return resolve(keyOf(entry), () => estimateEntryRows(entry, cols, density, !!expandedToolIds[entry.id], thinkingVisible));
220
- },
221
- // Memoised only incidentally: `visible` IS `entries` while the session is
222
- // shorter than the horizon and a fresh slice once it is past it, so this
223
- // rebuilds on some frames and not others. Either is correct — `selectWindow`
224
- // consumes it synchronously below and it is never handed to a child — and
225
- // `keyOf` is omitted from the list because every input it closes over is
226
- // already in it.
227
- // eslint-disable-next-line react-hooks/exhaustive-deps
228
- [visible, expandedToolIds, cols, density, flags, resolve, thinkingVisible]);
229
- const selection = selectWindow({
230
- entries: visible,
231
- heightOf,
232
- viewportRows: geometry.viewportRows,
233
- trailingContentRows: geometry.trailingContentRows,
234
- offset: geometry.offset,
235
- overscan: VIRTUAL_LIMITS.overscan,
236
- });
237
- const slice = visible.slice(selection.startIndex, selection.endIndex);
238
- if (mountedSink)
239
- mountedSink.current = slice.length;
240
- // One more pass over the array `selectWindow` has already walked, reading the
241
- // SAME height table and never the geometry context (§4.3.1a). `visible` is
242
- // what is drawn, so its last entry is the tail; entries the horizon dropped are
243
- // not "removed rows" and must not register as one.
244
- if (tailSink) {
245
- tailSink.current = advanceTailRows(tailSink.current, visible.map((entry) => entry.id), heightOf);
246
- }
247
- 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) => {
248
- const index = selection.startIndex + i;
249
- 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));
250
- }), selection.trailingRows > 0 && (_jsx(Box, { flexShrink: 0, height: selection.trailingRows }))] }));
251
- }
@@ -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;