@aragon-agent/cli 0.6.47 → 0.6.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +27 -6
  3. package/dist/agent/coalesce.d.ts +1 -1
  4. package/dist/agent/controller.d.ts +21 -21
  5. package/dist/agent/controller.js +13 -13
  6. package/dist/agent/conversation-reset.d.ts +1 -1
  7. package/dist/agent/governance-wiring.d.ts +6 -6
  8. package/dist/agent/governance-wiring.js +4 -4
  9. package/dist/agent/headless.d.ts +5 -5
  10. package/dist/agent/headless.js +4 -4
  11. package/dist/agent/job-notices.d.ts +1 -1
  12. package/dist/agent/job-notices.js +1 -1
  13. package/dist/agent/kit-apply.d.ts +3 -3
  14. package/dist/agent/kit-apply.js +3 -3
  15. package/dist/agent/model-profile-settings.d.ts +2 -2
  16. package/dist/agent/model-profile-settings.js +6 -6
  17. package/dist/agent/prompt-options.d.ts +1 -1
  18. package/dist/agent/system-prompt.d.ts +1 -1
  19. package/dist/{ui → app}/App.d.ts +9 -9
  20. package/dist/{ui → app}/App.js +79 -79
  21. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  22. package/dist/{ui → app}/use-startup-notices.js +2 -2
  23. package/dist/cli.js +29 -29
  24. package/dist/commands/agents-command.js +1 -1
  25. package/dist/commands/builtins.js +9 -9
  26. package/dist/commands/governance-command.js +2 -2
  27. package/dist/commands/governance-runs-table.js +1 -1
  28. package/dist/commands/kit-command.js +1 -1
  29. package/dist/commands/perf.d.ts +3 -3
  30. package/dist/commands/perf.js +1 -1
  31. package/dist/commands/registry.d.ts +8 -8
  32. package/dist/commands/skills.js +2 -2
  33. package/dist/commands/team-command.js +1 -1
  34. package/dist/compaction/archive.d.ts +1 -1
  35. package/dist/compaction/archive.js +1 -1
  36. package/dist/compaction/child.d.ts +3 -3
  37. package/dist/compaction/child.js +4 -4
  38. package/dist/compaction/command.js +5 -5
  39. package/dist/compaction/compactor.d.ts +6 -6
  40. package/dist/compaction/compactor.js +6 -6
  41. package/dist/compaction/context-command.js +1 -1
  42. package/dist/compaction/digest.js +1 -1
  43. package/dist/compaction/memory-input.js +1 -1
  44. package/dist/compaction/memory-validation.js +1 -1
  45. package/dist/compaction/memory.js +1 -1
  46. package/dist/compaction/summarize-call.js +1 -1
  47. package/dist/compaction/summary-prompt.js +1 -1
  48. package/dist/compaction/tail-budget.js +2 -2
  49. package/dist/compaction/wiring.d.ts +5 -5
  50. package/dist/compaction/wiring.js +2 -2
  51. package/dist/config/cli-commands.d.ts +1 -1
  52. package/dist/config/cli-commands.js +3 -3
  53. package/dist/config/env.d.ts +1 -1
  54. package/dist/config/env.js +4 -4
  55. package/dist/config/load.d.ts +2 -2
  56. package/dist/config/load.js +6 -6
  57. package/dist/config/migrate-state-out-of-config.js +1 -1
  58. package/dist/config/model-profile-store.d.ts +4 -54
  59. package/dist/config/model-profile-store.js +3 -3
  60. package/dist/config/prompt-history.js +1 -1
  61. package/dist/config/store.d.ts +2 -2
  62. package/dist/config/store.js +3 -3
  63. package/dist/diagnostics/doctor.js +4 -4
  64. package/dist/exec/bridge/decisions.d.ts +1 -1
  65. package/dist/exec/bridge/human-answers.d.ts +1 -1
  66. package/dist/exec/bridge/human-answers.js +1 -1
  67. package/dist/exec/bridge/protocol.d.ts +1 -1
  68. package/dist/exec/bridge/server.js +1 -1
  69. package/dist/exec/events.d.ts +2 -2
  70. package/dist/exec/index.d.ts +1 -1
  71. package/dist/exec/index.js +1 -1
  72. package/dist/exec/permission.js +1 -1
  73. package/dist/exec/runner.d.ts +3 -3
  74. package/dist/exec/runner.js +2 -2
  75. package/dist/exec/threads/runtime.js +1 -1
  76. package/dist/fast/digest.d.ts +1 -1
  77. package/dist/fast/digest.js +1 -1
  78. package/dist/fast/frames.d.ts +1 -1
  79. package/dist/fast/frames.js +1 -1
  80. package/dist/fast/prompt.d.ts +1 -1
  81. package/dist/fast/prompt.js +1 -1
  82. package/dist/fast/review-call.js +1 -1
  83. package/dist/fast/reviewer.d.ts +3 -3
  84. package/dist/fast/reviewer.js +1 -1
  85. package/dist/fast/summary-call.d.ts +3 -3
  86. package/dist/fast/summary-call.js +2 -2
  87. package/dist/fast/summary-prompt.d.ts +1 -1
  88. package/dist/fast/summary-prompt.js +1 -1
  89. package/dist/fast/wiring.d.ts +4 -4
  90. package/dist/fast/wiring.js +1 -1
  91. package/dist/governance/card-normalize.d.ts +1 -1
  92. package/dist/governance/copy.d.ts +1 -1
  93. package/dist/governance/copy.js +2 -2
  94. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  95. package/dist/governance/engine/budget.d.ts +1 -1
  96. package/dist/governance/engine/budget.js +1 -1
  97. package/dist/governance/engine/cards.d.ts +1 -1
  98. package/dist/governance/engine/digest.js +1 -1
  99. package/dist/governance/engine/engine-core.d.ts +5 -5
  100. package/dist/governance/engine/engine-core.js +1 -1
  101. package/dist/governance/engine/engine.d.ts +1 -1
  102. package/dist/governance/engine/engine.js +1 -1
  103. package/dist/governance/engine/estimate.d.ts +1 -1
  104. package/dist/governance/engine/estimate.js +1 -1
  105. package/dist/governance/engine/inspector.js +2 -2
  106. package/dist/governance/engine/integration.d.ts +1 -1
  107. package/dist/governance/engine/lifecycle.d.ts +1 -1
  108. package/dist/governance/engine/lifecycle.js +1 -1
  109. package/dist/governance/engine/phase-members.d.ts +1 -1
  110. package/dist/governance/engine/phase-planner.d.ts +1 -1
  111. package/dist/governance/engine/phase-planner.js +1 -1
  112. package/dist/governance/engine/rebuild.d.ts +1 -1
  113. package/dist/governance/engine/report.d.ts +1 -1
  114. package/dist/governance/engine/report.js +1 -1
  115. package/dist/governance/engine/run-digest.d.ts +1 -1
  116. package/dist/governance/engine/spec-builder.d.ts +2 -2
  117. package/dist/governance/engine/spec-builder.js +2 -2
  118. package/dist/governance/engine/stage-runner.js +2 -2
  119. package/dist/governance/engine/start-input.d.ts +1 -1
  120. package/dist/governance/engine/start-input.js +1 -1
  121. package/dist/governance/engine/state-machine.d.ts +1 -1
  122. package/dist/governance/engine/state-machine.js +3 -3
  123. package/dist/governance/engine/submission-queries.d.ts +1 -1
  124. package/dist/governance/engine/submission-render.d.ts +1 -1
  125. package/dist/governance/engine/submissions.d.ts +1 -1
  126. package/dist/governance/engine/submissions.js +1 -1
  127. package/dist/governance/engine/visibility.d.ts +1 -1
  128. package/dist/governance/engine/visibility.js +1 -1
  129. package/dist/governance/posture-transition.d.ts +2 -2
  130. package/dist/governance/posture-transition.js +1 -1
  131. package/dist/governance/profiles.d.ts +1 -1
  132. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  133. package/dist/governance/prompts/orchestrator-block.js +2 -2
  134. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  135. package/dist/governance/prompts/plan-addendum.js +1 -1
  136. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  137. package/dist/governance/prompts/role-blocks.js +1 -1
  138. package/dist/governance/report-reader.js +1 -1
  139. package/dist/governance/roles.d.ts +1 -1
  140. package/dist/governance/rules/claims.d.ts +1 -1
  141. package/dist/governance/rules/claims.js +1 -1
  142. package/dist/governance/rules/elimination.d.ts +1 -1
  143. package/dist/governance/rules/elimination.js +1 -1
  144. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  145. package/dist/governance/rules/failure-analysis.js +1 -1
  146. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  147. package/dist/governance/rules/ledger-state.d.ts +1 -1
  148. package/dist/governance/rules/ledger-state.js +1 -1
  149. package/dist/governance/rules/ledger.d.ts +2 -2
  150. package/dist/governance/rules/ledger.js +2 -2
  151. package/dist/governance/rules/rca.d.ts +1 -1
  152. package/dist/governance/rules/rca.js +1 -1
  153. package/dist/governance/rules/settlement.d.ts +2 -2
  154. package/dist/governance/rules/settlement.js +2 -2
  155. package/dist/governance/rules/suspicion.d.ts +1 -1
  156. package/dist/governance/store/artifacts.d.ts +1 -1
  157. package/dist/governance/store/artifacts.js +1 -1
  158. package/dist/governance/store/events-log.d.ts +1 -1
  159. package/dist/governance/store/run-store.d.ts +1 -1
  160. package/dist/governance/store/run-store.js +1 -1
  161. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  162. package/dist/governance/tools/child-tools.d.ts +1 -1
  163. package/dist/governance/tools/guard.d.ts +1 -1
  164. package/dist/governance/tools/guard.js +1 -1
  165. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  166. package/dist/governance/tools/inspector-tools.js +2 -2
  167. package/dist/governance/tools/lead-tools.d.ts +1 -1
  168. package/dist/governance/tools/lead-tools.js +1 -1
  169. package/dist/governance/tools/normalize-util.js +1 -1
  170. package/dist/governance/tools/scan-incomplete.js +1 -1
  171. package/dist/governance/tools/shared-tools.d.ts +1 -1
  172. package/dist/governance/tools/shared-tools.js +1 -1
  173. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  174. package/dist/governance/tools/submit-normalizers.js +1 -1
  175. package/dist/governance/tools/submit-tools.d.ts +1 -1
  176. package/dist/logging/cli-commands.js +1 -1
  177. package/dist/logging/install.d.ts +1 -1
  178. package/dist/logging/install.js +3 -3
  179. package/dist/logging/logger.d.ts +2 -2
  180. package/dist/logging/logger.js +31 -2
  181. package/dist/proc/kill-tree.js +1 -1
  182. package/dist/proc/log-mirror.js +1 -1
  183. package/dist/proc/log-ring.js +2 -2
  184. package/dist/proc/notices.d.ts +1 -1
  185. package/dist/proc/notices.js +2 -2
  186. package/dist/proc/prompt.d.ts +1 -1
  187. package/dist/proc/prompt.js +1 -1
  188. package/dist/proc/readiness.js +1 -1
  189. package/dist/proc/supervisor.d.ts +1 -1
  190. package/dist/proc/supervisor.js +3 -3
  191. package/dist/proc/wait.d.ts +1 -1
  192. package/dist/proc/wait.js +1 -1
  193. package/dist/prompts/command.d.ts +1 -1
  194. package/dist/prompts/command.js +1 -1
  195. package/dist/prompts/normalize.d.ts +1 -1
  196. package/dist/prompts/normalize.js +1 -1
  197. package/dist/prompts/resolve.d.ts +1 -1
  198. package/dist/prompts/store.d.ts +2 -12
  199. package/dist/prompts/store.js +6 -60
  200. package/dist/session/checkpoint.d.ts +2 -2
  201. package/dist/session/clear-archive.d.ts +2 -2
  202. package/dist/session/persist.d.ts +2 -2
  203. package/dist/session/persist.js +1 -1
  204. package/dist/session/startup-session.d.ts +2 -2
  205. package/dist/session/validate-session.js +3 -3
  206. package/dist/skills/service.d.ts +2 -2
  207. package/dist/team/bus.d.ts +1 -1
  208. package/dist/team/bus.js +1 -1
  209. package/dist/team/child-reviewer.d.ts +2 -2
  210. package/dist/team/child-reviewer.js +1 -1
  211. package/dist/team/comm-tools.js +1 -1
  212. package/dist/team/dispatch-gate.js +1 -1
  213. package/dist/team/forced-dispatch.js +1 -1
  214. package/dist/team/forced-mode.d.ts +1 -1
  215. package/dist/team/forced-prompt.d.ts +1 -1
  216. package/dist/team/forced-prompt.js +1 -1
  217. package/dist/team/normalize.d.ts +1 -1
  218. package/dist/team/normalize.js +1 -1
  219. package/dist/team/overseer.d.ts +3 -3
  220. package/dist/team/overseer.js +3 -3
  221. package/dist/team/prompt.d.ts +1 -1
  222. package/dist/team/prompt.js +1 -1
  223. package/dist/team/report.d.ts +2 -2
  224. package/dist/team/report.js +2 -2
  225. package/dist/team/retry.d.ts +1 -1
  226. package/dist/team/retry.js +1 -1
  227. package/dist/team/runtime.d.ts +4 -4
  228. package/dist/team/runtime.js +2 -2
  229. package/dist/team/settled.d.ts +2 -2
  230. package/dist/team/subagent.d.ts +4 -4
  231. package/dist/team/subagent.js +5 -5
  232. package/dist/team/task-tool.d.ts +1 -1
  233. package/dist/team/task-tool.js +1 -1
  234. package/dist/todo/normalize.d.ts +1 -1
  235. package/dist/todo/normalize.js +1 -1
  236. package/dist/todo/prompt.d.ts +1 -1
  237. package/dist/todo/prompt.js +1 -1
  238. package/dist/todo/store.d.ts +1 -1
  239. package/dist/todo/store.js +2 -2
  240. package/dist/todo/todo-tool.d.ts +1 -1
  241. package/dist/todo/todo-tool.js +2 -2
  242. package/dist/tools/bash-tool.d.ts +1 -1
  243. package/dist/tools/bash-tool.js +2 -2
  244. package/dist/tools/diff.d.ts +1 -1
  245. package/dist/tools/diff.js +1 -1
  246. package/dist/tools/file-change-store.d.ts +1 -1
  247. package/dist/tools/fs-tools.d.ts +2 -2
  248. package/dist/tools/fs-tools.js +1 -1
  249. package/dist/tools/index.d.ts +3 -3
  250. package/dist/tools/index.js +1 -1
  251. package/dist/tools/job-tools.d.ts +2 -2
  252. package/dist/tools/job-tools.js +4 -4
  253. package/dist/tools/plan-tools.d.ts +1 -1
  254. package/dist/tools/plan-tools.js +1 -1
  255. package/dist/tools/proc-tools.d.ts +1 -1
  256. package/dist/tools/proc-tools.js +2 -2
  257. package/dist/update/classify-failure.d.ts +1 -1
  258. package/dist/update/install-lock.js +1 -1
  259. package/dist/update/install-source.d.ts +1 -1
  260. package/dist/update/installer.js +2 -2
  261. package/dist/update/npm-view.d.ts +1 -1
  262. package/dist/update/npm-view.js +1 -1
  263. package/dist/update/registry.d.ts +1 -1
  264. package/dist/update/registry.js +1 -1
  265. package/dist/update/service.d.ts +2 -2
  266. package/dist/update/service.js +2 -2
  267. package/package.json +7 -7
  268. package/dist/agent/agent-mode.d.ts +0 -108
  269. package/dist/agent/agent-mode.js +0 -121
  270. package/dist/agent/entry-limits.d.ts +0 -65
  271. package/dist/agent/entry-limits.js +0 -133
  272. package/dist/agent/governance-view.d.ts +0 -40
  273. package/dist/agent/governance-view.js +0 -40
  274. package/dist/agent/invocation-card.d.ts +0 -77
  275. package/dist/agent/invocation-card.js +0 -169
  276. package/dist/agent/model-probe-limits.d.ts +0 -39
  277. package/dist/agent/model-probe-limits.js +0 -25
  278. package/dist/agent/model-probe.d.ts +0 -104
  279. package/dist/agent/model-probe.js +0 -391
  280. package/dist/agent/queued-messages.d.ts +0 -23
  281. package/dist/agent/queued-messages.js +0 -49
  282. package/dist/agent/reducer.d.ts +0 -857
  283. package/dist/agent/reducer.js +0 -1646
  284. package/dist/agent/retry-view.d.ts +0 -68
  285. package/dist/agent/retry-view.js +0 -95
  286. package/dist/agent/usage.d.ts +0 -47
  287. package/dist/agent/usage.js +0 -84
  288. package/dist/compaction/limits.d.ts +0 -61
  289. package/dist/compaction/limits.js +0 -64
  290. package/dist/compaction/meter.d.ts +0 -276
  291. package/dist/compaction/meter.js +0 -512
  292. package/dist/compaction/pressure.d.ts +0 -163
  293. package/dist/compaction/pressure.js +0 -199
  294. package/dist/compaction/reason-text.d.ts +0 -36
  295. package/dist/compaction/reason-text.js +0 -78
  296. package/dist/compaction/types.d.ts +0 -360
  297. package/dist/compaction/types.js +0 -22
  298. package/dist/config/governance-config.d.ts +0 -125
  299. package/dist/config/governance-config.js +0 -164
  300. package/dist/config/kit-resolution.d.ts +0 -93
  301. package/dist/config/kit-resolution.js +0 -226
  302. package/dist/config/model-kits.d.ts +0 -225
  303. package/dist/config/model-kits.js +0 -302
  304. package/dist/config/model-profile-resolution.d.ts +0 -28
  305. package/dist/config/model-profile-resolution.js +0 -88
  306. package/dist/config/model-profiles.d.ts +0 -103
  307. package/dist/config/model-profiles.js +0 -188
  308. package/dist/config/schema.d.ts +0 -1645
  309. package/dist/config/schema.js +0 -1383
  310. package/dist/fast/limits.d.ts +0 -152
  311. package/dist/fast/limits.js +0 -152
  312. package/dist/fast/resolve.d.ts +0 -44
  313. package/dist/fast/resolve.js +0 -107
  314. package/dist/fast/task-summary-types.d.ts +0 -66
  315. package/dist/fast/task-summary-types.js +0 -17
  316. package/dist/fast/types.d.ts +0 -141
  317. package/dist/fast/types.js +0 -14
  318. package/dist/governance/governed-dispatch.d.ts +0 -19
  319. package/dist/governance/governed-dispatch.js +0 -17
  320. package/dist/governance/limits.d.ts +0 -107
  321. package/dist/governance/limits.js +0 -131
  322. package/dist/governance/posture.d.ts +0 -35
  323. package/dist/governance/posture.js +0 -59
  324. package/dist/governance/rules/events-table.d.ts +0 -46
  325. package/dist/governance/rules/events-table.js +0 -94
  326. package/dist/governance/types.d.ts +0 -661
  327. package/dist/governance/types.js +0 -27
  328. package/dist/input/control-sequences.d.ts +0 -71
  329. package/dist/input/control-sequences.js +0 -222
  330. package/dist/input/csiu-keys.d.ts +0 -66
  331. package/dist/input/csiu-keys.js +0 -181
  332. package/dist/input/cursor-report.d.ts +0 -61
  333. package/dist/input/cursor-report.js +0 -97
  334. package/dist/input/enter-sequences.d.ts +0 -64
  335. package/dist/input/enter-sequences.js +0 -153
  336. package/dist/input/interrupt-gesture.d.ts +0 -18
  337. package/dist/input/interrupt-gesture.js +0 -19
  338. package/dist/input/keyboard-enhancement.d.ts +0 -42
  339. package/dist/input/keyboard-enhancement.js +0 -65
  340. package/dist/input/keymap.d.ts +0 -20
  341. package/dist/input/keymap.js +0 -99
  342. package/dist/input/limits.d.ts +0 -118
  343. package/dist/input/limits.js +0 -109
  344. package/dist/input/mouse-events.d.ts +0 -87
  345. package/dist/input/mouse-events.js +0 -212
  346. package/dist/input/paste-parse.d.ts +0 -83
  347. package/dist/input/paste-parse.js +0 -107
  348. package/dist/input/pointer-router.d.ts +0 -11
  349. package/dist/input/pointer-router.js +0 -14
  350. package/dist/input/stdin-filter.d.ts +0 -112
  351. package/dist/input/stdin-filter.js +0 -657
  352. package/dist/input/win32-input-mode.d.ts +0 -61
  353. package/dist/input/win32-input-mode.js +0 -269
  354. package/dist/logging/levels.d.ts +0 -40
  355. package/dist/logging/levels.js +0 -59
  356. package/dist/logging/secret-registry.d.ts +0 -32
  357. package/dist/logging/secret-registry.js +0 -73
  358. package/dist/proc/limits.d.ts +0 -214
  359. package/dist/proc/limits.js +0 -221
  360. package/dist/proc/progress.d.ts +0 -47
  361. package/dist/proc/progress.js +0 -163
  362. package/dist/proc/types.d.ts +0 -269
  363. package/dist/proc/types.js +0 -15
  364. package/dist/proc/wait-view.d.ts +0 -65
  365. package/dist/proc/wait-view.js +0 -66
  366. package/dist/prompts/copy.d.ts +0 -89
  367. package/dist/prompts/copy.js +0 -131
  368. package/dist/prompts/fill.d.ts +0 -51
  369. package/dist/prompts/fill.js +0 -46
  370. package/dist/prompts/limits.d.ts +0 -53
  371. package/dist/prompts/limits.js +0 -53
  372. package/dist/prompts/search.d.ts +0 -58
  373. package/dist/prompts/search.js +0 -146
  374. package/dist/prompts/types.d.ts +0 -204
  375. package/dist/prompts/types.js +0 -13
  376. package/dist/team/activity.d.ts +0 -67
  377. package/dist/team/activity.js +0 -130
  378. package/dist/team/limits.d.ts +0 -308
  379. package/dist/team/limits.js +0 -330
  380. package/dist/team/model.d.ts +0 -104
  381. package/dist/team/model.js +0 -150
  382. package/dist/team/panel-rows.d.ts +0 -48
  383. package/dist/team/panel-rows.js +0 -75
  384. package/dist/team/timeline.d.ts +0 -74
  385. package/dist/team/timeline.js +0 -101
  386. package/dist/team/types.d.ts +0 -354
  387. package/dist/team/types.js +0 -13
  388. package/dist/todo/acceptance.d.ts +0 -120
  389. package/dist/todo/acceptance.js +0 -399
  390. package/dist/todo/follow-through.d.ts +0 -138
  391. package/dist/todo/follow-through.js +0 -248
  392. package/dist/todo/limits.d.ts +0 -152
  393. package/dist/todo/limits.js +0 -152
  394. package/dist/todo/panel-rows.d.ts +0 -45
  395. package/dist/todo/panel-rows.js +0 -70
  396. package/dist/todo/plan-sections.d.ts +0 -60
  397. package/dist/todo/plan-sections.js +0 -108
  398. package/dist/todo/row-window.d.ts +0 -51
  399. package/dist/todo/row-window.js +0 -107
  400. package/dist/todo/types.d.ts +0 -124
  401. package/dist/todo/types.js +0 -12
  402. package/dist/tools/human-input.d.ts +0 -212
  403. package/dist/tools/human-input.js +0 -265
  404. package/dist/tools/patch.d.ts +0 -115
  405. package/dist/tools/patch.js +0 -453
  406. package/dist/tools/terminal-output.d.ts +0 -115
  407. package/dist/tools/terminal-output.js +0 -201
  408. package/dist/tools/tool-output-store.d.ts +0 -68
  409. package/dist/tools/tool-output-store.js +0 -102
  410. package/dist/ui/ActivityLine.d.ts +0 -26
  411. package/dist/ui/ActivityLine.js +0 -51
  412. package/dist/ui/AutocompletePopup.d.ts +0 -23
  413. package/dist/ui/AutocompletePopup.js +0 -17
  414. package/dist/ui/BottomStatusRow.d.ts +0 -10
  415. package/dist/ui/BottomStatusRow.js +0 -9
  416. package/dist/ui/Composer.d.ts +0 -115
  417. package/dist/ui/Composer.js +0 -64
  418. package/dist/ui/GovernancePanel.d.ts +0 -50
  419. package/dist/ui/GovernancePanel.js +0 -77
  420. package/dist/ui/GovernanceRun.d.ts +0 -18
  421. package/dist/ui/GovernanceRun.js +0 -11
  422. package/dist/ui/Header.d.ts +0 -48
  423. package/dist/ui/Header.js +0 -27
  424. package/dist/ui/Logo.d.ts +0 -32
  425. package/dist/ui/Logo.js +0 -65
  426. package/dist/ui/Markdown.d.ts +0 -29
  427. package/dist/ui/Markdown.js +0 -116
  428. package/dist/ui/PromptCaret.d.ts +0 -11
  429. package/dist/ui/PromptCaret.js +0 -31
  430. package/dist/ui/PromptInput.d.ts +0 -192
  431. package/dist/ui/PromptInput.js +0 -689
  432. package/dist/ui/QueuePanel.d.ts +0 -8
  433. package/dist/ui/QueuePanel.js +0 -9
  434. package/dist/ui/QueueStatusRow.d.ts +0 -24
  435. package/dist/ui/QueueStatusRow.js +0 -51
  436. package/dist/ui/ScrollbackShell.d.ts +0 -132
  437. package/dist/ui/ScrollbackShell.js +0 -26
  438. package/dist/ui/SessionOpener.d.ts +0 -30
  439. package/dist/ui/SessionOpener.js +0 -12
  440. package/dist/ui/StatusBar.d.ts +0 -130
  441. package/dist/ui/StatusBar.js +0 -61
  442. package/dist/ui/TeamPanel.d.ts +0 -76
  443. package/dist/ui/TeamPanel.js +0 -103
  444. package/dist/ui/ToastStack.d.ts +0 -8
  445. package/dist/ui/ToastStack.js +0 -31
  446. package/dist/ui/TodoPanel.d.ts +0 -52
  447. package/dist/ui/TodoPanel.js +0 -214
  448. package/dist/ui/Transcript.d.ts +0 -105
  449. package/dist/ui/Transcript.js +0 -258
  450. package/dist/ui/UpdateLine.d.ts +0 -44
  451. package/dist/ui/UpdateLine.js +0 -129
  452. package/dist/ui/activity-phrases.d.ts +0 -33
  453. package/dist/ui/activity-phrases.js +0 -50
  454. package/dist/ui/capabilities.d.ts +0 -27
  455. package/dist/ui/capabilities.js +0 -65
  456. package/dist/ui/clipboard-task.d.ts +0 -29
  457. package/dist/ui/clipboard-task.js +0 -66
  458. package/dist/ui/clipboard.d.ts +0 -31
  459. package/dist/ui/clipboard.js +0 -157
  460. package/dist/ui/color-runtime.d.ts +0 -5
  461. package/dist/ui/color-runtime.js +0 -29
  462. package/dist/ui/composer-input.d.ts +0 -38
  463. package/dist/ui/composer-input.js +0 -79
  464. package/dist/ui/composer-limits.d.ts +0 -30
  465. package/dist/ui/composer-limits.js +0 -45
  466. package/dist/ui/composer-rows.d.ts +0 -73
  467. package/dist/ui/composer-rows.js +0 -129
  468. package/dist/ui/console-bridge.d.ts +0 -19
  469. package/dist/ui/console-bridge.js +0 -52
  470. package/dist/ui/density.d.ts +0 -26
  471. package/dist/ui/density.js +0 -34
  472. package/dist/ui/display-tab.d.ts +0 -51
  473. package/dist/ui/display-tab.js +0 -82
  474. package/dist/ui/editor-navigation.d.ts +0 -55
  475. package/dist/ui/editor-navigation.js +0 -96
  476. package/dist/ui/editor-reducer.d.ts +0 -108
  477. package/dist/ui/editor-reducer.js +0 -187
  478. package/dist/ui/enter-frames.d.ts +0 -47
  479. package/dist/ui/enter-frames.js +0 -117
  480. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  481. package/dist/ui/entries/AssistantEntry.js +0 -43
  482. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  483. package/dist/ui/entries/CompactionCard.js +0 -222
  484. package/dist/ui/entries/DiffView.d.ts +0 -61
  485. package/dist/ui/entries/DiffView.js +0 -103
  486. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  487. package/dist/ui/entries/EntryFrame.js +0 -6
  488. package/dist/ui/entries/FastCard.d.ts +0 -53
  489. package/dist/ui/entries/FastCard.js +0 -105
  490. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  491. package/dist/ui/entries/GovernanceCard.js +0 -32
  492. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  493. package/dist/ui/entries/InvocationCard.js +0 -32
  494. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  495. package/dist/ui/entries/QueuedEntry.js +0 -33
  496. package/dist/ui/entries/RetryCard.d.ts +0 -56
  497. package/dist/ui/entries/RetryCard.js +0 -60
  498. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  499. package/dist/ui/entries/ServiceCard.js +0 -151
  500. package/dist/ui/entries/TeamCard.d.ts +0 -55
  501. package/dist/ui/entries/TeamCard.js +0 -94
  502. package/dist/ui/entries/TodoCard.d.ts +0 -54
  503. package/dist/ui/entries/TodoCard.js +0 -98
  504. package/dist/ui/entries/ToolCard.d.ts +0 -81
  505. package/dist/ui/entries/ToolCard.js +0 -169
  506. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  507. package/dist/ui/entries/ToolPreview.js +0 -208
  508. package/dist/ui/entries/UserEntry.d.ts +0 -36
  509. package/dist/ui/entries/UserEntry.js +0 -57
  510. package/dist/ui/entries/WaitCard.d.ts +0 -37
  511. package/dist/ui/entries/WaitCard.js +0 -92
  512. package/dist/ui/exit-snapshot.d.ts +0 -43
  513. package/dist/ui/exit-snapshot.js +0 -26
  514. package/dist/ui/frame-differ.d.ts +0 -166
  515. package/dist/ui/frame-differ.js +0 -354
  516. package/dist/ui/frame-observer.d.ts +0 -17
  517. package/dist/ui/frame-observer.js +0 -94
  518. package/dist/ui/frame-parser.d.ts +0 -7
  519. package/dist/ui/frame-parser.js +0 -18
  520. package/dist/ui/gauge.d.ts +0 -39
  521. package/dist/ui/gauge.js +0 -55
  522. package/dist/ui/glyphs.d.ts +0 -178
  523. package/dist/ui/glyphs.js +0 -165
  524. package/dist/ui/governance-copy.d.ts +0 -69
  525. package/dist/ui/governance-copy.js +0 -104
  526. package/dist/ui/governance-status.d.ts +0 -145
  527. package/dist/ui/governance-status.js +0 -326
  528. package/dist/ui/gradient.d.ts +0 -11
  529. package/dist/ui/gradient.js +0 -50
  530. package/dist/ui/ink-runtime.d.ts +0 -4
  531. package/dist/ui/ink-runtime.js +0 -51
  532. package/dist/ui/interaction-copy.d.ts +0 -84
  533. package/dist/ui/interaction-copy.js +0 -41
  534. package/dist/ui/interaction-hints.d.ts +0 -44
  535. package/dist/ui/interaction-hints.js +0 -97
  536. package/dist/ui/layout/AppShell.d.ts +0 -17
  537. package/dist/ui/layout/AppShell.js +0 -6
  538. package/dist/ui/layout/Gutter.d.ts +0 -67
  539. package/dist/ui/layout/Gutter.js +0 -42
  540. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  541. package/dist/ui/layout/MeasuredEntry.js +0 -30
  542. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  543. package/dist/ui/layout/OverlayFrame.js +0 -110
  544. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  545. package/dist/ui/layout/ScrollIndicator.js +0 -22
  546. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  547. package/dist/ui/layout/ScrollViewport.js +0 -222
  548. package/dist/ui/layout/agents-board.d.ts +0 -102
  549. package/dist/ui/layout/agents-board.js +0 -389
  550. package/dist/ui/layout/autocomplete.d.ts +0 -18
  551. package/dist/ui/layout/autocomplete.js +0 -26
  552. package/dist/ui/layout/budget.d.ts +0 -43
  553. package/dist/ui/layout/budget.js +0 -52
  554. package/dist/ui/layout/cells.d.ts +0 -61
  555. package/dist/ui/layout/cells.js +0 -156
  556. package/dist/ui/layout/document-layout.d.ts +0 -13
  557. package/dist/ui/layout/document-layout.js +0 -10
  558. package/dist/ui/layout/follow-state.d.ts +0 -138
  559. package/dist/ui/layout/follow-state.js +0 -148
  560. package/dist/ui/layout/frame.d.ts +0 -36
  561. package/dist/ui/layout/frame.js +0 -39
  562. package/dist/ui/layout/governance-board.d.ts +0 -121
  563. package/dist/ui/layout/governance-board.js +0 -382
  564. package/dist/ui/layout/governance-card.d.ts +0 -53
  565. package/dist/ui/layout/governance-card.js +0 -134
  566. package/dist/ui/layout/governance-chip.d.ts +0 -38
  567. package/dist/ui/layout/governance-chip.js +0 -64
  568. package/dist/ui/layout/governance-panel.d.ts +0 -85
  569. package/dist/ui/layout/governance-panel.js +0 -358
  570. package/dist/ui/layout/governance-roster.d.ts +0 -65
  571. package/dist/ui/layout/governance-roster.js +0 -275
  572. package/dist/ui/layout/header-hints.d.ts +0 -90
  573. package/dist/ui/layout/header-hints.js +0 -110
  574. package/dist/ui/layout/header-left.d.ts +0 -115
  575. package/dist/ui/layout/header-left.js +0 -206
  576. package/dist/ui/layout/invocation-card.d.ts +0 -41
  577. package/dist/ui/layout/invocation-card.js +0 -91
  578. package/dist/ui/layout/kit-chip.d.ts +0 -50
  579. package/dist/ui/layout/kit-chip.js +0 -81
  580. package/dist/ui/layout/overlay-window.d.ts +0 -43
  581. package/dist/ui/layout/overlay-window.js +0 -51
  582. package/dist/ui/layout/queue-layout.d.ts +0 -19
  583. package/dist/ui/layout/queue-layout.js +0 -26
  584. package/dist/ui/layout/rail.d.ts +0 -7
  585. package/dist/ui/layout/rail.js +0 -16
  586. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  587. package/dist/ui/layout/scroll-indicator.js +0 -36
  588. package/dist/ui/layout/scroll.d.ts +0 -37
  589. package/dist/ui/layout/scroll.js +0 -99
  590. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  591. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  592. package/dist/ui/layout/session-chip.d.ts +0 -52
  593. package/dist/ui/layout/session-chip.js +0 -64
  594. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  595. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  596. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  597. package/dist/ui/layout/status-detail-layout.js +0 -79
  598. package/dist/ui/layout/status-layout.d.ts +0 -140
  599. package/dist/ui/layout/status-layout.js +0 -262
  600. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  601. package/dist/ui/layout/task-summary-cell.js +0 -65
  602. package/dist/ui/layout/team-panel.d.ts +0 -18
  603. package/dist/ui/layout/team-panel.js +0 -25
  604. package/dist/ui/layout/team-row.d.ts +0 -139
  605. package/dist/ui/layout/team-row.js +0 -246
  606. package/dist/ui/layout/todo-layout.d.ts +0 -62
  607. package/dist/ui/layout/todo-layout.js +0 -102
  608. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  609. package/dist/ui/layout/useTerminalSize.js +0 -50
  610. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  611. package/dist/ui/layout/viewport-geometry.js +0 -28
  612. package/dist/ui/layout/virtual-window.d.ts +0 -112
  613. package/dist/ui/layout/virtual-window.js +0 -494
  614. package/dist/ui/layout/wait-bar.d.ts +0 -34
  615. package/dist/ui/layout/wait-bar.js +0 -48
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -63
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -130
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,155 +0,0 @@
1
- /**
2
- * Stdout frame writer — the `Proxy` that binds `frame-differ.ts` to a real
3
- * stream (tui-input-flicker-fix §3.2 / §5.5).
4
- *
5
- * Ink offers no hook for "how to write a frame": `Ink#log` is constructed
6
- * internally and `log-update` is a private module. It DOES accept a `stdout` in
7
- * `render()`'s options, so the whole interposition is one `Proxy` whose only
8
- * trapped behaviour is `write` — everything else is the real stream.
9
- *
10
- * THREE THINGS IN HERE ARE LOAD-BEARING:
11
- *
12
- * - The `get` trap MUST bind non-`write` function members to the REAL stream.
13
- * Without the bind, `stdout.on('resize', …)` executes with `this === proxy`,
14
- * and `useTerminalSize` registers and removes its listener against a
15
- * different `_events` object than the one Node emits on — the frame stops
16
- * resizing and nothing reports why.
17
- * - The UNTYPED BOUNDARY LIVES HERE, not in the differ (P1-4). A `Uint8Array`
18
- * chunk, and any `write` whose `encoding` is present and is not UTF-8, is
19
- * passed straight through after `invalidate()`: in both cases the bytes on
20
- * the wire are not the string a differ could reason about, and diffing one
21
- * encoding while writing another is the kind of bug that only shows up on
22
- * someone else's machine.
23
- * - The `'resize'` SUBSCRIPTION (I-8 / P0-2). Ink renders SYNCHRONOUSLY from its
24
- * own `'resize'` handler while the frame's height is still the pre-resize one
25
- * — `useTerminalSize` debounces by 50 ms — so the line count is unchanged
26
- * across that window and the differ's line-count guard cannot see the resize.
27
- * Meanwhile the emulator has re-flowed the alternate screen, so every row the
28
- * differ believes unchanged is a row it will not repaint, for the rest of the
29
- * drag. It goes on the REAL stream, not the `Proxy`, and `dispose()` removes
30
- * it.
31
- */
32
- /** The only encodings for which the chunk string IS the bytes on the wire. */
33
- function isUtf8Encoding(encoding) {
34
- const e = encoding.toLowerCase();
35
- return e === 'utf8' || e === 'utf-8';
36
- }
37
- /**
38
- * DEC private mode 25 set/reset — hide / show the cursor.
39
- *
40
- * Ink 5.2.1's own root `<App>` writes these two EXACT strings through the
41
- * render stdout on mount and unmount (`ink/build/components/App.js` →
42
- * `cli-cursor`), which is this proxy, not the process stream. Cursor
43
- * VISIBILITY changes no cell and moves no row, so the differ's
44
- * absolute-addressing cache survives them untouched — yet `transform` cannot
45
- * recognise them and answers `passThrough(true)`: counted, `onFirstFallback`
46
- * raised (the warning fired on EVERY launch), cache dropped for nothing. Worse,
47
- * in the real CLI the mount write arrives FIRST, so it also consumes the
48
- * session's one seed-write exemption (`firstChunk`, P1-1) and the seed frame
49
- * itself becomes the counted fallback.
50
- *
51
- * Absorbed here instead: straight to the real stream — no transform, no
52
- * `invalidate()`, no fallback count, no exemption consumed. The match is
53
- * exact on the whole chunk, so a future Ink that mixes the sequence into a
54
- * longer write simply misses and falls back to today's conservative handling;
55
- * a missed absorb costs one extra repaint, never a swallowed desync.
56
- */
57
- const CURSOR_HIDE = '\x1b[?25l';
58
- const CURSOR_SHOW = '\x1b[?25h';
59
- export function wrapStdoutForFrames(stdout, differ) {
60
- const bound = new Map();
61
- const writeReal = (chunk, encoding, cb) => {
62
- if (encoding !== undefined)
63
- return stdout.write(chunk, encoding, cb);
64
- return stdout.write(chunk, cb);
65
- };
66
- /**
67
- * All three Node overloads: `write(chunk)`, `write(chunk, cb)`,
68
- * `write(chunk, encoding, cb)`.
69
- */
70
- const write = (chunk, encodingOrCb, maybeCb) => {
71
- const encoding = typeof encodingOrCb === 'string' ? encodingOrCb : undefined;
72
- const cb = typeof encodingOrCb === 'function'
73
- ? encodingOrCb
74
- : typeof maybeCb === 'function'
75
- ? maybeCb
76
- : undefined;
77
- // Foreign by construction: Ink never writes Buffers, and a non-UTF-8
78
- // encoding means the string is not the bytes (P1-4).
79
- if (typeof chunk !== 'string' || (encoding !== undefined && !isUtf8Encoding(encoding))) {
80
- differ.invalidate();
81
- return writeReal(chunk, encoding, cb);
82
- }
83
- // Ink's own cursor-mode pair (see CURSOR_HIDE / CURSOR_SHOW above): not a
84
- // frame and not a desync — the bytes reach the terminal untransformed,
85
- // uncounted, and without touching the cache or the seed exemption.
86
- if (chunk === CURSOR_HIDE || chunk === CURSOR_SHOW) {
87
- return writeReal(chunk, encoding, cb);
88
- }
89
- const out = differ.transform(chunk);
90
- if (out === null)
91
- return writeReal(chunk, encoding, cb);
92
- // Nothing to write, but the callback is still part of the contract — a
93
- // skipped `cb` strands whatever was waiting on the drain.
94
- if (out.length === 0) {
95
- cb?.();
96
- return true;
97
- }
98
- return writeReal(out, encoding, cb);
99
- };
100
- // Optional differ hooks keep the full-screen path byte-identical: a differ that
101
- // does not implement them is invalidated exactly as before.
102
- const onResize = () => {
103
- if (differ.onResize)
104
- differ.onResize();
105
- else
106
- differ.invalidate();
107
- };
108
- stdout.on('resize', onResize);
109
- let disposed = false;
110
- const proxy = new Proxy(stdout, {
111
- get(target, prop) {
112
- if (prop === 'write')
113
- return write;
114
- const value = Reflect.get(target, prop, target);
115
- if (typeof value !== 'function')
116
- return value;
117
- // Cached so repeated property access does not allocate a new bound
118
- // function on a hot path (K-9).
119
- let fn = bound.get(prop);
120
- if (fn === undefined) {
121
- fn = value.bind(target);
122
- bound.set(prop, fn);
123
- }
124
- return fn;
125
- },
126
- });
127
- return {
128
- stdout: proxy,
129
- stats: () => differ.stats(),
130
- repaint() {
131
- if (disposed)
132
- return false;
133
- const payload = differ.repaint();
134
- if (payload.length === 0)
135
- return false;
136
- writeReal(payload);
137
- return true;
138
- },
139
- writeForeign(text) {
140
- if (differ.cursorNeutralWrite)
141
- differ.cursorNeutralWrite();
142
- else
143
- differ.invalidate();
144
- if (disposed || text.length === 0)
145
- return;
146
- writeReal(text);
147
- },
148
- dispose() {
149
- if (disposed)
150
- return;
151
- disposed = true;
152
- stdout.off('resize', onResize);
153
- },
154
- };
155
- }
@@ -1,166 +0,0 @@
1
- /**
2
- * Team status — the ONE authority that answers "what state is this child in, and
3
- * how is that drawn / counted / timed" (tui-subagent-double-roster A-1).
4
- *
5
- * WHY THIS FILE EXISTS. The phase -> glyph / colour / count question used to be
6
- * answered by nine copies in seven files, and they disagreed. The transcript card
7
- * asked `isOk(run) ? toolDone : toolError`, so six of the eight phases - every
8
- * child that was still working - were painted with the FAILURE glyph, and an
9
- * aborted child was counted as a failed one forever. That is not a palette
10
- * mistake, it is a judgement implemented in the wrong number of places.
11
- *
12
- * THE VOCABULARY IS THE DOMAIN'S (analysis A-1' item 3). `ChildStatus` reuses
13
- * `SubagentPhase`'s own words - `queued` / `running` / `done` / `failed` /
14
- * `aborted` - and never invents a second dictionary (`pending` was proposed and
15
- * rejected: `SubagentPhase` does not have it, and two words for one state is how
16
- * the tenth copy gets written).
17
- *
18
- * FIVE STATES, NOT FOUR (A-1' item 2). `aborted` is NOT a failure. The runtime
19
- * distinguishes them on purpose (`Runtime.settlePhase`: aborted first, then the
20
- * timeout, then the error), and a user pressing Esc must not read their own
21
- * action back as "3 failed". So `aborted` takes `glyphs.warn` and
22
- * `theme.noticeWarn`, which collide with neither the done tick nor the failed
23
- * cross in either glyph tier.
24
- *
25
- * ASCII ONLY: `src/ui/**` is inside `glyphs.test.ts`'s static scan, so every
26
- * symbol here is injected through `pickGlyphs(caps)`.
27
- */
28
- import type { Entry } from '../agent/reducer.js';
29
- import type { SubagentRun } from '../team/types.js';
30
- import type { Glyphs } from './glyphs.js';
31
- import type { Theme } from './theme.js';
32
- /**
33
- * The five readings a child can have on screen. A TOTAL mapping of
34
- * `SubagentPhase`, which is why `childStatus` needs no guard clauses: `starting`,
35
- * `thinking`, `tool` and `waiting` are all "this child is working right now", and
36
- * the per-row activity column is what tells them apart.
37
- */
38
- export type ChildStatus = 'queued' | 'running' | 'done' | 'failed' | 'aborted';
39
- /**
40
- * The status of one child.
41
- *
42
- * A LOOKUP TABLE RATHER THAN A SWITCH, because the mapping is the whole content
43
- * of this function: a `Record` keyed by the phase union is exhaustive at compile
44
- * time (a new phase is a missing-key error) and cannot drift from the type.
45
- */
46
- export declare function childStatus(run: SubagentRun): ChildStatus;
47
- /** Per-status totals of a roster. `total` is the roster size, not the sum. */
48
- export interface RosterCounts {
49
- queued: number;
50
- running: number;
51
- done: number;
52
- failed: number;
53
- aborted: number;
54
- total: number;
55
- }
56
- /**
57
- * Count a roster once, by status.
58
- *
59
- * THE HEADER, THE CARD HEADLINE AND THE STATUS CHIP ALL READ THIS. Before it
60
- * existed the header filtered `phase !== 'queued' && ...` for "running" and the
61
- * card subtracted `runs.length - isOk(runs)`, so the same dispatch reported
62
- * `0 running` above two rows reading `queued` and `1 failed` for a child that had
63
- * never started.
64
- */
65
- export declare function rosterCounts(runs: readonly SubagentRun[]): RosterCounts;
66
- /** True while the child is doing something - the only state that animates. */
67
- export declare function isRunningStatus(status: ChildStatus): boolean;
68
- /** True once the child's outcome is final, whatever it is. */
69
- export declare function isSettledStatus(status: ChildStatus): boolean;
70
- /**
71
- * The static marker for a status.
72
- *
73
- * `running` gets `spinnerStill` because the animated `<Spinner>` is the caller's
74
- * job: it needs `reducedMotion` and `caps.unicode`, and a component that owns its
75
- * own `ink-spinner` is what `spinner-census.test.ts` counts. The caller swaps this
76
- * glyph for the spinner when it may animate.
77
- */
78
- export declare function statusGlyph(status: ChildStatus, glyphs: Glyphs): string;
79
- /**
80
- * The widest marker this terminal's tier can produce (1 in Unicode, 4 in ASCII).
81
- *
82
- * EXPORTED (tui-subagent-panel §4.2.1): the panel row's geometry has to know how
83
- * many columns the marker cell spends before it can divide the rest, and the cell
84
- * width is a property of the TIER rather than of a status. `statusMarkerCell`
85
- * keeps using it, so the padder and the measurer can never disagree.
86
- */
87
- export declare function statusMarkerWidth(glyphs: Glyphs): number;
88
- /**
89
- * The marker padded to the tier's widest one, for the leading cell of a row.
90
- *
91
- * THE PADDING IS NOT COSMETIC (A-1'a): the ASCII tier spells `[ok]` (4), `[x]` (3)
92
- * and `!` (1), so an unpadded marker cell starts every label at a different
93
- * column and the roster stops reading as a table. `TodoPanel` pads its marker cell
94
- * for the same reason. The Unicode tier's markers are all one cell wide, so the
95
- * padding is a no-op there.
96
- */
97
- export declare function statusMarkerCell(status: ChildStatus, glyphs: Glyphs): string;
98
- /**
99
- * The colour of a status. One reading for the roster row, the card row and the
100
- * card's rail marker.
101
- *
102
- * `aborted` deliberately does NOT share `toolError` with `failed`: an abort is the
103
- * user's own Esc, and the analysis found that painting it red made a cancelled
104
- * dispatch permanently unreadable in the history.
105
- */
106
- export declare function statusColor(status: ChildStatus, theme: Theme): string | undefined;
107
- /**
108
- * How long this child has been (or was) working, in ms.
109
- *
110
- * `endedAt ?? now`, NOT `endedAt ?? 0`. The transcript card used the latter, which
111
- * made every RUNNING child read `0ms` while the roster beside it read `1m05s` for
112
- * the same child - the pair of contradictory readouts the reporter screenshotted.
113
- */
114
- export declare function childElapsedMs(run: SubagentRun, now: number): number;
115
- /**
116
- * The roster header's count section, e.g. `2 running · 0 done · 1 queued`.
117
- *
118
- * `queued` IS COUNTED (the old `isRunning` excluded it, so a fresh dispatch
119
- * announced `0 running · 0 done` above five rows that each said `queued`), and a
120
- * non-zero bucket is always named even when nothing is running - a roster whose
121
- * children are all `aborted` must say so rather than `0 running · 0 done`.
122
- *
123
- * WIDTH LADDER: narrow terminals drop the least urgent clause first, in the order
124
- * `done`, `aborted`, `failed`, `queued`; `running` is never dropped. The order is
125
- * a product decision, not a detail: while a dispatch is live, what is happening
126
- * now outranks what has already finished, and the per-row activity column carries
127
- * the finished children's own facts anyway.
128
- */
129
- export declare function rosterHeadline(counts: RosterCounts, glyphs: Glyphs, cols: number): string;
130
- /**
131
- * The settled card's outcome buckets, e.g. `2 ok, 1 aborted, 1 failed`.
132
- *
133
- * `ok` is always shown (it is the denominator a reader compares against) and a
134
- * zero bucket is omitted, so a clean dispatch still reads `3 ok` and a failed one
135
- * no longer claims that a cancelled child failed.
136
- */
137
- export declare function outcomePhrase(counts: RosterCounts): string;
138
- /**
139
- * Whether this entry is the transcript card of a dispatch that is STILL RUNNING,
140
- * i.e. the second live surface the reporter saw beside the roster.
141
- *
142
- * ONE PREDICATE, FOUR CONSUMERS (analysis A-2'): the transcript's `case 'team'`
143
- * and `estimateEntryRows` (so the virtual window and the frame agree), the tail
144
- * window and `LiveTail` (so the pump's print plan and the box agree), and the
145
- * `Ctrl+O` finder plus `reprintExpanded` (so a keypress cannot print a stale
146
- * snapshot of a card that is still being rewritten). `state.entries` is NEVER
147
- * filtered: the entry's lifecycle and `session/persist.ts`'s `interrupted`
148
- * normalisation depend on it staying there.
149
- */
150
- export declare function isLiveTeamCard(entry: Entry): boolean;
151
- /**
152
- * The MOST RECENT dispatch card in the transcript, live or settled.
153
- *
154
- * ONE PREDICATE, TWO CONSUMERS (tui-subagent-panel §6.4): the `/agents` command
155
- * and `App`'s `Ctrl+B` branch both have to answer "is there anything to show?"
156
- * before opening the board, and the board itself falls back to this entry when a
157
- * dispatch has already ended and `state.team` is `null` (`resolveBoardSource`).
158
- * Asking the question in one place is what stops the key and the command from
159
- * disagreeing about whether the board exists.
160
- *
161
- * Scans BACKWARDS and returns the first match: the newest card is the last one in
162
- * `entries`, and a dispatch-heavy session can hold hundreds of them.
163
- */
164
- export declare function lastTeamEntry(entries: readonly Entry[]): Extract<Entry, {
165
- kind: 'team';
166
- }> | null;
@@ -1,252 +0,0 @@
1
- /**
2
- * Team status — the ONE authority that answers "what state is this child in, and
3
- * how is that drawn / counted / timed" (tui-subagent-double-roster A-1).
4
- *
5
- * WHY THIS FILE EXISTS. The phase -> glyph / colour / count question used to be
6
- * answered by nine copies in seven files, and they disagreed. The transcript card
7
- * asked `isOk(run) ? toolDone : toolError`, so six of the eight phases - every
8
- * child that was still working - were painted with the FAILURE glyph, and an
9
- * aborted child was counted as a failed one forever. That is not a palette
10
- * mistake, it is a judgement implemented in the wrong number of places.
11
- *
12
- * THE VOCABULARY IS THE DOMAIN'S (analysis A-1' item 3). `ChildStatus` reuses
13
- * `SubagentPhase`'s own words - `queued` / `running` / `done` / `failed` /
14
- * `aborted` - and never invents a second dictionary (`pending` was proposed and
15
- * rejected: `SubagentPhase` does not have it, and two words for one state is how
16
- * the tenth copy gets written).
17
- *
18
- * FIVE STATES, NOT FOUR (A-1' item 2). `aborted` is NOT a failure. The runtime
19
- * distinguishes them on purpose (`Runtime.settlePhase`: aborted first, then the
20
- * timeout, then the error), and a user pressing Esc must not read their own
21
- * action back as "3 failed". So `aborted` takes `glyphs.warn` and
22
- * `theme.noticeWarn`, which collide with neither the done tick nor the failed
23
- * cross in either glyph tier.
24
- *
25
- * ASCII ONLY: `src/ui/**` is inside `glyphs.test.ts`'s static scan, so every
26
- * symbol here is injected through `pickGlyphs(caps)`.
27
- */
28
- const STATUS_BY_PHASE = {
29
- queued: 'queued',
30
- starting: 'running',
31
- thinking: 'running',
32
- tool: 'running',
33
- waiting: 'running',
34
- done: 'done',
35
- failed: 'failed',
36
- aborted: 'aborted',
37
- };
38
- /**
39
- * The status of one child.
40
- *
41
- * A LOOKUP TABLE RATHER THAN A SWITCH, because the mapping is the whole content
42
- * of this function: a `Record` keyed by the phase union is exhaustive at compile
43
- * time (a new phase is a missing-key error) and cannot drift from the type.
44
- */
45
- export function childStatus(run) {
46
- return STATUS_BY_PHASE[run.phase];
47
- }
48
- /**
49
- * Count a roster once, by status.
50
- *
51
- * THE HEADER, THE CARD HEADLINE AND THE STATUS CHIP ALL READ THIS. Before it
52
- * existed the header filtered `phase !== 'queued' && ...` for "running" and the
53
- * card subtracted `runs.length - isOk(runs)`, so the same dispatch reported
54
- * `0 running` above two rows reading `queued` and `1 failed` for a child that had
55
- * never started.
56
- */
57
- export function rosterCounts(runs) {
58
- const counts = {
59
- queued: 0, running: 0, done: 0, failed: 0, aborted: 0, total: runs.length,
60
- };
61
- for (const run of runs)
62
- counts[childStatus(run)] += 1;
63
- return counts;
64
- }
65
- /** True while the child is doing something - the only state that animates. */
66
- export function isRunningStatus(status) {
67
- return status === 'running';
68
- }
69
- /** True once the child's outcome is final, whatever it is. */
70
- export function isSettledStatus(status) {
71
- return status === 'done' || status === 'failed' || status === 'aborted';
72
- }
73
- /**
74
- * The static marker for a status.
75
- *
76
- * `running` gets `spinnerStill` because the animated `<Spinner>` is the caller's
77
- * job: it needs `reducedMotion` and `caps.unicode`, and a component that owns its
78
- * own `ink-spinner` is what `spinner-census.test.ts` counts. The caller swaps this
79
- * glyph for the spinner when it may animate.
80
- */
81
- export function statusGlyph(status, glyphs) {
82
- switch (status) {
83
- case 'queued':
84
- return glyphs.toolPending;
85
- case 'running':
86
- return glyphs.spinnerStill;
87
- case 'done':
88
- return glyphs.toolDone;
89
- case 'failed':
90
- return glyphs.toolError;
91
- case 'aborted':
92
- return glyphs.warn;
93
- }
94
- }
95
- /**
96
- * The widest marker this terminal's tier can produce (1 in Unicode, 4 in ASCII).
97
- *
98
- * EXPORTED (tui-subagent-panel §4.2.1): the panel row's geometry has to know how
99
- * many columns the marker cell spends before it can divide the rest, and the cell
100
- * width is a property of the TIER rather than of a status. `statusMarkerCell`
101
- * keeps using it, so the padder and the measurer can never disagree.
102
- */
103
- export function statusMarkerWidth(glyphs) {
104
- return Math.max(glyphs.toolPending.length, glyphs.spinnerStill.length, glyphs.toolDone.length, glyphs.toolError.length, glyphs.warn.length);
105
- }
106
- /**
107
- * The marker padded to the tier's widest one, for the leading cell of a row.
108
- *
109
- * THE PADDING IS NOT COSMETIC (A-1'a): the ASCII tier spells `[ok]` (4), `[x]` (3)
110
- * and `!` (1), so an unpadded marker cell starts every label at a different
111
- * column and the roster stops reading as a table. `TodoPanel` pads its marker cell
112
- * for the same reason. The Unicode tier's markers are all one cell wide, so the
113
- * padding is a no-op there.
114
- */
115
- export function statusMarkerCell(status, glyphs) {
116
- return statusGlyph(status, glyphs).padEnd(statusMarkerWidth(glyphs));
117
- }
118
- /**
119
- * The colour of a status. One reading for the roster row, the card row and the
120
- * card's rail marker.
121
- *
122
- * `aborted` deliberately does NOT share `toolError` with `failed`: an abort is the
123
- * user's own Esc, and the analysis found that painting it red made a cancelled
124
- * dispatch permanently unreadable in the history.
125
- */
126
- export function statusColor(status, theme) {
127
- switch (status) {
128
- case 'queued':
129
- return theme.toolPending;
130
- case 'running':
131
- return theme.toolRunning;
132
- case 'done':
133
- return theme.toolDone;
134
- case 'failed':
135
- return theme.toolError;
136
- case 'aborted':
137
- return theme.noticeWarn;
138
- }
139
- }
140
- /**
141
- * How long this child has been (or was) working, in ms.
142
- *
143
- * `endedAt ?? now`, NOT `endedAt ?? 0`. The transcript card used the latter, which
144
- * made every RUNNING child read `0ms` while the roster beside it read `1m05s` for
145
- * the same child - the pair of contradictory readouts the reporter screenshotted.
146
- */
147
- export function childElapsedMs(run, now) {
148
- if (run.startedAt === undefined)
149
- return 0;
150
- return Math.max(0, (run.endedAt ?? now) - run.startedAt);
151
- }
152
- /**
153
- * Columns the roster header spends on `team` (plus its marker) and on the
154
- * incoming-message badge, so the count clauses are planned against what is left.
155
- */
156
- const HEADER_RESERVED_COLS = 16;
157
- const HEADER_MIN_CLAUSE_COLS = 12;
158
- function joinClauses(clauses, glyphs) {
159
- return clauses.map((clause) => clause.text).join(` ${glyphs.midDot} `);
160
- }
161
- /** Drop the clause that can be spared first, keeping display order intact. */
162
- function dropLowestPriority(clauses) {
163
- let victim = 0;
164
- for (let index = 1; index < clauses.length; index += 1) {
165
- if (clauses[index].priority < clauses[victim].priority)
166
- victim = index;
167
- }
168
- return clauses.filter((_, index) => index !== victim);
169
- }
170
- /**
171
- * The roster header's count section, e.g. `2 running · 0 done · 1 queued`.
172
- *
173
- * `queued` IS COUNTED (the old `isRunning` excluded it, so a fresh dispatch
174
- * announced `0 running · 0 done` above five rows that each said `queued`), and a
175
- * non-zero bucket is always named even when nothing is running - a roster whose
176
- * children are all `aborted` must say so rather than `0 running · 0 done`.
177
- *
178
- * WIDTH LADDER: narrow terminals drop the least urgent clause first, in the order
179
- * `done`, `aborted`, `failed`, `queued`; `running` is never dropped. The order is
180
- * a product decision, not a detail: while a dispatch is live, what is happening
181
- * now outranks what has already finished, and the per-row activity column carries
182
- * the finished children's own facts anyway.
183
- */
184
- export function rosterHeadline(counts, glyphs, cols) {
185
- const clauses = [
186
- { priority: 5, text: `${counts.running} running` },
187
- { priority: 1, text: `${counts.done} done` },
188
- ];
189
- if (counts.queued > 0)
190
- clauses.push({ priority: 4, text: `${counts.queued} queued` });
191
- if (counts.failed > 0)
192
- clauses.push({ priority: 3, text: `${counts.failed} failed` });
193
- if (counts.aborted > 0)
194
- clauses.push({ priority: 2, text: `${counts.aborted} aborted` });
195
- const budget = Math.max(HEADER_MIN_CLAUSE_COLS, cols - HEADER_RESERVED_COLS);
196
- let kept = clauses;
197
- while (kept.length > 1 && joinClauses(kept, glyphs).length > budget) {
198
- kept = dropLowestPriority(kept);
199
- }
200
- return joinClauses(kept, glyphs);
201
- }
202
- /**
203
- * The settled card's outcome buckets, e.g. `2 ok, 1 aborted, 1 failed`.
204
- *
205
- * `ok` is always shown (it is the denominator a reader compares against) and a
206
- * zero bucket is omitted, so a clean dispatch still reads `3 ok` and a failed one
207
- * no longer claims that a cancelled child failed.
208
- */
209
- export function outcomePhrase(counts) {
210
- const parts = [`${counts.done} ok`];
211
- if (counts.aborted > 0)
212
- parts.push(`${counts.aborted} aborted`);
213
- if (counts.failed > 0)
214
- parts.push(`${counts.failed} failed`);
215
- return parts.join(', ');
216
- }
217
- /**
218
- * Whether this entry is the transcript card of a dispatch that is STILL RUNNING,
219
- * i.e. the second live surface the reporter saw beside the roster.
220
- *
221
- * ONE PREDICATE, FOUR CONSUMERS (analysis A-2'): the transcript's `case 'team'`
222
- * and `estimateEntryRows` (so the virtual window and the frame agree), the tail
223
- * window and `LiveTail` (so the pump's print plan and the box agree), and the
224
- * `Ctrl+O` finder plus `reprintExpanded` (so a keypress cannot print a stale
225
- * snapshot of a card that is still being rewritten). `state.entries` is NEVER
226
- * filtered: the entry's lifecycle and `session/persist.ts`'s `interrupted`
227
- * normalisation depend on it staying there.
228
- */
229
- export function isLiveTeamCard(entry) {
230
- return entry.kind === 'team' && entry.active === true;
231
- }
232
- /**
233
- * The MOST RECENT dispatch card in the transcript, live or settled.
234
- *
235
- * ONE PREDICATE, TWO CONSUMERS (tui-subagent-panel §6.4): the `/agents` command
236
- * and `App`'s `Ctrl+B` branch both have to answer "is there anything to show?"
237
- * before opening the board, and the board itself falls back to this entry when a
238
- * dispatch has already ended and `state.team` is `null` (`resolveBoardSource`).
239
- * Asking the question in one place is what stops the key and the command from
240
- * disagreeing about whether the board exists.
241
- *
242
- * Scans BACKWARDS and returns the first match: the newest card is the last one in
243
- * `entries`, and a dispatch-heavy session can hold hundreds of them.
244
- */
245
- export function lastTeamEntry(entries) {
246
- for (let index = entries.length - 1; index >= 0; index -= 1) {
247
- const entry = entries[index];
248
- if (entry?.kind === 'team')
249
- return entry;
250
- }
251
- return null;
252
- }
@@ -1,52 +0,0 @@
1
- /**
2
- * Terminal plan — the ONE decision point for how the interactive TUI occupies the
3
- * terminal (tui-native-terminal-scroll §4.1 / D10).
4
- *
5
- * `cli.tsx::runInteractive` used to derive `wantMouse`, `mouseOn`, `wantSelect`,
6
- * `pasteOn` and `enhancedKeysOn` inline, each with its own comment about why the
7
- * others must agree. Adding a second screen mode multiplies that surface, so the
8
- * agreement is computed here, once, and the call site only READS the result.
9
- *
10
- * PURE: no I/O, no `process` access, so every row of the rules below is a table
11
- * test with plain literals.
12
- *
13
- * I-S9 · `app` reproduces the pre-feature expressions term for term. The
14
- * regression test diffs this function against a verbatim copy of those
15
- * expressions, because "the same by inspection" is how mouse and paste drifted
16
- * apart the last time.
17
- */
18
- import type { ScrollMode } from '../config/schema.js';
19
- export type { ScrollMode } from '../config/schema.js';
20
- export interface TerminalPlanInput {
21
- /** The resolved `scrollMode` config value. */
22
- scrollMode: ScrollMode;
23
- configMouse: boolean;
24
- configMouseSelect: boolean;
25
- configPaste: boolean;
26
- configKeyboardEnhancement: boolean;
27
- configDiffRender: boolean;
28
- stdinIsTTY: boolean;
29
- stdoutIsTTY: boolean;
30
- platform: NodeJS.Platform;
31
- /** Measured on win32 (`forceVtInputForThisConsole`); irrelevant elsewhere. */
32
- vtInputSupported: boolean;
33
- }
34
- export interface TerminalPlan {
35
- scrollMode: ScrollMode;
36
- /** `app`: enter the alternate screen. `native`: never. */
37
- altScreen: boolean;
38
- /** Whether the terminal is asked for SGR mouse reports (and a mouse filter is wanted). */
39
- mouseReporting: boolean;
40
- /** Application-drawn drag selection. Always `false` in native mode (the terminal selects). */
41
- dragSelect: boolean;
42
- bracketedPaste: boolean;
43
- enhancedKeys: boolean;
44
- /**
45
- * Which frame writer fronts Ink's stdout. `native` ALWAYS needs the scrollback
46
- * writer, even with `diffRender` off: static rows are injected through it.
47
- */
48
- differ: 'fullscreen' | 'scrollback' | 'none';
49
- /** Native + `diffRender:false` — every frame rewrites the whole live region. */
50
- fullEveryFrame: boolean;
51
- }
52
- export declare function resolveTerminalPlan(input: TerminalPlanInput): TerminalPlan;
@@ -1,49 +0,0 @@
1
- /**
2
- * Terminal plan — the ONE decision point for how the interactive TUI occupies the
3
- * terminal (tui-native-terminal-scroll §4.1 / D10).
4
- *
5
- * `cli.tsx::runInteractive` used to derive `wantMouse`, `mouseOn`, `wantSelect`,
6
- * `pasteOn` and `enhancedKeysOn` inline, each with its own comment about why the
7
- * others must agree. Adding a second screen mode multiplies that surface, so the
8
- * agreement is computed here, once, and the call site only READS the result.
9
- *
10
- * PURE: no I/O, no `process` access, so every row of the rules below is a table
11
- * test with plain literals.
12
- *
13
- * I-S9 · `app` reproduces the pre-feature expressions term for term. The
14
- * regression test diffs this function against a verbatim copy of those
15
- * expressions, because "the same by inspection" is how mouse and paste drifted
16
- * apart the last time.
17
- */
18
- export function resolveTerminalPlan(input) {
19
- const bothTty = input.stdinIsTTY && input.stdoutIsTTY;
20
- // Paste and keyboard enhancement ride the stdin filter and say nothing about
21
- // scrolling, so the two modes agree on them (rule 3).
22
- const bracketedPaste = input.configPaste && input.stdinIsTTY;
23
- const enhancedKeys = input.configKeyboardEnhancement &&
24
- input.stdinIsTTY &&
25
- (input.platform !== 'win32' || input.vtInputSupported);
26
- if (input.scrollMode === 'native') {
27
- return {
28
- scrollMode: 'native',
29
- altScreen: false,
30
- mouseReporting: false,
31
- dragSelect: false,
32
- bracketedPaste,
33
- enhancedKeys,
34
- differ: 'scrollback',
35
- fullEveryFrame: !input.configDiffRender,
36
- };
37
- }
38
- const mouseReporting = input.configMouse && bothTty && input.vtInputSupported;
39
- return {
40
- scrollMode: 'app',
41
- altScreen: true,
42
- mouseReporting,
43
- dragSelect: mouseReporting && input.configMouseSelect,
44
- bracketedPaste,
45
- enhancedKeys,
46
- differ: input.configDiffRender ? 'fullscreen' : 'none',
47
- fullEveryFrame: false,
48
- };
49
- }