@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,248 +0,0 @@
1
- /**
2
- * follow-through — what happens when a run ends with unfinished work
3
- * (todo-plan-followthrough §3.2 / §3.3; todo-acceptance-criteria §6.6).
4
- *
5
- * ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope
6
- * (`glyphs.test.ts`), and every string this module builds is user-visible.
7
- *
8
- * PURE. No I/O, no timers, no React, no `Date.now()` — the discipline
9
- * `TodoStore`'s injected clock already establishes. The TUI (`App.tsx`) and
10
- * headless mode (`agent/headless.ts`) both call `decideFollowThrough`, which is
11
- * the only reason the two cannot drift; a second copy of this table in either
12
- * caller is the defect this file exists to prevent.
13
- *
14
- * IT NEVER WRITES TO `TodoStore` (I-1 / C-3). Follow-through reads snapshots and
15
- * produces a MESSAGE; the plan changes only when the model calls `todo_write`,
16
- * which keeps the list a projection of what the model believes.
17
- *
18
- * "UNFINISHED WORK" HAS TWO HALVES SINCE ACCEPTANCE CRITERIA EXISTED (§6.6.1):
19
- * steps still to do, and criteria still unchecked. Every exit below reads them
20
- * from `outstandingOf`, and while ANY step is left the wording is byte-identical
21
- * to the version without this feature (I-5) - because that is the phase in which
22
- * the old sentences are already true. In the verification phase, where
23
- * `total - doneCount` is always 0, saying "0 steps left" would be the exact
24
- * opposite of the truth at the moment the user most wants reassurance.
25
- */
26
- import { buildVerifyMessage, criteriaPhrase, outstandingOf } from './acceptance.js';
27
- import { TODO_FOLLOW_LIMITS } from './limits.js';
28
- /** The zero budget. A fresh App, a fresh headless run, and every cleared plan. */
29
- export function emptyBudget() {
30
- return { used: 0, noProgressStreak: 0, anchorTotal: 0, doneAtRunStart: 0 };
31
- }
32
- /**
33
- * Round 1's notice, preserved BYTE FOR BYTE (AC-1).
34
- *
35
- * This is what makes `followThrough: 'notify'` — the default — indistinguishable
36
- * from `bf6aeb1a` on the path that matters. Its singular/plural treatment
37
- * ("item is" / "items are") is round 1's; the strings added by this round use
38
- * "steps", the noun `<todo_planning>` and the rail already use.
39
- */
40
- function legacyUnfinishedNotice(left) {
41
- return (`${left} todo ${left === 1 ? 'item is' : 'items are'} unfinished. ` +
42
- 'Use /todo continue to pick up where this run stopped, or /todo clear to drop it.');
43
- }
44
- /** `/todo continue ...` advice, which means nothing in `-p`. */
45
- function advise(interactive, text) {
46
- return interactive ? ` ${text}` : '';
47
- }
48
- /** `<n> acceptance criteria are unchecked` — singular and plural in one place. */
49
- function uncheckedCriteria(count) {
50
- return `${criteriaPhrase(count)} ${count === 1 ? 'is' : 'are'} unchecked`;
51
- }
52
- /**
53
- * The verification-phase notice for one exit (§6.6.1.1).
54
- *
55
- * ONE FUNCTION, SIX CALLERS, because the noun's number and the verb's number have
56
- * to agree in the same sentence and six hand-written strings will not stay in
57
- * agreement.
58
- */
59
- function verificationNotice(checks, interactive, tail, advice) {
60
- return `${uncheckedCriteria(checks)}${tail}${advise(interactive, advice)}`;
61
- }
62
- export function decideFollowThrough(input) {
63
- const { mode, snapshot, runEnd, budget, interactive } = input;
64
- // 1. Nothing is unfinished - INCLUDING the criteria (§6.6.1). "Every step is
65
- // completed" stopped being the same claim as "there is nothing left" the
66
- // moment a plan carried acceptance criteria; `beginUserTurn` already drops a
67
- // fully-resolved plan at the next turn, so this branch must not pre-empt that
68
- // feedback.
69
- const outstanding = snapshot ? outstandingOf(snapshot) : { steps: 0, checks: 0 };
70
- if (!snapshot || outstanding.steps + outstanding.checks === 0)
71
- return { kind: 'none' };
72
- const left = outstanding.steps;
73
- // WHILE ANY STEP IS LEFT THE OLD SENTENCES ARE ALREADY TRUE, so they are reused
74
- // verbatim (I-5) and only the verification phase gets new wording.
75
- const verifying = left === 0 && outstanding.checks > 0;
76
- const checks = outstanding.checks;
77
- // 2. The user asked for silence and gets silence, INCLUDING no notice.
78
- if (mode === 'off')
79
- return { kind: 'none' };
80
- // 3. A BUG FIX, NOT A POLICY (D-5). The user pressed Esc; restating what they
81
- // interrupted is the CLI answering a question nobody asked, and offering to
82
- // continue it is worse.
83
- if (runEnd.aborted)
84
- return { kind: 'none' };
85
- // 4. NEVER `continue`, IN ANY MODE (D-6). Auto-continuing into a model that just
86
- // failed authentication or ran out of quota is the unbounded cost loop with
87
- // none of the upside.
88
- if (runEnd.errored) {
89
- return {
90
- kind: 'notify',
91
- level: 'warn',
92
- text: verifying
93
- ? verificationNotice(checks, interactive, '; the run ended with an error.', '/todo continue to retry, /todo clear to drop it.')
94
- : `${left} ${left === 1 ? 'step' : 'steps'} left; the run ended with an error.` +
95
- advise(interactive, '/todo continue to retry, /todo clear to drop it.'),
96
- };
97
- }
98
- // 5. The default. Byte-identical to round 1 in the TUI whenever steps remain
99
- // (AC-1 / AC-44's reverse direction).
100
- if (mode === 'notify') {
101
- if (!verifying) {
102
- return {
103
- kind: 'notify',
104
- level: 'info',
105
- text: interactive
106
- ? legacyUnfinishedNotice(left)
107
- : `${left} ${left === 1 ? 'step' : 'steps'} unfinished`,
108
- };
109
- }
110
- return {
111
- kind: 'notify',
112
- level: 'info',
113
- text: interactive
114
- ? `${uncheckedCriteria(checks)}. Use /todo continue to finish the check, ` +
115
- '/todo clear to drop it.'
116
- : `${criteriaPhrase(checks)} unchecked`,
117
- };
118
- }
119
- // 6. The ceiling that holds when everything else is wrong.
120
- if (budget.used >= TODO_FOLLOW_LIMITS.maxAutoContinuesPerList) {
121
- return {
122
- kind: 'notify',
123
- level: 'warn',
124
- text: verifying
125
- ? verificationNotice(checks, interactive, `; auto-continue has run ${TODO_FOLLOW_LIMITS.maxAutoContinuesPerList} times ` +
126
- 'for this plan.', '/todo continue to keep going.')
127
- : `${left} ${left === 1 ? 'step' : 'steps'} left; auto-continue has run ` +
128
- `${TODO_FOLLOW_LIMITS.maxAutoContinuesPerList} times for this plan.` +
129
- advise(interactive, '/todo continue to keep going.'),
130
- };
131
- }
132
- // 7. A model that has stopped engaging with its own plan hands back after one
133
- // nudge rather than after twenty-five.
134
- if (budget.noProgressStreak >= TODO_FOLLOW_LIMITS.maxNoProgressContinues) {
135
- const attempts = TODO_FOLLOW_LIMITS.maxNoProgressContinues;
136
- return {
137
- kind: 'notify',
138
- level: 'warn',
139
- text: verifying
140
- ? verificationNotice(checks, interactive, `; the last ${attempts} attempts checked none of them.`, '/todo continue to retry, or take over.')
141
- : `${left} ${left === 1 ? 'step' : 'steps'} left; the last ` +
142
- `${attempts} attempts completed none of them.` +
143
- advise(interactive, '/todo continue to retry, or take over.'),
144
- };
145
- }
146
- const graceMs = interactive ? TODO_FOLLOW_LIMITS.graceMs : 0;
147
- const seconds = Math.round(graceMs / 1000);
148
- return {
149
- kind: 'continue',
150
- message: buildContinuationMessage(snapshot),
151
- graceMs,
152
- // The seconds figure is DERIVED from the constant, never spelled again: a
153
- // notice that promises 3 s while the timer waits 5 is worse than no notice.
154
- notice: verifying
155
- ? interactive
156
- ? `Continuing with ${checks} unchecked acceptance ` +
157
- `${checks === 1 ? 'criterion' : 'criteria'} in ${seconds}s - Esc to stop.`
158
- : `continuing (${checks} acceptance ${checks === 1 ? 'criterion' : 'criteria'} unchecked)`
159
- : interactive
160
- ? `Continuing with ${left} remaining ${left === 1 ? 'step' : 'steps'} in ` +
161
- `${seconds}s - Esc to stop.`
162
- : `continuing (${left} ${left === 1 ? 'step' : 'steps'} left)`,
163
- };
164
- }
165
- /**
166
- * Fold a finished run into the budget. Called BEFORE `decideFollowThrough`, on
167
- * every `agent_end` (and on every resolved `prompt()` in headless).
168
- *
169
- * `used` is NOT incremented here — a decision that is never acted on costs
170
- * nothing. Both fire points charge it themselves (I-5): the TUI's grace timer and
171
- * the headless loop, and BOTH are required. An uncharged counter in `-p` is an
172
- * uncapped loop in the one environment with no human to press Esc (P1-2).
173
- */
174
- export function advanceBudget(prev, snapshot, wasAutoContinuation) {
175
- // THE ONLY PATH THAT CLEARS `used` (I-8). The plan is gone; so is its economy.
176
- // It is not reachable by a model on its own: `TodoStore.write` leaves the
177
- // previous plan untouched when a payload yields zero usable items, and the other
178
- // three ways a plan disappears are `/todo clear`, `/reset` and `beginUserTurn`
179
- // dropping a plan that is either finished (nothing to continue) or stale (which
180
- // the streak rule beats to the punch, §3.5).
181
- if (!snapshot)
182
- return emptyBudget();
183
- // The plan's identity is STEPS PLUS CRITERIA (§6.6.3): a re-plan that only
184
- // changes the number of criteria is still a re-plan.
185
- const anchor = snapshot.total + (snapshot.acceptance?.total ?? 0);
186
- const progress = snapshot.doneCount + (snapshot.acceptance?.checkedCount ?? 0);
187
- // A RE-PLAN BUYS FORGIVENESS, NOT A FRESH WALLET (D-16). Replanning is
188
- // engagement rather than looping, which is why the streak is forgiven; zeroing
189
- // `used` as well is what makes the hard ceiling unreachable, because a size
190
- // change every turn would reset it every turn.
191
- if (anchor !== prev.anchorTotal) {
192
- return {
193
- used: prev.used,
194
- noProgressStreak: 0,
195
- anchorTotal: anchor,
196
- doneAtRunStart: progress,
197
- };
198
- }
199
- const progressed = progress > prev.doneAtRunStart;
200
- // NOTE THE GUARD: a run the USER started never charges the streak, because the
201
- // user asking a question mid-plan is not the model failing to advance it.
202
- const noProgressStreak = progressed
203
- ? 0
204
- : wasAutoContinuation
205
- ? prev.noProgressStreak + 1
206
- : prev.noProgressStreak;
207
- return {
208
- used: prev.used,
209
- noProgressStreak,
210
- anchorTotal: prev.anchorTotal,
211
- // Assigned in EVERY branch, which is what makes the next call's comparison
212
- // meaningful.
213
- doneAtRunStart: progress,
214
- };
215
- }
216
- /**
217
- * The text an auto-continuation — or `/todo continue` — submits.
218
- *
219
- * IT ENUMERATES RATHER THAN REFERRING (D-11). Round 1 submitted the fixed string
220
- * "Continue with the remaining todo items.", which is a reference to a
221
- * `todo_write` call that in a long session may have scrolled far enough back that
222
- * the model reconstructs it wrong — and reconstructing it wrong is SILENT, because
223
- * whatever it writes next is a full replacement and becomes the new truth.
224
- *
225
- * IN THE VERIFICATION PHASE IT BRANCHES TO `buildVerifyMessage` (§6.6.2): with
226
- * every step completed, the old body would emit "These steps are not done yet:"
227
- * followed by nothing at all, which is what `/todo continue` and auto-continue
228
- * would both submit at exactly the moment the plan needs its criteria checked.
229
- *
230
- * `content` and never `activeForm`: the imperative is what an instruction wants.
231
- * Numbers are the item's 1-based position in the WHOLE plan, so "step 5" means the
232
- * same thing here as it does in the rail. Completed items are omitted.
233
- * `TODO_LIMITS.maxItems` bounds the whole message at roughly 1.8 kB.
234
- */
235
- export function buildContinuationMessage(snapshot) {
236
- const remaining = snapshot.items
237
- .map((item, index) => ({ item, index }))
238
- .filter(({ item }) => item.status !== 'completed')
239
- .map(({ item, index }) => `${index + 1}. ${item.content}`);
240
- if (remaining.length === 0)
241
- return buildVerifyMessage(snapshot);
242
- return [
243
- 'Continue the plan. These steps are not done yet:',
244
- ...remaining,
245
- 'Work the next one, then call todo_write to mark it completed and the following ' +
246
- 'one in_progress before you move on.',
247
- ].join('\n');
248
- }
@@ -1,152 +0,0 @@
1
- /**
2
- * TODO_LIMITS — the single authority on every structural bound this subsystem
3
- * enforces (todo-plan-execution §4.2).
4
- *
5
- * ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope
6
- * (`glyphs.test.ts`), whose `inScope` regex this feature extends. A NEW TREE IS
7
- * INVISIBLE TO THAT SCAN UNTIL IT IS ADDED (C-4), which is a guard rail that
8
- * silently stops guarding — the same hole the team feature had to close for
9
- * `team/`.
10
- *
11
- * TWO KINDS OF NUMBER, AND THEY ARE NOT INTERCHANGEABLE — the distinction
12
- * `TEAM_LIMITS` records at length:
13
- *
14
- * - Everything below is STRUCTURAL: what the panel can physically carry, what
15
- * a plan can mean, what a payload may weigh. A user has no business tuning
16
- * them, so they are constants.
17
- * - The two `todo.*` config keys (`config/schema.ts`) are POLICY: register the
18
- * tool at all, render the rail at all. They are clamped, persisted and
19
- * user-facing.
20
- */
21
- export declare const TODO_LIMITS: {
22
- /** Items one list may hold. Extras are dropped with a repair note. */
23
- readonly maxItems: 20;
24
- /** `TodoItem.content`, clamped (never rejected). */
25
- readonly contentChars: 80;
26
- /** `TodoItem.activeForm`, clamped. */
27
- readonly activeFormChars: 80;
28
- /**
29
- * Below this, a FRESH list is refused - the structural half of R-c ("simple
30
- * tasks are done directly, not planned"). Gated on an EMPTY store: shrinking
31
- * an existing list to one item is legitimate, so the guard must not fire
32
- * there (§3.3 step 2).
33
- */
34
- readonly minFreshItems: 2;
35
- /** Minimum shared middle rows for the compact rail. */
36
- readonly panelMinRows: 3;
37
- /** Full rail includes a blank separator and separate overflow markers. */
38
- readonly panelFullRows: 6;
39
- /** Below this many terminal columns the status-bar counter degrades to `[3/7]`. */
40
- readonly statusCompactCols: 100;
41
- /**
42
- * Consecutive user turns an UNFINISHED list survives without a `todo_write`
43
- * before `beginUserTurn()` drops it (§3.2 / P1-7). Three keeps the common
44
- * interruption sequence ("wait, explain X" / "and Y?" / "ok, continue")
45
- * intact and returns the column on the fourth unrelated turn.
46
- */
47
- readonly staleTurns: 3;
48
- };
49
- /**
50
- * TODO_FOLLOW_LIMITS — the economy that makes auto-continue's worst case
51
- * ARITHMETIC rather than trust (todo-plan-followthrough §8.1).
52
- *
53
- * STRUCTURAL, NOT POLICY, exactly like `TODO_LIMITS` above: `todo.followThrough`
54
- * is the user-facing knob and it decides only WHETHER the loop runs. How far it
55
- * may run is not something a user has any way to reason about, and a setting
56
- * here would be a setting whose wrong value is a bill.
57
- */
58
- export declare const TODO_FOLLOW_LIMITS: {
59
- /**
60
- * Auto-continuations for ONE LIST LINEAGE, however productive, and NOT reset
61
- * by a re-plan (P0-1 / D-16). See `FollowThroughBudget.used`.
62
- *
63
- * DELIBERATELY GREATER THAN `TODO_LIMITS.maxItems` (20): a fully productive
64
- * 20-step plan must never be cut off by the total cap, so the cap only ever
65
- * binds on pathology. Lowering it below `maxItems` would make the ceiling fire
66
- * on success, which is the one thing it must not do.
67
- */
68
- readonly maxAutoContinuesPerList: 25;
69
- /**
70
- * Consecutive auto-continuations that completed nothing before control goes
71
- * back to the human. Two, so a model that merely forgot to tick an item gets
72
- * exactly one free nudge and a model that has stopped engaging with its own
73
- * plan does not get a third.
74
- */
75
- readonly maxNoProgressContinues: 2;
76
- /**
77
- * Interactive grace window before an armed continuation fires. The notice text
78
- * derives its "in Ns" from THIS value rather than spelling 3 again, so the two
79
- * cannot disagree.
80
- */
81
- readonly graceMs: 3000;
82
- };
83
- /**
84
- * Bumped whenever the wording of the `<todo_planning>` block changes - INCLUDING
85
- * either `{{VISIBILITY}}` variant, which is part of the block - so a behaviour
86
- * report can be tied to a block revision with one grep.
87
- *
88
- * NOT BUMPED BY follow-through (D-3): the model is never told about the
89
- * mechanism, so the block is byte-identical to `bf6aeb1a`.
90
- *
91
- * BUMPED BY todo-acceptance-criteria (D-3 inverted): that feature CHANGES what
92
- * the model reads, so the revision must be greppable from a behaviour report.
93
- */
94
- export declare const TODO_BLOCK_VERSION = "v2-2026-10";
95
- /**
96
- * ACCEPT_LIMITS - the structural bounds of the acceptance table
97
- * (todo-acceptance-criteria §6.1). STRUCTURAL, NOT POLICY, exactly like
98
- * `TODO_LIMITS`: what a rail row, a transcript row and a model payload can
99
- * physically carry.
100
- */
101
- export declare const ACCEPT_LIMITS: {
102
- /**
103
- * TWELVE, DELIBERATELY FEWER THAN `TODO_LIMITS.maxItems` (20). A plan with more
104
- * than a dozen criteria is not a plan, it is a test suite - and `check` is where
105
- * a suite belongs ("npm test"). The cap is semantic pressure: the model either
106
- * merges criteria or admits it wrote a suite.
107
- */
108
- readonly maxItems: 12;
109
- /** `AcceptanceItem.content`, clamped (never rejected). */
110
- readonly contentChars: 100;
111
- /** `AcceptanceItem.check`, clamped. May be empty: a weak criterion, not an error. */
112
- readonly checkChars: 120;
113
- /** `AcceptanceItem.evidence`, clamped. */
114
- readonly evidenceChars: 200;
115
- /**
116
- * A FRESH plan must declare at least this many usable criteria (§6.2.3 step 4).
117
- * Gated on an EMPTY store AND on `todo.acceptance` being on: the requirement is
118
- * "plan the criteria too", so it applies exactly where the capability does.
119
- * Named `...Criteria`, not `...Items`, so it cannot be confused with
120
- * `TODO_LIMITS.minFreshItems` (2) used two steps earlier.
121
- */
122
- readonly minFreshCriteria: 1;
123
- };
124
- /**
125
- * TODO_RESULT_LIMITS - the bound on what `todo_write` returns each turn
126
- * (I-11 / §6.4.4). The acceptance paragraph pushes the text from about 700
127
- * characters to roughly 1100, and every character is paid for on every call, so
128
- * the ceiling is structural rather than advisory.
129
- */
130
- export declare const TODO_RESULT_LIMITS: {
131
- readonly maxChars: 1400;
132
- /** Appended when the text had to be clipped, so a clipped answer says so. */
133
- readonly truncationNote: "Note: result text truncated.";
134
- };
135
- /**
136
- * VERIFY_MESSAGE_LIMITS - the CONSTRUCTIVE bound of `buildVerifyMessage`
137
- * (§6.6.2 / AC-22), in the tradition of `buildChildDigest`: independent of how
138
- * long the lists are, because every row it emits is clamped.
139
- *
140
- * The two numbers are ONE arithmetic, measured rather than estimated: at 5
141
- * unchecked + 2 failed with `check` at 100 and `evidence` at 60 the worst case is
142
- * 19 rows / 1699 characters, leaving 101 characters below `maxChars` and one row
143
- * below `maxRows`.
144
- */
145
- export declare const VERIFY_MESSAGE_LIMITS: {
146
- readonly uncheckedItems: 5;
147
- readonly failedItems: 2;
148
- readonly checkChars: 100;
149
- readonly evidenceChars: 60;
150
- readonly maxChars: 1800;
151
- readonly maxRows: 20;
152
- };
@@ -1,152 +0,0 @@
1
- /**
2
- * TODO_LIMITS — the single authority on every structural bound this subsystem
3
- * enforces (todo-plan-execution §4.2).
4
- *
5
- * ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope
6
- * (`glyphs.test.ts`), whose `inScope` regex this feature extends. A NEW TREE IS
7
- * INVISIBLE TO THAT SCAN UNTIL IT IS ADDED (C-4), which is a guard rail that
8
- * silently stops guarding — the same hole the team feature had to close for
9
- * `team/`.
10
- *
11
- * TWO KINDS OF NUMBER, AND THEY ARE NOT INTERCHANGEABLE — the distinction
12
- * `TEAM_LIMITS` records at length:
13
- *
14
- * - Everything below is STRUCTURAL: what the panel can physically carry, what
15
- * a plan can mean, what a payload may weigh. A user has no business tuning
16
- * them, so they are constants.
17
- * - The two `todo.*` config keys (`config/schema.ts`) are POLICY: register the
18
- * tool at all, render the rail at all. They are clamped, persisted and
19
- * user-facing.
20
- */
21
- export const TODO_LIMITS = {
22
- /** Items one list may hold. Extras are dropped with a repair note. */
23
- maxItems: 20,
24
- /** `TodoItem.content`, clamped (never rejected). */
25
- contentChars: 80,
26
- /** `TodoItem.activeForm`, clamped. */
27
- activeFormChars: 80,
28
- /**
29
- * Below this, a FRESH list is refused - the structural half of R-c ("simple
30
- * tasks are done directly, not planned"). Gated on an EMPTY store: shrinking
31
- * an existing list to one item is legitimate, so the guard must not fire
32
- * there (§3.3 step 2).
33
- */
34
- minFreshItems: 2,
35
- /** Minimum shared middle rows for the compact rail. */
36
- panelMinRows: 3,
37
- /** Full rail includes a blank separator and separate overflow markers. */
38
- panelFullRows: 6,
39
- /** Below this many terminal columns the status-bar counter degrades to `[3/7]`. */
40
- statusCompactCols: 100,
41
- /**
42
- * Consecutive user turns an UNFINISHED list survives without a `todo_write`
43
- * before `beginUserTurn()` drops it (§3.2 / P1-7). Three keeps the common
44
- * interruption sequence ("wait, explain X" / "and Y?" / "ok, continue")
45
- * intact and returns the column on the fourth unrelated turn.
46
- */
47
- staleTurns: 3,
48
- };
49
- /**
50
- * TODO_FOLLOW_LIMITS — the economy that makes auto-continue's worst case
51
- * ARITHMETIC rather than trust (todo-plan-followthrough §8.1).
52
- *
53
- * STRUCTURAL, NOT POLICY, exactly like `TODO_LIMITS` above: `todo.followThrough`
54
- * is the user-facing knob and it decides only WHETHER the loop runs. How far it
55
- * may run is not something a user has any way to reason about, and a setting
56
- * here would be a setting whose wrong value is a bill.
57
- */
58
- export const TODO_FOLLOW_LIMITS = {
59
- /**
60
- * Auto-continuations for ONE LIST LINEAGE, however productive, and NOT reset
61
- * by a re-plan (P0-1 / D-16). See `FollowThroughBudget.used`.
62
- *
63
- * DELIBERATELY GREATER THAN `TODO_LIMITS.maxItems` (20): a fully productive
64
- * 20-step plan must never be cut off by the total cap, so the cap only ever
65
- * binds on pathology. Lowering it below `maxItems` would make the ceiling fire
66
- * on success, which is the one thing it must not do.
67
- */
68
- maxAutoContinuesPerList: 25,
69
- /**
70
- * Consecutive auto-continuations that completed nothing before control goes
71
- * back to the human. Two, so a model that merely forgot to tick an item gets
72
- * exactly one free nudge and a model that has stopped engaging with its own
73
- * plan does not get a third.
74
- */
75
- maxNoProgressContinues: 2,
76
- /**
77
- * Interactive grace window before an armed continuation fires. The notice text
78
- * derives its "in Ns" from THIS value rather than spelling 3 again, so the two
79
- * cannot disagree.
80
- */
81
- graceMs: 3000,
82
- };
83
- /**
84
- * Bumped whenever the wording of the `<todo_planning>` block changes - INCLUDING
85
- * either `{{VISIBILITY}}` variant, which is part of the block - so a behaviour
86
- * report can be tied to a block revision with one grep.
87
- *
88
- * NOT BUMPED BY follow-through (D-3): the model is never told about the
89
- * mechanism, so the block is byte-identical to `bf6aeb1a`.
90
- *
91
- * BUMPED BY todo-acceptance-criteria (D-3 inverted): that feature CHANGES what
92
- * the model reads, so the revision must be greppable from a behaviour report.
93
- */
94
- export const TODO_BLOCK_VERSION = 'v2-2026-10';
95
- /**
96
- * ACCEPT_LIMITS - the structural bounds of the acceptance table
97
- * (todo-acceptance-criteria §6.1). STRUCTURAL, NOT POLICY, exactly like
98
- * `TODO_LIMITS`: what a rail row, a transcript row and a model payload can
99
- * physically carry.
100
- */
101
- export const ACCEPT_LIMITS = {
102
- /**
103
- * TWELVE, DELIBERATELY FEWER THAN `TODO_LIMITS.maxItems` (20). A plan with more
104
- * than a dozen criteria is not a plan, it is a test suite - and `check` is where
105
- * a suite belongs ("npm test"). The cap is semantic pressure: the model either
106
- * merges criteria or admits it wrote a suite.
107
- */
108
- maxItems: 12,
109
- /** `AcceptanceItem.content`, clamped (never rejected). */
110
- contentChars: 100,
111
- /** `AcceptanceItem.check`, clamped. May be empty: a weak criterion, not an error. */
112
- checkChars: 120,
113
- /** `AcceptanceItem.evidence`, clamped. */
114
- evidenceChars: 200,
115
- /**
116
- * A FRESH plan must declare at least this many usable criteria (§6.2.3 step 4).
117
- * Gated on an EMPTY store AND on `todo.acceptance` being on: the requirement is
118
- * "plan the criteria too", so it applies exactly where the capability does.
119
- * Named `...Criteria`, not `...Items`, so it cannot be confused with
120
- * `TODO_LIMITS.minFreshItems` (2) used two steps earlier.
121
- */
122
- minFreshCriteria: 1,
123
- };
124
- /**
125
- * TODO_RESULT_LIMITS - the bound on what `todo_write` returns each turn
126
- * (I-11 / §6.4.4). The acceptance paragraph pushes the text from about 700
127
- * characters to roughly 1100, and every character is paid for on every call, so
128
- * the ceiling is structural rather than advisory.
129
- */
130
- export const TODO_RESULT_LIMITS = {
131
- maxChars: 1400,
132
- /** Appended when the text had to be clipped, so a clipped answer says so. */
133
- truncationNote: 'Note: result text truncated.',
134
- };
135
- /**
136
- * VERIFY_MESSAGE_LIMITS - the CONSTRUCTIVE bound of `buildVerifyMessage`
137
- * (§6.6.2 / AC-22), in the tradition of `buildChildDigest`: independent of how
138
- * long the lists are, because every row it emits is clamped.
139
- *
140
- * The two numbers are ONE arithmetic, measured rather than estimated: at 5
141
- * unchecked + 2 failed with `check` at 100 and `evidence` at 60 the worst case is
142
- * 19 rows / 1699 characters, leaving 101 characters below `maxChars` and one row
143
- * below `maxRows`.
144
- */
145
- export const VERIFY_MESSAGE_LIMITS = {
146
- uncheckedItems: 5,
147
- failedItems: 2,
148
- checkChars: 100,
149
- evidenceChars: 60,
150
- maxChars: 1800,
151
- maxRows: 20,
152
- };
@@ -1,45 +0,0 @@
1
- /**
2
- * Which rows the rail shows (todo-plan-execution §3.10).
3
- *
4
- * ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope.
5
- *
6
- * THE ALGORITHM LIVES IN `row-window.ts` since todo-acceptance-criteria §6.9.4:
7
- * the acceptance section needs the same anchored-window fixpoint over a different
8
- * item shape, and two copies of it would be two places for the "anchor must stay
9
- * visible" rule to rot. The three exports below keep their EXACT signatures and
10
- * their field-for-field output (AC-13), so every existing caller and test is
11
- * unaffected.
12
- */
13
- import type { AcceptanceItem, TodoItem } from './types.js';
14
- import { type RowWindow } from './row-window.js';
15
- export type TodoRowSelection = RowWindow<TodoItem>;
16
- export type AcceptanceRowSelection = RowWindow<AcceptanceItem>;
17
- /**
18
- * The row the todo window is built around: the item in progress, or the first
19
- * unfinished one, or the last item when everything is done.
20
- *
21
- * `normalizeTodos` guarantees an `in_progress` item whenever one is not
22
- * completed (I-3), so the second branch is a belt-and-braces path for a list this
23
- * module was handed without going through the store.
24
- */
25
- export declare function todoAnchorIndex(items: readonly TodoItem[]): number;
26
- /**
27
- * The row the acceptance window is built around (§6.9.4): the criterion being
28
- * checked, or the first unchecked one, or the last row when every verdict is in.
29
- *
30
- * THE `in_progress` BRANCH IS THE WHOLE POINT. Without it the anchor would be
31
- * "first pending", so re-sending the list while checking criterion 3 would snap
32
- * the rail back to criterion 1 - the F-2 lesson again, one feature later.
33
- */
34
- export declare function acceptanceAnchorIndex(items: readonly AcceptanceItem[]): number;
35
- /**
36
- * @param maxRows Rows available for the item rows AND the two overflow markers
37
- * together. The shared layout subtracts actual team/menu rows.
38
- */
39
- export declare function selectTodoRows(items: TodoItem[], maxRows: number): TodoRowSelection;
40
- /** Select an anchored contiguous window without reserving overflow-marker rows. */
41
- export declare function selectCompactTodoRows(items: TodoItem[], maxItemRows: number): TodoRowSelection;
42
- /** The acceptance section's window; same discipline, same anchors, other shape. */
43
- export declare function selectAcceptanceRows(items: AcceptanceItem[], maxRows: number): AcceptanceRowSelection;
44
- /** The acceptance section's compact window (summary rung uses this). */
45
- export declare function selectCompactAcceptanceRows(items: AcceptanceItem[], maxRows: number): AcceptanceRowSelection;
@@ -1,70 +0,0 @@
1
- /**
2
- * Which rows the rail shows (todo-plan-execution §3.10).
3
- *
4
- * ASCII ONLY: `src/todo/**` is inside the glyph scanner's scope.
5
- *
6
- * THE ALGORITHM LIVES IN `row-window.ts` since todo-acceptance-criteria §6.9.4:
7
- * the acceptance section needs the same anchored-window fixpoint over a different
8
- * item shape, and two copies of it would be two places for the "anchor must stay
9
- * visible" rule to rot. The three exports below keep their EXACT signatures and
10
- * their field-for-field output (AC-13), so every existing caller and test is
11
- * unaffected.
12
- */
13
- import { selectCompactRowsAround, selectRowsAround } from './row-window.js';
14
- /**
15
- * The row the todo window is built around: the item in progress, or the first
16
- * unfinished one, or the last item when everything is done.
17
- *
18
- * `normalizeTodos` guarantees an `in_progress` item whenever one is not
19
- * completed (I-3), so the second branch is a belt-and-braces path for a list this
20
- * module was handed without going through the store.
21
- */
22
- export function todoAnchorIndex(items) {
23
- if (items.length === 0)
24
- return 0;
25
- const active = items.findIndex((item) => item.status === 'in_progress');
26
- if (active >= 0)
27
- return active;
28
- const unfinished = items.findIndex((item) => item.status !== 'completed');
29
- if (unfinished >= 0)
30
- return unfinished;
31
- return items.length - 1;
32
- }
33
- /**
34
- * The row the acceptance window is built around (§6.9.4): the criterion being
35
- * checked, or the first unchecked one, or the last row when every verdict is in.
36
- *
37
- * THE `in_progress` BRANCH IS THE WHOLE POINT. Without it the anchor would be
38
- * "first pending", so re-sending the list while checking criterion 3 would snap
39
- * the rail back to criterion 1 - the F-2 lesson again, one feature later.
40
- */
41
- export function acceptanceAnchorIndex(items) {
42
- if (items.length === 0)
43
- return 0;
44
- const active = items.findIndex((item) => item.status === 'in_progress');
45
- if (active >= 0)
46
- return active;
47
- const unchecked = items.findIndex((item) => item.status === 'pending' || item.status === 'in_progress');
48
- if (unchecked >= 0)
49
- return unchecked;
50
- return items.length - 1;
51
- }
52
- /**
53
- * @param maxRows Rows available for the item rows AND the two overflow markers
54
- * together. The shared layout subtracts actual team/menu rows.
55
- */
56
- export function selectTodoRows(items, maxRows) {
57
- return selectRowsAround(items, maxRows, todoAnchorIndex);
58
- }
59
- /** Select an anchored contiguous window without reserving overflow-marker rows. */
60
- export function selectCompactTodoRows(items, maxItemRows) {
61
- return selectCompactRowsAround(items, maxItemRows, todoAnchorIndex);
62
- }
63
- /** The acceptance section's window; same discipline, same anchors, other shape. */
64
- export function selectAcceptanceRows(items, maxRows) {
65
- return selectRowsAround(items, maxRows, acceptanceAnchorIndex);
66
- }
67
- /** The acceptance section's compact window (summary rung uses this). */
68
- export function selectCompactAcceptanceRows(items, maxRows) {
69
- return selectCompactRowsAround(items, maxRows, acceptanceAnchorIndex);
70
- }