@aragon-agent/cli 0.6.46 → 0.6.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +80 -12
  3. package/dist/agent/coalesce.d.ts +5 -1
  4. package/dist/agent/coalesce.js +13 -0
  5. package/dist/agent/controller.d.ts +41 -20
  6. package/dist/agent/controller.js +68 -15
  7. package/dist/agent/conversation-reset.d.ts +1 -1
  8. package/dist/agent/governance-wiring.d.ts +6 -6
  9. package/dist/agent/governance-wiring.js +4 -4
  10. package/dist/agent/headless.d.ts +5 -5
  11. package/dist/agent/headless.js +4 -4
  12. package/dist/agent/job-notices.d.ts +1 -1
  13. package/dist/agent/job-notices.js +1 -1
  14. package/dist/agent/kit-apply.d.ts +3 -3
  15. package/dist/agent/kit-apply.js +3 -3
  16. package/dist/agent/model-profile-settings.d.ts +2 -2
  17. package/dist/agent/model-profile-settings.js +6 -6
  18. package/dist/agent/prompt-options.d.ts +1 -1
  19. package/dist/agent/system-prompt.d.ts +1 -1
  20. package/dist/agent/user-attention.d.ts +17 -0
  21. package/dist/agent/user-attention.js +32 -0
  22. package/dist/{ui → app}/App.d.ts +9 -9
  23. package/dist/{ui → app}/App.js +113 -79
  24. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  25. package/dist/{ui → app}/use-startup-notices.js +2 -2
  26. package/dist/cli.js +31 -32
  27. package/dist/commands/agents-command.js +1 -1
  28. package/dist/commands/builtins.js +9 -9
  29. package/dist/commands/governance-command.js +2 -2
  30. package/dist/commands/governance-runs-table.js +1 -1
  31. package/dist/commands/kit-command.js +1 -1
  32. package/dist/commands/perf.d.ts +3 -3
  33. package/dist/commands/perf.js +1 -1
  34. package/dist/commands/registry.d.ts +8 -8
  35. package/dist/commands/skills.js +2 -2
  36. package/dist/commands/team-command.js +1 -1
  37. package/dist/compaction/archive.d.ts +1 -1
  38. package/dist/compaction/archive.js +1 -1
  39. package/dist/compaction/child.d.ts +3 -3
  40. package/dist/compaction/child.js +4 -4
  41. package/dist/compaction/command.js +5 -5
  42. package/dist/compaction/compactor.d.ts +6 -6
  43. package/dist/compaction/compactor.js +6 -6
  44. package/dist/compaction/context-command.js +1 -1
  45. package/dist/compaction/digest.js +1 -1
  46. package/dist/compaction/memory-input.js +1 -1
  47. package/dist/compaction/memory-validation.js +1 -1
  48. package/dist/compaction/memory.js +1 -1
  49. package/dist/compaction/summarize-call.js +1 -1
  50. package/dist/compaction/summary-prompt.js +1 -1
  51. package/dist/compaction/tail-budget.js +2 -2
  52. package/dist/compaction/wiring.d.ts +5 -5
  53. package/dist/compaction/wiring.js +2 -2
  54. package/dist/config/cli-commands.d.ts +1 -1
  55. package/dist/config/cli-commands.js +3 -3
  56. package/dist/config/env.d.ts +1 -1
  57. package/dist/config/env.js +4 -4
  58. package/dist/config/load.d.ts +2 -2
  59. package/dist/config/load.js +10 -31
  60. package/dist/config/migrate-state-out-of-config.js +1 -1
  61. package/dist/config/model-profile-store.d.ts +4 -54
  62. package/dist/config/model-profile-store.js +3 -3
  63. package/dist/config/prompt-history.js +1 -1
  64. package/dist/config/store.d.ts +2 -2
  65. package/dist/config/store.js +3 -3
  66. package/dist/diagnostics/doctor.js +4 -4
  67. package/dist/exec/bridge/decisions.d.ts +1 -1
  68. package/dist/exec/bridge/human-answers.d.ts +1 -1
  69. package/dist/exec/bridge/human-answers.js +1 -1
  70. package/dist/exec/bridge/protocol.d.ts +1 -1
  71. package/dist/exec/bridge/server.js +1 -1
  72. package/dist/exec/events.d.ts +2 -2
  73. package/dist/exec/index.d.ts +1 -1
  74. package/dist/exec/index.js +1 -1
  75. package/dist/exec/permission.js +1 -1
  76. package/dist/exec/runner.d.ts +3 -3
  77. package/dist/exec/runner.js +2 -2
  78. package/dist/exec/threads/runtime.js +1 -1
  79. package/dist/fast/digest.d.ts +1 -1
  80. package/dist/fast/digest.js +1 -1
  81. package/dist/fast/frames.d.ts +1 -1
  82. package/dist/fast/frames.js +1 -1
  83. package/dist/fast/prompt.d.ts +1 -1
  84. package/dist/fast/prompt.js +1 -1
  85. package/dist/fast/review-call.js +1 -1
  86. package/dist/fast/reviewer.d.ts +3 -3
  87. package/dist/fast/reviewer.js +1 -1
  88. package/dist/fast/summary-call.d.ts +3 -3
  89. package/dist/fast/summary-call.js +2 -2
  90. package/dist/fast/summary-prompt.d.ts +1 -1
  91. package/dist/fast/summary-prompt.js +1 -1
  92. package/dist/fast/wiring.d.ts +4 -4
  93. package/dist/fast/wiring.js +1 -1
  94. package/dist/governance/card-normalize.d.ts +1 -1
  95. package/dist/governance/copy.d.ts +1 -1
  96. package/dist/governance/copy.js +2 -2
  97. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  98. package/dist/governance/engine/budget.d.ts +1 -1
  99. package/dist/governance/engine/budget.js +1 -1
  100. package/dist/governance/engine/cards.d.ts +1 -1
  101. package/dist/governance/engine/digest.js +1 -1
  102. package/dist/governance/engine/engine-core.d.ts +5 -5
  103. package/dist/governance/engine/engine-core.js +1 -1
  104. package/dist/governance/engine/engine.d.ts +1 -1
  105. package/dist/governance/engine/engine.js +1 -1
  106. package/dist/governance/engine/estimate.d.ts +1 -1
  107. package/dist/governance/engine/estimate.js +1 -1
  108. package/dist/governance/engine/inspector.js +2 -2
  109. package/dist/governance/engine/integration.d.ts +1 -1
  110. package/dist/governance/engine/lifecycle.d.ts +1 -1
  111. package/dist/governance/engine/lifecycle.js +1 -1
  112. package/dist/governance/engine/phase-members.d.ts +1 -1
  113. package/dist/governance/engine/phase-planner.d.ts +1 -1
  114. package/dist/governance/engine/phase-planner.js +1 -1
  115. package/dist/governance/engine/rebuild.d.ts +1 -1
  116. package/dist/governance/engine/report.d.ts +1 -1
  117. package/dist/governance/engine/report.js +1 -1
  118. package/dist/governance/engine/run-digest.d.ts +1 -1
  119. package/dist/governance/engine/spec-builder.d.ts +2 -2
  120. package/dist/governance/engine/spec-builder.js +2 -2
  121. package/dist/governance/engine/stage-runner.js +2 -2
  122. package/dist/governance/engine/start-input.d.ts +1 -1
  123. package/dist/governance/engine/start-input.js +1 -1
  124. package/dist/governance/engine/state-machine.d.ts +1 -1
  125. package/dist/governance/engine/state-machine.js +3 -3
  126. package/dist/governance/engine/submission-queries.d.ts +1 -1
  127. package/dist/governance/engine/submission-render.d.ts +1 -1
  128. package/dist/governance/engine/submissions.d.ts +1 -1
  129. package/dist/governance/engine/submissions.js +1 -1
  130. package/dist/governance/engine/visibility.d.ts +1 -1
  131. package/dist/governance/engine/visibility.js +1 -1
  132. package/dist/governance/posture-transition.d.ts +2 -2
  133. package/dist/governance/posture-transition.js +1 -1
  134. package/dist/governance/profiles.d.ts +1 -1
  135. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  136. package/dist/governance/prompts/orchestrator-block.js +2 -2
  137. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  138. package/dist/governance/prompts/plan-addendum.js +1 -1
  139. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  140. package/dist/governance/prompts/role-blocks.js +1 -1
  141. package/dist/governance/report-reader.js +1 -1
  142. package/dist/governance/roles.d.ts +1 -1
  143. package/dist/governance/rules/claims.d.ts +1 -1
  144. package/dist/governance/rules/claims.js +1 -1
  145. package/dist/governance/rules/elimination.d.ts +1 -1
  146. package/dist/governance/rules/elimination.js +1 -1
  147. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  148. package/dist/governance/rules/failure-analysis.js +1 -1
  149. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  150. package/dist/governance/rules/ledger-state.d.ts +1 -1
  151. package/dist/governance/rules/ledger-state.js +1 -1
  152. package/dist/governance/rules/ledger.d.ts +2 -2
  153. package/dist/governance/rules/ledger.js +2 -2
  154. package/dist/governance/rules/rca.d.ts +1 -1
  155. package/dist/governance/rules/rca.js +1 -1
  156. package/dist/governance/rules/settlement.d.ts +2 -2
  157. package/dist/governance/rules/settlement.js +2 -2
  158. package/dist/governance/rules/suspicion.d.ts +1 -1
  159. package/dist/governance/store/artifacts.d.ts +1 -1
  160. package/dist/governance/store/artifacts.js +1 -1
  161. package/dist/governance/store/events-log.d.ts +1 -1
  162. package/dist/governance/store/run-store.d.ts +1 -1
  163. package/dist/governance/store/run-store.js +1 -1
  164. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  165. package/dist/governance/tools/child-tools.d.ts +1 -1
  166. package/dist/governance/tools/guard.d.ts +1 -1
  167. package/dist/governance/tools/guard.js +1 -1
  168. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  169. package/dist/governance/tools/inspector-tools.js +2 -2
  170. package/dist/governance/tools/lead-tools.d.ts +1 -1
  171. package/dist/governance/tools/lead-tools.js +1 -1
  172. package/dist/governance/tools/normalize-util.js +1 -1
  173. package/dist/governance/tools/scan-incomplete.js +1 -1
  174. package/dist/governance/tools/shared-tools.d.ts +1 -1
  175. package/dist/governance/tools/shared-tools.js +1 -1
  176. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  177. package/dist/governance/tools/submit-normalizers.js +1 -1
  178. package/dist/governance/tools/submit-tools.d.ts +1 -1
  179. package/dist/logging/cli-commands.js +1 -1
  180. package/dist/logging/install.d.ts +1 -1
  181. package/dist/logging/install.js +3 -3
  182. package/dist/logging/logger.d.ts +2 -2
  183. package/dist/logging/logger.js +31 -2
  184. package/dist/proc/kill-tree.js +1 -1
  185. package/dist/proc/log-mirror.js +1 -1
  186. package/dist/proc/log-ring.js +2 -2
  187. package/dist/proc/notices.d.ts +1 -1
  188. package/dist/proc/notices.js +2 -2
  189. package/dist/proc/prompt.d.ts +1 -1
  190. package/dist/proc/prompt.js +8 -5
  191. package/dist/proc/readiness.js +1 -1
  192. package/dist/proc/supervisor.d.ts +1 -1
  193. package/dist/proc/supervisor.js +10 -4
  194. package/dist/proc/wait-plan.d.ts +39 -0
  195. package/dist/proc/wait-plan.js +77 -0
  196. package/dist/proc/wait.d.ts +37 -4
  197. package/dist/proc/wait.js +68 -5
  198. package/dist/prompts/command.d.ts +1 -1
  199. package/dist/prompts/command.js +1 -1
  200. package/dist/prompts/normalize.d.ts +1 -1
  201. package/dist/prompts/normalize.js +1 -1
  202. package/dist/prompts/resolve.d.ts +1 -1
  203. package/dist/prompts/store.d.ts +2 -12
  204. package/dist/prompts/store.js +6 -60
  205. package/dist/session/checkpoint.d.ts +2 -2
  206. package/dist/session/checkpoint.js +2 -0
  207. package/dist/session/clear-archive.d.ts +2 -2
  208. package/dist/session/persist.d.ts +2 -2
  209. package/dist/session/persist.js +20 -3
  210. package/dist/session/startup-session.d.ts +2 -2
  211. package/dist/session/validate-session.js +6 -3
  212. package/dist/skills/service.d.ts +2 -2
  213. package/dist/team/bus.d.ts +1 -1
  214. package/dist/team/bus.js +1 -1
  215. package/dist/team/child-reviewer.d.ts +2 -2
  216. package/dist/team/child-reviewer.js +1 -1
  217. package/dist/team/comm-tools.js +1 -1
  218. package/dist/team/dispatch-gate.js +1 -1
  219. package/dist/team/forced-dispatch.js +1 -1
  220. package/dist/team/forced-mode.d.ts +1 -1
  221. package/dist/team/forced-prompt.d.ts +1 -1
  222. package/dist/team/forced-prompt.js +1 -1
  223. package/dist/team/normalize.d.ts +1 -1
  224. package/dist/team/normalize.js +1 -1
  225. package/dist/team/overseer.d.ts +3 -3
  226. package/dist/team/overseer.js +3 -3
  227. package/dist/team/prompt.d.ts +1 -1
  228. package/dist/team/prompt.js +1 -1
  229. package/dist/team/report.d.ts +2 -2
  230. package/dist/team/report.js +2 -2
  231. package/dist/team/retry.d.ts +1 -1
  232. package/dist/team/retry.js +1 -1
  233. package/dist/team/runtime.d.ts +4 -4
  234. package/dist/team/runtime.js +2 -2
  235. package/dist/team/settled.d.ts +2 -2
  236. package/dist/team/subagent.d.ts +4 -4
  237. package/dist/team/subagent.js +5 -5
  238. package/dist/team/task-tool.d.ts +1 -1
  239. package/dist/team/task-tool.js +1 -1
  240. package/dist/todo/normalize.d.ts +1 -1
  241. package/dist/todo/normalize.js +1 -1
  242. package/dist/todo/prompt.d.ts +1 -1
  243. package/dist/todo/prompt.js +1 -1
  244. package/dist/todo/store.d.ts +1 -1
  245. package/dist/todo/store.js +2 -2
  246. package/dist/todo/todo-tool.d.ts +1 -1
  247. package/dist/todo/todo-tool.js +2 -2
  248. package/dist/tools/bash-tool.d.ts +1 -1
  249. package/dist/tools/bash-tool.js +2 -2
  250. package/dist/tools/diff.d.ts +1 -1
  251. package/dist/tools/diff.js +1 -1
  252. package/dist/tools/file-change-store.d.ts +1 -1
  253. package/dist/tools/fs-tools.d.ts +2 -2
  254. package/dist/tools/fs-tools.js +1 -1
  255. package/dist/tools/index.d.ts +3 -3
  256. package/dist/tools/index.js +1 -1
  257. package/dist/tools/job-tools.d.ts +14 -3
  258. package/dist/tools/job-tools.js +158 -35
  259. package/dist/tools/plan-tools.d.ts +1 -1
  260. package/dist/tools/plan-tools.js +1 -1
  261. package/dist/tools/proc-tools.d.ts +1 -1
  262. package/dist/tools/proc-tools.js +2 -2
  263. package/dist/update/classify-failure.d.ts +1 -1
  264. package/dist/update/install-lock.js +1 -1
  265. package/dist/update/install-source.d.ts +1 -1
  266. package/dist/update/installer.js +2 -2
  267. package/dist/update/npm-view.d.ts +1 -1
  268. package/dist/update/npm-view.js +1 -1
  269. package/dist/update/registry.d.ts +1 -1
  270. package/dist/update/registry.js +1 -1
  271. package/dist/update/service.d.ts +2 -2
  272. package/dist/update/service.js +2 -2
  273. package/package.json +7 -7
  274. package/dist/agent/agent-mode.d.ts +0 -108
  275. package/dist/agent/agent-mode.js +0 -121
  276. package/dist/agent/entry-limits.d.ts +0 -65
  277. package/dist/agent/entry-limits.js +0 -133
  278. package/dist/agent/governance-view.d.ts +0 -40
  279. package/dist/agent/governance-view.js +0 -40
  280. package/dist/agent/invocation-card.d.ts +0 -77
  281. package/dist/agent/invocation-card.js +0 -169
  282. package/dist/agent/model-probe-limits.d.ts +0 -39
  283. package/dist/agent/model-probe-limits.js +0 -25
  284. package/dist/agent/model-probe.d.ts +0 -104
  285. package/dist/agent/model-probe.js +0 -391
  286. package/dist/agent/queued-messages.d.ts +0 -23
  287. package/dist/agent/queued-messages.js +0 -49
  288. package/dist/agent/reducer.d.ts +0 -837
  289. package/dist/agent/reducer.js +0 -1617
  290. package/dist/agent/retry-view.d.ts +0 -68
  291. package/dist/agent/retry-view.js +0 -95
  292. package/dist/agent/usage.d.ts +0 -47
  293. package/dist/agent/usage.js +0 -84
  294. package/dist/compaction/limits.d.ts +0 -61
  295. package/dist/compaction/limits.js +0 -64
  296. package/dist/compaction/meter.d.ts +0 -276
  297. package/dist/compaction/meter.js +0 -512
  298. package/dist/compaction/pressure.d.ts +0 -163
  299. package/dist/compaction/pressure.js +0 -199
  300. package/dist/compaction/reason-text.d.ts +0 -36
  301. package/dist/compaction/reason-text.js +0 -78
  302. package/dist/compaction/types.d.ts +0 -360
  303. package/dist/compaction/types.js +0 -22
  304. package/dist/config/governance-config.d.ts +0 -125
  305. package/dist/config/governance-config.js +0 -164
  306. package/dist/config/kit-resolution.d.ts +0 -93
  307. package/dist/config/kit-resolution.js +0 -226
  308. package/dist/config/model-kits.d.ts +0 -225
  309. package/dist/config/model-kits.js +0 -302
  310. package/dist/config/model-profile-resolution.d.ts +0 -28
  311. package/dist/config/model-profile-resolution.js +0 -88
  312. package/dist/config/model-profiles.d.ts +0 -103
  313. package/dist/config/model-profiles.js +0 -188
  314. package/dist/config/schema.d.ts +0 -1645
  315. package/dist/config/schema.js +0 -1377
  316. package/dist/fast/limits.d.ts +0 -152
  317. package/dist/fast/limits.js +0 -152
  318. package/dist/fast/resolve.d.ts +0 -44
  319. package/dist/fast/resolve.js +0 -107
  320. package/dist/fast/task-summary-types.d.ts +0 -66
  321. package/dist/fast/task-summary-types.js +0 -17
  322. package/dist/fast/types.d.ts +0 -141
  323. package/dist/fast/types.js +0 -14
  324. package/dist/governance/governed-dispatch.d.ts +0 -19
  325. package/dist/governance/governed-dispatch.js +0 -17
  326. package/dist/governance/limits.d.ts +0 -107
  327. package/dist/governance/limits.js +0 -131
  328. package/dist/governance/posture.d.ts +0 -35
  329. package/dist/governance/posture.js +0 -59
  330. package/dist/governance/rules/events-table.d.ts +0 -46
  331. package/dist/governance/rules/events-table.js +0 -94
  332. package/dist/governance/types.d.ts +0 -661
  333. package/dist/governance/types.js +0 -27
  334. package/dist/input/control-sequences.d.ts +0 -71
  335. package/dist/input/control-sequences.js +0 -222
  336. package/dist/input/csiu-keys.d.ts +0 -66
  337. package/dist/input/csiu-keys.js +0 -181
  338. package/dist/input/cursor-report.d.ts +0 -61
  339. package/dist/input/cursor-report.js +0 -97
  340. package/dist/input/enter-sequences.d.ts +0 -64
  341. package/dist/input/enter-sequences.js +0 -153
  342. package/dist/input/interrupt-gesture.d.ts +0 -18
  343. package/dist/input/interrupt-gesture.js +0 -19
  344. package/dist/input/keyboard-enhancement.d.ts +0 -42
  345. package/dist/input/keyboard-enhancement.js +0 -65
  346. package/dist/input/keymap.d.ts +0 -20
  347. package/dist/input/keymap.js +0 -99
  348. package/dist/input/limits.d.ts +0 -118
  349. package/dist/input/limits.js +0 -109
  350. package/dist/input/mouse-events.d.ts +0 -87
  351. package/dist/input/mouse-events.js +0 -212
  352. package/dist/input/paste-parse.d.ts +0 -83
  353. package/dist/input/paste-parse.js +0 -107
  354. package/dist/input/pointer-router.d.ts +0 -11
  355. package/dist/input/pointer-router.js +0 -14
  356. package/dist/input/stdin-filter.d.ts +0 -112
  357. package/dist/input/stdin-filter.js +0 -657
  358. package/dist/input/win32-input-mode.d.ts +0 -61
  359. package/dist/input/win32-input-mode.js +0 -269
  360. package/dist/logging/levels.d.ts +0 -40
  361. package/dist/logging/levels.js +0 -59
  362. package/dist/logging/secret-registry.d.ts +0 -32
  363. package/dist/logging/secret-registry.js +0 -73
  364. package/dist/proc/limits.d.ts +0 -200
  365. package/dist/proc/limits.js +0 -207
  366. package/dist/proc/progress.d.ts +0 -40
  367. package/dist/proc/progress.js +0 -135
  368. package/dist/proc/types.d.ts +0 -263
  369. package/dist/proc/types.js +0 -15
  370. package/dist/prompts/copy.d.ts +0 -89
  371. package/dist/prompts/copy.js +0 -131
  372. package/dist/prompts/fill.d.ts +0 -51
  373. package/dist/prompts/fill.js +0 -46
  374. package/dist/prompts/limits.d.ts +0 -53
  375. package/dist/prompts/limits.js +0 -53
  376. package/dist/prompts/search.d.ts +0 -58
  377. package/dist/prompts/search.js +0 -146
  378. package/dist/prompts/types.d.ts +0 -204
  379. package/dist/prompts/types.js +0 -13
  380. package/dist/team/activity.d.ts +0 -67
  381. package/dist/team/activity.js +0 -130
  382. package/dist/team/limits.d.ts +0 -308
  383. package/dist/team/limits.js +0 -330
  384. package/dist/team/model.d.ts +0 -104
  385. package/dist/team/model.js +0 -150
  386. package/dist/team/panel-rows.d.ts +0 -48
  387. package/dist/team/panel-rows.js +0 -75
  388. package/dist/team/timeline.d.ts +0 -74
  389. package/dist/team/timeline.js +0 -101
  390. package/dist/team/types.d.ts +0 -354
  391. package/dist/team/types.js +0 -13
  392. package/dist/todo/acceptance.d.ts +0 -120
  393. package/dist/todo/acceptance.js +0 -399
  394. package/dist/todo/follow-through.d.ts +0 -138
  395. package/dist/todo/follow-through.js +0 -248
  396. package/dist/todo/limits.d.ts +0 -152
  397. package/dist/todo/limits.js +0 -152
  398. package/dist/todo/panel-rows.d.ts +0 -45
  399. package/dist/todo/panel-rows.js +0 -70
  400. package/dist/todo/plan-sections.d.ts +0 -60
  401. package/dist/todo/plan-sections.js +0 -108
  402. package/dist/todo/row-window.d.ts +0 -51
  403. package/dist/todo/row-window.js +0 -107
  404. package/dist/todo/types.d.ts +0 -124
  405. package/dist/todo/types.js +0 -12
  406. package/dist/tools/human-input.d.ts +0 -212
  407. package/dist/tools/human-input.js +0 -265
  408. package/dist/tools/patch.d.ts +0 -115
  409. package/dist/tools/patch.js +0 -453
  410. package/dist/tools/terminal-output.d.ts +0 -115
  411. package/dist/tools/terminal-output.js +0 -201
  412. package/dist/tools/tool-output-store.d.ts +0 -68
  413. package/dist/tools/tool-output-store.js +0 -102
  414. package/dist/ui/ActivityLine.d.ts +0 -26
  415. package/dist/ui/ActivityLine.js +0 -48
  416. package/dist/ui/AutocompletePopup.d.ts +0 -23
  417. package/dist/ui/AutocompletePopup.js +0 -17
  418. package/dist/ui/BottomStatusRow.d.ts +0 -10
  419. package/dist/ui/BottomStatusRow.js +0 -9
  420. package/dist/ui/Composer.d.ts +0 -115
  421. package/dist/ui/Composer.js +0 -64
  422. package/dist/ui/GovernancePanel.d.ts +0 -50
  423. package/dist/ui/GovernancePanel.js +0 -77
  424. package/dist/ui/GovernanceRun.d.ts +0 -18
  425. package/dist/ui/GovernanceRun.js +0 -11
  426. package/dist/ui/Header.d.ts +0 -48
  427. package/dist/ui/Header.js +0 -27
  428. package/dist/ui/Logo.d.ts +0 -32
  429. package/dist/ui/Logo.js +0 -65
  430. package/dist/ui/Markdown.d.ts +0 -29
  431. package/dist/ui/Markdown.js +0 -116
  432. package/dist/ui/PromptCaret.d.ts +0 -11
  433. package/dist/ui/PromptCaret.js +0 -31
  434. package/dist/ui/PromptInput.d.ts +0 -192
  435. package/dist/ui/PromptInput.js +0 -689
  436. package/dist/ui/QueuePanel.d.ts +0 -8
  437. package/dist/ui/QueuePanel.js +0 -9
  438. package/dist/ui/QueueStatusRow.d.ts +0 -24
  439. package/dist/ui/QueueStatusRow.js +0 -51
  440. package/dist/ui/ScrollbackShell.d.ts +0 -132
  441. package/dist/ui/ScrollbackShell.js +0 -26
  442. package/dist/ui/SessionOpener.d.ts +0 -30
  443. package/dist/ui/SessionOpener.js +0 -12
  444. package/dist/ui/StatusBar.d.ts +0 -129
  445. package/dist/ui/StatusBar.js +0 -61
  446. package/dist/ui/TeamPanel.d.ts +0 -76
  447. package/dist/ui/TeamPanel.js +0 -103
  448. package/dist/ui/ToastStack.d.ts +0 -8
  449. package/dist/ui/ToastStack.js +0 -31
  450. package/dist/ui/TodoPanel.d.ts +0 -52
  451. package/dist/ui/TodoPanel.js +0 -214
  452. package/dist/ui/Transcript.d.ts +0 -105
  453. package/dist/ui/Transcript.js +0 -251
  454. package/dist/ui/UpdateLine.d.ts +0 -44
  455. package/dist/ui/UpdateLine.js +0 -129
  456. package/dist/ui/activity-phrases.d.ts +0 -33
  457. package/dist/ui/activity-phrases.js +0 -50
  458. package/dist/ui/capabilities.d.ts +0 -27
  459. package/dist/ui/capabilities.js +0 -65
  460. package/dist/ui/clipboard-task.d.ts +0 -29
  461. package/dist/ui/clipboard-task.js +0 -66
  462. package/dist/ui/clipboard.d.ts +0 -31
  463. package/dist/ui/clipboard.js +0 -157
  464. package/dist/ui/color-runtime.d.ts +0 -5
  465. package/dist/ui/color-runtime.js +0 -29
  466. package/dist/ui/composer-input.d.ts +0 -38
  467. package/dist/ui/composer-input.js +0 -79
  468. package/dist/ui/composer-limits.d.ts +0 -30
  469. package/dist/ui/composer-limits.js +0 -45
  470. package/dist/ui/composer-rows.d.ts +0 -73
  471. package/dist/ui/composer-rows.js +0 -129
  472. package/dist/ui/console-bridge.d.ts +0 -19
  473. package/dist/ui/console-bridge.js +0 -52
  474. package/dist/ui/density.d.ts +0 -26
  475. package/dist/ui/density.js +0 -34
  476. package/dist/ui/display-tab.d.ts +0 -51
  477. package/dist/ui/display-tab.js +0 -82
  478. package/dist/ui/editor-navigation.d.ts +0 -55
  479. package/dist/ui/editor-navigation.js +0 -96
  480. package/dist/ui/editor-reducer.d.ts +0 -108
  481. package/dist/ui/editor-reducer.js +0 -187
  482. package/dist/ui/enter-frames.d.ts +0 -47
  483. package/dist/ui/enter-frames.js +0 -117
  484. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  485. package/dist/ui/entries/AssistantEntry.js +0 -43
  486. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  487. package/dist/ui/entries/CompactionCard.js +0 -222
  488. package/dist/ui/entries/DiffView.d.ts +0 -61
  489. package/dist/ui/entries/DiffView.js +0 -103
  490. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  491. package/dist/ui/entries/EntryFrame.js +0 -6
  492. package/dist/ui/entries/FastCard.d.ts +0 -53
  493. package/dist/ui/entries/FastCard.js +0 -105
  494. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  495. package/dist/ui/entries/GovernanceCard.js +0 -32
  496. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  497. package/dist/ui/entries/InvocationCard.js +0 -32
  498. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  499. package/dist/ui/entries/QueuedEntry.js +0 -33
  500. package/dist/ui/entries/RetryCard.d.ts +0 -56
  501. package/dist/ui/entries/RetryCard.js +0 -60
  502. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  503. package/dist/ui/entries/ServiceCard.js +0 -151
  504. package/dist/ui/entries/TeamCard.d.ts +0 -55
  505. package/dist/ui/entries/TeamCard.js +0 -94
  506. package/dist/ui/entries/TodoCard.d.ts +0 -54
  507. package/dist/ui/entries/TodoCard.js +0 -98
  508. package/dist/ui/entries/ToolCard.d.ts +0 -81
  509. package/dist/ui/entries/ToolCard.js +0 -160
  510. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  511. package/dist/ui/entries/ToolPreview.js +0 -208
  512. package/dist/ui/entries/UserEntry.d.ts +0 -36
  513. package/dist/ui/entries/UserEntry.js +0 -57
  514. package/dist/ui/exit-snapshot.d.ts +0 -43
  515. package/dist/ui/exit-snapshot.js +0 -26
  516. package/dist/ui/frame-differ.d.ts +0 -166
  517. package/dist/ui/frame-differ.js +0 -354
  518. package/dist/ui/frame-observer.d.ts +0 -17
  519. package/dist/ui/frame-observer.js +0 -94
  520. package/dist/ui/frame-parser.d.ts +0 -7
  521. package/dist/ui/frame-parser.js +0 -18
  522. package/dist/ui/gauge.d.ts +0 -39
  523. package/dist/ui/gauge.js +0 -55
  524. package/dist/ui/glyphs.d.ts +0 -178
  525. package/dist/ui/glyphs.js +0 -165
  526. package/dist/ui/governance-copy.d.ts +0 -69
  527. package/dist/ui/governance-copy.js +0 -104
  528. package/dist/ui/governance-status.d.ts +0 -145
  529. package/dist/ui/governance-status.js +0 -326
  530. package/dist/ui/gradient.d.ts +0 -11
  531. package/dist/ui/gradient.js +0 -50
  532. package/dist/ui/ink-runtime.d.ts +0 -4
  533. package/dist/ui/ink-runtime.js +0 -51
  534. package/dist/ui/interaction-copy.d.ts +0 -82
  535. package/dist/ui/interaction-copy.js +0 -38
  536. package/dist/ui/interaction-hints.d.ts +0 -44
  537. package/dist/ui/interaction-hints.js +0 -97
  538. package/dist/ui/layout/AppShell.d.ts +0 -17
  539. package/dist/ui/layout/AppShell.js +0 -6
  540. package/dist/ui/layout/Gutter.d.ts +0 -67
  541. package/dist/ui/layout/Gutter.js +0 -42
  542. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  543. package/dist/ui/layout/MeasuredEntry.js +0 -30
  544. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  545. package/dist/ui/layout/OverlayFrame.js +0 -110
  546. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  547. package/dist/ui/layout/ScrollIndicator.js +0 -22
  548. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  549. package/dist/ui/layout/ScrollViewport.js +0 -222
  550. package/dist/ui/layout/agents-board.d.ts +0 -102
  551. package/dist/ui/layout/agents-board.js +0 -389
  552. package/dist/ui/layout/autocomplete.d.ts +0 -18
  553. package/dist/ui/layout/autocomplete.js +0 -26
  554. package/dist/ui/layout/budget.d.ts +0 -43
  555. package/dist/ui/layout/budget.js +0 -52
  556. package/dist/ui/layout/cells.d.ts +0 -61
  557. package/dist/ui/layout/cells.js +0 -156
  558. package/dist/ui/layout/document-layout.d.ts +0 -13
  559. package/dist/ui/layout/document-layout.js +0 -10
  560. package/dist/ui/layout/follow-state.d.ts +0 -138
  561. package/dist/ui/layout/follow-state.js +0 -148
  562. package/dist/ui/layout/frame.d.ts +0 -36
  563. package/dist/ui/layout/frame.js +0 -39
  564. package/dist/ui/layout/governance-board.d.ts +0 -121
  565. package/dist/ui/layout/governance-board.js +0 -382
  566. package/dist/ui/layout/governance-card.d.ts +0 -53
  567. package/dist/ui/layout/governance-card.js +0 -134
  568. package/dist/ui/layout/governance-chip.d.ts +0 -38
  569. package/dist/ui/layout/governance-chip.js +0 -64
  570. package/dist/ui/layout/governance-panel.d.ts +0 -85
  571. package/dist/ui/layout/governance-panel.js +0 -358
  572. package/dist/ui/layout/governance-roster.d.ts +0 -65
  573. package/dist/ui/layout/governance-roster.js +0 -275
  574. package/dist/ui/layout/header-hints.d.ts +0 -90
  575. package/dist/ui/layout/header-hints.js +0 -110
  576. package/dist/ui/layout/header-left.d.ts +0 -115
  577. package/dist/ui/layout/header-left.js +0 -206
  578. package/dist/ui/layout/invocation-card.d.ts +0 -41
  579. package/dist/ui/layout/invocation-card.js +0 -91
  580. package/dist/ui/layout/kit-chip.d.ts +0 -50
  581. package/dist/ui/layout/kit-chip.js +0 -81
  582. package/dist/ui/layout/overlay-window.d.ts +0 -43
  583. package/dist/ui/layout/overlay-window.js +0 -51
  584. package/dist/ui/layout/queue-layout.d.ts +0 -19
  585. package/dist/ui/layout/queue-layout.js +0 -26
  586. package/dist/ui/layout/rail.d.ts +0 -7
  587. package/dist/ui/layout/rail.js +0 -16
  588. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  589. package/dist/ui/layout/scroll-indicator.js +0 -36
  590. package/dist/ui/layout/scroll.d.ts +0 -37
  591. package/dist/ui/layout/scroll.js +0 -99
  592. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  593. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  594. package/dist/ui/layout/session-chip.d.ts +0 -52
  595. package/dist/ui/layout/session-chip.js +0 -64
  596. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  597. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  598. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  599. package/dist/ui/layout/status-detail-layout.js +0 -79
  600. package/dist/ui/layout/status-layout.d.ts +0 -139
  601. package/dist/ui/layout/status-layout.js +0 -253
  602. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  603. package/dist/ui/layout/task-summary-cell.js +0 -65
  604. package/dist/ui/layout/team-panel.d.ts +0 -18
  605. package/dist/ui/layout/team-panel.js +0 -25
  606. package/dist/ui/layout/team-row.d.ts +0 -139
  607. package/dist/ui/layout/team-row.js +0 -246
  608. package/dist/ui/layout/todo-layout.d.ts +0 -62
  609. package/dist/ui/layout/todo-layout.js +0 -102
  610. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  611. package/dist/ui/layout/useTerminalSize.js +0 -50
  612. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  613. package/dist/ui/layout/viewport-geometry.js +0 -28
  614. package/dist/ui/layout/virtual-window.d.ts +0 -112
  615. package/dist/ui/layout/virtual-window.js +0 -488
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -61
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -118
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -24,10 +24,10 @@
24
24
  * `update/`.
25
25
  */
26
26
  import type { ScopedLogger } from '../logging/logger.js';
27
- import type { UpdateConfig } from '../config/schema.js';
27
+ import type { UpdateConfig } from '@aragon-agent/tui/model/config/schema';
28
28
  import { type NpmViewDeps } from './npm-view.js';
29
29
  import { type InstallDeps, type SpawnImpl } from './installer.js';
30
- import type { InstallSource, UpdateCommandPort, UpdateSnapshot } from './types.js';
30
+ import type { InstallSource, UpdateCommandPort, UpdateSnapshot } from '@aragon-agent/tui/model/update/types';
31
31
  /** A timer handle we only ever cancel and `unref`. */
32
32
  interface TimerHandle {
33
33
  unref?: () => void;
@@ -27,10 +27,10 @@ import process from 'node:process';
27
27
  import { getLogger } from '../logging/logger.js';
28
28
  import { adviceFor, classifyInstallSource, isAutoInstallable, isReportableSource, probeWritable, readSelfManifest, selfPackageRoot, } from './install-source.js';
29
29
  import { classifyInstallFailure } from './classify-failure.js';
30
- import { UPDATE_LIMITS } from './limits.js';
30
+ import { UPDATE_LIMITS } from '@aragon-agent/tui/model/update/limits';
31
31
  import { fetchLatestViaNpm } from './npm-view.js';
32
32
  import { fetchLatestManifest, resolveRegistryUrl } from './registry.js';
33
- import { decideUpdate, STRICT_VERSION_RE } from './semver.js';
33
+ import { decideUpdate, STRICT_VERSION_RE } from '@aragon-agent/tui/model/update/semver';
34
34
  import { tryAcquireInstallLock } from './install-lock.js';
35
35
  import { runNpmInstall } from './installer.js';
36
36
  import { readUpdateState, updateUpdateState } from './state.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aragon-agent/cli",
3
- "version": "0.6.46",
3
+ "version": "0.6.48",
4
4
  "description": "AragonAgent CLI — a Claude-Code / Codex-style interactive terminal UI (TUI) on top of the @aragon-agent/core engine. Installable and runnable via npm / npx.",
5
5
  "license": "MIT",
6
6
  "author": "AragonAgent contributors",
@@ -48,33 +48,33 @@
48
48
  "access": "public"
49
49
  },
50
50
  "scripts": {
51
- "build": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json && node scripts/prepend-shebang.mjs",
51
+ "build": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json && node scripts/prepend-shebang.mjs && node ../../scripts/ensure-built.mjs --stamp cli",
52
52
  "dev": "tsc -p tsconfig.json --watch",
53
+ "pretypecheck": "node ../../scripts/ensure-built.mjs core tui",
53
54
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit",
55
+ "pretest": "node ../../scripts/ensure-built.mjs core tui",
54
56
  "test": "vitest run",
55
57
  "start": "node dist/cli.js",
56
58
  "prepublishOnly": "npm run build"
57
59
  },
58
60
  "dependencies": {
59
- "@aragon-agent/core": "^0.2.58",
60
- "chalk": "^5.6.2",
61
- "cli-highlight": "^2.0.0",
61
+ "@aragon-agent/core": "^0.2.60",
62
+ "@aragon-agent/tui": "0.0.1",
62
63
  "commander": "^12.1.0",
63
64
  "dotenv": "^16.6.1",
64
65
  "env-paths": "^3.0.0",
65
66
  "fflate": "^0.8.3",
66
67
  "ink": "^5.0.1",
67
68
  "ink-select-input": "^6.0.0",
68
- "ink-spinner": "^5.0.0",
69
69
  "react": "^18.3.1",
70
70
  "string-width": "^7.2.0",
71
- "strip-ansi": "^7.1.0",
72
71
  "tinyglobby": "^0.2.17"
73
72
  },
74
73
  "devDependencies": {
75
74
  "@types/node": "^22.0.0",
76
75
  "@types/react": "^18.3.0",
77
76
  "ink-testing-library": "^4.0.0",
77
+ "strip-ansi": "^7.1.0",
78
78
  "typescript": "^5.9.3",
79
79
  "vitest": "4.1.9"
80
80
  }
@@ -1,108 +0,0 @@
1
- /**
2
- * Agent mode vocabulary (plan-mode §5.1).
3
- *
4
- * Pure: no React, no I/O, no `node:*`. Imported by the controller, the tool
5
- * gate, the prompt builder, the slash command and four UI components, which is
6
- * exactly why it must stay free of every one of their dependencies.
7
- *
8
- * `PLAN_MODE_BLOCKED_TOOLS` is deliberately NOT here. It lives in
9
- * `tools/index.ts` beside `SKILL_TOOL_FLOOR`, because the invariant worth having
10
- * is that the two sets PARTITION `HOST_TOOL_NAMES` — and a partition test is
11
- * only as trustworthy as the distance between the two definitions. This file
12
- * owns the mode vocabulary; that file owns which tools the modes act on.
13
- *
14
- * ASCII ONLY in every string literal below. `agent/` is inside the glyph
15
- * scanner's scope (`glyphs.test.ts`), so a stray ellipsis here fails the build —
16
- * which is why `OTHER_OPTION_LABEL` is a bare word and the ellipsis is appended
17
- * at render time from `glyphs.ellipsis`.
18
- */
19
- export type AgentMode = 'build' | 'plan';
20
- export declare const AGENT_MODES: readonly AgentMode[];
21
- /** The user-visible word for each mode. English, per the repo convention. */
22
- export declare const MODE_LABEL: Record<AgentMode, string>;
23
- /**
24
- * The next mode in the cycle.
25
- *
26
- * Written as a cycle rather than a boolean flip so that adding Claude Code's
27
- * "auto-accept edits" as a third posture is a one-line change to `AGENT_MODES`
28
- * and nothing else. Two ship today (§1 non-goals).
29
- */
30
- export declare function nextMode(current: AgentMode): AgentMode;
31
- /**
32
- * The keys that toggle the mode, as the user sees them written
33
- * (shift-tab-mode-toggle-still-dead-on-windows, C2).
34
- *
35
- * `fallback` exists because `primary` CANNOT be made to work everywhere. On a
36
- * Windows console without `ENABLE_VIRTUAL_TERMINAL_INPUT`, libuv takes the
37
- * character branch for `VK_TAB` and drops the modifier wholesale, so `Shift+Tab`
38
- * and `Ctrl+Tab` both arrive as a bare `0x09` - byte-identical to `Tab`. C1
39
- * turns that bit back on where it can, but it has three known ways to fail that
40
- * are outside this package (an old conhost refusing the bit, a locked-down
41
- * PowerShell, a foreign process resetting the mode), so a rung that depends on
42
- * NOTHING has to exist underneath it.
43
- *
44
- * `ctrl+n` IS MEASURED, not guessed. On the lossy path it arrives as `0x0e`,
45
- * because Windows generates a real control character for `Ctrl+<letter>` and
46
- * libuv's character branch forwards it untouched; `Alt+M` produces no bytes at
47
- * all and `Ctrl+Tab` collapses exactly like `Shift+Tab` (analysis section 3.6).
48
- * Any idle `Ctrl+<letter>` in the `0x01-0x1A` range would work; this one is free
49
- * throughout the package - `keymap.ts` claims a/e/w/u/k, `App` claims c/g/k/l/o/r/t,
50
- * and `PromptInput` returns early on every `key.ctrl` - so binding it takes no
51
- * behaviour away from anyone. `Ctrl+B` survives the same path but is tmux's
52
- * default prefix, and this binding is unconditional and cross-platform, so it
53
- * would be silently dead for a whole class of macOS and Linux users.
54
- *
55
- * THIS KEY MOVED FROM `ctrl+p`, WHICH NOW OPENS THE PROMPT LIBRARY
56
- * (quick-prompt-library D-1). The requirement names `ctrl+p` as the first entry
57
- * to a feature users will build muscle memory for, and a key that is sometimes
58
- * the prompt library and sometimes the mode switch is a key nobody can learn.
59
- * `ctrl+n` was the only idle C0 byte left that survives the same lossy path, and
60
- * it carries no conflicting behaviour: readline's `next-history` is `Up`/`Down`
61
- * in this product.
62
- *
63
- * `^N` IS NOT AN ACCEPTABLE SPELLING OF IT, ANYWHERE. `^N` is already this
64
- * product's word for TRANSCRIPT LINE OFFSET - the header's scroll chip reads
65
- * `^<n>` and the help overlay has a `^N` row about the distance from the bottom -
66
- * while every other `^X` in the same row is a key. Writing the mode fallback as
67
- * `^N` would put two meanings of `^` on one line, so the header, the help
68
- * overlay, `doctor`, the README and the one-shot migration notice all spell out
69
- * `Ctrl+N`.
70
- *
71
- * BOUND UNCONDITIONALLY, on every platform. A binding that only exists where it
72
- * is needed cannot be documented in one place, cannot be taught by muscle
73
- * memory, and is missing on precisely the machine whose capability probe was
74
- * wrong.
75
- *
76
- * THESE ARE THE LABELS, NOT THE BINDING. Editing a value here changes only what
77
- * the user is TOLD to press - the hint row, the startup notice, `doctor`. The
78
- * key that is actually listened for is `input === 'n'` in `App`'s `useInput`,
79
- * and the help overlay and README spell both keys out in their own title case.
80
- * Change one without the others and the product advertises a key it ignores.
81
- */
82
- export declare const MODE_TOGGLE_KEYS: {
83
- readonly primary: "shift+tab";
84
- readonly fallback: "ctrl+n";
85
- };
86
- /** The two tools that only exist because a human is attached. */
87
- export declare const PLAN_TOOL_NAMES: readonly ["ask_user", "submit_plan"];
88
- /**
89
- * The synthetic free-text option appended to every question.
90
- *
91
- * Plain `Other`, with no ellipsis: this module is inside the glyph scanner's
92
- * scope, and the overlay appends `glyphs.ellipsis` itself so the label degrades
93
- * to `Other...` on a terminal without Unicode.
94
- */
95
- export declare const OTHER_OPTION_LABEL = "Other";
96
- /**
97
- * Why a mutating tool was refused in plan mode.
98
- *
99
- * The wording carries weight beyond politeness (§3.9). A run that flips
100
- * `build -> plan` mid-flight keeps its original system prompt to the end — the
101
- * loop reads `ctx.systemPrompt`, which was copied by value when the run
102
- * started — so for the rest of that run this refusal is the ONLY place the
103
- * model learns that plan mode is on. A bare "not permitted" reads as a tool
104
- * malfunction and gets retried.
105
- */
106
- export declare function planRefusal(tool: string): string;
107
- /** Why `submit_plan` was refused outside plan mode. */
108
- export declare function submitPlanRefusal(): string;
@@ -1,121 +0,0 @@
1
- /**
2
- * Agent mode vocabulary (plan-mode §5.1).
3
- *
4
- * Pure: no React, no I/O, no `node:*`. Imported by the controller, the tool
5
- * gate, the prompt builder, the slash command and four UI components, which is
6
- * exactly why it must stay free of every one of their dependencies.
7
- *
8
- * `PLAN_MODE_BLOCKED_TOOLS` is deliberately NOT here. It lives in
9
- * `tools/index.ts` beside `SKILL_TOOL_FLOOR`, because the invariant worth having
10
- * is that the two sets PARTITION `HOST_TOOL_NAMES` — and a partition test is
11
- * only as trustworthy as the distance between the two definitions. This file
12
- * owns the mode vocabulary; that file owns which tools the modes act on.
13
- *
14
- * ASCII ONLY in every string literal below. `agent/` is inside the glyph
15
- * scanner's scope (`glyphs.test.ts`), so a stray ellipsis here fails the build —
16
- * which is why `OTHER_OPTION_LABEL` is a bare word and the ellipsis is appended
17
- * at render time from `glyphs.ellipsis`.
18
- */
19
- export const AGENT_MODES = ['build', 'plan'];
20
- /** The user-visible word for each mode. English, per the repo convention. */
21
- export const MODE_LABEL = { build: 'BUILD', plan: 'PLAN' };
22
- /**
23
- * The next mode in the cycle.
24
- *
25
- * Written as a cycle rather than a boolean flip so that adding Claude Code's
26
- * "auto-accept edits" as a third posture is a one-line change to `AGENT_MODES`
27
- * and nothing else. Two ship today (§1 non-goals).
28
- */
29
- export function nextMode(current) {
30
- const index = AGENT_MODES.indexOf(current);
31
- return AGENT_MODES[(index + 1) % AGENT_MODES.length];
32
- }
33
- /**
34
- * The keys that toggle the mode, as the user sees them written
35
- * (shift-tab-mode-toggle-still-dead-on-windows, C2).
36
- *
37
- * `fallback` exists because `primary` CANNOT be made to work everywhere. On a
38
- * Windows console without `ENABLE_VIRTUAL_TERMINAL_INPUT`, libuv takes the
39
- * character branch for `VK_TAB` and drops the modifier wholesale, so `Shift+Tab`
40
- * and `Ctrl+Tab` both arrive as a bare `0x09` - byte-identical to `Tab`. C1
41
- * turns that bit back on where it can, but it has three known ways to fail that
42
- * are outside this package (an old conhost refusing the bit, a locked-down
43
- * PowerShell, a foreign process resetting the mode), so a rung that depends on
44
- * NOTHING has to exist underneath it.
45
- *
46
- * `ctrl+n` IS MEASURED, not guessed. On the lossy path it arrives as `0x0e`,
47
- * because Windows generates a real control character for `Ctrl+<letter>` and
48
- * libuv's character branch forwards it untouched; `Alt+M` produces no bytes at
49
- * all and `Ctrl+Tab` collapses exactly like `Shift+Tab` (analysis section 3.6).
50
- * Any idle `Ctrl+<letter>` in the `0x01-0x1A` range would work; this one is free
51
- * throughout the package - `keymap.ts` claims a/e/w/u/k, `App` claims c/g/k/l/o/r/t,
52
- * and `PromptInput` returns early on every `key.ctrl` - so binding it takes no
53
- * behaviour away from anyone. `Ctrl+B` survives the same path but is tmux's
54
- * default prefix, and this binding is unconditional and cross-platform, so it
55
- * would be silently dead for a whole class of macOS and Linux users.
56
- *
57
- * THIS KEY MOVED FROM `ctrl+p`, WHICH NOW OPENS THE PROMPT LIBRARY
58
- * (quick-prompt-library D-1). The requirement names `ctrl+p` as the first entry
59
- * to a feature users will build muscle memory for, and a key that is sometimes
60
- * the prompt library and sometimes the mode switch is a key nobody can learn.
61
- * `ctrl+n` was the only idle C0 byte left that survives the same lossy path, and
62
- * it carries no conflicting behaviour: readline's `next-history` is `Up`/`Down`
63
- * in this product.
64
- *
65
- * `^N` IS NOT AN ACCEPTABLE SPELLING OF IT, ANYWHERE. `^N` is already this
66
- * product's word for TRANSCRIPT LINE OFFSET - the header's scroll chip reads
67
- * `^<n>` and the help overlay has a `^N` row about the distance from the bottom -
68
- * while every other `^X` in the same row is a key. Writing the mode fallback as
69
- * `^N` would put two meanings of `^` on one line, so the header, the help
70
- * overlay, `doctor`, the README and the one-shot migration notice all spell out
71
- * `Ctrl+N`.
72
- *
73
- * BOUND UNCONDITIONALLY, on every platform. A binding that only exists where it
74
- * is needed cannot be documented in one place, cannot be taught by muscle
75
- * memory, and is missing on precisely the machine whose capability probe was
76
- * wrong.
77
- *
78
- * THESE ARE THE LABELS, NOT THE BINDING. Editing a value here changes only what
79
- * the user is TOLD to press - the hint row, the startup notice, `doctor`. The
80
- * key that is actually listened for is `input === 'n'` in `App`'s `useInput`,
81
- * and the help overlay and README spell both keys out in their own title case.
82
- * Change one without the others and the product advertises a key it ignores.
83
- */
84
- export const MODE_TOGGLE_KEYS = { primary: 'shift+tab', fallback: 'ctrl+n' };
85
- /** The two tools that only exist because a human is attached. */
86
- export const PLAN_TOOL_NAMES = ['ask_user', 'submit_plan'];
87
- /**
88
- * The synthetic free-text option appended to every question.
89
- *
90
- * Plain `Other`, with no ellipsis: this module is inside the glyph scanner's
91
- * scope, and the overlay appends `glyphs.ellipsis` itself so the label degrades
92
- * to `Other...` on a terminal without Unicode.
93
- */
94
- export const OTHER_OPTION_LABEL = 'Other';
95
- /** Read-only alternatives named in every refusal, so the model has somewhere to go. */
96
- const READ_ONLY_ALTERNATIVES = 'read_file / list_dir / glob / grep';
97
- /**
98
- * Why a mutating tool was refused in plan mode.
99
- *
100
- * The wording carries weight beyond politeness (§3.9). A run that flips
101
- * `build -> plan` mid-flight keeps its original system prompt to the end — the
102
- * loop reads `ctx.systemPrompt`, which was copied by value when the run
103
- * started — so for the rest of that run this refusal is the ONLY place the
104
- * model learns that plan mode is on. A bare "not permitted" reads as a tool
105
- * malfunction and gets retried.
106
- */
107
- export function planRefusal(tool) {
108
- const extra = tool === 'bash'
109
- ? ' bash is refused in full, including read-only commands like "git status":' +
110
- ' a shell string cannot be classified reliably, and a gate that is right' +
111
- ' most of the time is worse than one that is always right.'
112
- : '';
113
- return (`Plan mode is active, so ${tool} is refused.${extra}` +
114
- ` Use ${READ_ONLY_ALTERNATIVES} to research, then call submit_plan.` +
115
- ' Do not try to work around this; finish the plan instead.');
116
- }
117
- /** Why `submit_plan` was refused outside plan mode. */
118
- export function submitPlanRefusal() {
119
- return ('submit_plan is only available in Plan mode. You are in Build mode - ' +
120
- 'just do the work and summarize when you are done.');
121
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * Bounded view state (tui-render-performance L1 / R5).
3
- *
4
- * `ViewState.entries` used to grow without any ceiling: `argsRaw`, assistant
5
- * `text` and `thinking` all concatenated forever, and the entry array was never
6
- * trimmed. That makes the per-frame cost of the renderer proportional to the
7
- * total number of characters the session has ever produced, because Ink's
8
- * `renderNodeToOutput` walks and measures every mounted text node whether or not
9
- * `overflow: hidden` clips it.
10
- *
11
- * Two bounds live here, both pure and React-free:
12
- * - `appendBounded` caps one field by eliding its MIDDLE, and
13
- * - `trimEntries` ring-trims the entry array itself.
14
- *
15
- * ASCII ONLY. This module is produced outside `src/ui/**`, where no terminal
16
- * capabilities are available, so the elision marker has to be safe on a legacy
17
- * `cmd.exe` -- the same rule `PREVIEW_TRUNCATION_MARK` in `reducer.ts` records.
18
- */
19
- import type { Entry } from './reducer.js';
20
- export interface EntryLimits {
21
- /** Assistant answer text ceiling, in characters. */
22
- text: number;
23
- /** Assistant thinking ceiling. */
24
- thinking: number;
25
- /** Streamed tool-argument JSON ceiling. */
26
- argsRaw: number;
27
- }
28
- /**
29
- * The per-field ceilings.
30
- *
31
- * `text` is the generous one on purpose: a 256 KiB answer is already far past
32
- * anything a terminal can usefully show, and the middle is what gets elided, so
33
- * both the opening and the live cursor survive. `argsRaw` is the tight one --
34
- * it is a streamed JSON fragment rendered as a 60-character card summary, so
35
- * anything past a few KiB is invisible by construction.
36
- */
37
- export declare const ENTRY_LIMITS: EntryLimits;
38
- /** Marker inserted at the elision point. ASCII -- produced outside `src/ui/**`. */
39
- export declare const ELISION_MARK_PREFIX = "\n[... ";
40
- export declare const ELISION_MARK_SUFFIX = " characters elided ...]\n";
41
- /**
42
- * Append `delta` to `prev`, keeping the result at or below `cap` by eliding the
43
- * MIDDLE. Head and tail are both preserved: the head is the answer's opening,
44
- * the tail is where the cursor is. Idempotent -- re-eliding an already elided
45
- * string collapses the two markers into one.
46
- *
47
- * The returned string is NEVER longer than `cap` (AC-7). The marker's own digit
48
- * count is bounded before the tail budget is computed, so the arithmetic cannot
49
- * overshoot by a digit the way a naive `cap - marker.length` would.
50
- */
51
- export declare function appendBounded(prev: string, delta: string, cap: number): string;
52
- export interface TrimResult {
53
- entries: Entry[];
54
- dropped: number;
55
- }
56
- /**
57
- * Ring-trim to `retain` entries; returns the SAME array reference when no-op.
58
- *
59
- * The identity return is load-bearing: the reducer spreads this result into a
60
- * new `ViewState` on every append, and a fresh array on every action would
61
- * defeat the `React.memo` boundaries L2 installs on the transcript.
62
- */
63
- export declare function trimEntries(entries: Entry[], retain: number): TrimResult;
64
- export declare function setEntryRetain(value: number): void;
65
- export declare function entryRetain(): number;
@@ -1,133 +0,0 @@
1
- /**
2
- * Bounded view state (tui-render-performance L1 / R5).
3
- *
4
- * `ViewState.entries` used to grow without any ceiling: `argsRaw`, assistant
5
- * `text` and `thinking` all concatenated forever, and the entry array was never
6
- * trimmed. That makes the per-frame cost of the renderer proportional to the
7
- * total number of characters the session has ever produced, because Ink's
8
- * `renderNodeToOutput` walks and measures every mounted text node whether or not
9
- * `overflow: hidden` clips it.
10
- *
11
- * Two bounds live here, both pure and React-free:
12
- * - `appendBounded` caps one field by eliding its MIDDLE, and
13
- * - `trimEntries` ring-trims the entry array itself.
14
- *
15
- * ASCII ONLY. This module is produced outside `src/ui/**`, where no terminal
16
- * capabilities are available, so the elision marker has to be safe on a legacy
17
- * `cmd.exe` -- the same rule `PREVIEW_TRUNCATION_MARK` in `reducer.ts` records.
18
- */
19
- import { DEFAULT_TRANSCRIPT_RETAIN } from '../config/schema.js';
20
- /**
21
- * The per-field ceilings.
22
- *
23
- * `text` is the generous one on purpose: a 256 KiB answer is already far past
24
- * anything a terminal can usefully show, and the middle is what gets elided, so
25
- * both the opening and the live cursor survive. `argsRaw` is the tight one --
26
- * it is a streamed JSON fragment rendered as a 60-character card summary, so
27
- * anything past a few KiB is invisible by construction.
28
- */
29
- export const ENTRY_LIMITS = {
30
- text: 262_144,
31
- thinking: 65_536,
32
- argsRaw: 16_384,
33
- };
34
- /** Marker inserted at the elision point. ASCII -- produced outside `src/ui/**`. */
35
- export const ELISION_MARK_PREFIX = '\n[... ';
36
- export const ELISION_MARK_SUFFIX = ' characters elided ...]\n';
37
- /** Matches a marker this module wrote, so re-elision collapses rather than nests. */
38
- const ELISION_RE = /\n\[\.\.\. (\d+) characters elided \.\.\.\]\n/;
39
- /** Fixed cost of the marker, before the digits of the count. */
40
- const MARKER_FIXED = ELISION_MARK_PREFIX.length + ELISION_MARK_SUFFIX.length;
41
- /**
42
- * Fraction of the cap reserved for the HEAD. The tail gets the rest because that
43
- * is where the cursor is; the head exists so the answer still starts where the
44
- * model started it.
45
- */
46
- const HEAD_FRACTION = 4;
47
- /** Undo one elision, so a second one merges into it rather than nesting. */
48
- function splitElided(prev) {
49
- const m = ELISION_RE.exec(prev);
50
- if (!m)
51
- return { head: '', elided: 0, tail: prev };
52
- const index = m.index;
53
- return {
54
- head: prev.slice(0, index),
55
- elided: Number.parseInt(m[1], 10) || 0,
56
- tail: prev.slice(index + m[0].length),
57
- };
58
- }
59
- /**
60
- * Append `delta` to `prev`, keeping the result at or below `cap` by eliding the
61
- * MIDDLE. Head and tail are both preserved: the head is the answer's opening,
62
- * the tail is where the cursor is. Idempotent -- re-eliding an already elided
63
- * string collapses the two markers into one.
64
- *
65
- * The returned string is NEVER longer than `cap` (AC-7). The marker's own digit
66
- * count is bounded before the tail budget is computed, so the arithmetic cannot
67
- * overshoot by a digit the way a naive `cap - marker.length` would.
68
- */
69
- export function appendBounded(prev, delta, cap) {
70
- if (!Number.isFinite(cap) || cap <= 0)
71
- return '';
72
- const split = splitElided(prev);
73
- let head = split.head;
74
- let tail = split.tail + delta;
75
- let elided = split.elided;
76
- // Fast path: nothing has ever been elided and it still fits. This is the path
77
- // every ordinary answer takes, so it must allocate nothing beyond the concat.
78
- if (elided === 0 && tail.length <= cap)
79
- return tail;
80
- const headBudget = Math.max(0, Math.min(Math.floor(cap / HEAD_FRACTION), cap - MARKER_FIXED - 1));
81
- if (elided === 0) {
82
- // First elision: the head has to be carved out of the accumulated text.
83
- head = tail.slice(0, headBudget);
84
- tail = tail.slice(headBudget);
85
- }
86
- else if (head.length > headBudget) {
87
- // A later `cap` reduction can leave the stored head oversized; charge the
88
- // difference to the elision count rather than silently keeping it.
89
- elided += head.length - headBudget;
90
- head = head.slice(0, headBudget);
91
- }
92
- if (head.length + MARKER_FIXED >= cap) {
93
- // Degenerate cap (only reachable from a hand-written test): keep the tail.
94
- return tail.slice(Math.max(0, tail.length - cap));
95
- }
96
- // `elided + tail.length` is an UPPER BOUND on the final count, so its digit
97
- // count is an upper bound on the marker's width. Budgeting against the bound
98
- // is what makes the `<= cap` guarantee hold without a second pass.
99
- const digitBound = String(elided + tail.length).length;
100
- const markerBound = MARKER_FIXED + digitBound;
101
- const tailKeep = Math.max(0, Math.min(tail.length, cap - head.length - markerBound));
102
- const total = elided + (tail.length - tailKeep);
103
- return `${head}${ELISION_MARK_PREFIX}${total}${ELISION_MARK_SUFFIX}${tail.slice(tail.length - tailKeep)}`;
104
- }
105
- /**
106
- * Ring-trim to `retain` entries; returns the SAME array reference when no-op.
107
- *
108
- * The identity return is load-bearing: the reducer spreads this result into a
109
- * new `ViewState` on every append, and a fresh array on every action would
110
- * defeat the `React.memo` boundaries L2 installs on the transcript.
111
- */
112
- export function trimEntries(entries, retain) {
113
- const keep = Math.max(1, Math.floor(retain));
114
- if (entries.length <= keep)
115
- return { entries, dropped: 0 };
116
- return { entries: entries.slice(entries.length - keep), dropped: entries.length - keep };
117
- }
118
- // ---------------------------------------------------------------------------
119
- // The resolved retain ceiling
120
- // ---------------------------------------------------------------------------
121
- /**
122
- * `viewReducer` is pure and takes no config, so the resolved `transcriptRetain`
123
- * reaches it through a module-level singleton -- the shape `prompt-history.ts`
124
- * already uses for `setHistoryEnabled`. `load.ts` is the ONLY writer.
125
- */
126
- let resolvedRetain = DEFAULT_TRANSCRIPT_RETAIN;
127
- export function setEntryRetain(value) {
128
- if (Number.isFinite(value) && value > 0)
129
- resolvedRetain = Math.floor(value);
130
- }
131
- export function entryRetain() {
132
- return resolvedRetain;
133
- }
@@ -1,40 +0,0 @@
1
- /**
2
- * The governance slice of the view model: the small pure folds `reducer.ts` delegates to
3
- * (governance-mode section 14.4).
4
- *
5
- * Pure: no React, no I/O. ASCII ONLY (`agent/` is glyph-scanned).
6
- *
7
- * WHY A FILE OF ITS OWN. `reducer.ts` is already past the file-size ceiling and the repo
8
- * rule is "wiring-style growth only": each governance `case` in the reducer is a line or
9
- * two that calls a function here, so the logic is unit-testable without a `ViewState`.
10
- */
11
- import type { AgentMode } from './agent-mode.js';
12
- import type { GovernanceSnapshot } from '../governance/types.js';
13
- import { type Posture } from '../governance/posture.js';
14
- /** The posture half of a `setAgentMode` action. */
15
- export interface AdoptedPostureInput {
16
- mode: AgentMode;
17
- pending: AgentMode | null;
18
- /** Written from the controller's adopted state; absent for callers that predate postures. */
19
- posture?: Posture;
20
- pendingPosture?: Posture | null;
21
- }
22
- /**
23
- * The pair of posture fields one `setAgentMode` dispatch writes.
24
- *
25
- * "NEVER DISPATCH THE REQUESTED VALUE, ONLY THE ADOPTED ONE" (spec 4.3): the controller
26
- * reports all four values together and the reducer mirrors them, so the badge and the gate
27
- * cannot disagree. A dispatch that carries only the gate mode (every pre-governance call
28
- * site) keeps the governance dimension the view already has and swaps the mode half, which
29
- * is exactly what such a caller meant.
30
- */
31
- export declare function adoptPosture(current: Posture, action: AdoptedPostureInput): {
32
- posture: Posture;
33
- pendingPosture: Posture | null;
34
- };
35
- /**
36
- * Fold a pushed snapshot into the view: a snapshot OLDER than the one held, for the same
37
- * run, is dropped (the wiring throttles, and a late flush must not roll the panel back).
38
- * Returns the held object unchanged when nothing should change.
39
- */
40
- export declare function foldGovernanceSnapshot(held: GovernanceSnapshot | null, incoming: GovernanceSnapshot): GovernanceSnapshot;
@@ -1,40 +0,0 @@
1
- /**
2
- * The governance slice of the view model: the small pure folds `reducer.ts` delegates to
3
- * (governance-mode section 14.4).
4
- *
5
- * Pure: no React, no I/O. ASCII ONLY (`agent/` is glyph-scanned).
6
- *
7
- * WHY A FILE OF ITS OWN. `reducer.ts` is already past the file-size ceiling and the repo
8
- * rule is "wiring-style growth only": each governance `case` in the reducer is a line or
9
- * two that calls a function here, so the logic is unit-testable without a `ViewState`.
10
- */
11
- import { composePosture, isGovernancePosture } from '../governance/posture.js';
12
- /**
13
- * The pair of posture fields one `setAgentMode` dispatch writes.
14
- *
15
- * "NEVER DISPATCH THE REQUESTED VALUE, ONLY THE ADOPTED ONE" (spec 4.3): the controller
16
- * reports all four values together and the reducer mirrors them, so the badge and the gate
17
- * cannot disagree. A dispatch that carries only the gate mode (every pre-governance call
18
- * site) keeps the governance dimension the view already has and swaps the mode half, which
19
- * is exactly what such a caller meant.
20
- */
21
- export function adoptPosture(current, action) {
22
- const governed = isGovernancePosture(current);
23
- const posture = action.posture ?? composePosture(action.mode, governed);
24
- const pendingPosture = action.pendingPosture !== undefined
25
- ? action.pendingPosture
26
- : action.pending === null
27
- ? null
28
- : composePosture(action.pending, governed);
29
- return { posture, pendingPosture };
30
- }
31
- /**
32
- * Fold a pushed snapshot into the view: a snapshot OLDER than the one held, for the same
33
- * run, is dropped (the wiring throttles, and a late flush must not roll the panel back).
34
- * Returns the held object unchanged when nothing should change.
35
- */
36
- export function foldGovernanceSnapshot(held, incoming) {
37
- if (held !== null && held.runId === incoming.runId && incoming.rev < held.rev)
38
- return held;
39
- return incoming;
40
- }
@@ -1,77 +0,0 @@
1
- /**
2
- * Invocation cards (tui-invocation-cards): what a transcript shows INSTEAD of the
3
- * system prompt a command submitted on the user's behalf.
4
- *
5
- * Pure and total: no IO, no React, no Ink, nothing but `import type`. ASCII ONLY -
6
- * `src/agent/**` new files sit inside the `glyphs.test.ts` scan scope.
7
- *
8
- * ONE CONSTRUCTOR (I-3). `buildInvocationCard` is the only function that turns raw
9
- * command-layer material into a card, `App.submitMessage` is its only caller, and
10
- * `sanitizeInvocationCard` (the session-load path) shares its normaliser so a card
11
- * written today and a card read back tomorrow cannot drift apart.
12
- *
13
- * ORDER IS REDACT -> NORMALISE -> LIMIT, and it is the load-bearing part (I-6). Cut
14
- * first and a secret that straddles the cut leaves a prefix shorter than the
15
- * redaction patterns' minimum length: the half-key sails through into the
16
- * transcript, the session file and the exit replay.
17
- */
18
- export type InvocationVariant = 'skill' | 'team' | 'todo' | 'govern';
19
- /** Everything one card needs; persisted, queued and rendered in this one shape. */
20
- export interface InvocationCard {
21
- readonly variant: InvocationVariant;
22
- /** Skill name / 'continue' / 'resume'; '' for team. */
23
- readonly name: string;
24
- /** What the user typed (or its equivalent), redacted and capped; also `Entry.text`. */
25
- readonly commandLine: string;
26
- /** The user's own words (args / brief), redacted and trimmed; may be ''. */
27
- readonly input: string;
28
- /** Characters cut from `input`; 0 when nothing was cut. */
29
- readonly inputHidden: number;
30
- /** Fact fragments, each at most `factMaxChars`, at most `factsMax` of them. */
31
- readonly facts: readonly string[];
32
- /** One disclosure sentence. */
33
- readonly note?: string;
34
- }
35
- /**
36
- * The renderer, the height estimate and the loader all read THESE numbers (I-4).
37
- * A card's height is a function of its data and these limits, so it is bounded:
38
- * header + `inputMaxLines` + hidden tail + note.
39
- */
40
- export declare const INVOCATION_LIMITS: {
41
- readonly commandLineMaxChars: 2000;
42
- readonly inputMaxChars: 480;
43
- readonly inputMaxLines: 8;
44
- readonly nameMaxChars: 64;
45
- readonly factsMax: 5;
46
- readonly factMaxChars: 28;
47
- readonly noteMaxChars: 140;
48
- };
49
- /**
50
- * Raw material from the command layer: NOT redacted, NOT trimmed. Commands must not
51
- * cut or scrub it themselves - both happen exactly once, in `buildInvocationCard`.
52
- */
53
- export interface InvocationCardInput {
54
- variant: InvocationVariant;
55
- name?: string;
56
- commandLine: string;
57
- input?: string;
58
- facts?: readonly string[];
59
- note?: string;
60
- }
61
- /**
62
- * Total, never throws. `redact` is injected (the same closure `Command:` echo uses) so
63
- * this module depends on nothing; the default is the identity for tests and the loader.
64
- */
65
- export declare function buildInvocationCard(input: InvocationCardInput, redact?: (text: string) => string): InvocationCard;
66
- /**
67
- * Session-load path: `null` for anything that is not a plausible card, so the caller
68
- * drops the field and the entry degrades to a plain user message (I-7). Re-derives
69
- * `inputHidden` from nothing - it trusts the stored count only when it is a sane integer.
70
- */
71
- export declare function sanitizeInvocationCard(value: unknown): InvocationCard | null;
72
- /**
73
- * Emergency kill switch (`ARAGON_NO_INVOCATION_CARDS=1`): every command and the App fall
74
- * back to the pre-card behaviour. Read at call time, not import time, so a test (or a
75
- * wrapper script) that sets the variable after load is honoured.
76
- */
77
- export declare function invocationCardsEnabled(env?: NodeJS.ProcessEnv): boolean;