@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
@@ -22,7 +22,7 @@
22
22
  * step" with no null branch and lets a unit test prove the property instead of
23
23
  * an operator inferring it from a transcript.
24
24
  */
25
- import { TODO_LIMITS } from './limits.js';
25
+ import { TODO_LIMITS } from '@aragon-agent/tui/model/todo/limits';
26
26
  const STATUSES = new Set([
27
27
  'pending',
28
28
  'in_progress',
@@ -21,7 +21,7 @@
21
21
  * behaviour report - INCLUDING a change to either `{{VISIBILITY}}` variant, which
22
22
  * is part of the block.
23
23
  */
24
- import { TODO_BLOCK_VERSION } from './limits.js';
24
+ import { TODO_BLOCK_VERSION } from '@aragon-agent/tui/model/todo/limits';
25
25
  export { TODO_BLOCK_VERSION };
26
26
  export interface TodoBlockParams {
27
27
  panelVisible: boolean;
@@ -21,7 +21,7 @@
21
21
  * behaviour report - INCLUDING a change to either `{{VISIBILITY}}` variant, which
22
22
  * is part of the block.
23
23
  */
24
- import { TODO_BLOCK_VERSION } from './limits.js';
24
+ import { TODO_BLOCK_VERSION } from '@aragon-agent/tui/model/todo/limits';
25
25
  export { TODO_BLOCK_VERSION };
26
26
  /**
27
27
  * The ONLY sentence in the block that mentions a display at all. Everything else
@@ -22,7 +22,7 @@
22
22
  * `TodoCard`'s `React.memo` and the transcript's height cache, and undo the redraw
23
23
  * savings `mapEntry` buys with object identity (P1-3).
24
24
  */
25
- import type { AcceptanceItem, TodoClearReason, TodoEventListener, TodoItem, TodoSnapshot } from './types.js';
25
+ import type { AcceptanceItem, TodoClearReason, TodoEventListener, TodoItem, TodoSnapshot } from '@aragon-agent/tui/model/todo/types';
26
26
  /**
27
27
  * What a `write()` decided.
28
28
  *
@@ -23,8 +23,8 @@
23
23
  * savings `mapEntry` buys with object identity (P1-3).
24
24
  */
25
25
  import { getLogger } from '../logging/logger.js';
26
- import { acceptanceSummary, normalizeAcceptance, planIsResolved } from './acceptance.js';
27
- import { ACCEPT_LIMITS, TODO_LIMITS } from './limits.js';
26
+ import { acceptanceSummary, normalizeAcceptance, planIsResolved } from '@aragon-agent/tui/model/todo/acceptance';
27
+ import { ACCEPT_LIMITS, TODO_LIMITS } from '@aragon-agent/tui/model/todo/limits';
28
28
  import { normalizeTodos } from './normalize.js';
29
29
  /** The one model-readable refusal that is about the PLAN, not about the payload. */
30
30
  export const FRESH_ACCEPTANCE_REFUSAL = 'A plan needs acceptance criteria: how will you know the work is done? Send the ' +
@@ -26,7 +26,7 @@
26
26
  */
27
27
  import { type AgentTool } from '@aragon-agent/core';
28
28
  import type { TodoStore } from './store.js';
29
- import type { AcceptanceItem, TodoItem } from './types.js';
29
+ import type { AcceptanceItem, TodoItem } from '@aragon-agent/tui/model/todo/types';
30
30
  export interface TodoToolDeps {
31
31
  store: TodoStore;
32
32
  /** Read LIVE, never cached: `/todo off` flips this; it cannot unregister (C-1). */
@@ -25,8 +25,8 @@
25
25
  * human wait.
26
26
  */
27
27
  import { errorResult, textResult } from '@aragon-agent/core';
28
- import { acceptanceSummary, countUncheckedCriteria, countUnfinishedSteps, derivePlanPhase, planOutstanding, } from './acceptance.js';
29
- import { ACCEPT_LIMITS, TODO_LIMITS, TODO_RESULT_LIMITS } from './limits.js';
28
+ import { acceptanceSummary, countUncheckedCriteria, countUnfinishedSteps, derivePlanPhase, planOutstanding, } from '@aragon-agent/tui/model/todo/acceptance';
29
+ import { ACCEPT_LIMITS, TODO_LIMITS, TODO_RESULT_LIMITS } from '@aragon-agent/tui/model/todo/limits';
30
30
  /**
31
31
  * Turned off mid-session. A NON-ERROR result on purpose: the user turned a
32
32
  * display off, the model did nothing wrong, and an error result invites a retry.
@@ -40,7 +40,7 @@
40
40
  * `bash` assertions meaningful rather than rewritten.
41
41
  */
42
42
  import { type AgentTool } from '@aragon-agent/core';
43
- import { type ProcSupervisorPort } from '../proc/types.js';
43
+ import { type ProcSupervisorPort } from '@aragon-agent/tui/model/proc/types';
44
44
  import type { ToolDeps } from './fs-tools.js';
45
45
  export interface BashToolOptions {
46
46
  /**
@@ -44,9 +44,9 @@ import process from 'node:process';
44
44
  import { defineTool, errorResult, textResult, } from '@aragon-agent/core';
45
45
  import { looksLongRunning } from '../proc/classify.js';
46
46
  import { killTree } from '../proc/kill-tree.js';
47
- import { PROC_LIMITS } from '../proc/limits.js';
47
+ import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
48
48
  import { hasOpenOutputStreams } from '../proc/output-streams.js';
49
- import { isTerminalStatus } from '../proc/types.js';
49
+ import { isTerminalStatus } from '@aragon-agent/tui/model/proc/types';
50
50
  /**
51
51
  * The two sentences appended to the tool description when background launches
52
52
  * are available.
@@ -18,7 +18,7 @@
18
18
  * single-region edit is today's rows plus ONE `@@` header, a multi-region edit is
19
19
  * strictly smaller, and a trailing `\r` no longer reaches the prompt.
20
20
  */
21
- import { type FilePatch } from './patch.js';
21
+ import { type FilePatch } from '@aragon-agent/tui/model/tools/patch';
22
22
  export interface DiffOptions {
23
23
  /** File path shown in the `---`/`+++` header. */
24
24
  path?: string;
@@ -18,7 +18,7 @@
18
18
  * single-region edit is today's rows plus ONE `@@` header, a multi-region edit is
19
19
  * strictly smaller, and a trailing `\r` no longer reaches the prompt.
20
20
  */
21
- import { PATCH_LIMITS, buildPatch } from './patch.js';
21
+ import { PATCH_LIMITS, buildPatch } from '@aragon-agent/tui/model/tools/patch';
22
22
  const CONTEXT_LINES = 2;
23
23
  /** Appended when the rendered text hits `PATCH_LIMITS.modelDiffMaxChars`. */
24
24
  const DIFF_TRUNCATED_NOTE = '... (diff truncated)';
@@ -22,7 +22,7 @@
22
22
  * RING, not a leak detector: nothing is retained longer than `cap` writes, so
23
23
  * a patch nobody consumes cannot accumulate.
24
24
  */
25
- import type { FilePatch } from './patch.js';
25
+ import type { FilePatch } from '@aragon-agent/tui/model/tools/patch';
26
26
  export interface FileChangeStore {
27
27
  record(owner: string, toolCallId: string, patch: FilePatch): void;
28
28
  /** Returns and REMOVES the patch. A patch is consumed exactly once. */
@@ -7,8 +7,8 @@
7
7
  * tools do not re-implement them.
8
8
  */
9
9
  import { type AgentTool } from '@aragon-agent/core';
10
- import { type FilePatch } from './patch.js';
11
- import type { ProcSupervisorPort } from '../proc/types.js';
10
+ import { type FilePatch } from '@aragon-agent/tui/model/tools/patch';
11
+ import type { ProcSupervisorPort } from '@aragon-agent/tui/model/proc/types';
12
12
  export interface ToolDeps {
13
13
  getCwd: () => string;
14
14
  /**
@@ -10,7 +10,7 @@ import { promises as fs } from 'node:fs';
10
10
  import { isAbsolute, join, resolve, dirname } from 'node:path';
11
11
  import { defineTool, errorResult, textResult, } from '@aragon-agent/core';
12
12
  import { renderUnifiedDiff } from './diff.js';
13
- import { PATCH_LIMITS, buildPatch } from './patch.js';
13
+ import { PATCH_LIMITS, buildPatch } from '@aragon-agent/tui/model/tools/patch';
14
14
  function resolvePath(cwd, p) {
15
15
  return isAbsolute(p) ? p : resolve(cwd, p);
16
16
  }
@@ -9,10 +9,10 @@
9
9
  * before the tool runs.
10
10
  */
11
11
  import { type AgentTool, type ToolPolicyDecision, type ToolPolicyVerdict } from '@aragon-agent/core';
12
- import type { AgentMode } from '../agent/agent-mode.js';
12
+ import type { AgentMode } from '@aragon-agent/tui/model/agent/agent-mode';
13
13
  import type { ToolPermission } from '../exec/permission.js';
14
- import type { FilePatch } from './patch.js';
15
- import type { ProcSupervisorPort } from '../proc/types.js';
14
+ import type { FilePatch } from '@aragon-agent/tui/model/tools/patch';
15
+ import type { ProcSupervisorPort } from '@aragon-agent/tui/model/proc/types';
16
16
  import type { JobNotice } from '../proc/notices.js';
17
17
  import { type ToolGate } from './tool-gate.js';
18
18
  import { type ToolHookRunner } from '../exec/hooks/tool-wrapper.js';
@@ -9,7 +9,7 @@
9
9
  * before the tool runs.
10
10
  */
11
11
  import { errorResult, evaluateToolCall, } from '@aragon-agent/core';
12
- import { planRefusal, submitPlanRefusal } from '../agent/agent-mode.js';
12
+ import { planRefusal, submitPlanRefusal } from '@aragon-agent/tui/model/agent/agent-mode';
13
13
  import { withGovernanceGate } from '../governance/tools/guard.js';
14
14
  import { makeReadFile, makeWriteFile, makeEditFile, makeListDir } from './fs-tools.js';
15
15
  import { makeGlob, makeGrep } from './search-tools.js';
@@ -17,15 +17,15 @@
17
17
  */
18
18
  import { type AgentTool } from '@aragon-agent/core';
19
19
  import { type JobNotice } from '../proc/notices.js';
20
- import type { JobKind, ProcSupervisorPort, ServiceStatus } from '../proc/types.js';
20
+ import type { JobKind, ProcSupervisorPort, ServiceStatus } from '@aragon-agent/tui/model/proc/types';
21
+ import { type WakeSource } from '../proc/wait.js';
22
+ import { type WaitListener } from '@aragon-agent/tui/model/proc/wait-view';
21
23
  export interface JobToolDeps {
22
24
  supervisor: ProcSupervisorPort;
23
25
  /** `cfg.jobs.waitSeconds`, read LIVE (same rule as `startupSettleMs`). */
24
26
  waitSeconds: () => number;
25
27
  /** `cfg.jobs.stallSeconds`, read LIVE; only the `[stalled]` sentence uses it. */
26
28
  stallSeconds: () => number;
27
- /** `cfg.toolTimeoutMs`, read LIVE: I-4's second convergence. */
28
- toolTimeoutMs: () => number;
29
29
  /** `PROC_LIMITS.maxConsecutiveWaits`. */
30
30
  maxConsecutiveWaits: number;
31
31
  /**
@@ -40,6 +40,17 @@ export interface JobToolDeps {
40
40
  kind: JobKind;
41
41
  status: ServiceStatus;
42
42
  } | undefined;
43
+ /** Live view of the wait (`begin` / 1 Hz `update` / `end`); absent for a sub-agent. */
44
+ onWait?: WaitListener;
45
+ /**
46
+ * Runs the whole wait with the idle watchdog paused (`controller.withPausedWatchdog`).
47
+ * Absent in a sub-agent or a fixture: the wait then runs unwrapped, as before.
48
+ */
49
+ holdWatchdog?: <T>(fn: () => Promise<T>) => Promise<T>;
50
+ /** Ends a wait when the user sends a message (edge-triggered; see `proc/wait.ts`). */
51
+ attention?: WakeSource;
52
+ /** Test seam; defaults to `Date.now`. */
53
+ now?: () => number;
43
54
  }
44
55
  export declare function makeJobWait(deps: JobToolDeps): AgentTool;
45
56
  export declare function makeJobList(deps: JobToolDeps): AgentTool;
@@ -16,11 +16,13 @@
16
16
  * reason the feature exists.
17
17
  */
18
18
  import { defineTool, errorResult, textResult } from '@aragon-agent/core';
19
- import { formatDuration } from '../agent/usage.js';
20
- import { JOB_WAIT_MARGIN_MS, PROC_LIMITS } from '../proc/limits.js';
19
+ import { formatDuration } from '@aragon-agent/tui/model/agent/usage';
20
+ import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
21
21
  import { renderJobNotices } from '../proc/notices.js';
22
- import { isTerminalStatus } from '../proc/types.js';
22
+ import { isTerminalStatus } from '@aragon-agent/tui/model/proc/types';
23
23
  import { waitForJob } from '../proc/wait.js';
24
+ import { extractEtaText, parseEtaSeconds, suggestWaitSeconds } from '../proc/wait-plan.js';
25
+ import { buildWaitView } from '@aragon-agent/tui/model/proc/wait-view';
24
26
  /**
25
27
  * Split a page into "completed rows" and "the carry line".
26
28
  *
@@ -38,26 +40,36 @@ function splitCarry(page) {
38
40
  return last === carry ? { rows: rows.slice(0, -1), carry } : { rows, carry };
39
41
  }
40
42
  /**
41
- * Clamp `timeoutSeconds` into `[jobs.waitSeconds, 60]` and then into the tool
42
- * ceiling (I-4).
43
+ * Clamp `timeoutSeconds` into `[waitMinSeconds, waitMaxSeconds]`.
43
44
  *
44
- * TWO CONVERGENCES, BOTH REQUIRED. The first honours `WAIT_SECONDS_RANGE`; the
45
- * second is what makes it impossible for a wait to outlive the tool that is
46
- * hosting it, which is the difference between "a bounded wait" and "another
47
- * `Command timed out after 180000ms`".
45
+ * NOT CONVERGED AGAINST `toolTimeoutMs` (extended-job-wait I-4'): the executor
46
+ * gives `job_wait` its own ceiling and the idle watchdog is paused for the wait.
47
+ * Re-introducing a `toolTimeoutMs` term here silently pins every wait to
48
+ * `toolTimeoutMs - 30s` (150 s by default) with no error.
49
+ *
50
+ * A request over the ceiling is REPORTED (`clampedFrom`) rather than clamped in
51
+ * silence: a model that asked for an hour and is not told otherwise believes it
52
+ * waited one.
48
53
  */
49
54
  function clampWaitSeconds(deps, requested) {
50
55
  const configured = deps.waitSeconds();
51
56
  const asked = requested === undefined || !Number.isFinite(requested) || requested < PROC_LIMITS.waitMinSeconds
52
57
  ? configured
53
58
  : requested;
54
- const bounded = Math.max(PROC_LIMITS.waitMinSeconds, Math.min(Math.floor(asked), PROC_LIMITS.waitMaxSeconds));
55
- const ceiling = Math.floor((deps.toolTimeoutMs() - JOB_WAIT_MARGIN_MS) / 1000);
56
- // `Math.max(1, ...)` rather than `Math.max(waitMinSeconds, ...)`: when an
57
- // operator sets a tool ceiling below the margin, "the wait fits inside the
58
- // ceiling" is the invariant that must win. Nothing here ever silently produces
59
- // a wait longer than the tool call that hosts it.
60
- return Math.max(1, Math.min(bounded, ceiling));
59
+ const floored = Math.floor(asked);
60
+ // The floor stays: a fixture or a hand-edited config can hand back < 5, and a
61
+ // sub-5-second "wait" is a poll.
62
+ const seconds = Math.max(PROC_LIMITS.waitMinSeconds, Math.min(floored, PROC_LIMITS.waitMaxSeconds));
63
+ return floored > seconds ? { seconds, clampedFrom: floored } : { seconds };
64
+ }
65
+ /** `45s`, `4m12s`, `10m`: whole seconds, no fractions, for prose lines. */
66
+ function spanText(seconds) {
67
+ const whole = Math.max(0, Math.round(seconds));
68
+ if (whole < 60)
69
+ return `${whole}s`;
70
+ const minutes = Math.floor(whole / 60);
71
+ const rest = whole % 60;
72
+ return rest === 0 ? `${minutes}m` : `${minutes}m${String(rest).padStart(2, '0')}s`;
61
73
  }
62
74
  /** `JOB t3 task running 12m34s` - the one header grammar for every outcome. */
63
75
  function headerLine(job, nowMs) {
@@ -100,6 +112,7 @@ function renderJobBlock(args) {
100
112
  fixed.push(stalled);
101
113
  if (args.truncatedNote !== undefined)
102
114
  fixed.push(args.truncatedNote);
115
+ fixed.push(...args.extraNotes);
103
116
  const tail = [`[cursor ${cursor}]`];
104
117
  if (terminal) {
105
118
  tail.push(`[done] the job finished. Read more with bash_output({ service: "${job.id}" }) if you need it.`);
@@ -107,8 +120,14 @@ function renderJobBlock(args) {
107
120
  else {
108
121
  const quiet = formatDuration(Math.max(0, nowMs - job.lastOutputAt));
109
122
  tail.push(`[wait ${args.waitSeconds}s] still running. No output for ${quiet}.`);
110
- tail.push(`[next] job_wait({ job: "${job.id}", since: ${cursor} }) to keep waiting, ` +
111
- 'or continue with other work.');
123
+ // THE SUGGESTION RIDES ONLY WHEN IT DIFFERS FROM THE DEFAULT, so a short job on
124
+ // the default config gets the byte-identical line it always got (AC-20).
125
+ const timeoutClause = args.suggestedSeconds !== undefined ? `, timeoutSeconds: ${args.suggestedSeconds}` : '';
126
+ const etaClause = args.suggestedSeconds !== undefined && args.etaText !== undefined
127
+ ? ` (ETA about ${args.etaText})`
128
+ : '';
129
+ tail.push(`[next] job_wait({ job: "${job.id}", since: ${cursor}${timeoutClause} }) ` +
130
+ `to keep waiting${etaClause}, or continue with other work.`);
112
131
  }
113
132
  // TWELVE LINES, AND THE ROW BLOCK IS THE ONLY ELASTIC PART. Its header costs a
114
133
  // line of its own, so the budget is computed with it already deducted; a stalled
@@ -157,15 +176,21 @@ export function makeJobWait(deps) {
157
176
  label: 'Wait for job',
158
177
  description: 'Wait a bounded time for a background job (service or task) and return its ' +
159
178
  'status, one line of progress, and only the output since `since`. Returns ' +
160
- 'immediately when the job is already finished. Waiting is bounded (5-60s), ' +
161
- 'so call it again only after deciding what to do.',
179
+ 'immediately when the job is already finished. Waiting is bounded ' +
180
+ `(${PROC_LIMITS.waitMinSeconds}-${PROC_LIMITS.waitMaxSeconds}s). The wait ends early ` +
181
+ 'when the job finishes or when the user sends a message, so prefer ONE long wait ' +
182
+ 'over several short ones.',
162
183
  parameters: {
163
184
  type: 'object',
164
185
  properties: {
165
- job: { type: 'string', description: '"t3", "s1", or "all".' },
186
+ job: {
187
+ type: 'string',
188
+ description: '"t3", "s1", "all" (until every live job ends) or "any" (until the first ends).',
189
+ },
166
190
  timeoutSeconds: {
167
191
  type: 'number',
168
- description: '5-60. Omit for the configured default.',
192
+ description: `${PROC_LIMITS.waitMinSeconds}-${PROC_LIMITS.waitMaxSeconds}. Omit for the ` +
193
+ 'configured default. Use the [next] suggestion or the job\'s ETA for long jobs.',
169
194
  },
170
195
  since: {
171
196
  type: 'number',
@@ -174,35 +199,113 @@ export function makeJobWait(deps) {
174
199
  },
175
200
  required: ['job'],
176
201
  },
177
- async execute(_id, rawParams, ctx) {
202
+ async execute(toolCallId, rawParams, ctx) {
178
203
  const params = rawParams;
179
204
  const requested = String(params.job);
180
- const targets = requested === 'all'
205
+ const mode = requested === 'any' ? 'any' : 'all';
206
+ const targets = requested === 'all' || requested === 'any'
181
207
  ? deps.supervisor.list().filter(isLive).map((job) => job.id)
182
208
  : [requested];
183
- if (requested !== 'all' && !deps.supervisor.get(requested)) {
209
+ if (requested !== 'all' && requested !== 'any' && !deps.supervisor.get(requested)) {
184
210
  return unknownJobMessage(deps, requested);
185
211
  }
186
212
  if (targets.length === 0) {
187
213
  return textResult('No background jobs are running. Start one with ' +
188
214
  'bash({ command, background: true }).');
189
215
  }
190
- const waitSeconds = clampWaitSeconds(deps, params.timeoutSeconds);
191
- const outcome = await waitForJob(deps.supervisor, {
192
- targets,
193
- timeoutMs: waitSeconds * 1000,
194
- ...(ctx.signal ? { signal: ctx.signal } : {}),
195
- ...(params.since !== undefined ? { since: params.since } : {}),
216
+ const now = deps.now ?? Date.now;
217
+ const { seconds: waitSeconds, clampedFrom } = clampWaitSeconds(deps, params.timeoutSeconds);
218
+ const waitStartedAt = now();
219
+ const stallSeconds = deps.stallSeconds();
220
+ const snapshotsOf = () => targets.flatMap((id) => deps.supervisor.get(id) ?? []);
221
+ const viewAt = (nowMs) => buildWaitView({
222
+ toolCallId,
223
+ snapshots: snapshotsOf(),
224
+ mode,
225
+ waitStartedAt,
226
+ upToMs: waitSeconds * 1000,
227
+ nowMs,
228
+ stallSeconds,
196
229
  });
230
+ const emit = (type, nowMs) => {
231
+ const view = viewAt(nowMs);
232
+ if (view === undefined || deps.onWait === undefined)
233
+ return;
234
+ try {
235
+ deps.onWait({ type, toolCallId, view });
236
+ }
237
+ catch {
238
+ // A broken view must never break (or even slow) a 20-minute wait (I-6).
239
+ }
240
+ };
241
+ // `begin` ONLY WHEN THERE IS SOMETHING TO WATCH: a wait whose targets have all
242
+ // ended already returns synchronously, and a card that flashes for zero
243
+ // frames is noise (RV-4). `any` needs only ONE ended target to be over.
244
+ const live = snapshotsOf().filter(isLive);
245
+ const alreadyDone = mode === 'any' ? live.length < targets.length : live.length === 0;
246
+ const announce = deps.onWait !== undefined && live.length > 0 && !alreadyDone;
247
+ if (announce)
248
+ emit('begin', waitStartedAt);
249
+ const hold = deps.holdWatchdog ?? ((fn) => fn());
250
+ let endReason = 'abort';
251
+ let outcome;
252
+ try {
253
+ outcome = await hold(() => waitForJob(deps.supervisor, {
254
+ targets,
255
+ timeoutMs: waitSeconds * 1000,
256
+ mode,
257
+ ...(ctx.signal ? { signal: ctx.signal } : {}),
258
+ ...(params.since !== undefined ? { since: params.since } : {}),
259
+ ...(deps.attention ? { wakeOn: deps.attention } : {}),
260
+ // ALWAYS INSTALLED, announced or not: the beat is also the wall-clock
261
+ // deadline re-check (proc/wait.ts rule 5), which a headless run needs
262
+ // after a laptop sleep just as much as the TUI does.
263
+ heartbeat: {
264
+ everyMs: PROC_LIMITS.waitHeartbeatMs,
265
+ onBeat: (nowMs) => {
266
+ if (announce)
267
+ emit('update', nowMs);
268
+ },
269
+ },
270
+ }, now));
271
+ endReason = outcome.aborted
272
+ ? 'abort'
273
+ : outcome.woken
274
+ ? 'wake'
275
+ : outcome.timedOut
276
+ ? 'timeout'
277
+ : 'terminal';
278
+ }
279
+ finally {
280
+ // EVERY EXIT, INCLUDING A THROW (I-5): a missed `end` leaves a card that says
281
+ // "waiting" for a wait that is over, forever.
282
+ if (announce && deps.onWait) {
283
+ try {
284
+ deps.onWait({ type: 'end', toolCallId, reason: endReason });
285
+ }
286
+ catch {
287
+ // see above
288
+ }
289
+ }
290
+ }
197
291
  if (outcome.aborted) {
198
292
  return errorResult(`The wait on ${targets.join(', ')} was aborted after ` +
199
293
  `${formatDuration(outcome.waitedMs)}. The job was not stopped; ` +
200
294
  'call job_wait again when you want to keep waiting.');
201
295
  }
202
- const nowMs = Date.now();
203
- const stallSeconds = deps.stallSeconds();
296
+ // `[woke]` and `[note]` describe the WAIT, not a job: one of each per result.
297
+ const waitNotes = [];
298
+ if (outcome.woken) {
299
+ waitNotes.push(`[woke] you sent a message; the wait ended after ${spanText(outcome.waitedMs / 1000)} ` +
300
+ `of ${spanText(waitSeconds)}. The job is still running. Queued input is delivered next.`);
301
+ }
302
+ if (clampedFrom !== undefined) {
303
+ waitNotes.push(`[note] timeoutSeconds ${clampedFrom} exceeds the ${PROC_LIMITS.waitMaxSeconds}s ` +
304
+ `ceiling; waited up to ${PROC_LIMITS.waitMaxSeconds}s.`);
305
+ }
306
+ const nowMs = now();
204
307
  const blocks = [];
205
- for (const job of outcome.jobs) {
308
+ for (const [blockIndex, job] of outcome.jobs.entries()) {
206
309
  const page = outcome.pages.get(job.id);
207
310
  // THE CARRY LINE IS NOT AN INCREMENT WHEN IT HAS NOT MOVED (RV-P1-5). A
208
311
  // carriage-return-rewritten progress bar completes no rows, so the ring
@@ -227,12 +330,29 @@ export function makeJobWait(deps) {
227
330
  const progressUnchanged = hasBaseline && current === previous;
228
331
  const newRows = shownRows.length;
229
332
  const advanced = !hasBaseline || newRows > 0 || !progressUnchanged;
230
- memoryForJob.noChange = advanced ? 0 : memoryForJob.noChange + 1;
333
+ // A wait the USER cut short says nothing about the job: it neither advances
334
+ // nor extends the silence count.
335
+ memoryForJob.noChange = advanced
336
+ ? 0
337
+ : outcome.woken
338
+ ? memoryForJob.noChange
339
+ : memoryForJob.noChange + 1;
231
340
  if (current !== undefined)
232
341
  memoryForJob.lastProgress = current;
233
342
  if (carry.length > 0)
234
343
  memoryForJob.lastCarry = carry;
344
+ memoryForJob.lastWaitSeconds = waitSeconds;
235
345
  memory.set(job.id, memoryForJob);
346
+ // ADVICE, NEVER ENFORCED (I-13): shown only when it differs from the default.
347
+ const suggested = suggestWaitSeconds({
348
+ jobAgeMs: nowMs - job.startedAt,
349
+ lastWaitSeconds: waitSeconds,
350
+ quietWaits: memoryForJob.noChange,
351
+ etaSeconds: parseEtaSeconds(current),
352
+ configuredSeconds: deps.waitSeconds(),
353
+ minSeconds: PROC_LIMITS.waitMinSeconds,
354
+ maxSeconds: PROC_LIMITS.waitMaxSeconds,
355
+ });
236
356
  // THE SPIN GUARD (R-3): counted per job, reset by ANY change. It never
237
357
  // refuses the wait; it prepends one line naming four ways out.
238
358
  const guard = memoryForJob.noChange >= deps.maxConsecutiveWaits
@@ -252,6 +372,9 @@ export function makeJobWait(deps) {
252
372
  stalledSeconds: stallSeconds,
253
373
  waitSeconds,
254
374
  progressUnchanged,
375
+ extraNotes: blockIndex === 0 ? waitNotes : [],
376
+ suggestedSeconds: suggested !== deps.waitSeconds() ? suggested : undefined,
377
+ etaText: extractEtaText(current),
255
378
  truncatedNote: page?.truncated === true
256
379
  ? '[note] older rows were dropped - the tail keeps the last ' +
257
380
  `${PROC_LIMITS.serviceTailRows} rows` +
@@ -17,7 +17,7 @@
17
17
  * selected by whether an optional install step succeeded.
18
18
  */
19
19
  import { type AgentTool } from '@aragon-agent/core';
20
- import { type HumanInputGate, type NormalizedPlan, type NormalizedQuestion } from './human-input.js';
20
+ import { type HumanInputGate, type NormalizedPlan, type NormalizedQuestion } from '@aragon-agent/tui/model/tools/human-input';
21
21
  export interface PlanToolsOptions {
22
22
  gate: HumanInputGate;
23
23
  /**
@@ -17,7 +17,7 @@
17
17
  * selected by whether an optional install step succeeded.
18
18
  */
19
19
  import { errorResult, textResult } from '@aragon-agent/core';
20
- import { formatAnswersResult, normalizePlan, normalizeQuestions, } from './human-input.js';
20
+ import { formatAnswersResult, normalizePlan, normalizeQuestions, } from '@aragon-agent/tui/model/tools/human-input';
21
21
  // ---------------------------------------------------------------------------
22
22
  // Shared refusal text
23
23
  // ---------------------------------------------------------------------------
@@ -17,7 +17,7 @@
17
17
  * command is still arbitrary.
18
18
  */
19
19
  import { type AgentTool } from '@aragon-agent/core';
20
- import { type ProcSupervisorPort } from '../proc/types.js';
20
+ import { type ProcSupervisorPort } from '@aragon-agent/tui/model/proc/types';
21
21
  export interface ProcToolDeps {
22
22
  supervisor: ProcSupervisorPort;
23
23
  }
@@ -17,8 +17,8 @@
17
17
  * command is still arbitrary.
18
18
  */
19
19
  import { defineTool, errorResult, textResult } from '@aragon-agent/core';
20
- import { PROC_LIMITS } from '../proc/limits.js';
21
- import { isTerminalStatus } from '../proc/types.js';
20
+ import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
21
+ import { isTerminalStatus } from '@aragon-agent/tui/model/proc/types';
22
22
  /**
23
23
  * One line of status, shared by both tools so the two can never disagree.
24
24
  *
@@ -15,7 +15,7 @@
15
15
  * advice hits the same held handle and fails identically, so the single visible
16
16
  * failure is also a wrong instruction.
17
17
  */
18
- import type { UpdateReason } from './types.js';
18
+ import type { UpdateReason } from '@aragon-agent/tui/model/update/types';
19
19
  /**
20
20
  * Classify an install failure from the bounded stderr tail `runNpmInstall`
21
21
  * already returns.
@@ -24,7 +24,7 @@ import { hostname } from 'node:os';
24
24
  import process from 'node:process';
25
25
  import { getUpdateLockPath } from '../config/app-paths.js';
26
26
  import { LOCK_UNREADABLE_CONFIRMATIONS } from '../skills/lock.js';
27
- import { UPDATE_LIMITS } from './limits.js';
27
+ import { UPDATE_LIMITS } from '@aragon-agent/tui/model/update/limits';
28
28
  /**
29
29
  * `ESRCH` means gone. `EPERM` means the process EXISTS but belongs to another
30
30
  * user - treating that as dead would let one user steal another's lock, so it
@@ -12,7 +12,7 @@
12
12
  * service auto-installs for exactly one classification and degrades everything
13
13
  * else to a one-line notice carrying the correct command for THAT manager.
14
14
  */
15
- import type { InstallSource } from './types.js';
15
+ import type { InstallSource } from '@aragon-agent/tui/model/update/types';
16
16
  /** The package this CLI publishes as. Read from the manifest, never hardcoded
17
17
  * into the registry URL, so a fork keeps working (U-1). */
18
18
  export interface SelfManifest {
@@ -35,9 +35,9 @@ import { closeSync, existsSync, openSync, readFileSync, rmSync, statSync } from
35
35
  import { dirname, resolve } from 'node:path';
36
36
  import process from 'node:process';
37
37
  import { getUpdateInstallLogPath } from '../config/app-paths.js';
38
- import { UPDATE_LIMITS } from './limits.js';
38
+ import { UPDATE_LIMITS } from '@aragon-agent/tui/model/update/limits';
39
39
  import { readSelfManifest } from './install-source.js';
40
- import { STRICT_VERSION_RE } from './semver.js';
40
+ import { STRICT_VERSION_RE } from '@aragon-agent/tui/model/update/semver';
41
41
  /**
42
42
  * Where npm's JS entry point lives, or `null`.
43
43
  *
@@ -22,7 +22,7 @@
22
22
  * written nothing, a killed `npm install -g` has left a broken global install.
23
23
  */
24
24
  import { type ExecFileOptions } from 'node:child_process';
25
- import type { LatestManifest } from './types.js';
25
+ import type { LatestManifest } from '@aragon-agent/tui/model/update/types';
26
26
  /** The `execFile` shape this module needs. Injectable so no test spawns npm. */
27
27
  export type ExecFileImpl = (file: string, args: string[], options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void) => unknown;
28
28
  export interface NpmViewDeps {
@@ -24,7 +24,7 @@
24
24
  import { execFile } from 'node:child_process';
25
25
  import process from 'node:process';
26
26
  import { cleanInstallEnv, resolveNpmCli } from './installer.js';
27
- import { UPDATE_LIMITS } from './limits.js';
27
+ import { UPDATE_LIMITS } from '@aragon-agent/tui/model/update/limits';
28
28
  /**
29
29
  * The argv this probe is allowed to build. Exported for AC-47's assertion, on
30
30
  * the `buildInstallArgs` precedent.
@@ -14,7 +14,7 @@
14
14
  * registry users point `update.registry` at a mirror they can read anonymously,
15
15
  * or set `update.mode: off`.
16
16
  */
17
- import type { LatestManifest } from './types.js';
17
+ import type { LatestManifest } from '@aragon-agent/tui/model/update/types';
18
18
  export declare const DEFAULT_REGISTRY = "https://registry.npmjs.org";
19
19
  export interface RegistryDeps {
20
20
  fetchImpl?: typeof fetch;
@@ -15,7 +15,7 @@
15
15
  * or set `update.mode: off`.
16
16
  */
17
17
  import process from 'node:process';
18
- import { UPDATE_LIMITS } from './limits.js';
18
+ import { UPDATE_LIMITS } from '@aragon-agent/tui/model/update/limits';
19
19
  export const DEFAULT_REGISTRY = 'https://registry.npmjs.org';
20
20
  /**
21
21
  * `config.update.registry` -> `ARAGON_UPDATE_REGISTRY` -> `npm_config_registry`