@aragon-agent/cli 0.6.47 → 0.6.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +27 -6
  3. package/dist/agent/coalesce.d.ts +1 -1
  4. package/dist/agent/controller.d.ts +21 -21
  5. package/dist/agent/controller.js +13 -13
  6. package/dist/agent/conversation-reset.d.ts +1 -1
  7. package/dist/agent/governance-wiring.d.ts +6 -6
  8. package/dist/agent/governance-wiring.js +4 -4
  9. package/dist/agent/headless.d.ts +5 -5
  10. package/dist/agent/headless.js +4 -4
  11. package/dist/agent/job-notices.d.ts +1 -1
  12. package/dist/agent/job-notices.js +1 -1
  13. package/dist/agent/kit-apply.d.ts +3 -3
  14. package/dist/agent/kit-apply.js +3 -3
  15. package/dist/agent/model-profile-settings.d.ts +2 -2
  16. package/dist/agent/model-profile-settings.js +6 -6
  17. package/dist/agent/prompt-options.d.ts +1 -1
  18. package/dist/agent/system-prompt.d.ts +1 -1
  19. package/dist/{ui → app}/App.d.ts +9 -9
  20. package/dist/{ui → app}/App.js +79 -79
  21. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  22. package/dist/{ui → app}/use-startup-notices.js +2 -2
  23. package/dist/cli.js +29 -29
  24. package/dist/commands/agents-command.js +1 -1
  25. package/dist/commands/builtins.js +9 -9
  26. package/dist/commands/governance-command.js +2 -2
  27. package/dist/commands/governance-runs-table.js +1 -1
  28. package/dist/commands/kit-command.js +1 -1
  29. package/dist/commands/perf.d.ts +3 -3
  30. package/dist/commands/perf.js +1 -1
  31. package/dist/commands/registry.d.ts +8 -8
  32. package/dist/commands/skills.js +2 -2
  33. package/dist/commands/team-command.js +1 -1
  34. package/dist/compaction/archive.d.ts +1 -1
  35. package/dist/compaction/archive.js +1 -1
  36. package/dist/compaction/child.d.ts +3 -3
  37. package/dist/compaction/child.js +4 -4
  38. package/dist/compaction/command.js +5 -5
  39. package/dist/compaction/compactor.d.ts +6 -6
  40. package/dist/compaction/compactor.js +6 -6
  41. package/dist/compaction/context-command.js +1 -1
  42. package/dist/compaction/digest.js +1 -1
  43. package/dist/compaction/memory-input.js +1 -1
  44. package/dist/compaction/memory-validation.js +1 -1
  45. package/dist/compaction/memory.js +1 -1
  46. package/dist/compaction/summarize-call.js +1 -1
  47. package/dist/compaction/summary-prompt.js +1 -1
  48. package/dist/compaction/tail-budget.js +2 -2
  49. package/dist/compaction/wiring.d.ts +5 -5
  50. package/dist/compaction/wiring.js +2 -2
  51. package/dist/config/cli-commands.d.ts +1 -1
  52. package/dist/config/cli-commands.js +3 -3
  53. package/dist/config/env.d.ts +1 -1
  54. package/dist/config/env.js +4 -4
  55. package/dist/config/load.d.ts +2 -2
  56. package/dist/config/load.js +6 -6
  57. package/dist/config/migrate-state-out-of-config.js +1 -1
  58. package/dist/config/model-profile-store.d.ts +4 -54
  59. package/dist/config/model-profile-store.js +3 -3
  60. package/dist/config/prompt-history.js +1 -1
  61. package/dist/config/store.d.ts +2 -2
  62. package/dist/config/store.js +3 -3
  63. package/dist/diagnostics/doctor.js +4 -4
  64. package/dist/exec/bridge/decisions.d.ts +1 -1
  65. package/dist/exec/bridge/human-answers.d.ts +1 -1
  66. package/dist/exec/bridge/human-answers.js +1 -1
  67. package/dist/exec/bridge/protocol.d.ts +1 -1
  68. package/dist/exec/bridge/server.js +1 -1
  69. package/dist/exec/events.d.ts +2 -2
  70. package/dist/exec/index.d.ts +1 -1
  71. package/dist/exec/index.js +1 -1
  72. package/dist/exec/permission.js +1 -1
  73. package/dist/exec/runner.d.ts +3 -3
  74. package/dist/exec/runner.js +2 -2
  75. package/dist/exec/threads/runtime.js +1 -1
  76. package/dist/fast/digest.d.ts +1 -1
  77. package/dist/fast/digest.js +1 -1
  78. package/dist/fast/frames.d.ts +1 -1
  79. package/dist/fast/frames.js +1 -1
  80. package/dist/fast/prompt.d.ts +1 -1
  81. package/dist/fast/prompt.js +1 -1
  82. package/dist/fast/review-call.js +1 -1
  83. package/dist/fast/reviewer.d.ts +3 -3
  84. package/dist/fast/reviewer.js +1 -1
  85. package/dist/fast/summary-call.d.ts +3 -3
  86. package/dist/fast/summary-call.js +2 -2
  87. package/dist/fast/summary-prompt.d.ts +1 -1
  88. package/dist/fast/summary-prompt.js +1 -1
  89. package/dist/fast/wiring.d.ts +4 -4
  90. package/dist/fast/wiring.js +1 -1
  91. package/dist/governance/card-normalize.d.ts +1 -1
  92. package/dist/governance/copy.d.ts +1 -1
  93. package/dist/governance/copy.js +2 -2
  94. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  95. package/dist/governance/engine/budget.d.ts +1 -1
  96. package/dist/governance/engine/budget.js +1 -1
  97. package/dist/governance/engine/cards.d.ts +1 -1
  98. package/dist/governance/engine/digest.js +1 -1
  99. package/dist/governance/engine/engine-core.d.ts +5 -5
  100. package/dist/governance/engine/engine-core.js +1 -1
  101. package/dist/governance/engine/engine.d.ts +1 -1
  102. package/dist/governance/engine/engine.js +1 -1
  103. package/dist/governance/engine/estimate.d.ts +1 -1
  104. package/dist/governance/engine/estimate.js +1 -1
  105. package/dist/governance/engine/inspector.js +2 -2
  106. package/dist/governance/engine/integration.d.ts +1 -1
  107. package/dist/governance/engine/lifecycle.d.ts +1 -1
  108. package/dist/governance/engine/lifecycle.js +1 -1
  109. package/dist/governance/engine/phase-members.d.ts +1 -1
  110. package/dist/governance/engine/phase-planner.d.ts +1 -1
  111. package/dist/governance/engine/phase-planner.js +1 -1
  112. package/dist/governance/engine/rebuild.d.ts +1 -1
  113. package/dist/governance/engine/report.d.ts +1 -1
  114. package/dist/governance/engine/report.js +1 -1
  115. package/dist/governance/engine/run-digest.d.ts +1 -1
  116. package/dist/governance/engine/spec-builder.d.ts +2 -2
  117. package/dist/governance/engine/spec-builder.js +2 -2
  118. package/dist/governance/engine/stage-runner.js +2 -2
  119. package/dist/governance/engine/start-input.d.ts +1 -1
  120. package/dist/governance/engine/start-input.js +1 -1
  121. package/dist/governance/engine/state-machine.d.ts +1 -1
  122. package/dist/governance/engine/state-machine.js +3 -3
  123. package/dist/governance/engine/submission-queries.d.ts +1 -1
  124. package/dist/governance/engine/submission-render.d.ts +1 -1
  125. package/dist/governance/engine/submissions.d.ts +1 -1
  126. package/dist/governance/engine/submissions.js +1 -1
  127. package/dist/governance/engine/visibility.d.ts +1 -1
  128. package/dist/governance/engine/visibility.js +1 -1
  129. package/dist/governance/posture-transition.d.ts +2 -2
  130. package/dist/governance/posture-transition.js +1 -1
  131. package/dist/governance/profiles.d.ts +1 -1
  132. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  133. package/dist/governance/prompts/orchestrator-block.js +2 -2
  134. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  135. package/dist/governance/prompts/plan-addendum.js +1 -1
  136. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  137. package/dist/governance/prompts/role-blocks.js +1 -1
  138. package/dist/governance/report-reader.js +1 -1
  139. package/dist/governance/roles.d.ts +1 -1
  140. package/dist/governance/rules/claims.d.ts +1 -1
  141. package/dist/governance/rules/claims.js +1 -1
  142. package/dist/governance/rules/elimination.d.ts +1 -1
  143. package/dist/governance/rules/elimination.js +1 -1
  144. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  145. package/dist/governance/rules/failure-analysis.js +1 -1
  146. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  147. package/dist/governance/rules/ledger-state.d.ts +1 -1
  148. package/dist/governance/rules/ledger-state.js +1 -1
  149. package/dist/governance/rules/ledger.d.ts +2 -2
  150. package/dist/governance/rules/ledger.js +2 -2
  151. package/dist/governance/rules/rca.d.ts +1 -1
  152. package/dist/governance/rules/rca.js +1 -1
  153. package/dist/governance/rules/settlement.d.ts +2 -2
  154. package/dist/governance/rules/settlement.js +2 -2
  155. package/dist/governance/rules/suspicion.d.ts +1 -1
  156. package/dist/governance/store/artifacts.d.ts +1 -1
  157. package/dist/governance/store/artifacts.js +1 -1
  158. package/dist/governance/store/events-log.d.ts +1 -1
  159. package/dist/governance/store/run-store.d.ts +1 -1
  160. package/dist/governance/store/run-store.js +1 -1
  161. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  162. package/dist/governance/tools/child-tools.d.ts +1 -1
  163. package/dist/governance/tools/guard.d.ts +1 -1
  164. package/dist/governance/tools/guard.js +1 -1
  165. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  166. package/dist/governance/tools/inspector-tools.js +2 -2
  167. package/dist/governance/tools/lead-tools.d.ts +1 -1
  168. package/dist/governance/tools/lead-tools.js +1 -1
  169. package/dist/governance/tools/normalize-util.js +1 -1
  170. package/dist/governance/tools/scan-incomplete.js +1 -1
  171. package/dist/governance/tools/shared-tools.d.ts +1 -1
  172. package/dist/governance/tools/shared-tools.js +1 -1
  173. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  174. package/dist/governance/tools/submit-normalizers.js +1 -1
  175. package/dist/governance/tools/submit-tools.d.ts +1 -1
  176. package/dist/logging/cli-commands.js +1 -1
  177. package/dist/logging/install.d.ts +1 -1
  178. package/dist/logging/install.js +3 -3
  179. package/dist/logging/logger.d.ts +2 -2
  180. package/dist/logging/logger.js +31 -2
  181. package/dist/proc/kill-tree.js +1 -1
  182. package/dist/proc/log-mirror.js +1 -1
  183. package/dist/proc/log-ring.js +2 -2
  184. package/dist/proc/notices.d.ts +1 -1
  185. package/dist/proc/notices.js +2 -2
  186. package/dist/proc/prompt.d.ts +1 -1
  187. package/dist/proc/prompt.js +1 -1
  188. package/dist/proc/readiness.js +1 -1
  189. package/dist/proc/supervisor.d.ts +1 -1
  190. package/dist/proc/supervisor.js +3 -3
  191. package/dist/proc/wait.d.ts +1 -1
  192. package/dist/proc/wait.js +1 -1
  193. package/dist/prompts/command.d.ts +1 -1
  194. package/dist/prompts/command.js +1 -1
  195. package/dist/prompts/normalize.d.ts +1 -1
  196. package/dist/prompts/normalize.js +1 -1
  197. package/dist/prompts/resolve.d.ts +1 -1
  198. package/dist/prompts/store.d.ts +2 -12
  199. package/dist/prompts/store.js +6 -60
  200. package/dist/session/checkpoint.d.ts +2 -2
  201. package/dist/session/clear-archive.d.ts +2 -2
  202. package/dist/session/persist.d.ts +2 -2
  203. package/dist/session/persist.js +1 -1
  204. package/dist/session/startup-session.d.ts +2 -2
  205. package/dist/session/validate-session.js +3 -3
  206. package/dist/skills/service.d.ts +2 -2
  207. package/dist/team/bus.d.ts +1 -1
  208. package/dist/team/bus.js +1 -1
  209. package/dist/team/child-reviewer.d.ts +2 -2
  210. package/dist/team/child-reviewer.js +1 -1
  211. package/dist/team/comm-tools.js +1 -1
  212. package/dist/team/dispatch-gate.js +1 -1
  213. package/dist/team/forced-dispatch.js +1 -1
  214. package/dist/team/forced-mode.d.ts +1 -1
  215. package/dist/team/forced-prompt.d.ts +1 -1
  216. package/dist/team/forced-prompt.js +1 -1
  217. package/dist/team/normalize.d.ts +1 -1
  218. package/dist/team/normalize.js +1 -1
  219. package/dist/team/overseer.d.ts +3 -3
  220. package/dist/team/overseer.js +3 -3
  221. package/dist/team/prompt.d.ts +1 -1
  222. package/dist/team/prompt.js +1 -1
  223. package/dist/team/report.d.ts +2 -2
  224. package/dist/team/report.js +2 -2
  225. package/dist/team/retry.d.ts +1 -1
  226. package/dist/team/retry.js +1 -1
  227. package/dist/team/runtime.d.ts +4 -4
  228. package/dist/team/runtime.js +2 -2
  229. package/dist/team/settled.d.ts +2 -2
  230. package/dist/team/subagent.d.ts +4 -4
  231. package/dist/team/subagent.js +5 -5
  232. package/dist/team/task-tool.d.ts +1 -1
  233. package/dist/team/task-tool.js +1 -1
  234. package/dist/todo/normalize.d.ts +1 -1
  235. package/dist/todo/normalize.js +1 -1
  236. package/dist/todo/prompt.d.ts +1 -1
  237. package/dist/todo/prompt.js +1 -1
  238. package/dist/todo/store.d.ts +1 -1
  239. package/dist/todo/store.js +2 -2
  240. package/dist/todo/todo-tool.d.ts +1 -1
  241. package/dist/todo/todo-tool.js +2 -2
  242. package/dist/tools/bash-tool.d.ts +1 -1
  243. package/dist/tools/bash-tool.js +2 -2
  244. package/dist/tools/diff.d.ts +1 -1
  245. package/dist/tools/diff.js +1 -1
  246. package/dist/tools/file-change-store.d.ts +1 -1
  247. package/dist/tools/fs-tools.d.ts +2 -2
  248. package/dist/tools/fs-tools.js +1 -1
  249. package/dist/tools/index.d.ts +3 -3
  250. package/dist/tools/index.js +1 -1
  251. package/dist/tools/job-tools.d.ts +2 -2
  252. package/dist/tools/job-tools.js +4 -4
  253. package/dist/tools/plan-tools.d.ts +1 -1
  254. package/dist/tools/plan-tools.js +1 -1
  255. package/dist/tools/proc-tools.d.ts +1 -1
  256. package/dist/tools/proc-tools.js +2 -2
  257. package/dist/update/classify-failure.d.ts +1 -1
  258. package/dist/update/install-lock.js +1 -1
  259. package/dist/update/install-source.d.ts +1 -1
  260. package/dist/update/installer.js +2 -2
  261. package/dist/update/npm-view.d.ts +1 -1
  262. package/dist/update/npm-view.js +1 -1
  263. package/dist/update/registry.d.ts +1 -1
  264. package/dist/update/registry.js +1 -1
  265. package/dist/update/service.d.ts +2 -2
  266. package/dist/update/service.js +2 -2
  267. package/package.json +7 -7
  268. package/dist/agent/agent-mode.d.ts +0 -108
  269. package/dist/agent/agent-mode.js +0 -121
  270. package/dist/agent/entry-limits.d.ts +0 -65
  271. package/dist/agent/entry-limits.js +0 -133
  272. package/dist/agent/governance-view.d.ts +0 -40
  273. package/dist/agent/governance-view.js +0 -40
  274. package/dist/agent/invocation-card.d.ts +0 -77
  275. package/dist/agent/invocation-card.js +0 -169
  276. package/dist/agent/model-probe-limits.d.ts +0 -39
  277. package/dist/agent/model-probe-limits.js +0 -25
  278. package/dist/agent/model-probe.d.ts +0 -104
  279. package/dist/agent/model-probe.js +0 -391
  280. package/dist/agent/queued-messages.d.ts +0 -23
  281. package/dist/agent/queued-messages.js +0 -49
  282. package/dist/agent/reducer.d.ts +0 -857
  283. package/dist/agent/reducer.js +0 -1646
  284. package/dist/agent/retry-view.d.ts +0 -68
  285. package/dist/agent/retry-view.js +0 -95
  286. package/dist/agent/usage.d.ts +0 -47
  287. package/dist/agent/usage.js +0 -84
  288. package/dist/compaction/limits.d.ts +0 -61
  289. package/dist/compaction/limits.js +0 -64
  290. package/dist/compaction/meter.d.ts +0 -276
  291. package/dist/compaction/meter.js +0 -512
  292. package/dist/compaction/pressure.d.ts +0 -163
  293. package/dist/compaction/pressure.js +0 -199
  294. package/dist/compaction/reason-text.d.ts +0 -36
  295. package/dist/compaction/reason-text.js +0 -78
  296. package/dist/compaction/types.d.ts +0 -360
  297. package/dist/compaction/types.js +0 -22
  298. package/dist/config/governance-config.d.ts +0 -125
  299. package/dist/config/governance-config.js +0 -164
  300. package/dist/config/kit-resolution.d.ts +0 -93
  301. package/dist/config/kit-resolution.js +0 -226
  302. package/dist/config/model-kits.d.ts +0 -225
  303. package/dist/config/model-kits.js +0 -302
  304. package/dist/config/model-profile-resolution.d.ts +0 -28
  305. package/dist/config/model-profile-resolution.js +0 -88
  306. package/dist/config/model-profiles.d.ts +0 -103
  307. package/dist/config/model-profiles.js +0 -188
  308. package/dist/config/schema.d.ts +0 -1645
  309. package/dist/config/schema.js +0 -1383
  310. package/dist/fast/limits.d.ts +0 -152
  311. package/dist/fast/limits.js +0 -152
  312. package/dist/fast/resolve.d.ts +0 -44
  313. package/dist/fast/resolve.js +0 -107
  314. package/dist/fast/task-summary-types.d.ts +0 -66
  315. package/dist/fast/task-summary-types.js +0 -17
  316. package/dist/fast/types.d.ts +0 -141
  317. package/dist/fast/types.js +0 -14
  318. package/dist/governance/governed-dispatch.d.ts +0 -19
  319. package/dist/governance/governed-dispatch.js +0 -17
  320. package/dist/governance/limits.d.ts +0 -107
  321. package/dist/governance/limits.js +0 -131
  322. package/dist/governance/posture.d.ts +0 -35
  323. package/dist/governance/posture.js +0 -59
  324. package/dist/governance/rules/events-table.d.ts +0 -46
  325. package/dist/governance/rules/events-table.js +0 -94
  326. package/dist/governance/types.d.ts +0 -661
  327. package/dist/governance/types.js +0 -27
  328. package/dist/input/control-sequences.d.ts +0 -71
  329. package/dist/input/control-sequences.js +0 -222
  330. package/dist/input/csiu-keys.d.ts +0 -66
  331. package/dist/input/csiu-keys.js +0 -181
  332. package/dist/input/cursor-report.d.ts +0 -61
  333. package/dist/input/cursor-report.js +0 -97
  334. package/dist/input/enter-sequences.d.ts +0 -64
  335. package/dist/input/enter-sequences.js +0 -153
  336. package/dist/input/interrupt-gesture.d.ts +0 -18
  337. package/dist/input/interrupt-gesture.js +0 -19
  338. package/dist/input/keyboard-enhancement.d.ts +0 -42
  339. package/dist/input/keyboard-enhancement.js +0 -65
  340. package/dist/input/keymap.d.ts +0 -20
  341. package/dist/input/keymap.js +0 -99
  342. package/dist/input/limits.d.ts +0 -118
  343. package/dist/input/limits.js +0 -109
  344. package/dist/input/mouse-events.d.ts +0 -87
  345. package/dist/input/mouse-events.js +0 -212
  346. package/dist/input/paste-parse.d.ts +0 -83
  347. package/dist/input/paste-parse.js +0 -107
  348. package/dist/input/pointer-router.d.ts +0 -11
  349. package/dist/input/pointer-router.js +0 -14
  350. package/dist/input/stdin-filter.d.ts +0 -112
  351. package/dist/input/stdin-filter.js +0 -657
  352. package/dist/input/win32-input-mode.d.ts +0 -61
  353. package/dist/input/win32-input-mode.js +0 -269
  354. package/dist/logging/levels.d.ts +0 -40
  355. package/dist/logging/levels.js +0 -59
  356. package/dist/logging/secret-registry.d.ts +0 -32
  357. package/dist/logging/secret-registry.js +0 -73
  358. package/dist/proc/limits.d.ts +0 -214
  359. package/dist/proc/limits.js +0 -221
  360. package/dist/proc/progress.d.ts +0 -47
  361. package/dist/proc/progress.js +0 -163
  362. package/dist/proc/types.d.ts +0 -269
  363. package/dist/proc/types.js +0 -15
  364. package/dist/proc/wait-view.d.ts +0 -65
  365. package/dist/proc/wait-view.js +0 -66
  366. package/dist/prompts/copy.d.ts +0 -89
  367. package/dist/prompts/copy.js +0 -131
  368. package/dist/prompts/fill.d.ts +0 -51
  369. package/dist/prompts/fill.js +0 -46
  370. package/dist/prompts/limits.d.ts +0 -53
  371. package/dist/prompts/limits.js +0 -53
  372. package/dist/prompts/search.d.ts +0 -58
  373. package/dist/prompts/search.js +0 -146
  374. package/dist/prompts/types.d.ts +0 -204
  375. package/dist/prompts/types.js +0 -13
  376. package/dist/team/activity.d.ts +0 -67
  377. package/dist/team/activity.js +0 -130
  378. package/dist/team/limits.d.ts +0 -308
  379. package/dist/team/limits.js +0 -330
  380. package/dist/team/model.d.ts +0 -104
  381. package/dist/team/model.js +0 -150
  382. package/dist/team/panel-rows.d.ts +0 -48
  383. package/dist/team/panel-rows.js +0 -75
  384. package/dist/team/timeline.d.ts +0 -74
  385. package/dist/team/timeline.js +0 -101
  386. package/dist/team/types.d.ts +0 -354
  387. package/dist/team/types.js +0 -13
  388. package/dist/todo/acceptance.d.ts +0 -120
  389. package/dist/todo/acceptance.js +0 -399
  390. package/dist/todo/follow-through.d.ts +0 -138
  391. package/dist/todo/follow-through.js +0 -248
  392. package/dist/todo/limits.d.ts +0 -152
  393. package/dist/todo/limits.js +0 -152
  394. package/dist/todo/panel-rows.d.ts +0 -45
  395. package/dist/todo/panel-rows.js +0 -70
  396. package/dist/todo/plan-sections.d.ts +0 -60
  397. package/dist/todo/plan-sections.js +0 -108
  398. package/dist/todo/row-window.d.ts +0 -51
  399. package/dist/todo/row-window.js +0 -107
  400. package/dist/todo/types.d.ts +0 -124
  401. package/dist/todo/types.js +0 -12
  402. package/dist/tools/human-input.d.ts +0 -212
  403. package/dist/tools/human-input.js +0 -265
  404. package/dist/tools/patch.d.ts +0 -115
  405. package/dist/tools/patch.js +0 -453
  406. package/dist/tools/terminal-output.d.ts +0 -115
  407. package/dist/tools/terminal-output.js +0 -201
  408. package/dist/tools/tool-output-store.d.ts +0 -68
  409. package/dist/tools/tool-output-store.js +0 -102
  410. package/dist/ui/ActivityLine.d.ts +0 -26
  411. package/dist/ui/ActivityLine.js +0 -51
  412. package/dist/ui/AutocompletePopup.d.ts +0 -23
  413. package/dist/ui/AutocompletePopup.js +0 -17
  414. package/dist/ui/BottomStatusRow.d.ts +0 -10
  415. package/dist/ui/BottomStatusRow.js +0 -9
  416. package/dist/ui/Composer.d.ts +0 -115
  417. package/dist/ui/Composer.js +0 -64
  418. package/dist/ui/GovernancePanel.d.ts +0 -50
  419. package/dist/ui/GovernancePanel.js +0 -77
  420. package/dist/ui/GovernanceRun.d.ts +0 -18
  421. package/dist/ui/GovernanceRun.js +0 -11
  422. package/dist/ui/Header.d.ts +0 -48
  423. package/dist/ui/Header.js +0 -27
  424. package/dist/ui/Logo.d.ts +0 -32
  425. package/dist/ui/Logo.js +0 -65
  426. package/dist/ui/Markdown.d.ts +0 -29
  427. package/dist/ui/Markdown.js +0 -116
  428. package/dist/ui/PromptCaret.d.ts +0 -11
  429. package/dist/ui/PromptCaret.js +0 -31
  430. package/dist/ui/PromptInput.d.ts +0 -192
  431. package/dist/ui/PromptInput.js +0 -689
  432. package/dist/ui/QueuePanel.d.ts +0 -8
  433. package/dist/ui/QueuePanel.js +0 -9
  434. package/dist/ui/QueueStatusRow.d.ts +0 -24
  435. package/dist/ui/QueueStatusRow.js +0 -51
  436. package/dist/ui/ScrollbackShell.d.ts +0 -132
  437. package/dist/ui/ScrollbackShell.js +0 -26
  438. package/dist/ui/SessionOpener.d.ts +0 -30
  439. package/dist/ui/SessionOpener.js +0 -12
  440. package/dist/ui/StatusBar.d.ts +0 -130
  441. package/dist/ui/StatusBar.js +0 -61
  442. package/dist/ui/TeamPanel.d.ts +0 -76
  443. package/dist/ui/TeamPanel.js +0 -103
  444. package/dist/ui/ToastStack.d.ts +0 -8
  445. package/dist/ui/ToastStack.js +0 -31
  446. package/dist/ui/TodoPanel.d.ts +0 -52
  447. package/dist/ui/TodoPanel.js +0 -214
  448. package/dist/ui/Transcript.d.ts +0 -105
  449. package/dist/ui/Transcript.js +0 -258
  450. package/dist/ui/UpdateLine.d.ts +0 -44
  451. package/dist/ui/UpdateLine.js +0 -129
  452. package/dist/ui/activity-phrases.d.ts +0 -33
  453. package/dist/ui/activity-phrases.js +0 -50
  454. package/dist/ui/capabilities.d.ts +0 -27
  455. package/dist/ui/capabilities.js +0 -65
  456. package/dist/ui/clipboard-task.d.ts +0 -29
  457. package/dist/ui/clipboard-task.js +0 -66
  458. package/dist/ui/clipboard.d.ts +0 -31
  459. package/dist/ui/clipboard.js +0 -157
  460. package/dist/ui/color-runtime.d.ts +0 -5
  461. package/dist/ui/color-runtime.js +0 -29
  462. package/dist/ui/composer-input.d.ts +0 -38
  463. package/dist/ui/composer-input.js +0 -79
  464. package/dist/ui/composer-limits.d.ts +0 -30
  465. package/dist/ui/composer-limits.js +0 -45
  466. package/dist/ui/composer-rows.d.ts +0 -73
  467. package/dist/ui/composer-rows.js +0 -129
  468. package/dist/ui/console-bridge.d.ts +0 -19
  469. package/dist/ui/console-bridge.js +0 -52
  470. package/dist/ui/density.d.ts +0 -26
  471. package/dist/ui/density.js +0 -34
  472. package/dist/ui/display-tab.d.ts +0 -51
  473. package/dist/ui/display-tab.js +0 -82
  474. package/dist/ui/editor-navigation.d.ts +0 -55
  475. package/dist/ui/editor-navigation.js +0 -96
  476. package/dist/ui/editor-reducer.d.ts +0 -108
  477. package/dist/ui/editor-reducer.js +0 -187
  478. package/dist/ui/enter-frames.d.ts +0 -47
  479. package/dist/ui/enter-frames.js +0 -117
  480. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  481. package/dist/ui/entries/AssistantEntry.js +0 -43
  482. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  483. package/dist/ui/entries/CompactionCard.js +0 -222
  484. package/dist/ui/entries/DiffView.d.ts +0 -61
  485. package/dist/ui/entries/DiffView.js +0 -103
  486. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  487. package/dist/ui/entries/EntryFrame.js +0 -6
  488. package/dist/ui/entries/FastCard.d.ts +0 -53
  489. package/dist/ui/entries/FastCard.js +0 -105
  490. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  491. package/dist/ui/entries/GovernanceCard.js +0 -32
  492. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  493. package/dist/ui/entries/InvocationCard.js +0 -32
  494. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  495. package/dist/ui/entries/QueuedEntry.js +0 -33
  496. package/dist/ui/entries/RetryCard.d.ts +0 -56
  497. package/dist/ui/entries/RetryCard.js +0 -60
  498. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  499. package/dist/ui/entries/ServiceCard.js +0 -151
  500. package/dist/ui/entries/TeamCard.d.ts +0 -55
  501. package/dist/ui/entries/TeamCard.js +0 -94
  502. package/dist/ui/entries/TodoCard.d.ts +0 -54
  503. package/dist/ui/entries/TodoCard.js +0 -98
  504. package/dist/ui/entries/ToolCard.d.ts +0 -81
  505. package/dist/ui/entries/ToolCard.js +0 -169
  506. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  507. package/dist/ui/entries/ToolPreview.js +0 -208
  508. package/dist/ui/entries/UserEntry.d.ts +0 -36
  509. package/dist/ui/entries/UserEntry.js +0 -57
  510. package/dist/ui/entries/WaitCard.d.ts +0 -37
  511. package/dist/ui/entries/WaitCard.js +0 -92
  512. package/dist/ui/exit-snapshot.d.ts +0 -43
  513. package/dist/ui/exit-snapshot.js +0 -26
  514. package/dist/ui/frame-differ.d.ts +0 -166
  515. package/dist/ui/frame-differ.js +0 -354
  516. package/dist/ui/frame-observer.d.ts +0 -17
  517. package/dist/ui/frame-observer.js +0 -94
  518. package/dist/ui/frame-parser.d.ts +0 -7
  519. package/dist/ui/frame-parser.js +0 -18
  520. package/dist/ui/gauge.d.ts +0 -39
  521. package/dist/ui/gauge.js +0 -55
  522. package/dist/ui/glyphs.d.ts +0 -178
  523. package/dist/ui/glyphs.js +0 -165
  524. package/dist/ui/governance-copy.d.ts +0 -69
  525. package/dist/ui/governance-copy.js +0 -104
  526. package/dist/ui/governance-status.d.ts +0 -145
  527. package/dist/ui/governance-status.js +0 -326
  528. package/dist/ui/gradient.d.ts +0 -11
  529. package/dist/ui/gradient.js +0 -50
  530. package/dist/ui/ink-runtime.d.ts +0 -4
  531. package/dist/ui/ink-runtime.js +0 -51
  532. package/dist/ui/interaction-copy.d.ts +0 -84
  533. package/dist/ui/interaction-copy.js +0 -41
  534. package/dist/ui/interaction-hints.d.ts +0 -44
  535. package/dist/ui/interaction-hints.js +0 -97
  536. package/dist/ui/layout/AppShell.d.ts +0 -17
  537. package/dist/ui/layout/AppShell.js +0 -6
  538. package/dist/ui/layout/Gutter.d.ts +0 -67
  539. package/dist/ui/layout/Gutter.js +0 -42
  540. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  541. package/dist/ui/layout/MeasuredEntry.js +0 -30
  542. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  543. package/dist/ui/layout/OverlayFrame.js +0 -110
  544. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  545. package/dist/ui/layout/ScrollIndicator.js +0 -22
  546. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  547. package/dist/ui/layout/ScrollViewport.js +0 -222
  548. package/dist/ui/layout/agents-board.d.ts +0 -102
  549. package/dist/ui/layout/agents-board.js +0 -389
  550. package/dist/ui/layout/autocomplete.d.ts +0 -18
  551. package/dist/ui/layout/autocomplete.js +0 -26
  552. package/dist/ui/layout/budget.d.ts +0 -43
  553. package/dist/ui/layout/budget.js +0 -52
  554. package/dist/ui/layout/cells.d.ts +0 -61
  555. package/dist/ui/layout/cells.js +0 -156
  556. package/dist/ui/layout/document-layout.d.ts +0 -13
  557. package/dist/ui/layout/document-layout.js +0 -10
  558. package/dist/ui/layout/follow-state.d.ts +0 -138
  559. package/dist/ui/layout/follow-state.js +0 -148
  560. package/dist/ui/layout/frame.d.ts +0 -36
  561. package/dist/ui/layout/frame.js +0 -39
  562. package/dist/ui/layout/governance-board.d.ts +0 -121
  563. package/dist/ui/layout/governance-board.js +0 -382
  564. package/dist/ui/layout/governance-card.d.ts +0 -53
  565. package/dist/ui/layout/governance-card.js +0 -134
  566. package/dist/ui/layout/governance-chip.d.ts +0 -38
  567. package/dist/ui/layout/governance-chip.js +0 -64
  568. package/dist/ui/layout/governance-panel.d.ts +0 -85
  569. package/dist/ui/layout/governance-panel.js +0 -358
  570. package/dist/ui/layout/governance-roster.d.ts +0 -65
  571. package/dist/ui/layout/governance-roster.js +0 -275
  572. package/dist/ui/layout/header-hints.d.ts +0 -90
  573. package/dist/ui/layout/header-hints.js +0 -110
  574. package/dist/ui/layout/header-left.d.ts +0 -115
  575. package/dist/ui/layout/header-left.js +0 -206
  576. package/dist/ui/layout/invocation-card.d.ts +0 -41
  577. package/dist/ui/layout/invocation-card.js +0 -91
  578. package/dist/ui/layout/kit-chip.d.ts +0 -50
  579. package/dist/ui/layout/kit-chip.js +0 -81
  580. package/dist/ui/layout/overlay-window.d.ts +0 -43
  581. package/dist/ui/layout/overlay-window.js +0 -51
  582. package/dist/ui/layout/queue-layout.d.ts +0 -19
  583. package/dist/ui/layout/queue-layout.js +0 -26
  584. package/dist/ui/layout/rail.d.ts +0 -7
  585. package/dist/ui/layout/rail.js +0 -16
  586. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  587. package/dist/ui/layout/scroll-indicator.js +0 -36
  588. package/dist/ui/layout/scroll.d.ts +0 -37
  589. package/dist/ui/layout/scroll.js +0 -99
  590. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  591. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  592. package/dist/ui/layout/session-chip.d.ts +0 -52
  593. package/dist/ui/layout/session-chip.js +0 -64
  594. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  595. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  596. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  597. package/dist/ui/layout/status-detail-layout.js +0 -79
  598. package/dist/ui/layout/status-layout.d.ts +0 -140
  599. package/dist/ui/layout/status-layout.js +0 -262
  600. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  601. package/dist/ui/layout/task-summary-cell.js +0 -65
  602. package/dist/ui/layout/team-panel.d.ts +0 -18
  603. package/dist/ui/layout/team-panel.js +0 -25
  604. package/dist/ui/layout/team-row.d.ts +0 -139
  605. package/dist/ui/layout/team-row.js +0 -246
  606. package/dist/ui/layout/todo-layout.d.ts +0 -62
  607. package/dist/ui/layout/todo-layout.js +0 -102
  608. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  609. package/dist/ui/layout/useTerminalSize.js +0 -50
  610. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  611. package/dist/ui/layout/viewport-geometry.js +0 -28
  612. package/dist/ui/layout/virtual-window.d.ts +0 -112
  613. package/dist/ui/layout/virtual-window.js +0 -494
  614. package/dist/ui/layout/wait-bar.d.ts +0 -34
  615. package/dist/ui/layout/wait-bar.js +0 -48
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -63
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -130
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,60 +0,0 @@
1
- /**
2
- * The rail's two-section row allocation (todo-acceptance-criteria §6.9.2).
3
- *
4
- * ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope.
5
- *
6
- * ONE ROW IDENTITY, DEFINED BEFORE IT IS IMPLEMENTED, and it is the only
7
- * bookkeeping this feature does:
8
- *
9
- * showGauge 1 row when the gauge rule fires (width >= 20, rows >= 8)
10
- * + 1 the TODO header row
11
- * + (compact ? 0 : 1) ONE blank row: the full rail has it, the compact rail does not
12
- * + todoItemRows
13
- * + Number(todoFooter)
14
- * + (acc ? acc.headerRows + acc.itemRows : 0)
15
- * <= rows
16
- *
17
- * `overhead = 3` appears only in the full rung with a `visible` second section:
18
- * 1 TODO header + 1 blank row + 1 ACCEPT header. THAT BLANK ROW IS THE SAME ROW
19
- * TWICE OVER - it is the breathing space under the TODO header AND the separator
20
- * between the two sections - so counting it twice overflows the box by one row,
21
- * and Ink's `overflow="hidden"` clips the overflow silently. The symptom a user
22
- * reports is "the panel only shows 2 criteria", which is why this comment is at
23
- * the top of the file rather than next to the arithmetic.
24
- *
25
- * PURE: no I/O, no timers, no imports from `ui/**`. The rail renders what this
26
- * returns; `/perf` reports the `acceptance.reason` it returns; the status-bar chip
27
- * asks it whether the rail is already reporting the count. One number, one owner.
28
- */
29
- import type { PlanPhase } from './types.js';
30
- export interface PlanSectionsInput {
31
- /** The rail's whole row budget (`TodoPanel`'s `rows` prop). */
32
- rows: number;
33
- /** The rail's whole column budget, chrome included. */
34
- width: number;
35
- phase: PlanPhase;
36
- todoCount: number;
37
- /** 0 means "no acceptance section at all". */
38
- acceptanceCount: number;
39
- /** Decided by `TodoPanel` under the existing gauge rule (width >= 20, rows >= 8). */
40
- showGauge: boolean;
41
- }
42
- /**
43
- * `visible` - header row plus item rows.
44
- * `summary` - one row only (`AC 2/5`), no header, no items.
45
- * `absent` - nothing at all; the count has to reach the status-bar chip (I-7).
46
- */
47
- export type AcceptanceSectionReason = 'visible' | 'summary' | 'absent';
48
- export interface PlanSections {
49
- todoItemRows: number;
50
- /** Whether the `-N +M` footer is drawn (the existing `compactFooter` semantics). */
51
- todoFooter: boolean;
52
- acceptance: {
53
- reason: AcceptanceSectionReason;
54
- /** 1 = header row drawn; 0 = summary row only. */
55
- headerRows: number;
56
- /** > 0 to draw item rows. */
57
- itemRows: number;
58
- } | null;
59
- }
60
- export declare function buildPlanSections(input: PlanSectionsInput): PlanSections;
@@ -1,108 +0,0 @@
1
- /**
2
- * The rail's two-section row allocation (todo-acceptance-criteria §6.9.2).
3
- *
4
- * ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope.
5
- *
6
- * ONE ROW IDENTITY, DEFINED BEFORE IT IS IMPLEMENTED, and it is the only
7
- * bookkeeping this feature does:
8
- *
9
- * showGauge 1 row when the gauge rule fires (width >= 20, rows >= 8)
10
- * + 1 the TODO header row
11
- * + (compact ? 0 : 1) ONE blank row: the full rail has it, the compact rail does not
12
- * + todoItemRows
13
- * + Number(todoFooter)
14
- * + (acc ? acc.headerRows + acc.itemRows : 0)
15
- * <= rows
16
- *
17
- * `overhead = 3` appears only in the full rung with a `visible` second section:
18
- * 1 TODO header + 1 blank row + 1 ACCEPT header. THAT BLANK ROW IS THE SAME ROW
19
- * TWICE OVER - it is the breathing space under the TODO header AND the separator
20
- * between the two sections - so counting it twice overflows the box by one row,
21
- * and Ink's `overflow="hidden"` clips the overflow silently. The symptom a user
22
- * reports is "the panel only shows 2 criteria", which is why this comment is at
23
- * the top of the file rather than next to the arithmetic.
24
- *
25
- * PURE: no I/O, no timers, no imports from `ui/**`. The rail renders what this
26
- * returns; `/perf` reports the `acceptance.reason` it returns; the status-bar chip
27
- * asks it whether the rail is already reporting the count. One number, one owner.
28
- */
29
- import { TODO_LIMITS } from './limits.js';
30
- /**
31
- * Clamp, and NEVER silently reverse: `clampRows` requires `lo <= hi` at the call
32
- * site, which every branch below establishes before it calls (§6.9.2, P2-5).
33
- * `clampRows(x, 1, 0)` would return 0 - a panel that draws no acceptance rows and
34
- * says nothing about why.
35
- */
36
- function clampRows(value, lo, hi) {
37
- return Math.min(Math.max(value, lo), hi);
38
- }
39
- /**
40
- * The share of the item budget a `work`/`done` rail gives the criteria: 0.3, so the
41
- * two sections trade rows rather than one starving the other (§6.9.2 step 6). The
42
- * `verify` phase does not use it - there the criteria take everything above one row.
43
- */
44
- const ACCEPTANCE_SHARE = 0.3;
45
- export function buildPlanSections(input) {
46
- const rows = Math.max(0, Math.floor(input.rows));
47
- const acceptanceCount = Math.max(0, Math.floor(input.acceptanceCount));
48
- const todoCount = Math.max(0, Math.floor(input.todoCount));
49
- // 1. The existing definition of "compact", unchanged.
50
- const compact = rows < TODO_LIMITS.panelFullRows;
51
- // 2. What is left after the gauge, unchanged.
52
- const available = rows - Number(input.showGauge);
53
- // 3. The existing footer rule, unchanged.
54
- const todoFooter = compact && todoCount > rows - 1;
55
- // 4. No criteria: BYTE-IDENTICAL to the pre-feature arithmetic (I-5).
56
- if (acceptanceCount === 0) {
57
- return {
58
- todoItemRows: compact
59
- ? rows - 1 - Number(todoFooter)
60
- : rows - 2 - Number(input.showGauge),
61
- todoFooter,
62
- acceptance: null,
63
- };
64
- }
65
- // 5. Compact rung: rows in {3,4,5}, the gauge never fires, available === rows.
66
- if (compact) {
67
- const base = rows - 1 - Number(todoFooter);
68
- // Lend one row to the summary line, but never the TODO window's last row.
69
- // `absent` is reachable ONLY at rows === 3 with a footer (base === 1), which
70
- // is the one "panel is up, section is not" combination (AC-34).
71
- if (base - 1 >= 1) {
72
- return {
73
- todoItemRows: base - 1,
74
- todoFooter,
75
- acceptance: { reason: 'summary', headerRows: 0, itemRows: 1 },
76
- };
77
- }
78
- return {
79
- todoItemRows: base,
80
- todoFooter,
81
- acceptance: { reason: 'absent', headerRows: 0, itemRows: 0 },
82
- };
83
- }
84
- // 6. Full rung: rows >= 6. Three rows of chrome for the second section.
85
- const budget = available - 3;
86
- if (input.phase === 'verify') {
87
- // Every step is done, so the step list carries no information - one row says
88
- // so and the rest goes to the criteria the eye is actually on (D-7).
89
- return {
90
- todoItemRows: 1,
91
- todoFooter: false,
92
- acceptance: {
93
- reason: 'visible',
94
- headerRows: 1,
95
- itemRows: clampRows(budget - 1, 1, acceptanceCount),
96
- },
97
- };
98
- }
99
- // `work` AND `done` share this branch on purpose: a plan that just passed every
100
- // criterion must keep showing the table it passed - that is the screen the user
101
- // wants to read - rather than fold like `verify` does.
102
- const accItemRows = clampRows(Math.round(budget * ACCEPTANCE_SHARE), 1, Math.min(acceptanceCount, budget - 1));
103
- return {
104
- todoItemRows: budget - accItemRows,
105
- todoFooter: false,
106
- acceptance: { reason: 'visible', headerRows: 1, itemRows: accItemRows },
107
- };
108
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * `selectRowsAround` — the generic anchored window (todo-acceptance-criteria §6.9.4).
3
-
4
- ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope.
5
-
6
- PURE WINDOWING, NO OFFSET STATE ANYWHERE (non-goal 2 / R-10). Ink has no absolute
7
- positioning and this codebase already owns one hand-rolled viewport
8
- (`ScrollViewport`) whose invariants took a whole spec to pin down; a second
9
- scrollable region with its own offset, its own intent nonce and its own wheel band
10
- would be the largest source of new bugs in that feature by a wide margin. The rail
11
- therefore never scrolls - it windows around the row being worked on and reports
12
- what is off each end.
13
-
14
- THE DIRECT DESCENDANT OF `selectPanelRows`'s F-2 LESSON: the team panel originally
15
- took the first five children by ARRAY INDEX, which showed the five that finished
16
- FIRST and hid everything still working. Here the equivalent mistake is
17
- `slice(0, maxRows)`, which on a 20-row plan shows rows 1-8 - all completed - and
18
- hides the one the user is actually watching.
19
-
20
- GENERIC OVER THE ROW TYPE (todo-acceptance-criteria §6.9.4): the todo window and
21
- the acceptance window are the same algorithm over two different item shapes, so
22
- the anchored-window fixpoint lives here once and three thin wrappers expose it.
23
- The wrappers' outputs are field-for-field identical to the original todo-only
24
- implementation (AC-13).
25
- */
26
- export interface RowWindow<T> {
27
- visible: {
28
- item: T;
29
- index: number;
30
- }[];
31
- hiddenAbove: number;
32
- hiddenBelow: number;
33
- }
34
- /**
35
- * The anchored contiguous window, WITHOUT reserving overflow-marker rows.
36
- *
37
- * `maxRows` is a row count; invalid or non-positive values return an empty window
38
- * with every row counted below it, which is what makes a caller whose arithmetic
39
- * produced 0 render nothing rather than render everything.
40
- */
41
- export declare function selectCompactRowsAround<T>(items: readonly T[], maxRows: number, anchor: (items: readonly T[]) => number): RowWindow<T>;
42
- /**
43
- * The anchored window WITH the two overflow markers accounted for.
44
- *
45
- * THE ANCHOR IS ALWAYS VISIBLE, and that beats the row bound when the two
46
- * conflict. They can only conflict below `maxRows` 3 with overflow on BOTH sides
47
- * - one row plus two markers is three rows - where this returns the anchor and
48
- * lets the caller's `overflow="hidden"` clip a marker. Hiding the one row the user
49
- * is watching in order to keep a `+N above` would be the wrong trade.
50
- */
51
- export declare function selectRowsAround<T>(items: readonly T[], maxRows: number, anchor: (items: readonly T[]) => number): RowWindow<T>;
@@ -1,107 +0,0 @@
1
- /**
2
- * `selectRowsAround` — the generic anchored window (todo-acceptance-criteria §6.9.4).
3
-
4
- ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope.
5
-
6
- PURE WINDOWING, NO OFFSET STATE ANYWHERE (non-goal 2 / R-10). Ink has no absolute
7
- positioning and this codebase already owns one hand-rolled viewport
8
- (`ScrollViewport`) whose invariants took a whole spec to pin down; a second
9
- scrollable region with its own offset, its own intent nonce and its own wheel band
10
- would be the largest source of new bugs in that feature by a wide margin. The rail
11
- therefore never scrolls - it windows around the row being worked on and reports
12
- what is off each end.
13
-
14
- THE DIRECT DESCENDANT OF `selectPanelRows`'s F-2 LESSON: the team panel originally
15
- took the first five children by ARRAY INDEX, which showed the five that finished
16
- FIRST and hid everything still working. Here the equivalent mistake is
17
- `slice(0, maxRows)`, which on a 20-row plan shows rows 1-8 - all completed - and
18
- hides the one the user is actually watching.
19
-
20
- GENERIC OVER THE ROW TYPE (todo-acceptance-criteria §6.9.4): the todo window and
21
- the acceptance window are the same algorithm over two different item shapes, so
22
- the anchored-window fixpoint lives here once and three thin wrappers expose it.
23
- The wrappers' outputs are field-for-field identical to the original todo-only
24
- implementation (AC-13).
25
- */
26
- /**
27
- * How much of the window sits ABOVE the anchor.
28
- *
29
- * A QUARTER, and the asymmetry is the point: completed context above the anchor
30
- * is sacrificed before upcoming work below it, because the user's question is
31
- * "what is next", not "what is behind me".
32
- */
33
- const ABOVE_SHARE = 0.25;
34
- function windowFor(count, anchor, slots) {
35
- if (slots >= count)
36
- return { start: 0, end: count };
37
- const above = Math.min(anchor, Math.max(0, Math.floor((slots - 1) * ABOVE_SHARE)));
38
- let start = anchor - above;
39
- let end = start + slots;
40
- if (end > count) {
41
- end = count;
42
- start = Math.max(0, end - slots);
43
- }
44
- return { start, end };
45
- }
46
- /**
47
- * The anchored contiguous window, WITHOUT reserving overflow-marker rows.
48
- *
49
- * `maxRows` is a row count; invalid or non-positive values return an empty window
50
- * with every row counted below it, which is what makes a caller whose arithmetic
51
- * produced 0 render nothing rather than render everything.
52
- */
53
- export function selectCompactRowsAround(items, maxRows, anchor) {
54
- const slots = Number.isFinite(maxRows) ? Math.max(0, Math.floor(maxRows)) : 0;
55
- if (slots === 0 || items.length === 0) {
56
- return { visible: [], hiddenAbove: 0, hiddenBelow: items.length };
57
- }
58
- const { start, end } = windowFor(items.length, anchor(items), slots);
59
- return {
60
- visible: items.slice(start, end).map((item, offset) => ({ item, index: start + offset })),
61
- hiddenAbove: start,
62
- hiddenBelow: items.length - end,
63
- };
64
- }
65
- /**
66
- * The anchored window WITH the two overflow markers accounted for.
67
- *
68
- * THE ANCHOR IS ALWAYS VISIBLE, and that beats the row bound when the two
69
- * conflict. They can only conflict below `maxRows` 3 with overflow on BOTH sides
70
- * - one row plus two markers is three rows - where this returns the anchor and
71
- * lets the caller's `overflow="hidden"` clip a marker. Hiding the one row the user
72
- * is watching in order to keep a `+N above` would be the wrong trade.
73
- */
74
- export function selectRowsAround(items, maxRows, anchor) {
75
- const count = items.length;
76
- const anchorIndex = anchor(items);
77
- if (count === 0)
78
- return { visible: [], hiddenAbove: 0, hiddenBelow: 0 };
79
- if (maxRows <= 0) {
80
- return {
81
- visible: [],
82
- hiddenAbove: anchorIndex,
83
- hiddenBelow: count - 1 - anchorIndex,
84
- };
85
- }
86
- // The marker rows and the window depend on each other: a `+N above` row costs a
87
- // slot, which can shrink the window, which can create a `+N below`. Two passes
88
- // reach the fixpoint for every input this can be handed; the loop bound is a
89
- // backstop, not a live case.
90
- let reserved = 0;
91
- let start = 0;
92
- let end = count;
93
- for (let pass = 0; pass < 3; pass += 1) {
94
- const slots = Math.max(1, maxRows - reserved);
95
- const win = windowFor(count, anchorIndex, slots);
96
- start = win.start;
97
- end = win.end;
98
- const need = (start > 0 ? 1 : 0) + (end < count ? 1 : 0);
99
- if (need === reserved)
100
- break;
101
- reserved = need;
102
- }
103
- const visible = [];
104
- for (let i = start; i < end; i += 1)
105
- visible.push({ item: items[i], index: i });
106
- return { visible, hiddenAbove: start, hiddenBelow: count - end };
107
- }
@@ -1,124 +0,0 @@
1
- /**
2
- * Runtime shapes for the todo subsystem (todo-plan-execution §5.1).
3
- *
4
- * ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope.
5
- *
6
- * `TodoEvent` is CLI-LOCAL and is deliberately NOT a member of core's
7
- * `AgentEvent` union (D-11), exactly as `TeamEvent` is not: core freezes its
8
- * runtime export list (`public-api.test.ts`) and forbids host coupling
9
- * (`no-host-coupling.test.ts`), so a new event member would break the first and
10
- * teach core about a host shape it has no business defining.
11
- */
12
- /**
13
- * Re-exported so `config/schema.ts` can name the mode without importing the
14
- * decision module (todo-plan-followthrough §3.1). TYPE-ONLY, so the apparent
15
- * cycle `types -> follow-through -> types` is erased at compile time and there
16
- * is no runtime import at all.
17
- */
18
- export type { FollowThroughMode } from './follow-through.js';
19
- export type TodoStatus = 'pending' | 'in_progress' | 'completed';
20
- export interface TodoItem {
21
- /** Imperative, sanitized, <= TODO_LIMITS.contentChars. */
22
- content: string;
23
- /** Present continuous, shown while in progress. Falls back to `content`. */
24
- activeForm: string;
25
- status: TodoStatus;
26
- }
27
- /**
28
- * The two settled states of a criterion, plus "not checked" and "being checked"
29
- * (todo-acceptance-criteria §6.1). Mutually exclusive and exhaustive.
30
- *
31
- * `in_progress` IS A STORE-OWNED DERIVED STATE (v2, P0-1): the model cannot write
32
- * it, the tool schema does not expose it, normalization always downgrades it to
33
- * `pending`, and `TodoStore.write()` re-derives at most one after every commit.
34
- * That is the same discipline `TodoItem`'s "exactly one in_progress" follows: one
35
- * state has exactly one writer, otherwise the derived phase, the rail's anchor
36
- * and the transcript card each read a different "criterion being checked".
37
- */
38
- export type AcceptanceStatus = 'pending' | 'in_progress' | 'passed' | 'failed';
39
- export interface AcceptanceItem {
40
- /** One checkable statement, sanitized, <= ACCEPT_LIMITS.contentChars. */
41
- content: string;
42
- /** How it will be checked (command / file / observation), <= checkChars. */
43
- check: string;
44
- status: AcceptanceStatus;
45
- /** Required for `passed` / `failed`; otherwise the verdict drops to `pending`. */
46
- evidence: string;
47
- /**
48
- * Explicit re-open. Only honoured when the same criterion's normalized
49
- * `content` is unchanged (§6.2.1 step 9). INPUT ONLY: never stored, consumed
50
- * and discarded by `write()`.
51
- */
52
- reopen?: boolean;
53
- }
54
- /** The immutable projection, isomorphic to `TodoSnapshot`. Rebuilt per commit. */
55
- export interface AcceptanceSnapshot {
56
- items: AcceptanceItem[];
57
- total: number;
58
- /** `passed` + `failed`. */
59
- checkedCount: number;
60
- passedCount: number;
61
- failedCount: number;
62
- /** Injected clock, for the same reason `TodoSnapshot.updatedAt` has one (P2-4). */
63
- updatedAt: number;
64
- }
65
- /**
66
- * `work` - at least one step is not completed.
67
- * `verify` - every step is completed and at least one criterion is unresolved.
68
- * `done` - every step is completed and every criterion is settled (or there is
69
- * no acceptance table at all).
70
- *
71
- * DERIVED, NEVER STORED (I-3): `derivePlanPhase` is the only judge.
72
- */
73
- export type PlanPhase = 'work' | 'verify' | 'done';
74
- /** The immutable projection the UI renders. Rebuilt on every write. */
75
- export interface TodoSnapshot {
76
- items: TodoItem[];
77
- total: number;
78
- doneCount: number;
79
- /** Index of the single in_progress item, or -1 when everything is completed. */
80
- activeIndex: number;
81
- /**
82
- * Stamped by an INJECTED clock (`TodoStore`'s constructor takes
83
- * `now?: () => number`, defaulting to `Date.now`), for the reason `TeamPanel`
84
- * takes a `now?` prop: a snapshot test that reads the wall clock is a test
85
- * that fails on a slow machine and nowhere else (P2-4).
86
- */
87
- updatedAt: number;
88
- /**
89
- * The acceptance projection; `null` when there are no criteria (or the
90
- * capability is off).
91
- *
92
- * REQUIRED, NOT OPTIONAL (fail-closed, §6.1): `TodoStore` is the only writer and
93
- * it always knows what belongs here. Optional would let one call site silently
94
- * under-report an entire table. The cost is the 15 existing test fixtures that
95
- * spell out a `TodoSnapshot` literal (§7.3) - a mechanical edit, done in the
96
- * same step as this field.
97
- */
98
- acceptance: AcceptanceSnapshot | null;
99
- }
100
- /**
101
- * Why a list went away.
102
- *
103
- * `user` - `/todo clear`, or `/clear screen` (the screen-only form). Both are
104
- * an explicit user instruction, which is I-2's standing exception;
105
- * neither touches `messages`.
106
- * `reset` - `/clear` (or its alias `/reset`) through `clearMessages()`, or a
107
- * `/resume` whose file carried no list (§3.13).
108
- * `turn` - a new TUI task started, or a legacy caller began a turn after
109
- * every item was completed.
110
- * `stale` - unfinished, and unwritten for more than `TODO_LIMITS.staleTurns`
111
- * consecutive turns (§3.2 / P1-7).
112
- */
113
- export type TodoClearReason = 'user' | 'reset' | 'turn' | 'stale';
114
- export type TodoEvent = {
115
- type: 'updated';
116
- snapshot: TodoSnapshot;
117
- } | {
118
- type: 'rejected';
119
- reason: string;
120
- } | {
121
- type: 'cleared';
122
- reason: TodoClearReason;
123
- };
124
- export type TodoEventListener = (event: TodoEvent) => void;
@@ -1,12 +0,0 @@
1
- /**
2
- * Runtime shapes for the todo subsystem (todo-plan-execution §5.1).
3
- *
4
- * ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope.
5
- *
6
- * `TodoEvent` is CLI-LOCAL and is deliberately NOT a member of core's
7
- * `AgentEvent` union (D-11), exactly as `TeamEvent` is not: core freezes its
8
- * runtime export list (`public-api.test.ts`) and forbids host coupling
9
- * (`no-host-coupling.test.ts`), so a new event member would break the first and
10
- * teach core about a host shape it has no business defining.
11
- */
12
- export {};
@@ -1,212 +0,0 @@
1
- /**
2
- * The human-input channel (plan-mode §3.5 / §5.1) — types, the fail-closed
3
- * default gate, and the two pure normalizers that repair whatever the model
4
- * actually sent.
5
- *
6
- * Everything here is pure except the type declarations: no Ink, no React, no
7
- * `node:*`. `tools/` is inside the glyph scanner's scope, so every literal is
8
- * ASCII.
9
- *
10
- * WHY THE NORMALIZERS ARE THE ONLY AUTHORITY ON THE LIMITS (P0-4). The
11
- * model-facing schemas in `plan-tools.ts` declare SHAPE only — `type`,
12
- * `required`, `default` — and put every bound in the `description`. They used to
13
- * carry `minItems` / `maxItems` / `maxLength`, and that had two failure modes at
14
- * once: `ToolExecutor` rejected a six-question call outright with `Invalid
15
- * parameters: ...` before any repair could run, wasting a full research turn on
16
- * a cosmetic defect; and `ajv` is an OPTIONAL dependency of core, so without it
17
- * the fallback validator checks `required` plus primitive types only and the
18
- * same call sailed through. One design, two behaviours, selected by whether an
19
- * optional install step succeeded. Bounds live here instead, where they are
20
- * deterministic and unit-tested.
21
- */
22
- export interface NormalizedOption {
23
- label: string;
24
- /** `''` when the model supplied none. */
25
- description: string;
26
- /** Exactly one per question is true after repair. */
27
- recommended: boolean;
28
- /** The synthetic free-text option. */
29
- isOther: boolean;
30
- }
31
- export interface NormalizedQuestion {
32
- id: string;
33
- /** <= 12 chars, truncated. Rendered as a chip above the question. */
34
- header: string;
35
- question: string;
36
- /** 3..5 entries: the 2..4 the model gave, plus the synthetic `Other`. */
37
- options: NormalizedOption[];
38
- allowMultiple: boolean;
39
- }
40
- export interface Answer {
41
- id: string;
42
- question: string;
43
- /** Option labels. Length 1 unless `allowMultiple`. */
44
- selected: string[];
45
- /** Set only when `Other` was chosen. */
46
- custom: string | null;
47
- }
48
- export interface NormalizedPlan {
49
- title: string;
50
- summary: string;
51
- steps: {
52
- title: string;
53
- detail: string;
54
- }[];
55
- filesTouched: string[];
56
- risks: string[];
57
- openQuestions: string[];
58
- }
59
- export type HumanRequest = {
60
- kind: 'questions';
61
- questions: NormalizedQuestion[];
62
- } | {
63
- kind: 'plan';
64
- plan: NormalizedPlan;
65
- };
66
- export type HumanResponse = {
67
- kind: 'answers';
68
- answers: Answer[];
69
- cancelled: boolean;
70
- } | {
71
- kind: 'planDecision';
72
- decision: 'approved' | 'revise' | 'dismissed';
73
- feedback: string;
74
- };
75
- export interface HumanInputGate {
76
- /**
77
- * STATIC property of the channel: `true` only for a gate that can never
78
- * acquire a human at all. Set on `DENY_ALL_HUMAN_INPUT` and nowhere else.
79
- *
80
- * This — not `canPrompt()` — is what `createPlanTools()` keys registration
81
- * off. `canPrompt()` is a LIVE probe and is legitimately `false` for the whole
82
- * window between `makeController()` and the App's first effect, because the
83
- * App attaches the bridge handler later. A registration decision taken from it
84
- * would be "no plan tools", forever, in every interactive session, with no
85
- * error anywhere. The two predicates answer different questions and must not
86
- * be merged.
87
- */
88
- readonly neverPrompts?: boolean;
89
- /** True only while a TUI is mounted and able to render an overlay. */
90
- canPrompt(): boolean;
91
- /**
92
- * Resolves with `null` when cancelled / unmounted / aborted. NEVER rejects.
93
- *
94
- * `signal` is the tool's `ctx.signal` and is REQUIRED in practice. It is the
95
- * only ceiling the wait has: `ToolExecutor`'s timeout is cooperative — it
96
- * aborts the context signal and keeps awaiting the tool's promise, with no
97
- * `Promise.race` anywhere — and the idle watchdog is deliberately paused for
98
- * the duration of the wait. Passing `undefined` therefore gives a wait with no
99
- * ceiling of any kind, and the process wedges behind an overlay nobody is
100
- * going to answer.
101
- */
102
- request(req: HumanRequest, signal?: AbortSignal): Promise<HumanResponse | null>;
103
- }
104
- export interface HumanInputBridge {
105
- handler: ((req: HumanRequest, signal?: AbortSignal) => Promise<HumanResponse | null>) | null;
106
- /**
107
- * Resolve every outstanding request with `null`.
108
- *
109
- * Called on App unmount AND when a run ends. `ConfirmBridge` nulls its handler
110
- * on unmount but leaves any in-flight promise dangling forever; with a
111
- * three-second `y/N` that never mattered, but a question wizard the user
112
- * abandons with `Ctrl+C` twice would hang the tool until its ceiling.
113
- */
114
- cancelPending(): void;
115
- }
116
- /**
117
- * Fails CLOSED. The headless default — forgetting to pass a gate must refuse,
118
- * never hang and never assume yes.
119
- */
120
- export declare const DENY_ALL_HUMAN_INPUT: HumanInputGate;
121
- export declare const QUESTION_LIMITS: {
122
- readonly maxQuestions: 5;
123
- readonly minOptions: 2;
124
- readonly maxOptions: 4;
125
- readonly headerChars: 12;
126
- readonly questionChars: 300;
127
- readonly labelChars: 60;
128
- readonly optionDescriptionChars: 120;
129
- };
130
- export declare const PLAN_LIMITS: {
131
- readonly titleChars: 80;
132
- readonly summaryChars: 600;
133
- readonly maxSteps: 20;
134
- readonly stepTitleChars: 100;
135
- readonly stepDetailChars: 400;
136
- readonly maxFiles: 30;
137
- readonly maxRisks: 10;
138
- readonly maxOpenQuestions: 10;
139
- };
140
- /**
141
- * The STORAGE bound of the `ask_user` de-duplication guard — NOT a refusal
142
- * condition, and the distinction is the whole point.
143
- *
144
- * Storage is memory hygiene: a turn that asks a thousand DISTINCT question sets
145
- * is pathological, but it is still the user's turn, and Esc interrupts it. The
146
- * refusal rule is semantic: "never ask the same answered questions twice". Folding
147
- * the bound into the refusal rule would restore the round cap this feature
148
- * deletes, with a different number written on it.
149
- *
150
- * Owned here rather than in `plan-tools.ts` (the caller) or `controller.ts` (the
151
- * state holder) because this file is already the single authority on the
152
- * structural limits of human input, beside `QUESTION_LIMITS` / `PLAN_LIMITS`.
153
- */
154
- export declare const ASK_GUARD_LIMITS: {
155
- readonly maxRemembered: 128;
156
- };
157
- /**
158
- * Trim to `max` characters, preferring a word boundary within the last
159
- * `WORD_BOUNDARY_WINDOW` characters. Cutting a sentence mid-word reads as
160
- * corruption; cutting it at a space reads as a summary.
161
- */
162
- export declare function clampText(raw: unknown, max: number): string;
163
- /**
164
- * Repair whatever the model sent into something renderable.
165
- *
166
- * Returns `[]` when nothing survives, which the tool turns into the one hard
167
- * failure this path has. Every rule below is reachable precisely BECAUSE the
168
- * schema stopped declaring the bounds (P0-4); with `minItems` / `maxItems` in
169
- * the schema, `ajv` rejected the call first and rules 1 and 4 were dead code.
170
- */
171
- export declare function normalizeQuestions(raw: unknown): NormalizedQuestion[];
172
- /**
173
- * Repair a submitted plan. Returns `null` only when no step survives — the one
174
- * hard failure, because there is then nothing left to review.
175
- *
176
- * A plan that is one step over the cap is still a plan, and rejecting it costs a
177
- * full research turn to regain nothing. Truncation is silent to the model but
178
- * VISIBLE to the user: the review overlay's position indicator counts the real
179
- * rows, so a clipped plan cannot masquerade as complete.
180
- */
181
- export declare function normalizePlan(raw: unknown): NormalizedPlan | null;
182
- export interface AnswersResultShape {
183
- answers: Answer[];
184
- cancelled: boolean;
185
- }
186
- /**
187
- * A question SET's identity: the question texts, trimmed, lowercased, whitespace
188
- * collapsed, sorted, joined.
189
- *
190
- * `id` and `header` are excluded on purpose — a model that re-asks the same thing
191
- * under a new id is asking the same thing, and the ids are the model's own
192
- * bookkeeping rather than part of what the user reads.
193
- *
194
- * The fingerprint is stable because `normalizeQuestions` already ran on the TOOL
195
- * side: header truncation and option trimming cannot make the same question look
196
- * different here. Worst case is 5 questions x 300 chars = 1,500 chars.
197
- */
198
- export declare function questionFingerprint(questions: NormalizedQuestion[]): string;
199
- /**
200
- * Render the `ask_user` result: one human-readable line so the transcript
201
- * preview is legible without parsing, then the JSON the model reads.
202
- *
203
- * CARRIES NO ROUND COUNTER, deliberately (D-4). The model used to be told
204
- * `roundsUsed` / `roundsRemaining` on every call, which is a per-turn reminder
205
- * that it is running out — and an agent that reads "you have 1 round left"
206
- * behaves like one. There is no limit any more, so there is nothing to report.
207
- *
208
- * `asked` is passed separately rather than derived from `answers.length`
209
- * because a cancelled wizard returns fewer answers than it asked for, and
210
- * "answered 1 of 3" is the whole information content of that line.
211
- */
212
- export declare function formatAnswersResult(shape: AnswersResultShape, asked: number): string;