toolroll 0.9.62 → 0.9.65

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 (345) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +66 -8
  3. package/dist/acp-agents.d.ts +43 -0
  4. package/dist/acp-agents.js +62 -0
  5. package/dist/acp-attest.d.ts +44 -0
  6. package/dist/acp-attest.js +269 -0
  7. package/dist/acp-check.d.ts +28 -0
  8. package/dist/acp-check.js +410 -0
  9. package/dist/acp-client.d.ts +163 -0
  10. package/dist/acp-client.js +738 -0
  11. package/dist/acp-inspect.d.ts +23 -0
  12. package/dist/acp-inspect.js +109 -0
  13. package/dist/agent-board.d.ts +19 -6
  14. package/dist/agent-board.js +30 -9
  15. package/dist/agent-fence.d.ts +203 -10
  16. package/dist/agent-fence.js +623 -41
  17. package/dist/agent-pulse.js +9 -2
  18. package/dist/agent-state-words.d.ts +19 -0
  19. package/dist/agent-state-words.js +20 -0
  20. package/dist/agent-state.d.ts +65 -0
  21. package/dist/agent-state.js +229 -0
  22. package/dist/agentconfig.js +36 -13
  23. package/dist/agents-board.d.ts +34 -2
  24. package/dist/agents-board.js +110 -1
  25. package/dist/approval-rules-ui.js +2 -2
  26. package/dist/assignment-delivery.d.ts +14 -0
  27. package/dist/assignment-delivery.js +13 -0
  28. package/dist/assignment.js +13 -0
  29. package/dist/attest.js +7 -0
  30. package/dist/backup-ui.js +2 -2
  31. package/dist/browser/THIRD_PARTY_NOTICES.txt +48 -0
  32. package/dist/browser/terminal.css +37 -0
  33. package/dist/browser/terminal.js +117 -0
  34. package/dist/browser/workspace.css +2 -2
  35. package/dist/browser/workspace.js +42 -38
  36. package/dist/browser-shell.js +6 -3
  37. package/dist/browser-workspace.d.ts +263 -1
  38. package/dist/browser-workspace.js +60 -0
  39. package/dist/builder.d.ts +6 -1
  40. package/dist/builder.js +34 -13
  41. package/dist/chat-actions.d.ts +13 -1
  42. package/dist/chat-actions.js +199 -17
  43. package/dist/chat-ask.d.ts +4 -0
  44. package/dist/chat-ask.js +14 -0
  45. package/dist/chat-channel.js +20 -0
  46. package/dist/chat-continuity.js +5 -4
  47. package/dist/chat-decide.d.ts +0 -14
  48. package/dist/chat-decide.js +4 -1
  49. package/dist/chat-delivery.d.ts +9 -0
  50. package/dist/chat-delivery.js +45 -6
  51. package/dist/chat-messages.d.ts +8 -0
  52. package/dist/chat-messages.js +36 -4
  53. package/dist/check-levels-ui.js +2 -2
  54. package/dist/check-levels.js +3 -0
  55. package/dist/checkout-proof.d.ts +28 -0
  56. package/dist/checkout-proof.js +62 -0
  57. package/dist/claim.d.ts +12 -0
  58. package/dist/claim.js +20 -1
  59. package/dist/cli-help.d.ts +1 -1
  60. package/dist/cli-help.js +5 -1
  61. package/dist/cli.d.ts +3 -0
  62. package/dist/cli.js +24 -2
  63. package/dist/coding-ui.js +6 -4
  64. package/dist/console-instance.d.ts +124 -0
  65. package/dist/console-instance.js +337 -0
  66. package/dist/contracts/chat-actions.d.ts +16 -0
  67. package/dist/contracts/chat-actions.js +4 -0
  68. package/dist/contracts/chat-content.d.ts +19 -0
  69. package/dist/contracts/chat-content.js +6 -0
  70. package/dist/contracts/cli.d.ts +8 -0
  71. package/dist/contracts/cli.js +3 -1
  72. package/dist/contracts/console-api.d.ts +30 -4
  73. package/dist/contracts/console-api.js +13 -4
  74. package/dist/contracts/flow-card.d.ts +4 -0
  75. package/dist/contracts/flow-card.js +3 -0
  76. package/dist/contracts/flow.d.ts +46 -0
  77. package/dist/contracts/flow.js +11 -2
  78. package/dist/contracts/integration-metadata.d.ts +2 -1
  79. package/dist/contracts/integration-metadata.js +2 -1
  80. package/dist/contracts/lead-tools.d.ts +92 -0
  81. package/dist/contracts/lead-tools.js +13 -0
  82. package/dist/contracts/provider.d.ts +11 -1
  83. package/dist/contracts/provider.js +1 -1
  84. package/dist/contracts/route.d.ts +76 -1
  85. package/dist/contracts/route.js +1 -1
  86. package/dist/contracts/store-json.d.ts +2 -0
  87. package/dist/control-setup.d.ts +1 -1
  88. package/dist/control-ui.js +2 -2
  89. package/dist/converse.d.ts +16 -0
  90. package/dist/converse.js +32 -4
  91. package/dist/demo-chat.js +4 -4
  92. package/dist/demo.js +2 -2
  93. package/dist/desktop-update-gate.js +6 -0
  94. package/dist/discord-chat.js +4 -1
  95. package/dist/dispatch.js +7 -4
  96. package/dist/doctor.d.ts +53 -0
  97. package/dist/doctor.js +427 -0
  98. package/dist/egress-bridge.d.ts +17 -0
  99. package/dist/egress-bridge.js +111 -0
  100. package/dist/egress.d.ts +119 -0
  101. package/dist/egress.js +423 -0
  102. package/dist/evidence-pack.d.ts +1 -1
  103. package/dist/evidence-pack.js +2 -2
  104. package/dist/exec.d.ts +81 -0
  105. package/dist/exec.js +368 -9
  106. package/dist/export-ui.js +2 -2
  107. package/dist/flow-code.d.ts +2 -2
  108. package/dist/flow-code.js +4 -15
  109. package/dist/flow-engine.js +35 -11
  110. package/dist/flow-gallery-ui.js +2 -2
  111. package/dist/flow-gallery.js +27 -8
  112. package/dist/flow-share.js +16 -5
  113. package/dist/flow-triggers.d.ts +84 -11
  114. package/dist/flow-triggers.js +554 -87
  115. package/dist/flow-unattended-words.d.ts +28 -0
  116. package/dist/flow-unattended-words.js +50 -0
  117. package/dist/flow-unattended.d.ts +227 -0
  118. package/dist/flow-unattended.js +776 -0
  119. package/dist/flows-cli.d.ts +28 -1
  120. package/dist/flows-cli.js +63 -12
  121. package/dist/flows-ui.d.ts +2 -3
  122. package/dist/flows-ui.js +56 -5
  123. package/dist/flows.d.ts +4 -0
  124. package/dist/flows.js +9 -1
  125. package/dist/google-mail.d.ts +1 -0
  126. package/dist/google-mail.js +61 -18
  127. package/dist/html.d.ts +9 -0
  128. package/dist/html.js +11 -0
  129. package/dist/integrations-ui.d.ts +2 -1
  130. package/dist/integrations-ui.js +6 -3
  131. package/dist/integrations.d.ts +17 -3
  132. package/dist/integrations.js +38 -18
  133. package/dist/invoke.d.ts +17 -0
  134. package/dist/invoke.js +510 -182
  135. package/dist/keys.d.ts +18 -14
  136. package/dist/keys.js +5 -0
  137. package/dist/landed-cleanup.d.ts +3 -2
  138. package/dist/landed-cleanup.js +12 -5
  139. package/dist/lead-capabilities.js +3 -2
  140. package/dist/lead-contract.js +2 -0
  141. package/dist/lead-doors.d.ts +2 -0
  142. package/dist/lead-doors.js +7 -0
  143. package/dist/lead-follow.d.ts +2 -0
  144. package/dist/lead-follow.js +58 -2
  145. package/dist/lead-progress.js +1 -0
  146. package/dist/lead-queue-runtime.d.ts +46 -0
  147. package/dist/lead-queue-runtime.js +191 -0
  148. package/dist/lead-queue.d.ts +104 -0
  149. package/dist/lead-queue.js +187 -0
  150. package/dist/lead-sweep.d.ts +67 -0
  151. package/dist/lead-sweep.js +99 -0
  152. package/dist/lead-tools.d.ts +22 -0
  153. package/dist/lead-tools.js +163 -4
  154. package/dist/lead.d.ts +13 -5
  155. package/dist/lead.js +89 -29
  156. package/dist/limits-ui.d.ts +8 -1
  157. package/dist/limits-ui.js +26 -0
  158. package/dist/live-bus.d.ts +8 -0
  159. package/dist/live-bus.js +40 -4
  160. package/dist/live-detail.d.ts +27 -0
  161. package/dist/live-detail.js +57 -0
  162. package/dist/live-notes.d.ts +20 -0
  163. package/dist/live-notes.js +47 -0
  164. package/dist/live-records.d.ts +140 -0
  165. package/dist/live-records.js +935 -0
  166. package/dist/live-terminal.d.ts +258 -0
  167. package/dist/live-terminal.js +649 -0
  168. package/dist/live.d.ts +38 -27
  169. package/dist/live.js +142 -124
  170. package/dist/mcp-connect.d.ts +8 -7
  171. package/dist/mcp-connect.js +49 -51
  172. package/dist/mcp-oauth.d.ts +6 -3
  173. package/dist/mcp-oauth.js +8 -4
  174. package/dist/memory-pass.js +2 -2
  175. package/dist/mobile-viewport.d.ts +5 -1
  176. package/dist/mobile-viewport.js +18 -2
  177. package/dist/model-catalog.js +4 -0
  178. package/dist/monitoring-ui.js +2 -2
  179. package/dist/needs-you.d.ts +1 -1
  180. package/dist/needs-you.js +11 -4
  181. package/dist/oauth-run-token.d.ts +51 -0
  182. package/dist/oauth-run-token.js +127 -0
  183. package/dist/operate.d.ts +2 -0
  184. package/dist/operate.js +282 -18
  185. package/dist/passwordless.d.ts +23 -0
  186. package/dist/passwordless.js +26 -0
  187. package/dist/peek-cli.d.ts +12 -4
  188. package/dist/peek-cli.js +19 -11
  189. package/dist/phase-routing.js +10 -3
  190. package/dist/plan-auto.d.ts +11 -0
  191. package/dist/plan-auto.js +62 -11
  192. package/dist/planner-source.d.ts +3 -0
  193. package/dist/planner-source.js +14 -0
  194. package/dist/planner.d.ts +2 -1
  195. package/dist/planner.js +7 -1
  196. package/dist/policy-ui.js +2 -2
  197. package/dist/policy.d.ts +1 -20
  198. package/dist/policy.js +29 -2
  199. package/dist/process-recovery-eligibility.d.ts +1 -1
  200. package/dist/project-access.d.ts +3 -0
  201. package/dist/project-access.js +3 -0
  202. package/dist/project-delete-ui.d.ts +12 -0
  203. package/dist/project-delete-ui.js +41 -9
  204. package/dist/project-delete.d.ts +3 -1
  205. package/dist/project-delete.js +12 -6
  206. package/dist/project-file.d.ts +3 -0
  207. package/dist/project-file.js +16 -0
  208. package/dist/project-memory.d.ts +3 -1
  209. package/dist/project-memory.js +57 -25
  210. package/dist/project-tools.d.ts +103 -27
  211. package/dist/project-tools.js +399 -100
  212. package/dist/provider-auth.d.ts +4 -3
  213. package/dist/provider-auth.js +5 -4
  214. package/dist/provider-connection.d.ts +2 -1
  215. package/dist/provider-connection.js +5 -0
  216. package/dist/provider-home.d.ts +22 -0
  217. package/dist/provider-home.js +99 -0
  218. package/dist/provider.d.ts +42 -5
  219. package/dist/provider.js +97 -19
  220. package/dist/pull-request-ui.js +2 -2
  221. package/dist/push.js +1 -1
  222. package/dist/quick-start.d.ts +24 -0
  223. package/dist/quick-start.js +127 -0
  224. package/dist/release.d.ts +3 -0
  225. package/dist/release.js +14 -8
  226. package/dist/remote-main.d.ts +4 -0
  227. package/dist/remote-main.js +3 -3
  228. package/dist/request-budget-ui.js +2 -2
  229. package/dist/result-review.d.ts +1 -1
  230. package/dist/result-review.js +9 -3
  231. package/dist/retention-ui.js +2 -2
  232. package/dist/retention.js +10 -1
  233. package/dist/run-efficiency.d.ts +73 -0
  234. package/dist/run-efficiency.js +228 -0
  235. package/dist/runner.d.ts +5 -1
  236. package/dist/runner.js +22 -1
  237. package/dist/scope.d.ts +171 -6
  238. package/dist/scope.js +251 -31
  239. package/dist/scout-net.d.ts +4 -1
  240. package/dist/scout-net.js +37 -12
  241. package/dist/scout.d.ts +20 -6
  242. package/dist/scout.js +27 -3
  243. package/dist/serve.js +258 -43
  244. package/dist/server/chat.d.ts +1 -1
  245. package/dist/server/chat.js +122 -31
  246. package/dist/server/chrome.d.ts +6 -1
  247. package/dist/server/chrome.js +18 -7
  248. package/dist/server/console.css +52 -38
  249. package/dist/server/flows.js +65 -13
  250. package/dist/server/guards.d.ts +1 -0
  251. package/dist/server/guards.js +23 -9
  252. package/dist/server/http.d.ts +7 -0
  253. package/dist/server/http.js +3 -2
  254. package/dist/server/live.d.ts +34 -1
  255. package/dist/server/live.js +39 -17
  256. package/dist/server/pages-assets.js +5 -0
  257. package/dist/server/pages.js +90 -13
  258. package/dist/server/people-tokens.d.ts +3 -0
  259. package/dist/server/people-tokens.js +55 -17
  260. package/dist/server/remote-hooks.js +12 -6
  261. package/dist/server/remote.d.ts +2 -1
  262. package/dist/server/remote.js +14 -5
  263. package/dist/server/render-chat.d.ts +12 -3
  264. package/dist/server/render-chat.js +47 -16
  265. package/dist/server/render-pages.d.ts +4 -1
  266. package/dist/server/render-pages.js +5 -4
  267. package/dist/server/render-people.d.ts +3 -2
  268. package/dist/server/render-people.js +3 -2
  269. package/dist/server/render-results.d.ts +18 -2
  270. package/dist/server/render-results.js +37 -28
  271. package/dist/server/render-settings.js +6 -5
  272. package/dist/server/render-tasks.d.ts +35 -10
  273. package/dist/server/render-tasks.js +110 -27
  274. package/dist/server/request-context.d.ts +2 -0
  275. package/dist/server/request-context.js +2 -1
  276. package/dist/server/route-table.d.ts +3 -0
  277. package/dist/server/route-table.js +49 -5
  278. package/dist/server/runtime.d.ts +34 -3
  279. package/dist/server/session.d.ts +25 -1
  280. package/dist/server/session.js +18 -4
  281. package/dist/server/settings.js +132 -13
  282. package/dist/server/sweeps.d.ts +4 -0
  283. package/dist/server/sweeps.js +58 -0
  284. package/dist/server/task-views.d.ts +2 -1
  285. package/dist/server/task-views.js +96 -6
  286. package/dist/server/tasks.js +320 -74
  287. package/dist/server/terminals.d.ts +31 -0
  288. package/dist/server/terminals.js +365 -0
  289. package/dist/setup-guide.js +3 -2
  290. package/dist/slack-chat.js +4 -1
  291. package/dist/spend-ui.js +3 -3
  292. package/dist/spend.js +2 -1
  293. package/dist/steer-capabilities.d.ts +32 -0
  294. package/dist/steer-capabilities.js +60 -0
  295. package/dist/steer-controls.d.ts +14 -0
  296. package/dist/steer-controls.js +36 -0
  297. package/dist/steer-status.js +2 -2
  298. package/dist/storage-sweep-child.js +3 -1
  299. package/dist/storage-sweep-process.d.ts +12 -5
  300. package/dist/storage-sweep-process.js +23 -6
  301. package/dist/storage-ui.js +4 -4
  302. package/dist/store-baseline.d.ts +1 -1
  303. package/dist/store-baseline.js +1 -1
  304. package/dist/store.d.ts +466 -19
  305. package/dist/store.js +1185 -63
  306. package/dist/subagent-desk.js +1 -1
  307. package/dist/subagent-tools.d.ts +1 -1
  308. package/dist/summary.js +3 -0
  309. package/dist/surface.js +6 -4
  310. package/dist/task-source.d.ts +58 -0
  311. package/dist/task-source.js +93 -0
  312. package/dist/team-leads.js +1 -1
  313. package/dist/teams-chat.js +4 -1
  314. package/dist/teardown-git.d.ts +14 -0
  315. package/dist/teardown-git.js +119 -0
  316. package/dist/telegram-lead.d.ts +3 -0
  317. package/dist/telegram-lead.js +44 -7
  318. package/dist/telegram.d.ts +11 -2
  319. package/dist/telegram.js +51 -17
  320. package/dist/terminal-catalog.d.ts +11 -0
  321. package/dist/terminal-catalog.js +129 -0
  322. package/dist/text-limits.d.ts +2 -0
  323. package/dist/text-limits.js +2 -0
  324. package/dist/tool-broker.d.ts +39 -0
  325. package/dist/tool-broker.js +370 -0
  326. package/dist/tool-launcher.js +5 -4
  327. package/dist/tool-secret-store.d.ts +170 -0
  328. package/dist/tool-secret-store.js +834 -0
  329. package/dist/toolroll-update-ui.js +2 -2
  330. package/dist/toolroll-update.js +14 -3
  331. package/dist/tools-ui.d.ts +7 -1
  332. package/dist/tools-ui.js +19 -10
  333. package/dist/webhook-limits.d.ts +23 -0
  334. package/dist/webhook-limits.js +30 -0
  335. package/dist/webhook-readers.d.ts +56 -0
  336. package/dist/webhook-readers.js +138 -0
  337. package/dist/webhook-signing.d.ts +27 -0
  338. package/dist/webhook-signing.js +119 -0
  339. package/dist/work-index.d.ts +29 -0
  340. package/dist/work-index.js +21 -5
  341. package/dist/workspace-revision.js +3 -1
  342. package/dist/worktree.d.ts +10 -4
  343. package/dist/worktree.js +70 -29
  344. package/package.json +13 -2
  345. package/scripts/provider-canary.mjs +210 -31
@@ -66,16 +66,23 @@ export declare const CONSOLE_FORMS: {
66
66
  readonly projectCeiling: FormContract<"repo">;
67
67
  readonly demo: FormContract<"message" | "note">;
68
68
  readonly updatesDismiss: FormContract<"quiet" | "return" | "version">;
69
+ readonly forgetPassword: FormContract<"return">;
70
+ readonly runReveal: FormContract<"return">;
69
71
  readonly updatesChecks: FormContract<"check">;
70
72
  readonly code: FormContract<"acceptance" | "answers" | "base" | "candidate" | "decision" | "goal" | "model" | "password" | "prompt" | "repo" | "requestId" | "title" | "visual" | `question:${string}`>;
73
+ readonly sweep: FormContract<"confirm" | "snapshot">;
74
+ readonly passwordless: FormContract<"action" | "password">;
75
+ readonly term: FormContract<"password" | "program" | "repo">;
71
76
  readonly skillsRevise: FormContract<"feedback" | "nonce" | "repo" | "run">;
72
77
  readonly skillsChange: FormContract<"action" | "content" | "files" | "identity" | "method" | "nonce" | "repo" | "restore" | "revision" | "sample" | "sha" | "url">;
73
78
  readonly kit: FormContract<"repo">;
74
79
  readonly subagents: FormContract<"choice" | "dailyTurns" | "id" | "manager" | "model" | "name" | "note" | "op" | "repo" | "schedule" | "soul" | "state" | "template" | "text" | "tool" | `field.${string}` | `over.${string}` | `undo.${string}` | `use.${string}`>;
75
80
  readonly galleryUse: FormContract<string>;
76
- readonly flows: FormContract<"about" | "address" | "answers" | "approve" | "body" | "choice" | "confirm" | "decision" | "definition" | "description" | "document" | "draft" | "entry" | "file" | "key" | "label" | "language" | "name" | "note" | "owner" | "password" | "previewed" | "remove" | "repo" | "revision" | "secret" | "stage" | "template" | "timeoutMinutes" | "title" | "trigger" | "url" | "value" | "watching" | `param.${string}`>;
81
+ readonly flows: FormContract<"about" | "address" | "answers" | "approve" | "body" | "budget" | "choice" | "confirm" | "days" | "decision" | "definition" | "description" | "document" | "draft" | "entry" | "file" | "include" | "key" | "label" | "language" | "name" | "note" | "owner" | "password" | "previewed" | "project" | "remove" | "repo" | "revision" | "runs" | "schedules" | "secret" | "sender" | "stage" | "team" | "template" | "timeoutMinutes" | "title" | "trigger" | "url" | "value" | "watching" | `param.${string}`>;
77
82
  readonly spendBudget: FormContract<"action" | "password" | "stop" | "target" | "usd">;
78
83
  readonly projectConcurrency: FormContract<"concurrency" | "repo">;
84
+ readonly projectLiveView: FormContract<"act" | "nonce" | "password" | "repo">;
85
+ readonly projectNetwork: FormContract<"hosts" | "local" | "mode" | "password" | "repo">;
79
86
  readonly projectDelete: FormContract<"name" | "password" | "repo" | "step">;
80
87
  readonly policy: FormContract<"ceiling" | "models" | "password" | "provider" | "tools">;
81
88
  readonly approval: FormContract<"not_requester" | "password" | "paths" | "protect" | "repo">;
@@ -144,6 +151,7 @@ export declare const CONSOLE_FORMS: {
144
151
  readonly leadFollow: FormContract<"enabled" | "return">;
145
152
  readonly leadEnd: FormContract<"return">;
146
153
  readonly leadStop: FormContract<"return" | "turn">;
154
+ readonly leadQueuedRemove: FormContract<"return">;
147
155
  readonly leadProposal: FormContract<"confirm" | "nonce" | "return" | "token">;
148
156
  readonly coordinatorProposal: FormContract<"confirm" | "return">;
149
157
  readonly chat: FormContract<"message" | "mode" | "project" | "request" | "request-session" | "result" | "task" | "token">;
@@ -156,7 +164,7 @@ export declare const CONSOLE_FORMS: {
156
164
  readonly revise: FormContract<"batch" | "return" | "source">;
157
165
  readonly followUp: FormContract<"level" | "return">;
158
166
  readonly resolveIncident: FormContract<"return">;
159
- readonly taskSteer: FormContract<"note" | "return" | "run">;
167
+ readonly taskSteer: FormContract<"after" | "key" | "note" | "request" | "return" | "run">;
160
168
  readonly taskReply: FormContract<"answer" | "question">;
161
169
  readonly taskHold: FormContract<"reason">;
162
170
  readonly taskBlock: FormContract<"on">;
@@ -170,11 +178,11 @@ export declare const CONSOLE_FORMS: {
170
178
  readonly taskCancel: FormContract<"reason">;
171
179
  readonly taskRoute: FormContract<"agent" | "clear-phase" | "model" | "phase" | "provider" | "return" | "risky" | "sawDigest" | "size">;
172
180
  readonly taskScope: FormContract<"acceptance" | "budget-microusd" | "budget-usd" | "goal" | "goal-brief" | "not" | "permission-mode" | "quality-mode" | "requirement" | "requirement-new" | "sawDigest" | "touches">;
173
- readonly taskApprove: FormContract<"digest" | "nonce" | "return" | "token">;
181
+ readonly taskApprove: FormContract<"digest" | "nonce" | "rebuild" | "return" | "token">;
174
182
  readonly taskAcceptProof: FormContract<"note" | "return" | "run">;
175
183
  readonly taskComplete: FormContract<"accept" | "note" | "publish" | "receipt" | "return" | "run">;
176
184
  readonly taskStop: FormContract<"return" | "run">;
177
- readonly taskPause: FormContract<"mode" | "note" | "request" | "return" | "run">;
185
+ readonly taskPause: FormContract<"key" | "mode" | "note" | "request" | "return" | "run">;
178
186
  readonly taskResume: FormContract<"nonce" | "return" | "run" | "token">;
179
187
  };
180
188
  export type ConsoleFormName = keyof typeof CONSOLE_FORMS;
@@ -318,6 +326,15 @@ export declare const flowViewSchema: z.ZodObject<{
318
326
  selectedCard: z.ZodNullable<z.ZodNumber>;
319
327
  live: z.ZodNullable<z.ZodString>;
320
328
  canEdit: z.ZodBoolean;
329
+ unattended: z.ZodObject<{
330
+ active: z.ZodNullable<z.ZodObject<{
331
+ until: z.ZodString;
332
+ signedBy: z.ZodString;
333
+ }, z.core.$loose>>;
334
+ canSign: z.ZodBoolean;
335
+ problem: z.ZodNullable<z.ZodString>;
336
+ scheduled: z.ZodBoolean;
337
+ }, z.core.$loose>;
321
338
  approvers: z.ZodArray<z.ZodString>;
322
339
  kinds: z.ZodArray<z.ZodObject<{
323
340
  kind: z.ZodString;
@@ -467,6 +484,15 @@ export declare const CONSOLE_RESPONSES: {
467
484
  selectedCard: z.ZodNullable<z.ZodNumber>;
468
485
  live: z.ZodNullable<z.ZodString>;
469
486
  canEdit: z.ZodBoolean;
487
+ unattended: z.ZodObject<{
488
+ active: z.ZodNullable<z.ZodObject<{
489
+ until: z.ZodString;
490
+ signedBy: z.ZodString;
491
+ }, z.core.$loose>>;
492
+ canSign: z.ZodBoolean;
493
+ problem: z.ZodNullable<z.ZodString>;
494
+ scheduled: z.ZodBoolean;
495
+ }, z.core.$loose>;
470
496
  approvers: z.ZodArray<z.ZodString>;
471
497
  kinds: z.ZodArray<z.ZodObject<{
472
498
  kind: z.ZodString;
@@ -75,16 +75,23 @@ export const CONSOLE_FORMS = {
75
75
  projectCeiling: formContract("POST (project ceiling)", ["repo"]),
76
76
  demo: formContract("POST /chat/demo/ask, /chat/demo/<id>/approve|change|revise|complete", ["message", "note"]),
77
77
  updatesDismiss: formContract("POST /settings/updates/dismiss", ["version", "quiet", "return"]),
78
+ forgetPassword: formContract("POST /session/forget-password", ["return"]),
79
+ runReveal: formContract("POST /r/<run>/reveal", ["return"]),
78
80
  updatesChecks: formContract("POST /settings/updates/checks", ["check"]),
79
81
  code: formContract("POST /code, /code/start, /code/<session>/<act>, /code/<anything else>", ["repo", "password", "title", "model", "prompt", "requestId", "base", "candidate", "goal", "acceptance", "visual", "decision", "answers"], { prefixes: ["question:"] }),
82
+ sweep: formContract("POST /sweeps/<sweep>/cancel-rest", ["confirm", "snapshot"]),
83
+ passwordless: formContract("POST /settings/passwordless", ["action", "password"]),
84
+ term: formContract("POST /term/start, /term/<terminal>/close, /term/<terminal>/remove", ["repo", "program", "password"]),
80
85
  skillsRevise: formContract("POST /settings/skills/revise", ["run", "repo", "feedback", "nonce"]),
81
86
  skillsChange: formContract("POST /settings/skills/import, /settings/skills/change", ["repo", "identity", "revision", "method", "content", "files", "url", "action", "sha", "sample", "nonce", "restore"]),
82
87
  kit: formContract("POST /kits/<kit>/<act>", ["repo"]),
83
88
  subagents: formContract("POST /settings/lead/subagents/new, /settings/lead/subagents/<id>/<part>, /settings/lead/subagents/questions/<id>/answer", ["choice", "text", "repo", "template", "name", "soul", "op", "id", "schedule", "tool", "state", "note", "model", "dailyTurns", "manager"], { prefixes: ["use.", "undo.", "field.", "over."] }),
84
89
  galleryUse: formContract("POST /flows/new/<template>", ["repo", "send-result", "name", "intent", "previewed"], { dynamic: true }),
85
- flows: formContract("POST /flows/new, /flows/example, /flows/import, /flows/<id>/<act>, /flows/<id>/cards/<card>/<act>, /flows/<id>/triggers/<trigger>/<act>", ["repo", "document", "url", "confirm", "previewed", "template", "name", "answers", "password", "secret", "trigger", "approve", "remove", "about", "body", "timeoutMinutes", "language", "file", "address", "key", "definition", "owner", "revision", "value", "title", "description", "stage", "decision", "note", "draft", "choice", "entry", "label", "watching"], { prefixes: ["param."] }),
90
+ flows: formContract("POST /flows/new, /flows/example, /flows/import, /flows/<id>/<act>, /flows/<id>/cards/<card>/<act>, /flows/<id>/triggers/<trigger>/<act>", ["repo", "document", "url", "confirm", "previewed", "template", "name", "answers", "password", "secret", "sender", "project", "team", "trigger", "approve", "remove", "about", "body", "timeoutMinutes", "language", "file", "address", "key", "definition", "owner", "revision", "value", "title", "description", "stage", "decision", "note", "draft", "choice", "entry", "label", "watching", "days", "budget", "runs", "include", "schedules"], { prefixes: ["param."] }),
86
91
  spendBudget: formContract("POST /spend/budget", ["password", "target", "action", "usd", "stop"]),
87
92
  projectConcurrency: formContract("POST /settings/project/concurrency", ["repo", "concurrency"]),
93
+ projectLiveView: formContract("POST /settings/project/live-view", ["repo", "act", "password", "nonce"]),
94
+ projectNetwork: formContract("POST /settings/project/network", ["repo", "mode", "local", "hosts", "password"]),
88
95
  projectDelete: formContract("POST /settings/project/delete", ["repo", "name", "step", "password"]),
89
96
  policy: formContract("POST /settings/policy", ["password", "provider", "models", "tools", "ceiling"]),
90
97
  approval: formContract("POST /settings/approval", ["repo", "password", "protect", "paths", "not_requester"]),
@@ -153,6 +160,7 @@ export const CONSOLE_FORMS = {
153
160
  leadFollow: formContract("POST /chat/mate/follow", ["enabled", "return"]),
154
161
  leadEnd: formContract("POST /chat/mate/end", ["return"]),
155
162
  leadStop: formContract("POST /chat/mate/stop", ["return", "turn"]),
163
+ leadQueuedRemove: formContract("POST /chat/queued/<message>/remove", ["return"]),
156
164
  leadProposal: formContract("POST /chat/proposal/<id>/confirm|dismiss", ["return", "nonce", "confirm", "token"]),
157
165
  coordinatorProposal: formContract("POST /proposals/<id>/confirm|dismiss", ["return", "confirm"]),
158
166
  chat: formContract("POST /chat", ["task", "project", "result", "mode", "request", "request-session", "message", "token"]),
@@ -167,7 +175,7 @@ export const CONSOLE_FORMS = {
167
175
  followUp: formContract("POST /r/<run>/checks|add-tests", ["return", "level"]),
168
176
  resolveIncident: formContract("POST /i/<id>/resolve", ["return"]),
169
177
  // A task's verbs (/t/<task>/<verb>), one body each.
170
- taskSteer: formContract("POST /t/<task>/steer", ["note", "return", "run"]),
178
+ taskSteer: formContract("POST /t/<task>/steer", ["note", "return", "run", "key", "after", "request"]),
171
179
  taskReply: formContract("POST /t/<task>/reply", ["question", "answer"]),
172
180
  taskHold: formContract("POST /t/<task>/hold", ["reason"]),
173
181
  taskBlock: formContract("POST /t/<task>/block|unblock", ["on"]),
@@ -181,13 +189,13 @@ export const CONSOLE_FORMS = {
181
189
  taskCancel: formContract("POST /t/<task>/cancel", ["reason"]),
182
190
  taskRoute: formContract("POST /t/<task>/route", ["size", "risky", "phase", "clear-phase", "agent", "provider", "model", "sawDigest", "return"]),
183
191
  taskScope: formContract("POST /t/<task>/scope", ["sawDigest", "permission-mode", "quality-mode", "budget-usd", "budget-microusd", "requirement", "requirement-new", "goal-brief", "goal", "not", "touches", "acceptance"]),
184
- taskApprove: formContract("POST /t/<task>/approve", ["return", "digest", "token", "nonce"]),
192
+ taskApprove: formContract("POST /t/<task>/approve", ["return", "digest", "token", "nonce", "rebuild"]),
185
193
  taskAcceptProof: formContract("POST /t/<task>/accept-proof", ["run", "note", "return"]),
186
194
  taskComplete: formContract("POST /t/<task>/complete", ["receipt", "run", "accept", "note", "publish", "return"]),
187
195
  taskStop: formContract("POST /t/<task>/stop", ["run", "return"]),
188
196
  // Pause, or Pause and steer when a note rides along, or Resume (mode=resume): the exact run shown, and the page's own
189
197
  // request id.
190
- taskPause: formContract("POST /t/<task>/pause", ["run", "request", "note", "mode", "return"]),
198
+ taskPause: formContract("POST /t/<task>/pause", ["run", "request", "note", "mode", "return", "key"]),
191
199
  taskResume: formContract("POST /t/<task>/resume|resume-arm", ["run", "token", "nonce", "return"]),
192
200
  };
193
201
  /** The console POSTs whose handlers read no field (sign-out not even the shared guard): their contract is the empty form. */
@@ -255,6 +263,7 @@ export const flowViewSchema = z.looseObject({
255
263
  selectedCard: z.number().nullable(),
256
264
  live: z.string().nullable(),
257
265
  canEdit: z.boolean(),
266
+ unattended: z.looseObject({ active: z.looseObject({ until: z.string(), signedBy: z.string() }).nullable(), canSign: z.boolean(), problem: z.string().nullable(), scheduled: z.boolean() }),
258
267
  approvers: z.array(z.string()),
259
268
  kinds: z.array(z.looseObject({ kind: z.string(), label: z.string() })),
260
269
  colors: z.array(z.string()),
@@ -29,6 +29,10 @@ export declare const flowCardSchema: z.ZodObject<{
29
29
  outputs: z.ZodObject<{}, z.core.$catchall<z.ZodString>>;
30
30
  attached: z.ZodObject<{}, z.core.$catchall<z.ZodString>>;
31
31
  createdBy: z.ZodString;
32
+ createdKind: z.ZodEnum<{
33
+ automation: "automation";
34
+ person: "person";
35
+ }>;
32
36
  createdAt: z.ZodString;
33
37
  updatedAt: z.ZodString;
34
38
  owner: z.ZodNullable<z.ZodString>;
@@ -30,6 +30,9 @@ export const flowCardSchema = z.strictObject({
30
30
  outputs: cardOutputsSchema.shape.outputs,
31
31
  attached: cardOutputsSchema.shape.attached,
32
32
  createdBy: z.string(),
33
+ /** v126: whether a person or an automation (a delivery, a poll, a schedule, a public form) made it. Decided where it
34
+ * was made, never read from its label: filing passes it on as the requester's kind. */
35
+ createdKind: z.enum(["person", "automation"]),
33
36
  createdAt: z.string(),
34
37
  updatedAt: z.string(),
35
38
  owner: z.string().nullable(),
@@ -10792,6 +10792,8 @@ export declare function legacySubagentStep(step: unknown): unknown;
10792
10792
  export declare const legacyFlowNeed: (need: unknown) => unknown;
10793
10793
  /** The keys people and models write for the ones a step means: refusals suggest them (contract.ts). */
10794
10794
  export declare const FLOW_ALIASES: ContractOptions;
10795
+ /** v126: who signs a webhook's deliveries (webhook-signing.ts); `none` is the secret address alone. */
10796
+ export declare const WEBHOOK_SENDERS: readonly ["none", "standard", "github-style", "sentry", "vercel"];
10795
10797
  export declare const triggerInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
10796
10798
  zone: z.ZodOptional<z.ZodString>;
10797
10799
  kind: z.ZodLiteral<"button">;
@@ -10845,6 +10847,17 @@ export declare const triggerInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
10845
10847
  title: z.ZodOptional<z.ZodString>;
10846
10848
  titleField: z.ZodOptional<z.ZodString>;
10847
10849
  bodyField: z.ZodOptional<z.ZodString>;
10850
+ sender: z.ZodOptional<z.ZodEnum<{
10851
+ "github-style": "github-style";
10852
+ none: "none";
10853
+ sentry: "sentry";
10854
+ standard: "standard";
10855
+ vercel: "vercel";
10856
+ }>>;
10857
+ project: z.ZodOptional<z.ZodString>;
10858
+ team: z.ZodOptional<z.ZodString>;
10859
+ idField: z.ZodOptional<z.ZodString>;
10860
+ urlField: z.ZodOptional<z.ZodString>;
10848
10861
  }, z.core.$strict>, z.ZodObject<{
10849
10862
  zone: z.ZodOptional<z.ZodString>;
10850
10863
  kind: z.ZodLiteral<"email">;
@@ -10907,6 +10920,17 @@ export declare const flowFileTriggerSchema: z.ZodDiscriminatedUnion<[z.ZodObject
10907
10920
  title: z.ZodOptional<z.ZodString>;
10908
10921
  titleField: z.ZodOptional<z.ZodString>;
10909
10922
  bodyField: z.ZodOptional<z.ZodString>;
10923
+ sender: z.ZodOptional<z.ZodEnum<{
10924
+ "github-style": "github-style";
10925
+ none: "none";
10926
+ sentry: "sentry";
10927
+ standard: "standard";
10928
+ vercel: "vercel";
10929
+ }>>;
10930
+ project: z.ZodOptional<z.ZodString>;
10931
+ team: z.ZodOptional<z.ZodString>;
10932
+ idField: z.ZodOptional<z.ZodString>;
10933
+ urlField: z.ZodOptional<z.ZodString>;
10910
10934
  }, z.core.$strict>, z.ZodObject<{
10911
10935
  zone: z.ZodOptional<z.ZodString>;
10912
10936
  kind: z.ZodLiteral<"email">;
@@ -11075,6 +11099,17 @@ export declare const triggerConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
11075
11099
  title: z.ZodString;
11076
11100
  titleField: z.ZodNullable<z.ZodString>;
11077
11101
  bodyField: z.ZodNullable<z.ZodString>;
11102
+ sender: z.ZodOptional<z.ZodEnum<{
11103
+ "github-style": "github-style";
11104
+ none: "none";
11105
+ sentry: "sentry";
11106
+ standard: "standard";
11107
+ vercel: "vercel";
11108
+ }>>;
11109
+ project: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11110
+ team: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11111
+ idField: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11112
+ urlField: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11078
11113
  }, z.core.$strict>, z.ZodObject<{
11079
11114
  zone: z.ZodNullable<z.ZodString>;
11080
11115
  kind: z.ZodLiteral<"email">;
@@ -19412,6 +19447,17 @@ export declare const flowFileSchema: z.ZodObject<{
19412
19447
  title: z.ZodOptional<z.ZodString>;
19413
19448
  titleField: z.ZodOptional<z.ZodString>;
19414
19449
  bodyField: z.ZodOptional<z.ZodString>;
19450
+ sender: z.ZodOptional<z.ZodEnum<{
19451
+ "github-style": "github-style";
19452
+ none: "none";
19453
+ sentry: "sentry";
19454
+ standard: "standard";
19455
+ vercel: "vercel";
19456
+ }>>;
19457
+ project: z.ZodOptional<z.ZodString>;
19458
+ team: z.ZodOptional<z.ZodString>;
19459
+ idField: z.ZodOptional<z.ZodString>;
19460
+ urlField: z.ZodOptional<z.ZodString>;
19415
19461
  }, z.core.$strict>, z.ZodObject<{
19416
19462
  zone: z.ZodOptional<z.ZodString>;
19417
19463
  kind: z.ZodLiteral<"email">;
@@ -297,6 +297,9 @@ export const FLOW_ALIASES = {
297
297
  };
298
298
  // ------------------------------------------------------------------ triggers
299
299
  const zoneRef = { zone: z.string().max(TEXT_LIMITS.flowRef).optional() };
300
+ /** v126: who signs a webhook's deliveries (webhook-signing.ts); `none` is the secret address alone. */
301
+ export const WEBHOOK_SENDERS = ["none", "standard", "github-style", "sentry", "vercel"];
302
+ const webhookSender = z.enum(WEBHOOK_SENDERS);
300
303
  const delivery = z.enum(["poll", "webhook"]);
301
304
  /** A trigger's settings as they are given: the console, `toolroll flows trigger add`, a flow file, a template, the lead. */
302
305
  const TRIGGER_INPUTS = {
@@ -311,7 +314,10 @@ const TRIGGER_INPUTS = {
311
314
  }),
312
315
  linear: z.strictObject({ kind: z.literal("linear"), team: short("triggerTeam").optional(), state: short("triggerState").optional(), label: short("triggerLabel").optional(), delivery: delivery.optional(), ...zoneRef }),
313
316
  flow: z.strictObject({ kind: z.literal("flow"), flow: z.int().min(1), when: z.string().max(TEXT_LIMITS.flowRef).optional(), ...zoneRef }),
314
- webhook: z.strictObject({ kind: z.literal("webhook"), title: short("triggerWebhookTitle").optional(), titleField: short("triggerWebhookField").optional(), bodyField: short("triggerWebhookField").optional(), ...zoneRef }),
317
+ /** v126: `sender` signs it; Sentry and Vercel read their own payloads (scoped by `project`, Vercel's also by `team`),
318
+ * the others pick `titleField`, `bodyField`, `idField` and `urlField` from the JSON. */
319
+ webhook: z.strictObject({ kind: z.literal("webhook"), title: short("triggerWebhookTitle").optional(), titleField: short("triggerWebhookField").optional(), bodyField: short("triggerWebhookField").optional(),
320
+ sender: webhookSender.optional(), project: short("triggerWebhookScope").optional(), team: short("triggerWebhookScope").optional(), idField: short("triggerWebhookField").optional(), urlField: short("triggerWebhookField").optional(), ...zoneRef }),
315
321
  email: z.strictObject({ kind: z.literal("email"), folder: short("triggerFolder").optional(), sender: short("triggerSender").optional(), subject: short("triggerSubject").optional(), ...zoneRef }),
316
322
  "plane-review": z.strictObject({ kind: z.literal("plane-review"), at: z.string().regex(/^\d{1,2}:\d{2}$/, { error: "must be a time like 07:30" }).optional(), timeZone: z.string().max(TEXT_LIMITS.flowTimeZone).optional(), ...zoneRef }),
317
323
  };
@@ -357,7 +363,10 @@ export const triggerConfigSchema = z.discriminatedUnion("kind", [
357
363
  z.strictObject({ kind: z.literal("github"), repo: z.string().min(1).max(TEXT_LIMITS.triggerGithubRepo), watch: z.enum(["issues", "pulls", "checks"]), label: z.string().max(TEXT_LIMITS.triggerLabel).nullable(), branch: z.string().max(TEXT_LIMITS.triggerBranch).nullable(), from: z.enum(["team", "anyone"]), delivery, ...ZONE_OR_NULL }),
358
364
  z.strictObject({ kind: z.literal("linear"), team: z.string().max(TEXT_LIMITS.triggerTeam).nullable(), state: z.string().max(TEXT_LIMITS.triggerState).nullable(), label: z.string().max(TEXT_LIMITS.triggerLabel).nullable(), delivery, ...ZONE_OR_NULL }),
359
365
  z.strictObject({ kind: z.literal("flow"), flow: z.int().min(1), when: zoneId, ...ZONE_OR_NULL }),
360
- z.strictObject({ kind: z.literal("webhook"), title: z.string().min(1).max(TEXT_LIMITS.triggerWebhookTitle), titleField: z.string().max(TEXT_LIMITS.triggerWebhookField).nullable(), bodyField: z.string().max(TEXT_LIMITS.triggerWebhookField).nullable(), ...ZONE_OR_NULL }),
366
+ /** v126: a webhook saved before its sender was chosen reads unsigned, with no scope and no identity or link field. */
367
+ z.strictObject({ kind: z.literal("webhook"), title: z.string().min(1).max(TEXT_LIMITS.triggerWebhookTitle), titleField: z.string().max(TEXT_LIMITS.triggerWebhookField).nullable(), bodyField: z.string().max(TEXT_LIMITS.triggerWebhookField).nullable(),
368
+ sender: webhookSender.optional(), project: z.string().max(TEXT_LIMITS.triggerWebhookScope).nullable().optional(), team: z.string().max(TEXT_LIMITS.triggerWebhookScope).nullable().optional(),
369
+ idField: z.string().max(TEXT_LIMITS.triggerWebhookField).nullable().optional(), urlField: z.string().max(TEXT_LIMITS.triggerWebhookField).nullable().optional(), ...ZONE_OR_NULL }),
361
370
  /** `sender`: addresses or domains, comma-separated; `subject`: words the subject must contain. */
362
371
  z.strictObject({ kind: z.literal("email"), folder: z.string().min(1).max(TEXT_LIMITS.triggerFolder), sender: z.string().max(TEXT_LIMITS.triggerSender).nullable(), subject: z.string().max(TEXT_LIMITS.triggerSubject).nullable(), ...ZONE_OR_NULL }),
363
372
  /** A channel in a chat app; `binding` is the pairing of the person who connected it (whose chat answers there). */
@@ -22,11 +22,12 @@ export declare const protectedResourceSchema: z.ZodObject<{
22
22
  authorization_servers: z.ZodOptional<z.ZodArray<z.ZodString>>;
23
23
  scopes_supported: z.ZodOptional<z.ZodArray<z.ZodString>>;
24
24
  }, z.core.$strip>;
25
- /** RFC 8414 (or OpenID) authorization-server metadata: where to sign in, trade a code, and register. */
25
+ /** RFC 8414 (or OpenID) authorization-server metadata: where to sign in, trade a code, register, and revoke. */
26
26
  export declare const authorizationServerSchema: z.ZodObject<{
27
27
  authorization_endpoint: z.ZodOptional<z.ZodString>;
28
28
  token_endpoint: z.ZodOptional<z.ZodString>;
29
29
  registration_endpoint: z.ZodOptional<z.ZodString>;
30
+ revocation_endpoint: z.ZodOptional<z.ZodString>;
30
31
  code_challenge_methods_supported: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
32
  }, z.core.$strip>;
32
33
  /** RFC 7591 registration answer: the client Toolroll is, and its secret when the server gives one. */
@@ -44,11 +44,12 @@ export const protectedResourceSchema = z.object({
44
44
  authorization_servers: z.array(z.string()).optional(),
45
45
  scopes_supported: z.array(z.string().regex(SCOPE_TOKEN)).optional(),
46
46
  });
47
- /** RFC 8414 (or OpenID) authorization-server metadata: where to sign in, trade a code, and register. */
47
+ /** RFC 8414 (or OpenID) authorization-server metadata: where to sign in, trade a code, register, and revoke. */
48
48
  export const authorizationServerSchema = z.object({
49
49
  authorization_endpoint: z.string().optional(),
50
50
  token_endpoint: z.string().optional(),
51
51
  registration_endpoint: z.string().optional(),
52
+ revocation_endpoint: z.string().optional(),
52
53
  code_challenge_methods_supported: z.array(z.string()).optional(),
53
54
  });
54
55
  /** RFC 7591 registration answer: the client Toolroll is, and its secret when the server gives one. */
@@ -135,6 +135,9 @@ export declare const LEAD_TOOL_INPUTS: {
135
135
  since: z.ZodOptional<z.ZodString>;
136
136
  }, z.core.$strict>;
137
137
  readonly list_repos: z.ZodObject<{}, z.core.$strict>;
138
+ readonly find_tools: z.ZodObject<{
139
+ query: z.ZodString;
140
+ }, z.core.$strict>;
138
141
  readonly get_project_tools: z.ZodObject<{
139
142
  repo: z.ZodString;
140
143
  }, z.core.$strict>;
@@ -640,6 +643,33 @@ export declare const LEAD_TOOL_INPUTS: {
640
643
  report: z.ZodOptional<z.ZodBoolean>;
641
644
  checks: z.ZodOptional<z.ZodString>;
642
645
  }, z.core.$strict>;
646
+ readonly propose_sweep: z.ZodObject<{
647
+ repo: z.ZodString;
648
+ title: z.ZodString;
649
+ brief: z.ZodString;
650
+ items: z.ZodArray<z.ZodObject<{
651
+ title: z.ZodString;
652
+ item: z.ZodString;
653
+ }, z.core.$strict>>;
654
+ acceptance: z.ZodArray<z.ZodObject<{
655
+ id: z.ZodString;
656
+ statement: z.ZodString;
657
+ how: z.ZodOptional<z.ZodNullable<z.ZodString>>;
658
+ evidence: z.ZodArray<z.ZodEnum<{
659
+ "changed-path": "changed-path";
660
+ check: "check";
661
+ "manual-review": "manual-review";
662
+ screenshot: "screenshot";
663
+ }>>;
664
+ }, z.core.$strict>>;
665
+ max_parallel: z.ZodOptional<z.ZodNumber>;
666
+ }, z.core.$strict>;
667
+ readonly get_sweep: z.ZodObject<{
668
+ sweep: z.ZodInt;
669
+ }, z.core.$strict>;
670
+ readonly propose_sweep_cancel: z.ZodObject<{
671
+ sweep: z.ZodInt;
672
+ }, z.core.$strict>;
643
673
  readonly propose_next: z.ZodObject<{
644
674
  task: z.ZodString;
645
675
  }, z.core.$strict>;
@@ -831,6 +861,9 @@ export declare const LEAD_TOOL_READ_INPUTS: {
831
861
  since: z.ZodOptional<z.ZodString>;
832
862
  }, z.core.$strict>;
833
863
  readonly list_repos: z.ZodObject<{}, z.core.$strict>;
864
+ readonly find_tools: z.ZodObject<{
865
+ query: z.ZodString;
866
+ }, z.core.$strict>;
834
867
  readonly get_project_tools: z.ZodObject<{
835
868
  repo: z.ZodString;
836
869
  }, z.core.$strict>;
@@ -1309,6 +1342,33 @@ export declare const LEAD_TOOL_READ_INPUTS: {
1309
1342
  report: z.ZodOptional<z.ZodBoolean>;
1310
1343
  checks: z.ZodOptional<z.ZodString>;
1311
1344
  }, z.core.$strict>;
1345
+ readonly propose_sweep: z.ZodObject<{
1346
+ repo: z.ZodString;
1347
+ title: z.ZodString;
1348
+ brief: z.ZodString;
1349
+ items: z.ZodArray<z.ZodObject<{
1350
+ title: z.ZodString;
1351
+ item: z.ZodString;
1352
+ }, z.core.$strict>>;
1353
+ acceptance: z.ZodArray<z.ZodObject<{
1354
+ id: z.ZodString;
1355
+ statement: z.ZodString;
1356
+ how: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1357
+ evidence: z.ZodArray<z.ZodEnum<{
1358
+ "changed-path": "changed-path";
1359
+ check: "check";
1360
+ "manual-review": "manual-review";
1361
+ screenshot: "screenshot";
1362
+ }>>;
1363
+ }, z.core.$strict>>;
1364
+ max_parallel: z.ZodOptional<z.ZodNumber>;
1365
+ }, z.core.$strict>;
1366
+ readonly get_sweep: z.ZodObject<{
1367
+ sweep: z.ZodInt;
1368
+ }, z.core.$strict>;
1369
+ readonly propose_sweep_cancel: z.ZodObject<{
1370
+ sweep: z.ZodInt;
1371
+ }, z.core.$strict>;
1312
1372
  readonly propose_next: z.ZodObject<{
1313
1373
  task: z.ZodString;
1314
1374
  }, z.core.$strict>;
@@ -1629,6 +1689,13 @@ export declare const LEAD_TOOL_OUTPUTS: {
1629
1689
  repo: z.ZodString;
1630
1690
  }, z.core.$loose>>;
1631
1691
  }, z.core.$loose>;
1692
+ readonly find_tools: z.ZodObject<{
1693
+ tools: z.ZodArray<z.ZodObject<{
1694
+ name: z.ZodString;
1695
+ summary: z.ZodString;
1696
+ }, z.core.$loose>>;
1697
+ next: z.ZodString;
1698
+ }, z.core.$loose>;
1632
1699
  readonly get_project_tools: z.ZodObject<{
1633
1700
  rule: z.ZodString;
1634
1701
  tools: z.ZodArray<z.ZodObject<{
@@ -1860,6 +1927,31 @@ export declare const LEAD_TOOL_OUTPUTS: {
1860
1927
  kind: z.ZodLiteral<"task">;
1861
1928
  awaiting: z.ZodString;
1862
1929
  }, z.core.$loose>;
1930
+ readonly propose_sweep: z.ZodObject<{
1931
+ proposal: z.ZodNumber;
1932
+ label: z.ZodString;
1933
+ awaiting: z.ZodString;
1934
+ executed: z.ZodLiteral<false>;
1935
+ }, z.core.$loose>;
1936
+ readonly get_sweep: z.ZodObject<{
1937
+ sweep: z.ZodNumber;
1938
+ title: z.ZodString;
1939
+ line: z.ZodString;
1940
+ table: z.ZodString;
1941
+ maxParallel: z.ZodNumber;
1942
+ items: z.ZodArray<z.ZodObject<{
1943
+ item: z.ZodNumber;
1944
+ label: z.ZodString;
1945
+ task: z.ZodString;
1946
+ state: z.ZodString;
1947
+ }, z.core.$loose>>;
1948
+ }, z.core.$loose>;
1949
+ readonly propose_sweep_cancel: z.ZodObject<{
1950
+ proposal: z.ZodNumber;
1951
+ label: z.ZodString;
1952
+ awaiting: z.ZodString;
1953
+ executed: z.ZodLiteral<false>;
1954
+ }, z.core.$loose>;
1863
1955
  readonly propose_next: z.ZodObject<{
1864
1956
  proposal: z.ZodNumber;
1865
1957
  kind: z.ZodLiteral<"next">;
@@ -80,6 +80,7 @@ export const LEAD_TOOL_INPUTS = {
80
80
  }),
81
81
  recap: z.strictObject({ since: text("recapSince").optional() }),
82
82
  list_repos: z.strictObject({}),
83
+ find_tools: z.strictObject({ query: z.string().min(1).max(200).describe("What you want to do, in a few words (\"make a flow\", \"add a subagent\", \"hold a task\").") }),
83
84
  get_project_tools: z.strictObject({ repo: repoId }),
84
85
  get_flows: z.strictObject({ repo: repoId.optional(), flow: id.optional(), card: id.optional() }),
85
86
  // The flow contract's own schema (src/contracts/flow-propose.ts), never a second one here.
@@ -126,6 +127,14 @@ export const LEAD_TOOL_INPUTS = {
126
127
  not: scopeText.nullable().optional(), touches: touches.optional(), acceptance,
127
128
  planning: z.enum(["auto", "required", "skip"]).optional(), report: z.boolean().optional(), checks: text("checksWords").optional(),
128
129
  }),
130
+ // Lead fan-out (docs/plans/lead-fan-out.md): 2 to 20 independent items under one shared brief and one success test.
131
+ propose_sweep: z.strictObject({
132
+ repo: repoId, title: text("taskTitle"), brief: scopeText,
133
+ items: z.array(z.strictObject({ title: text("taskTitle"), item: scopeText })).min(2).max(20),
134
+ acceptance, max_parallel: z.number().int().min(1).max(8).optional(),
135
+ }),
136
+ get_sweep: z.strictObject({ sweep: id }),
137
+ propose_sweep_cancel: z.strictObject({ sweep: id }),
129
138
  propose_next: z.strictObject({ task: taskRef }),
130
139
  propose_reserve: z.strictObject({ task: taskRef, worker: text("workerName").nullable() }),
131
140
  propose_hold: z.strictObject({ task: taskRef, reason: text("proposalReason") }),
@@ -209,6 +218,7 @@ export const LEAD_TOOL_OUTPUTS = {
209
218
  propose_review: proposed("review", { operation: z.enum(["note", "revise"]) }),
210
219
  recap: recapOutput,
211
220
  list_repos: z.looseObject({ repos: rows({ repo: str }) }),
221
+ find_tools: z.looseObject({ tools: rows({ name: str, summary: str }), next: str }),
212
222
  get_project_tools: z.looseObject({ rule: str, tools: rows({ name: str }), connectBySigningIn: list, commonTools: list, foundOnThisComputer: list, notice: str }),
213
223
  get_flows: z.union([
214
224
  z.looseObject({ flow: int, name: str, steps: rows({ id: str, title: str, kind: str }), cards: rows({ card: int, title: str }), scripts: list, triggers: list, rule: str }),
@@ -247,6 +257,9 @@ export const LEAD_TOOL_OUTPUTS = {
247
257
  get_decision: decisionOutput,
248
258
  queue: z.looseObject({ repo: str, queueRevision: int, ...queueColumnsOutput }),
249
259
  propose_task: proposed("task", { repo: str, deliverable: z.enum(["branch", "report"]), planning: str }),
260
+ propose_sweep: cardDrafted,
261
+ get_sweep: z.looseObject({ sweep: int, title: str, line: str, table: str, maxParallel: int, items: z.array(z.looseObject({ item: int, label: str, task: str, state: str })) }),
262
+ propose_sweep_cancel: cardDrafted,
250
263
  propose_next: proposed("next", { task: str }),
251
264
  propose_reserve: proposed("reserve", { task: str, worker: nullable(str) }),
252
265
  propose_hold: proposed("hold", { task: str }),
@@ -8,21 +8,31 @@
8
8
  * credential would land, and a refusal is shown, logged and sent on.
9
9
  */
10
10
  import { z } from "zod";
11
- export declare const PROVIDER_ID_VALUES: readonly ["claude", "codex", "openrouter", "gemini"];
11
+ export declare const PROVIDER_ID_VALUES: readonly ["claude", "codex", "openrouter", "gemini", "opencode", "cursor", "cline", "qwen", "goose"];
12
12
  export declare const providerIdSchema: z.ZodEnum<{
13
13
  claude: "claude";
14
+ cline: "cline";
14
15
  codex: "codex";
16
+ cursor: "cursor";
15
17
  gemini: "gemini";
18
+ goose: "goose";
19
+ opencode: "opencode";
16
20
  openrouter: "openrouter";
21
+ qwen: "qwen";
17
22
  }>;
18
23
  export declare const MODEL_ID: RegExp;
19
24
  export declare const modelIdSchema: z.ZodString;
20
25
  export declare const agentSpecSchema: z.ZodObject<{
21
26
  provider: z.ZodEnum<{
22
27
  claude: "claude";
28
+ cline: "cline";
23
29
  codex: "codex";
30
+ cursor: "cursor";
24
31
  gemini: "gemini";
32
+ goose: "goose";
33
+ opencode: "opencode";
25
34
  openrouter: "openrouter";
35
+ qwen: "qwen";
26
36
  }>;
27
37
  model: z.ZodNullable<z.ZodString>;
28
38
  }, z.core.$strip>;
@@ -8,7 +8,7 @@
8
8
  * credential would land, and a refusal is shown, logged and sent on.
9
9
  */
10
10
  import { z } from "zod";
11
- export const PROVIDER_ID_VALUES = ["claude", "codex", "openrouter", "gemini"];
11
+ export const PROVIDER_ID_VALUES = ["claude", "codex", "openrouter", "gemini", "opencode", "cursor", "cline", "qwen", "goose"];
12
12
  export const providerIdSchema = z.enum(PROVIDER_ID_VALUES);
13
13
  export const MODEL_ID = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/;
14
14
  export const modelIdSchema = z.string().regex(MODEL_ID);