toolroll 0.9.103 → 0.9.105

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 (1518) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +27 -27
  3. package/dist/accent-colors.js +0 -29
  4. package/dist/acp-agents.js +0 -3
  5. package/dist/acp-attest.js +0 -30
  6. package/dist/acp-check.js +3 -70
  7. package/dist/acp-client.js +3 -94
  8. package/dist/acp-inspect.js +1 -20
  9. package/dist/action-ledger.js +0 -8
  10. package/dist/activity-line.js +0 -14
  11. package/dist/actor.js +0 -15
  12. package/dist/advanced-schema.js +12 -0
  13. package/dist/advanced-view.js +26 -0
  14. package/dist/advanced.js +61 -0
  15. package/dist/agent-board.js +0 -117
  16. package/dist/agent-fence.js +11 -367
  17. package/dist/agent-onboard.js +12 -50
  18. package/dist/agent-pulse.js +5 -38
  19. package/dist/agent-state-words.js +0 -8
  20. package/dist/agent-state.js +1 -45
  21. package/dist/agent-turns.js +3 -17
  22. package/dist/agentconfig.js +1 -99
  23. package/dist/agents-board.js +0 -60
  24. package/dist/agents-live.js +1 -8
  25. package/dist/api-tokens.js +0 -27
  26. package/dist/approval-authority.js +0 -59
  27. package/dist/approval-password.js +0 -10
  28. package/dist/approval-policy.js +0 -29
  29. package/dist/approval-rules-ui.js +0 -9
  30. package/dist/assignment-adapters.js +0 -14
  31. package/dist/assignment-brief.js +1 -17
  32. package/dist/assignment-delivery.js +0 -22
  33. package/dist/assignment-presentation.js +0 -14
  34. package/dist/assignment-status.js +1 -30
  35. package/dist/assignment-ui.js +0 -12
  36. package/dist/assignment.js +117 -103
  37. package/dist/attest.js +0 -38
  38. package/dist/audit-cli.js +0 -9
  39. package/dist/backend.js +0 -59
  40. package/dist/backup-ui.js +0 -12
  41. package/dist/backup.js +8 -61
  42. package/dist/batch-checks.js +0 -20
  43. package/dist/batch-policy.js +0 -4
  44. package/dist/beads.js +0 -48
  45. package/dist/bin.js +0 -8
  46. package/dist/board.js +1 -36
  47. package/dist/boot-identity.js +0 -42
  48. package/dist/bounded-spawn.js +4 -28
  49. package/dist/brand-mark.js +0 -21
  50. package/dist/brief-fence.js +0 -16
  51. package/dist/browser/terminal.css +1 -1
  52. package/dist/browser/terminal.js +16 -16
  53. package/dist/browser/workspace.css +2 -2
  54. package/dist/browser/workspace.js +26 -26
  55. package/dist/browser-crew.js +0 -8
  56. package/dist/browser-shell.js +2 -15
  57. package/dist/browser-workspace.js +6 -30
  58. package/dist/budget-alerts.js +1 -4
  59. package/dist/build-review.js +2 -50
  60. package/dist/builder-restart.js +0 -13
  61. package/dist/builder.js +21 -1035
  62. package/dist/canonical-json.js +0 -12
  63. package/dist/capscan.js +1 -32
  64. package/dist/card-catalog.js +0 -12
  65. package/dist/card-cli.js +0 -1
  66. package/dist/card-render.js +0 -25
  67. package/dist/card-sources.js +0 -10
  68. package/dist/chat-acceptance.js +0 -7
  69. package/dist/chat-actions.js +5 -190
  70. package/dist/chat-admission.js +0 -7
  71. package/dist/chat-approval.js +0 -25
  72. package/dist/chat-ask.js +0 -17
  73. package/dist/chat-card-part.js +0 -3
  74. package/dist/chat-card.js +0 -6
  75. package/dist/chat-channel.js +2 -83
  76. package/dist/chat-continuity.js +0 -31
  77. package/dist/chat-controls.js +0 -7
  78. package/dist/chat-core.js +0 -55
  79. package/dist/chat-decide.js +2 -153
  80. package/dist/chat-delivery-state.js +0 -49
  81. package/dist/chat-delivery.js +2 -143
  82. package/dist/chat-display.js +0 -2
  83. package/dist/chat-evidence.js +0 -65
  84. package/dist/chat-flow.js +0 -72
  85. package/dist/chat-follow.js +0 -13
  86. package/dist/chat-inbox.js +0 -34
  87. package/dist/chat-live-schema.js +0 -14
  88. package/dist/chat-live.js +2 -87
  89. package/dist/chat-message-states.js +13 -40
  90. package/dist/chat-messages.js +0 -153
  91. package/dist/chat-migration.js +0 -57
  92. package/dist/chat-polish.js +0 -7
  93. package/dist/chat-quiet.js +0 -37
  94. package/dist/chat-review.js +0 -4
  95. package/dist/chat-rooms.js +0 -22
  96. package/dist/chat-settings-page.js +0 -4
  97. package/dist/chat-task-actions.js +0 -7
  98. package/dist/chat-terms.js +0 -21
  99. package/dist/chat-voice.js +0 -38
  100. package/dist/chat-warmth.js +1 -3
  101. package/dist/check-access.js +0 -30
  102. package/dist/check-facts.js +2 -62
  103. package/dist/check-failure.js +0 -98
  104. package/dist/check-levels-ui.js +4 -10
  105. package/dist/check-levels.js +3 -35
  106. package/dist/check-load.js +1 -49
  107. package/dist/check-only-standing.js +0 -6
  108. package/dist/check-only.js +0 -22
  109. package/dist/check-progress.js +0 -32
  110. package/dist/check-repair.js +2 -35
  111. package/dist/check-report.js +1 -108
  112. package/dist/check-stamp.js +0 -20
  113. package/dist/checkout-cleanup.js +0 -84
  114. package/dist/checkout-proof.js +1 -13
  115. package/dist/child-database.js +0 -3
  116. package/dist/claim.js +4 -508
  117. package/dist/claude-print.js +0 -10
  118. package/dist/cli-fast.js +0 -8
  119. package/dist/cli-help.js +90 -78
  120. package/dist/cli-http.js +0 -10
  121. package/dist/cli.js +26 -241
  122. package/dist/code-extract.js +0 -6
  123. package/dist/code-map-acts.js +0 -7
  124. package/dist/code-map-admission.js +2 -26
  125. package/dist/code-map-build.js +3 -24
  126. package/dist/code-map-cli.js +0 -4
  127. package/dist/code-map-main.js +0 -6
  128. package/dist/code-map-read.js +0 -12
  129. package/dist/code-map-report.js +0 -9
  130. package/dist/code-map-shape.js +0 -19
  131. package/dist/code-map-store.js +0 -26
  132. package/dist/codex-limits.js +1 -17
  133. package/dist/coding-context.js +0 -10
  134. package/dist/coding-handoff.js +0 -14
  135. package/dist/coding-provider.js +0 -39
  136. package/dist/coding-shipping-ui.js +0 -1
  137. package/dist/coding-ui.js +0 -1
  138. package/dist/coding-update.js +1 -18
  139. package/dist/coding-workspace.js +0 -27
  140. package/dist/commit-extract.js +0 -83
  141. package/dist/connect-cli.js +0 -19
  142. package/dist/console-chrome.js +1 -34
  143. package/dist/console-instance.js +2 -91
  144. package/dist/container-state.js +0 -4
  145. package/dist/containment.js +2 -105
  146. package/dist/contract-changes.js +0 -6
  147. package/dist/contracts/acceptance-terms.js +0 -7
  148. package/dist/contracts/chat-actions.js +0 -46
  149. package/dist/contracts/chat-callback-rows.js +0 -8
  150. package/dist/contracts/chat-card.js +0 -14
  151. package/dist/contracts/chat-content.js +0 -55
  152. package/dist/contracts/chat-tables.js +0 -7
  153. package/dist/contracts/cli.js +0 -59
  154. package/dist/contracts/coding-activity.js +0 -15
  155. package/dist/contracts/coding-context.js +0 -15
  156. package/dist/contracts/coding-handoff.js +0 -11
  157. package/dist/contracts/coding-workspace.js +0 -14
  158. package/dist/contracts/console-api.js +3 -54
  159. package/dist/contracts/contract-test.js +0 -14
  160. package/dist/contracts/contract.js +0 -48
  161. package/dist/contracts/decision.js +0 -20
  162. package/dist/contracts/diff-stat.js +0 -16
  163. package/dist/contracts/discord-callback.js +0 -9
  164. package/dist/contracts/flow-card.js +0 -18
  165. package/dist/contracts/flow-propose.js +0 -8
  166. package/dist/contracts/flow-send.js +0 -31
  167. package/dist/contracts/flow.js +0 -112
  168. package/dist/contracts/gateway-tools.js +0 -22
  169. package/dist/contracts/handoff.js +0 -22
  170. package/dist/contracts/integration-metadata.js +0 -39
  171. package/dist/contracts/lead-context.js +0 -14
  172. package/dist/contracts/lead-tools.js +0 -49
  173. package/dist/contracts/mcp-oauth.js +0 -12
  174. package/dist/contracts/memory-pass.js +0 -21
  175. package/dist/contracts/model-catalog.js +0 -9
  176. package/dist/contracts/observation-request.js +0 -11
  177. package/dist/contracts/plan.js +0 -16
  178. package/dist/contracts/project-knowledge.js +0 -26
  179. package/dist/contracts/project-memory.js +0 -16
  180. package/dist/contracts/project-skills.js +0 -31
  181. package/dist/contracts/proof.js +0 -23
  182. package/dist/contracts/provider.js +0 -9
  183. package/dist/contracts/recipes.js +0 -16
  184. package/dist/contracts/release-check.js +0 -61
  185. package/dist/contracts/release-terms.js +0 -27
  186. package/dist/contracts/retention.js +0 -12
  187. package/dist/contracts/review-findings.js +0 -13
  188. package/dist/contracts/route-results.js +0 -15
  189. package/dist/contracts/route.js +0 -33
  190. package/dist/contracts/scope.js +0 -29
  191. package/dist/contracts/scout-report.js +0 -34
  192. package/dist/contracts/slack-callback.js +0 -11
  193. package/dist/contracts/sort-answer.js +0 -24
  194. package/dist/contracts/stage-output.js +0 -46
  195. package/dist/contracts/storage.js +0 -8
  196. package/dist/contracts/store-json.js +0 -41
  197. package/dist/contracts/subagent-turn.js +0 -23
  198. package/dist/contracts/task-sizing.js +0 -10
  199. package/dist/contracts/teams-callback.js +0 -7
  200. package/dist/contracts/telegram-callback.js +0 -27
  201. package/dist/contracts/trigger-payloads.js +0 -41
  202. package/dist/contracts/update-journal.js +0 -47
  203. package/dist/contracts/verification-receipt.js +0 -36
  204. package/dist/contracts/verification-view.js +0 -15
  205. package/dist/contracts/youiyoux-request.js +0 -26
  206. package/dist/control-setup.js +0 -7
  207. package/dist/control-ui.js +0 -3
  208. package/dist/controller-service.js +0 -4
  209. package/dist/controller-supervisor.js +0 -15
  210. package/dist/converse.js +3 -129
  211. package/dist/coordinator-proposals.js +1 -6
  212. package/dist/coordinator.js +0 -65
  213. package/dist/credentials-ui.js +0 -6
  214. package/dist/daemon.js +0 -137
  215. package/dist/database-reclaim.js +0 -3
  216. package/dist/decision.js +0 -78
  217. package/dist/demo-chat.js +4 -15
  218. package/dist/demo-sign-in.js +77 -0
  219. package/dist/demo.js +5 -194
  220. package/dist/deploy-gate.js +0 -20
  221. package/dist/deploy-lock.js +0 -4
  222. package/dist/deploy-phase.js +0 -22
  223. package/dist/deploy-rescue.js +0 -21
  224. package/dist/deprecations.js +0 -12
  225. package/dist/design/kit.css +9 -6
  226. package/dist/design/kit.js +2 -33
  227. package/dist/desktop-access.js +0 -9
  228. package/dist/desktop-bundle.js +1 -3
  229. package/dist/desktop-host.js +0 -34
  230. package/dist/desktop-update-gate.js +0 -8
  231. package/dist/desktop-update-recovery.js +1 -18
  232. package/dist/desktop-update.js +2 -48
  233. package/dist/digest-times.js +0 -2
  234. package/dist/disclosure.js +0 -5
  235. package/dist/discord-api.js +0 -6
  236. package/dist/discord-chat.js +0 -31
  237. package/dist/discord.js +0 -7
  238. package/dist/discover.js +0 -50
  239. package/dist/dispatch.js +61 -60
  240. package/dist/dispose.js +0 -208
  241. package/dist/doctor.js +0 -48
  242. package/dist/easy-start-args.js +7 -7
  243. package/dist/easy-start.js +32 -45
  244. package/dist/egress.js +1 -63
  245. package/dist/email-settings.js +0 -8
  246. package/dist/envelope.js +50 -86
  247. package/dist/eval-gate.js +1 -37
  248. package/dist/eval-hooks.js +0 -120
  249. package/dist/eval-oracle-main.js +0 -7
  250. package/dist/eval-oracle.js +3 -42
  251. package/dist/eval-world.js +1 -23
  252. package/dist/evals.js +6 -134
  253. package/dist/evidence-pack.js +0 -29
  254. package/dist/evidence-pair.js +0 -17
  255. package/dist/evidence.js +4 -280
  256. package/dist/exec.js +19 -404
  257. package/dist/exhaustion.js +0 -30
  258. package/dist/export-ui.js +0 -7
  259. package/dist/export.js +1 -38
  260. package/dist/failing-first.js +0 -6
  261. package/dist/fallback-schema.js +0 -5
  262. package/dist/fallback.js +0 -81
  263. package/dist/fast-start.js +0 -97
  264. package/dist/fast-terms.js +0 -3
  265. package/dist/fenced-check-coverage.js +0 -11
  266. package/dist/findings.js +1 -63
  267. package/dist/first-run.js +4 -57
  268. package/dist/first-tasks-child.js +0 -5
  269. package/dist/flaky-ci.js +1 -24
  270. package/dist/flaky-cli.js +0 -4
  271. package/dist/flaky.js +0 -43
  272. package/dist/fleet-schema.js +0 -11
  273. package/dist/flow-actions.js +0 -31
  274. package/dist/flow-browser.js +0 -42
  275. package/dist/flow-cadence.js +1 -24
  276. package/dist/flow-card-task.js +0 -11
  277. package/dist/flow-changed.js +0 -16
  278. package/dist/flow-code.js +1 -45
  279. package/dist/flow-draft.js +0 -17
  280. package/dist/flow-engine.js +2 -76
  281. package/dist/flow-gallery-ui.js +0 -28
  282. package/dist/flow-gallery.js +0 -54
  283. package/dist/flow-insights.js +0 -12
  284. package/dist/flow-items.js +0 -27
  285. package/dist/flow-live.js +0 -31
  286. package/dist/flow-people.js +0 -14
  287. package/dist/flow-pull-request.js +0 -32
  288. package/dist/flow-replies.js +0 -9
  289. package/dist/flow-result-card.js +0 -8
  290. package/dist/flow-schedule.js +0 -74
  291. package/dist/flow-scripts.js +0 -13
  292. package/dist/flow-secrets.js +0 -10
  293. package/dist/flow-send.js +0 -45
  294. package/dist/flow-share.js +0 -60
  295. package/dist/flow-sort.js +1 -24
  296. package/dist/flow-starters-ui.js +0 -2
  297. package/dist/flow-starters.js +0 -13
  298. package/dist/flow-steps.js +0 -80
  299. package/dist/flow-triggers.js +2 -256
  300. package/dist/flow-unattended-words.js +0 -13
  301. package/dist/flow-unattended.js +2 -115
  302. package/dist/flows-cli.js +2 -36
  303. package/dist/flows-ui.js +0 -51
  304. package/dist/flows.js +0 -158
  305. package/dist/folder-gate.js +0 -21
  306. package/dist/folder-look.js +0 -42
  307. package/dist/follow-through-brief.js +0 -6
  308. package/dist/follow-through-cli.js +0 -5
  309. package/dist/fonts.js +0 -13
  310. package/dist/gaps.js +0 -20
  311. package/dist/gate-failure.js +0 -7
  312. package/dist/git-floor.js +0 -12
  313. package/dist/git-incident.js +2 -38
  314. package/dist/git-views.js +0 -24
  315. package/dist/git.js +0 -31
  316. package/dist/github-import.js +0 -22
  317. package/dist/github-jobs.js +0 -12
  318. package/dist/google-mail.js +2 -27
  319. package/dist/grant.js +0 -110
  320. package/dist/graph.js +0 -108
  321. package/dist/guides.js +4 -15
  322. package/dist/handover-note.js +0 -12
  323. package/dist/health-cli.js +0 -2
  324. package/dist/home-groups.js +0 -15
  325. package/dist/html.js +0 -54
  326. package/dist/install-method.js +0 -12
  327. package/dist/integrations-ui.js +0 -15
  328. package/dist/integrations.js +7 -50
  329. package/dist/invoke.js +1 -381
  330. package/dist/is-record.js +0 -1
  331. package/dist/issues.js +0 -48
  332. package/dist/jsonl-discriminants.js +0 -6
  333. package/dist/keymap.js +2 -16
  334. package/dist/keys.js +0 -56
  335. package/dist/kits-ui.js +0 -3
  336. package/dist/kits.js +1 -24
  337. package/dist/knowledge-cli.js +0 -4
  338. package/dist/knowledge-ui.js +0 -8
  339. package/dist/landed-cleanup.js +0 -119
  340. package/dist/laptop-background.js +0 -85
  341. package/dist/laptop-service.js +0 -67
  342. package/dist/latency-timeline.js +2 -23
  343. package/dist/lead-about.js +0 -7
  344. package/dist/lead-answer-eval.js +0 -39
  345. package/dist/lead-capabilities.js +0 -19
  346. package/dist/lead-cli-live.js +0 -22
  347. package/dist/lead-cli.js +0 -27
  348. package/dist/lead-commitments.js +1 -27
  349. package/dist/lead-context.js +2 -42
  350. package/dist/lead-contract.js +0 -8
  351. package/dist/lead-doors.js +0 -105
  352. package/dist/lead-follow.js +0 -41
  353. package/dist/lead-identity.js +1 -4
  354. package/dist/lead-latency-schema.js +0 -13
  355. package/dist/lead-people.js +3 -18
  356. package/dist/lead-progress.js +0 -12
  357. package/dist/lead-queue-runtime.js +0 -26
  358. package/dist/lead-queue.js +0 -35
  359. package/dist/lead-route.js +0 -33
  360. package/dist/lead-status.js +0 -37
  361. package/dist/lead-sweep.js +0 -18
  362. package/dist/lead-tools.js +0 -160
  363. package/dist/lead-voice.js +0 -54
  364. package/dist/lead.js +2 -105
  365. package/dist/learning-child.js +0 -6
  366. package/dist/learning-look.js +0 -14
  367. package/dist/ledger-chain.js +0 -34
  368. package/dist/ledger-csv.js +0 -2
  369. package/dist/ledger-view.js +0 -3
  370. package/dist/lesson-notes.js +0 -56
  371. package/dist/limits-ui.js +0 -14
  372. package/dist/link.js +0 -79
  373. package/dist/live-backup.js +3 -33
  374. package/dist/live-bus.js +7 -81
  375. package/dist/live-children-read.js +4 -47
  376. package/dist/live-children.js +4 -44
  377. package/dist/live-detail.js +0 -17
  378. package/dist/live-input.js +5 -68
  379. package/dist/live-main-read.js +1 -14
  380. package/dist/live-notes.js +0 -12
  381. package/dist/live-open.js +1 -23
  382. package/dist/live-records.js +4 -151
  383. package/dist/live-reply.js +1 -51
  384. package/dist/live-terminal.js +12 -111
  385. package/dist/live.js +4 -130
  386. package/dist/local-owner-acts.js +168 -0
  387. package/dist/local-owner.js +15 -80
  388. package/dist/log.js +0 -8
  389. package/dist/login-secrets.js +2 -38
  390. package/dist/machine-check.js +0 -2
  391. package/dist/machine-identity.js +1 -46
  392. package/dist/mailbox.js +0 -30
  393. package/dist/maintenance.js +1 -3
  394. package/dist/mcp-connect.js +0 -88
  395. package/dist/mcp-core.js +0 -45
  396. package/dist/mcp-http.js +0 -13
  397. package/dist/mcp-oauth.js +0 -37
  398. package/dist/mcp-person.js +0 -11
  399. package/dist/mcp.js +3 -73
  400. package/dist/memory-cli.js +0 -3
  401. package/dist/memory-pass.js +0 -53
  402. package/dist/memory-tidy.js +0 -55
  403. package/dist/memory-use.js +2 -24
  404. package/dist/merge-checklist.js +21 -29
  405. package/dist/metrics.js +0 -10
  406. package/dist/mobile-viewport.js +0 -6
  407. package/dist/model-catalog.js +1 -33
  408. package/dist/model-choices.js +9 -84
  409. package/dist/model-names.js +0 -9
  410. package/dist/models-cli.js +0 -13
  411. package/dist/models-ui.js +0 -17
  412. package/dist/modes.js +0 -35
  413. package/dist/monitoring-settings.js +2 -27
  414. package/dist/monitoring-ui.js +2 -14
  415. package/dist/monitoring.js +2 -38
  416. package/dist/names.js +0 -39
  417. package/dist/needs-you.js +7 -70
  418. package/dist/never-index.js +0 -9
  419. package/dist/nightly-check.js +0 -74
  420. package/dist/nightly-github.js +0 -168
  421. package/dist/notification-delivery.js +0 -3
  422. package/dist/notification-rows.js +0 -17
  423. package/dist/oauth-run-token.js +1 -37
  424. package/dist/observations.js +0 -16
  425. package/dist/oidc.js +1 -20
  426. package/dist/onboard.js +4 -57
  427. package/dist/one-step-chat-schema.js +0 -15
  428. package/dist/openrouter-models.js +0 -6
  429. package/dist/operate-remote-arguments.js +2 -17
  430. package/dist/operate-remote.js +0 -33
  431. package/dist/operate.js +280 -2304
  432. package/dist/orphan-sweep.js +3 -37
  433. package/dist/page-work-contract.js +0 -3
  434. package/dist/password-bearer.js +1 -11
  435. package/dist/passwordless.js +0 -3
  436. package/dist/peek-cli.js +0 -46
  437. package/dist/peek.js +2 -61
  438. package/dist/people-audit-ui.js +0 -6
  439. package/dist/person-proof.js +0 -6
  440. package/dist/phase-routing.js +8 -183
  441. package/dist/plain-schema.js +0 -14
  442. package/dist/plain-words.js +18 -12
  443. package/dist/plan-auto.js +3 -18
  444. package/dist/plan-login.js +0 -16
  445. package/dist/plan.js +0 -68
  446. package/dist/plane-review.js +0 -56
  447. package/dist/planner-source.js +0 -96
  448. package/dist/planner.js +0 -117
  449. package/dist/policy-ui.js +0 -8
  450. package/dist/policy.js +0 -47
  451. package/dist/prepared-evidence.js +0 -5
  452. package/dist/principal.js +0 -29
  453. package/dist/probe.js +0 -30
  454. package/dist/process-custody.js +0 -15
  455. package/dist/process-liveness.js +0 -32
  456. package/dist/process-tree.js +3 -29
  457. package/dist/project-access.js +0 -10
  458. package/dist/project-admission.js +1 -41
  459. package/dist/project-cli.js +0 -6
  460. package/dist/project-concurrency.js +0 -35
  461. package/dist/project-delete-ui.js +4 -29
  462. package/dist/project-delete.js +1 -73
  463. package/dist/project-demo.js +0 -13
  464. package/dist/project-file.js +0 -2
  465. package/dist/project-identity.js +0 -41
  466. package/dist/project-knowledge.js +0 -39
  467. package/dist/project-learning.js +3 -55
  468. package/dist/project-memory.js +2 -45
  469. package/dist/project-outcomes.js +0 -6
  470. package/dist/project-sandbox.js +0 -23
  471. package/dist/project-skills.js +0 -12
  472. package/dist/project-tools.js +6 -184
  473. package/dist/project.js +0 -48
  474. package/dist/prompt.js +0 -31
  475. package/dist/proof.js +0 -220
  476. package/dist/proposal.js +0 -50
  477. package/dist/protected-storage-look.js +0 -6
  478. package/dist/protected-storage.js +1 -84
  479. package/dist/provider-auth.js +3 -69
  480. package/dist/provider-capture.js +1 -15
  481. package/dist/provider-connection.js +0 -8
  482. package/dist/provider-home.js +0 -25
  483. package/dist/provider-limits.js +0 -14
  484. package/dist/provider.js +0 -324
  485. package/dist/public-access.js +11 -30
  486. package/dist/public-check.js +0 -16
  487. package/dist/publish.js +1 -150
  488. package/dist/pull-request-flow.js +6 -74
  489. package/dist/pull-request-schema.js +0 -4
  490. package/dist/pull-request-ui.js +0 -5
  491. package/dist/pulls.js +0 -80
  492. package/dist/push.js +5 -89
  493. package/dist/quick-start.js +1 -23
  494. package/dist/read-executor-worker.js +0 -1
  495. package/dist/read-executor.js +0 -10
  496. package/dist/read-only-request.js +0 -7
  497. package/dist/recipe-ui.js +0 -6
  498. package/dist/recipes.js +0 -13
  499. package/dist/release-adapters.js +6 -214
  500. package/dist/release-approval.js +0 -74
  501. package/dist/release-authority.js +0 -42
  502. package/dist/release-auto.js +0 -142
  503. package/dist/release-card.js +26 -103
  504. package/dist/release-carry.js +0 -132
  505. package/dist/release-ci-hold.js +0 -20
  506. package/dist/release-cli.js +0 -46
  507. package/dist/release-coverage.js +0 -16
  508. package/dist/release-gate.js +0 -30
  509. package/dist/release-git.js +0 -24
  510. package/dist/release-links.js +0 -17
  511. package/dist/release-net.js +0 -42
  512. package/dist/release-next.js +0 -25
  513. package/dist/release-recheck.js +0 -89
  514. package/dist/release-refusal.js +0 -18
  515. package/dist/release-view.js +0 -5
  516. package/dist/release.js +7 -341
  517. package/dist/releases.js +0 -49
  518. package/dist/remote-audit.js +0 -25
  519. package/dist/remote-command.js +0 -16
  520. package/dist/remote-destination.js +5 -26
  521. package/dist/remote-exec.js +1 -27
  522. package/dist/remote-main.js +1 -53
  523. package/dist/remote-run.js +0 -5
  524. package/dist/remote.js +0 -49
  525. package/dist/render.js +0 -133
  526. package/dist/reply-shape.js +0 -85
  527. package/dist/reply-voice.js +0 -7
  528. package/dist/report-summary.js +0 -5
  529. package/dist/reported-usage.js +0 -30
  530. package/dist/repos.js +9 -62
  531. package/dist/repository-context.js +1 -24
  532. package/dist/request-budget-ui.js +0 -4
  533. package/dist/request-budget.js +0 -23
  534. package/dist/restart-certification.js +0 -37
  535. package/dist/result-actions.js +0 -62
  536. package/dist/result-acts.js +0 -34
  537. package/dist/result-completion.js +9 -28
  538. package/dist/result-evidence-readers.js +0 -3
  539. package/dist/result-follow-ups.js +1 -39
  540. package/dist/result-review.js +0 -86
  541. package/dist/result-shots.js +0 -39
  542. package/dist/retention-ui.js +0 -7
  543. package/dist/retention.js +2 -46
  544. package/dist/review-context.js +0 -129
  545. package/dist/review-evidence.js +0 -4
  546. package/dist/review-switch.js +1 -7
  547. package/dist/reviewer.js +0 -35
  548. package/dist/route-change-check.js +0 -2
  549. package/dist/route-change.js +0 -16
  550. package/dist/route-hooks.js +0 -27
  551. package/dist/route-results.js +2 -58
  552. package/dist/route-rules.js +1 -106
  553. package/dist/route-savings.js +0 -36
  554. package/dist/route-store.js +1 -133
  555. package/dist/run-closeout.js +2 -50
  556. package/dist/run-efficiency.js +2 -44
  557. package/dist/run-ending.js +0 -13
  558. package/dist/runner-process.js +0 -33
  559. package/dist/runner.js +17 -189
  560. package/dist/sample-project.js +2 -27
  561. package/dist/sandbox-launch.js +4 -25
  562. package/dist/sandbox-runtime.js +1 -88
  563. package/dist/scan.js +0 -27
  564. package/dist/scope.js +88 -566
  565. package/dist/scout-browser-lock.js +0 -6
  566. package/dist/scout-browser.js +2 -68
  567. package/dist/scout-net.js +1 -32
  568. package/dist/scout-report.js +0 -22
  569. package/dist/scout.js +1 -116
  570. package/dist/secret-mint.js +0 -6
  571. package/dist/serve.js +29 -564
  572. package/dist/server/agents-computers.js +0 -10
  573. package/dist/server/agents-live-filed.js +0 -13
  574. package/dist/server/agents-live-lead.js +0 -19
  575. package/dist/server/agents-live-room.js +0 -19
  576. package/dist/server/chat.js +2 -194
  577. package/dist/server/chrome.js +17 -263
  578. package/dist/server/console.css +4 -4
  579. package/dist/server/edge-refusal.js +0 -3
  580. package/dist/server/flows.js +5 -74
  581. package/dist/server/guards.js +9 -86
  582. package/dist/server/handler-registry.js +0 -2
  583. package/dist/server/home-asks.js +1 -22
  584. package/dist/server/home.js +1 -30
  585. package/dist/server/http.js +0 -82
  586. package/dist/server/in-place.js +0 -15
  587. package/dist/server/kit-standalone.js +0 -20
  588. package/dist/server/kit.js +2 -114
  589. package/dist/server/last-checks.js +0 -2
  590. package/dist/server/live.js +1 -36
  591. package/dist/server/merge-ready-view.js +0 -6
  592. package/dist/server/mutation-key.js +3 -40
  593. package/dist/server/pages-assets.js +0 -16
  594. package/dist/server/pages.js +7 -195
  595. package/dist/server/people-tokens.js +3 -101
  596. package/dist/server/remote-hooks.js +0 -13
  597. package/dist/server/remote.js +0 -28
  598. package/dist/server/render-chat.js +8 -144
  599. package/dist/server/render-code-map.js +0 -5
  600. package/dist/server/render-flaky.js +0 -8
  601. package/dist/server/render-follow-through.js +2 -5
  602. package/dist/server/render-history.js +2 -34
  603. package/dist/server/render-new-task.js +2 -29
  604. package/dist/server/render-pages.js +1 -111
  605. package/dist/server/render-people.js +2 -46
  606. package/dist/server/render-projects.js +15 -32
  607. package/dist/server/render-release.js +1 -14
  608. package/dist/server/render-results.js +4 -355
  609. package/dist/server/render-settings.js +0 -15
  610. package/dist/server/render-tasks.js +17 -497
  611. package/dist/server/request-context.js +2 -9
  612. package/dist/server/retired-routes.js +0 -11
  613. package/dist/server/route-policy.js +0 -3
  614. package/dist/server/route-table.js +8 -133
  615. package/dist/server/runtime.js +0 -1
  616. package/dist/server/session.js +0 -28
  617. package/dist/server/settings.js +40 -246
  618. package/dist/server/signup-gate.js +0 -11
  619. package/dist/server/sweeps.js +0 -6
  620. package/dist/server/task-views.js +12 -227
  621. package/dist/server/tasks.js +37 -531
  622. package/dist/server/terminals.js +2 -46
  623. package/dist/server/welcome.js +2 -22
  624. package/dist/server-telemetry.js +0 -9
  625. package/dist/settings-groups-ui.js +50 -63
  626. package/dist/settings-kit-script.js +0 -19
  627. package/dist/settings-kit.js +0 -63
  628. package/dist/settings-proofs.js +0 -23
  629. package/dist/setup-guide.js +1 -9
  630. package/dist/shared-deps.js +9 -84
  631. package/dist/sign-in-guard.js +0 -27
  632. package/dist/skills-ui.js +0 -2
  633. package/dist/skills.js +2 -54
  634. package/dist/slack-api.js +0 -3
  635. package/dist/slack-chat.js +0 -25
  636. package/dist/slack-settings.js +0 -1
  637. package/dist/slack-socket.js +0 -5
  638. package/dist/slack.js +0 -4
  639. package/dist/sleep.js +0 -1
  640. package/dist/source-key.js +0 -10
  641. package/dist/spend-report.js +0 -29
  642. package/dist/spend-ui.js +0 -26
  643. package/dist/spend.js +0 -40
  644. package/dist/sqlite-runtime.js +0 -2
  645. package/dist/sqlite-telemetry.js +0 -9
  646. package/dist/sso-settings.js +0 -13
  647. package/dist/sso-ui.js +0 -2
  648. package/dist/staged-runtimes.js +5 -39
  649. package/dist/steer-capabilities.js +1 -7
  650. package/dist/steer-controls.js +0 -10
  651. package/dist/steer-live.js +0 -31
  652. package/dist/steer-mailbox.js +4 -65
  653. package/dist/steer-status.js +0 -7
  654. package/dist/stop-proof.js +5 -62
  655. package/dist/storage-sweep-child.js +1 -5
  656. package/dist/storage-sweep-process.js +2 -20
  657. package/dist/storage-sweep-schedule.js +0 -32
  658. package/dist/storage-sweep.js +2 -51
  659. package/dist/storage-ui.js +0 -18
  660. package/dist/storage.js +0 -31
  661. package/dist/store-baseline.js +0 -14
  662. package/dist/store.js +109 -4763
  663. package/dist/stream-scope.js +0 -16
  664. package/dist/structured-output.js +0 -39
  665. package/dist/style-asset.js +0 -2
  666. package/dist/subagent-admin.js +0 -9
  667. package/dist/subagent-desk.js +0 -29
  668. package/dist/subagent-memory.js +0 -38
  669. package/dist/subagent-question.js +0 -29
  670. package/dist/subagent-tools.js +1 -60
  671. package/dist/subagent-week.js +0 -28
  672. package/dist/subagent-work.js +1 -39
  673. package/dist/subagents-ui.js +1 -13
  674. package/dist/subagents.js +0 -40
  675. package/dist/subscription-chat.js +1 -42
  676. package/dist/summary.js +0 -19
  677. package/dist/surface.js +8 -73
  678. package/dist/sweep-gate.js +0 -2
  679. package/dist/sweep-quarantine.js +2 -13
  680. package/dist/sync.js +0 -47
  681. package/dist/tailnet.js +0 -9
  682. package/dist/tamper-scan.js +0 -15
  683. package/dist/task-activity.js +1 -16
  684. package/dist/task-aliases.js +0 -3
  685. package/dist/task-archive.js +0 -7
  686. package/dist/task-base.js +0 -18
  687. package/dist/task-composer.js +0 -2
  688. package/dist/task-control.js +0 -74
  689. package/dist/task-live.js +0 -23
  690. package/dist/task-moves.js +0 -28
  691. package/dist/task-outcome-cli.js +66 -19
  692. package/dist/task-review-brief.js +0 -7
  693. package/dist/task-sizing.js +0 -47
  694. package/dist/task-source.js +0 -23
  695. package/dist/task-status.js +0 -106
  696. package/dist/task-text.js +0 -12
  697. package/dist/team-chat-authorization.js +0 -3
  698. package/dist/team-contract.js +0 -2
  699. package/dist/team-http.js +0 -4
  700. package/dist/team-leads.js +1 -16
  701. package/dist/team-runtime.js +0 -13
  702. package/dist/team-ui.js +0 -1
  703. package/dist/team-updates.js +0 -4
  704. package/dist/teams-api.js +0 -12
  705. package/dist/teams-chat.js +0 -28
  706. package/dist/teams.js +0 -12
  707. package/dist/teardown-git.js +6 -294
  708. package/dist/telegram-flow.js +0 -51
  709. package/dist/telegram-lead.js +2 -203
  710. package/dist/telegram-live.js +1 -42
  711. package/dist/telegram-progress.js +0 -18
  712. package/dist/telegram-settings.js +0 -7
  713. package/dist/telegram-status.js +0 -46
  714. package/dist/telegram-team.js +1 -33
  715. package/dist/telegram.js +6 -454
  716. package/dist/templates.js +0 -24
  717. package/dist/terminal-catalog.js +2 -20
  718. package/dist/terminal-text.js +0 -12
  719. package/dist/test-infra.js +0 -50
  720. package/dist/test-temp.js +3 -26
  721. package/dist/text-limits.js +0 -92
  722. package/dist/tidy.js +0 -76
  723. package/dist/tier-report.js +0 -2
  724. package/dist/token-notices.js +1 -9
  725. package/dist/tokens-cli.js +0 -13
  726. package/dist/tool-broker.js +2 -53
  727. package/dist/tool-launcher.js +0 -14
  728. package/dist/tool-secret-store.js +3 -125
  729. package/dist/toolroll-update-cli.js +0 -9
  730. package/dist/toolroll-update-ui.js +0 -14
  731. package/dist/toolroll-update.js +13 -252
  732. package/dist/tools-ui.js +0 -17
  733. package/dist/transitions-recipes.js +0 -2
  734. package/dist/tree-proof.js +0 -23
  735. package/dist/tui-contract.js +0 -8
  736. package/dist/tui-source.js +91 -40
  737. package/dist/tui.js +54 -54
  738. package/dist/typed-start.js +0 -27
  739. package/dist/unfenced-test-support.js +0 -5
  740. package/dist/up-processes.js +1 -40
  741. package/dist/up-role-child.js +1 -13
  742. package/dist/update-notice.js +0 -1
  743. package/dist/vanished-retry.js +0 -40
  744. package/dist/verification-evidence.js +0 -39
  745. package/dist/version.js +0 -1
  746. package/dist/wake-hub.js +0 -28
  747. package/dist/webhook-limits.js +0 -7
  748. package/dist/webhook-readers.js +0 -30
  749. package/dist/webhook-signing.js +0 -14
  750. package/dist/webhooks.js +0 -54
  751. package/dist/welcome-facts.js +2 -14
  752. package/dist/when-html.js +0 -27
  753. package/dist/work-index.js +26 -98
  754. package/dist/work-summary.js +2 -17
  755. package/dist/workspace-motion.js +0 -2
  756. package/dist/workspace-revision.js +1 -21
  757. package/dist/workspace-ui.js +15 -135
  758. package/dist/worktree-notices.js +0 -3
  759. package/dist/worktree.js +0 -308
  760. package/dist/writes-mode.js +0 -1
  761. package/dist/youiyoux-intake.js +4 -159
  762. package/package.json +5 -4
  763. package/dist/accent-colors.d.ts +0 -51
  764. package/dist/acp-agents.d.ts +0 -43
  765. package/dist/acp-attest.d.ts +0 -44
  766. package/dist/acp-check.d.ts +0 -37
  767. package/dist/acp-client.d.ts +0 -163
  768. package/dist/acp-inspect.d.ts +0 -23
  769. package/dist/action-ledger.d.ts +0 -27
  770. package/dist/activity-line.d.ts +0 -29
  771. package/dist/actor.d.ts +0 -11
  772. package/dist/agent-board.d.ts +0 -229
  773. package/dist/agent-fence.d.ts +0 -479
  774. package/dist/agent-onboard.d.ts +0 -158
  775. package/dist/agent-pulse.d.ts +0 -43
  776. package/dist/agent-state-words.d.ts +0 -19
  777. package/dist/agent-state.d.ts +0 -65
  778. package/dist/agent-turns.d.ts +0 -52
  779. package/dist/agentconfig.d.ts +0 -191
  780. package/dist/agents-board.d.ts +0 -145
  781. package/dist/agents-live.d.ts +0 -31
  782. package/dist/api-tokens.d.ts +0 -80
  783. package/dist/approval-authority.d.ts +0 -51
  784. package/dist/approval-password.d.ts +0 -31
  785. package/dist/approval-policy.d.ts +0 -69
  786. package/dist/approval-rules-ui.d.ts +0 -40
  787. package/dist/assignment-adapters.d.ts +0 -152
  788. package/dist/assignment-brief.d.ts +0 -83
  789. package/dist/assignment-delivery.d.ts +0 -86
  790. package/dist/assignment-presentation.d.ts +0 -37
  791. package/dist/assignment-status.d.ts +0 -71
  792. package/dist/assignment-ui.d.ts +0 -68
  793. package/dist/assignment.d.ts +0 -318
  794. package/dist/attest.d.ts +0 -59
  795. package/dist/audit-cli.d.ts +0 -17
  796. package/dist/backend.d.ts +0 -97
  797. package/dist/backup-ui.d.ts +0 -32
  798. package/dist/backup.d.ts +0 -92
  799. package/dist/batch-checks.d.ts +0 -15
  800. package/dist/batch-policy.d.ts +0 -23
  801. package/dist/beads.d.ts +0 -34
  802. package/dist/bin.d.ts +0 -2
  803. package/dist/board.d.ts +0 -134
  804. package/dist/boot-identity.d.ts +0 -64
  805. package/dist/bounded-spawn.d.ts +0 -57
  806. package/dist/brand-icons.d.ts +0 -168
  807. package/dist/brand-mark.d.ts +0 -28
  808. package/dist/brief-fence.d.ts +0 -9
  809. package/dist/browser-crew.d.ts +0 -12
  810. package/dist/browser-shell.d.ts +0 -9
  811. package/dist/browser-workspace.d.ts +0 -1972
  812. package/dist/budget-alerts.d.ts +0 -19
  813. package/dist/build-review.d.ts +0 -38
  814. package/dist/builder-restart.d.ts +0 -21
  815. package/dist/builder.d.ts +0 -409
  816. package/dist/canonical-json.d.ts +0 -14
  817. package/dist/capscan.d.ts +0 -35
  818. package/dist/card-catalog.d.ts +0 -209
  819. package/dist/card-cli.d.ts +0 -43
  820. package/dist/card-render.d.ts +0 -43
  821. package/dist/card-sources.d.ts +0 -68
  822. package/dist/chat-acceptance.d.ts +0 -74
  823. package/dist/chat-actions.d.ts +0 -460
  824. package/dist/chat-admission.d.ts +0 -19
  825. package/dist/chat-approval.d.ts +0 -58
  826. package/dist/chat-ask.d.ts +0 -32
  827. package/dist/chat-card-part.d.ts +0 -11
  828. package/dist/chat-card.d.ts +0 -46
  829. package/dist/chat-channel.d.ts +0 -126
  830. package/dist/chat-continuity.d.ts +0 -32
  831. package/dist/chat-controls.d.ts +0 -117
  832. package/dist/chat-core.d.ts +0 -177
  833. package/dist/chat-decide.d.ts +0 -269
  834. package/dist/chat-delivery-state.d.ts +0 -132
  835. package/dist/chat-delivery.d.ts +0 -71
  836. package/dist/chat-display.d.ts +0 -1
  837. package/dist/chat-evidence.d.ts +0 -123
  838. package/dist/chat-flow.d.ts +0 -70
  839. package/dist/chat-follow.d.ts +0 -20
  840. package/dist/chat-inbox.d.ts +0 -57
  841. package/dist/chat-live-schema.d.ts +0 -17
  842. package/dist/chat-live.d.ts +0 -161
  843. package/dist/chat-message-states.d.ts +0 -75
  844. package/dist/chat-messages.d.ts +0 -338
  845. package/dist/chat-migration.d.ts +0 -30
  846. package/dist/chat-polish.d.ts +0 -17
  847. package/dist/chat-quiet.d.ts +0 -40
  848. package/dist/chat-review.d.ts +0 -51
  849. package/dist/chat-rooms.d.ts +0 -123
  850. package/dist/chat-settings-page.d.ts +0 -43
  851. package/dist/chat-task-actions.d.ts +0 -59
  852. package/dist/chat-terms.d.ts +0 -29
  853. package/dist/chat-voice.d.ts +0 -69
  854. package/dist/chat-warmth.d.ts +0 -21
  855. package/dist/check-access.d.ts +0 -54
  856. package/dist/check-facts.d.ts +0 -126
  857. package/dist/check-failure.d.ts +0 -113
  858. package/dist/check-levels-ui.d.ts +0 -36
  859. package/dist/check-levels.d.ts +0 -70
  860. package/dist/check-load.d.ts +0 -85
  861. package/dist/check-only-standing.d.ts +0 -36
  862. package/dist/check-only.d.ts +0 -15
  863. package/dist/check-progress.d.ts +0 -78
  864. package/dist/check-repair.d.ts +0 -47
  865. package/dist/check-report.d.ts +0 -177
  866. package/dist/check-stamp.d.ts +0 -46
  867. package/dist/checkout-cleanup.d.ts +0 -157
  868. package/dist/checkout-proof.d.ts +0 -28
  869. package/dist/child-database.d.ts +0 -12
  870. package/dist/claim.d.ts +0 -627
  871. package/dist/claude-print.d.ts +0 -12
  872. package/dist/cli-fast.d.ts +0 -8
  873. package/dist/cli-help.d.ts +0 -8
  874. package/dist/cli-http.d.ts +0 -58
  875. package/dist/cli.d.ts +0 -149
  876. package/dist/code-extract.d.ts +0 -44
  877. package/dist/code-map-acts.d.ts +0 -24
  878. package/dist/code-map-admission.d.ts +0 -52
  879. package/dist/code-map-build.d.ts +0 -63
  880. package/dist/code-map-cli.d.ts +0 -153
  881. package/dist/code-map-main.d.ts +0 -1
  882. package/dist/code-map-read.d.ts +0 -106
  883. package/dist/code-map-report.d.ts +0 -37
  884. package/dist/code-map-shape.d.ts +0 -172
  885. package/dist/code-map-store.d.ts +0 -136
  886. package/dist/codex-limits.d.ts +0 -15
  887. package/dist/coding-context.d.ts +0 -18
  888. package/dist/coding-handoff.d.ts +0 -39
  889. package/dist/coding-provider.d.ts +0 -88
  890. package/dist/coding-shipping-ui.d.ts +0 -5
  891. package/dist/coding-types.d.ts +0 -16
  892. package/dist/coding-ui.d.ts +0 -19
  893. package/dist/coding-update.d.ts +0 -28
  894. package/dist/coding-workspace.d.ts +0 -141
  895. package/dist/commit-extract.d.ts +0 -135
  896. package/dist/connect-cli.d.ts +0 -34
  897. package/dist/console-chrome.d.ts +0 -41
  898. package/dist/console-instance.d.ts +0 -157
  899. package/dist/container-state.d.ts +0 -5
  900. package/dist/containment.d.ts +0 -205
  901. package/dist/contract-changes.d.ts +0 -52
  902. package/dist/contracts/acceptance-terms.d.ts +0 -14
  903. package/dist/contracts/chat-actions.d.ts +0 -465
  904. package/dist/contracts/chat-callback-rows.d.ts +0 -59
  905. package/dist/contracts/chat-card.d.ts +0 -91
  906. package/dist/contracts/chat-content.d.ts +0 -551
  907. package/dist/contracts/chat-tables.d.ts +0 -12
  908. package/dist/contracts/cli.d.ts +0 -987
  909. package/dist/contracts/coding-activity.d.ts +0 -64
  910. package/dist/contracts/coding-context.d.ts +0 -97
  911. package/dist/contracts/coding-handoff.d.ts +0 -44
  912. package/dist/contracts/coding-workspace.d.ts +0 -165
  913. package/dist/contracts/console-api.d.ts +0 -539
  914. package/dist/contracts/contract-test.d.ts +0 -45
  915. package/dist/contracts/contract.d.ts +0 -92
  916. package/dist/contracts/decision.d.ts +0 -45
  917. package/dist/contracts/diff-stat.d.ts +0 -58
  918. package/dist/contracts/discord-callback.d.ts +0 -45
  919. package/dist/contracts/flow-card.d.ts +0 -53
  920. package/dist/contracts/flow-propose.d.ts +0 -334
  921. package/dist/contracts/flow-send.d.ts +0 -245
  922. package/dist/contracts/flow.d.ts +0 -19565
  923. package/dist/contracts/gateway-tools.d.ts +0 -472
  924. package/dist/contracts/handoff.d.ts +0 -91
  925. package/dist/contracts/health.d.ts +0 -82
  926. package/dist/contracts/integration-metadata.d.ts +0 -100
  927. package/dist/contracts/lead-context.d.ts +0 -165
  928. package/dist/contracts/lead-tools.d.ts +0 -2312
  929. package/dist/contracts/mcp-oauth.d.ts +0 -53
  930. package/dist/contracts/memory-pass.d.ts +0 -157
  931. package/dist/contracts/model-catalog.d.ts +0 -21
  932. package/dist/contracts/observation-request.d.ts +0 -37
  933. package/dist/contracts/plan.d.ts +0 -58
  934. package/dist/contracts/project-knowledge.d.ts +0 -159
  935. package/dist/contracts/project-memory.d.ts +0 -119
  936. package/dist/contracts/project-skills.d.ts +0 -120
  937. package/dist/contracts/proof.d.ts +0 -136
  938. package/dist/contracts/provider.d.ts +0 -40
  939. package/dist/contracts/recipes.d.ts +0 -166
  940. package/dist/contracts/release-check.d.ts +0 -371
  941. package/dist/contracts/release-terms.d.ts +0 -107
  942. package/dist/contracts/retention.d.ts +0 -42
  943. package/dist/contracts/review-findings.d.ts +0 -46
  944. package/dist/contracts/route-results.d.ts +0 -121
  945. package/dist/contracts/route.d.ts +0 -897
  946. package/dist/contracts/scope.d.ts +0 -105
  947. package/dist/contracts/scout-report.d.ts +0 -234
  948. package/dist/contracts/slack-callback.d.ts +0 -43
  949. package/dist/contracts/sort-answer.d.ts +0 -83
  950. package/dist/contracts/stage-output.d.ts +0 -127
  951. package/dist/contracts/storage.d.ts +0 -37
  952. package/dist/contracts/store-json.d.ts +0 -313
  953. package/dist/contracts/subagent-turn.d.ts +0 -43
  954. package/dist/contracts/task-sizing.d.ts +0 -24
  955. package/dist/contracts/teams-callback.d.ts +0 -13
  956. package/dist/contracts/telegram-callback.d.ts +0 -120
  957. package/dist/contracts/trigger-payloads.d.ts +0 -389
  958. package/dist/contracts/update-journal.d.ts +0 -254
  959. package/dist/contracts/verification-receipt.d.ts +0 -200
  960. package/dist/contracts/verification-view.d.ts +0 -102
  961. package/dist/contracts/youiyoux-request.d.ts +0 -248
  962. package/dist/control-setup.d.ts +0 -44
  963. package/dist/control-ui.d.ts +0 -37
  964. package/dist/controller-service.d.ts +0 -1
  965. package/dist/controller-supervisor.d.ts +0 -38
  966. package/dist/converse.d.ts +0 -316
  967. package/dist/coordinator-proposals.d.ts +0 -29
  968. package/dist/coordinator.d.ts +0 -186
  969. package/dist/credentials-ui.d.ts +0 -33
  970. package/dist/daemon.d.ts +0 -226
  971. package/dist/database-reclaim.d.ts +0 -4
  972. package/dist/decision.d.ts +0 -119
  973. package/dist/demo-chat.d.ts +0 -32
  974. package/dist/demo.d.ts +0 -153
  975. package/dist/deploy-gate.d.ts +0 -20
  976. package/dist/deploy-lock.d.ts +0 -8
  977. package/dist/deploy-phase.d.ts +0 -37
  978. package/dist/deploy-rescue.d.ts +0 -42
  979. package/dist/deprecations.d.ts +0 -20
  980. package/dist/design/kit.d.ts +0 -216
  981. package/dist/desktop-access.d.ts +0 -28
  982. package/dist/desktop-bundle.d.ts +0 -16
  983. package/dist/desktop-host.d.ts +0 -54
  984. package/dist/desktop-update-gate.d.ts +0 -12
  985. package/dist/desktop-update-recovery.d.ts +0 -14
  986. package/dist/desktop-update.d.ts +0 -147
  987. package/dist/digest-times.d.ts +0 -3
  988. package/dist/disclosure.d.ts +0 -6
  989. package/dist/discord-api.d.ts +0 -24
  990. package/dist/discord-chat.d.ts +0 -27
  991. package/dist/discord-settings.d.ts +0 -4
  992. package/dist/discord.d.ts +0 -10
  993. package/dist/discover.d.ts +0 -75
  994. package/dist/dispatch.d.ts +0 -123
  995. package/dist/dispose.d.ts +0 -194
  996. package/dist/doctor.d.ts +0 -67
  997. package/dist/easy-start-args.d.ts +0 -13
  998. package/dist/easy-start.d.ts +0 -77
  999. package/dist/egress.d.ts +0 -121
  1000. package/dist/email-settings.d.ts +0 -34
  1001. package/dist/envelope.d.ts +0 -47
  1002. package/dist/eval-gate.d.ts +0 -51
  1003. package/dist/eval-hooks.d.ts +0 -94
  1004. package/dist/eval-oracle-main.d.ts +0 -1
  1005. package/dist/eval-oracle.d.ts +0 -60
  1006. package/dist/eval-world.d.ts +0 -17
  1007. package/dist/evals.d.ts +0 -299
  1008. package/dist/evidence-pack.d.ts +0 -186
  1009. package/dist/evidence-pair.d.ts +0 -53
  1010. package/dist/evidence.d.ts +0 -371
  1011. package/dist/exec.d.ts +0 -355
  1012. package/dist/exhaustion.d.ts +0 -58
  1013. package/dist/export-ui.d.ts +0 -11
  1014. package/dist/export.d.ts +0 -48
  1015. package/dist/failing-first.d.ts +0 -31
  1016. package/dist/fallback-schema.d.ts +0 -8
  1017. package/dist/fallback.d.ts +0 -138
  1018. package/dist/fast-start.d.ts +0 -213
  1019. package/dist/fast-terms.d.ts +0 -9
  1020. package/dist/fenced-check-coverage.d.ts +0 -62
  1021. package/dist/findings.d.ts +0 -224
  1022. package/dist/first-run.d.ts +0 -197
  1023. package/dist/first-tasks-child.d.ts +0 -1
  1024. package/dist/flaky-ci.d.ts +0 -31
  1025. package/dist/flaky-cli.d.ts +0 -60
  1026. package/dist/flaky.d.ts +0 -83
  1027. package/dist/fleet-schema.d.ts +0 -17
  1028. package/dist/flow-actions.d.ts +0 -79
  1029. package/dist/flow-browser.d.ts +0 -103
  1030. package/dist/flow-cadence.d.ts +0 -48
  1031. package/dist/flow-card-task.d.ts +0 -11
  1032. package/dist/flow-changed.d.ts +0 -14
  1033. package/dist/flow-code.d.ts +0 -84
  1034. package/dist/flow-draft.d.ts +0 -42
  1035. package/dist/flow-engine.d.ts +0 -82
  1036. package/dist/flow-gallery-ui.d.ts +0 -73
  1037. package/dist/flow-gallery.d.ts +0 -147
  1038. package/dist/flow-insights.d.ts +0 -104
  1039. package/dist/flow-items.d.ts +0 -37
  1040. package/dist/flow-live.d.ts +0 -16
  1041. package/dist/flow-people.d.ts +0 -23
  1042. package/dist/flow-pull-request.d.ts +0 -14
  1043. package/dist/flow-replies.d.ts +0 -48
  1044. package/dist/flow-result-card.d.ts +0 -22
  1045. package/dist/flow-schedule.d.ts +0 -154
  1046. package/dist/flow-scripts.d.ts +0 -31
  1047. package/dist/flow-secrets.d.ts +0 -13
  1048. package/dist/flow-send.d.ts +0 -54
  1049. package/dist/flow-share.d.ts +0 -78
  1050. package/dist/flow-sort.d.ts +0 -63
  1051. package/dist/flow-starters-ui.d.ts +0 -15
  1052. package/dist/flow-starters.d.ts +0 -63
  1053. package/dist/flow-steps.d.ts +0 -52
  1054. package/dist/flow-triggers.d.ts +0 -303
  1055. package/dist/flow-unattended-words.d.ts +0 -48
  1056. package/dist/flow-unattended.d.ts +0 -259
  1057. package/dist/flows-cli.d.ts +0 -358
  1058. package/dist/flows-ui.d.ts +0 -70
  1059. package/dist/flows.d.ts +0 -136
  1060. package/dist/folder-gate.d.ts +0 -32
  1061. package/dist/folder-look.d.ts +0 -110
  1062. package/dist/follow-through-brief.d.ts +0 -12
  1063. package/dist/follow-through-cli.d.ts +0 -23
  1064. package/dist/fonts.d.ts +0 -19
  1065. package/dist/gaps.d.ts +0 -35
  1066. package/dist/gate-failure.d.ts +0 -40
  1067. package/dist/git-floor.d.ts +0 -16
  1068. package/dist/git-incident.d.ts +0 -65
  1069. package/dist/git-views.d.ts +0 -20
  1070. package/dist/git.d.ts +0 -54
  1071. package/dist/github-import.d.ts +0 -62
  1072. package/dist/github-jobs.d.ts +0 -25
  1073. package/dist/google-mail.d.ts +0 -59
  1074. package/dist/grant.d.ts +0 -136
  1075. package/dist/graph.d.ts +0 -164
  1076. package/dist/guides.d.ts +0 -22
  1077. package/dist/handover-note.d.ts +0 -33
  1078. package/dist/health-cli.d.ts +0 -3
  1079. package/dist/home-groups.d.ts +0 -39
  1080. package/dist/html.d.ts +0 -85
  1081. package/dist/install-method.d.ts +0 -17
  1082. package/dist/integrations-ui.d.ts +0 -17
  1083. package/dist/integrations.d.ts +0 -138
  1084. package/dist/invoke.d.ts +0 -228
  1085. package/dist/is-record.d.ts +0 -2
  1086. package/dist/issues.d.ts +0 -41
  1087. package/dist/jsonl-discriminants.d.ts +0 -11
  1088. package/dist/keymap.d.ts +0 -41
  1089. package/dist/keys.d.ts +0 -108
  1090. package/dist/kits-ui.d.ts +0 -16
  1091. package/dist/kits.d.ts +0 -88
  1092. package/dist/knowledge-cli.d.ts +0 -132
  1093. package/dist/knowledge-ui.d.ts +0 -45
  1094. package/dist/landed-cleanup.d.ts +0 -175
  1095. package/dist/laptop-background.d.ts +0 -187
  1096. package/dist/laptop-service.d.ts +0 -111
  1097. package/dist/latency-timeline.d.ts +0 -46
  1098. package/dist/lead-about.d.ts +0 -35
  1099. package/dist/lead-answer-eval.d.ts +0 -93
  1100. package/dist/lead-capabilities.d.ts +0 -57
  1101. package/dist/lead-cli-live.d.ts +0 -56
  1102. package/dist/lead-cli.d.ts +0 -58
  1103. package/dist/lead-commitments.d.ts +0 -84
  1104. package/dist/lead-context.d.ts +0 -45
  1105. package/dist/lead-contract.d.ts +0 -10
  1106. package/dist/lead-doors.d.ts +0 -122
  1107. package/dist/lead-follow.d.ts +0 -26
  1108. package/dist/lead-identity.d.ts +0 -23
  1109. package/dist/lead-latency-schema.d.ts +0 -24
  1110. package/dist/lead-people.d.ts +0 -55
  1111. package/dist/lead-progress.d.ts +0 -67
  1112. package/dist/lead-queue-runtime.d.ts +0 -46
  1113. package/dist/lead-queue.d.ts +0 -104
  1114. package/dist/lead-route.d.ts +0 -56
  1115. package/dist/lead-status.d.ts +0 -116
  1116. package/dist/lead-sweep.d.ts +0 -67
  1117. package/dist/lead-tools.d.ts +0 -167
  1118. package/dist/lead-voice.d.ts +0 -85
  1119. package/dist/lead.d.ts +0 -142
  1120. package/dist/learning-child.d.ts +0 -1
  1121. package/dist/learning-look.d.ts +0 -25
  1122. package/dist/ledger-chain.d.ts +0 -46
  1123. package/dist/ledger-csv.d.ts +0 -4
  1124. package/dist/ledger-view.d.ts +0 -27
  1125. package/dist/lesson-notes.d.ts +0 -81
  1126. package/dist/limits-ui.d.ts +0 -34
  1127. package/dist/link.d.ts +0 -72
  1128. package/dist/live-backup.d.ts +0 -39
  1129. package/dist/live-bus.d.ts +0 -141
  1130. package/dist/live-children-read.d.ts +0 -52
  1131. package/dist/live-children.d.ts +0 -73
  1132. package/dist/live-detail.d.ts +0 -27
  1133. package/dist/live-input.d.ts +0 -68
  1134. package/dist/live-main-read.d.ts +0 -19
  1135. package/dist/live-notes.d.ts +0 -20
  1136. package/dist/live-open.d.ts +0 -28
  1137. package/dist/live-records.d.ts +0 -149
  1138. package/dist/live-reply.d.ts +0 -83
  1139. package/dist/live-terminal.d.ts +0 -273
  1140. package/dist/live.d.ts +0 -152
  1141. package/dist/local-owner.d.ts +0 -124
  1142. package/dist/log.d.ts +0 -7
  1143. package/dist/login-secrets.d.ts +0 -60
  1144. package/dist/machine-check.d.ts +0 -16
  1145. package/dist/machine-identity.d.ts +0 -75
  1146. package/dist/mailbox.d.ts +0 -57
  1147. package/dist/maintenance.d.ts +0 -13
  1148. package/dist/mcp-connect.d.ts +0 -181
  1149. package/dist/mcp-core.d.ts +0 -110
  1150. package/dist/mcp-http.d.ts +0 -32
  1151. package/dist/mcp-oauth.d.ts +0 -92
  1152. package/dist/mcp-person.d.ts +0 -22
  1153. package/dist/mcp.d.ts +0 -20
  1154. package/dist/memory-cli.d.ts +0 -768
  1155. package/dist/memory-pass.d.ts +0 -151
  1156. package/dist/memory-tidy.d.ts +0 -181
  1157. package/dist/memory-use.d.ts +0 -35
  1158. package/dist/merge-checklist.d.ts +0 -55
  1159. package/dist/metrics.d.ts +0 -6
  1160. package/dist/mobile-viewport.d.ts +0 -7
  1161. package/dist/model-catalog.d.ts +0 -123
  1162. package/dist/model-choices.d.ts +0 -235
  1163. package/dist/model-names.d.ts +0 -6
  1164. package/dist/models-cli.d.ts +0 -307
  1165. package/dist/models-ui.d.ts +0 -161
  1166. package/dist/modes.d.ts +0 -99
  1167. package/dist/monitoring-settings.d.ts +0 -44
  1168. package/dist/monitoring-ui.d.ts +0 -23
  1169. package/dist/monitoring.d.ts +0 -34
  1170. package/dist/names.d.ts +0 -67
  1171. package/dist/needs-you.d.ts +0 -164
  1172. package/dist/never-index.d.ts +0 -3
  1173. package/dist/nightly-check.d.ts +0 -107
  1174. package/dist/nightly-github.d.ts +0 -318
  1175. package/dist/notification-delivery.d.ts +0 -19
  1176. package/dist/notification-rows.d.ts +0 -30
  1177. package/dist/oauth-run-token.d.ts +0 -51
  1178. package/dist/observations.d.ts +0 -36
  1179. package/dist/oidc.d.ts +0 -71
  1180. package/dist/onboard.d.ts +0 -108
  1181. package/dist/one-step-chat-schema.d.ts +0 -22
  1182. package/dist/openrouter-models.d.ts +0 -34
  1183. package/dist/operate-remote-arguments.d.ts +0 -36
  1184. package/dist/operate-remote.d.ts +0 -98
  1185. package/dist/operate.d.ts +0 -401
  1186. package/dist/orphan-sweep.d.ts +0 -65
  1187. package/dist/page-work-contract.d.ts +0 -21
  1188. package/dist/password-bearer.d.ts +0 -25
  1189. package/dist/passwordless.d.ts +0 -23
  1190. package/dist/peek-cli.d.ts +0 -112
  1191. package/dist/peek.d.ts +0 -110
  1192. package/dist/people-audit-ui.d.ts +0 -16
  1193. package/dist/person-proof.d.ts +0 -2
  1194. package/dist/phase-routing.d.ts +0 -401
  1195. package/dist/plain-schema.d.ts +0 -23
  1196. package/dist/plain-words.d.ts +0 -20
  1197. package/dist/plan-auto.d.ts +0 -25
  1198. package/dist/plan-login.d.ts +0 -14
  1199. package/dist/plan.d.ts +0 -188
  1200. package/dist/plane-review.d.ts +0 -54
  1201. package/dist/planner-source.d.ts +0 -225
  1202. package/dist/planner.d.ts +0 -76
  1203. package/dist/policy-ui.d.ts +0 -22
  1204. package/dist/policy.d.ts +0 -92
  1205. package/dist/prepared-evidence.d.ts +0 -17
  1206. package/dist/principal.d.ts +0 -42
  1207. package/dist/probe.d.ts +0 -46
  1208. package/dist/process-custody.d.ts +0 -17
  1209. package/dist/process-liveness.d.ts +0 -13
  1210. package/dist/process-tree.d.ts +0 -39
  1211. package/dist/project-access.d.ts +0 -17
  1212. package/dist/project-activity.d.ts +0 -20
  1213. package/dist/project-admission.d.ts +0 -105
  1214. package/dist/project-cli.d.ts +0 -19
  1215. package/dist/project-concurrency.d.ts +0 -62
  1216. package/dist/project-delete-ui.d.ts +0 -96
  1217. package/dist/project-delete.d.ts +0 -59
  1218. package/dist/project-demo.d.ts +0 -12
  1219. package/dist/project-file.d.ts +0 -3
  1220. package/dist/project-identity.d.ts +0 -52
  1221. package/dist/project-knowledge.d.ts +0 -124
  1222. package/dist/project-learning.d.ts +0 -120
  1223. package/dist/project-memory.d.ts +0 -70
  1224. package/dist/project-outcomes.d.ts +0 -119
  1225. package/dist/project-sandbox.d.ts +0 -59
  1226. package/dist/project-skills.d.ts +0 -139
  1227. package/dist/project-tools.d.ts +0 -318
  1228. package/dist/project.d.ts +0 -65
  1229. package/dist/prompt.d.ts +0 -33
  1230. package/dist/proof.d.ts +0 -457
  1231. package/dist/proposal.d.ts +0 -70
  1232. package/dist/protected-storage-look.d.ts +0 -1
  1233. package/dist/protected-storage.d.ts +0 -98
  1234. package/dist/provider-auth.d.ts +0 -143
  1235. package/dist/provider-capture.d.ts +0 -34
  1236. package/dist/provider-connection.d.ts +0 -23
  1237. package/dist/provider-home.d.ts +0 -22
  1238. package/dist/provider-limits.d.ts +0 -37
  1239. package/dist/provider.d.ts +0 -369
  1240. package/dist/public-access.d.ts +0 -52
  1241. package/dist/public-check.d.ts +0 -37
  1242. package/dist/publish.d.ts +0 -146
  1243. package/dist/pull-request-flow.d.ts +0 -189
  1244. package/dist/pull-request-schema.d.ts +0 -5
  1245. package/dist/pull-request-ui.d.ts +0 -25
  1246. package/dist/pulls.d.ts +0 -121
  1247. package/dist/push.d.ts +0 -120
  1248. package/dist/quality.d.ts +0 -8
  1249. package/dist/quick-start.d.ts +0 -26
  1250. package/dist/read-executor-worker.d.ts +0 -1
  1251. package/dist/read-executor.d.ts +0 -66
  1252. package/dist/read-only-request.d.ts +0 -4
  1253. package/dist/recipe-ui.d.ts +0 -21
  1254. package/dist/recipes.d.ts +0 -56
  1255. package/dist/release-adapters.d.ts +0 -205
  1256. package/dist/release-approval.d.ts +0 -180
  1257. package/dist/release-authority.d.ts +0 -173
  1258. package/dist/release-auto.d.ts +0 -184
  1259. package/dist/release-card.d.ts +0 -156
  1260. package/dist/release-carry.d.ts +0 -261
  1261. package/dist/release-ci-hold.d.ts +0 -41
  1262. package/dist/release-cli.d.ts +0 -34
  1263. package/dist/release-coverage.d.ts +0 -16
  1264. package/dist/release-gate.d.ts +0 -84
  1265. package/dist/release-git.d.ts +0 -43
  1266. package/dist/release-links.d.ts +0 -29
  1267. package/dist/release-net.d.ts +0 -90
  1268. package/dist/release-next.d.ts +0 -48
  1269. package/dist/release-recheck.d.ts +0 -146
  1270. package/dist/release-refusal.d.ts +0 -32
  1271. package/dist/release-view.d.ts +0 -37
  1272. package/dist/release.d.ts +0 -806
  1273. package/dist/releases.d.ts +0 -94
  1274. package/dist/remote-audit.d.ts +0 -79
  1275. package/dist/remote-command.d.ts +0 -45
  1276. package/dist/remote-destination.d.ts +0 -36
  1277. package/dist/remote-exec.d.ts +0 -38
  1278. package/dist/remote-main.d.ts +0 -111
  1279. package/dist/remote-run.d.ts +0 -20
  1280. package/dist/remote.d.ts +0 -67
  1281. package/dist/render.d.ts +0 -64
  1282. package/dist/reply-shape.d.ts +0 -106
  1283. package/dist/reply-voice.d.ts +0 -23
  1284. package/dist/report-summary.d.ts +0 -22
  1285. package/dist/reported-usage.d.ts +0 -69
  1286. package/dist/repos.d.ts +0 -67
  1287. package/dist/repository-context-ui.d.ts +0 -3
  1288. package/dist/repository-context.d.ts +0 -66
  1289. package/dist/request-budget-ui.d.ts +0 -14
  1290. package/dist/request-budget.d.ts +0 -127
  1291. package/dist/restart-certification.d.ts +0 -133
  1292. package/dist/result-actions.d.ts +0 -36
  1293. package/dist/result-acts.d.ts +0 -112
  1294. package/dist/result-completion.d.ts +0 -35
  1295. package/dist/result-evidence-readers.d.ts +0 -42
  1296. package/dist/result-follow-ups.d.ts +0 -118
  1297. package/dist/result-review.d.ts +0 -220
  1298. package/dist/result-shots.d.ts +0 -59
  1299. package/dist/retention-ui.d.ts +0 -21
  1300. package/dist/retention.d.ts +0 -77
  1301. package/dist/review-context.d.ts +0 -245
  1302. package/dist/review-evidence.d.ts +0 -33
  1303. package/dist/review-switch.d.ts +0 -36
  1304. package/dist/reviewer.d.ts +0 -99
  1305. package/dist/route-change-check.d.ts +0 -4
  1306. package/dist/route-change.d.ts +0 -22
  1307. package/dist/route-hooks.d.ts +0 -54
  1308. package/dist/route-results.d.ts +0 -75
  1309. package/dist/route-rules.d.ts +0 -324
  1310. package/dist/route-savings.d.ts +0 -136
  1311. package/dist/route-store.d.ts +0 -300
  1312. package/dist/run-closeout.d.ts +0 -89
  1313. package/dist/run-efficiency.d.ts +0 -74
  1314. package/dist/run-ending.d.ts +0 -21
  1315. package/dist/runner-process.d.ts +0 -76
  1316. package/dist/runner.d.ts +0 -324
  1317. package/dist/sample-project.d.ts +0 -31
  1318. package/dist/sandbox-launch.d.ts +0 -1
  1319. package/dist/sandbox-runtime.d.ts +0 -128
  1320. package/dist/scan.d.ts +0 -32
  1321. package/dist/scope.d.ts +0 -1067
  1322. package/dist/scout-browser-lock.d.ts +0 -69
  1323. package/dist/scout-browser.d.ts +0 -107
  1324. package/dist/scout-net.d.ts +0 -25
  1325. package/dist/scout-report.d.ts +0 -23
  1326. package/dist/scout.d.ts +0 -142
  1327. package/dist/secret-mint.d.ts +0 -1
  1328. package/dist/serve.d.ts +0 -11
  1329. package/dist/server/agents-computers.d.ts +0 -9
  1330. package/dist/server/agents-live-filed.d.ts +0 -17
  1331. package/dist/server/agents-live-lead.d.ts +0 -47
  1332. package/dist/server/agents-live-room.d.ts +0 -23
  1333. package/dist/server/chat.d.ts +0 -39
  1334. package/dist/server/chrome.d.ts +0 -328
  1335. package/dist/server/edge-refusal.d.ts +0 -7
  1336. package/dist/server/flows.d.ts +0 -8
  1337. package/dist/server/guards.d.ts +0 -80
  1338. package/dist/server/handler-context.d.ts +0 -22
  1339. package/dist/server/handler-registry.d.ts +0 -23
  1340. package/dist/server/home-asks.d.ts +0 -45
  1341. package/dist/server/home.d.ts +0 -65
  1342. package/dist/server/http.d.ts +0 -337
  1343. package/dist/server/in-place.d.ts +0 -15
  1344. package/dist/server/kit-standalone.d.ts +0 -22
  1345. package/dist/server/kit.d.ts +0 -452
  1346. package/dist/server/last-checks.d.ts +0 -17
  1347. package/dist/server/live.d.ts +0 -74
  1348. package/dist/server/merge-ready-view.d.ts +0 -10
  1349. package/dist/server/mutation-key.d.ts +0 -70
  1350. package/dist/server/pages-assets.d.ts +0 -11
  1351. package/dist/server/pages.d.ts +0 -8
  1352. package/dist/server/people-tokens.d.ts +0 -18
  1353. package/dist/server/remote-hooks.d.ts +0 -29
  1354. package/dist/server/remote.d.ts +0 -59
  1355. package/dist/server/render-chat.d.ts +0 -439
  1356. package/dist/server/render-code-map.d.ts +0 -30
  1357. package/dist/server/render-flaky.d.ts +0 -20
  1358. package/dist/server/render-follow-through.d.ts +0 -11
  1359. package/dist/server/render-history.d.ts +0 -51
  1360. package/dist/server/render-new-task.d.ts +0 -54
  1361. package/dist/server/render-pages.d.ts +0 -236
  1362. package/dist/server/render-people.d.ts +0 -102
  1363. package/dist/server/render-projects.d.ts +0 -104
  1364. package/dist/server/render-release.d.ts +0 -19
  1365. package/dist/server/render-results.d.ts +0 -754
  1366. package/dist/server/render-settings.d.ts +0 -93
  1367. package/dist/server/render-tasks.d.ts +0 -774
  1368. package/dist/server/request-context.d.ts +0 -78
  1369. package/dist/server/retired-routes.d.ts +0 -17
  1370. package/dist/server/route-policy.d.ts +0 -18
  1371. package/dist/server/route-table.d.ts +0 -114
  1372. package/dist/server/runtime.d.ts +0 -342
  1373. package/dist/server/session.d.ts +0 -192
  1374. package/dist/server/settings.d.ts +0 -76
  1375. package/dist/server/signup-gate.d.ts +0 -9
  1376. package/dist/server/sweeps.d.ts +0 -4
  1377. package/dist/server/task-views.d.ts +0 -98
  1378. package/dist/server/tasks.d.ts +0 -83
  1379. package/dist/server/terminals.d.ts +0 -31
  1380. package/dist/server/welcome.d.ts +0 -28
  1381. package/dist/server-telemetry.d.ts +0 -87
  1382. package/dist/settings-groups-ui.d.ts +0 -286
  1383. package/dist/settings-kit-script.d.ts +0 -21
  1384. package/dist/settings-kit.d.ts +0 -173
  1385. package/dist/settings-proofs.d.ts +0 -64
  1386. package/dist/setup-guide.d.ts +0 -39
  1387. package/dist/shared-deps.d.ts +0 -115
  1388. package/dist/sign-in-guard.d.ts +0 -70
  1389. package/dist/skills-ui.d.ts +0 -12
  1390. package/dist/skills.d.ts +0 -99
  1391. package/dist/slack-api.d.ts +0 -59
  1392. package/dist/slack-chat.d.ts +0 -37
  1393. package/dist/slack-settings.d.ts +0 -4
  1394. package/dist/slack-socket.d.ts +0 -12
  1395. package/dist/slack.d.ts +0 -6
  1396. package/dist/sleep.d.ts +0 -2
  1397. package/dist/source-key.d.ts +0 -2
  1398. package/dist/spend-report.d.ts +0 -87
  1399. package/dist/spend-ui.d.ts +0 -80
  1400. package/dist/spend.d.ts +0 -142
  1401. package/dist/sqlite-runtime.d.ts +0 -3
  1402. package/dist/sqlite-telemetry.d.ts +0 -9
  1403. package/dist/sso-settings.d.ts +0 -33
  1404. package/dist/sso-ui.d.ts +0 -26
  1405. package/dist/staged-runtimes.d.ts +0 -54
  1406. package/dist/steer-capabilities.d.ts +0 -32
  1407. package/dist/steer-controls.d.ts +0 -14
  1408. package/dist/steer-live.d.ts +0 -19
  1409. package/dist/steer-mailbox.d.ts +0 -46
  1410. package/dist/steer-status.d.ts +0 -25
  1411. package/dist/stop-proof.d.ts +0 -67
  1412. package/dist/storage-sweep-child.d.ts +0 -1
  1413. package/dist/storage-sweep-process.d.ts +0 -55
  1414. package/dist/storage-sweep-schedule.d.ts +0 -30
  1415. package/dist/storage-sweep.d.ts +0 -77
  1416. package/dist/storage-ui.d.ts +0 -23
  1417. package/dist/storage.d.ts +0 -68
  1418. package/dist/store-baseline.d.ts +0 -19
  1419. package/dist/store.d.ts +0 -8613
  1420. package/dist/stream-scope.d.ts +0 -18
  1421. package/dist/structured-output.d.ts +0 -57
  1422. package/dist/style-asset.d.ts +0 -7
  1423. package/dist/subagent-admin.d.ts +0 -53
  1424. package/dist/subagent-desk.d.ts +0 -59
  1425. package/dist/subagent-memory.d.ts +0 -65
  1426. package/dist/subagent-question.d.ts +0 -59
  1427. package/dist/subagent-tools.d.ts +0 -125
  1428. package/dist/subagent-week.d.ts +0 -68
  1429. package/dist/subagent-work.d.ts +0 -76
  1430. package/dist/subagents-ui.d.ts +0 -22
  1431. package/dist/subagents.d.ts +0 -146
  1432. package/dist/subscription-chat.d.ts +0 -54
  1433. package/dist/summary.d.ts +0 -33
  1434. package/dist/surface.d.ts +0 -49
  1435. package/dist/sweep-gate.d.ts +0 -10
  1436. package/dist/sweep-quarantine.d.ts +0 -29
  1437. package/dist/sync.d.ts +0 -94
  1438. package/dist/tailnet.d.ts +0 -11
  1439. package/dist/tamper-scan.d.ts +0 -4
  1440. package/dist/task-activity.d.ts +0 -27
  1441. package/dist/task-aliases.d.ts +0 -5
  1442. package/dist/task-archive.d.ts +0 -13
  1443. package/dist/task-base.d.ts +0 -39
  1444. package/dist/task-composer.d.ts +0 -14
  1445. package/dist/task-control.d.ts +0 -159
  1446. package/dist/task-live.d.ts +0 -8
  1447. package/dist/task-moves.d.ts +0 -90
  1448. package/dist/task-outcome-cli.d.ts +0 -30
  1449. package/dist/task-review-brief.d.ts +0 -69
  1450. package/dist/task-sizing.d.ts +0 -58
  1451. package/dist/task-source.d.ts +0 -77
  1452. package/dist/task-status.d.ts +0 -324
  1453. package/dist/task-text.d.ts +0 -31
  1454. package/dist/team-chat-authorization.d.ts +0 -11
  1455. package/dist/team-contract.d.ts +0 -103
  1456. package/dist/team-http.d.ts +0 -25
  1457. package/dist/team-leads.d.ts +0 -85
  1458. package/dist/team-runtime.d.ts +0 -25
  1459. package/dist/team-ui.d.ts +0 -4
  1460. package/dist/team-updates.d.ts +0 -8
  1461. package/dist/teams-api.d.ts +0 -33
  1462. package/dist/teams-chat.d.ts +0 -36
  1463. package/dist/teams-settings.d.ts +0 -14
  1464. package/dist/teams.d.ts +0 -24
  1465. package/dist/teardown-git.d.ts +0 -164
  1466. package/dist/telegram-flow.d.ts +0 -112
  1467. package/dist/telegram-lead.d.ts +0 -151
  1468. package/dist/telegram-live.d.ts +0 -116
  1469. package/dist/telegram-progress.d.ts +0 -20
  1470. package/dist/telegram-settings.d.ts +0 -9
  1471. package/dist/telegram-status.d.ts +0 -83
  1472. package/dist/telegram-team.d.ts +0 -68
  1473. package/dist/telegram.d.ts +0 -271
  1474. package/dist/templates.d.ts +0 -69
  1475. package/dist/terminal-catalog.d.ts +0 -11
  1476. package/dist/terminal-text.d.ts +0 -11
  1477. package/dist/test-infra.d.ts +0 -34
  1478. package/dist/test-temp.d.ts +0 -40
  1479. package/dist/text-limits.d.ts +0 -297
  1480. package/dist/tidy.d.ts +0 -130
  1481. package/dist/tier-report.d.ts +0 -44
  1482. package/dist/token-notices.d.ts +0 -11
  1483. package/dist/tokens-cli.d.ts +0 -21
  1484. package/dist/tool-broker.d.ts +0 -52
  1485. package/dist/tool-launcher.d.ts +0 -1
  1486. package/dist/tool-secret-store.d.ts +0 -167
  1487. package/dist/toolroll-update-cli.d.ts +0 -15
  1488. package/dist/toolroll-update-ui.d.ts +0 -47
  1489. package/dist/toolroll-update.d.ts +0 -265
  1490. package/dist/tools-ui.d.ts +0 -51
  1491. package/dist/transitions-recipes.d.ts +0 -1
  1492. package/dist/tree-proof.d.ts +0 -34
  1493. package/dist/tui-contract.d.ts +0 -144
  1494. package/dist/tui-source.d.ts +0 -14
  1495. package/dist/typed-start.d.ts +0 -51
  1496. package/dist/unfenced-test-support.d.ts +0 -2
  1497. package/dist/up-processes.d.ts +0 -162
  1498. package/dist/up-role-child.d.ts +0 -1
  1499. package/dist/update-notice.d.ts +0 -5
  1500. package/dist/vanished-retry.d.ts +0 -30
  1501. package/dist/verification-evidence.d.ts +0 -68
  1502. package/dist/version.d.ts +0 -2
  1503. package/dist/wake-hub.d.ts +0 -72
  1504. package/dist/webhook-limits.d.ts +0 -23
  1505. package/dist/webhook-readers.d.ts +0 -56
  1506. package/dist/webhook-signing.d.ts +0 -27
  1507. package/dist/webhooks.d.ts +0 -84
  1508. package/dist/welcome-facts.d.ts +0 -18
  1509. package/dist/when-html.d.ts +0 -40
  1510. package/dist/work-index.d.ts +0 -175
  1511. package/dist/work-summary.d.ts +0 -61
  1512. package/dist/workspace-motion.d.ts +0 -4
  1513. package/dist/workspace-revision.d.ts +0 -48
  1514. package/dist/workspace-ui.d.ts +0 -385
  1515. package/dist/worktree-notices.d.ts +0 -13
  1516. package/dist/worktree.d.ts +0 -365
  1517. package/dist/writes-mode.d.ts +0 -9
  1518. package/dist/youiyoux-intake.d.ts +0 -234
@@ -31,15 +31,6 @@ import { attributes, html, htmlString, joinHtml, postForm, reauth } from "../htm
31
31
  import { chip, facts } from "./kit.js";
32
32
  import { publicationFactsOf, statusActionHref, statusLineHtml } from "./render-tasks.js";
33
33
  export const RUNS_PAGE = 50;
34
- /**
35
- * A vscode://file href, or null (arc 6, finding 2): the link exists only
36
- * when every part is provably tame — an absolute, control-free worktree;
37
- * a relative, single-line path whose segments contain no empty, dot,
38
- * dot-dot, or backslash components (so lexical resolution stays below the
39
- * worktree); a line inside the same 1..1,000,000 range the comment form
40
- * enforces. Encoding failures return null — a file row degrades to plain
41
- * text, never to a 500. The scheme is a constant, never data.
42
- */
43
34
  export function editorFileHref(worktree, path, line) {
44
35
  if (!worktree.startsWith("/") || /[\u0000-\u001f\u007f]/.test(worktree))
45
36
  return null;
@@ -61,23 +52,10 @@ export function editorFileHref(worktree, path, line) {
61
52
  return null;
62
53
  }
63
54
  }
64
- /** The execution profile in plain words (v24): what the password signs
65
- * says WHAT RUNS — provider, exact model, permissions, and the real
66
- * bounds — or says honestly that it cannot yet. */
67
- /** The state badges the criterion-to-evidence matrix renders with — one
68
- * shared vocabulary, so a "failed" row reads the same shade of trouble on
69
- * the task page, the run page, the board, done, builds, the inbox, and
70
- * chat (v39, extending Priority 2's "one surface, six places" rule from
71
- * the verdict word to the per-criterion state). */
72
55
  export function matrixStateBadge(state) {
73
- // Red belongs to a Failed headline alone (task-status.ts); an unmet requirement is an ink note.
74
56
  const cls = state === "pass" ? "badge-done" : state === "failed" ? "badge-note" : state === "missing" ? "badge-note" : "badge-manual-review";
75
- // The same words as the Checks tab and the card's Requirements row (task-status.ts).
76
57
  return html `<span class="badge ${cls}" data-matrix-state="${state}">${requirementWordOf({ state })}</span>`;
77
58
  }
78
- /** v40: the bounded repair chain's own line — presented as the user-facing
79
- * recovery it represents, without exposing the internal workflow name.
80
- * Renders on the task page and the run page identically. */
81
59
  export function repairChainHtml(chain) {
82
60
  if (chain === null)
83
61
  return html ``;
@@ -97,26 +75,12 @@ export function repairChainHtml(chain) {
97
75
  : html `<details><summary>What it is fixing</summary><p class="meta">${chain.unresolved.join(", ")}</p></details>`;
98
76
  return html `<div class="card repair-chain" data-repair-outcome="${chain.outcome}"><p class="row"><strong>Automatic recovery</strong> — ${outcomeWords}${link}</p>${details}</div>`;
99
77
  }
100
- /**
101
- * The bounded review-retry panel (v50), shared by the task page and the
102
- * result cockpit so both say the same thing: which attempt is running or
103
- * queued, how the latest one ended, every root attempt on record, and the
104
- * ONE explicit act — a Retry review form — rendered only while the store's
105
- * allowance admits it and this session may ask (an approver's cookie
106
- * session). Every other state shows the same control disabled, in words,
107
- * so a person always sees why nothing more will happen by itself. Empty
108
- * when no review was ever asked for.
109
- */
110
78
  export function reviewRetryPanel(_taskId, _sourceRun, retry, _options) {
111
79
  if (retry === null || retry.state === "unrequested")
112
80
  return html ``;
113
81
  const attempts = retry.attempts.map(one => html `<li data-review-attempt="${one.attempt}" data-review-outcome="${one.outcome ?? "open"}"><a href="/r/${one.runId}">Run #${one.runId}</a> · ${one.outcome ?? "unfinished"}${one.reason === null ? "" : html ` · ${one.reason}`}</li>`);
114
82
  return html `<details class="review-history" data-review-state="${retry.state}"><summary>Previous assessments</summary><p class="meta">Saved history; no separate review will be started.</p>${attempts.length === 0 ? "" : html `<ol aria-label="previous assessments">${attempts}</ol>`}</details>`;
115
83
  }
116
- /** A one-line summary of the matrix for list rows too dense for the full
117
- * table (done, builds, board, inbox) — "2/3 criteria", plus a worst-state
118
- * badge so trouble is visible without opening the row. `[]` renders
119
- * nothing. */
120
84
  export function criterionMatrixSummary(matrix) {
121
85
  if (matrix.length === 0)
122
86
  return html ``;
@@ -150,9 +114,6 @@ export function evidenceLinksFor(artifacts) {
150
114
  }
151
115
  return map;
152
116
  }
153
- /** Read the approved requirement first; inspect its saved evidence on demand.
154
- * Machine results, reviewer judgements and missing context remain separate.
155
- * Warnings stay outside the disclosure, including on compact surfaces. */
156
117
  export function criterionMatrixHtml(matrix, options = {}) {
157
118
  if (matrix.length === 0)
158
119
  return html ``;
@@ -173,15 +134,10 @@ export function criterionMatrixHtml(matrix, options = {}) {
173
134
  const state = row.state;
174
135
  const awaitingAssessment = row.assessment?.evidenceState === "pass" && row.review === null;
175
136
  const confirmed = row.assessment !== undefined && state === "pass";
176
- // Plain words (task-status brief): the retired assessment step is not a state a person acts on.
177
- // The card's Requirements row reads the same words from the same source (task-status.ts), so they agree.
178
137
  const label = requirementWordOf(row, options.verdict, options.release);
179
138
  const cls = label === "Met" ? "badge-done" : label === "You check" ? "badge-manual-review" : "badge-note";
180
139
  const warnings = [];
181
- // Only replace the known boilerplate. Other recorded failure details
182
- // remain verbatim, so concision cannot hide a different problem.
183
140
  const detail = row.detail.filter(line => !(row.assessment && row.review && line === `${row.review.author} ${row.review.judgement === "contradicts" ? "contradicts" : "needs more evidence for"} criterion "${row.id}": ${row.review.note}`) && !(state === "manual-review" && /^criterion "[^"\n]+" requires manual-review evidence — an operator must accept it before this can verify$/.test(line)));
184
- // A requirement a release check covers, or that waits only on one, has nothing wrong to say.
185
141
  if (!awaitingAssessment && state !== "pass" && label !== "Met" && label !== CHECKED_AT_RELEASE && detail.length > 0)
186
142
  warnings.push(html `<ul class="requirement-issues">${detail.map(line => html `<li>${line}</li>`)}</ul>`);
187
143
  const review = row.review;
@@ -215,31 +171,19 @@ export function criterionMatrixHtml(matrix, options = {}) {
215
171
  });
216
172
  return html `<div class="result-section criterion-matrix"><strong>Requirements · ${matrix.length}</strong><ol class="requirement-list">${rows}</ol></div>`;
217
173
  }
218
- /** One policy summary beneath the requirements. Per-requirement concerns
219
- * are already visible in the matrix; do not repeat their full text here. */
220
174
  export function semanticCoverageHtml(matrix, qualityMode) {
221
175
  if (!matrix.some(row => row.review != null || row.assessment !== undefined))
222
176
  return html ``;
223
177
  const coverage = semanticCoverage(matrix, qualityMode);
224
178
  return html `<details class="result-section semantic-coverage" data-semantic-coverage="${coverage.satisfied === true ? "satisfied" : coverage.satisfied === null ? "unsettled" : "unsatisfied"}" data-coverage-policy="${coverage.policy}"><summary>Previous assessment</summary><p class="meta">The saved assessment confirmed ${coverage.upheld.length} of ${coverage.total} requirements.</p></details>`;
225
179
  }
226
- /** A same-site path or "/": never a scheme, a host, or a protocol-relative road. */
227
- /** The words a result page shows for a refusal its own form led to, by the fixed code a redirect carries. */
228
180
  export const ACCEPT_ANYWAY_NEEDS_REASON = "Accepting anyway needs a reason.";
229
181
  export const RESULT_REFUSALS = { reason: ACCEPT_ANYWAY_NEEDS_REASON };
230
- /** A same-site page address with a refusal code added, before any fragment. */
231
182
  export function withRefusal(href, code) {
232
183
  const at = href.indexOf("#");
233
184
  const [path, hash] = at === -1 ? [href, ""] : [href.slice(0, at), href.slice(at)];
234
185
  return `${path}${path.includes("?") ? "&" : "?"}refused=${code}${hash}`;
235
186
  }
236
- // ---- the review cockpit (Priority 5) ----------------------------------------
237
- // The field parallelizes generation and lets review pile up (M8.19); this
238
- // page compresses it. Read-only by design — ranked advice and deep links,
239
- // no merge button, because the PR is the terminus and the person merges
240
- // on GitHub.
241
- /** The queue reads at most this many completed tasks — the store's own
242
- * page ceiling, admission bound before it. */
243
187
  export const REVIEW_QUEUE_CAP = 100;
244
188
  export const PRIORITY_LABELS = { 0: "needs action", 1: "review", 2: "no flags" };
245
189
  export function reviewPriorityOf(row) {
@@ -287,8 +231,6 @@ export function reviewPriorityOf(row) {
287
231
  raise(1, "no verification result");
288
232
  return { band, label: PRIORITY_LABELS[band], reasons };
289
233
  }
290
- /** Ranked, stable: band first, then newest completion, then task id — the
291
- * same input always yields the same queue, whoever loads it. */
292
234
  export function rankReviewQueue(rows) {
293
235
  return rows
294
236
  .map(row => ({ ...row, priority: reviewPriorityOf(row) }))
@@ -300,10 +242,6 @@ export function rankReviewQueue(rows) {
300
242
  ? b.completedAt.localeCompare(a.completedAt)
301
243
  : a.taskId.localeCompare(b.taskId));
302
244
  }
303
- /** Whether a changed path sits inside the scope's signed "touches" — an
304
- * exact file, a directory prefix (with or without its slash), or a plain
305
- * `*` / `**` glob. Touches are advisory in the scope; here they only
306
- * decide which files wear the "outside the signed touches" flag. */
307
245
  export function withinSignedTouches(path, touches) {
308
246
  return touches.some(raw => {
309
247
  const touch = raw.trim().replace(/^\.\//, "");
@@ -315,13 +253,7 @@ export function withinSignedTouches(path, touches) {
315
253
  return path === touch || path.startsWith(dir);
316
254
  });
317
255
  }
318
- /** A signed touch's glob as a regular expression, gitignore-style: `*`
319
- * stays inside one segment; `**` followed by `/` spans zero or more
320
- * directories, so `src/**` followed by `/*.ts` matches `src/a.ts` as well
321
- * as `src/nested/a.ts` (v2 review, comment 2); a bare `**` spans anything.
322
- * Whatever the glob names, its contents are inside it too. */
323
256
  export function touchGlob(raw) {
324
- // A trailing slash names a directory; the contents clause below covers it.
325
257
  const touch = raw.replace(/\/+$/, "");
326
258
  let pattern = "";
327
259
  for (let at = 0; at < touch.length;) {
@@ -344,26 +276,11 @@ export function touchGlob(raw) {
344
276
  }
345
277
  return new RegExp(`^${pattern}(?:/.*)?$`);
346
278
  }
347
- /** A stable, attribute-safe anchor for one file of the sealed patch —
348
- * derived from the path's bytes, never from the path's characters, so a
349
- * hostile file name can neither break the id nor escape the attribute. */
350
279
  export function diffFileAnchor(path) {
351
280
  return `diff-file-${createHash("sha256").update(path, "utf8").digest("hex").slice(0, 16)}`;
352
281
  }
353
- /** Paths whose churn a reviewer reads first — dependency manifests and
354
- * locks, CI workflows, container and schema definitions, migrations, the
355
- * environment files secrets live in, and files NAMED for credentials.
356
- * The credential words match only as whole `-`/`_`/`.`-delimited pieces
357
- * of the file name (v2 review, comment 4): `auth.ts`, `api-token.ts`,
358
- * `secrets.json` count; `author.ts`, `tokenizer.ts`, and `.envelope.ts`
359
- * are ordinary names and do not. `permission` is not a credential word
360
- * at all — `permissions-ui.tsx` is a screen, not a secret. */
361
282
  export const SENSITIVE_PATH = /(^|\/)(\.github|migrations?)\/|(^|\/)(package(-lock)?\.json|pnpm-lock\.yaml|yarn\.lock|Dockerfile|\.env(\.[^/]+)?|schema[^/]*\.(sql|prisma)|(?:[^/]*[-_.])?(auth|secrets?|tokens?|credentials?)(?:[-_.][^/]*)?)$/i;
362
283
  export const LARGE_CHANGE_LINES = 200;
363
- /** The changed-file list's own review priority: outside the signed
364
- * touches first, then files a machine cannot diff or a criterion never
365
- * cited, then the rest by churn. Presentation only — the sealed patch
366
- * keeps its own order beneath, byte for byte. */
367
284
  export function reviewFilePriority(file, proofCitesPaths) {
368
285
  const reasons = [];
369
286
  let band = 2;
@@ -396,17 +313,7 @@ export function orderChangedFiles(files, proofCitesPaths) {
396
313
  ? churn(b) - churn(a)
397
314
  : a.path.localeCompare(b.path));
398
315
  }
399
- /** The receipt's own proof-state word, so the cockpit and the task page
400
- * never disagree on the state's name or its precedence: the stored
401
- * verdict decides, whatever the run's outcome — a no-change run with a
402
- * refuted proof reads as refuted, never as "no change needed". The one
403
- * word the receipt never needs is "No build record": a manual completion
404
- * has no receipt to share it with. */
405
- /** The cockpit's headline status: the shared projection over the same
406
- * verdict, acceptance, and publication rows the task page reads. */
407
316
  export function cockpitStatusOf(view) {
408
- // The receipt's own status (package 3): the same projection the chat
409
- // receipt and the run page print, read from the shared detail.
410
317
  if (view.run === null || view.detail === null)
411
318
  return view.assignment === null ? resultHeadlineOf(resultStatusOf(null, null)) : assignmentPresentationOf(view.assignment).status;
412
319
  const receiptStatus = receiptStatusOf(view.detail.receipt);
@@ -414,9 +321,6 @@ export function cockpitStatusOf(view) {
414
321
  return assignmentStatusOf(assignmentWithEvidence(view.assignment, receiptStatus, view.run.id));
415
322
  return resultHeadlineOf(receiptStatus);
416
323
  }
417
- /** Turn verifier records into one sentence a project owner can act on.
418
- * A command-not-found result means the check could not start, not that the
419
- * product itself failed. The stored record remains unchanged. */
420
324
  export function verificationExplanation(verdict, reasons) {
421
325
  const plain = reasons.map(reason => {
422
326
  if (reason === "the approved verification command passed after the approved setup command ran"
@@ -500,9 +404,6 @@ export function verificationRecovered(reasons) {
500
404
  return reasons.some(reason => reason === "the approved verification command passed after the approved setup command ran"
501
405
  || reason === "the approved verification command passed after the approved setup command restored project dependencies");
502
406
  }
503
- /** Whether a reviewer can annotate this result's diff here: the shared
504
- * detail's own answer (a verified, non-empty sealed patch read by a
505
- * session that holds a CSRF token) — decided once, in `resultDetailOf`. */
506
407
  export function canAnnotateDiff(view, csrf) {
507
408
  return view !== null && view.detail !== null && csrf !== "" && view.detail.canAnnotate;
508
409
  }
@@ -535,8 +436,6 @@ export function reviewCockpitPage(chrome, data) {
535
436
  : html `<p class="meta cockpit-beyond" data-cockpit-beyond="1">This result is not in the current review list.</p>`;
536
437
  const detailParts = selected === null ? null : reviewCockpitDetailParts(selected, csrf, data.noted, data.canRetryReview, data.tab, data.user);
537
438
  const detail = detailParts === null ? html `<section class="cockpit-detail"><p class="meta">Nothing to review yet.</p></section>` : detailParts.html;
538
- // The rebuilt page (shadcn/ui): the selected result at full width, the
539
- // list one tap away in the header.
540
439
  const view = {
541
440
  kind: "result",
542
441
  results: queue.map(row => {
@@ -575,8 +474,6 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
575
474
  const accepted = proof?.accepted !== null && proof?.accepted !== undefined;
576
475
  const canAnnotate = canAnnotateDiff(view, csrf);
577
476
  const status = cockpitStatusOf(view);
578
- // Header: what this is, its verdict word, and why it sits where it does. On a task page the task's own header says
579
- // all of it, once.
580
477
  if (host.kind === "review")
581
478
  parts.push(joinHtml([
582
479
  html `<header class="cockpit-head" data-review-task="${view.taskId}">`,
@@ -587,16 +484,13 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
587
484
  ]));
588
485
  if (view.detail === null && view.historyProblem !== null)
589
486
  parts.push(html `<p class="problem" data-history-problem>${view.historyProblem} <a href="${taskHref(view.taskId)}">Open task</a></p>`);
590
- // The primary next act — exactly one road, chosen from the state.
591
487
  parts.push(reviewNextAction(view, csrf, accepted, canAnnotate));
592
- // Approved intent: the signed scope's words, the plan's approach.
593
488
  const intent = view.intent;
594
489
  let intentView = null;
595
490
  if (intent === null) {
596
491
  parts.push(html `<section class="card cockpit-section" data-cockpit-section="intent"><h3>Approved plan</h3><p class="meta">No plan was filed for this task, so there is no approved goal or boundary to review.</p></section>`);
597
492
  }
598
493
  else {
599
- // The time itself goes to the page as a stamp: the one formatter words it in the viewer's zone.
600
494
  const approvalWords = intent.approval.approved
601
495
  ? `Approved by ${intent.approvedBy ?? "an approver"}`
602
496
  : intent.approval.reason === "changed"
@@ -629,7 +523,6 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
629
523
  network: view.network ?? null,
630
524
  timing: view.timing ?? null,
631
525
  acts: { primary: null, secondary: null, line: null }, runChecks: null, mismatch: null,
632
- // The raw run record lives under Details now (2026-10-02): /r/<id> for this result redirects here.
633
526
  record: run === null ? null : { build: run.id, href: `/r/${run.id}?record=1`, facts: [
634
527
  { label: "Agent", value: [run.provider, run.model].filter(Boolean).join(" · ") },
635
528
  { label: "Builder", value: run.runner },
@@ -643,19 +536,13 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
643
536
  parts.push(html `<section class="card cockpit-section" id="verification" data-cockpit-section="proof"><h3>Verification</h3><p class="meta">This task has no finished build record, so there are no captured changes or checks to review.</p><p class="row"><a href="${taskHref(view.taskId)}">Open the task →</a></p></section>`);
644
537
  return { html: html `<section class="cockpit-detail">${joinHtml(parts, "\n")}</section>`, selected: { ...selected, noRun: "This task has no finished build record, so there are no captured changes or checks to review." } };
645
538
  }
646
- // The result itself (package 3): the same panel the run page and the
647
- // chat's result view render — Summary / Changes / Checks with Request
648
- // changes beside it. The cockpit adds its own acts under Checks: the
649
- // v50 review-retry panel and the accept-with-exception form.
650
539
  const extraChecks = reviewRetryPanel(view.taskId, run.id, view.reviewRetry, { csrf, canAct: false, returnTo: null });
651
540
  const here = reviewHref(view.taskId);
652
- /** This result's own address on its host, at one of its views (summary when none). */
653
541
  const at = (section = "summary") => host.kind === "task"
654
542
  ? `${host.base}&run=${run.id}${section === "summary" ? "" : `&section=${section}`}`
655
543
  : `${here}&run=${run.id}${section === "summary" ? "" : `&tab=${section}`}`;
656
544
  const assignment = view.assignment === null ? null : assignmentWithEvidence(view.assignment, receiptStatusOf(view.detail.receipt), run.id);
657
545
  const saved = assignment?.receipt?.checks;
658
- // The approved check as the task page reads it (task-status.ts approvedCheckOf): one answer for this whole page.
659
546
  const checks = saved === undefined || assignment?.receipt == null ? undefined
660
547
  : { ...saved, ...(receiptChecksOf(assignment.receipt) ?? {}), detail: saved.detail };
661
548
  if (checks !== undefined)
@@ -676,50 +563,38 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
676
563
  headStatus: false,
677
564
  action: false,
678
565
  });
679
- // On a task page the result script keeps the result's own view in `section=` (the page's `tab` is the task's).
680
566
  if (host.kind === "task")
681
567
  panel.panel.attributes = { ...panel.panel.attributes, "data-result-param": "section" };
682
568
  parts.push(html `<div id="verification" data-cockpit-section="result">${panel.html}</div>`);
683
- // What no acceptance resolves (a failed check, a HIGH finding): Complete is refused, so no Accept is offered and
684
- // the one line says the next step.
685
- const hardStop = hardBlockerOf(assignment);
569
+ const hardStop = hardBlockerOf(assignment) ?? view.detail.completeRefusal ?? null;
686
570
  const blocked = hardStop ?? cantAcceptYetOf(proof?.verdict ?? null, proof?.reasons ?? [], accepted);
687
571
  const youCheck = panel.panel.youCheck;
688
- // Accept and finish posts the completion; when an acceptance is owed (the person's own checks, or a reason a
689
- // report that doesn't match its changes asks for), the same request records it first.
690
572
  const owed = accepted ? null : youCheck?.accept != null ? { note: null } : panel.panel.need?.accept != null ? { note: panel.panel.need.accept.note }
691
573
  : blocked === ACCEPT_NEEDS_REASON ? { note: "Why is this safe to accept?" } : null;
692
574
  const complete = hardStop === null && assignment?.state === "ready-to-check" && assignment.receipt !== null && canRetryReview && csrf !== ""
693
575
  ? { action: `${taskHref(view.taskId)}/complete`, receipt: assignment.receipt.digest, run: run.id, accept: owed, ...(host.kind === "task" ? { returnTo: at() } : {}) } : null;
694
576
  if (complete !== null)
695
577
  parts.push(completionForm(view.taskId, run.id, complete.receipt, view.detail?.pullRequestTo ?? null, owed));
696
- // The one decision, after the evidence: Accept and finish only when every requirement is met and the checks passed.
697
578
  const acceptsHere = complete !== null || panel.panel.need?.accept != null || youCheck?.accept != null;
698
579
  const matrix = proof === null || proof.proofProblem !== null ? [] : proof.matrix;
699
580
  const unanswered = accepted || youCheck == null ? [] : youCheck.items.length > 0 ? youCheck.items.map(one => one.statement === "" ? one.words : one.statement) : youCheck.lines;
700
581
  const base = !acceptsHere ? null : acceptWordsOf({
701
- // Checks Off that a release check already covers read as passed (release-coverage.ts).
702
582
  checks: checks === undefined ? null : { passed: "passed", failed: "failed", running: "running", "not-run": "not-run", off: "off", unreadable: "unavailable" }[approvedCheckStateOf(checks)],
703
- // Release-aware words (task-status.ts): a requirement waiting only on a release check, or covered by one, isn't unmet.
704
583
  unmet: matrix.filter(row => !["Met", "You check", CHECKED_AT_RELEASE].includes(requirementWordOf(row, null, checks === undefined ? undefined : checkBackingOf(checks)))).length,
705
584
  action: complete !== null ? "complete" : "accept",
706
585
  publishing: view.detail?.publishing ?? "other",
707
- proof: proof !== null && proof.proof !== null && proof.proofProblem === null,
586
+ proof: proof !== null && proof.proofProblem === null && (proof.proof !== null || proof.matrix.length > 0),
708
587
  });
709
- // Refuted: plain Accept and finish stays as allowed, in outline, and the one line before the acts (acts.line) says why.
710
588
  const settled = base === null || blocked === null ? base : { ...base, label: "Accept", ready: false };
711
589
  const decision = settled === null ? null : { sentence: RESULT_DECISION_SENTENCE, ...settled, ...acceptWithChecksOf(settled, { unanswered, notRight: [] }),
712
590
  base: { label: settled.label, ready: settled.ready, why: settled.why } };
713
- // Run checks: no check ran on this result (or its saved one can't be read), the project has one, and an approver may run it.
714
591
  const followUps = view.detail.followUps ?? null;
715
592
  const checksRunning = checks?.running != null || (followUps?.checks.some(one => one.state === "waiting" || one.state === "running") ?? false);
716
593
  const runChecks = canRetryReview && csrf !== "" && followUps !== null && (followUps.full || followUps.quick) && !checksRunning &&
717
594
  (checks === undefined || ((checks.status === "not-run" || checks.status === "unavailable") && checks.release == null))
718
- // Back on this result's Checks tab, where #follow-ups shows the run it started.
719
595
  ? { action: `/r/${run.id}/checks`, level: followUps.full ? "full" : "quick", returnTo: at("checks") } : null;
720
596
  const need = panel.panel.need;
721
597
  const nextKind = selected.next?.kind;
722
- // A failed build: what went wrong is the card, Retry the act; a link to this same page goes nowhere, so it isn't one.
723
598
  const failure = view.failure == null ? null : { line: view.failure.line, evidence: view.failure.evidence, suggestion: view.failure.suggestion, retry: view.failure.retry,
724
599
  link: view.failure.link === null || (view.failure.link.href.startsWith(`${here}&run=${run.id}`) && !view.failure.link.href.includes("#")) ? null
725
600
  : host.kind === "task" && view.failure.link.href.startsWith(`${here}&run=${run.id}&tab=`) ? { ...view.failure.link, href: view.failure.link.href.replace(`${here}&run=${run.id}&tab=`, `${host.base}&run=${run.id}&section=`) } : view.failure.link,
@@ -738,12 +613,9 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
738
613
  notRight: 0,
739
614
  };
740
615
  const acts = resultActsOf(actFacts);
741
- // A refuted result's card lists every recorded disagreement, each tied to its lines; when the report itself doesn't
742
- // match the changes (not a failed check), that is the headline.
743
616
  const mismatch = failure !== null || proof === null || accepted || proof.verdict !== "refuted" ? null : (() => {
744
617
  const patch = view.detail?.terminal?.patch ?? null;
745
618
  const files = patch === null || "problem" in patch ? [] : parseReviewDiff(patch.text).files;
746
- // Each file's first change: the lines it added (else every line it shows), and where that change starts (its link target).
747
619
  const hunkStart = new Map();
748
620
  const changes = new Map(files.map(file => {
749
621
  const shown = file.hunks[0]?.lines.filter(line => line.newLine !== null && line.kind !== "meta") ?? [];
@@ -755,7 +627,6 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
755
627
  }));
756
628
  const changesHref = at("changes");
757
629
  const found = reportMismatchesOf(proof.reasons, proof.proofProblem === null ? proof.matrix : [], changes);
758
- // The saved report itself can't be read: that is the evidence problem, said once.
759
630
  if (proof.proofProblem !== null)
760
631
  found.push({ text: `The saved report can't be read: ${proof.proofProblem}`, path: null, lines: null, inChanges: null, note: null, reason: proof.proofProblem });
761
632
  if (found.length === 0)
@@ -779,10 +650,7 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
779
650
  html: html `<section class="cockpit-detail">${joinHtml(parts, "\n")}</section>`,
780
651
  selected: {
781
652
  ...selected, complete: failure === null ? complete : null, decision: failure === null ? decision : null, acts, actFacts, runChecks, mismatch, failure,
782
- // A failed build reads Failed, whatever its task has done since; its outcome is what went wrong.
783
- // Run checks is the decision's own act on this page; a status row never sends the person to Chat for it.
784
653
  panel: (() => {
785
- // A Chat link to this same result would lead back here: it isn't one.
786
654
  const elsewhere = (href) => href !== null && !href.endsWith("#follow-ups") && !new RegExp(`^/chat\\?task=[^&]+&result=${run.id}(?:&|$)`).test(href);
787
655
  const shown = panel.panel.status === null ? null : view.demo === true ? demoChecksOf(panel.panel.status) : panel.panel.status;
788
656
  const missed = proof === null || proof.proofProblem !== null ? 0 : requirementsOf(proof.matrix)?.missed ?? 0;
@@ -790,9 +658,7 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
790
658
  href: elsewhere(one.href) ? one.href : null, action: one.action !== null && elsewhere(one.action.href) ? one.action : null })) };
791
659
  return failure === null ? { ...panel.panel, status }
792
660
  : { ...panel.panel, outcome: failure.line, need: null, youCheck: null, status: status === null ? null : { ...status, headline: "Failed", tone: "danger", sentence: failure.line, need: null,
793
- // Read as Failed, the Requirements row counts what it missed, as the task's card does.
794
661
  details: status.details.map(one => one.key !== "requirements" || missed === 0 ? one : { ...one, text: `${missed} missed`, mark: "failed", action: null }) },
795
- // What it missed is said once, in plain words above; the recorded wording stays under Details.
796
662
  attention: panel.panel.attention.filter(one => !(proof?.reasons ?? []).includes(one) && !(proof?.matrix ?? []).some(row => row.detail.includes(one))) };
797
663
  })(),
798
664
  ...(failure === null ? {} : { status: { label: "Failed", tone: "problem", token: "failed" } }),
@@ -800,25 +666,18 @@ export function reviewCockpitDetailParts(view, csrf, noted, canRetryReview, tab,
800
666
  },
801
667
  };
802
668
  }
803
- /** What Accept and finish owes before it completes, as the form asks for it: the server's own rule
804
- * (owedAcceptance), so the form asks for exactly what the completion requires. */
805
669
  export function owedAcceptanceOf(receipt) {
806
670
  const owed = owedAcceptance(receipt);
807
671
  return owed === null ? null : owed === "person-check" ? { note: null } : { note: "Why is this safe to accept?" };
808
672
  }
809
673
  export function completionForm(taskId, runId, digest, pullRequestTo = null, accept = null) {
810
- // Accept and finish, in one request: with an acceptance owed (the person's own checks, or an exception and
811
- // its reason, asked for right here), the same post records it first.
812
674
  const reason = accept?.note == null ? "" : html `<label class="meta" for="complete-reason-${runId}">${ACCEPT_NEEDS_REASON}</label><input type="text" id="complete-reason-${runId}" name="note" maxlength="500" required placeholder="${accept.note}">`;
813
675
  const options = { attrs: { class: "card result-complete" }, hidden: { receipt: digest, run: runId, accept: accept === null ? null : "1" } };
814
676
  if (pullRequestTo !== null) {
815
- // With pull requests set up: the PR is the primary road, a bare finish the quiet one beside it.
816
677
  return postForm(`${taskHref(taskId)}/complete`, html `${reason}<p class="meta">Finishes the task. A pull request opens on ${pullRequestTo} from this exact commit when you ask for one.</p><div class="result-complete-actions"><button type="submit" name="publish" value="1" style="min-height:44px">Accept and open a pull request</button><button type="submit" class="secondary" style="min-height:44px">Accept</button></div>`, options);
817
678
  }
818
679
  return postForm(`${taskHref(taskId)}/complete`, html `${reason}<p class="meta">Finishes the task. Checks stay unchanged; nothing is published or deployed.</p><button type="submit" style="min-height:44px">Accept</button>`, options);
819
680
  }
820
- /** The pull request, in one card: its state and link, one line of detail, and the one action it needs — Merge
821
- * behind the password when checks passed, or Open a pull request for a result completed without one. */
822
681
  export function pullRequestCardHtml(pr, csrf) {
823
682
  if (pr.view === null) {
824
683
  if (pr.offer === null || csrf === "")
@@ -828,7 +687,6 @@ export function pullRequestCardHtml(pr, csrf) {
828
687
  const view = pr.view;
829
688
  const url = safePrUrl(view.prUrl);
830
689
  const link = view.prNumber === null ? "" : url === null ? html `<span class="mono">PR #${view.prNumber}</span>` : html `<a href="${url}" class="mono" rel="noreferrer" target="_blank">PR #${view.prNumber}</a>`;
831
- // A pull request's trouble never undoes the result: an ink note, never red.
832
690
  const tone = view.state === "ready" || view.state === "merged" ? "ok" : view.state === "failing" || view.state === "failed" ? "problem" : "waiting";
833
691
  const revision = view.revisionTask === null || view.state !== "failing" ? "" : html ` <a href="${taskHref(view.revisionTask)}">Open revision</a>`;
834
692
  const merged = view.mergeCommit === null ? "" : html `<p class="meta">Merge commit <span class="mono">${view.mergeCommit.slice(0, 12)}</span></p>`;
@@ -837,15 +695,10 @@ export function pullRequestCardHtml(pr, csrf) {
837
695
  postForm(`${taskHref(pr.taskId)}/merge`, html `<p class="meta">${view.mergeMethod === "squash" ? "Squash-merges" : view.mergeMethod === "rebase" ? "Rebase-merges" : "Merges"} PR #${view.prNumber} into ${target} and deletes its branch.</p>${reauth(html `<label>Password<input type="password" name="token" autocomplete="current-password" required></label>`)}${view.fullCheck === null ? html `<button type="submit">Merge</button>` : html `<input type="hidden" name="anyway" value="1"><button type="submit" class="secondary">Merge anyway</button>`}`, { attrs: { class: "pull-request-act", "data-merge-form": true }, hidden: { run: view.runId } });
838
696
  return html `<section class="card pull-request pull-request--${tone}" id="merge" data-pull-request="${view.state}"><div class="pull-request-head"><strong>${view.label}</strong>${link}</div><p class="meta">${view.detail}${revision}</p>${merged}${act}</section>`;
839
697
  }
840
- /** Exactly one primary road per result, chosen from its state; the
841
- * others stay reachable from their own sections. Every form posts to the
842
- * endpoint that already owns the act, with the session's CSRF token; a
843
- * bearer session (no token) sees the road named, never a form. */
844
698
  export function reviewNextAction(view, csrf, _accepted, _canAnnotate) {
845
699
  const next = reviewNextActionParts(view, csrf);
846
700
  return next === null ? html `` : html `<div class="card cockpit-next" data-next-action="${next.kind}"><div><strong>${next.title}</strong><span class="meta">${next.detail}</span></div>${next.control}</div>`;
847
701
  }
848
- /** The next action for the browser workspace's JSON: its control as markup text. */
849
702
  export function reviewNextActionOf(view, csrf, back) {
850
703
  const next = reviewNextActionParts(view, csrf, back);
851
704
  return next === null ? null : { ...next, control: htmlString(next.control) };
@@ -865,11 +718,6 @@ function reviewNextActionParts(view, csrf, back) {
865
718
  }
866
719
  return null;
867
720
  }
868
- /**
869
- * Plain words for the machine's own vocabulary — no internal token ever
870
- * reaches a page. Every map here has a generic fallback: a kind a newer
871
- * daemon invents degrades to honest generic prose, never to its raw name.
872
- */
873
721
  export const PHASE_WORDS = {
874
722
  "agent-running": "agent working",
875
723
  "validating-handoff": "checking the handoff",
@@ -877,7 +725,6 @@ export const PHASE_WORDS = {
877
725
  "capturing-evidence": "saving its files",
878
726
  committing: "committing",
879
727
  };
880
- /** An agent's phase on the home card, from the machine's own vocabulary. */
881
728
  export function homePhaseWords(run) {
882
729
  if (run.role === "planner")
883
730
  return "Planning";
@@ -892,7 +739,6 @@ export function homePhaseWords(run) {
892
739
  export function phaseWords(phase) {
893
740
  return PHASE_WORDS[phase] ?? "the agent is working";
894
741
  }
895
- /** A recorded reason in one plain line; machine output (a stack trace, a path, "Error:" text) waits on the run record. */
896
742
  export function reasonWords(reason) {
897
743
  return isInternalErrorReason(reason) ? "stopped with an internal error" : oneLineOf(runReasonWords(reason.trim().split(/\r?\n/, 1)[0] ?? ""), 140);
898
744
  }
@@ -925,7 +771,6 @@ export const EVIDENCE_WORDS = {
925
771
  "plan-contract": "Your request",
926
772
  "review-context": "Review context",
927
773
  };
928
- /** Byte counts as people read them. */
929
774
  export function humanBytes(bytes) {
930
775
  if (bytes < 1024)
931
776
  return `${bytes} B`;
@@ -936,9 +781,6 @@ export function humanBytes(bytes) {
936
781
  export function evidenceWords(kind) {
937
782
  return EVIDENCE_WORDS[kind] ?? "a stored record";
938
783
  }
939
- /** The badge for a run's outcome. A null outcome reads "running" ONLY when
940
- * the caller proved the run's lease is the task's current live claim — an
941
- * orphaned run keeps saying what actually became of it. */
942
784
  export function runOutcomeBadge(run, live) {
943
785
  if (!live && run.role === "planner" && run.reason === "plan-drafted") {
944
786
  return html `<span class="badge">Planned</span>`;
@@ -950,8 +792,6 @@ export function runOutcomeBadge(run, live) {
950
792
  : html `<span class="badge badge-${run.outcome ?? "cut"}">${sentenceCase(run.outcome ?? "never finished")}</span>`;
951
793
  }
952
794
  export const runNoun = (run) => run.role === "planner" ? "plan" : run.role === "reviewer" ? "review" : run.role === "scout" ? "report" : "build";
953
- /** What a scout found, each with its link and picture, then any screenshot no item shows. Every link is the cited
954
- * http(s) address the report parser admitted; every picture is served from verified evidence. */
955
795
  export function reportItemsHtml(items, shots, runId) {
956
796
  const picture = (shot) => shot.artifactId === null
957
797
  ? html `<p class="meta">Screenshot unavailable: ${shot.problem ?? "it can't be shown"}</p>`
@@ -985,11 +825,6 @@ export function runReportView(artifacts, root) {
985
825
  return { ok: true, artifactId: artifact.id, title: parsed.report.title, summary: parsed.report.summary, document: parsed.report.report, followUps: parsed.report.followUps.length, truncated: artifact.truncated,
986
826
  items: parsed.report.items, shots: reportShotsOf(artifacts, root, artifact.run, parsed.report.images) };
987
827
  }
988
- /** The shared facts (package 3), computed ONCE from the same verified
989
- * records every surface reads: the head from the sealed diff summary when
990
- * it verifies (else the run record, and the source is named), the signed
991
- * criteria passed from the machine's matrix, the proof's caveats, every
992
- * evidence problem in words, and the observed publication state. */
993
828
  export function sharedResultFactsOf(run, proof, terminal, handoff, report, publication) {
994
829
  const stat = terminal?.stat ?? null;
995
830
  const statOk = stat !== null && !("problem" in stat);
@@ -1037,9 +872,6 @@ export function proofBundleView(store, run, artifacts, root) {
1037
872
  const path = SCREENSHOT_CAPTURE.exec(artifact.capture)?.[1];
1038
873
  if (path === undefined)
1039
874
  return [];
1040
- // The bytes are re-verified at render (workspace package 3): a shot
1041
- // whose file is gone or altered is named as unavailable, never shown
1042
- // as validated visual proof.
1043
875
  let problem = null;
1044
876
  try {
1045
877
  const read = readVerifiedArtifact(root, artifact);
@@ -1055,8 +887,6 @@ export function proofBundleView(store, run, artifacts, root) {
1055
887
  const uncapturedScreenshots = (proof?.screenshots ?? []).map(one => one.path).filter(path => !stored.has(path));
1056
888
  let checkLog = null;
1057
889
  if (checkLogArtifact !== null) {
1058
- // Re-verified at render: a log whose bytes no longer hash to their
1059
- // record is a named evidence problem, never shown as output.
1060
890
  let read;
1061
891
  try {
1062
892
  read = readVerifiedArtifact(root, checkLogArtifact);
@@ -1086,9 +916,6 @@ export function proofBundleView(store, run, artifacts, root) {
1086
916
  screenshots,
1087
917
  uncapturedScreenshots,
1088
918
  matrix: verdictRow?.matrix ?? [],
1089
- // A matrix row links only to records that still verify (repair
1090
- // 2026-09-14): a damaged screenshot or check log is named as a
1091
- // problem above, never offered as a download.
1092
919
  matrixLinks: (() => {
1093
920
  const damaged = new Set([...screenshots.filter(one => one.problem !== null).map(one => one.artifactId), ...(checkLog !== null && checkLog.problem !== null ? [checkLog.artifactId] : [])]);
1094
921
  return new Map([...evidenceLinksFor(artifacts)].filter(([, id]) => !damaged.has(id)));
@@ -1101,8 +928,6 @@ export function proofBundleView(store, run, artifacts, root) {
1101
928
  })(),
1102
929
  };
1103
930
  }
1104
- /** What the verdict recorded when the build finished, said beside what holds now: a recorded pass is restated only
1105
- * when the check read now passed; unread, it points to the result; unreadable or failed since, it says so. */
1106
931
  export function completionWords(verdict, reasons, checks) {
1107
932
  const recorded = verificationExplanation(verdict, reasons);
1108
933
  if (verdict !== "verified")
@@ -1116,8 +941,6 @@ export function completionWords(verdict, reasons, checks) {
1116
941
  : checks?.cause === "command-changed" ? "the check command changed since this check." : `${CHECK_UNREADABLE.charAt(0).toLowerCase()}${CHECK_UNREADABLE.slice(1)}`;
1117
942
  return `At completion: ${recorded} Now: ${said} It doesn't count as passed.`;
1118
943
  }
1119
- /** A result's saved approved check as the assignment reads it (assignment.ts): the receipt, follow-ups on its commit,
1120
- * and with checks Off the passing release check that contains it. */
1121
944
  function savedChecksOf(store, root, run, now) {
1122
945
  const own = checksFactOf(assignmentChecksForRun(store, root, run.id, now), run.headRevision);
1123
946
  if (own.level !== "off" || own.status === "passed" || own.status === "failed")
@@ -1161,14 +984,10 @@ export function completionReceiptView(store, run, artifacts, root, review = null
1161
984
  coverageSecondary: coverage.contextGaps.length === 0 && (coverage.satisfied === true || (coverage.satisfied === null && !coverage.required)),
1162
985
  report,
1163
986
  facts: sharedResultFactsOf(run, proof, terminal, handoff, report, publication),
1164
- // The same reading the task page's Project checks row shows (assignment.ts), never the verdict alone.
1165
987
  ...(run.role === "scout" ? {} : { checks: savedChecksOf(store, root, run, now) }),
1166
988
  };
1167
989
  }
1168
990
  export const REVIEW_DIFF_LINE_CAP = 4_000;
1169
- /** Parse only the stable structure Git's unified patch format guarantees.
1170
- * Unknown metadata remains visible, and a patch that cannot be structured
1171
- * falls back to the sealed raw record—presentation never becomes proof. */
1172
991
  export function parseReviewDiff(text) {
1173
992
  const files = [];
1174
993
  let file = null;
@@ -1265,7 +1084,6 @@ export function reviewDiffHtml(patch, stat, runId, commentable, anchors = new Ma
1265
1084
  ? html `<span class="diff-file-counts">binary</span>`
1266
1085
  : html `<span class="diff-file-counts"><b>+${counts.additions}</b><i>−${counts.deletions}</i></span>`;
1267
1086
  const fileAnchor = anchors.get(one.path);
1268
- // Each change is a link target of its own (#<file anchor>-L<first new line>): a result names the exact lines.
1269
1087
  const hunks = one.hunks.map(hunk => {
1270
1088
  const first = hunk.lines.find(line => line.newLine !== null && line.kind !== "meta")?.newLine ?? null;
1271
1089
  return html `<section class="diff-hunk"${fileAnchor === undefined || first === null ? "" : html ` id="${fileAnchor}-L${first}"`}><div class="diff-hunk-head">${hunk.header}</div><div class="diff-lines">${hunk.lines.map(line => {
@@ -1275,7 +1093,6 @@ export function reviewDiffHtml(patch, stat, runId, commentable, anchors = new Ma
1275
1093
  ? html `<span class="diff-annotate-space"></span>`
1276
1094
  : html `<button type="button" class="diff-annotate pick-line" data-path="${one.path}" data-line="${lineNumber}" data-side="${side}" aria-label="Annotate ${one.path}, ${side} line ${lineNumber}" title="Annotate this line">${annotateIcon}</button>`;
1277
1095
  const marker = line.kind === "addition" ? "+" : line.kind === "deletion" ? "−" : line.kind === "context" ? " " : "·";
1278
- // Each real line names its file and line, so a comment (or a test) can find the exact row.
1279
1096
  const named = lineNumber === null || line.kind === "meta" ? "" : html ` data-diff-file="${one.path}" data-diff-line="${lineNumber}"`;
1280
1097
  return html `<div class="diff-line diff-${line.kind}"${named}>${annotate}<span class="diff-gutter">${line.oldLine ?? ""}</span><span class="diff-gutter">${line.newLine ?? ""}</span><code><b aria-hidden="true">${marker}</b>${line.text}</code></div>`;
1281
1098
  })}</div></section>`;
@@ -1289,29 +1106,15 @@ export function reviewDiffHtml(patch, stat, runId, commentable, anchors = new Ma
1289
1106
  ? html `<p class="diff-cut">The saved diff was shortened when it was stored: the rest of the change was never captured, here or in the download.</p>`
1290
1107
  : parsed.linesTruncated ? html `<p class="diff-cut">This visual diff is shortened. Review the saved patch before approving.</p>` : ""}</div>${storedDownloadLink(runId, patch.artifactId, "diff", patch.truncated)}`;
1291
1108
  }
1292
- /** The check log as stored (repair 2026-09-14): its output behind a
1293
- * disclosure when the bytes verify — a shortened log says so in the
1294
- * summary and its download is the stored part; a log that no longer
1295
- * verifies is a named problem with no output and no download. */
1296
1109
  export function checkLogHtml(log, runId, extra) {
1297
1110
  if (log.problem !== null) {
1298
1111
  return html `<p class="problem" data-check-log="damaged"${extra}>The check log no longer verifies (${log.problem}). Its output is not shown, and there is nothing to download.</p>`;
1299
1112
  }
1300
- return html `<details data-check-log="${log.truncated ? "shortened" : "ok"}"${extra}><summary>Check output${log.truncated ? ` (shortened — ${log.bytesStored} of ${log.bytesOriginal} bytes stored)` : ""}</summary><pre class="mono" style="overflow-x:auto;max-height:18rem">${
1301
- // Each line is a link target (#check-log-L<n>): a failed task names the exact line its check ended on.
1302
- joinHtml(log.text.split("\n").map((line, index) => html `<span id="check-log-L${index + 1}">${line}</span>`), "\n")}</pre></details>${storedDownloadLink(runId, log.artifactId, "check log", log.truncated)}`;
1113
+ return html `<details data-check-log="${log.truncated ? "shortened" : "ok"}"${extra}><summary>Check output${log.truncated ? ` (shortened — ${log.bytesStored} of ${log.bytesOriginal} bytes stored)` : ""}</summary><pre class="mono" style="overflow-x:auto;max-height:18rem">${joinHtml(log.text.split("\n").map((line, index) => html `<span id="check-log-L${index + 1}">${line}</span>`), "\n")}</pre></details>${storedDownloadLink(runId, log.artifactId, "check log", log.truncated)}`;
1303
1114
  }
1304
- /** The download link for a stored record (repair 2026-09-14): a shortened
1305
- * record's link says it holds the stored part only — never "the full"
1306
- * bytes that were cut at storage and exist nowhere. */
1307
1115
  export function storedDownloadLink(runId, artifactId, what, truncated) {
1308
1116
  return html `<p class="meta"><a href="/r/${runId}/evidence/${artifactId}">${truncated ? `Download the stored part of the ${what} (shortened at storage — not the full ${what})` : `Download the ${what}`}</a></p>`;
1309
1117
  }
1310
- /** Render the terminal diff card: stat and capture health first, the bounded
1311
- * patch beneath a fold. `editor` (arc 6) links file rows to vscode:// on the
1312
- * reviewing device; `commentable` adds a per-file "comment" button the
1313
- * page's prefill script reads — a real button, keyboard-reachable, separate
1314
- * from the link so the two never fight over one click (finding 4). */
1315
1118
  export function terminalDiffCard(view, runId, editor = null, commentable = false) {
1316
1119
  const parts = [html `<h2>What changed</h2>`];
1317
1120
  if (view.stat === null) {
@@ -1355,22 +1158,12 @@ export function terminalDiffCard(view, runId, editor = null, commentable = false
1355
1158
  }
1356
1159
  return joinHtml(parts, "\n");
1357
1160
  }
1358
- /**
1359
- * The evidence bundle (Priority 2): the closed verdict first — the one
1360
- * sentence every other surface agrees with — then criteria, the agent's
1361
- * declared checks, the plane's own re-run (labeled "re-run here", never
1362
- * confused with the agent's own claim), caveats, and every validated
1363
- * screenshot as a thumbnail linking to the full image. Renders nothing
1364
- * when the run predates the proof system.
1365
- */
1366
1161
  export function evidenceBundleCard(view, run, publication = null, review = null) {
1367
1162
  if (view === null)
1368
1163
  return html ``;
1369
1164
  const runId = run.id;
1370
1165
  const parts = [html `<h2>Checks and saved files</h2>`];
1371
1166
  if (view.verdict !== null) {
1372
- // The same status line every other surface renders for this run
1373
- // (workspace package 1), beside the verdict's own explanation.
1374
1167
  const status = resultStatusOf({ runId, role: run.role, outcome: run.outcome, verdict: view.verdict, reasons: view.reasons, accepted: view.accepted !== null, review,
1375
1168
  ...(view.checks === undefined ? {} : { checks: view.checks }) }, publication);
1376
1169
  parts.push(html `<p class="row" data-proof-verdict="${dispatchStatusToken(view.verdict)}">${statusLineHtml(status)} <span class="meta">${completionWords(view.verdict, view.reasons, view.checks)}</span></p>`);
@@ -1407,14 +1200,6 @@ export function evidenceBundleCard(view, run, publication = null, review = null)
1407
1200
  }
1408
1201
  return parts.length === 1 ? html `` : joinHtml(parts, "\n");
1409
1202
  }
1410
- /** A calm, scan-first result receipt for the task and its focused chat.
1411
- * The full ledger remains one click away; this card carries only the facts
1412
- * needed to decide whether to inspect, discuss, or move on. */
1413
- /** The receipt's proof-state word and tone, from the stored verdict and
1414
- * the operator's acceptance alone — shared with the review cockpit's
1415
- * header chip so the two surfaces never name one state differently. */
1416
- /** The receipt's facts as the shared projection reads them. */
1417
- /** A result's follow-ups: checks run on its commit since it finished, and its tests task. */
1418
1203
  export function followUpsFor(store, evidenceRoot, run, now) {
1419
1204
  if (run.role !== "builder" || run.finishedAt === null || run.headRevision === null)
1420
1205
  return null;
@@ -1424,9 +1209,7 @@ export function followUpsFor(store, evidenceRoot, run, now) {
1424
1209
  quick: repo !== null && liveQuickCommand(store, repo) !== null, full: repo !== null && store.liveVerifyCommand(repo) !== null };
1425
1210
  }
1426
1211
  export const FOLLOW_UP_WORDS = { waiting: "waiting for a builder", running: "running", passed: "passed", failed: "failed", "not-run": "didn't run" };
1427
- /** Run checks and Add tests, under the result's Checks: what ran since, then the two acts. */
1428
1212
  export function followUpsHtml(followUps, runId, o) {
1429
- // A batch check names every result it ran with and the exact commit it tested (batch-checks.ts).
1430
1213
  const batchHow = (one) => {
1431
1214
  const peers = one.batch?.members.filter(member => member.run !== runId).map(member => member.task) ?? [];
1432
1215
  return one.batch?.mode === "together" && peers.length > 0 ? ` together with ${peers.join(", ")}`
@@ -1441,9 +1224,6 @@ export function followUpsHtml(followUps, runId, o) {
1441
1224
  return html `<section class="result-section follow-ups" id="follow-ups" data-follow-ups><strong>Follow-ups</strong>${rows.length === 0 ? "" : html `<ul class="follow-up-list">${rows}</ul>`}${canCheck || followUps.repo === null ? "" : html `<p class="meta">No approved check to run. <a href="/settings/checks?repo=${encodeURIComponent(followUps.repo)}">Set one up</a>.</p>`}${checkActs === null && tests === null ? "" : html `<div class="follow-up-acts">${checkActs}${tests}</div>`}</section>`;
1442
1225
  }
1443
1226
  export function receiptStatusOf(view, review = view.review) {
1444
- // The evidence health rides the status (repair 2026-09-14): a result
1445
- // whose stored records are damaged is never called ready on the strength
1446
- // of a verdict recorded before the damage.
1447
1227
  return evidenceResultStatusOf({ runId: view.runId, role: view.role, outcome: view.outcome, verdict: view.verdict, reasons: view.reasons, accepted: view.accepted, recordComplete: view.recordComplete, review,
1448
1228
  ...(view.checks === undefined ? {} : { checks: view.checks }) }, view.publication, view.facts.evidenceHealth);
1449
1229
  }
@@ -1451,8 +1231,6 @@ export function completionReceiptCard(view, taskId, place, standing = receiptSta
1451
1231
  const current = assignment?.receipt?.runId === view.runId ? assignment : null;
1452
1232
  const presentation = current === null ? null : assignmentPresentationOf(current);
1453
1233
  const status = presentation?.status ?? standing;
1454
- // The verdict on record, whatever review is in flight: the criteria
1455
- // count's source label reads from it, never from the review's tone.
1456
1234
  const stored = receiptStatusOf(view, null);
1457
1235
  const inReview = REVIEW_TOKENS.has(status.token);
1458
1236
  const facts = view.facts;
@@ -1470,9 +1248,6 @@ export function completionReceiptCard(view, taskId, place, standing = receiptSta
1470
1248
  const criteria = facts.checks === null
1471
1249
  ? "No requirements set"
1472
1250
  : `${facts.checks.passed}/${facts.checks.total} requirements met`;
1473
- // The deliverable leads (package 3): a scout's report by its title, UI
1474
- // work by its validated screenshots. Unverifiable shots are counted as
1475
- // unavailable, never shown, never called validated.
1476
1251
  const lead = view.report !== null
1477
1252
  ? view.report.ok
1478
1253
  ? html `<p class="receipt-report"><strong>${view.report.title}</strong> <span class="meta">${oneLineOf(view.report.summary, 240)}</span></p>`
@@ -1482,16 +1257,10 @@ export function completionReceiptCard(view, taskId, place, standing = receiptSta
1482
1257
  : html `<div class="receipt-visuals" aria-label="validated screenshots">${shown
1483
1258
  .slice(0, 4)
1484
1259
  .map(shot => html `<a class="receipt-shot" href="/r/${view.runId}/evidence/${shot.artifactId}"><img src="/r/${view.runId}/evidence/${shot.artifactId}" alt="${shot.caption}"><span>${shot.caption}</span></a>`)}</div>`;
1485
- // Caveats and evidence problems stay in the open, ahead of the counts
1486
- // and any readiness words below them.
1487
1260
  const attention = current === null ? [...facts.evidenceProblems, ...view.caveats] : [];
1488
1261
  const caveats = attention.length === 0
1489
1262
  ? ""
1490
1263
  : html `<div class="receipt-caveats" data-result-attention="${attention.length}"><strong>Before you move on</strong><ul>${attention.map(one => html `<li>${plainReasonWords(one)}</li>`)}</ul></div>`;
1491
- // v51: semantic coverage, distinct from the machine proof word above —
1492
- // the same lines the CLI prints, so chat and terminal cannot disagree.
1493
- // Nothing owed (optional and unsettled, or satisfied) folds behind a
1494
- // disclosure; a strict shortfall or a context gap stays in the open.
1495
1264
  const coverage = view.coverage.length === 0
1496
1265
  ? ""
1497
1266
  : current !== null || view.coverageSecondary
@@ -1502,25 +1271,16 @@ export function completionReceiptCard(view, taskId, place, standing = receiptSta
1502
1271
  html `<section class="card completion-receipt" data-card-kind="result-receipt"${attributes(resultFactsAttributeMap(facts))}>`,
1503
1272
  html `<div class="receipt-head"><div><h2>${receiptHeadingOf(view.outcome, view.publication, view.role)}</h2></div>`,
1504
1273
  html `${headline ? statusLineHtml(status) : ""}</div>`,
1505
- // The agent's handoff is its narrative, labeled as such; the
1506
- // publication line is the observed record — never "shipped".
1507
1274
  lead,
1508
1275
  html `<p class="receipt-summary">${conciseOutcomeOf(view.summary ?? (view.outcome === "no-change" ? "The agent found that no repository change was needed." : "The build finished without a concise handoff."))}</p>`,
1509
1276
  headline ? html `<div class="receipt-actions"><a class="button-link" href="${resultHref}" data-open-result data-primary-action>${status.action?.label ?? "Open result"}</a></div>` : "",
1510
- // A pull request that couldn't open never undoes the result: an ink note, not red.
1511
1277
  view.publication?.state === "failed" ? html `<p class="receipt-note">${statusIconSvg("note")} Pull request couldn't open. The commit is safe locally.</p>` : "",
1512
1278
  caveats,
1513
1279
  coverage,
1514
1280
  html `<details class="receipt-details"><summary>${STATUS_MORE}</summary>`,
1515
1281
  view.summary !== null && view.summary !== conciseOutcomeOf(view.summary) ? html `<p class="recap">${view.summary}</p>` : "",
1516
1282
  html `<p class="receipt-publication" data-receipt-publication="${facts.publicationState}">${facts.publicationWords}</p>`,
1517
- // A review in flight is the receipt's primary status too (its chip
1518
- // above); the detail — the earlier verdict as history (review fixes,
1519
- // finding 4) — is secondary, behind a native disclosure that reads the
1520
- // same words on the task page and in chat.
1521
1283
  inReview ? html `<details class="receipt-history"><summary>Review history</summary><p class="receipt-review meta" data-receipt-review="${status.token}">${status.detail}</p></details>` : "",
1522
- // The matrix count is the proof's own citation; it reads as verified
1523
- // only when the machine verified the result (workspace package 1).
1524
1284
  html `<div class="receipt-facts"><span><strong>${criteria}</strong><small>${stored.tone === "problem" ? html `the agent's own word — not checked` : stored.token === "agent-attested" ? html `the agent's own word, no project check` : "against the approved plan"}</small></span>`,
1525
1285
  html `<span><strong>${diff}</strong><small>${facts.head === null ? "no commit recorded" : `head ${facts.head.slice(0, 7)} · ${facts.headSource ?? ""}`}</small></span>`,
1526
1286
  html `<span><strong>${view.screenshots.length} screenshot${view.screenshots.length === 1 ? "" : "s"}</strong><small>${view.screenshots.length === 0 ? "none required or captured" : unavailable === 0 ? "checked screenshots" : `${unavailable} unavailable — not validated`}</small></span></div>`,
@@ -1528,19 +1288,13 @@ export function completionReceiptCard(view, taskId, place, standing = receiptSta
1528
1288
  place === "task"
1529
1289
  ? html `<a href="${taskChatHref(taskId)}">Discuss in chat →</a>`
1530
1290
  : html `<a href="/r/${view.runId}">Full build record →</a>`,
1531
- // The cockpit (Priority 5): the same records, arranged for a reviewer.
1532
1291
  html `<a href="${reviewHref(taskId)}">Open result →</a>`,
1533
1292
  html `</div></details></section>`,
1534
1293
  ]);
1535
1294
  }
1536
- /** The revision form's binding (repair 2026-09-14): the exact ids of the
1537
- * notes this page displays and the source terms it was rendered against.
1538
- * The server seals these ids and no others. */
1539
1295
  export function revisionSealFields(comments, sourceDigest) {
1540
1296
  return html `<input type="hidden" name="batch" value="${revisionBatchOf(comments)}"><input type="hidden" name="source" value="${revisionSourceOf(sourceDigest)}">`;
1541
1297
  }
1542
- /** Older machine-checked results saved a mechanical sentence; say the same
1543
- * facts in plain words (the version id stays, shortened). */
1544
1298
  export function plainConclusionOf(conclusion) {
1545
1299
  const prepared = /^Prepared candidate ([0-9a-f]{7,40}) was checked out by the machine; no agent ran\. (The branch already matched it\.|The sealed diff spans this task's base to that candidate\.)/.exec(conclusion);
1546
1300
  if (prepared === null)
@@ -1551,7 +1305,6 @@ export function plainConclusionOf(conclusion) {
1551
1305
  export function resultPanelHtml(detail, o) {
1552
1306
  return resultPanelParts(detail, o).html;
1553
1307
  }
1554
- /** The panel's HTML and the same panel in parts, for the rebuilt result page. */
1555
1308
  export function resultPanelParts(detail, o) {
1556
1309
  const { run, receipt, proof, terminal, handoff } = detail;
1557
1310
  const facts = receipt.facts;
@@ -1566,11 +1319,8 @@ export function resultPanelParts(detail, o) {
1566
1319
  const status = presentation?.status ?? resultHeadlineOf(receiptStatusOf(receipt));
1567
1320
  const stored = receiptStatusOf(receipt, null);
1568
1321
  const humanReview = manualReviewOnly(proof === null ? null : { ...proof, verdict: proof.verdict ?? "" });
1569
- // Needs you: the action that resolves it comes first; Request changes stays beside it, never alone.
1570
- // On the result itself, "Review result" would link here: accepting it is what resolves it.
1571
1322
  const need = needActionOf(current, taskStatus, o.csrf, o.returnTo, {
1572
1323
  accepted: proof?.accepted != null, humanReview, run: run.id, action: `${taskHref(detail.taskId)}/accept-proof`, refuted: proof?.verdict === "refuted",
1573
- // What Store.finalResultReason refuses: a verified, attested, accepted or published result.
1574
1324
  rebuildable: proof?.accepted == null && proof?.verdict !== "verified" && proof?.verdict !== "attested" && !(detail.publication !== null && ["pushed", "opened"].includes(detail.publication.state))
1575
1325
  });
1576
1326
  const directAssessment = proof?.matrix.some(row => row.assessment !== undefined) === true;
@@ -1588,34 +1338,22 @@ export function resultPanelParts(detail, o) {
1588
1338
  const patchOk = patch !== null && !("problem" in patch);
1589
1339
  const lead = resultLeadOf({ role: run.role, report: receipt.report !== null, screenshots: shown.length, diff: (patchOk && patch.text.trim() !== "") || (statOk && stat.fileCount > 0) });
1590
1340
  const tabHref = (tab) => o.hrefFor(tab);
1591
- // ---- attention: problems and caveats, ahead of every readiness word ----
1592
1341
  const publication = detail.publication;
1593
1342
  const prUrl = publication === null ? null : safePrUrl(publication.prUrl);
1594
1343
  const attention = [];
1595
- // The visible status already says verification is needed. Only omit the
1596
- // generic repeat; failed checks, specific reasons and damaged evidence stay.
1597
1344
  const missingVerdictNamed = o.headStatus !== false && status.token === "verification-needed" && receipt.verdict === null && receipt.reasons.length === 0;
1598
1345
  if (current == null && !humanReview && !awaitingGoalReview && (!directAssessment || physicalReasons.length > 0) && !missingVerdictNamed && stored.token !== "evidence-damaged" && (stored.tone === "problem" || stored.tone === "attention")) {
1599
- // A recorded pass whose check can't be read now is said as what holds now, never as the verdict's pass.
1600
- // A recorded pass the check read now can't stand behind (unreadable, or failed since) is said as what holds now.
1601
1346
  attention.push(stored.token === "check-unreadable" || (receipt.verdict === "verified" && stored.token === "checks-failed") ? stored.detail : verificationExplanation(receipt.verdict, physicalReasons));
1602
1347
  }
1603
- // Exact criterion assessment notes are already shown in Requirements;
1604
- // do not repeat them as a second current attention message.
1605
1348
  if (presentation !== null)
1606
1349
  attention.push(...presentation.attention.map(one => one.detail).filter(detail => !assessmentReasons.has(detail)));
1607
1350
  if (current == null)
1608
1351
  attention.push(...facts.evidenceProblems);
1609
1352
  if (detail.outsideTouches.length > 0)
1610
1353
  attention.push(`${detail.outsideTouches.length} changed file${detail.outsideTouches.length === 1 ? "" : "s"} outside the approved paths: ${detail.outsideTouches.join(", ")}.`);
1611
- // A failed caveat can already be quoted in full by its verification
1612
- // reason. Keep that explanation once and retain every other caveat.
1613
1354
  if (current == null)
1614
1355
  attention.push(...receipt.caveats.filter(caveat => !historicalAssessmentReason(caveat) && !attention.some(problem => problem.includes(caveat))));
1615
1356
  attention.push(...(handoff?.followUps ?? []).map(one => `Follow-up: ${one}`));
1616
- // The automatic review: a HIGH that did not send the work back, or a review
1617
- // that could not finish, is the person's to see. (Said once when the
1618
- // current assignment already carries it.)
1619
1357
  const automatic = detail.automaticReview ?? null;
1620
1358
  if (automatic !== null && automatic.sentBackAs === null) {
1621
1359
  const reviewed = [...(automatic.state === "not-reviewed" ? [`Not reviewed: ${automatic.reason ?? "the automatic review did not finish"}.`] : []), ...automatic.high.map(one => `Review: ${findingWords(one)}`)];
@@ -1623,17 +1361,11 @@ export function resultPanelParts(detail, o) {
1623
1361
  if (!attention.includes(line))
1624
1362
  attention.push(line);
1625
1363
  }
1626
- // Publication risks stay in the open (repair 2026-09-14); the routine
1627
- // publication fact lives with the build details below.
1628
- // With the shared status, the pull request is its own quiet row (its reason under Details).
1629
1364
  if (publication !== null && publication.state === "failed" && taskStatus === null) {
1630
1365
  attention.push(`Publication failed after ${publication.attempts} attempt${publication.attempts === 1 ? "" : "s"}${publication.lastError === null ? "" : ` — ${oneLineOf(publication.lastError, 200)}`}. No pull request or merge is recorded.`);
1631
1366
  }
1632
1367
  if (detail.ciFailing && publication !== null && taskStatus === null)
1633
1368
  attention.push(`CI is failing on PR #${publication.prNumber} at the last check.`);
1634
- // Requirements only a person can confirm: plain words and one Accept,
1635
- // in neutral ink — nothing failed. Accepting records the person's
1636
- // decision and leaves the recorded checks as they are.
1637
1369
  const personChecks = proof === null || proof.accepted !== null ? [] : [
1638
1370
  ...proof.matrix.filter(row => row.state === "manual-review").map(row => personCheckWords(row.statement)),
1639
1371
  ...(proof.matrix.length > 0 ? [] : proof.reasons.filter(reason => manualReviewCriterionOf(reason) !== null).map(() => personCheckWords(null))),
@@ -1650,14 +1382,9 @@ export function resultPanelParts(detail, o) {
1650
1382
  const attentionHtml = attention.length === 0
1651
1383
  ? ""
1652
1384
  : html `<div class="result-attention" data-result-attention="${attention.length}"><ul>${attention.map(one => html `<li>${plainReasonWords(one)}</li>`)}</ul></div>`;
1653
- // ---- one outcome, one action (repair 2026-09-14) ------------------------
1654
- // The outcome is the handoff's first sentence, bounded; the agent's full
1655
- // account waits behind a disclosure in Summary so nothing is said twice.
1656
1385
  const conclusion = plainConclusionOf(receipt.summary ?? (run.outcome === "no-change" ? "The agent found that no repository change was needed." : "The build finished without a concise handoff."));
1657
1386
  const outcome = conciseOutcomeOf(conclusion);
1658
- // A failing pull request keeps its repair draft beside the need's action.
1659
1387
  const action = o.action === false ? "" : need !== null ? html `${resultNeedAction(need, o, detail.canAnnotate)}${detail.ciFailing && o.csrf !== "" ? resultPrimaryAction(detail, o, prUrl) : ""}` : resultPrimaryAction(detail, o, prUrl);
1660
- // ---- summary: the deliverable first ----------------------------------
1661
1388
  const summaryParts = [];
1662
1389
  const report = receipt.report;
1663
1390
  if (lead === "report") {
@@ -1668,10 +1395,6 @@ export function resultPanelParts(detail, o) {
1668
1395
  summaryParts.push(html `<p class="problem" data-result-report="problem">The report cannot be shown: ${report.problem}.</p>`);
1669
1396
  }
1670
1397
  else {
1671
- // Escaped text in a fenced block, never markup, never a page: the
1672
- // download serves the exact stored bytes as text. The summary is
1673
- // already the outcome line above (and, when shortened there, waits
1674
- // in "What the agent reported"), so the article never repeats it.
1675
1398
  summaryParts.push(html `<article class="result-report" data-result-report="ok"><h3>${report.title}</h3>${reportItemsHtml(report.items, report.shots, runId)}<pre class="recap plan-doc">${report.document}</pre><p class="meta"><a href="/r/${runId}/evidence/${report.artifactId}">${report.truncated ? "Download the stored part of the report (shortened at storage — not the full report)" : "Download the report"}</a>${report.followUps === 0 ? "" : html ` · ${report.followUps} proposed follow-up${report.followUps === 1 ? "" : "s"} on <a href="${taskHref(detail.rootId ?? detail.taskId)}">the task</a>`}</p></article>`);
1676
1399
  }
1677
1400
  }
@@ -1681,23 +1404,18 @@ export function resultPanelParts(detail, o) {
1681
1404
  }
1682
1405
  const unavailableShots = shots.filter(one => one.problem !== null);
1683
1406
  if (lead === "changes") {
1684
- // Code work: the changed files ARE the deliverable; the diff is one tap away.
1685
1407
  summaryParts.push(html `<p class="result-files-lead">${detail.files.length === 0 ? "" : html `${joinHtml(detail.files.slice(0, 6).map(one => html `<span class="mono">${one.path}</span>`), ", ")}${detail.files.length > 6 ? ` and ${detail.files.length - 6} more` : ""} — `}<a href="${tabHref("changes")}" data-result-goto="changes">see the diff</a></p>`);
1686
1408
  }
1687
1409
  if (lead === "summary" && run.outcome === "no-change")
1688
1410
  summaryParts.push(html `<p class="meta">The agent found that no repository change was needed${statOk && stat.fileCount === 0 ? "; the saved diff is empty" : ""}.</p>`);
1689
- // The agent's own account — its full conclusion (when the outcome line
1690
- // shortened it), what it says it changed, and how it checked — on demand.
1691
1411
  const agentAccount = [
1692
1412
  ...(conclusion !== outcome ? [html `<p class="recap">${conclusion}</p>`] : []),
1693
1413
  ...(handoff !== null && handoff.changes.length > 0 ? [html `<ul class="result-changes">${handoff.changes.map(one => html `<li>${one}</li>`)}</ul>`] : []),
1694
1414
  ...(handoff !== null && handoff.verification.length > 0 ? [html `<p class="meta">Checked by the agent:</p><ul class="result-changes" data-cockpit-source="agent-words">${handoff.verification.map(one => html `<li>${one}</li>`)}</ul>`] : []),
1695
- // The report's own notes, each a link target (#report-note-<n>) a mismatch can point at.
1696
1415
  ...(proof?.proof == null || proof.proof.caveats.length === 0 ? [] : [html `<p class="meta">Its notes:</p><ol class="result-changes" data-report-notes>${proof.proof.caveats.map((one, index) => html `<li id="report-note-${index + 1}">${one}</li>`)}</ol>`]),
1697
1416
  ];
1698
1417
  if (agentAccount.length > 0)
1699
1418
  summaryParts.push(html `<details class="result-notes" data-result-notes-agent><summary>What the agent reported</summary>${agentAccount}</details>`);
1700
- // MEDIUM and LOW never block: suggested follow-ups, on request.
1701
1419
  if (automatic !== null && automatic.followUps.length > 0) {
1702
1420
  summaryParts.push(html `<details class="result-notes" data-review-followups="${automatic.followUps.length}"><summary>Suggested follow-ups · ${automatic.followUps.length}</summary><ul class="result-changes">${automatic.followUps.map((one, index) => html `<li><span class="badge">${one.severity === "MEDIUM" ? "Medium" : "Low"}</span> <span class="mono">${`${one.file}:${one.line}`}</span> ${one.scenario}${o.csrf === "" ? "" : postForm(`${taskHref(detail.taskId)}/follow-through`, html `<input type="hidden" name="act" value="send"><input type="hidden" name="pointer" value="${`${automatic.run}:${automatic.high.length + index + 1}`}"><button type="submit" class="secondary">Send to the agent</button>`)}</li>`)}</ul></details>`);
1703
1421
  }
@@ -1720,8 +1438,6 @@ export function resultPanelParts(detail, o) {
1720
1438
  if (o.place !== "chat")
1721
1439
  links.push(html `<a href="${taskChatHref(detail.rootId ?? detail.taskId)}">Discuss in chat →</a>`);
1722
1440
  links.push(html `<a href="${taskHref(detail.rootId ?? detail.taskId)}">Task overview →</a>`);
1723
- // Technical facts on demand: build, agent, exact commits, evidence
1724
- // sources, the publication record, and the other pages for this result.
1725
1441
  summaryParts.push(joinHtml([
1726
1442
  html `<details class="result-details" data-result-details><summary>Build details</summary>`,
1727
1443
  unavailableShots.length === 0 ? "" : html `<ul class="result-unavailable meta" data-result-unavailable="${unavailableShots.length}">${unavailableShots.map(one => html `<li>Screenshot unavailable — <span class="mono">${one.path}</span>: ${one.problem ?? ""}</li>`)}</ul>`,
@@ -1737,7 +1453,6 @@ export function resultPanelParts(detail, o) {
1737
1453
  html `<p class="result-links meta">${links}</p>`,
1738
1454
  html `</details>`,
1739
1455
  ]));
1740
- // ---- changes -----------------------------------------------------------
1741
1456
  const changeParts = [];
1742
1457
  if (terminal === null) {
1743
1458
  changeParts.push(html `<p class="meta">No final diff or change summary was captured for this build${run.role === "scout" ? " — an investigation changes nothing in the repository" : ""}.</p>`);
@@ -1779,7 +1494,6 @@ export function resultPanelParts(detail, o) {
1779
1494
  else
1780
1495
  changeParts.push(reviewDiffHtml(patch, stat, runId, detail.canAnnotate, detail.fileAnchors));
1781
1496
  }
1782
- // ---- checks --------------------------------------------------------------
1783
1497
  const checkParts = [];
1784
1498
  const reviewerNotes = detail.reviewerFindings.map(one => html `<li><span class="badge${one.severity === "problem" ? " badge-failed" : ""}">${one.severity ?? "note"}</span> ${one.path === null ? "" : html `<span class="mono">${one.path}${one.line === null ? "" : `:${one.line}`}</span> `}${one.note} <span class="meta">— ${one.author}</span>${!isRevisionFeedback(one) && detail.canAnnotate && o.csrf !== "" ? html ` <button type="button" class="pick-file" data-path="${one.path ?? ""}" data-line="${one.line ?? ""}" data-review-note="${one.note}">Request change</button>` : ""}</li>`);
1785
1499
  if (proof === null && reviewerNotes.length > 0)
@@ -1792,12 +1506,8 @@ export function resultPanelParts(detail, o) {
1792
1506
  }
1793
1507
  else {
1794
1508
  if (proof.verdict !== null && !directAssessment) {
1795
- // The same status line the panel leads with (one status per surface,
1796
- // workspace package 1), beside the machine verdict's own explanation.
1797
- // A recorded pass the saved check can't show now is said so here too (task-status.ts approvedCheckOf).
1798
1509
  const shown = current?.receipt != null ? receiptChecksOf(current.receipt) : receipt.checks === undefined ? undefined : approvedCheckOf(proof.verdict, proof.reasons, receipt.checks);
1799
1510
  const unreadNow = proof.verdict === "verified" && shown !== undefined && shown?.status !== "passed" && !humanReview;
1800
- // completionWords: the verdict at completion, and what holds now when they differ.
1801
1511
  const words = humanReview ? "At completion: Human review required for the requirements below." : unreadNow ? completionWords(proof.verdict, proof.reasons, shown) : `At completion: ${verificationExplanation(proof.verdict, proof.reasons)}`;
1802
1512
  checkParts.push(html `<p class="row result-verdict" data-proof-verdict="${dispatchStatusToken(proof.verdict)}"${unreadNow ? html ` data-check-now="${approvedCheckStateOf(shown) ?? "unreadable"}"` : ""}><span class="meta">${words}</span></p>`);
1803
1513
  }
@@ -1838,19 +1548,15 @@ export function resultPanelParts(detail, o) {
1838
1548
  }
1839
1549
  if (followUps !== null && run.role === "builder")
1840
1550
  checkParts.push(followUpsHtml(followUps, runId, o));
1841
- // The handoff's own account of its checks — the agent's words, labeled
1842
- // as such, whether or not a proof exists.
1843
1551
  if (!directAssessment && handoff !== null && handoff.verification.length > 0)
1844
1552
  checkParts.push(html `<div class="result-section" data-cockpit-source="agent-words"><strong>The agent's own account</strong><ul>${handoff.verification.map(one => html `<li>${one}</li>`)}</ul></div>`);
1845
1553
  if (o.extraChecks !== undefined)
1846
1554
  checkParts.push(o.extraChecks);
1847
- // ---- request changes: both feedback styles, one sealed road ------------
1848
1555
  const requestParts = [html `<h3 class="so-sr-only">What should change?</h3>`];
1849
1556
  const imageNote = (one) => {
1850
1557
  if (one.image == null)
1851
1558
  return html ``;
1852
1559
  const shot = shots.find(shot => shot.artifactId === one.image.artifact && shot.sha256 === one.image.sha256 && one.image.run === runId && shot.problem === null);
1853
- // A live saved note whose screenshot no longer verifies can be kept without it, so it never blocks a revision.
1854
1560
  const drop = o.csrf === "" || !(detail.unusableImageNotes ?? []).includes(one.id) ? html ``
1855
1561
  : postForm(`/r/${runId}/comment`, html `<input type="hidden" name="intent" value="drop-image"><input type="hidden" name="comment" value="${String(one.id)}"><button type="submit" class="quiet">Keep note without screenshot</button>`, { attrs: { class: "feedback-image-drop" }, returnTo: o.returnTo, hidden: { tab: o.tab } });
1856
1562
  return html `<figure class="feedback-image">${shot === undefined ? html `<figcaption>Screenshot ${one.image.artifact} is unavailable.</figcaption>`
@@ -1871,8 +1577,6 @@ export function resultPanelParts(detail, o) {
1871
1577
  requestParts.push(html `<details class="result-feedback-history"><summary>Earlier feedback</summary><div class="diff-comments" data-past-feedback>${detail.pastComments.map(one => html `<div class="diff-comment">${imageNote(one)}<p>${one.path === null ? "" : pathWords(one.path, one.line)}${one.note}</p><span class="meta">${one.author} · ${whenTime(one.createdAt)}</span></div>`)}</div></details>`);
1872
1578
  }
1873
1579
  for (const revision of detail.revisions) {
1874
- // The child's standing is the shared status projection's own words
1875
- // (repair 2026-09-14): current exact approval and actual activity.
1876
1580
  requestParts.push(html `<p class="result-revision" data-result-revision="${revision.id}" data-result-revision-approved="${revision.approved ? "1" : "0"}" data-tone="${revision.tone}"><strong>Revision</strong> <a href="${taskHref(revision.id)}">${revision.title}</a> <span class="meta">· ${revision.standing}</span></p>`);
1877
1581
  }
1878
1582
  if (o.csrf === "") {
@@ -1894,7 +1598,6 @@ export function resultPanelParts(detail, o) {
1894
1598
  html `<div class="result-feedback-actions"><button type="submit" name="intent" value="revise" data-request-changes>Send back</button><button type="submit" name="intent" value="note" class="quiet" data-save-feedback>Save for later</button></div>`,
1895
1599
  ]), { attrs: { class: "diff-comment-form", id: "comment-form" }, returnTo: o.returnTo, hidden: { tab: o.tab, request: o.requestToken } })}</details>`);
1896
1600
  }
1897
- // ---- the panel ---------------------------------------------------------
1898
1601
  const tabCounts = {
1899
1602
  summary: "",
1900
1603
  changes: statOk ? (stat.fileCount === 0 ? "none" : `${stat.fileCount} file${stat.fileCount === 1 ? "" : "s"}`) : terminal === null ? "none" : "",
@@ -1907,7 +1610,6 @@ export function resultPanelParts(detail, o) {
1907
1610
  html `<section class="card result-panel" id="result" data-result-panel data-result-place="${o.place}" data-result-lead="${lead}" data-result-task="${detail.rootId ?? detail.taskId}" data-result-user="${o.user}"${attributes(resultFactsAttributeMap(facts))}>`,
1908
1611
  o.back === null ? "" : html `<p class="result-back"><a href="${o.back.href}" data-result-back>← ${o.back.label}</a></p>`,
1909
1612
  (detail.history ?? ""),
1910
- // One headline: with the shared status, its words lead (task-status.ts); "Changes saved" would compete with them.
1911
1613
  taskStatus !== null && o.headStatus !== false
1912
1614
  ? html `<header class="result-head"><div data-headline-tone="${taskStatus.tone}"><h2 class="status-headline" data-work-status="${status.token}"><i aria-hidden="true"></i>${taskStatus.headline}</h2><p class="status-sentence">${taskStatus.sentence}</p></div></header>`
1913
1615
  : html `<header class="result-head"><div><h2>${heading}</h2></div>${o.headStatus === false ? "" : statusLineHtml(status)}</header>`,
@@ -1933,7 +1635,6 @@ export function resultPanelParts(detail, o) {
1933
1635
  reviewHistory: REVIEW_TOKENS.has(status.token) ? status.detail : null,
1934
1636
  attention: attention.filter(one => !shortenedMaterialReason(one)).map(plainReasonWords),
1935
1637
  youCheck,
1936
- // The same counts as the Requirements row (a refuted report verifies none of them, and says Unverified).
1937
1638
  requirements: proof === null || proof.verdict === "refuted" ? null : requirementsOf(proof.matrix),
1938
1639
  limits: attention.filter(one => shortenedMaterialReason(one)),
1939
1640
  tabs: RESULT_TABS.map(tab => ({ key: tab.key, label: tab.key === "checks" && proof?.matrix.some(row => row.assessment !== undefined) ? "Requirements" : tab.label, count: tabCounts[tab.key], href: o.hrefFor(tab.key), active: tab.key === o.tab })),
@@ -1947,12 +1648,7 @@ export function resultPanelParts(detail, o) {
1947
1648
  };
1948
1649
  return { html: panelHtml, panel };
1949
1650
  }
1950
- /** Changed lines shown beside one "You check this one" item: at most this many per file, three files. */
1951
1651
  export const CHECK_EXCERPT_LINES = 12;
1952
- /** Each requirement only a person can confirm, with the evidence to judge
1953
- * it by, inline: the changed lines in the files it cites (citing none, the
1954
- * change's first file, labelled as not cited), the screenshots it cites
1955
- * (none cited: every validated one), and the agent's own note. */
1956
1652
  export function personCheckItems(proof, patchText, shots, runId) {
1957
1653
  const rows = proof.matrix.filter(row => row.state === "manual-review");
1958
1654
  if (rows.length === 0)
@@ -1978,35 +1674,27 @@ export function personCheckItems(proof, patchText, shots, runId) {
1978
1674
  };
1979
1675
  });
1980
1676
  }
1981
- /** The completion blocker no acceptance resolves (a failed check, an unresolved HIGH finding), in words, or null. */
1982
1677
  export function hardBlockerOf(assignment) {
1983
1678
  return assignment?.readiness?.blockers.find(one => one.key === "check-failed" || one.key === "high")?.message ?? null;
1984
1679
  }
1985
- /** A Needs you result's one action (needs-you.ts): a link to the act that resolves it, or Confirm it
1986
- * stopped behind the password. Null under every other headline. */
1987
1680
  export function needActionOf(assignment, status, csrf, returnTo, result) {
1988
1681
  if (assignment === null || status === null || status.headline !== "Needs you" || status.need == null)
1989
1682
  return null;
1990
- // Accepting can't resolve it: Request changes is the way on, beside the reason.
1991
1683
  if (result !== undefined && hardBlockerOf(assignment) !== null)
1992
1684
  return null;
1993
1685
  const action = assignment.primaryAction;
1994
1686
  const rebuild = { href: null, confirm: null, rebuild: { action: `${taskHref(assignment.rootId)}/requeue` } };
1995
- // Built to an earlier plan: Build again, in place (the task page's requeue).
1996
1687
  if (action?.code === "retry-task" && status.need.key === "rebuild" && csrf !== "")
1997
1688
  return { label: status.need.action.label, ...rebuild };
1998
1689
  if (result !== undefined) {
1999
1690
  if ((status.need.key === "review-result" || result.refuted === true) && !result.accepted && csrf !== "")
2000
1691
  return { label: result.humanReview ? "Accept result" : "Accept with exception", href: null, confirm: null,
2001
1692
  accept: { action: result.action, run: result.run, returnTo, note: result.humanReview ? null : "Why is this safe to accept?" } };
2002
- // The task page sends the person here: never back to it. What this page can do leads — Accept
2003
- // a check only a person can make, or Build again a result that may run again.
2004
1693
  const here = (action?.code === "open-result" || action?.code === "inspect-run") && action.target.runId === result.run;
2005
1694
  if (here && csrf !== "" && !result.accepted && result.humanReview)
2006
1695
  return { label: "Accept result", href: null, confirm: null, accept: { action: result.action, run: result.run, returnTo, note: null } };
2007
1696
  if (here && csrf !== "" && result.rebuildable === true)
2008
1697
  return { label: NEEDS.rebuild.action.label, ...rebuild };
2009
- // Nothing here resolves it: no act at all, never a link back to the task (which sends the person here).
2010
1698
  if (status.need.key === "review-result" || here)
2011
1699
  return null;
2012
1700
  }
@@ -2014,7 +1702,6 @@ export function needActionOf(assignment, status, csrf, returnTo, result) {
2014
1702
  ? { action: `${taskHref(assignment.rootId)}/recheck-stopped`, run: action.target.runId, returnTo } : null;
2015
1703
  return { label: status.need.action.label, href: assignmentActionHref(assignment) ?? taskHref(assignment.rootId), confirm };
2016
1704
  }
2017
- /** The server page's form of the same: the need's action first, Request changes as the quiet second. */
2018
1705
  export function resultNeedAction(need, o, canRequest) {
2019
1706
  const control = need.accept != null
2020
1707
  ? postForm(need.accept.action, html `${need.accept.note === null ? "" : html `<input type="text" name="note" maxlength="500" required placeholder="${need.accept.note}" aria-label="${need.accept.note}">`}<button type="submit" data-primary-action data-accept-result style="min-height:44px">${need.label}</button>`, { attrs: { class: "accept-result" }, returnTo: need.accept.returnTo, hidden: { run: need.accept.run } })
@@ -2025,20 +1712,12 @@ export function resultNeedAction(need, o, canRequest) {
2025
1712
  : html `<a class="button-link" href="${need.href ?? "#"}" data-primary-action>${need.label}</a>`;
2026
1713
  return html `<div class="result-action" data-result-action="need">${control}${canRequest && o.csrf !== "" ? html `<a class="result-feedback-link" href="#request-changes">Send back</a>` : ""}</div>`;
2027
1714
  }
2028
- /** The outcome in one bounded sentence (repair 2026-09-14): the handoff's
2029
- * first sentence, cut at a word when it runs past 180 characters. The
2030
- * full conclusion stays available behind the Summary's disclosure. */
2031
1715
  export function conciseOutcomeOf(conclusion) {
2032
1716
  const flat = oneLineOf(conclusion, 2_000);
2033
1717
  const sentence = /^[\s\S]*?[.!?](?=\s|$)/.exec(flat)?.[0] ?? flat;
2034
1718
  const bounded = sentence.length <= 140 ? sentence : `${sentence.slice(0, 140).replace(/\s+\S*$/, "")}…`;
2035
1719
  return bounded.trim();
2036
1720
  }
2037
- /** Exactly one primary act for the result (repair 2026-09-14), chosen from
2038
- * its state: draft the CI repair, create the revision the notes are
2039
- * waiting for, open the pull request, or request changes. A bearer session
2040
- * (no token) gets no control; the cockpit renders its own next-action
2041
- * card instead (`action: false`). */
2042
1721
  export function resultPrimaryAction(detail, o, prUrl) {
2043
1722
  const wrap = (kind, control) => html `<div class="result-action" data-result-action="${kind}">${control}</div>`;
2044
1723
  if (detail.ciFailing && o.csrf !== "") {
@@ -2056,10 +1735,6 @@ export function resultPrimaryAction(detail, o, prUrl) {
2056
1735
  return wrap("request-changes", html `<a class="result-feedback-link" href="#request-changes">Send back</a>`);
2057
1736
  return html ``;
2058
1737
  }
2059
- /** The run's facts as rows — one renderer for the page and its live
2060
- * fragment (A4). Elapsed ticks client-side while the run is open. */
2061
- /** The run's route provenance in plain words (v47): the exact agent it
2062
- * spent as, in which role, and how that agent was chosen. */
2063
1738
  export function runAgentWords(route) {
2064
1739
  if (route === null || route === undefined)
2065
1740
  return null;
@@ -2075,7 +1750,6 @@ export function runAgentWords(route) {
2075
1750
  : "recommended";
2076
1751
  return `${route.provider}${route.model === null ? "" : ` · ${route.model}`} as the ${role} — ${how}`;
2077
1752
  }
2078
- /** A run's outcome in the kit's tones: built or no change finished, failed or refused failed, anything else neutral. */
2079
1753
  export function runOutcomeChip(run, live) {
2080
1754
  if (live)
2081
1755
  return chip("Running", "live");
@@ -2086,7 +1760,6 @@ export function runOutcomeChip(run, live) {
2086
1760
  const word = sentenceCase(run.outcome ?? "never finished");
2087
1761
  return chip(word, run.outcome === "built" || run.outcome === "no-change" ? "done" : run.outcome === "failed" || run.outcome === "refused" ? "failed" : "");
2088
1762
  }
2089
- /** How long a finished run ran, in whole minutes (seconds under one). */
2090
1763
  function ranWords(run) {
2091
1764
  if (run.startedAt === null || run.finishedAt === null)
2092
1765
  return null;
@@ -2095,8 +1768,6 @@ function ranWords(run) {
2095
1768
  return null;
2096
1769
  return ms < 60_000 ? `${Math.max(1, Math.round(ms / 1000))} s` : ms < 3_600_000 ? `${Math.round(ms / 60_000)} min` : `${Math.floor(ms / 3_600_000)} h ${Math.round((ms % 3_600_000) / 60_000)} min`;
2097
1770
  }
2098
- /** A run's facts as the kit's facts list: how it ended, who ran it where, when, what it cost and where it ended. The
2099
- * live poll (`?fragment=facts`) swaps the same list in place. (The page's header names the run and its task.) */
2100
1771
  export function runFactsRows(run, _taskId, live, route = null) {
2101
1772
  const mono = (value) => html `<span class="k-mono">${value}</span>`;
2102
1773
  const rows = [
@@ -2114,27 +1785,13 @@ export function runFactsRows(run, _taskId, live, route = null) {
2114
1785
  ["Starting point", run.baseRevision === null ? null : mono(run.baseRevision.slice(0, 12))],
2115
1786
  ["Commit", run.headRevision === null ? null : mono(run.headRevision.slice(0, 12))],
2116
1787
  ["Tokens", run.tokensIn === null && run.tokensOut === null ? null : html `<span class="k-num">${(run.tokensIn ?? 0).toLocaleString()} in · ${(run.tokensOut ?? 0).toLocaleString()} out</span>`],
2117
- // Auth is part of the economic fact: Claude's subscription harness reports an API-price equivalent, not a separate
2118
- // API-key charge.
2119
1788
  ["Spend", run.providerStartedAt === null && run.tokensIn === null && run.tokensOut === null && run.costUsd === null ? null : runCostWords(run, live)],
2120
1789
  ];
2121
1790
  const shown = rows.filter((row) => row[1] !== null && row[1] !== "");
2122
- return html `${facts(shown)}${
2123
- // Machine output (a stack trace, a path, "Error:" text) reads as an internal error everywhere else; its detail is here, as recorded.
2124
- run.reason !== null && isInternalErrorReason(run.reason)
1791
+ return html `${facts(shown)}${run.reason !== null && isInternalErrorReason(run.reason)
2125
1792
  ? html `<p class="k-note">Recorded error</p><pre class="k-mono h-pre" id="run-reason-detail">${run.reason}</pre>`
2126
1793
  : ""}`;
2127
1794
  }
2128
- /**
2129
- * Click-to-prefill (arc 6, finding 4): client-side FORM mutation, named as
2130
- * such — normal viewing stays the default; "Annotate" reveals line pins.
2131
- * A pin or file button copies its target into the comment form and focuses
2132
- * the note field. No fetch, endpoint, or submit: comments still leave
2133
- * through the same CSRF'd form POST. Reads data attributes, writes input
2134
- * values, and flips presentational state — never markup. The note counter
2135
- * (follow-up on build 1540) reads the textarea's own maxlength — the
2136
- * server's LIMITS.note — into the helper text, so the two cannot drift.
2137
- */
2138
1795
  export function prefillScript() {
2139
1796
  return (`(function(){var form=document.getElementById("comment-form");if(!form)return;var review=document.querySelector("[data-review-diff]");` +
2140
1797
  `var noteBox=form.querySelector("[name=note]"),limit=document.getElementById("comment-note-limit");if(noteBox&&limit&&noteBox.maxLength>0){` +
@@ -2150,18 +1807,10 @@ export function prefillScript() {
2150
1807
  `if(line)line.value=button.getAttribute("data-line")||"";` +
2151
1808
  `form.scrollIntoView({behavior:"smooth",block:"center"});if(note)note.focus();});})();`);
2152
1809
  }
2153
- /** The primary review act opens the Checks view it names. The anchor
2154
- * still lands on the result without JavaScript (the server honours
2155
- * `?tab=checks`); this only removes the reload. */
2156
1810
  export function reviewEvidenceScript() {
2157
1811
  return (`(function(){var link=document.querySelector("[data-open-evidence]"),tab=document.querySelector('[data-result-tab="checks"]'),panel=document.getElementById("result");` +
2158
1812
  `if(!link||!tab||!panel)return;link.addEventListener("click",function(ev){ev.preventDefault();tab.click();panel.scrollIntoView({behavior:"smooth",block:"start"});});})();`);
2159
1813
  }
2160
- /** The facts region alone, for the open-run poll (A4). A finished run's
2161
- * fragment says so instead of quietly growing forms (finding 5), and a run
2162
- * that stopped being the task's live claim says so too — both carry the
2163
- * stop marker, so an open tab quits refetching a dead build (round-4
2164
- * finding 15). */
2165
1814
  export function runFactsFragment(run, taskId, live, route = null) {
2166
1815
  if (run.outcome !== null) {
2167
1816
  return html `<p class="k-note" data-region-stop>It finished. <a class="k-link" href="/r/${run.id}">Reload for the final record</a></p>`;