@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,96 +0,0 @@
1
- /**
2
- * Theme — palette + symbols used across the Ink component tree (spec §3.2).
3
- *
4
- * A real theming engine: distinct `WARM` / `COOL` / `LIGHT` hex palettes, an
5
- * `auto` resolution that is deterministic (`auto -> warm`, since terminals
6
- * cannot reliably report their background), color degradation across terminal
7
- * depth (truecolor -> 256 -> 16 -> monochrome), and an ASCII symbol swap for
8
- * terminals without Unicode support.
9
- *
10
- * Two things used to live here and no longer do (spec §4.1 / §4.5):
11
- * - the three symbol tables moved to `glyphs.ts`, which is now the single
12
- * source of truth for every user-visible character. `symbols` is a VIEW of
13
- * `pickGlyphs(caps)`, so every existing `theme.symbols.x` consumer is
14
- * unchanged;
15
- * - the palette data moved to `palettes.ts`.
16
- */
17
- import type { ThemeName } from '../config/schema.js';
18
- import type { TermCapabilities } from './capabilities.js';
19
- import { type Glyphs } from './glyphs.js';
20
- /** A resolved color: a hex/name string, or `undefined` (Ink renders plain). */
21
- type Color = string | undefined;
22
- /**
23
- * Retained name for the symbol view on `Theme`. It is exactly `Glyphs`: the
24
- * split is by ownership (glyphs.ts owns the data), not by shape.
25
- */
26
- export type ThemeSymbols = Glyphs;
27
- export interface Theme {
28
- name: ThemeName;
29
- symbols: ThemeSymbols;
30
- primary: Color;
31
- accent: Color;
32
- user: Color;
33
- assistant: Color;
34
- thinking: Color;
35
- toolPending: Color;
36
- toolRunning: Color;
37
- toolDone: Color;
38
- toolError: Color;
39
- noticeInfo: Color;
40
- noticeWarn: Color;
41
- noticeError: Color;
42
- muted: Color;
43
- border: Color;
44
- code: Color;
45
- /** Composer border while the input holds a draft. */
46
- focusBorder: Color;
47
- /** Composer border while idle and empty (matches the legacy `border`). */
48
- idleBorder: Color;
49
- /** Hint lines, collapse notices, and the off-bottom indicator. */
50
- hintFg: Color;
51
- /** Single-color wordmark fallback below ansi-256. */
52
- logoShadow: Color;
53
- /**
54
- * Drag-selection highlight (tui-selection-and-scroll-follow §4.4.4).
55
- *
56
- * Degraded like every other colour here, which means that below ansi-256 these
57
- * are chalk colour NAMES rather than hex triples. `highlight.ts` tests for a
58
- * hex shape and falls back to plain reverse video otherwise — the fallback a
59
- * terminal that shallow would render anyway, and what the emulator's own
60
- * selection looks like.
61
- */
62
- selectionBg: Color;
63
- selectionFg: Color;
64
- gradient: string[];
65
- gauge: {
66
- track: Color;
67
- low: Color;
68
- mid: Color;
69
- high: Color;
70
- };
71
- diff: {
72
- add: Color;
73
- remove: Color;
74
- meta: Color;
75
- context: Color;
76
- };
77
- toast: {
78
- info: Color;
79
- warn: Color;
80
- error: Color;
81
- success: Color;
82
- };
83
- chip: {
84
- fg: Color;
85
- bg: Color;
86
- };
87
- /**
88
- * The GOVERN posture colour (governance-mode section 10.7). Hex above ansi-256 and
89
- * `undefined` at level 0 like every other token, but PINNED to `magenta` at 16 colours
90
- * instead of the nearest-ANSI search: that search lands COOL's teal on cyan, which is
91
- * `user`'s colour, and the badge exists to be unmistakable.
92
- */
93
- governAccent: Color;
94
- }
95
- export declare function getTheme(name: ThemeName, caps: TermCapabilities): Theme;
96
- export {};
package/dist/ui/theme.js DELETED
@@ -1,130 +0,0 @@
1
- /**
2
- * Theme — palette + symbols used across the Ink component tree (spec §3.2).
3
- *
4
- * A real theming engine: distinct `WARM` / `COOL` / `LIGHT` hex palettes, an
5
- * `auto` resolution that is deterministic (`auto -> warm`, since terminals
6
- * cannot reliably report their background), color degradation across terminal
7
- * depth (truecolor -> 256 -> 16 -> monochrome), and an ASCII symbol swap for
8
- * terminals without Unicode support.
9
- *
10
- * Two things used to live here and no longer do (spec §4.1 / §4.5):
11
- * - the three symbol tables moved to `glyphs.ts`, which is now the single
12
- * source of truth for every user-visible character. `symbols` is a VIEW of
13
- * `pickGlyphs(caps)`, so every existing `theme.symbols.x` consumer is
14
- * unchanged;
15
- * - the palette data moved to `palettes.ts`.
16
- */
17
- import { pickGlyphs } from './glyphs.js';
18
- import { resolvePalette } from './palettes.js';
19
- // ---------------------------------------------------------------------------
20
- // Color degradation (truecolor -> 256 -> 16 -> monochrome)
21
- // ---------------------------------------------------------------------------
22
- /** The 16 standard ANSI colours as chalk names + representative RGB. */
23
- const ANSI16 = [
24
- ['black', [0, 0, 0]],
25
- ['red', [205, 49, 49]],
26
- ['green', [13, 188, 121]],
27
- ['yellow', [229, 229, 16]],
28
- ['blue', [36, 114, 200]],
29
- ['magenta', [188, 63, 188]],
30
- ['cyan', [17, 168, 205]],
31
- ['white', [229, 229, 229]],
32
- ['gray', [102, 102, 102]],
33
- ['redBright', [241, 76, 76]],
34
- ['greenBright', [35, 209, 139]],
35
- ['yellowBright', [245, 245, 67]],
36
- ['blueBright', [59, 142, 234]],
37
- ['magentaBright', [214, 112, 214]],
38
- ['cyanBright', [41, 184, 219]],
39
- ['whiteBright', [255, 255, 255]],
40
- ];
41
- function hexToRgb(hex) {
42
- let h = hex.replace('#', '').trim();
43
- if (h.length === 3)
44
- h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];
45
- const n = Number.parseInt(h, 16);
46
- return [(n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff];
47
- }
48
- /** Nearest of the 16 ANSI colours (chalk name) to an arbitrary hex. */
49
- function nearestAnsi16(hex) {
50
- const [r, g, b] = hexToRgb(hex);
51
- let best = ANSI16[0][0];
52
- let bestDist = Infinity;
53
- for (const [name, [cr, cg, cb]] of ANSI16) {
54
- const d = (r - cr) ** 2 + (g - cg) ** 2 + (b - cb) ** 2;
55
- if (d < bestDist) {
56
- bestDist = d;
57
- best = name;
58
- }
59
- }
60
- return best;
61
- }
62
- /** Degrade a hex colour to the terminal's depth; `undefined` at level 0. */
63
- function degrade(hex, level) {
64
- if (level === 0)
65
- return undefined;
66
- if (level === 1)
67
- return nearestAnsi16(hex);
68
- return hex; // level 2/3: Ink/chalk downsamples the hex as needed
69
- }
70
- // ---------------------------------------------------------------------------
71
- // getTheme (memoized)
72
- // ---------------------------------------------------------------------------
73
- const cache = new Map();
74
- export function getTheme(name, caps) {
75
- const key = `${name}|${caps.colorLevel}|${caps.unicode}`;
76
- const hit = cache.get(key);
77
- if (hit)
78
- return hit;
79
- const palette = resolvePalette(name);
80
- const level = caps.colorLevel;
81
- const d = (hex) => degrade(hex, level);
82
- const theme = {
83
- name,
84
- symbols: pickGlyphs(caps),
85
- primary: d(palette.primary),
86
- accent: d(palette.accent),
87
- user: d(palette.user),
88
- assistant: d(palette.assistant),
89
- thinking: d(palette.thinking),
90
- toolPending: d(palette.toolPending),
91
- toolRunning: d(palette.toolRunning),
92
- toolDone: d(palette.toolDone),
93
- toolError: d(palette.toolError),
94
- noticeInfo: d(palette.noticeInfo),
95
- noticeWarn: d(palette.noticeWarn),
96
- noticeError: d(palette.noticeError),
97
- muted: d(palette.muted),
98
- border: d(palette.border),
99
- code: d(palette.code),
100
- focusBorder: d(palette.focusBorder),
101
- idleBorder: d(palette.idleBorder),
102
- hintFg: d(palette.hintFg),
103
- logoShadow: d(palette.logoShadow),
104
- selectionBg: d(palette.selectionBg),
105
- selectionFg: d(palette.selectionFg),
106
- gradient: level >= 2 ? [...palette.gradient] : [],
107
- gauge: {
108
- track: d(palette.gauge.track),
109
- low: d(palette.gauge.low),
110
- mid: d(palette.gauge.mid),
111
- high: d(palette.gauge.high),
112
- },
113
- diff: {
114
- add: d(palette.diff.add),
115
- remove: d(palette.diff.remove),
116
- meta: d(palette.diff.meta),
117
- context: d(palette.diff.context),
118
- },
119
- toast: {
120
- info: d(palette.toast.info),
121
- warn: d(palette.toast.warn),
122
- error: d(palette.toast.error),
123
- success: d(palette.toast.success),
124
- },
125
- chip: { fg: d(palette.chip.fg), bg: d(palette.chip.bg) },
126
- governAccent: level === 1 ? 'magenta' : d(palette.governAccent),
127
- };
128
- cache.set(key, theme);
129
- return theme;
130
- }
@@ -1,41 +0,0 @@
1
- import type { Entry, UsageTotal } from '../agent/reducer.js';
2
- import type { Glyphs } from './glyphs.js';
3
- export interface TranscriptTextOptions {
4
- /**
5
- * Glyph set for the terminal being replayed into. The exit replay lands in
6
- * the SAME terminal the TUI just left, so it degrades by the same rule; it
7
- * used to spell 11 Unicode literals of its own and wrote mojibake straight
8
- * into the user's normal buffer on a legacy console.
9
- */
10
- glyphs: Glyphs;
11
- usageTotal: UsageTotal;
12
- model: string;
13
- provider: string;
14
- elapsedMs: number;
15
- /** Entries beyond this count collapse into a single "… N omitted" line. */
16
- maxEntries?: number;
17
- /**
18
- * Entries the retain ring already removed from `ViewState`
19
- * (tui-render-performance L1 / K-6).
20
- *
21
- * A DIFFERENT LOSS FROM `maxEntries`, and both have to be reported: that one
22
- * omits the middle of a transcript this replay still holds in full, while this
23
- * one names entries the process no longer has. A replay that silently starts
24
- * mid-session is exactly the failure the retain ring would otherwise
25
- * introduce.
26
- */
27
- droppedEntries?: number;
28
- }
29
- /**
30
- * The three figures every session summary carries: turns, tokens, cost.
31
- *
32
- * One implementation for the exit replay and the native-scroll exit summary
33
- * (tui-native-terminal-scroll §4.8), so the two can never disagree.
34
- */
35
- export declare function formatSessionStats(entries: readonly Entry[], usageTotal: UsageTotal, g: Pick<Glyphs, 'arrowUp' | 'arrowDown'>): {
36
- turns: string;
37
- tokens: string;
38
- cost: string;
39
- };
40
- /** Render the whole session (summary line + entries) as plain text. */
41
- export declare function renderTranscriptText(entries: Entry[], opts: TranscriptTextOptions): string;
@@ -1,282 +0,0 @@
1
- import { formatCost, formatDuration, formatTokens, promptTokensOf } from '../agent/usage.js';
2
- import { formatRetryLine } from '../agent/retry-view.js';
3
- import { childStatus, outcomePhrase, rosterCounts, statusMarkerCell } from './team-status.js';
4
- import { expandTabs } from './display-tab.js';
5
- import { governanceCardLines } from './layout/governance-card.js';
6
- import { invocationCardLines } from './layout/invocation-card.js';
7
- const DEFAULT_MAX_ENTRIES = 200;
8
- const CONTINUATION_INDENT = ' ';
9
- const TOOL_INDENT = ' ';
10
- const MAX_ARG_CHARS = 60;
11
- /**
12
- * Prefix the first line with `marker`, indent the rest to line up under it.
13
- *
14
- * `expandTabs` RUNS BEFORE THE PREFIX IS ADDED, so a stored line lands on the
15
- * same columns the TUI drew it at. Without it this replay -- the only record
16
- * left once the alternate screen is torn down -- disagreed with the screen
17
- * about every TAB, because the terminal painted an eight-column stop under text
18
- * the composer had laid out at four.
19
- */
20
- function block(marker, text) {
21
- const lines = expandTabs(text.replace(/\r\n/g, '\n')).split('\n');
22
- const head = `${marker} ${lines[0] ?? ''}`.trimEnd();
23
- const rest = lines.slice(1).map((l) => `${CONTINUATION_INDENT}${l}`.trimEnd());
24
- return [head, ...rest];
25
- }
26
- /** A short, single-line rendering of the tool's arguments. */
27
- function argSummary(entry, glyphs) {
28
- const source = entry.args ?? safeParse(entry.argsRaw);
29
- if (!source)
30
- return '';
31
- const parts = [];
32
- for (const value of Object.values(source)) {
33
- if (typeof value === 'string')
34
- parts.push(value);
35
- else if (typeof value === 'number' || typeof value === 'boolean')
36
- parts.push(String(value));
37
- if (parts.length >= 2)
38
- break;
39
- }
40
- const joined = parts.join(' ').replace(/\s+/g, ' ').trim();
41
- if (joined.length === 0)
42
- return '';
43
- return joined.length > MAX_ARG_CHARS
44
- ? `${joined.slice(0, MAX_ARG_CHARS - 1)}${glyphs.ellipsis}`
45
- : joined;
46
- }
47
- function safeParse(raw) {
48
- if (!raw || raw.trim().length === 0)
49
- return null;
50
- try {
51
- const parsed = JSON.parse(raw);
52
- return parsed && typeof parsed === 'object' ? parsed : null;
53
- }
54
- catch {
55
- return null;
56
- }
57
- }
58
- /**
59
- * The replay's glyph for a service, MIRRORING `ServiceCard::serviceGlyph`.
60
- *
61
- * The two ladders have to agree, and the cheap-looking shortcut here — "ready or
62
- * running is a tick, everything else is an error" — disagrees on the two states
63
- * a user reaches ON PURPOSE: a service they stopped with `Ctrl+C`, and one that
64
- * exited cleanly. Marking either as a failure in the record the user is left
65
- * with after the alternate screen is torn down is a lie about their own action.
66
- *
67
- * Duplicated rather than imported, as every other case in this file duplicates
68
- * its card's ladder: this module is deliberately free of React and ink, and
69
- * `serviceGlyph` lives in a `.tsx`.
70
- */
71
- function serviceTextGlyph(status, exitCode, glyphs) {
72
- switch (status) {
73
- case 'ready':
74
- return glyphs.toolDone;
75
- case 'running':
76
- return glyphs.toolRunning;
77
- case 'starting':
78
- case 'stopped':
79
- return glyphs.toolPending;
80
- case 'exited':
81
- return exitCode === 0 ? glyphs.toolDone : glyphs.toolError;
82
- default:
83
- return glyphs.toolError;
84
- }
85
- }
86
- function renderEntry(entry, glyphs) {
87
- switch (entry.kind) {
88
- case 'queued':
89
- return block('Queued but never sent:', entry.text);
90
- case 'user':
91
- return entry.invocation
92
- ? [...block(glyphs.user, entry.text), ...invocationCardLines(entry.invocation)]
93
- : block(glyphs.user, entry.text);
94
- case 'assistant': {
95
- const suffix = entry.aborted ? ' (aborted)' : '';
96
- return block(glyphs.assistant, `${entry.text}${suffix}`);
97
- }
98
- case 'tool': {
99
- const glyph = entry.isError || entry.status === 'error' ? glyphs.toolError : glyphs.toolDone;
100
- const args = argSummary(entry, glyphs);
101
- const duration = entry.durationMs === undefined ? '' : ` (${entry.durationMs}ms)`;
102
- return [`${TOOL_INDENT}${glyph} ${entry.label || entry.name}${args ? ` ${args}` : ''}${duration}`];
103
- }
104
- case 'team': {
105
- // Same rows as `TeamCard`, without colour (team-subagents §6.3). A
106
- // dispatch is often the most expensive thing in a session, so leaving it
107
- // out of the plain-text replay would make the exported transcript
108
- // unaccountable for most of its own cost.
109
- // ONE COUNTING AUTHORITY (`team-status.ts`), so the replay cannot disagree with
110
- // the card it replays: `runs.length - ok` counted a cancelled child as a failed
111
- // one, and a still-working one as a failure (tui-subagent-double-roster E3/E8).
112
- // A cancellation therefore gets its own bucket instead of inflating `failed`.
113
- const counts = rosterCounts(entry.runs);
114
- const head = entry.active || (entry.aborted && entry.durationMs === undefined)
115
- ? 'interrupted'
116
- : `${entry.durationMs ?? 0}ms (${outcomePhrase(counts)})`;
117
- const lines = [
118
- `${TOOL_INDENT}team ${entry.runs.length} subagents ${head}`,
119
- ...entry.runs.map((run) => {
120
- // The same five-state judgement the card uses: only a real failure takes
121
- // the cross, a cancelled child takes the warning and a running one the
122
- // running marker. `statusMarkerCell`, NOT the bare glyph: the ASCII tier
123
- // spells `[ok]`, `[x]` and `!` at three widths, and a replay whose label
124
- // column shifts from row to row is unreadable.
125
- const glyph = statusMarkerCell(childStatus(run), glyphs);
126
- const detail = run.error ? ` ${run.error}` : '';
127
- return `${TOOL_INDENT}${CONTINUATION_INDENT}${glyph} ${run.label} ${run.description}${detail}`;
128
- }),
129
- ];
130
- return lines;
131
- }
132
- case 'retry': {
133
- // A turn that spent three minutes retrying is exactly the kind of cost an
134
- // exported transcript is supposed to account for — the same argument the
135
- // `team` case above makes in its own words. This file's `default: return []`
136
- // means the addition is a CHOICE rather than a compile requirement, and it is
137
- // worth making: without it a replay of a session that lost two minutes to a
138
- // 529 shows a gap and no reason for it.
139
- const glyph = entry.phase === 'exhausted' ? glyphs.error : glyphs.retry;
140
- return [
141
- `${TOOL_INDENT}${glyph} ${formatRetryLine(entry, glyphs, Date.now())}`,
142
- ];
143
- }
144
- case 'fast': {
145
- // Reviews are real spend and real advice, and an exported transcript that
146
- // omitted them would be unaccountable for both — the argument the `team`
147
- // and `retry` cases above each make in their own words.
148
- const glyph = entry.status === 'failed' ? glyphs.toolError : glyphs.toolDone;
149
- const duration = entry.durationMs === undefined ? '' : ` (${entry.durationMs}ms)`;
150
- const head = `${TOOL_INDENT}${glyph} fast review #${entry.reviewIndex} ${entry.model} ` +
151
- `turn ${entry.turn}${duration}`;
152
- if (entry.status === 'advice' && entry.text) {
153
- return [head, ...entry.text.split('\n').map((l) => `${TOOL_INDENT}${CONTINUATION_INDENT}${l}`)];
154
- }
155
- const detail = entry.detail ? `: ${entry.detail}` : '';
156
- return [`${head} ${entry.status}${detail}`];
157
- }
158
- case 'compaction': {
159
- // A compaction is real spend AND a real, permanent loss of history, and an
160
- // exported transcript that omitted it would be unaccountable for both —
161
- // the argument the `team`, `retry` and `fast` cases above each make in
162
- // their own words. It matters most here: this is the one entry kind whose
163
- // presence explains why the messages the reader is looking for are gone.
164
- const glyph = entry.applied ? glyphs.compaction : glyphs.toolError;
165
- const duration = entry.durationMs === undefined ? '' : ` (${entry.durationMs}ms)`;
166
- if (!entry.applied) {
167
- const why = entry.reason ? `: ${entry.reason}` : '';
168
- return [`${TOOL_INDENT}${glyph} context not compacted #${entry.index}${why}`];
169
- }
170
- const head = `${TOOL_INDENT}${glyph} context compacted #${entry.index} ` +
171
- `${entry.messagesBefore} ${glyphs.arrowRight} ${entry.messagesAfter} messages, ` +
172
- `${entry.tokensBefore} ${glyphs.arrowRight} ${entry.tokensAfter} tokens ` +
173
- `[${entry.mode}] ${entry.model}${duration}`;
174
- if (!entry.summary)
175
- return [head];
176
- return [
177
- head,
178
- ...entry.summary.split('\n').map((l) => `${TOOL_INDENT}${CONTINUATION_INDENT}${l}`),
179
- ];
180
- }
181
- case 'service': {
182
- // A service the agent started is real work with a real outcome, and an
183
- // exported transcript that omitted it would be unaccountable for both —
184
- // the argument the `team`, `retry`, `fast` and `compaction` cases above
185
- // each make in their own words. It matters more here than for any of them:
186
- // this replay is the user's ONLY record once the alternate screen is torn
187
- // down (`cli.tsx`'s exit snapshot), and a service card dropped from it
188
- // takes the URL the agent reported with it. This file's
189
- // `default: return []` means the addition is a CHOICE rather than a
190
- // compile requirement, which is exactly why it is easy to leave out
191
- // (P0-3).
192
- const glyph = serviceTextGlyph(entry.status, entry.exitCode, glyphs);
193
- const where = entry.url ? ` ${entry.url}` : '';
194
- const code = entry.exitCode === null || entry.exitCode === undefined
195
- ? ''
196
- : ` (exit code ${entry.exitCode})`;
197
- return [
198
- `${TOOL_INDENT}${glyph} service ${entry.serviceId} ${entry.command} ` +
199
- `${entry.status}${where}${code}`.trimEnd(),
200
- ];
201
- }
202
- case 'governance': {
203
- // A settlement card is the record of what a governed run decided and scored; an
204
- // exported transcript that omitted it would be unaccountable for the run (the
205
- // argument the `team`, `retry` and `fast` cases make in their own words). Same
206
- // lines as the card, without colour.
207
- const lines = governanceCardLines(entry.card, glyphs);
208
- return lines.map((line, index) => `${TOOL_INDENT}${index === 0 ? glyphs.teamAgent : ' '} ${line}`.trimEnd());
209
- }
210
- case 'notice': {
211
- const glyph = entry.level === 'error'
212
- ? glyphs.error
213
- : entry.level === 'warn'
214
- ? glyphs.warn
215
- : glyphs.info;
216
- return block(`${TOOL_INDENT}${glyph}`, entry.text);
217
- }
218
- default:
219
- return [];
220
- }
221
- }
222
- /**
223
- * The three figures every session summary carries: turns, tokens, cost.
224
- *
225
- * One implementation for the exit replay and the native-scroll exit summary
226
- * (tui-native-terminal-scroll §4.8), so the two can never disagree.
227
- */
228
- export function formatSessionStats(entries, usageTotal, g) {
229
- const turns = entries.filter((e) => e.kind === 'user').length;
230
- // THE SAME PROMPT-SIDE TOTAL THE STATUS BAR SHOWS (context-usage-gauge-accuracy
231
- // §3.6). This line is what a user compares against the bar they were watching a
232
- // second earlier, so a different unit here would look like the exit summary
233
- // losing tokens.
234
- const tokens = `${formatTokens(promptTokensOf(usageTotal))}${g.arrowUp} ${formatTokens(usageTotal.outputTokens)}${g.arrowDown}`;
235
- return {
236
- turns: `${turns} ${turns === 1 ? 'turn' : 'turns'}`,
237
- tokens,
238
- cost: formatCost(usageTotal.costUsd),
239
- };
240
- }
241
- /** Render the whole session (summary line + entries) as plain text. */
242
- export function renderTranscriptText(entries, opts) {
243
- const g = opts.glyphs;
244
- const stats = formatSessionStats(entries, opts.usageTotal, g);
245
- const summary = [
246
- 'aragon',
247
- `${opts.provider}:${opts.model}`,
248
- stats.turns,
249
- stats.tokens,
250
- stats.cost,
251
- formatDuration(Math.max(0, opts.elapsedMs)),
252
- ].join(` ${g.midDot} `);
253
- const max = opts.maxEntries ?? DEFAULT_MAX_ENTRIES;
254
- const lines = [summary];
255
- const dropped = opts.droppedEntries ?? 0;
256
- if (dropped > 0) {
257
- lines.push(`${g.ellipsis} ${dropped} earlier ${dropped === 1 ? 'entry' : 'entries'} dropped by ` +
258
- `transcriptRetain ${g.midDot} raise it or /save sooner`);
259
- }
260
- const historyCount = entries.filter((entry) => entry.kind !== 'queued').length;
261
- const omitted = max > 1 ? Math.max(0, historyCount - max) : 0;
262
- const head = Math.ceil(max / 2);
263
- const tailStart = historyCount - (max - head);
264
- let historyIndex = 0;
265
- let reported = false;
266
- for (const entry of entries) {
267
- if (entry.kind === 'queued') {
268
- lines.push(...renderEntry(entry, g));
269
- continue;
270
- }
271
- const index = historyIndex++;
272
- if (omitted > 0 && index >= head && index < tailStart) {
273
- if (!reported) {
274
- lines.push(`${g.ellipsis} ${omitted} entries omitted ${g.midDot} use /save before exiting`);
275
- reported = true;
276
- }
277
- continue;
278
- }
279
- lines.push(...renderEntry(entry, g));
280
- }
281
- return `${lines.join('\n')}\n`;
282
- }
@@ -1,31 +0,0 @@
1
- /**
2
- * The transcript height cache (tui-render-performance L3).
3
- *
4
- * Virtualisation needs a height for entries it is NOT mounting. Measured
5
- * heights are authoritative; entries that have never been on screen fall back to
6
- * `estimateEntryRows`, and both are memoised on the same `heightKey` so a
7
- * `cols` change or a content change invalidates them together (V-5).
8
- *
9
- * THE MAP LIVES IN A REF, NOT IN STATE, and the version counter is bumped at
10
- * most once per frame through a microtask and ONLY when a value actually
11
- * changed. K-2 is the failure this shape exists to prevent: a naive
12
- * measure -> setState -> re-measure store never converges, and the symptom is a
13
- * hung terminal rather than an error. In steady state — settled entries at a
14
- * fixed width — this produces zero extra renders.
15
- */
16
- import { type HeightKey } from './layout/virtual-window.js';
17
- export interface HeightStoreStats {
18
- measured: number;
19
- estimated: number;
20
- }
21
- export interface HeightStore {
22
- /** Bumped at most once per frame, and only when a measurement changed. */
23
- version: number;
24
- /** Measured rows, else the memoised estimate, computing it once if needed. */
25
- resolve: (key: HeightKey, estimate: () => number) => number;
26
- /** Called from `MeasuredEntry`'s layout effect. Idempotent per (key, value). */
27
- report: (key: HeightKey, rows: number) => void;
28
- stats: () => HeightStoreStats;
29
- clear: () => void;
30
- }
31
- export declare function useHeightStore(): HeightStore;
@@ -1,76 +0,0 @@
1
- /**
2
- * The transcript height cache (tui-render-performance L3).
3
- *
4
- * Virtualisation needs a height for entries it is NOT mounting. Measured
5
- * heights are authoritative; entries that have never been on screen fall back to
6
- * `estimateEntryRows`, and both are memoised on the same `heightKey` so a
7
- * `cols` change or a content change invalidates them together (V-5).
8
- *
9
- * THE MAP LIVES IN A REF, NOT IN STATE, and the version counter is bumped at
10
- * most once per frame through a microtask and ONLY when a value actually
11
- * changed. K-2 is the failure this shape exists to prevent: a naive
12
- * measure -> setState -> re-measure store never converges, and the symptom is a
13
- * hung terminal rather than an error. In steady state — settled entries at a
14
- * fixed width — this produces zero extra renders.
15
- */
16
- import { useCallback, useEffect, useRef, useState } from 'react';
17
- import { VIRTUAL_LIMITS } from './layout/virtual-window.js';
18
- /** Drop the oldest keys once a map passes the ceiling (insertion-ordered LRU). */
19
- function trim(map) {
20
- while (map.size > VIRTUAL_LIMITS.heightEntries) {
21
- const oldest = map.keys().next();
22
- if (oldest.done)
23
- break;
24
- map.delete(oldest.value);
25
- }
26
- }
27
- export function useHeightStore() {
28
- const measured = useRef(new Map());
29
- const estimated = useRef(new Map());
30
- const [version, setVersion] = useState(0);
31
- const scheduled = useRef(false);
32
- const mounted = useRef(true);
33
- useEffect(() => () => {
34
- mounted.current = false;
35
- }, []);
36
- const report = useCallback((key, rows) => {
37
- const value = Number.isFinite(rows) && rows > 0 ? Math.floor(rows) : 0;
38
- if (value <= 0)
39
- return;
40
- if (measured.current.get(key) === value)
41
- return;
42
- measured.current.set(key, value);
43
- trim(measured.current);
44
- // An estimate that has been superseded is dead weight; dropping it here is
45
- // what keeps `stats()` honest for `/perf`.
46
- estimated.current.delete(key);
47
- if (scheduled.current)
48
- return;
49
- scheduled.current = true;
50
- queueMicrotask(() => {
51
- scheduled.current = false;
52
- if (mounted.current)
53
- setVersion((v) => v + 1);
54
- });
55
- }, []);
56
- const resolve = useCallback((key, estimate) => {
57
- const hit = measured.current.get(key);
58
- if (hit !== undefined)
59
- return hit;
60
- const cached = estimated.current.get(key);
61
- if (cached !== undefined)
62
- return cached;
63
- const value = Math.max(1, Math.floor(estimate()));
64
- estimated.current.set(key, value);
65
- trim(estimated.current);
66
- return value;
67
- }, []);
68
- const stats = useCallback(() => ({ measured: measured.current.size, estimated: estimated.current.size }), []);
69
- const clear = useCallback(() => {
70
- measured.current.clear();
71
- estimated.current.clear();
72
- if (mounted.current)
73
- setVersion((v) => v + 1);
74
- }, []);
75
- return { version, resolve, report, stats, clear };
76
- }