@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,354 +0,0 @@
1
- /**
2
- * Frame differ — F1 of tui-input-flicker-fix (§3.2).
3
- *
4
- * Ink 5.2.1 has exactly one repaint strategy: on every commit it serialises the
5
- * WHOLE frame and hands it to `log-update`, which writes
6
- * `eraseLines(previousLineCount) + frame` in a single `stdout.write`
7
- * (`ink/build/log-update.js:17`). `ansiEscapes.eraseLines` walks BOTTOM-UP, so
8
- * the composer — the last row of the frame — is erased near the start of every
9
- * repaint and rewritten at the very end of it. During a run that happens 15–30
10
- * times a second with the composer's bytes unchanged, and the user sees the
11
- * bottom of their screen flicker while they type (§2 R1/R2).
12
- *
13
- * This module recognises that write shape, diffs the new frame against the
14
- * previous one line by line, and emits only the rows that actually changed, each
15
- * addressed absolutely. It is PURE: no I/O, no Node globals, no event emitter —
16
- * `stdout-frame-writer.ts` is what binds it to a real stream. That is what keeps
17
- * it unit-testable with plain string literals and no TTY.
18
- *
19
- * THREE INVARIANTS LIVE HERE AND EACH ONE FAILS SILENTLY IF DROPPED:
20
- *
21
- * - I-4 · An emitted line is `CUP · SGR0 · text · SGR0 · CSI K`, IN THAT ORDER,
22
- * and it never contains `CSI 2K`. Erasing first would blank the row and refill
23
- * it, which is R1's defect at 1/H the scale but on the one row the user is
24
- * watching. Overwriting in place means no cell is ever presentably empty; the
25
- * trailing `CSI K` removes only the residue a longer previous line left, and
26
- * the trailing SGR reset before it stops a BCE terminal painting that residue
27
- * in whatever background colour the line ended inside.
28
- * `CSI K` IS EMITTED ONLY WHEN THE LINE IS NARROWER THAN THE TERMINAL. A row
29
- * that already fills every column (the unified scrollbar paints the last one)
30
- * has no residue to clear, and on terminals that keep the cursor ON the last
31
- * column after writing it (a pending-wrap flag rather than a virtual column
32
- * N+1) the EL would erase the cell that was just written. `cols` unknown keeps
33
- * the old always-EL behaviour (`paintLine`).
34
- * - I-5 · Every emitted batch ends parked on row `H+1`. Ink's own
35
- * `previousLineCount` is computed from the string IT produced and is
36
- * unaffected by what we actually wrote, so a later pass-through's
37
- * `eraseLines(H+1)` must find the cursor exactly where log-update left it last
38
- * time. Drop this and one fallback shifts the frame up a row for the rest of
39
- * the session.
40
- * - I-6 · Any unrecognised write invalidates the cache. Absolute addressing is
41
- * valid only while nothing else writes to stdout. Full-screen mode already
42
- * forbids that, but "forbidden" is not "impossible", and the failure mode of
43
- * the guard being absent is a permanently misaligned screen while the failure
44
- * mode of it firing spuriously is one extra full repaint.
45
- */
46
- import stringWidth from 'string-width';
47
- import stripAnsi from 'strip-ansi';
48
- import { MIN_FULLSCREEN_ROWS } from './layout/frame.js';
49
- import { matchInkErasePrefix } from './frame-parser.js';
50
- // ---------------------------------------------------------------------------
51
- // Constants — exact, so no call site ever re-derives an escape sequence.
52
- // ---------------------------------------------------------------------------
53
- /** Control Sequence Introducer. Spelled out once; nothing below re-escapes it. */
54
- const CSI = '\x1b[';
55
- /** Erase the WHOLE line. Ink uses it on every repaint; this module never emits it (I-4). */
56
- const ERASE_LINE = `${CSI}2K`;
57
- /** Erase cursor → end of line. This is what an emitted line ends with. */
58
- const ERASE_TO_EOL = `${CSI}K`;
59
- const CURSOR_UP_1 = `${CSI}1A`;
60
- const CURSOR_LEFT = `${CSI}G`;
61
- const SGR_RESET = `${CSI}0m`;
62
- /** Erase cursor → end of screen. One sequence instead of H+1 line erases. */
63
- const ERASE_DOWN = `${CSI}J`;
64
- /** DEC private mode 2026 — begin/end synchronized update (F2, §3.3). */
65
- const SYNC_BEGIN = `${CSI}?2026h`;
66
- const SYNC_END = `${CSI}?2026l`;
67
- /**
68
- * `ansiEscapes.clearTerminal` — Ink's tall-frame write (`ink.js:121`).
69
- *
70
- * When `outputHeight >= stdout.rows` Ink abandons log-update and writes
71
- * `clearTerminal + frame` in one chunk: no erase-lines prefix, no trailing
72
- * `\n`. That happens on ANY height shrink, because Ink re-renders
73
- * synchronously from its own `'resize'` handler while the React tree still
74
- * holds the pre-resize height (`useTerminalSize` debounces 50 ms). Without
75
- * recognition the chunk lands in the prefix-less branch and counts as a
76
- * foreign write — the same §5.6 notice, one ordinary window-drag later.
77
- */
78
- const CLEAR_TERMINAL = `${CSI}2J${CSI}3J${CSI}H`;
79
- function cursorTo(row) {
80
- return `${CSI}${row};1H`;
81
- }
82
- /**
83
- * One addressed row: `CUP · SGR0 · line · SGR0 [· CSI K]` (I-4).
84
- *
85
- * The trailing `CSI K` clears residue a longer previous line left behind, so it is
86
- * only meaningful when the line is narrower than the terminal. A line that already
87
- * fills `cols` columns ends with the cursor in the pending-wrap state, where some
88
- * terminals run EL from the LAST column and erase the cell just written; those
89
- * rows get no EL. Width is measured exactly as Ink measures it (`string-width` over
90
- * the ANSI-stripped text) and only for rows that changed, so it costs at most one
91
- * measurement per changed viewport row. `cols` unknown => the original always-EL.
92
- */
93
- function paintLine(row, line, cols) {
94
- const head = cursorTo(row) + SGR_RESET + line + SGR_RESET;
95
- if (cols !== undefined && stringWidth(stripAnsi(line)) >= cols)
96
- return head;
97
- return head + ERASE_TO_EOL;
98
- }
99
- /**
100
- * Rebuild `ansiEscapes.eraseLines(count)` byte for byte.
101
- *
102
- * Exported for the upgrade tripwire (`frame-differ-ink-shape.test.ts`), which
103
- * drives the real `ink/build/log-update.js` and asserts this reconstruction is
104
- * byte-equal to what it produced. If a future Ink changes the shape, that test
105
- * fails loudly instead of this module silently degrading to pass-through for the
106
- * rest of the package's life (K-2).
107
- */
108
- export function eraseLinesPrefix(count) {
109
- if (count <= 0)
110
- return '';
111
- let out = '';
112
- for (let i = 0; i < count; i += 1) {
113
- out += ERASE_LINE + (i < count - 1 ? CURSOR_UP_1 : '');
114
- }
115
- return out + CURSOR_LEFT;
116
- }
117
- export function createFrameDiffer(options) {
118
- /**
119
- * Last frame AS PAINTED — what is actually on the screen.
120
- *
121
- * `null` = no cache, next frame is a full repaint. THE DIFF COMPARES PAINTED
122
- * LINES (I-2): diffing raw against a painted screen would leave the highlight
123
- * burned into rows the next frame never repaints, because those rows' RAW text
124
- * did not change.
125
- */
126
- let prev = null;
127
- /**
128
- * The same frame UNDECORATED — `repaint()`'s input.
129
- *
130
- * Two caches rather than one, because a repaint has to re-run `decorate` over
131
- * the ORIGINAL rows: painting an already-painted row would nest the selection
132
- * escapes and the highlight would never come off.
133
- */
134
- let rawPrev = null;
135
- /**
136
- * Whether any chunk has been seen at all.
137
- *
138
- * The session's FIRST write has `previousLineCount === 0`, so `eraseLines(0)`
139
- * is the empty string and the chunk carries no erase prefix (§3.2.1). That is
140
- * expected, not a desync, so it must not raise the §5.6 notice on every launch.
141
- * After it, every chunk Ink produces carries a prefix, so a prefix-less chunk
142
- * from then on really is foreign.
143
- */
144
- let seenAnyChunk = false;
145
- const counters = {
146
- framesTotal: 0,
147
- framesDiffed: 0,
148
- framesFull: 0,
149
- linesWritten: 0,
150
- bytesWritten: 0,
151
- fallbacks: 0,
152
- repaints: 0,
153
- };
154
- /**
155
- * Re-entrancy guard for `onInvalidate`. The listener clears the selection,
156
- * which asks for a repaint, which can reach `invalidate()` again; one flag is
157
- * cheaper than reasoning about how deep that can go.
158
- */
159
- let notifying = false;
160
- const invalidate = () => {
161
- prev = null;
162
- rawPrev = null;
163
- if (notifying || !options.onInvalidate)
164
- return;
165
- notifying = true;
166
- try {
167
- options.onInvalidate();
168
- }
169
- finally {
170
- notifying = false;
171
- }
172
- };
173
- /**
174
- * `decorate`, with the line-count contract enforced. A decorator that returned
175
- * a different number of rows would shift every absolute address below it for
176
- * the rest of the session, so its answer is discarded rather than trusted.
177
- */
178
- const applyDecorate = (lines) => {
179
- if (!options.decorate)
180
- return lines;
181
- const painted = options.decorate(lines);
182
- return painted.length === lines.length ? painted : lines;
183
- };
184
- /**
185
- * Write `chunk` verbatim — today's behaviour, and the only failure mode.
186
- *
187
- * `counted` is false for the two cases the differ inflicts on itself and knows
188
- * are harmless (the seed write, degenerate geometry); true means a foreign
189
- * write desynced absolute addressing, which is what `fallbacks` reports.
190
- */
191
- const passThrough = (counted) => {
192
- invalidate();
193
- if (counted) {
194
- counters.fallbacks += 1;
195
- if (counters.fallbacks === 1)
196
- options.onFirstFallback?.();
197
- }
198
- return null;
199
- };
200
- const wrapSync = (payload) => options.sync ? SYNC_BEGIN + payload + SYNC_END : payload;
201
- const emit = (payload, lines, raw, addressed, full) => {
202
- prev = lines;
203
- rawPrev = raw;
204
- counters.framesTotal += 1;
205
- if (full)
206
- counters.framesFull += 1;
207
- else
208
- counters.framesDiffed += 1;
209
- counters.linesWritten += addressed;
210
- counters.bytesWritten += payload.length;
211
- return payload;
212
- };
213
- /** `undefined` ⇒ the I-9 stand-down: a viewport too small to address safely. */
214
- const usableRows = () => {
215
- const rows = options.rows();
216
- if (rows === undefined || !Number.isFinite(rows))
217
- return undefined;
218
- return rows < MIN_FULLSCREEN_ROWS ? undefined : rows;
219
- };
220
- const matchErasePrefix = (chunk) => {
221
- if (prev !== null) {
222
- const expected = eraseLinesPrefix(prev.length + 1);
223
- if (chunk.startsWith(expected))
224
- return { prefix: expected, erased: prev.length + 1 };
225
- }
226
- return matchInkErasePrefix(chunk);
227
- };
228
- /**
229
- * Full repaint — the first diffable frame of a session, every invalidation
230
- * (including the resize invalidation of I-8), and any line-count change.
231
- *
232
- * `CSI J` replaces the H+1 individual line erases with one sequence, and the
233
- * alternate screen is exactly the region being erased. `\r\n` rather than `\n`
234
- * is deliberate: Ink relies on the tty's `ONLCR` post-processing to turn `\n`
235
- * into CRLF, and that dependency is invisible until it is not there.
236
- *
237
- * P0-1's blank-then-paint objection does not apply here and the asymmetry with
238
- * the per-line path is deliberate: a full repaint rewrites every row, so there
239
- * is no unchanged content that has to survive, and full repaints are rare by
240
- * construction — one per session, one per resize, one per invalidation.
241
- */
242
- const fullRepaint = (lines, raw) => {
243
- const payload = cursorTo(1) +
244
- SGR_RESET +
245
- ERASE_DOWN +
246
- lines.join('\r\n') +
247
- '\r\n' +
248
- cursorTo(lines.length + 1);
249
- return emit(wrapSync(payload), lines, raw, lines.length, true);
250
- };
251
- /** Terminal width for this paint, or `undefined` when unknown (I-4: always EL). */
252
- const liveCols = () => {
253
- const cols = options.cols?.();
254
- return cols !== undefined && Number.isFinite(cols) ? cols : undefined;
255
- };
256
- const diffRepaint = (lines, raw, previous) => {
257
- const out = [];
258
- const cols = liveCols();
259
- for (let i = 0; i < lines.length; i += 1) {
260
- // I-4: paint, THEN clear the tail. Never `ERASE_LINE` first.
261
- if (lines[i] !== previous[i])
262
- out.push(paintLine(i + 1, lines[i], cols));
263
- }
264
- // DEFENSIVE ONLY, not a live path (P2-4). `log-update.js:13-15` returns early
265
- // on an identical frame, so a chunk that reaches here differs by at least one
266
- // line; the only way to observe zero is a cache that disagrees with the
267
- // screen, which is the state `invalidate()` exists to prevent.
268
- //
269
- // With a `decorate` hook it stops being unreachable in one direction and
270
- // stays correct: a frame whose RAW rows changed only where the highlight
271
- // already covers them paints identically, and writing nothing is right.
272
- if (out.length === 0)
273
- return emit('', lines, raw, 0, false);
274
- out.push(cursorTo(lines.length + 1)); // I-5
275
- return emit(wrapSync(out.join('')), lines, raw, out.length - 1, false);
276
- };
277
- /**
278
- * Re-paint the last frame's rows through `decorate` again, emitting only what
279
- * changed. Called when the SELECTION moved rather than when Ink produced a
280
- * frame — hence its own counter and no touch of the frame ones (P2-6).
281
- *
282
- * It carries the same DEC 2026 sync envelope and parks on row `H + 1` as every
283
- * other batch, because it is addressed exactly like a diff frame and a
284
- * half-applied highlight tears the same way a half-applied frame does.
285
- */
286
- const repaint = () => {
287
- if (prev === null || rawPrev === null)
288
- return '';
289
- const rows = usableRows();
290
- if (rows === undefined)
291
- return ''; // I-9 — geometry we cannot address safely
292
- if (rawPrev.length + 1 > rows)
293
- return '';
294
- const painted = applyDecorate(rawPrev);
295
- const out = [];
296
- const cols = liveCols();
297
- for (let i = 0; i < painted.length; i += 1) {
298
- if (painted[i] !== prev[i])
299
- out.push(paintLine(i + 1, painted[i], cols));
300
- }
301
- prev = painted;
302
- if (out.length === 0)
303
- return '';
304
- out.push(cursorTo(painted.length + 1)); // I-5
305
- counters.repaints += 1;
306
- return wrapSync(out.join(''));
307
- };
308
- const transform = (chunk) => {
309
- // A+ · Ink's tall-frame write (see CLEAR_TERMINAL above): a shrink makes
310
- // `outputHeight >= stdout.rows` while the tree still holds the old height,
311
- // so Ink bypasses log-update and writes clearTerminal + frame in one chunk.
312
- // The chunk paints the whole frame by itself, so it needs no parsing: pass
313
- // it through, drop the cache (the screen it described is gone), and do NOT
314
- // count it — this is Ink's own write at a moment absolute addressing cannot
315
- // cover, not something behind Ink's back. The next log-update frame lands
316
- // on an empty cache and is a full repaint, exactly what a cleared screen
317
- // needs. Checked BEFORE the seed bookkeeping — and it must be, because the
318
- // tall-frame write bypasses `this.log`: log-update's own
319
- // `previousLineCount` stays 0, so the first log-update frame after it still
320
- // carries no erase prefix. THAT write is the session's genuine seed frame
321
- // (P1-1), and a control write arriving first must not spend its exemption.
322
- if (chunk.startsWith(CLEAR_TERMINAL))
323
- return passThrough(false);
324
- const firstChunk = !seenAnyChunk;
325
- seenAnyChunk = true;
326
- const rows = usableRows();
327
- if (rows === undefined)
328
- return passThrough(false); // I-9
329
- const matched = matchErasePrefix(chunk);
330
- // A prefix-less chunk is the session's seed write (P1-1) or a foreign one.
331
- if (matched === null)
332
- return passThrough(!firstChunk);
333
- const body = chunk.slice(matched.prefix.length);
334
- if (!body.endsWith('\n'))
335
- return passThrough(true); // `log.clear()` and friends
336
- const lines = body.slice(0, -1).split('\n');
337
- if (lines.length + 1 > rows)
338
- return passThrough(false); // I-9
339
- // AFTER the geometry stand-down, BEFORE the cache comparison: a frame this
340
- // module refuses to address never reaches the selection layer, and what is
341
- // compared below is what the screen will hold.
342
- const painted = applyDecorate(lines);
343
- if (prev === null || prev.length !== painted.length || matched.erased !== prev.length + 1) {
344
- return fullRepaint(painted, lines);
345
- }
346
- return diffRepaint(painted, lines, prev);
347
- };
348
- return {
349
- transform,
350
- invalidate,
351
- repaint,
352
- stats: () => ({ ...counters }),
353
- };
354
- }
@@ -1,17 +0,0 @@
1
- import type { ScrollbarBridge } from './scrollbar-controller.js';
2
- export interface FrameSummary {
3
- columns: number;
4
- rows: number;
5
- trackTop: number;
6
- trackRows: number;
7
- }
8
- /** Observe before differ transformation, but acknowledge only after downstream write returns. */
9
- export declare function createFrameObserver(options: {
10
- stdout: NodeJS.WriteStream;
11
- terminal: NodeJS.WriteStream;
12
- scrollbar: ScrollbarBridge;
13
- }): {
14
- stdout: NodeJS.WriteStream;
15
- dispose(): void;
16
- invalidate(): void;
17
- };
@@ -1,94 +0,0 @@
1
- import stripAnsi from 'strip-ansi';
2
- import stringWidth from 'string-width';
3
- import { parseInkFrame } from './frame-parser.js';
4
- import { pickGlyphs } from './glyphs.js';
5
- function summarizeFrame(chunk, rows, cols) {
6
- const lines = typeof chunk === 'string' ? parseInkFrame(chunk) : null;
7
- if (!lines || rows < 12 || cols < 40 || lines.length !== rows - 1)
8
- return null;
9
- const unicode = pickGlyphs({ unicode: true, colorLevel: 0 });
10
- const cells = new Set(['|', '#', unicode.scrollTrack, unicode.scrollThumb]);
11
- const plain = lines.map((line) => stripAnsi(line));
12
- if (plain.some((line) => stringWidth(line) > cols))
13
- return null;
14
- let trackRows = 0;
15
- // Fixed composer/status slots have no last-column rail. Discover the actual
16
- // message track, then acknowledge it only against the published Yoga geometry.
17
- for (const line of plain.slice(1)) {
18
- if (stringWidth(line) !== cols || !cells.has(line.slice(-1)))
19
- break;
20
- trackRows++;
21
- }
22
- if (trackRows < 1)
23
- return null;
24
- return { columns: cols, rows, trackTop: 2, trackRows };
25
- }
26
- /** Observe before differ transformation, but acknowledge only after downstream write returns. */
27
- export function createFrameObserver(options) {
28
- const { stdout, terminal, scrollbar } = options;
29
- let summary = null;
30
- let summaryRevision;
31
- let disposed = false;
32
- let resizeTimer = null;
33
- const invalidate = () => { summary = null; scrollbar.invalidate(); };
34
- const onResize = () => {
35
- invalidate();
36
- if (resizeTimer)
37
- clearTimeout(resizeTimer);
38
- // Ink suppresses identical frames when a resize burst returns to its starting size.
39
- // Wait past the 50 ms React size debounce, then request a normal redraw if needed.
40
- resizeTimer = setTimeout(() => {
41
- resizeTimer = null;
42
- if (!disposed && !scrollbar.frameReady)
43
- scrollbar.requestRedraw?.();
44
- }, 60);
45
- resizeTimer.unref?.();
46
- };
47
- const match = () => {
48
- const g = scrollbar.geometry;
49
- if (summary && g && summaryRevision === undefined)
50
- summaryRevision = g.revision;
51
- scrollbar.frameReady = !!summary && !!g && summary.columns === terminal.columns &&
52
- summary.rows === terminal.rows && g.trackCol === summary.columns &&
53
- g.trackTop === summary.trackTop && g.trackRows === summary.trackRows &&
54
- g.revision === summaryRevision;
55
- };
56
- const observe = (chunk) => {
57
- summary = summarizeFrame(chunk, terminal.rows, terminal.columns);
58
- summaryRevision = scrollbar.geometry?.revision;
59
- if (!summary) {
60
- invalidate();
61
- return;
62
- }
63
- match();
64
- };
65
- scrollbar.onGeometry = match;
66
- terminal.on('resize', onResize);
67
- const bound = new Map();
68
- const proxy = new Proxy(stdout, {
69
- get(target, prop) {
70
- if (prop === 'write')
71
- return (...args) => {
72
- const result = Reflect.apply(target.write, target, args);
73
- if (!disposed)
74
- observe(args[0]);
75
- return result;
76
- };
77
- const value = Reflect.get(target, prop, target);
78
- if (typeof value !== 'function')
79
- return value;
80
- if (!bound.has(prop))
81
- bound.set(prop, value.bind(target));
82
- return bound.get(prop);
83
- },
84
- });
85
- return { stdout: proxy, invalidate, dispose: () => {
86
- disposed = true;
87
- if (resizeTimer)
88
- clearTimeout(resizeTimer);
89
- resizeTimer = null;
90
- terminal.off('resize', onResize);
91
- scrollbar.onGeometry = undefined;
92
- invalidate();
93
- } };
94
- }
@@ -1,7 +0,0 @@
1
- /** Recognize Ink's erase-lines prefix without accepting arbitrary control writes. */
2
- export declare function matchInkErasePrefix(chunk: string): {
3
- prefix: string;
4
- erased: number;
5
- } | null;
6
- /** Parse complete frames, including Ink's prefixless initial frame. */
7
- export declare function parseInkFrame(chunk: string): string[] | null;
@@ -1,18 +0,0 @@
1
- /** Recognize Ink's erase-lines prefix without accepting arbitrary control writes. */
2
- export function matchInkErasePrefix(chunk) {
3
- const match = /^(?:\x1b\[2K(?:\x1b\[1A)?)+\x1b\[G/.exec(chunk);
4
- return match ? { prefix: match[0], erased: match[0].split('\x1b[2K').length - 1 } : null;
5
- }
6
- /** Parse complete frames, including Ink's prefixless initial frame. */
7
- export function parseInkFrame(chunk) {
8
- const prefix = matchInkErasePrefix(chunk);
9
- const body = chunk.slice(prefix?.prefix.length ?? 0);
10
- if (!body.endsWith('\n'))
11
- return null;
12
- // SGR and OSC-8 may decorate text; cursor movement is never frame content.
13
- const controls = body.replace(/\x1b\[[0-9;:]*m/g, '')
14
- .replace(/\x1b\]8;[^\x07\x1b]*(?:\x07|\x1b\\)/g, '');
15
- if (/[\x00-\x08\x0b-\x1f\x7f]/.test(controls))
16
- return null;
17
- return body.slice(0, -1).split('\n');
18
- }
@@ -1,39 +0,0 @@
1
- /**
2
- * Context gauge builder (spec §3.4). Pure: turns a percentage into a block bar
3
- * plus a threshold-based fill colour, with an ASCII fallback when the terminal
4
- * has no Unicode. Kept out of the `.tsx` so it is unit-testable without Ink.
5
- */
6
- import type { Theme } from './theme.js';
7
- import type { TermCapabilities } from './capabilities.js';
8
- export interface Gauge {
9
- /** The filled portion of the bar. */
10
- filled: string;
11
- /** The empty (track) portion of the bar. */
12
- empty: string;
13
- /** Fill colour chosen by threshold (`theme.gauge.*`). */
14
- fillColor: string | undefined;
15
- /** Track colour (`theme.gauge.track`). */
16
- trackColor: string | undefined;
17
- /** Clamped percentage 0–100. */
18
- pct: number;
19
- }
20
- /**
21
- * Where the bar changes colour, as percentages.
22
- *
23
- * The defaults are the values this function hardcoded before context compaction
24
- * existed, so every existing call site and test is byte-identical (§6.2).
25
- */
26
- export interface GaugeMarks {
27
- /** Amber at or above this. */
28
- warn: number;
29
- /** Red strictly above this. */
30
- high: number;
31
- }
32
- /**
33
- * Build a `width`-cell gauge for `pct` (0–100). Uses block glyphs on Unicode
34
- * terminals and `#`/`-` otherwise (e.g. `[######----]`).
35
- *
36
- * `marks` is OPTIONAL and defaults to today's values, so omitting it produces
37
- * byte-identical output to the pre-compaction build.
38
- */
39
- export declare function buildGauge(pct: number, width: number, theme: Theme, caps: TermCapabilities, marks?: GaugeMarks): Gauge;
package/dist/ui/gauge.js DELETED
@@ -1,55 +0,0 @@
1
- /**
2
- * Context gauge builder (spec §3.4). Pure: turns a percentage into a block bar
3
- * plus a threshold-based fill colour, with an ASCII fallback when the terminal
4
- * has no Unicode. Kept out of the `.tsx` so it is unit-testable without Ink.
5
- */
6
- import { pickGlyphs } from './glyphs.js';
7
- const DEFAULT_MARKS = { warn: 60, high: 85 };
8
- /**
9
- * Pick the fill colour by threshold: `< warn` low · `>= warn` mid · `> high` high.
10
- *
11
- * THE TWO OPERATORS ARE PRESERVED EXACTLY (`> high`, `>= warn`), and that is not
12
- * cosmetic: changing either would move the default 85 or 60 boundary and break
13
- * the byte-identity claim that makes the `marks` parameter a free change.
14
- *
15
- * WHAT RED MEANS, PRECISELY (P2-4). The compaction trigger is
16
- * `ratio >= threshold` (INCLUSIVE) while this fill is `pct > high` (EXCLUSIVE),
17
- * so with `high = threshold` any occupancy that would render red has ALREADY
18
- * triggered compaction, and the gauge repaints downward in the same frame. The
19
- * red band is therefore only ever OBSERVABLE when compaction did not or could
20
- * not run — the feature is off, it self-disabled, or the failure ladder ended at
21
- * its last rung. That is a genuinely more useful meaning than "imminent", and it
22
- * is the one the README and the settings screen state.
23
- */
24
- function thresholdColor(pct, theme, marks) {
25
- if (pct > marks.high)
26
- return theme.gauge.high;
27
- if (pct >= marks.warn)
28
- return theme.gauge.mid;
29
- return theme.gauge.low;
30
- }
31
- /**
32
- * Build a `width`-cell gauge for `pct` (0–100). Uses block glyphs on Unicode
33
- * terminals and `#`/`-` otherwise (e.g. `[######----]`).
34
- *
35
- * `marks` is OPTIONAL and defaults to today's values, so omitting it produces
36
- * byte-identical output to the pre-compaction build.
37
- */
38
- export function buildGauge(pct, width, theme, caps, marks = DEFAULT_MARKS) {
39
- const clamped = Math.max(0, Math.min(100, Math.round(pct)));
40
- const cells = Math.max(1, width);
41
- const filledCells = Math.max(0, Math.min(cells, Math.round((clamped / 100) * cells)));
42
- // Was `caps.unicode ? '█' : '#'` inline. The branch was correct but the
43
- // literals still had to move: leaving even a well-formed pair here would mean
44
- // the A-1 scan needs an exception, and exceptions get copied (§4.1).
45
- const glyphs = pickGlyphs(caps);
46
- const full = glyphs.gaugeFull;
47
- const empty = glyphs.gaugeEmpty;
48
- return {
49
- filled: full.repeat(filledCells),
50
- empty: empty.repeat(cells - filledCells),
51
- fillColor: thresholdColor(clamped, theme, marks),
52
- trackColor: theme.gauge.track,
53
- pct: clamped,
54
- };
55
- }