@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,208 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { PREVIEW_TRUNCATION_MARK } from '../../agent/reducer.js';
4
- /**
5
- * Classify a unified-diff line. Meta prefixes (`@@`, `---`, `+++`) are tested
6
- * FIRST so a `--- path` header is not mis-read as a single-char removal (P2-8);
7
- * the `Applied edit to <path>:` lead-in falls through to `context`.
8
- */
9
- export function classifyDiffLine(line) {
10
- if (line.startsWith('@@') || line.startsWith('---') || line.startsWith('+++'))
11
- return 'meta';
12
- if (line.startsWith('+'))
13
- return 'add';
14
- if (line.startsWith('-'))
15
- return 'remove';
16
- return 'context';
17
- }
18
- const BASH_FOOTER_RE = /^\[(?:exit code (\d+)|signal (\w+))\]$/;
19
- /**
20
- * Derive the bash badge. The exit status is authoritative (the tool returns an
21
- * error result iff the exit code is non-zero), so the label is `exit 0` /
22
- * `failed` from `status`; a real `[exit code N]` / `[signal X]` last line is
23
- * parsed best-effort for the exact number, falling back to the status label
24
- * when the footer was truncated out of the stored preview (P1-2).
25
- */
26
- export function bashBadge(status, preview) {
27
- const ok = status === 'done';
28
- const lines = preview.split('\n').map((l) => l.trimEnd()).filter((l) => l.length > 0);
29
- const last = lines[lines.length - 1] ?? '';
30
- const m = BASH_FOOTER_RE.exec(last);
31
- if (m) {
32
- if (m[1] !== undefined)
33
- return { text: `exit ${m[1]}`, ok };
34
- return { text: `signal ${m[2]}`, ok };
35
- }
36
- return { text: ok ? 'exit 0' : status === 'error' ? 'failed' : 'pending', ok };
37
- }
38
- const WRITE_RE = /^Wrote (\d+) bytes to (.+)$/;
39
- /** Parse the real `Wrote <n> bytes to <path>` result — bytes+path only (P2-7). */
40
- export function parseWriteFile(text) {
41
- const line = text.split('\n').find((l) => l.trim().length > 0) ?? '';
42
- const m = WRITE_RE.exec(line.trim());
43
- if (!m)
44
- return null;
45
- return { bytes: Number.parseInt(m[1], 10), path: m[2] };
46
- }
47
- /**
48
- * Parse the JSON tail of a tool result whose first line is prose.
49
- *
50
- * FAILS SOFT, ALWAYS. This runs inside a render pass, and the stored preview may
51
- * have been truncated at `STORED_PREVIEW_CHARS` or restored from a session file
52
- * written by another build. `null` means "fall through to the generic
53
- * renderer", never "throw while drawing the transcript".
54
- */
55
- function parseJsonTail(lines) {
56
- const start = lines.findIndex((l) => l.trimStart().startsWith('{'));
57
- if (start < 0)
58
- return null;
59
- try {
60
- return JSON.parse(lines.slice(start).join('\n'));
61
- }
62
- catch {
63
- return null;
64
- }
65
- }
66
- /** `3 questions · Postgres · REST` — or `dismissed`. */
67
- export function summarizeAskUser(lines) {
68
- const parsed = parseJsonTail(lines);
69
- if (!parsed || !Array.isArray(parsed.answers))
70
- return null;
71
- if (parsed.cancelled)
72
- return 'dismissed';
73
- const count = parsed.answers.length;
74
- const picks = parsed.answers
75
- .map((a) => (typeof a.custom === 'string' && a.custom.length > 0
76
- ? a.custom
77
- : Array.isArray(a.selected) ? a.selected.join('/') : ''))
78
- .filter((s) => s.length > 0);
79
- return [`${count} question${count === 1 ? '' : 's'}`, ...picks].join(' - ');
80
- }
81
- /** Parse a real `list_dir` row (`dir <name>/` / `file <name> (<n>b)`) (P2-9). */
82
- export function parseListRow(line) {
83
- const dir = /^dir\s+(.*?)\/?\s*$/.exec(line);
84
- if (dir)
85
- return { kind: 'dir', name: dir[1].trimEnd() };
86
- const file = /^file\s+(.*?)(?:\s+\((\d+b)\))?\s*$/.exec(line);
87
- if (file)
88
- return { kind: 'file', name: file[1].trimEnd(), size: file[2] };
89
- return null;
90
- }
91
- function diffColor(cls, theme) {
92
- switch (cls) {
93
- case 'add':
94
- return theme.diff.add;
95
- case 'remove':
96
- return theme.diff.remove;
97
- case 'meta':
98
- return theme.diff.meta;
99
- case 'context':
100
- return theme.diff.context;
101
- }
102
- }
103
- function renderDiff(lines, theme) {
104
- return lines.map((line, i) => (_jsx(Text, { color: diffColor(classifyDiffLine(line), theme), children: line.length > 0 ? line : ' ' }, i)));
105
- }
106
- function renderWrite(lines, theme) {
107
- const parsed = parseWriteFile(lines.join('\n'));
108
- if (!parsed)
109
- return renderPlain(lines, theme, false);
110
- return [
111
- _jsxs(Text, { color: theme.diff.add, children: ["+ wrote ", parsed.path, " (", parsed.bytes, " B)"] }, "w"),
112
- ];
113
- }
114
- function renderRead(lines, theme) {
115
- // Numbered lines are `%5d content`; dim the 7-char gutter, keep content plain.
116
- return lines.map((line, i) => (_jsxs(Text, { children: [_jsx(Text, { color: theme.muted, children: line.slice(0, 7) }), line.slice(7)] }, i)));
117
- }
118
- function renderBash(lines, theme) {
119
- return lines.map((line, i) => {
120
- // The truncation marker is compared against the constant the reducer
121
- // actually writes. These used to be two independently spelled `…` literals;
122
- // once the producer moved to ASCII, a re-spelled copy here would have
123
- // stopped matching and quietly lost the dimming.
124
- const dim = line.startsWith('$ ') ||
125
- BASH_FOOTER_RE.test(line.trimEnd()) ||
126
- line === PREVIEW_TRUNCATION_MARK;
127
- return (_jsx(Text, { color: dim ? theme.muted : undefined, children: line.length > 0 ? line : ' ' }, i));
128
- });
129
- }
130
- function renderList(lines, theme) {
131
- return lines.map((line, i) => {
132
- const row = parseListRow(line);
133
- if (!row)
134
- return _jsx(Text, { children: line }, i);
135
- if (row.kind === 'dir') {
136
- return (_jsx(Text, { children: _jsxs(Text, { color: theme.accent, children: [row.name, "/"] }) }, i));
137
- }
138
- return (_jsxs(Text, { children: [row.name, row.size ? _jsxs(Text, { color: theme.muted, children: [" (", row.size, ")"] }) : null] }, i));
139
- });
140
- }
141
- function renderGlob(lines, theme) {
142
- // Flat relative paths — dim the directory portion of each path.
143
- return lines.map((line, i) => {
144
- const slash = line.lastIndexOf('/');
145
- if (slash < 0)
146
- return _jsx(Text, { children: line }, i);
147
- return (_jsxs(Text, { children: [_jsx(Text, { color: theme.muted, children: line.slice(0, slash + 1) }), line.slice(slash + 1)] }, i));
148
- });
149
- }
150
- function renderAskUser(lines, theme) {
151
- const summary = summarizeAskUser(lines);
152
- // An unparseable preview falls through to the generic renderer rather than
153
- // rendering nothing: a truncated result is still information.
154
- if (!summary)
155
- return renderPlain(lines, theme, false);
156
- return [
157
- _jsx(Text, { color: theme.muted, children: summary }, "q"),
158
- ];
159
- }
160
- /**
161
- * `Plan approved.` / `Plan rejected. ...` — the verdict is the whole content of
162
- * a `submit_plan` result, and it is the first line, so this needs no parsing.
163
- */
164
- function renderSubmitPlan(lines, theme) {
165
- const first = lines.find((l) => l.trim().length > 0) ?? '';
166
- const approved = /^Plan approved/.test(first);
167
- const rejected = /^Plan rejected/.test(first);
168
- if (!approved && !rejected)
169
- return renderPlain(lines, theme, false);
170
- return [
171
- _jsx(Text, { color: approved ? theme.toolDone : theme.noticeWarn, children: first }, "v"),
172
- ];
173
- }
174
- function renderPlain(lines, theme, error) {
175
- return lines.map((line, i) => (_jsx(Text, { color: error ? theme.toolError : theme.muted, children: line.length > 0 ? line : ' ' }, i)));
176
- }
177
- export function ToolPreview({ name, lines, theme, isError }) {
178
- let body;
179
- switch (name) {
180
- case 'edit_file':
181
- body = renderDiff(lines, theme);
182
- break;
183
- case 'write_file':
184
- body = renderWrite(lines, theme);
185
- break;
186
- case 'read_file':
187
- body = renderRead(lines, theme);
188
- break;
189
- case 'bash':
190
- body = renderBash(lines, theme);
191
- break;
192
- case 'list_dir':
193
- body = renderList(lines, theme);
194
- break;
195
- case 'glob':
196
- body = renderGlob(lines, theme);
197
- break;
198
- case 'ask_user':
199
- body = renderAskUser(lines, theme);
200
- break;
201
- case 'submit_plan':
202
- body = renderSubmitPlan(lines, theme);
203
- break;
204
- default:
205
- body = renderPlain(lines, theme, isError);
206
- }
207
- return _jsx(Box, { flexDirection: "column", children: body });
208
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * Render a user message entry.
3
- *
4
- * The role glyph, the gutter rail and the inter-entry spacing all belong to
5
- * `EntryFrame` now (§4.3), so this component renders content and nothing else.
6
- *
7
- * IT DOES TAKE `caps` AS OF tui-paste-handling (G7): the row cap below needs one
8
- * glyph, and a hardcoded ellipsis is the exact failure `glyphs.ts` exists to
9
- * prevent. That is the only reason the earlier "it has no glyph of its own left
10
- * to degrade" note no longer holds.
11
- */
12
- import React from 'react';
13
- import type { Theme } from '../theme.js';
14
- import type { TermCapabilities } from '../capabilities.js';
15
- declare function UserEntryImpl({ text, theme, caps, }: {
16
- text: string;
17
- theme: Theme;
18
- caps: TermCapabilities;
19
- }): React.ReactElement;
20
- /**
21
- * Rows this component renders for a given text.
22
- *
23
- * EXPORTED SO `virtual-window.ts` AND THIS FILE CANNOT DISAGREE (I-13). The
24
- * render cap and the height estimate are ONE number; an over-estimated entry is
25
- * never mounted, so it is never measured, so the estimate never self-corrects --
26
- * which makes that particular disagreement permanent and silent.
27
- */
28
- export declare function userEntryRenderedRows(lineCount: number): number;
29
- /**
30
- * `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
31
- * `mapEntry` already preserves object identity for untouched entries, so the
32
- * array props below are stable references on a settled card, and `theme` /
33
- * `caps` are `useMemo`d in `App.tsx` (I-L2-1).
34
- */
35
- export declare const UserEntry: React.MemoExoticComponent<typeof UserEntryImpl>;
36
- export {};
@@ -1,57 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Render a user message entry.
4
- *
5
- * The role glyph, the gutter rail and the inter-entry spacing all belong to
6
- * `EntryFrame` now (§4.3), so this component renders content and nothing else.
7
- *
8
- * IT DOES TAKE `caps` AS OF tui-paste-handling (G7): the row cap below needs one
9
- * glyph, and a hardcoded ellipsis is the exact failure `glyphs.ts` exists to
10
- * prevent. That is the only reason the earlier "it has no glyph of its own left
11
- * to degrade" note no longer holds.
12
- */
13
- import React from 'react';
14
- import { Box, Text } from 'ink';
15
- import { pickGlyphs } from '../glyphs.js';
16
- import { USER_ENTRY_MAX_ROWS } from '../composer-limits.js';
17
- import { expandTabs } from '../display-tab.js';
18
- function UserEntryImpl({ text, theme, caps, }) {
19
- const glyphs = pickGlyphs(caps);
20
- // TAB IS EXPANDED HERE, AT THE RENDER BOUNDARY, AND NOWHERE ABOVE IT.
21
- // The payload keeps its `\t` (the model must receive the original
22
- // indentation), so `<Text>` used to hand the raw byte to the terminal and
23
- // the terminal painted an EIGHT-column stop while the composer painted a
24
- // FOUR-column one. Splitting first and expanding per line keeps this row
25
- // identical to the row the user saw in the draft.
26
- const all = text.split('\n').map((line) => expandTabs(line));
27
- // A submitted 5 000-line paste otherwise asks Yoga to lay out 5 000 nodes
28
- // inside a measured entry -- the hazard `render-cache.ts:37` already records
29
- // in the same words ("a multi-megabyte 'code block' is almost always a pasted
30
- // log"). The full text stays in `ViewState` and in the exit transcript, which
31
- // is deliberately NOT capped: a replay a user pipes into an issue must be
32
- // complete.
33
- const hidden = Math.max(0, all.length - USER_ENTRY_MAX_ROWS);
34
- const shown = hidden > 0 ? all.slice(0, USER_ENTRY_MAX_ROWS) : all;
35
- return (_jsxs(Box, { flexDirection: "column", children: [shown.map((line, i) => (_jsx(Text, { color: theme.user, bold: i === 0, children: line }, i))), hidden > 0 && (
36
- // The tail NAMES the number of hidden rows rather than hiding them
37
- // silently, which is what makes the cap honest (D-9 / R-10).
38
- _jsx(Text, { color: theme.muted, children: `${glyphs.ellipsis} +${hidden} more lines` }))] }));
39
- }
40
- /**
41
- * Rows this component renders for a given text.
42
- *
43
- * EXPORTED SO `virtual-window.ts` AND THIS FILE CANNOT DISAGREE (I-13). The
44
- * render cap and the height estimate are ONE number; an over-estimated entry is
45
- * never mounted, so it is never measured, so the estimate never self-corrects --
46
- * which makes that particular disagreement permanent and silent.
47
- */
48
- export function userEntryRenderedRows(lineCount) {
49
- return lineCount > USER_ENTRY_MAX_ROWS ? USER_ENTRY_MAX_ROWS + 1 : lineCount;
50
- }
51
- /**
52
- * `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
53
- * `mapEntry` already preserves object identity for untouched entries, so the
54
- * array props below are stable references on a settled card, and `theme` /
55
- * `caps` are `useMemo`d in `App.tsx` (I-L2-1).
56
- */
57
- export const UserEntry = React.memo(UserEntryImpl);
@@ -1,37 +0,0 @@
1
- /**
2
- * WaitCard - the five-row card a running `job_wait` is drawn as
3
- * (extended-job-wait §3.8.2).
4
- *
5
- * ASCII ONLY: every non-ASCII cell is a `pickGlyphs` result and every sentence the
6
- * user did not get from the job itself is in `interactionCopy`.
7
- *
8
- * FIVE ROWS, IN EVERY STATE (I-10). A branch may change what a row SAYS, never how
9
- * many rows there are: `estimateEntryRows` charges exactly `separation + 5`, and a
10
- * card that is one row short makes the viewport jump while one row long makes the
11
- * height estimate an under-count - the direction `virtual-window.ts` names unsafe.
12
- * Every row is `wrap="truncate"` for the same reason.
13
- *
14
- * ONE CLOCK. Every number is a subtraction between an epoch stamped by
15
- * `buildWaitView` and the `nowSec` the transcript already ticks at 1 Hz; there is
16
- * no timer in this file, and the spinner is the app's shared factory, which this
17
- * card REPLACES `ToolCard`'s badge with rather than adding to.
18
- */
19
- import React from 'react';
20
- import type { Theme } from '../theme.js';
21
- import type { TermCapabilities } from '../capabilities.js';
22
- import type { WaitView } from '../../proc/wait-view.js';
23
- export interface WaitCardProps {
24
- view: WaitView;
25
- /** Wall-clock seconds from the transcript's 1 Hz clock; absent before the first tick. */
26
- nowSec?: number | undefined;
27
- reducedMotion?: boolean | undefined;
28
- theme: Theme;
29
- caps: TermCapabilities;
30
- }
31
- declare function WaitCardImpl(props: WaitCardProps): React.ReactElement;
32
- /**
33
- * `React.memo` with the DEFAULT comparator: the reducer writes a fresh `view`
34
- * object once a second, which is exactly the one change that must re-render.
35
- */
36
- export declare const WaitCard: React.MemoExoticComponent<typeof WaitCardImpl>;
37
- export {};
@@ -1,92 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * WaitCard - the five-row card a running `job_wait` is drawn as
4
- * (extended-job-wait §3.8.2).
5
- *
6
- * ASCII ONLY: every non-ASCII cell is a `pickGlyphs` result and every sentence the
7
- * user did not get from the job itself is in `interactionCopy`.
8
- *
9
- * FIVE ROWS, IN EVERY STATE (I-10). A branch may change what a row SAYS, never how
10
- * many rows there are: `estimateEntryRows` charges exactly `separation + 5`, and a
11
- * card that is one row short makes the viewport jump while one row long makes the
12
- * height estimate an under-count - the direction `virtual-window.ts` names unsafe.
13
- * Every row is `wrap="truncate"` for the same reason.
14
- *
15
- * ONE CLOCK. Every number is a subtraction between an epoch stamped by
16
- * `buildWaitView` and the `nowSec` the transcript already ticks at 1 Hz; there is
17
- * no timer in this file, and the spinner is the app's shared factory, which this
18
- * card REPLACES `ToolCard`'s badge with rather than adding to.
19
- */
20
- import React from 'react';
21
- import { Box, Text, useStdout } from 'ink';
22
- import { pickGlyphs } from '../glyphs.js';
23
- import { liveSpinner } from '../ActivityLine.js';
24
- import { railBorderProps } from '../layout/Gutter.js';
25
- import { interactionCopy } from '../interaction-copy.js';
26
- import { WAIT_BAR_MIN_COLS, barCellsFor, formatWaitClock, percentOf, renderBar, } from '../layout/wait-bar.js';
27
- /** Empty `<Text>` measures zero rows in Ink, so a blank row is drawn as a space. */
28
- function filled(text) {
29
- return text.length > 0 ? text : ' ';
30
- }
31
- function WaitCardImpl(props) {
32
- const { view, reducedMotion, theme, caps } = props;
33
- const glyphs = pickGlyphs(caps);
34
- const { stdout } = useStdout();
35
- const cols = stdout?.columns ?? 80;
36
- // Before the first tick the clock reads the instant the wait began.
37
- const nowMs = Math.max(view.waitStartedAt, props.nowSec !== undefined ? props.nowSec * 1000 : view.waitStartedAt);
38
- const waited = nowMs - view.waitStartedAt;
39
- const remaining = Math.max(0, view.upToMs - waited);
40
- const upTo = formatWaitClock(view.upToMs);
41
- const dot = ` ${glyphs.midDot} `;
42
- // ROW 1 - what, and the clock.
43
- const spinner = liveSpinner(reducedMotion ?? false, caps);
44
- const title = `Waiting for ${view.jobLabel}`;
45
- const clock = `${formatWaitClock(waited)} of ${upTo}`;
46
- // ROW 2 - the bar. THE JOB'S OWN PROGRESS WINS; with none, the bar shows the wait
47
- // window itself and the words say so (D-10), so the two meanings never share a
48
- // bar silently.
49
- const jobFraction = view.progress?.fraction ?? null;
50
- const windowFraction = view.upToMs > 0 ? waited / view.upToMs : 0;
51
- const barFraction = jobFraction ?? windowFraction;
52
- const showBar = cols >= WAIT_BAR_MIN_COLS;
53
- const bar = showBar
54
- ? `${renderBar(barFraction, barCellsFor(cols), glyphs)} `
55
- : '';
56
- let barText;
57
- if (jobFraction !== null && view.progress) {
58
- barText =
59
- view.progress.kind === 'percent'
60
- ? view.progress.text
61
- : `${percentOf(jobFraction)}% ${view.progress.text}`;
62
- }
63
- else {
64
- barText = `${percentOf(windowFraction)}% of this ${upTo} wait`;
65
- if (view.progress)
66
- barText += ` ${view.progress.text}`;
67
- }
68
- // ROW 3 - the two clocks.
69
- let clocks;
70
- if (view.jobLabel.endsWith(' jobs')) {
71
- const rule = view.mode === 'any' ? 'ANY finishes' : 'ALL finish';
72
- clocks = `${view.liveJobs} ${view.liveJobs === 1 ? 'job' : 'jobs'} live${dot}this wait ends when ${rule}`;
73
- }
74
- else {
75
- clocks =
76
- `job ${view.status} ${formatWaitClock(Math.max(0, nowMs - view.jobStartedAt))}${dot}` +
77
- `this wait ends in ${formatWaitClock(remaining)}, or sooner if the job finishes`;
78
- }
79
- // ROW 4 - what the job last said, or a calm note that silence is not failure (D-11).
80
- const quietMs = Math.max(0, nowMs - view.lastOutputAt);
81
- const quiet = view.lastRow !== undefined && quietMs > view.stallSeconds * 1000;
82
- const lastRowText = quiet
83
- ? `quiet for ${formatWaitClock(quietMs)} - the job is still alive; this is not a failure`
84
- : (view.lastRow ?? 'no output yet');
85
- const ago = view.lastRow !== undefined && !quiet ? `${formatWaitClock(quietMs)} ago` : '';
86
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [spinner ? _jsxs(Text, { color: theme.toolRunning, children: [spinner, " "] }) : (_jsxs(Text, { color: theme.toolRunning, children: [glyphs.spinnerStill, " "] })), _jsx(Text, { color: theme.accent, bold: true, children: title }), _jsx(Box, { flexGrow: 1, flexShrink: 1, minWidth: 0, children: _jsx(Text, { color: theme.muted, wrap: "truncate", children: view.command.length > 0 ? ` ${view.command}` : ' ' }) }), _jsx(Box, { flexShrink: 0, children: _jsxs(Text, { color: theme.muted, children: [" ", clock] }) })] }), _jsxs(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, ...railBorderProps(glyphs.railVertical, theme.border), children: [_jsxs(Text, { wrap: "truncate", children: [_jsx(Text, { color: theme.toolRunning, children: bar }), _jsx(Text, { color: theme.primary, children: filled(barText) })] }), _jsx(Text, { color: theme.muted, wrap: "truncate", children: filled(clocks) }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { flexGrow: 1, flexShrink: 1, minWidth: 0, children: _jsx(Text, { color: quiet ? theme.noticeWarn : theme.muted, wrap: "truncate", children: filled(lastRowText) }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { color: theme.muted, children: ago.length > 0 ? ` ${ago}` : ' ' }) })] }), _jsxs(Text, { color: theme.muted, wrap: "truncate", children: [interactionCopy.waitHintSend, dot, interactionCopy.waitHintStop] })] })] }));
87
- }
88
- /**
89
- * `React.memo` with the DEFAULT comparator: the reducer writes a fresh `view`
90
- * object once a second, which is exactly the one change that must re-render.
91
- */
92
- export const WaitCard = React.memo(WaitCardImpl);
@@ -1,43 +0,0 @@
1
- /**
2
- * Module-level single-slot snapshot — the ONE way view state crosses the React
3
- * boundary out to `cli.tsx` (spec §4.4, review P1-3).
4
- *
5
- * Why not `useImperativeHandle` / a ref callback: two of the four restore paths
6
- * (`process.on('exit')` and the signal hooks) are process-level, and by the time
7
- * they run the component tree may already be unmounted or mid-unmount. A module
8
- * variable stays readable for the whole process lifetime; a React channel does
9
- * not.
10
- *
11
- * Writes are overwriting, not appending: `entries` is passed by reference, so
12
- * publishing costs one object literal per view-state change.
13
- */
14
- import type { Entry, UsageTotal } from '../agent/reducer.js';
15
- export interface ExitSnapshot {
16
- entries: Entry[];
17
- /**
18
- * The session total, FORWARDED not copied.
19
- *
20
- * It gained `cacheReadTokens` / `cacheWriteTokens`
21
- * (context-usage-gauge-accuracy §3.6) and this file needed no change for it,
22
- * which is the point of referencing the reducer's type rather than restating
23
- * its fields: `renderTranscriptText` reads the total through `promptTokensOf`,
24
- * so the exit summary and the status bar cannot drift apart.
25
- */
26
- usageTotal: UsageTotal;
27
- provider: string;
28
- model: string;
29
- startedAt: number;
30
- /**
31
- * Entries the retain ring removed (tui-render-performance L1).
32
- *
33
- * OPTIONAL so every existing caller and test is unchanged; absent means the
34
- * replay says nothing, which is correct for a session that dropped nothing.
35
- */
36
- droppedEntries?: number;
37
- }
38
- /** Called by `App` after every view-state change. Synchronous, side-effect free. */
39
- export declare function publishExitSnapshot(next: ExitSnapshot): void;
40
- /** Called by `cli.tsx` after `restore()`. `undefined` ⇒ skip the replay entirely. */
41
- export declare function readExitSnapshot(): ExitSnapshot | undefined;
42
- /** Test-only reset so specs do not leak state into one another. */
43
- export declare function clearExitSnapshot(): void;
@@ -1,26 +0,0 @@
1
- /**
2
- * Module-level single-slot snapshot — the ONE way view state crosses the React
3
- * boundary out to `cli.tsx` (spec §4.4, review P1-3).
4
- *
5
- * Why not `useImperativeHandle` / a ref callback: two of the four restore paths
6
- * (`process.on('exit')` and the signal hooks) are process-level, and by the time
7
- * they run the component tree may already be unmounted or mid-unmount. A module
8
- * variable stays readable for the whole process lifetime; a React channel does
9
- * not.
10
- *
11
- * Writes are overwriting, not appending: `entries` is passed by reference, so
12
- * publishing costs one object literal per view-state change.
13
- */
14
- let snapshot;
15
- /** Called by `App` after every view-state change. Synchronous, side-effect free. */
16
- export function publishExitSnapshot(next) {
17
- snapshot = next;
18
- }
19
- /** Called by `cli.tsx` after `restore()`. `undefined` ⇒ skip the replay entirely. */
20
- export function readExitSnapshot() {
21
- return snapshot;
22
- }
23
- /** Test-only reset so specs do not leak state into one another. */
24
- export function clearExitSnapshot() {
25
- snapshot = undefined;
26
- }
@@ -1,166 +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
- /**
47
- * Rebuild `ansiEscapes.eraseLines(count)` byte for byte.
48
- *
49
- * Exported for the upgrade tripwire (`frame-differ-ink-shape.test.ts`), which
50
- * drives the real `ink/build/log-update.js` and asserts this reconstruction is
51
- * byte-equal to what it produced. If a future Ink changes the shape, that test
52
- * fails loudly instead of this module silently degrading to pass-through for the
53
- * rest of the package's life (K-2).
54
- */
55
- export declare function eraseLinesPrefix(count: number): string;
56
- export interface FrameDifferOptions {
57
- /** Emit the DEC 2026 envelope around each batch. */
58
- sync: boolean;
59
- /**
60
- * Live terminal height. Read on every `transform`, NEVER cached: it is the
61
- * only input to the I-9 geometry guard and it changes under the differ's feet
62
- * on resize. `undefined` ⇒ stand down and pass through.
63
- */
64
- rows: () => number | undefined;
65
- /**
66
- * Live terminal width, read on every paint and never cached (like `rows`).
67
- * Absent or non-finite => every changed row ends in `CSI K` (the original
68
- * behaviour); finite => rows whose display width is >= `cols` skip the EL so
69
- * the last column (the scrollbar) is never erased (I-4).
70
- */
71
- cols?: () => number | undefined;
72
- /** Raised once, on the 0→1 edge of `fallbacks` (§5.6). */
73
- onFirstFallback?: () => void;
74
- /**
75
- * Raw frame lines in, lines to PAINT out. Identity when absent, and absent is
76
- * the default — a session without drag-select never allocates a second array.
77
- *
78
- * Called AFTER the geometry stand-down and BEFORE the cache comparison, so a
79
- * frame this module refuses to address never reaches the selection layer, and
80
- * the diff below still compares what is actually on the screen (I-2).
81
- *
82
- * It MUST return the same number of lines it was given; a decorator that
83
- * changes the count would desynchronise absolute addressing, so the result is
84
- * discarded if it does.
85
- */
86
- decorate?: (lines: string[]) => string[];
87
- /**
88
- * Raised whenever the cache is dropped — a foreign write, a resize, a geometry
89
- * stand-down, an explicit `invalidate()`.
90
- *
91
- * P1-7: on every one of those paths the RAW Ink frame reaches the screen
92
- * verbatim, so any highlight is wiped off the terminal while the selection
93
- * controller still believes it is painted and its mirror still holds the rows
94
- * of the last DECORATED frame. A release would then copy text that is not on
95
- * screen. I-4's "by construction" argument has exactly this hole, and one
96
- * callback closes it: the controller clears the selection.
97
- */
98
- onInvalidate?: () => void;
99
- }
100
- export interface FrameWriterStats {
101
- /** Frames the differ EMITTED — `framesDiffed + framesFull`, never pass-throughs. */
102
- framesTotal: number;
103
- framesDiffed: number;
104
- framesFull: number;
105
- linesWritten: number;
106
- bytesWritten: number;
107
- /**
108
- * Pass-throughs caused by a write the differ did not understand.
109
- *
110
- * NOT INVALIDATIONS (AC-11 / K-14). A resize legitimately invalidates and shows
111
- * up as `framesFull`; counting invalidations here would put AC-7 and AC-11 in
112
- * direct contradiction and one of them would end up quietly relaxed. It also
113
- * excludes the two pass-throughs this module inflicts on ITSELF and already
114
- * knows are benign — the session's seed write and the degenerate-geometry
115
- * stand-down — because `fallbacks > 0` is documented to mean "something wrote
116
- * to stdout behind Ink's back" and is what raises the §5.6 notice.
117
- */
118
- fallbacks: number;
119
- /**
120
- * Self-initiated repaints — `repaint()` calls that emitted at least one row.
121
- *
122
- * A COUNTER OF ITS OWN, deliberately kept out of `framesTotal` /
123
- * `framesDiffed` (P2-6). Those count frames INK PRODUCED, and folding a drag's
124
- * highlight repaints into them would make `/perf`'s frame rate a function of
125
- * how much the user moved the mouse.
126
- */
127
- repaints: number;
128
- }
129
- export interface FrameDiffer {
130
- /**
131
- * Bytes to write instead of `chunk`; `''` = write nothing; `null` = write
132
- * `chunk`. The parameter is `string` and only `string` (P1-4): decoding, and
133
- * the decision about what is even diffable, belong to the writer — the only
134
- * place untyped input arrives.
135
- */
136
- transform(chunk: string): string | null;
137
- /** Force the next frame to be a full repaint. */
138
- invalidate(): void;
139
- /** Single owner of the counters (P2-2); the writer re-exports this. */
140
- stats(): FrameWriterStats;
141
- /**
142
- * Re-run `decorate` over the LAST RAW FRAME and emit only the rows whose paint
143
- * changed; `''` when there is nothing safe to do.
144
- *
145
- * This is what makes a drag cost 1-3 addressed rows instead of a React commit
146
- * and a whole-tree Yoga layout (D-6). `''` is a REAL state rather than an error
147
- * — after an `invalidate()` there is no cache to diff against and no origin to
148
- * address from — and the caller's fallback is `App`'s existing `redrawNonce`:
149
- * ask for a React redraw, the next commit runs `decorate`, and the highlight
150
- * appears one frame later instead of never.
151
- */
152
- repaint(): string;
153
- /**
154
- * The stream was resized. Optional (tui-native-terminal-scroll §5.1): the
155
- * full-screen differ does not implement it and is invalidated instead, which is
156
- * its existing behaviour; the scrollback writer keeps its cache for a reflow
157
- * estimate.
158
- */
159
- onResize?(): void;
160
- /**
161
- * An own write that moves neither a cell nor the cursor (OSC 52 copy). Optional
162
- * for the same reason: absent, the write invalidates the cache as before.
163
- */
164
- cursorNeutralWrite?(): void;
165
- }
166
- export declare function createFrameDiffer(options: FrameDifferOptions): FrameDiffer;