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
package/dist/invoke.js CHANGED
@@ -1,21 +1,3 @@
1
- /**
2
- * The invocation gateway: the only door to any provider binary (§5).
3
- *
4
- * "Never let an LLM poll" is only enforceable if there is exactly one place
5
- * that can start an LLM, and this is it. Every call verifies an open run
6
- * record WHOSE RECORDED PROVIDER MATCHES the one about to spawn (a repair
7
- * resumed on the wrong harness is a meaningless session id and a silent
8
- * fresh spend — refused here, structurally), stamps `provider_started_at`
9
- * the instant before the process spawns, and parses usage off the envelope
10
- * of EVERY completed process — nonzero exits included, because a failed
11
- * turn still spent money and a cost report that skips failures is a
12
- * smaller number, not a truer one.
13
- *
14
- * The architecture test asserts the boundary by imports, not by string
15
- * scan: only this module imports the registry's spawning surface
16
- * (`adapterFor`), and only builder, planner, reviewer, and scout import
17
- * `invokeAgent`.
18
- */
19
1
  import { takeEvalDispatch } from "./eval-gate.js";
20
2
  import { adapterFor, auditOf, claudePluginEnv, isolationUnsupported, ALL_CREDENTIAL_ENV } from "./provider.js";
21
3
  import { readProviderKey, readAuthModeStrict, PROVIDER_KEY_ENV, OWN_KEY_ENV } from "./keys.js";
@@ -54,11 +36,7 @@ import { proxyEnv, providerOnlyNetwork, repositoryEcosystems, resolveNetwork, st
54
36
  import { claudeConfigDir, claudeDefaults, codexDefaults, codexHomeDir, isolatedCodexHome } from "./provider-home.js";
55
37
  import { billingOf, claudeBillingFrom, seenBilling } from "./spend.js";
56
38
  import { primaryResultEvent, topLevelEvent } from "./stream-scope.js";
57
- /** "Within seconds": how soon a silent failed run must end for its stderr to
58
- * be read for the sign-in signal. */
59
39
  const AUTH_EARLY_EXIT_MS = 30_000;
60
- // Fixed names only: neither setting values nor arbitrary JSON keys belong in
61
- // diagnostics. The CLI's existing login stays where it is; no config is copied.
62
40
  const CLAUDE_AUTH_ENV = [
63
41
  "ANTHROPIC_API_KEY", "ANTHROPIC_BASE_URL", "ANTHROPIC_AUTH_TOKEN",
64
42
  "CLAUDE_CODE_USE_BEDROCK", "CLAUDE_CODE_SKIP_BEDROCK_AUTH", "ANTHROPIC_BEDROCK_BASE_URL",
@@ -67,7 +45,6 @@ const CLAUDE_AUTH_ENV = [
67
45
  "CLAUDE_CODE_USE_VERTEX", "CLAUDE_CODE_SKIP_VERTEX_AUTH", "ANTHROPIC_VERTEX_BASE_URL",
68
46
  "ANTHROPIC_VERTEX_PROJECT_ID", "CLOUD_ML_REGION", "GOOGLE_APPLICATION_CREDENTIALS", "GOOGLE_CLOUD_PROJECT",
69
47
  ];
70
- /** A value-only preflight: a settings-dependent login cannot survive empty setting sources. */
71
48
  function claudeSettingsAuthProblem(configDir) {
72
49
  let text;
73
50
  try {
@@ -76,8 +53,6 @@ function claudeSettingsAuthProblem(configDir) {
76
53
  catch (error) {
77
54
  if (error.code === "ENOENT")
78
55
  return null;
79
- // A sandbox around the plane (a project check's fence, say) may hide the file while the CLI still signs in from its
80
- // keychain. Isolated builds never load it, and a login that needed it fails within seconds and is reported as one.
81
56
  const code = error.code;
82
57
  if (code === "EPERM" || code === "EACCES")
83
58
  return null;
@@ -102,20 +77,9 @@ function claudeSettingsAuthProblem(configDir) {
102
77
  return keys.length === 0 ? null
103
78
  : `Your Claude settings.json defines sign-in settings: ${keys.join(", ")}. Isolated builds do not load that file. Use a Claude login that works without these settings, or select another build provider in Settings. Toolroll has not changed your login or copied these values.`;
104
79
  }
105
- /**
106
- * A provider can run the repository's own CLI. In a self-hosting build that
107
- * must never mean "open the database that launched me": a migration from the
108
- * candidate checkout would change the live schema underneath the older
109
- * supervisor, and even a read can contend with its watch transaction. Every
110
- * provider process therefore sees a unique disposable Toolroll
111
- * database while retaining its normal HOME/XDG environment for subscriptions
112
- * and unrelated developer tools.
113
- */
114
80
  function isolatedAgentDatabase(runId) {
115
81
  return isolatedChildDatabase(`agent-${runId}`);
116
82
  }
117
- /** Defend the durable registry even when a test or alternate transport calls
118
- * the callback directly instead of passing through an in-tree JSONL runner. */
119
83
  function transportSessionId(id) {
120
84
  if (typeof id !== "string")
121
85
  return null;
@@ -134,11 +98,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
134
98
  if (run.provider !== spec.provider) {
135
99
  throw new Error(`run ${runId} was opened for ${run.provider} but ${spec.provider} is about to spawn — a session resumed across harnesses is not a session`);
136
100
  }
137
- // Session selection is durable authority, not an argv-only hint. A resumed
138
- // turn must name exactly the canonical identity already recorded on THIS
139
- // run before anything awaits or spawns. That makes a wrong child-row id a
140
- // caller bug in the same class as a wrong provider, and prevents COALESCE's
141
- // first-write rule from leaving row A while the process actually resumes B.
142
101
  const recordedSessionId = transportSessionId(run.sessionId);
143
102
  if (run.sessionId !== null && recordedSessionId === null) {
144
103
  throw new Error(`run ${runId} carries an empty durable session identity — nothing resumes an identity the registry cannot name`);
@@ -162,16 +121,11 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
162
121
  if (recordedSessionId !== null && requestedResumeSessionId === null && startSessionId !== recordedSessionId) {
163
122
  throw new Error(`run ${runId} already records session ${recordedSessionId} but this invocation neither resumes nor starts under it`);
164
123
  }
165
- // An eval world (eval-gate.ts, docs/plans/evals-nightly.md part C): every dispatch takes one of the attempt's slots,
166
- // named for this run so the runner can match it to the run's record; past the case's limit nothing spawns. Outside
167
- // an eval world this changes nothing.
168
124
  const evalSlot = takeEvalDispatch(`run:${runId}`);
169
125
  if (evalSlot.active && !evalSlot.ok)
170
126
  return { kind: "refused", reason: "containment", providerVersion: null, diagnostic: evalSlot.why };
171
127
  const adapter = adapterFor(spec.provider);
172
128
  const { startSessionId: _untrustedStartSessionId, streamInput: _untrustedStreamInput, ...invocationWithoutStart } = invocation;
173
- // Live input (live-input.ts): only Claude's builds, only through a transport that keeps stdin open. The brief is
174
- // the session's first stdin message and never rides the argv; every other road keeps its prompt where it was.
175
129
  const liveInput = spec.provider === "claude" && invocation.phase === "build" && options.liveInput !== undefined && streamsInput(options.runner ?? adapter.defaultRunner)
176
130
  ? options.liveInput
177
131
  : null;
@@ -184,19 +138,11 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
184
138
  };
185
139
  const argv = adapter.argv(resolvedInvocation);
186
140
  const stdin = adapter.stdin?.(resolvedInvocation);
187
- // Long-running phases pass idleTimeoutMs: the process has no absolute
188
- // deadline and is stopped only after a full no-output interval. Bounded
189
- // callers (notably repair) keep timeoutMs and its hard wall clock. A
190
- // legacy caller that names neither retains the historic bounded default.
191
141
  const hardTimeoutMs = options.timeoutMs === undefined ? undefined : adapter.clampTimeout(invocation.phase, options.timeoutMs);
192
142
  const idleTimeoutMs = options.idleTimeoutMs === undefined ? undefined : adapter.clampTimeout(invocation.phase, options.idleTimeoutMs);
193
143
  const defaultTimeoutMs = hardTimeoutMs === undefined && idleTimeoutMs === undefined
194
144
  ? adapter.clampTimeout(invocation.phase, 30 * 60_000)
195
145
  : undefined;
196
- // Tier-2 attestation (A2/B3): the authoritative check, immediately
197
- // before the spawn it authorizes. Tier-1 providers return null here and
198
- // keep their road byte-identical.
199
- // An ACP agent is admitted by its own record (acp-attest.ts), read below; the version ranges are for the others.
200
146
  const attested = isAcpProvider(spec.provider) ? null : await attestProvider(spec.provider, adapter.binary, options.versionProbe);
201
147
  if (attested !== null && !attested.ok) {
202
148
  if (attested.version !== null)
@@ -208,18 +154,11 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
208
154
  diagnostic: attested.problem,
209
155
  };
210
156
  }
211
- // AN ACP AGENT'S ADMISSION (docs/plans/acp-adapter.md § Admission): a passed conformance check of the exact binary
212
- // on this runner, or nothing runs — absence is denial. It builds and repairs only, on a model it offered when it was
213
- // checked, and no dollar cap rides it (it can't hold one; the scheduler refuses capped work first, this is the belt).
214
- // An ACP spawn is admitted by its agent's attestation on this runner — or, for the conformance check alone, by the
215
- // check request that will create it (acpCheck: set only by the check job). The two never stand in for each other.
216
157
  const acpCheckAsk = options.acpCheck ?? null;
217
158
  const acpAttestation = isAcpProvider(spec.provider) && acpCheckAsk === null ? store.acpAttestationFor(spec.provider, run.runner) : null;
218
159
  const acpCheckRequest = isAcpProvider(spec.provider) && acpCheckAsk !== null ? store.acpCheckAdmitting(acpCheckAsk.requestId, acpCheckAsk.step, runId, clock()) : null;
219
160
  const acpCheckLaunch = acpCheckRequest?.launchJson == null ? null : launchFromJson(acpCheckRequest.launchJson);
220
- /** The plane's own isolation reading for a check's first step (below, before spawn); null when none was asked. */
221
161
  let acpIsolation = null;
222
- /** What starts the agent, and who the handshake must say it is (unknown, for a check: the check learns it). */
223
162
  const acpLaunch = acpAttestation !== null ? acpAttestation.launch : acpCheckLaunch;
224
163
  if (!isAcpProvider(spec.provider) && acpCheckAsk !== null)
225
164
  throw new Error("only an ACP agent is checked");
@@ -245,29 +184,15 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
245
184
  }
246
185
  if (invocation.maxBudgetUsd !== undefined)
247
186
  return refuse(`${name} can't hold a dollar cap, so it doesn't run capped work (budget-unenforceable)`);
248
- // The billing the run was admitted under must be for the model about to be chosen.
249
187
  const stamp = store.acpBillingOfRun(runId);
250
188
  if (stamp !== null && stamp.model !== spec.model)
251
189
  return refuse(`this run was admitted to bill ${stamp.model}, not ${spec.model}`);
252
- // And the money moment holds it to the hard monthly budgets as stamped — immutable since admission, so a
253
- // declaration changed between a gate and this spawn changes nothing: metered work a budget holds never starts.
254
190
  const billed = stamp?.kind === "plan" ? "subscription" : "api-key";
255
191
  const held = store.budgetGate(clock())({ ...store.budgetSubject(run.taskRef), agents: [{ provider: spec.provider, billing: billed }] });
256
192
  if (held.over !== null)
257
193
  return refuse(`a monthly budget holds metered work, and ${name} on ${spec.model ?? "this model"} is metered here (budget)`);
258
194
  }
259
- // Auth mode decides how the credential reaches the process (the operator
260
- // keeps BOTH and prefers the subscription): in "api-key" mode the
261
- // managed file wins, the ambient env is a real fallback (explicit
262
- // re-supply survives resolveChildEnv's chat-key strip); in
263
- // "subscription" mode the key is STRIPPED from the child so the CLI's
264
- // own login is used — its key is retained, just not handed over.
265
195
  const { runner, clock: _clock, versionProbe: _probe, keyHome, timeoutMs: _hardTimeout, idleTimeoutMs: _idleTimeout, stdin: _callerStdin, accumulateUsage: _accumulateUsage, liveInput: _liveInput, acpCheck: _acpCheck, network: launchNetwork, writes: launchWrites, sandbox: launchSandbox, ...runOptions } = options;
266
- // The live setting is read STRICTLY (atomic authority closure): a
267
- // present mode file that says neither word is a value-shaped refusal
268
- // before any stamp or process — never the subscription default a
269
- // lenient read would coerce it to, which would spend on a credential
270
- // the seal never proved. The same reader gates filing and the seal.
271
196
  const strict = readAuthModeStrict(spec.provider, keyHome);
272
197
  if (!strict.ok) {
273
198
  return {
@@ -277,7 +202,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
277
202
  diagnostic: strict.problem,
278
203
  };
279
204
  }
280
- // A run on an approved chain spends under the auth mode that entry was pinned to, never the provider's current setting.
281
205
  const pinned = invocation.phase === "review" ? null : pinnedEntryOf(store, runId);
282
206
  if (pinned !== null && "problem" in pinned) {
283
207
  return { kind: "refused", reason: "route-authority", providerVersion: attested === null ? null : attested.version, diagnostic: `the fallback agent's authority lapsed before spawn — ${pinned.problem}` };
@@ -288,24 +212,17 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
288
212
  if (problem !== null)
289
213
  return { kind: "refused", reason: "auth-mode", providerVersion: attested?.version ?? null, diagnostic: problem };
290
214
  }
291
- // An ACP agent has no key Toolroll holds or injects: its own and everyone else's are shed (adapter.extraOmitEnv).
292
215
  const keyed = isKeyedProvider(spec.provider) ? spec.provider : null;
293
216
  const ownKeyEnv = keyed === null ? [] : OWN_KEY_ENV[keyed];
294
217
  const keyEnvName = keyed === null ? null : PROVIDER_KEY_ENV[keyed];
295
218
  const managedKey = authMode === "api-key" && keyed !== null && keyEnvName !== null
296
219
  ? readProviderKey(keyed, keyHome) ?? (process.env[keyEnvName] || null)
297
220
  : null;
298
- // A pinned API key that isn't there never falls through to some other credential.
299
221
  if (pinned !== null && authMode === "api-key" && managedKey === null) {
300
222
  return { kind: "refused", reason: "auth-mode", providerVersion: attested === null ? null : attested.version, diagnostic: `this fallback agent is approved on an API key, and ${spec.provider} has none here` };
301
223
  }
302
- // What decides the child's credential, computed once: the environment it starts from and every variable it sheds. The
303
- // live plan proof below reads with exactly these, and the child launches with exactly these (childOmitEnv).
304
224
  const childAuth = childAuthEnv({ provider: spec.provider, phase: invocation.phase, authMode, keyEnvName, ownKeyEnv,
305
225
  extraOmitEnv: adapter.extraOmitEnv, runEnv: runOptions.env, runOmitEnv: runOptions.omitEnv });
306
- // A fallback agent approved on its plan runs only on a login its CLI proves, live, is that plan: read with the run's
307
- // own environment, before anything is started for it (no proxy, tools or homes to leave behind). A provider with no
308
- // live proof never gets here (filing refuses it); if one does, it's refused too. A key is never read as paid.
309
226
  if (pinned !== null && pinned.index > 0 && authMode === "subscription") {
310
227
  const live = PLAN_LOGIN_PROVABLE.has(spec.provider)
311
228
  ? await livePlanLogin(spec.provider, attested !== null ? attested.executable : adapter.binary, childAuth.omitEnv, childAuth.env)
@@ -316,55 +233,26 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
316
233
  diagnostic: `this fallback agent is approved on its plan, and ${spec.provider} isn't signed in to one here${live === "api-key" ? " (it's signed in another way)" : ""}` };
317
234
  }
318
235
  }
319
- // Resume XOR mint, enforced at the GATEWAY (Codex gemini verify round 2,
320
- // finding 3): a resume and a minted start id are mutually exclusive —
321
- // geminiArgv silently prefers --resume, so a minted id that rides
322
- // alongside a resume would be stamped and later enforced against an
323
- // envelope that never carried it, a paid protocol refusal. When resuming,
324
- // the minted id is dropped here, before it is ever stamped.
325
- // The minted session identity (A5): stamped durably BEFORE the start
326
- // stamp — intent precedes the process, and the envelope must later
327
- // MATCH this id or the run fails typed.
328
236
  if (startSessionId !== undefined) {
329
237
  store.stampRun(runId, { sessionId: startSessionId });
330
238
  }
331
239
  const spawn = witnessedRunner(store, runId, clock, runner ?? adapter.defaultRunner);
332
240
  let transportAnnouncedSessionId = null;
333
241
  let transportSessionConflict = false;
334
- // B3: the attested executable IS the spawned executable — one resolution.
335
- // A MANAGED key reaches exactly its own provider's child environment
336
- // (keys.ts): the foreign-credential strip already shed everybody
337
- // else's, and the plane's own env never needed to carry it. A key
338
- // already ambient in the environment keeps working; the managed file,
339
- // being deliberate, wins.
340
242
  const isolatedDb = isolatedAgentDatabase(runId);
341
- // Where the build runs: Claude reads the repository's CLAUDE.md from here.
342
243
  const workspace = invocation.phase === "review" ? null : runOptions.cwd ?? run.worktree ?? null;
343
- // How a tool server the broker starts is fenced: as its agent is, once that fence is fixed below.
344
244
  let serverFence = null;
345
- // The run's containment, fixed before any tool is prepared: this platform and the OS fence its run gets (a build
346
- // has one wherever the plane has a database to fence). It decides which tools may hold secrets in a process the
347
- // build could otherwise read; nothing the launch or the checkout writes feeds it.
348
245
  const containment = { platform: process.platform, fence: invocation.phase === "review" ? "none" : fenceMethod(spec.provider, store.databaseFile() !== null) };
349
- // The project's tools (v80): exactly its MCP servers, and none of the
350
- // operator's global or a repository's own, served by this launch's broker
351
- // (tool-broker.ts), which alone holds their secrets. A review keeps its isolation.
352
- // Set once the fence is known: a fenced build's servers never start outside a fence.
353
246
  let serverMustBeFenced = false;
354
- // Pinned for the attempt (sandbox parity C11): whether an instance operator allowed unconfined agents, read once now.
355
- // A tool server the agent starts late gets the decision this attempt launched with, never one changed meanwhile.
356
247
  const unconfinedAtLaunch = store.unfencedAgentsAllowed();
357
- // What the build writes (its checkout, its project's caches): a tool server never runs from there, nor reads it at all.
358
248
  const serverUntrusted = workspace === null ? [] : toolUntrusted(store, workspace, keyHome);
359
249
  const launchTools = invocation.phase === "review" ? null : await runTools(store, runId, spec, options.keyHome, clock, invocation.readOnlyTools, invocation.researchWithheld, containment, {
360
250
  env: { ...process.env, ...(runOptions.env ?? {}) },
361
251
  omitEnv: [...(runOptions.omitEnv ?? []), ...ALL_CREDENTIAL_ENV],
362
252
  pass: childDatabaseEnv(isolatedDb.file),
363
- // A tool server starts in a folder the build can't write, and never runs the build's own bytes (arc 2).
364
253
  cwd: keyHome ?? homedir(),
365
254
  untrusted: serverUntrusted,
366
255
  wrap: () => serverFence,
367
- // A fenced build's tool servers start only in a fence too, unless an instance operator allowed unconfined agents.
368
256
  unwrapped: () => serverMustBeFenced && !unconfinedAtLaunch
369
257
  ? "This machine can't confine the tool's server (no macOS sandbox, no working bubblewrap), so it was not started." : null,
370
258
  });
@@ -374,7 +262,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
374
262
  }
375
263
  const tools = launchTools;
376
264
  const codexHarness = spec.provider === "codex" || spec.provider === "openrouter";
377
- // A Codex build's own CODEX_HOME (provider-home.ts): the operator's sign-in and sessions, linked, and nothing else.
378
265
  let codexHome = null;
379
266
  if (codexHarness && invocation.phase !== "review") {
380
267
  try {
@@ -386,13 +273,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
386
273
  return { kind: "refused", reason: "containment", providerVersion: attested?.version ?? null, diagnostic: "The build's private Codex home could not be created; check access to its sign-in and sessions folders, then retry." };
387
274
  }
388
275
  }
389
- // The agent fence: Toolroll's own secrets, database and other runs'
390
- // evidence stay out of reach, whatever the permission mode. A review is
391
- // already confined to its sealed files.
392
- // A build's fence also holds its task boundary: home configuration and
393
- // the repositories beside its own, fresh and resumed alike. Codex starts
394
- // tool servers outside its command sandbox, so its own launch folder is
395
- // fenced too; Claude reads its config from there, inside the sandbox.
396
276
  const ownTools = tools?.privateDir === undefined ? null : realpathSync(tools.privateDir);
397
277
  const fenceOf = invocation.phase === "review" ? { fence: [], fileTools: [], grants: NO_GRANTS, gitPaths: [], cache: undefined, problem: undefined } : await runFence(store, runId, spec.provider, options.keyHome, codexHarness ? null : ownTools, launchWrites ?? WRITES_DEFAULT, launchSandbox ?? LEGACY_SANDBOX);
398
278
  if (fenceOf.problem !== undefined) {
@@ -403,10 +283,7 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
403
283
  }
404
284
  const fence = [...fenceOf.fence, ...(fenceOf.fence.length > 0 && codexHarness ? [ownTools, codexHome === null ? null : realpathSync(codexHome.dir)].filter((path) => path !== null) : [])];
405
285
  const grants = { ...fenceOf.grants };
406
- // The run's network (egress.ts): sealed by its approval, or the provider's hosts alone, or the caller's own proxy.
407
286
  const network = launchNetwork ?? { policy: providerOnlyNetwork(spec.provider) };
408
- // Codex's command sandbox has no proxy (its argv is fixed just below): its commands are online only for a sealed
409
- // open network, and offline otherwise.
410
287
  if (fence.length > 0 && codexHarness) {
411
288
  grants.network = "policy" in network && network.policy.mode === "open" ? { mode: "open" }
412
289
  : { mode: "allowlist", proxyPort: 0, brokerPorts: [], loopback: "proxy-only", socketRoots: [] };
@@ -415,38 +292,26 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
415
292
  const buildInvocation = { ...resolvedInvocation, ...(tools === null ? {} : { toolArgv: tools.argv, fence, fenceGrants: grants, fileToolFence: fenceOf.fileTools }), ...(workspace === null ? {} : { workspace }), ...(inherited === undefined ? {} : { inherited }) };
416
293
  const launchArgv = tools === null ? argv : adapter.argv(buildInvocation);
417
294
  const fenced = fenceLaunch(spec.provider, fence);
418
- // An ACP agent runs only inside the OS fence: nothing else holds it (it may run commands without asking).
419
295
  if (isAcpProvider(spec.provider) && fenced.method !== "macos-sandbox" && fenced.method !== "linux-bubblewrap") {
420
296
  tools?.cleanup();
421
297
  codexHome?.cleanup();
422
298
  removeAgentDatabase(isolatedDb.dir);
423
299
  return { kind: "refused", reason: "containment", providerVersion: acpAttestation?.agent.version ?? null, diagnostic: `${ACP_AGENTS[spec.provider].name} runs only inside the OS fence (the macOS sandbox or bubblewrap), and this launch has neither (fence-unavailable)` };
424
300
  }
425
- // The tools were chosen for the fence decided above: a launch that got any other starts nothing.
426
- // Only a prepared project-tool broker depends on the earlier decision. Empty Claude configs also have a privateDir.
427
301
  if (tools?.serverPids !== undefined && fenced.method !== containment.fence) {
428
302
  tools.cleanup();
429
303
  codexHome?.cleanup();
430
304
  removeAgentDatabase(isolatedDb.dir);
431
305
  return { kind: "refused", reason: "containment", providerVersion: attested?.version ?? null, diagnostic: "The build's fence changed while its tools were prepared. Nothing was started; retry the task." };
432
306
  }
433
- // A tool server the broker starts is fenced by what this platform supports, whatever the provider: Codex's own
434
- // profile fences only its agent's commands, and the broker starts servers outside it.
435
307
  if (fence.length > 0) {
436
- // A tool server keeps its own reach (it holds its tool's secrets, not the agent's code): never the agent's network,
437
- // nor its write allowlist (a server keeps its own state where it always has).
438
308
  const serverGrants = () => serverGrantsOf(grants);
439
- // Nor read what the build wrote: however its arguments are spelled, no byte of the checkout or caches can load.
440
309
  const serverDenies = [...fence, ...serverUntrusted.filter(path => existsSync(path)).map(path => realpathSync(path))];
441
- // Pinned: the server fence this attempt launched with, a copy, whatever changes later (C11).
442
310
  const pinned = structuredClone(serverGrants());
443
311
  if (macosFenceAvailable() || linuxFenceAvailable())
444
312
  serverFence = (file, args, cwd) => sandboxedSpawn(file, args, serverDenies, pinned, cwd);
445
313
  serverMustBeFenced = true;
446
314
  }
447
- // No silent fallback (arc 1): a build this machine can't confine at the OS — Claude reduced to its own file-tool
448
- // rules, Gemini to nothing — doesn't start unless the instance operator allowed unconfined agents here. An injected
449
- // runner (tests) starts no real agent.
450
315
  const unconfined = fence.length > 0 && (fenced.method === "claude-rules" || fenced.method === "none");
451
316
  if (unconfined && runner === undefined && !store.unfencedAgentsAllowed()) {
452
317
  tools?.cleanup();
@@ -460,8 +325,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
460
325
  const confinedOs = fenced.method === "macos-sandbox" || fenced.method === "linux-bubblewrap";
461
326
  if (fence.length > 0 && !codexHarness && confinedOs) {
462
327
  const brokerPorts = tools?.brokerPort === undefined ? [] : [tools.brokerPort];
463
- // Unix sockets only under this run's own folders: its checkout, and a temp folder of its own inside its private
464
- // launch folder (the system temp folder holds other programs' sockets — editors, agents, password managers).
465
328
  if (ownTools !== null) {
466
329
  runTemp = join(ownTools, "tmp");
467
330
  mkdirSync(runTemp, { recursive: true, mode: 0o700 });
@@ -479,9 +342,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
479
342
  egress = await startEgressProxy({ hosts: network.policy.hosts });
480
343
  grants.network = { mode: "allowlist", proxyPort: egress.port, brokerPorts, loopback: network.policy.loopback, socketRoots, token: egress.secret };
481
344
  }
482
- // On Linux the build has a network of its own, and the sandbox runtime relays only two ports into it: the
483
- // proxy's (3128) and a second (1080), which carries this run's tool broker. Claude's tool list names it there.
484
- // (An injected runner, in tests, runs outside every sandbox and keeps the broker's own address.)
485
345
  if (fenced.method === "linux-bubblewrap" && grants.network.mode === "allowlist" && runner === undefined && tools?.brokerPort !== undefined && tools.privateDir !== undefined) {
486
346
  const list = join(tools.privateDir, "mcp.json");
487
347
  if (existsSync(list))
@@ -497,14 +357,10 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
497
357
  diagnostic: `The build's network could not be set up, so nothing was started: ${error instanceof Error ? error.message : String(error)}` };
498
358
  }
499
359
  }
500
- // The attempt's pinned fence, stamped on the run (C11): its method, policy version, the digest of exactly what it was
501
- // given, and the sandbox engine and version it runs in.
502
360
  if (invocation.phase !== "review")
503
361
  store.recordRunFence(runId, { method: fenced.method, paths: fence.length, policy: (launchSandbox ?? LEGACY_SANDBOX).policy,
504
362
  digest: fenceDigest(fence, grants), engine: sandboxRuntimeWords() }, clock());
505
363
  const billingSeen = { keySource: null, model: null, planWindows: false, answered: false };
506
- // v105: a Codex run on its sign-in bills as Codex says it's signed in (a ChatGPT plan, or a saved key, or Bedrock),
507
- // read right before it runs. Never with an injected runner: tests don't start a real Codex.
508
364
  const codexLogin = spec.provider === "codex" && authMode === "subscription" && runner === undefined
509
365
  ? await codexLoginBilling(attested !== null ? attested.executable : adapter.binary, [...(runOptions.omitEnv ?? []), ...adapter.extraOmitEnv, ...ownKeyEnv])
510
366
  : null;
@@ -512,30 +368,20 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
512
368
  ...(runOptions.env ?? {}),
513
369
  ...(adapter.env?.(buildInvocation) ?? {}),
514
370
  ...(tools?.env ?? {}),
515
- // A fenced build's git never expires a reflog, so gc never rewrites another task's (agent-fence.ts).
516
371
  ...(fence.length > 0 ? fencedGitEnv({ ...process.env, ...(runOptions.env ?? {}) }) : {}),
517
372
  ...(codexHome === null ? {} : { CODEX_HOME: codexHome.dir }),
518
373
  ...(managedKey === null || keyEnvName === null ? {} : { [keyEnvName]: managedKey }),
519
- // The run's own proxy, in every spelling a program reads (egress.ts): after every other setting, so no caller's
520
- // environment points the build around it. A program that ignores them is refused by the OS fence instead.
521
374
  ...(egress === null || !("policy" in network) ? {} : proxyEnv(egress, network.policy.loopback)),
522
- // Its own temp folder, where its tools' sockets may live (the only one its fence admits besides its checkout).
523
375
  ...(runTemp === null ? {} : { TMPDIR: runTemp, TMP: runTemp, TEMP: runTemp }),
524
- // Claude's own working folder goes there too (it is otherwise the shared /tmp/claude-<uid>).
525
376
  ...(runTemp === null || spec.provider !== "claude" ? {} : { CLAUDE_CODE_TMPDIR: runTemp }),
526
- // A workspace build's package managers keep their caches in its project's own folder (arc 2).
527
377
  ...(fenceOf.cache === undefined || grants.writes === undefined ? {} : buildCacheEnv(fenceOf.cache)),
528
- // This key is deliberately last: no caller may point an agent back at
529
- // the live control database through a generic RunOptions override.
530
378
  ...childDatabaseEnv(isolatedDb.file),
531
379
  };
532
- // The one omit list (childAuthEnv): the live plan proof read with this same list.
533
380
  const childOmitEnv = childAuth.omitEnv;
534
381
  const launchOptions = {
535
382
  ...(fenced.wrap.length === 0 ? {} : { fence: fenced.wrap, fenceGrants: grants, confinement: "required" }),
536
383
  ...runOptions,
537
384
  ...(workspace === null ? {} : { cwd: workspace }),
538
- // v105: how the CLI really billed this turn (its key source, its plan's windows), read off its own stream.
539
385
  onStreamEvent: event => {
540
386
  observeClaudeBilling(billingSeen, event);
541
387
  runOptions.onStreamEvent?.(event);
@@ -549,20 +395,13 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
549
395
  },
550
396
  ...(stdin === undefined ? {} : { stdin }),
551
397
  ...(liveInput === null ? {} : { liveInput }),
552
- // One ACP conversation: the brief, the sealed model, and who the check says the agent is.
553
398
  ...(acpLaunch === null || spec.model === null ? {} : { acp: { prompt: buildInvocation.brief, model: spec.model, expect: acpAttestation?.agent ?? null, ...(runOptions.acp?.onControl === undefined ? {} : { onControl: runOptions.acp.onControl }), ...(runOptions.acp?.handshakeMs === undefined ? {} : { handshakeMs: runOptions.acp.handshakeMs }) } }),
554
399
  ...(hardTimeoutMs === undefined ? {} : { timeoutMs: hardTimeoutMs }),
555
400
  ...(idleTimeoutMs === undefined ? {} : { idleTimeoutMs }),
556
401
  ...(defaultTimeoutMs === undefined ? {} : { timeoutMs: defaultTimeoutMs }),
557
402
  env: childEnv,
558
403
  omitEnv: childOmitEnv,
559
- // Providers run in their own process group (M6.12): the harness spawns
560
- // shells and tools of its own, and both the timeout and the watch's
561
- // hard stop must end the whole tree, not orphan the grandchildren.
562
404
  processGroup: true,
563
- // The session registry's crash guarantee (M6.9): the id is stamped the
564
- // moment the stream announces it, first write wins — a daemon that
565
- // dies mid-turn still knows which session to offer the successor.
566
405
  onSessionId: id => {
567
406
  const normalized = transportSessionId(id);
568
407
  if (normalized === null)
@@ -583,7 +422,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
583
422
  const probeOptions = {
584
423
  cwd: workspace, env: checkoutGitEnv({ ...inheritedEnv, ...childEnv }), omitEnv: childOmitEnv, envAllowlist: [],
585
424
  };
586
- // A broken checkout is not evidence of a broken fence. No provider is invoked by either check.
587
425
  const gitArgs = [...HARDENED_GIT_ARGS, "rev-parse", "HEAD"];
588
426
  const control = await runCommand("git", gitArgs, probeOptions);
589
427
  if (control.code === 0) {
@@ -602,11 +440,7 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
602
440
  }
603
441
  }
604
442
  }
605
- // THE CHECK'S ISOLATION, PROVEN BY THE PLANE (docs/plans/acp-adapter.md § Layer E): inside the exact fence and
606
- // child environment the agent is about to get, a canary file in the fenced state must be unreadable and a canary
607
- // key in the launching environment must be absent. No agent takes part, so no agent can fake it.
608
443
  if (acpCheckAsk?.isolation !== undefined && launchOptions.fence !== undefined && workspace !== null) {
609
- // processGroup: run() applies the fence only on the process-group road (a plain execFile carries none).
610
444
  const probe = { cwd: workspace, env: childEnv, omitEnv: childOmitEnv, fence: launchOptions.fence, confinement: "required", ...(launchOptions.fenceGrants === undefined ? {} : { fenceGrants: launchOptions.fenceGrants }), timeoutMs: 15_000, processGroup: true };
611
445
  const read = await runCommand("/bin/cat", [acpCheckAsk.isolation.file], probe);
612
446
  const env = await runCommand("/usr/bin/env", [], probe);
@@ -615,22 +449,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
615
449
  envClear: env.code === 0 && !env.stdout.includes(acpCheckAsk.isolation.envValue),
616
450
  };
617
451
  }
618
- // The stamp precedes the spawn, so a crash between the two leaves a run
619
- // that claims spend which never happened — the honest direction. A spawn
620
- // before the stamp would leave spend no record claims, which is the lie
621
- // the invariant exists to rule out. For attested providers the probed
622
- // version rides the SAME durable write (B2).
623
- // The spawn leg of the runner gate (MCP spec v6, review finding 4):
624
- // the tuple re-proven against LIVE rows AFTER every awaited step, in
625
- // the same breath as the stamp — a takeover during the attestation
626
- // await can no longer slip a stale process through.
627
- // THE PLANNER'S ROUTE, RE-PROVED AT THE SPAWN (final authority closure):
628
- // the provenance the planner was admitted under is held to the authority
629
- // its task holds RIGHT NOW — the strict working projection of a filed
630
- // scope (exact terms, resolved profile, route parity, digest,
631
- // live auth mode), or the bare word `legacy` on a task with no scope. A
632
- // scope rewritten, corrupted, or unresolved between the claim and this
633
- // instant invokes no provider: a value-shaped refusal, no spend.
634
452
  if (run.role === "planner") {
635
453
  const proved = store.proveRouteForSpawn(runId, clock());
636
454
  if (!proved.ok) {
@@ -650,10 +468,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
650
468
  diagnostic: "the run's runner custody lapsed before spawn — the lease, the runner, or its repo binding no longer stands",
651
469
  };
652
470
  }
653
- // THE STOP FENCE at the spawn (v52): a stop recorded against this run
654
- // — or the attempt it runs under — before this instant spawns nothing.
655
- // A value-shaped refusal, no stamp, no process, no spend; the road's
656
- // settlement seals the attempt as interrupted.
657
471
  const stopBeforeSpawn = store.applicableStopFor(runId);
658
472
  if (stopBeforeSpawn !== null) {
659
473
  return {
@@ -663,10 +477,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
663
477
  diagnostic: `stopped by ${stopBeforeSpawn.requestedBy} (run #${stopBeforeSpawn.run}) before the provider spawned — nothing was spent`,
664
478
  };
665
479
  }
666
- // THE CONTAINMENT FENCE at the spawn (OS containment plan): a required
667
- // native policy this runner cannot meet — macOS, an undelegated cgroup,
668
- // a missing helper — spawns nothing. A value-shaped refusal in the
669
- // policy's own words, no stamp, no process, no spend.
670
480
  const containment = currentContainment();
671
481
  if (containment.refusal !== null) {
672
482
  return {
@@ -676,9 +486,7 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
676
486
  diagnostic: containment.refusal,
677
487
  };
678
488
  }
679
- // The ACP launch re-proved HERE, after every await: each bound file is still the one that passed its check.
680
489
  if (acpCheckAsk !== null && acpCheckRequest !== null && acpCheckLaunch !== null) {
681
- // The check request is read again here, after every await: still running, unexpired, owned, this step's run.
682
490
  const still = store.acpCheckAdmitting(acpCheckAsk.requestId, acpCheckAsk.step, runId, clock());
683
491
  if (still === null || still.launchJson !== acpCheckRequest.launchJson) {
684
492
  return { kind: "refused", reason: "provider-unattested", providerVersion: null, diagnostic: "the check stopped admitting this run while it was being set up — nothing was started" };
@@ -688,7 +496,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
688
496
  return { kind: "refused", reason: "provider-unattested", providerVersion: null, diagnostic: verified.problem };
689
497
  }
690
498
  if (acpAttestation !== null) {
691
- // The record is read again here, after every await: a check revoked or replaced during setup starts nothing.
692
499
  const live = store.acpAttestationFor(spec.provider, run.runner);
693
500
  if (live === null || live.id !== acpAttestation.id) {
694
501
  return { kind: "refused", reason: "provider-unattested", providerVersion: acpAttestation.agent.version, diagnostic: `${ACP_AGENTS[spec.provider].name}'s check was revoked or replaced while this run was being set up — nothing was started` };
@@ -698,8 +505,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
698
505
  return { kind: "refused", reason: "provider-unattested", providerVersion: acpAttestation.agent.version, diagnostic: verified.problem };
699
506
  }
700
507
  }
701
- // THE CHAIN'S LAST LOOK (fallback.ts): the walk's place, the approval, and for a paid entry the live grant, read in
702
- // the one transaction that stamps the spend, after every await.
703
508
  const chainRefusal = store.transact(() => {
704
509
  const custody = invocation.phase === "review" ? null : chainCustodyProblem(store, runId);
705
510
  if (custody !== null)
@@ -715,14 +520,8 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
715
520
  if (chainRefusal !== null) {
716
521
  return { kind: "refused", reason: "route-authority", providerVersion: attested === null ? null : attested.version, diagnostic: `the fallback chain's authority lapsed before spawn — ${chainRefusal}` };
717
522
  }
718
- // The brief is queued only once the checkout has passed the fence check.
719
523
  liveInput?.begin(invocation.brief);
720
524
  spawnedAt = Date.now();
721
- // Under the stop watch (v52): the run's stop row is re-read while the
722
- // provider runs, and a stop kills THIS run's process group through the
723
- // handle registered under its owner tag — the exact-attempt road,
724
- // never the global sweep. Settlement then reads the same row.
725
- // An ACP agent starts through its attested launch (the pinned interpreter for a script), never a PATH lookup.
726
525
  result = await underStopWatch(store, runId, () => acpLaunch !== null
727
526
  ? spawn(acpLaunch.file, [...acpLaunch.prefix, ...launchArgv], launchOptions)
728
527
  : spawn(attested !== null ? attested.executable : adapter.binary, launchArgv, launchOptions));
@@ -731,8 +530,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
731
530
  removeAgentDatabase(isolatedDb.dir);
732
531
  tools?.cleanup();
733
532
  codexHome?.cleanup();
734
- // What the run's proxy saw (shown on its result): connections it made and refused. A connection the OS refused
735
- // outright never reached it, and isn't counted.
736
533
  if (invocation.phase !== "review" && grants.network !== undefined) {
737
534
  store.recordRunNetwork(runId, {
738
535
  mode: grants.network.mode, phase: "agent",
@@ -742,44 +539,25 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
742
539
  }
743
540
  await egress?.close();
744
541
  }
745
- // v105: the run's billing, fixed from evidence before its usage is priced: a key it was given is a key; otherwise
746
- // what the CLI said (Claude's stream) or was last seen doing (Codex's account), and the setting only when neither.
747
542
  const evidence = spec.provider === "claude" ? claudeBillingFrom(billingSeen)
748
- // Codex signed in with ChatGPT is its plan, unless its plan is itself billed by use (seen by the console's probe).
749
543
  : codexLogin === "subscription" ? seenBilling(store.handle, "codex") ?? "subscription" : codexLogin;
750
- // What this computer's Claude does with no key from us (subagents and drafts bill the same way): learnt only from a
751
- // run we gave no key that got as far as an answer.
752
544
  if (spec.provider === "claude" && managedKey === null && authMode === "subscription" && billingSeen.answered && evidence !== null) {
753
545
  store.recordProviderBilling("claude", evidence, new Date());
754
546
  }
755
- // An ACP run bills as its admission stamp says (store.acpBillingOfRun): its agent's own plan, or metered.
756
547
  const acpBilling = isAcpProvider(spec.provider) ? (store.acpBillingOfRun(runId)?.kind === "plan" ? "subscription" : "api-key") : null;
757
548
  store.fixRunBilling(runId, acpBilling ?? (authMode === "api-key" ? "api-key" : evidence ?? billingOf(spec.provider, store.handle)), new Date());
758
- // v141: whether that billing is this run's own evidence or this computer's default (a guess: unknown money).
759
549
  recordRunBillingBasis(store, runId, acpBilling !== null || authMode === "api-key" || evidence !== null ? "evidence" : "default");
760
550
  const envelope = adapter.parse(result.stdout);
761
551
  store.stampAgentReportedUsage(runId, envelope.agentReportedUsage ?? null);
762
- // An installed CLI too old for a build's own setup refuses its flags
763
- // before it starts: nothing ran, and the run says what to update.
764
552
  const unsupported = result.code !== 0 && envelope.initObserved !== true && invocation.phase !== "review" ? isolationUnsupported(spec.provider, result.stderr) : null;
765
553
  if (unsupported !== null) {
766
- // The CLI refused its flags before any model turn: the run never started, whatever the stamp said.
767
554
  store.withdrawProviderStart(runId);
768
555
  return { kind: "refused", reason: "provider-unattested", providerVersion: attested === null ? null : attested.version, diagnostic: unsupported };
769
556
  }
770
- // The callback is the crash-safe early stamp; the parsed envelope is the
771
- // authoritative completed-stream account. Stamp it as a fallback for an
772
- // alternate transport. On fresh runs COALESCE makes callback/parser
773
- // disagreement visible in the durable row; resumed runs need the separate
774
- // callback latch because their row deliberately carries the input session.
775
557
  if (envelope.sessionId !== null) {
776
558
  store.stampRun(runId, { sessionId: envelope.sessionId });
777
559
  }
778
560
  const durableSessionId = store.getRun(runId)?.sessionId ?? null;
779
- // The durable id, callback id, and retained envelope must all resolve to
780
- // ONE identity. This deliberately includes resumed turns: a provider that
781
- // returns a fork has not proved the same-session repair/warm-resume
782
- // contract, and COALESCE must not disguise row A / process B as success.
783
561
  const sessionIdentityProblem = transportSessionConflict
784
562
  ? "the provider transport announced conflicting session ids"
785
563
  : transportAnnouncedSessionId !== null && transportAnnouncedSessionId !== envelope.sessionId
@@ -791,8 +569,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
791
569
  ? "the provider returned a session id different from the exact identity recorded for resume"
792
570
  : "the provider session id was different from the identity durably recorded when the stream initialized"
793
571
  : null;
794
- // A run whose cost could not be read may still have spent up to its cap: it is charged the cap, never nothing, so
795
- // the next run's remaining budget stays honest. With no cap it is unmeasured, as a Codex run is, and says so.
796
572
  const unknownCost = envelope.costUnknown === true;
797
573
  const cap = typeof invocation.maxBudgetUsd === "number" && Number.isFinite(invocation.maxBudgetUsd) && invocation.maxBudgetUsd > 0 ? invocation.maxBudgetUsd : null;
798
574
  const costUsd = unknownCost ? cap : envelope.costUsd;
@@ -804,47 +580,29 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
804
580
  ...(envelope.tokensOut === null ? {} : { tokensOut: envelope.tokensOut + (options.accumulateUsage ? run.tokensOut ?? 0 : 0) }),
805
581
  ...(costUsd === null ? {} : { costUsd: costUsd + (options.accumulateUsage ? run.costUsd ?? 0 : 0) }),
806
582
  ...(usageJson === null ? {} : { usageJson }),
807
- // How many agent turns it took, where the provider reports it (docs/plans/run-efficiency.md); unknown stays NULL.
808
583
  ...(envelope.ending?.turns == null ? {} : { agentTurns: envelope.ending.turns + (options.accumulateUsage ? run.agentTurns ?? 0 : 0) }),
809
584
  });
810
- // v141: a turn whose cost wasn't reported leaves the run's money unknown for good (a sticky column, never the note).
811
585
  recordRunCostUnknown(store, runId, envelope.costUnknown === true);
812
- // v140: the exact model the provider's own events named (null: not reported); a resumed turn adds its own to the run's.
813
586
  recordRunModelReported(store, runId, envelope.modelReported ?? null, options.accumulateUsage === true);
814
- // How the attempt ended, classified HERE where the structural terminal
815
- // still exists; a sign-in that no longer works pauses its provider.
816
- // A run that failed within seconds having produced nothing is read for
817
- // the sign-in signal too: a CLI that is not logged in often says so on
818
- // stderr before its structured stream starts.
819
587
  const quietEarlyExit = result.code !== 0 && !result.timedOut && !result.notFound &&
820
588
  Date.now() - spawnedAt <= AUTH_EARLY_EXIT_MS &&
821
589
  envelope.promptConsumed !== true && (envelope.tokensOut ?? 0) === 0;
822
- // Claude has no attested range (attest.ts), so a terminal that reads as a plan limit asks the installed CLI its version.
823
590
  const limitVersion = !terminalMatchesLimit(spec.provider, authMode, envelope.structuralTerminal) ? null
824
591
  : attested !== null ? attested.version : await reportedVersion(adapter.binary, options.versionProbe);
825
592
  const terminalClass = classifyTerminal({
826
593
  terminal: envelope.structuralTerminal,
827
594
  run: { provider: spec.provider, authMode, version: limitVersion },
828
- // stderr and plain stdout only: a JSON event line can carry the agent's
829
- // own command output (codex aggregated_output), never its sign-in.
830
595
  earlyExit: quietEarlyExit ? `${result.stderr.slice(-4096)}\n${plainLines(result.stdout).slice(-4096)}` : null,
831
596
  });
832
- // A plan limit counts only from a run whose protocol and identity hold (fallback.ts moves work on it): a terminal from a
833
- // conflicting session, a minted id it didn't echo, or a failure on exit 0 is refused below and is never exhaustion.
834
597
  const protocolClean = envelope.protocolError === null
835
598
  && !(startSessionId !== undefined && envelope.initObserved === true && envelope.sessionId !== startSessionId)
836
599
  && sessionIdentityProblem === null
837
600
  && !(result.code === 0 && envelope.structuralTerminal?.failed === true);
838
601
  store.stampTerminalClass(runId, authMode, terminalClass === "usage-exhausted" && !protocolClean ? "not-exhausted" : terminalClass);
839
- // What the provider said on its way out, saved for a person (provider-capture.ts). Nothing routes on it.
840
602
  if (terminalClass !== "auth-expired" && !result.timedOut && !result.notFound && (result.code !== 0 || envelope.structuralTerminal?.failed === true)) {
841
603
  captureProviderFailure(store, { run: runId, provider: spec.provider, model: spec.model ?? null, authMode, exitCode: result.code, code: envelope.structuralTerminal?.code ?? null,
842
604
  texts: [envelope.structuralTerminal?.text, envelope.finalMessage?.slice(-1_000), result.stderr.slice(-2_000), plainLines(result.stdout).slice(-1_000)] }, new Date());
843
605
  }
844
- // Contradictory structural identity is a provider protocol failure, not
845
- // a session selection problem. Usage above remains recorded because the
846
- // process ran and spent, but no downstream handoff or repair may trust
847
- // either id from this envelope.
848
606
  if (envelope.protocolError !== null) {
849
607
  return {
850
608
  kind: "refused",
@@ -855,10 +613,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
855
613
  ...(envelope.acp === undefined ? {} : { acp: { ...envelope.acp, ...(acpIsolation === null ? {} : { isolation: acpIsolation }) } }),
856
614
  };
857
615
  }
858
- // The minted-identity proof (A5): once the harness initialized, the id
859
- // it announced must be the id the plane minted — anything else means
860
- // the session on disk is not the session on record, and repair must
861
- // never resume it. Usage above is already recorded: the spend happened.
862
616
  if (startSessionId !== undefined &&
863
617
  envelope.initObserved === true &&
864
618
  envelope.sessionId !== startSessionId) {
@@ -873,10 +627,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
873
627
  ...(envelope.acp === undefined ? {} : { acp: { ...envelope.acp, ...(acpIsolation === null ? {} : { isolation: acpIsolation }) } }),
874
628
  };
875
629
  }
876
- // An early transport announcement, a pre-existing resume identity, and
877
- // the completed retained envelope must resolve to one canonical id. If
878
- // either side is missing or different, no handoff or warm resume may use
879
- // this run even though its spend remains on the record.
880
630
  if (sessionIdentityProblem !== null) {
881
631
  return {
882
632
  kind: "refused",
@@ -887,9 +637,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
887
637
  ...(envelope.acp === undefined ? {} : { acp: { ...envelope.acp, ...(acpIsolation === null ? {} : { isolation: acpIsolation }) } }),
888
638
  };
889
639
  }
890
- // A provider's explicit failure terminal always wins over its process exit
891
- // status. Exit 0 only proves the wrapper closed cleanly; it cannot turn a
892
- // failed model turn into a successful build.
893
640
  if (result.code === 0 && envelope.structuralTerminal?.failed === true) {
894
641
  return {
895
642
  kind: "refused",
@@ -900,11 +647,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
900
647
  ...(envelope.acp === undefined ? {} : { acp: { ...envelope.acp, ...(acpIsolation === null ? {} : { isolation: acpIsolation }) } }),
901
648
  };
902
649
  }
903
- // The terminal contract (A4): when the audit requires it, a zero exit is
904
- // believed ONLY with initialization observed and the structural success
905
- // terminal present. A missing, truncated, or error-status terminal on
906
- // exit 0 is the harness breaking its own protocol — never a completed
907
- // build, and the handoff is never ingested.
908
650
  if (auditOf(spec.provider).terminalContract === "required" &&
909
651
  result.code === 0 &&
910
652
  !(envelope.initObserved === true && envelope.promptConsumed === true)) {
@@ -920,13 +662,11 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
920
662
  ...(envelope.acp === undefined ? {} : { acp: { ...envelope.acp, ...(acpIsolation === null ? {} : { isolation: acpIsolation }) } }),
921
663
  };
922
664
  }
923
- // A run that worked proves its provider's sign-in works: a sign-in pause
924
- // on it lifts, and its waiting tasks may start again.
925
665
  if (result.code === 0 && envelope.structuralTerminal === null && envelope.promptConsumed !== false) {
926
666
  try {
927
667
  liftAuthPause(store, spec.provider, "run", `run #${runId}`, clock(), new Date(spawnedAt));
928
668
  }
929
- catch { /* the pause stays until the next proof */ }
669
+ catch { }
930
670
  }
931
671
  return {
932
672
  kind: "ran",
@@ -946,14 +686,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
946
686
  tokensOut: envelope.tokensOut,
947
687
  costUsd,
948
688
  },
949
- // Gated on the run having NOTHING to show (Codex M5-M8 audit, C-8),
950
- // where "nothing to show" is STRUCTURAL when the transport can say so
951
- // (arc 1 finding 15): a retained error result carries diagnostic text
952
- // in finalMessage, and that prose must not read as an agent's attempt.
953
- // Transports without the consumption signal keep the historical
954
- // no-final-message rule. A nonzero exit WITH a consumed prompt is a
955
- // failed agent turn — the agent ran, spoke, and failed — and must be
956
- // classified as that, never as the harness failing to come up.
957
689
  initFailed: envelope.initObserved === false &&
958
690
  (envelope.promptConsumed === null
959
691
  ? envelope.finalMessage === null
@@ -963,7 +695,6 @@ export async function invokeAgent(store, runId, spec, invocation, options) {
963
695
  },
964
696
  };
965
697
  }
966
- /** The reported usage, when its kept text is whole JSON, to sit beside a cost note. */
967
698
  function usageOf(raw) {
968
699
  if (raw === null)
969
700
  return {};
@@ -974,17 +705,12 @@ function usageOf(raw) {
974
705
  return {};
975
706
  }
976
707
  }
977
- /** What the plane recorded of a checkout's setup: its project and the setup stamped on it (null: none recorded). */
978
708
  function linkedFor(store, worktree) {
979
709
  const row = worktree === null ? null : store.getWorktree(worktree);
980
710
  return row === null ? null : { repo: row.repo, setupDigest: row.setupDigest ?? null };
981
711
  }
982
- /** The paths this run's agent may not reach: the state folder around the live database (but not its own worktree),
983
- * ~/.toolroll (or its older name), its task boundary and other launches' private folders; what the fence gives back
984
- * (FenceGrants); and what only Claude's file tools refuse. */
985
712
  async function runFence(store, runId, provider, keyHome, ownTools, writes = WRITES_DEFAULT, sandbox = LEGACY_SANDBOX) {
986
713
  try {
987
- // A plane always has a database file; an in-memory store (a test) has nothing to fence.
988
714
  const databaseFile = store.databaseFile();
989
715
  if (databaseFile === null)
990
716
  return { fence: [], fileTools: [], grants: NO_GRANTS };
@@ -995,54 +721,34 @@ async function runFence(store, runId, provider, keyHome, ownTools, writes = WRIT
995
721
  throw new CheckoutBindingError("The checkout's Git pointer was changed or its trusted binding could not be verified.");
996
722
  const poolRoots = [join(dirname(databaseFile), "worktrees"), ...store.listWorktrees().map(record => poolRootOf(record.path, record.repo))];
997
723
  const binding = worktree === null || row === null ? null : trustedWorktreeBinding(row.repo, worktree, poolRoots);
998
- // The storage check, awaited off this thread (protected-storage.ts): a privacy prompt holds up only its child.
999
724
  const storage = await prepareProtectedStorage(keyHome ?? homedir());
1000
725
  const boundary = worktree === null ? null : taskBoundary({ worktree, provider, ...home, binding, policy: sandbox.policy, storage });
1001
726
  const folders = runFolders(ownTools);
1002
- // A build with a checkout writes only its workspace unless its approval said anywhere (arc 2): its checkout and
1003
- // Git data, its launch folder, its project's caches and the provider state its CLI must write.
1004
727
  const allowed = worktree === null || row === null || writes !== "workspace" ? null
1005
728
  : writeAllowlist({ provider, home: keyHome ?? homedir(), worktree, binding, launchFolder: ownTools, cache: buildCacheFolder(row.repo, keyHome ?? homedir()) });
1006
- // The shared install is granted only as the plane linked it: this checkout's project and stamped setup.
1007
- // Every plane checkout pool is denied around this one: the plane's own beside the database, and the one this
1008
- // checkout was recorded in (a --pool elsewhere), so another project's worktree, present at launch, is out of reach. Native wrappers also cover later creations.
1009
729
  const launch = fenceFor(provider === "command" ? "command" : "build", { databaseFile, worktree, ...home, boundary, binding, runFolders: folders, poolRoots, storage,
1010
730
  extra: allowed?.deny ?? [], linked: linkedFor(store, worktree), writes: allowed === null ? null : { writes: allowed.writes, readOnly: allowed.readOnly }, policy: sandbox.policy, provider,
1011
- // This launch's code map file: exactly that file, read-only, inside the denied state folder. Commands don't get it.
1012
731
  ...(provider === "command" ? {} : { exactFile: deliveredFile(store, runId) }),
1013
- // The sealed read denies, and whatever the project lists now too (adding a deny only narrows).
1014
732
  readDeny: [...new Set([...sandbox.readDeny, ...(row === null ? [] : store.projectSandbox(row.repo).readDeny)])].map(one => readDenyPath(one, keyHome ?? homedir())), machLookup: sandbox.machLookup });
1015
733
  return {
1016
734
  fence: launch.fence,
1017
735
  fileTools: boundary?.fileTools ?? [],
1018
736
  grants: launch.fenceGrants,
1019
- // The checkout's own Git data (a sign-ins check's network keeps it reachable).
1020
737
  gitPaths: binding === null ? [] : [binding.gitdir, join(binding.main, ".git")],
1021
738
  ...(allowed === null || row === null ? {} : { cache: buildCacheFolder(row.repo, keyHome ?? homedir()) }),
1022
739
  };
1023
740
  }
1024
741
  catch (error) {
1025
- // The storage check's own words: what didn't finish, and which program macOS may need to allow.
1026
742
  const refused = storageRefusalOf(error);
1027
743
  if (refused !== null)
1028
744
  return { fence: [], fileTools: [], grants: NO_GRANTS, problem: refused.message, storageRefused: true };
1029
745
  return { fence: [], fileTools: [], grants: NO_GRANTS, problem: error instanceof CheckoutBindingError ? error.message : "The build fence could not be prepared." };
1030
746
  }
1031
747
  }
1032
- /**
1033
- * A build's setup and check commands, run in its fence (arc 2): the same denies as its agent's (Toolroll's state,
1034
- * credentials, other projects and runs), its write allowlist when its approval sealed one (its checkout and Git data,
1035
- * its project's caches, and a temp folder of the command's own), and its package managers pointed at those caches.
1036
- * Their network stays as it was. A machine without an OS fence runs them as before; a fence that can't be prepared
1037
- * (a checkout whose binding no longer proves) runs nothing.
1038
- */
1039
748
  export function fencedCommands(store, runId, writes, inner, available = () => macosFenceAvailable() || linuxFenceAvailable(), access = CHECK_ACCESS_DEFAULT, network, sandbox = LEGACY_SANDBOX) {
1040
- // An injected runner (tests) starts no real command, as an injected agent starts no real agent (invokeAgent).
1041
749
  if (inner !== runCommand)
1042
750
  return inner;
1043
751
  return async (file, args, options) => {
1044
- // As a build itself: where nothing can confine them, they run only when an instance operator allowed unconfined agents
1045
- // (and the run says so: its checks ran without a sandbox, whatever was sealed).
1046
752
  if (!available()) {
1047
753
  if (store.unfencedAgentsAllowed()) {
1048
754
  store.stampRunCheckAccess(runId, "unsandboxed");
@@ -1055,8 +761,6 @@ export function fencedCommands(store, runId, writes, inner, available = () => ma
1055
761
  try {
1056
762
  const temp = join(own, "tmp");
1057
763
  mkdirSync(temp, { mode: 0o700 });
1058
- // Not sandboxed (check-access.ts): the project's checks are trusted by the whole instance, as before 0.9.66. Never
1059
- // while local mode is on (easy-start C5): then they run in the fence, sandboxed.
1060
764
  if (access === "unsandboxed" && !localModeOn(store)) {
1061
765
  stampLaunch(store, [runId], unfencedStamp());
1062
766
  return await inner(file, args, { ...options, env: { ...(options?.env ?? {}), TMPDIR: temp, TMP: temp, TEMP: temp } });
@@ -1068,7 +772,6 @@ export function fencedCommands(store, runId, writes, inner, available = () => ma
1068
772
  stampLaunch(store, [runId], unfencedStamp());
1069
773
  return inner(file, args, options);
1070
774
  }
1071
- // A self-hosted check's own database (child-database.ts) is the command's to write too.
1072
775
  const database = options?.env?.["TOOLROLL_DB"];
1073
776
  const checkData = database === undefined || fenced.grants.writes === undefined ? null : grantFolder(dirname(database), false);
1074
777
  const grants = checkData === null ? fenced.grants : { ...fenced.grants, writes: { ...fenced.grants.writes, subpaths: [...fenced.grants.writes.subpaths, checkData] } };
@@ -1079,8 +782,6 @@ export function fencedCommands(store, runId, writes, inner, available = () => ma
1079
782
  if (signIns !== null && "problem" in signIns)
1080
783
  return { code: 1, stdout: "", stderr: `${signIns.problem}\n`, timedOut: false, notFound: false };
1081
784
  try {
1082
- // Each sign-in file looked at again right before the launch: one no longer itself isn't granted.
1083
- // Never the keychain: the sign-ins kept there come in the environment, read outside (keychainSignIns).
1084
785
  const given = signIns === null ? grants : { ...grants, signIns: { ...signIns.grants, read: signIns.grants.read.filter(path => signInIsItself(realpathSync(homedir()), path)) }, network: signIns.network };
1085
786
  stampLaunch(store, [runId], fencedStamp(signIns === null ? "sandboxed" : "sign-ins", fenced.fence, given, signIns === null ? undefined : network));
1086
787
  return await inner(file, args, {
@@ -1101,12 +802,6 @@ export function fencedCommands(store, runId, writes, inner, available = () => ma
1101
802
  }
1102
803
  };
1103
804
  }
1104
- /**
1105
- * A project's checks run in a checkout of a result's commit made for them (result-follow-ups.ts, batch-checks.ts), in
1106
- * the same fence as a build's commands: Toolroll's state, credentials, other projects and runs denied; under the
1107
- * project's writes setting, only that checkout, its Git data, its own temp folder, the project's caches and its check
1108
- * database writable. Where nothing can confine them, they run only when an instance operator allowed unconfined agents.
1109
- */
1110
805
  export function fencedCheckoutCommands(store, repo, checkout, inner, available = () => macosFenceAvailable() || linuxFenceAvailable(), access = CHECK_ACCESS_DEFAULT, network, sandbox = LEGACY_SANDBOX, stampRuns = []) {
1111
806
  if (inner !== runCommand)
1112
807
  return inner;
@@ -1127,8 +822,6 @@ export function fencedCheckoutCommands(store, repo, checkout, inner, available =
1127
822
  try {
1128
823
  const temp = join(own, "tmp");
1129
824
  mkdirSync(temp, { mode: 0o700 });
1130
- // Not sandboxed (check-access.ts): the project's checks are trusted by the whole instance, as before 0.9.66. Never
1131
- // while local mode is on (easy-start C5): then they run in the fence, sandboxed.
1132
825
  if (access === "unsandboxed" && !localModeOn(store)) {
1133
826
  stampLaunch(store, stampRuns, unfencedStamp());
1134
827
  return await inner(file, args, { ...options, env: { ...(options?.env ?? {}), TMPDIR: temp, TMP: temp, TEMP: temp } });
@@ -1158,15 +851,11 @@ export function fencedCheckoutCommands(store, repo, checkout, inner, available =
1158
851
  readDeny: sandbox.readDeny.map(one => readDenyPath(one, homedir())), machLookup: sandbox.machLookup, policy: sandbox.policy,
1159
852
  writes: allowed === null ? null : { writes: { ...allowed.writes, subpaths: [...allowed.writes.subpaths, ...(checkData === null ? [] : [checkData])] }, readOnly: allowed.readOnly } });
1160
853
  const grants = launch.fenceGrants;
1161
- // With sign-ins, under the network its caller proved for it (the narrowest of its results' sealed check networks and
1162
- // the project's current one): none given, nothing runs.
1163
854
  const signIns = access !== "sign-ins" ? null : network === undefined ? { problem: "A check with sign-ins has no network sealed for it, so nothing ran." }
1164
855
  : await signInsLaunch(store, own, temp, checkout, network, [binding.gitdir, join(binding.main, ".git")]);
1165
856
  if (signIns !== null && "problem" in signIns)
1166
857
  return { code: 1, stdout: "", stderr: `${signIns.problem}\n`, timedOut: false, notFound: false };
1167
858
  try {
1168
- // Each sign-in file looked at again right before the launch: one no longer itself isn't granted.
1169
- // Never the keychain: the sign-ins kept there come in the environment, read outside (keychainSignIns).
1170
859
  const given = signIns === null ? grants : { ...grants, signIns: { ...signIns.grants, read: signIns.grants.read.filter(path => signInIsItself(realpathSync(homedir()), path)) }, network: signIns.network };
1171
860
  stampLaunch(store, stampRuns, fencedStamp(signIns === null ? "sandboxed" : "sign-ins", launch.fence, given, signIns === null ? undefined : network));
1172
861
  return await inner(file, args, {
@@ -1187,13 +876,10 @@ export function fencedCheckoutCommands(store, repo, checkout, inner, available =
1187
876
  }
1188
877
  };
1189
878
  }
1190
- /** What a build writes that a tool server must never run from: its checkout and its project's caches. A checkout with
1191
- * no record never gets this far: its fence refuses the launch (runFence) before any tool server can start. */
1192
879
  function toolUntrusted(store, workspace, keyHome) {
1193
880
  const row = store.getWorktree(workspace);
1194
881
  return [workspace, ...(row === null ? [] : [buildCacheFolder(row.repo, keyHome ?? homedir())])];
1195
882
  }
1196
- /** The operator's own model choices a build routed with no model keeps (provider-home.ts). */
1197
883
  function inheritedDefaults(provider, env, home) {
1198
884
  if (provider === "claude")
1199
885
  return claudeDefaults(claudeConfigDir(env, home));
@@ -1201,15 +887,10 @@ function inheritedDefaults(provider, env, home) {
1201
887
  return codexDefaults(codexHomeDir(env, home));
1202
888
  return undefined;
1203
889
  }
1204
- /** How the fence reaches a provider: Codex through its own sandbox profile
1205
- * (already in its argv; wrapping it would nest sandboxes), Claude and
1206
- * Gemini inside the macOS sandbox the spawn road applies (`wrap`), Claude
1207
- * elsewhere through its own file-tool rules only. */
1208
890
  function fenceLaunch(provider, fence) {
1209
891
  const method = fenceMethod(provider, fence.length > 0);
1210
892
  return { wrap: method === "macos-sandbox" || method === "linux-bubblewrap" ? fence : [], method };
1211
893
  }
1212
- /** The fence a launch gets, from its provider, whether it has anything to fence, and what this platform supports. */
1213
894
  function fenceMethod(provider, fenced) {
1214
895
  if (!fenced)
1215
896
  return "none";
@@ -1221,39 +902,20 @@ function fenceMethod(provider, fenced) {
1221
902
  return "linux-bubblewrap";
1222
903
  return provider === "claude" ? "claude-rules" : "none";
1223
904
  }
1224
- /** One launch's tools, or — when they cannot be prepared — the same isolation with none, never the operator's global servers. */
1225
905
  async function runTools(store, runId, spec, keyHome, clock, readOnly, withheld, containment, broker) {
1226
906
  try {
1227
907
  return await prepareRunTools(store, runId, spec.provider, { ...(keyHome === undefined ? {} : { home: keyHome }), now: clock(), containment, ...(readOnly === undefined ? {} : { readOnly }), ...(withheld === undefined ? {} : { withheld }), broker });
1228
908
  }
1229
909
  catch (error) {
1230
- // Sign-ins made for this run couldn't all be kept (and were revoked): it doesn't start.
1231
910
  if (error instanceof RunSignInError)
1232
911
  return { refused: error.message };
1233
912
  return noToolsArgs(spec.provider);
1234
913
  }
1235
914
  }
1236
- /** The lines of a harness's stdout that are not JSON events. */
1237
915
  function plainLines(stdout) {
1238
916
  return stdout.split("\n").filter(line => !line.trimStart().startsWith("{")).join("\n");
1239
917
  }
1240
- /** What a `sign-ins` check never inherits: a caller's choice of Claude's config folder (Claude's keychain sign-in is
1241
- * keyed to its default one; check-access.ts). gh's and Codex's are set to the granted ones instead. */
1242
918
  const SIGN_INS_OMITTED_ENV = ["CLAUDE_CONFIG_DIR"];
1243
- /**
1244
- * A `sign-ins` check's launch (check-access.ts, sandbox parity C10): its exact sign-in files, read by the check itself
1245
- * through its sandbox (agent-fence.ts signInGrants: nothing privileged reads or copies one), its own transcript folder
1246
- * and Codex's session and log folders; Codex, gh and XDG pointed at the real folders; and the network the check runs
1247
- * under: open, or its allowlist through a proxy of its own (on Linux, relayed in by the sandbox runtime). Nothing about it is
1248
- * started unless all of it is.
1249
- */
1250
- /**
1251
- * macOS: the sign-ins a check with sign-ins needs that live in the keychain, not in files: Claude Code's
1252
- * ("Claude Code-credentials", its current access token as CLAUDE_CODE_OAUTH_TOKEN) and gh's ("gh:github.com", as
1253
- * GH_TOKEN). Read here, by Toolroll, outside the sandbox, and handed to the check in its environment, so the check never
1254
- * reaches securityd (sandbox-runtime.ts SEATBELT_NO_KEYCHAIN) and nothing else in the keychain. The check can't renew
1255
- * Claude's token: one that has expired fails its sign-in. A value that isn't a plain token is left out.
1256
- */
1257
919
  export const KEYCHAIN_SIGN_INS = [
1258
920
  { service: "Claude Code-credentials", env: "CLAUDE_CODE_OAUTH_TOKEN", token: secret => {
1259
921
  try {
@@ -1264,18 +926,13 @@ export const KEYCHAIN_SIGN_INS = [
1264
926
  return null;
1265
927
  }
1266
928
  } },
1267
- // go-keyring (gh's) may keep it base64-encoded behind a prefix.
1268
929
  { service: "gh:github.com", env: "GH_TOKEN", token: secret => secret.startsWith("go-keyring-base64:") ? Buffer.from(secret.slice("go-keyring-base64:".length), "base64").toString("utf8") : secret },
1269
930
  ];
1270
931
  const PLAIN_TOKEN = /^[A-Za-z0-9._~+/=-]{8,4096}$/;
1271
- /** One keychain item's secret by its service, read with the system's `security` (null: none, or it can't be read). A
1272
- * keychain file may be named (tests: a throwaway one); never the item's value in an argument. */
1273
932
  export function readKeychainSecret(service, keychain) {
1274
933
  const read = spawnSync("/usr/bin/security", ["find-generic-password", "-s", service, "-w", ...keychain === undefined ? [] : [keychain]], { encoding: "utf8", timeout: 10_000, env: { PATH: "/usr/bin:/bin", HOME: homedir() }, stdio: ["ignore", "pipe", "ignore"] });
1275
934
  return read.status === 0 && typeof read.stdout === "string" ? read.stdout.replace(/\n$/, "") : null;
1276
935
  }
1277
- /** The keychain's sign-ins as a check's environment (macOS only; elsewhere, for anything missing, and where Toolroll
1278
- * keeps nothing in the keychain (TOOLROLL_SECRET_STORE=files: the test suite), nothing). */
1279
936
  export function keychainSignIns(platform = process.platform, read) {
1280
937
  if (platform !== "darwin")
1281
938
  return {};
@@ -1302,8 +959,6 @@ export async function signInsLaunch(store, own, temp, checkout, policy, gitPaths
1302
959
  const env = { CODEX_HOME: join(home, ".codex"), GH_CONFIG_DIR: join(home, ".config", "gh"), XDG_CONFIG_HOME: join(home, ".config"), ...keychain() };
1303
960
  if (policy.mode === "open")
1304
961
  return { grants, network: { mode: "open" }, env, close };
1305
- // Exactly the project's network: the services the sign-ins are for are reached only if the operator allowed their
1306
- // hosts (check-access.ts signInHostsMissing says which are missing; never added here).
1307
962
  egress = await startEgressProxy({ hosts: policy.hosts });
1308
963
  const network = { mode: "allowlist", proxyPort: egress.port, brokerPorts: [], loopback: policy.loopback, socketRoots: [temp, realpathSync(checkout)], token: egress.secret };
1309
964
  return { grants, network, env: { ...env, ...proxyEnv(egress, policy.loopback) }, close };
@@ -1313,21 +968,11 @@ export async function signInsLaunch(store, own, temp, checkout, policy, gitPaths
1313
968
  return { problem: `The check's network could not be set up, so nothing ran: ${error instanceof Error ? error.message : String(error)}` };
1314
969
  }
1315
970
  }
1316
- /** How a check at `access` actually runs here: unsandboxed where no OS fence exists (and an operator allowed that), else
1317
- * as asked. Recorded on every check's receipt, so a check that ran without a sandbox is never shown as sandboxed. */
1318
971
  export function actualCheckAccess(store, access) {
1319
972
  return macosFenceAvailable() || linuxFenceAvailable() || !store.unfencedAgentsAllowed() ? access : "unsandboxed";
1320
973
  }
1321
- /**
1322
- * A check of saved results, in their own checkout (batch-checks.ts, result-follow-ups.ts), worked out right before each
1323
- * command: never wider than any of those results' own checks ran, nor than the project allows now; under sign-ins, the
1324
- * narrowest of their sealed check networks and the project's current one. A result with no sealed network runs it
1325
- * sandboxed.
1326
- */
1327
974
  export function checkoutLaunchOf(store, repo, runIds, platform = process.platform) {
1328
- // As checks can get it: sign-ins (off for now; a stamp or setting from before, or another database) run sandboxed.
1329
975
  const asked = checkAccessHere(narrowestAccess([store.projectCheckAccess(repo), ...runIds.map(id => store.runCheckAccess(id))]), platform);
1330
- // Easy-start C5: while local mode is on, never unsandboxed (re-read here, at launch).
1331
976
  const access = localModeOn(store) ? localModeCap(asked) : asked;
1332
977
  if (access !== "sign-ins")
1333
978
  return { access, network: undefined };
@@ -1337,13 +982,9 @@ export function checkoutLaunchOf(store, repo, runIds, platform = process.platfor
1337
982
  const live = resolveNetwork("command", store.projectNetwork(repo), repositoryEcosystems(repo));
1338
983
  return { access, network: sealed.reduce((low, one) => narrowestNetwork(low, one), live) };
1339
984
  }
1340
- /** The widest level a check's commands actually ran at (what its receipt says). */
1341
985
  export const widestRan = (levels) => levels.includes("unsandboxed") ? "unsandboxed" : levels.includes("sign-ins") ? "sign-ins" : CHECK_ACCESS_DEFAULT;
1342
- /** A check log's line for how its commands ran, when wider than sandboxed (shown with the log). */
1343
986
  export const ranAtLine = (level) => level === "sandboxed" ? null
1344
987
  : `=== Check access ===\n${level === "unsandboxed" ? "These commands ran without a sandbox." : "These commands ran sandboxed, with model and GitHub sign-ins."}`;
1345
- /** A saved result's check command runner (batch-checks.ts, result-follow-ups.ts): its level and network worked out right
1346
- * now (checkoutLaunchOf), and how it actually runs told to `ran`. */
1347
988
  export function checkoutRunner(store, repo, checkout, inner, runIds, ran, platform = process.platform) {
1348
989
  return (file, args, options) => {
1349
990
  const launch = checkoutLaunchOf(store, repo, runIds, platform);
@@ -1351,12 +992,6 @@ export function checkoutRunner(store, repo, checkout, inner, runIds, ran, platfo
1351
992
  return fencedCheckoutCommands(store, repo, checkout, inner, undefined, launch.access, launch.network, checkoutSandboxOf(store, repo, runIds), runIds)(file, args, options);
1352
993
  };
1353
994
  }
1354
- /**
1355
- * A saved result's checks' sandbox terms (sandbox parity C9), never wider than any of those results' own approvals nor
1356
- * the project now: v2 only when every result's approval sealed v2; every read deny any of them sealed or the project
1357
- * lists now; mach services only those all of them sealed and the project still lists. A result with
1358
- * no readable approval counts as v1 with nothing listed.
1359
- */
1360
995
  export function checkoutSandboxOf(store, repo, runIds) {
1361
996
  const sealed = runIds.map(id => {
1362
997
  const taskRef = store.getRun(id)?.taskRef;
@@ -1372,8 +1007,6 @@ export function checkoutSandboxOf(store, repo, runIds) {
1372
1007
  machLookup: common(one => one.machLookup, live.machLookup),
1373
1008
  };
1374
1009
  }
1375
- /** A fenced launch's stamp: the level it runs at and exactly what it was given (check-stamp.ts), read from the grants the
1376
- * launch itself takes, never from what was asked for. */
1377
1010
  export function fencedStamp(level, fence, grants, network) {
1378
1011
  const writes = grants.writes;
1379
1012
  return {
@@ -1388,15 +1021,9 @@ function stampLaunch(store, runs, stamp) {
1388
1021
  for (const runId of runs)
1389
1022
  recordCheckStamp(store, runId, stamp, now);
1390
1023
  }
1391
- /** The digest of a launch's whole fence (its denied paths and grants, canonical), as stamped on its run (C11). */
1392
1024
  export function fenceDigest(fence, grants) {
1393
1025
  return createHash("sha256").update(`toolroll:fence:${canonicalJson({ fence: [...fence], grants: grants })}`).digest("hex").slice(0, 32);
1394
1026
  }
1395
- /**
1396
- * One stream event's billing observation: the key source and model from the session's own init, plan windows from a
1397
- * rate-limit event, and whether the main query answered. The session's own events only (stream-scope.ts): a
1398
- * subagent's init, rate-limit event or result says nothing about this turn's billing.
1399
- */
1400
1027
  export function observeClaudeBilling(seen, event) {
1401
1028
  if (event["type"] === "system" && event["subtype"] === "init" && topLevelEvent(event)) {
1402
1029
  if (typeof event["apiKeySource"] === "string")
@@ -1411,12 +1038,6 @@ export function observeClaudeBilling(seen, event) {
1411
1038
  seen.answered = true;
1412
1039
  }
1413
1040
  }
1414
- /**
1415
- * What decides a child's credential: the environment it starts from (the plane's, then the caller's) and every variable
1416
- * it sheds. Subscription: this provider's own keys too, so an ambient key can't force API billing over the login.
1417
- * API key: every other own-key alias, so a stray one can't override the one key injected. Foreign keys and (for a
1418
- * Claude build) plugin variables always. The live plan proof and the launch both use this one answer.
1419
- */
1420
1041
  export function childAuthEnv(args) {
1421
1042
  const env = { ...process.env, ...(args.runEnv ?? {}) };
1422
1043
  return {
@@ -1424,7 +1045,6 @@ export function childAuthEnv(args) {
1424
1045
  omitEnv: [
1425
1046
  ...(args.runOmitEnv ?? []),
1426
1047
  ...args.extraOmitEnv,
1427
- // A Claude build loads no plugin, from settings or the environment (a review's safe mode already loads none).
1428
1048
  ...(args.provider === "claude" && args.phase !== "review" ? claudePluginEnv(env) : []),
1429
1049
  ...(args.authMode === "subscription" ? args.ownKeyEnv : args.ownKeyEnv.filter(name => name !== args.keyEnvName)),
1430
1050
  ],