@wardby/cli 0.6.0 → 0.8.0

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 (740) hide show
  1. package/.env.example +5 -5
  2. package/README.md +6 -1
  3. package/deploy/local/docker-compose.quickstart-coding.yml +19 -0
  4. package/dist/claude-coding-worker/driver.d.ts +33 -3
  5. package/dist/claude-coding-worker/driver.js +151 -21
  6. package/dist/claude-coding-worker/main.js +38 -6
  7. package/dist/claude-coding-worker/sdk.js +29 -2
  8. package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
  9. package/dist/claude-coding-worker/tool-socket.js +111 -0
  10. package/dist/claude-coding-worker/transcript.d.ts +18 -0
  11. package/dist/claude-coding-worker/transcript.js +77 -0
  12. package/dist/claude-plugin/command.d.ts +61 -0
  13. package/dist/claude-plugin/command.js +376 -0
  14. package/dist/cli-help.d.ts +1 -1
  15. package/dist/cli-help.js +3 -1
  16. package/dist/cli.js +71 -13
  17. package/dist/coding/code-host.d.ts +16 -0
  18. package/dist/coding/code-host.js +60 -0
  19. package/dist/coding/continuation-wording.d.ts +35 -0
  20. package/dist/coding/continuation-wording.js +73 -0
  21. package/dist/coding/linked-issue-note.d.ts +23 -0
  22. package/dist/coding/linked-issue-note.js +47 -0
  23. package/dist/coding/mcp-token.d.ts +12 -0
  24. package/dist/coding/mcp-token.js +26 -0
  25. package/dist/coding/merge-wording.d.ts +28 -0
  26. package/dist/coding/merge-wording.js +78 -0
  27. package/dist/coding/pr-description-note.d.ts +9 -0
  28. package/dist/coding/pr-description-note.js +32 -0
  29. package/dist/coding/profile.d.ts +46 -126
  30. package/dist/coding/profile.js +45 -4
  31. package/dist/coding/protected-path-wording.d.ts +8 -0
  32. package/dist/coding/protected-path-wording.js +1 -1
  33. package/dist/coding/protocol.d.ts +264 -346
  34. package/dist/coding/protocol.js +237 -12
  35. package/dist/coding/redact.d.ts +3 -0
  36. package/dist/coding/redact.js +17 -0
  37. package/dist/coding/registry/allowlist.d.ts +12 -0
  38. package/dist/coding/registry/allowlist.js +14 -1
  39. package/dist/coding/registry/audit-mode.d.ts +153 -0
  40. package/dist/coding/registry/audit-mode.js +304 -0
  41. package/dist/coding/registry/lockfile-shared.d.ts +36 -0
  42. package/dist/coding/registry/lockfile-shared.js +128 -0
  43. package/dist/coding/registry/lockfiles.js +1 -1
  44. package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
  45. package/dist/coding/registry/npm-lockfile-formats.js +41 -0
  46. package/dist/coding/registry/npm-lockfile.d.ts +8 -4
  47. package/dist/coding/registry/npm-lockfile.js +4 -6
  48. package/dist/coding/registry/npm.js +78 -8
  49. package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
  50. package/dist/coding/registry/pnpm-lockfile.js +189 -0
  51. package/dist/coding/registry/pypi-plan.d.ts +50 -0
  52. package/dist/coding/registry/pypi-plan.js +406 -0
  53. package/dist/coding/registry/pypi-requirements.d.ts +58 -0
  54. package/dist/coding/registry/pypi-requirements.js +155 -0
  55. package/dist/coding/registry/pypi.d.ts +3 -27
  56. package/dist/coding/registry/pypi.js +40 -154
  57. package/dist/coding/registry/refusal-hints.d.ts +20 -0
  58. package/dist/coding/registry/refusal-hints.js +61 -0
  59. package/dist/coding/registry/refusal-wording.d.ts +11 -0
  60. package/dist/coding/registry/refusal-wording.js +56 -0
  61. package/dist/coding/registry/report.d.ts +70 -8
  62. package/dist/coding/registry/report.js +112 -5
  63. package/dist/coding/registry/types.d.ts +58 -8
  64. package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
  65. package/dist/coding/registry/yarn-lockfile.js +367 -0
  66. package/dist/coding/services/catalog.d.ts +37 -351
  67. package/dist/coding/transcript/claude-code.d.ts +13 -0
  68. package/dist/coding/transcript/claude-code.js +273 -0
  69. package/dist/coding/transcript/download-protocol.d.ts +30 -0
  70. package/dist/coding/transcript/download-protocol.js +18 -0
  71. package/dist/coding/transcript/format.d.ts +20 -0
  72. package/dist/coding/transcript/format.js +32 -0
  73. package/dist/coding/transcript/recorder.d.ts +52 -0
  74. package/dist/coding/transcript/recorder.js +225 -0
  75. package/dist/coding/transcript/resume/checkout.d.ts +31 -0
  76. package/dist/coding/transcript/resume/checkout.js +203 -0
  77. package/dist/coding/transcript/resume/command.d.ts +17 -0
  78. package/dist/coding/transcript/resume/command.js +176 -0
  79. package/dist/coding/transcript/resume/download.d.ts +20 -0
  80. package/dist/coding/transcript/resume/download.js +153 -0
  81. package/dist/coding/transcript/resume/launch.d.ts +38 -0
  82. package/dist/coding/transcript/resume/launch.js +128 -0
  83. package/dist/coding/transcript/resume/session-file.d.ts +13 -0
  84. package/dist/coding/transcript/resume/session-file.js +79 -0
  85. package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
  86. package/dist/coding/transcript/resume/stand-in.js +49 -0
  87. package/dist/coding-worker/artifact.d.ts +8 -3
  88. package/dist/coding-worker/artifact.js +3 -1
  89. package/dist/coding-worker/debug-trace.d.ts +9 -6
  90. package/dist/coding-worker/debug-trace.js +16 -19
  91. package/dist/coding-worker/dependency-cache.d.mts +229 -0
  92. package/dist/coding-worker/dependency-cache.mjs +2123 -0
  93. package/dist/coding-worker/driver.d.ts +4 -3
  94. package/dist/coding-worker/driver.js +124 -39
  95. package/dist/coding-worker/errors.d.ts +1 -0
  96. package/dist/coding-worker/errors.js +32 -0
  97. package/dist/coding-worker/main.js +5 -1
  98. package/dist/coding-worker/mcp-config.d.ts +27 -0
  99. package/dist/coding-worker/mcp-config.js +32 -0
  100. package/dist/coding-worker/sdk.d.ts +36 -0
  101. package/dist/coding-worker/sdk.js +28 -1
  102. package/dist/coding-worker/task-note.d.ts +11 -0
  103. package/dist/coding-worker/task-note.js +13 -0
  104. package/dist/coding-worker/types.d.ts +15 -0
  105. package/dist/config/dependency-cache.d.ts +23 -0
  106. package/dist/config/dependency-cache.js +32 -0
  107. package/dist/config/mcp-call-limit.d.ts +8 -0
  108. package/dist/config/mcp-call-limit.js +18 -0
  109. package/dist/config/mcp-servers.d.ts +8 -0
  110. package/dist/config/mcp-servers.js +12 -0
  111. package/dist/config/providers.d.ts +12 -3
  112. package/dist/config/providers.js +55 -5
  113. package/dist/config/test-simulators.d.ts +92 -0
  114. package/dist/config/test-simulators.js +333 -0
  115. package/dist/config/tool-timeout.d.ts +1 -0
  116. package/dist/config/tool-timeout.js +18 -0
  117. package/dist/core/async-context.d.ts +2 -0
  118. package/dist/core/async-context.js +12 -0
  119. package/dist/core/budget-events.d.ts +108 -0
  120. package/dist/core/budget-events.js +346 -0
  121. package/dist/core/budget-groups.d.ts +50 -1
  122. package/dist/core/budget-groups.js +236 -27
  123. package/dist/core/budget-stopped-head.d.ts +46 -0
  124. package/dist/core/budget-stopped-head.js +81 -0
  125. package/dist/core/budget-topup.d.ts +51 -0
  126. package/dist/core/budget-topup.js +156 -0
  127. package/dist/core/budget-wording.d.ts +16 -2
  128. package/dist/core/budget-wording.js +40 -2
  129. package/dist/core/coding-mcp.d.ts +36 -0
  130. package/dist/core/coding-mcp.js +253 -0
  131. package/dist/core/coding-queue.d.ts +2 -1
  132. package/dist/core/coding-queue.js +7 -0
  133. package/dist/core/coding-repository.d.ts +46 -0
  134. package/dist/core/coding-repository.js +92 -0
  135. package/dist/core/cron.d.ts +19 -1
  136. package/dist/core/cron.js +17 -0
  137. package/dist/core/datastores.js +1 -1
  138. package/dist/core/deferred-coding.d.ts +14 -0
  139. package/dist/core/deferred-coding.js +62 -0
  140. package/dist/core/delegation-child.d.ts +25 -0
  141. package/dist/core/delegation-child.js +37 -0
  142. package/dist/core/delegation-slots.d.ts +27 -0
  143. package/dist/core/delegation-slots.js +44 -0
  144. package/dist/core/dispatch.d.ts +48 -2
  145. package/dist/core/dispatch.js +166 -66
  146. package/dist/core/engine-native.js +1 -1
  147. package/dist/core/error-code.d.ts +38 -0
  148. package/dist/core/error-code.js +169 -0
  149. package/dist/core/grants.d.ts +46 -8
  150. package/dist/core/grants.js +99 -8
  151. package/dist/core/host-events.d.ts +18 -2
  152. package/dist/core/host-events.js +291 -27
  153. package/dist/core/host-status.d.ts +85 -3
  154. package/dist/core/host-status.js +300 -22
  155. package/dist/core/issue-bridge.d.ts +50 -6
  156. package/dist/core/issue-bridge.js +124 -33
  157. package/dist/core/issue-events.d.ts +1 -1
  158. package/dist/core/issue-events.js +4 -10
  159. package/dist/core/issue-status.d.ts +1 -1
  160. package/dist/core/issue-status.js +58 -29
  161. package/dist/core/logger.d.ts +5 -0
  162. package/dist/core/logger.js +14 -1
  163. package/dist/core/lost-run-children.d.ts +6 -0
  164. package/dist/core/lost-run-children.js +32 -0
  165. package/dist/core/mark-ready.d.ts +34 -0
  166. package/dist/core/mark-ready.js +152 -0
  167. package/dist/core/markdown-code.d.ts +8 -0
  168. package/dist/core/markdown-code.js +107 -0
  169. package/dist/core/mcp-client/client.d.ts +47 -0
  170. package/dist/core/mcp-client/client.js +141 -0
  171. package/dist/core/mcp-client/jsonrpc.d.ts +15 -0
  172. package/dist/core/mcp-client/jsonrpc.js +54 -0
  173. package/dist/core/mcp-client/results.d.ts +13 -0
  174. package/dist/core/mcp-client/results.js +42 -0
  175. package/dist/core/mcp-servers.d.ts +90 -0
  176. package/dist/core/mcp-servers.js +230 -0
  177. package/dist/core/mcp-tools.d.ts +108 -0
  178. package/dist/core/mcp-tools.js +287 -0
  179. package/dist/core/memory-tools.js +7 -0
  180. package/dist/core/merge-order-check.d.ts +2 -1
  181. package/dist/core/merge-order-check.js +44 -18
  182. package/dist/core/notification-dispatcher.js +2 -1
  183. package/dist/core/notification-templates.d.ts +1 -7
  184. package/dist/core/notification-templates.js +36 -2
  185. package/dist/core/pull-request-state-sync.js +2 -2
  186. package/dist/core/reconciler.d.ts +4 -3
  187. package/dist/core/reconciler.js +8 -1
  188. package/dist/core/related-pull-requests.d.ts +11 -3
  189. package/dist/core/related-pull-requests.js +49 -20
  190. package/dist/core/reply-parts.d.ts +21 -0
  191. package/dist/core/reply-parts.js +73 -0
  192. package/dist/core/review-fix.d.ts +1 -1
  193. package/dist/core/review-fix.js +4 -3
  194. package/dist/core/review-host-checks.d.ts +1 -1
  195. package/dist/core/review-host-tools.d.ts +3 -0
  196. package/dist/core/review-host-tools.js +102 -14
  197. package/dist/core/review-reads.d.ts +55 -0
  198. package/dist/core/review-reads.js +233 -0
  199. package/dist/core/run-status.d.ts +12 -0
  200. package/dist/core/run-status.js +12 -0
  201. package/dist/core/runner.d.ts +145 -49
  202. package/dist/core/runner.js +719 -216
  203. package/dist/core/schedule-start.d.ts +12 -0
  204. package/dist/core/schedule-start.js +14 -0
  205. package/dist/core/secret-broker-config.d.ts +12 -74
  206. package/dist/core/secret-broker-config.js +1 -1
  207. package/dist/core/secret-guard.d.ts +49 -0
  208. package/dist/core/secret-guard.js +119 -0
  209. package/dist/core/secret-guarded-stores.d.ts +12 -0
  210. package/dist/core/secret-guarded-stores.js +41 -0
  211. package/dist/core/secret-spans.d.ts +50 -0
  212. package/dist/core/secret-spans.js +94 -0
  213. package/dist/core/secrets.d.ts +11 -1
  214. package/dist/core/secrets.js +27 -1
  215. package/dist/core/serializable-retry.d.ts +18 -0
  216. package/dist/core/serializable-retry.js +43 -0
  217. package/dist/core/stop-run.d.ts +46 -0
  218. package/dist/core/stop-run.js +61 -0
  219. package/dist/core/tool-admin.d.ts +5 -1
  220. package/dist/core/tool-admin.js +7 -2
  221. package/dist/core/tool-names.d.ts +13 -0
  222. package/dist/core/tool-names.js +20 -0
  223. package/dist/core/webhooks.d.ts +4 -0
  224. package/dist/core/webhooks.js +68 -49
  225. package/dist/core/workflow-events.d.ts +14 -2
  226. package/dist/core/workflow-events.js +4 -0
  227. package/dist/core/workflow-run-events.d.ts +5 -3
  228. package/dist/core/workflow-run-events.js +45 -9
  229. package/dist/core/zod-json-schema.d.ts +4 -0
  230. package/dist/core/zod-json-schema.js +39 -0
  231. package/dist/core/zod3-window.d.ts +35 -0
  232. package/dist/core/zod3-window.js +124 -0
  233. package/dist/generated/prisma/browser.d.ts +65 -3
  234. package/dist/generated/prisma/client.d.ts +65 -3
  235. package/dist/generated/prisma/commonInputTypes.d.ts +266 -106
  236. package/dist/generated/prisma/enums.d.ts +10 -0
  237. package/dist/generated/prisma/enums.js +8 -0
  238. package/dist/generated/prisma/internal/class.d.ts +110 -0
  239. package/dist/generated/prisma/internal/class.js +4 -4
  240. package/dist/generated/prisma/internal/prismaNamespace.d.ts +957 -9
  241. package/dist/generated/prisma/internal/prismaNamespace.js +166 -2
  242. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +174 -0
  243. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +166 -2
  244. package/dist/generated/prisma/models/Agent.d.ts +377 -8
  245. package/dist/generated/prisma/models/AgentMcpServer.d.ts +1412 -0
  246. package/dist/generated/prisma/models/AgentMcpServer.js +1 -0
  247. package/dist/generated/prisma/models/AgentRepository.d.ts +81 -1
  248. package/dist/generated/prisma/models/AuthUser.d.ts +1 -1
  249. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +228 -7
  250. package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
  251. package/dist/generated/prisma/models/CodingProxySession.d.ts +232 -2
  252. package/dist/generated/prisma/models/CodingRun.d.ts +1712 -1
  253. package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
  254. package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
  255. package/dist/generated/prisma/models/HostProvider.d.ts +2176 -0
  256. package/dist/generated/prisma/models/HostProvider.js +1 -0
  257. package/dist/generated/prisma/models/HostProviderCredential.d.ts +1285 -0
  258. package/dist/generated/prisma/models/HostProviderCredential.js +1 -0
  259. package/dist/generated/prisma/models/HostProviderOperation.d.ts +1470 -0
  260. package/dist/generated/prisma/models/HostProviderOperation.js +1 -0
  261. package/dist/generated/prisma/models/HostProviderTrustedAccount.d.ts +1145 -0
  262. package/dist/generated/prisma/models/HostProviderTrustedAccount.js +1 -0
  263. package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
  264. package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
  265. package/dist/generated/prisma/models/McpServer.d.ts +1500 -0
  266. package/dist/generated/prisma/models/McpServer.js +1 -0
  267. package/dist/generated/prisma/models/NativeGatewayCall.d.ts +77 -1
  268. package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
  269. package/dist/generated/prisma/models/Principal.d.ts +167 -0
  270. package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
  271. package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
  272. package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
  273. package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
  274. package/dist/generated/prisma/models/ResourceGrant.d.ts +1 -1
  275. package/dist/generated/prisma/models/Run.d.ts +738 -2
  276. package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
  277. package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
  278. package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
  279. package/dist/generated/prisma/models/RunTranscript.js +1 -0
  280. package/dist/generated/prisma/models/Secret.d.ts +387 -0
  281. package/dist/generated/prisma/models/Tool.d.ts +223 -1
  282. package/dist/generated/prisma/models.d.ts +10 -0
  283. package/dist/help/search.js +12 -3
  284. package/dist/help-index.json +2033 -110
  285. package/dist/import/create.js +48 -4
  286. package/dist/import/neutral-schema.d.ts +51 -281
  287. package/dist/import/neutral-schema.js +7 -4
  288. package/dist/knowledge/check.d.ts +1 -1
  289. package/dist/knowledge/cli.d.ts +11 -1
  290. package/dist/knowledge/cli.js +37 -4
  291. package/dist/knowledge/concept.d.ts +3 -19
  292. package/dist/knowledge/location.d.ts +31 -0
  293. package/dist/knowledge/location.js +78 -0
  294. package/dist/mcp/auth/access.d.ts +10 -2
  295. package/dist/mcp/auth/access.js +15 -1
  296. package/dist/mcp/auth/grants-cli.d.ts +6 -4
  297. package/dist/mcp/auth/grants-cli.js +42 -3
  298. package/dist/mcp/auth/ownership.d.ts +7 -7
  299. package/dist/mcp/auth/resource-server.d.ts +3 -1
  300. package/dist/mcp/auth/resource-server.js +17 -2
  301. package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
  302. package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
  303. package/dist/mcp/context.d.ts +3 -0
  304. package/dist/mcp/host-events/github-ingress.d.ts +2 -0
  305. package/dist/mcp/host-events/github-ingress.js +2 -1
  306. package/dist/mcp/index.d.ts +6 -0
  307. package/dist/mcp/index.js +69 -10
  308. package/dist/mcp/server.d.ts +13 -0
  309. package/dist/mcp/server.js +33 -14
  310. package/dist/mcp/tools/agents.d.ts +4 -0
  311. package/dist/mcp/tools/agents.js +295 -28
  312. package/dist/mcp/tools/datastore.js +17 -8
  313. package/dist/mcp/tools/grants.js +73 -29
  314. package/dist/mcp/tools/host-providers.d.ts +2 -0
  315. package/dist/mcp/tools/host-providers.js +215 -0
  316. package/dist/mcp/tools/mcp-servers.d.ts +26 -0
  317. package/dist/mcp/tools/mcp-servers.js +481 -0
  318. package/dist/mcp/tools/memory.js +11 -1
  319. package/dist/mcp/tools/notification-channels.js +2 -2
  320. package/dist/mcp/tools/packages.d.ts +2 -0
  321. package/dist/mcp/tools/packages.js +195 -0
  322. package/dist/mcp/tools/repositories.js +65 -12
  323. package/dist/mcp/tools/run-access.d.ts +16 -0
  324. package/dist/mcp/tools/run-access.js +25 -0
  325. package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
  326. package/dist/mcp/tools/run-transcript-download.js +129 -0
  327. package/dist/mcp/tools/run-transcript.d.ts +19 -0
  328. package/dist/mcp/tools/run-transcript.js +70 -0
  329. package/dist/mcp/tools/runs.js +209 -27
  330. package/dist/mcp/tools/scheduling.js +3 -1
  331. package/dist/mcp/tools/secret-elicitation-form.js +5 -0
  332. package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
  333. package/dist/mcp/tools/secret-elicitation-server.js +10 -61
  334. package/dist/mcp/tools/secret-elicitation.d.ts +2 -0
  335. package/dist/mcp/tools/secret-elicitation.js +25 -2
  336. package/dist/mcp/tools/secrets.js +40 -6
  337. package/dist/mcp/tools/stop-run.d.ts +2 -0
  338. package/dist/mcp/tools/stop-run.js +82 -0
  339. package/dist/mcp/tools/subagents.js +2 -2
  340. package/dist/mcp/tools/tools.d.ts +7 -5
  341. package/dist/mcp/tools/tools.js +64 -16
  342. package/dist/mcp/tools/trigger.js +28 -6
  343. package/dist/mcp/transport/http-limits.d.ts +2 -0
  344. package/dist/mcp/transport/http-limits.js +6 -2
  345. package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
  346. package/dist/mcp/transport/stdio-link-host.js +67 -0
  347. package/dist/mcp/transport/streamable-http.d.ts +13 -0
  348. package/dist/mcp/transport/streamable-http.js +41 -1
  349. package/dist/mcp/webhooks/ingress.js +10 -0
  350. package/dist/native-worker/docker-launcher.d.ts +38 -2
  351. package/dist/native-worker/docker-launcher.js +65 -5
  352. package/dist/native-worker/gateway-server.d.ts +55 -3
  353. package/dist/native-worker/gateway-server.js +152 -34
  354. package/dist/native-worker/gateway.d.ts +29 -1
  355. package/dist/native-worker/gateway.js +74 -4
  356. package/dist/native-worker/http-server.d.ts +7 -1
  357. package/dist/native-worker/http-server.js +62 -7
  358. package/dist/native-worker/http-transport.js +1 -1
  359. package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
  360. package/dist/native-worker/kubernetes-launcher.js +43 -3
  361. package/dist/native-worker/launch.d.ts +18 -1
  362. package/dist/native-worker/launch.js +6 -1
  363. package/dist/native-worker/ledger.d.ts +24 -4
  364. package/dist/native-worker/ledger.js +62 -8
  365. package/dist/native-worker/loopback.js +3 -8
  366. package/dist/native-worker/main.d.ts +2 -1
  367. package/dist/native-worker/main.js +14 -3
  368. package/dist/native-worker/protocol.d.ts +130 -577
  369. package/dist/native-worker/protocol.js +51 -2
  370. package/dist/native-worker/sandbox-executor.d.ts +17 -2
  371. package/dist/native-worker/sandbox-executor.js +78 -4
  372. package/dist/native-worker/stderr-redaction.d.ts +77 -0
  373. package/dist/native-worker/stderr-redaction.js +237 -0
  374. package/dist/native-worker/stdio.d.ts +1 -1
  375. package/dist/native-worker/stdio.js +6 -5
  376. package/dist/native-worker/warm-pool.d.ts +2 -2
  377. package/dist/native-worker/warm-pool.js +4 -4
  378. package/dist/native-worker/worker.js +28 -2
  379. package/dist/observability/metrics.js +6 -1
  380. package/dist/providers/auth/self-hosted.d.ts +1 -1
  381. package/dist/providers/coding-proxy/capability-hash.d.ts +2 -0
  382. package/dist/providers/coding-proxy/capability-hash.js +5 -0
  383. package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
  384. package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
  385. package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
  386. package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
  387. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
  388. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
  389. package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
  390. package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
  391. package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
  392. package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
  393. package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
  394. package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
  395. package/dist/providers/coding-proxy/hold.d.ts +32 -0
  396. package/dist/providers/coding-proxy/hold.js +86 -0
  397. package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
  398. package/dist/providers/coding-proxy/interrupted.js +104 -0
  399. package/dist/providers/coding-proxy/mcp-route.d.ts +34 -0
  400. package/dist/providers/coding-proxy/mcp-route.js +166 -0
  401. package/dist/providers/coding-proxy/memory-ledger.d.ts +17 -2
  402. package/dist/providers/coding-proxy/memory-ledger.js +99 -8
  403. package/dist/providers/coding-proxy/metering.d.ts +16 -0
  404. package/dist/providers/coding-proxy/metering.js +27 -4
  405. package/dist/providers/coding-proxy/prisma-ledger.d.ts +16 -2
  406. package/dist/providers/coding-proxy/prisma-ledger.js +209 -69
  407. package/dist/providers/coding-proxy/proxy.d.ts +21 -2
  408. package/dist/providers/coding-proxy/proxy.js +300 -48
  409. package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
  410. package/dist/providers/coding-proxy/registry/audit.js +94 -17
  411. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
  412. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
  413. package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
  414. package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
  415. package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
  416. package/dist/providers/coding-proxy/registry/plan.js +201 -48
  417. package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
  418. package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
  419. package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
  420. package/dist/providers/coding-proxy/registry/service.js +579 -112
  421. package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
  422. package/dist/providers/coding-proxy/registry/store.js +54 -1
  423. package/dist/providers/coding-proxy/runtime.d.ts +10 -0
  424. package/dist/providers/coding-proxy/runtime.js +109 -16
  425. package/dist/providers/coding-proxy/server.d.ts +9 -1
  426. package/dist/providers/coding-proxy/server.js +55 -1
  427. package/dist/providers/coding-proxy/types.d.ts +78 -1
  428. package/dist/providers/datastore/types.d.ts +5 -0
  429. package/dist/providers/engine/types.d.ts +17 -2
  430. package/dist/providers/engine/types.js +17 -0
  431. package/dist/providers/executor/composition.d.ts +10 -3
  432. package/dist/providers/executor/composition.js +52 -7
  433. package/dist/providers/executor/container.d.ts +394 -9
  434. package/dist/providers/executor/container.js +1210 -96
  435. package/dist/providers/executor/dbos-status.d.ts +31 -0
  436. package/dist/providers/executor/dbos-status.js +64 -0
  437. package/dist/providers/executor/dbos.d.ts +50 -1
  438. package/dist/providers/executor/dbos.js +207 -20
  439. package/dist/providers/executor/deferred.d.ts +12 -24
  440. package/dist/providers/executor/deferred.js +10 -29
  441. package/dist/providers/executor/in-process.d.ts +9 -1
  442. package/dist/providers/executor/in-process.js +14 -4
  443. package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
  444. package/dist/providers/executor/linked-issue-reader.js +30 -0
  445. package/dist/providers/executor/routing.d.ts +2 -0
  446. package/dist/providers/executor/routing.js +4 -0
  447. package/dist/providers/executor/types.d.ts +13 -0
  448. package/dist/providers/host-tools/invoke.d.ts +37 -0
  449. package/dist/providers/host-tools/invoke.js +117 -0
  450. package/dist/providers/host-tools/operations.d.ts +65 -0
  451. package/dist/providers/host-tools/operations.js +149 -0
  452. package/dist/providers/host-tools/registry.d.ts +79 -0
  453. package/dist/providers/host-tools/registry.js +362 -0
  454. package/dist/providers/host-tools/request-guard.d.ts +17 -0
  455. package/dist/providers/host-tools/request-guard.js +99 -0
  456. package/dist/providers/host-tools/self-test.d.ts +64 -0
  457. package/dist/providers/host-tools/self-test.js +142 -0
  458. package/dist/providers/index.d.ts +2 -1
  459. package/dist/providers/issue-tracker/types.d.ts +17 -0
  460. package/dist/providers/issue-tracker/types.js +39 -1
  461. package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
  462. package/dist/providers/jobs/claude-tool-setup.js +5 -2
  463. package/dist/providers/jobs/docker-isolation.d.ts +10 -2
  464. package/dist/providers/jobs/docker-isolation.js +47 -8
  465. package/dist/providers/jobs/docker.d.ts +9 -0
  466. package/dist/providers/jobs/docker.js +60 -11
  467. package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
  468. package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
  469. package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
  470. package/dist/providers/jobs/kubernetes-api.js +10 -0
  471. package/dist/providers/jobs/kubernetes-client.js +10 -1
  472. package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
  473. package/dist/providers/jobs/kubernetes-isolation.js +32 -3
  474. package/dist/providers/jobs/kubernetes.d.ts +11 -1
  475. package/dist/providers/jobs/kubernetes.js +111 -17
  476. package/dist/providers/jobs/types.d.ts +39 -0
  477. package/dist/providers/jobs/types.js +13 -1
  478. package/dist/providers/llm/anthropic.js +5 -1
  479. package/dist/providers/llm/bedrock.d.ts +0 -12
  480. package/dist/providers/llm/bedrock.js +4 -0
  481. package/dist/providers/llm/claude-messages.d.ts +3 -1
  482. package/dist/providers/llm/claude-messages.js +4 -1
  483. package/dist/providers/llm/claude-provider.d.ts +2 -2
  484. package/dist/providers/llm/claude-provider.js +2 -2
  485. package/dist/providers/llm/openai.d.ts +2 -2
  486. package/dist/providers/llm/openai.js +6 -2
  487. package/dist/providers/llm/routing.d.ts +2 -2
  488. package/dist/providers/llm/routing.js +2 -2
  489. package/dist/providers/llm/types.d.ts +12 -2
  490. package/dist/providers/review-host/github-events.d.ts +9 -1
  491. package/dist/providers/review-host/github-events.js +34 -12
  492. package/dist/providers/review-host/github.d.ts +29 -2
  493. package/dist/providers/review-host/github.js +224 -29
  494. package/dist/providers/review-host/local.d.ts +8 -4
  495. package/dist/providers/review-host/local.js +49 -31
  496. package/dist/providers/review-host/patch-pages.d.ts +41 -0
  497. package/dist/providers/review-host/patch-pages.js +176 -0
  498. package/dist/providers/review-host/review-format.d.ts +19 -1
  499. package/dist/providers/review-host/review-format.js +38 -7
  500. package/dist/providers/review-host/types.d.ts +140 -6
  501. package/dist/providers/review-host/types.js +9 -1
  502. package/dist/providers/storage/gcs.d.ts +63 -0
  503. package/dist/providers/storage/gcs.js +69 -0
  504. package/dist/providers/storage/index.d.ts +15 -0
  505. package/dist/providers/storage/index.js +14 -0
  506. package/dist/providers/storage/local.d.ts +24 -0
  507. package/dist/providers/storage/local.js +92 -0
  508. package/dist/providers/storage/meter.d.ts +14 -0
  509. package/dist/providers/storage/meter.js +34 -0
  510. package/dist/providers/storage/s3.d.ts +41 -0
  511. package/dist/providers/storage/s3.js +107 -0
  512. package/dist/providers/storage/types.d.ts +37 -3
  513. package/dist/providers/storage/types.js +21 -4
  514. package/dist/providers/vcs/git.d.ts +39 -4
  515. package/dist/providers/vcs/git.js +339 -26
  516. package/dist/providers/vcs/github-remote.d.ts +26 -3
  517. package/dist/providers/vcs/github-remote.js +124 -14
  518. package/dist/providers/vcs/github.d.ts +183 -44
  519. package/dist/providers/vcs/github.js +455 -56
  520. package/dist/providers/vcs/index.d.ts +1 -1
  521. package/dist/providers/vcs/index.js +9 -2
  522. package/dist/providers/vcs/pr-description.d.ts +127 -0
  523. package/dist/providers/vcs/pr-description.js +270 -0
  524. package/dist/providers/vcs/remote.d.ts +37 -1
  525. package/dist/providers/vcs/remote.js +7 -1
  526. package/dist/providers/vcs/routing.d.ts +16 -8
  527. package/dist/providers/vcs/routing.js +27 -6
  528. package/dist/providers/vcs/types.d.ts +150 -5
  529. package/dist/quickstart/coding-seed.d.ts +14 -3
  530. package/dist/quickstart/coding-seed.js +213 -4
  531. package/dist/quickstart/index.d.ts +5 -0
  532. package/dist/quickstart/index.js +21 -0
  533. package/dist/quickstart/reviewer-prompt.d.ts +1 -1
  534. package/dist/quickstart/reviewer-prompt.js +6 -6
  535. package/dist/quickstart-images.json +1 -1
  536. package/dist/sandbox/eval-core.d.ts +12 -2
  537. package/dist/sandbox/eval-core.js +20 -4
  538. package/dist/sandbox/generated/zod.bundle.js +62 -1
  539. package/dist/sandbox/generated/zod3.bundle.js +5 -0
  540. package/dist/sandbox/host-functions.d.ts +5 -0
  541. package/dist/sandbox/host-functions.js +13 -13
  542. package/dist/sandbox/limits.d.ts +4 -1
  543. package/dist/sandbox/limits.js +4 -1
  544. package/dist/sandbox/run-in-sandbox.d.ts +6 -0
  545. package/dist/sandbox/run-in-sandbox.js +14 -2
  546. package/dist/sandbox/safe-fetch.d.ts +2 -0
  547. package/dist/sandbox/safe-fetch.js +1 -1
  548. package/dist/sandbox/secret-broker.d.ts +1 -0
  549. package/dist/sandbox/secret-broker.js +4 -5
  550. package/dist/sandbox/tool-capabilities.d.ts +10 -30
  551. package/dist/sandbox/tool-timeout.d.ts +32 -0
  552. package/dist/sandbox/tool-timeout.js +52 -0
  553. package/dist/sandbox/user-tool.d.ts +8 -1
  554. package/dist/sandbox/user-tool.js +9 -3
  555. package/dist/sandbox/zod-params.d.ts +37 -5
  556. package/dist/sandbox/zod-params.js +181 -26
  557. package/dist/serve.js +8 -1
  558. package/dist/viewer/api-schema.d.ts +349 -2627
  559. package/dist/viewer/api-schema.js +7 -0
  560. package/dist/viewer/build-schemas.js +6 -2
  561. package/dist/viewer/graph.js +2 -1
  562. package/dist/viewer/openapi.js +2 -4
  563. package/dist/wardby-bin.js +15 -0
  564. package/docs/README.md +11 -1
  565. package/docs/agent-recipes.md +95 -24
  566. package/docs/architecture-runtime.md +1 -1
  567. package/docs/claude-code-plugin.md +164 -0
  568. package/docs/code-review-agents.md +557 -41
  569. package/docs/coding-agent-setup.md +566 -8
  570. package/docs/coding-packages.md +1033 -90
  571. package/docs/coding-services.md +27 -12
  572. package/docs/coding-worker-byo-images.md +24 -2
  573. package/docs/coding-worker-isolation.md +183 -37
  574. package/docs/debugging-agent-runs.md +242 -0
  575. package/docs/getting-started-gke.md +129 -141
  576. package/docs/getting-started-identity-provider.md +53 -38
  577. package/docs/getting-started.md +17 -0
  578. package/docs/host-providers.md +294 -0
  579. package/docs/jira-agents.md +17 -8
  580. package/docs/knowledge/blob-not-found-semantics.md +41 -0
  581. package/docs/knowledge/bounded-file-descriptor.md +52 -0
  582. package/docs/knowledge/delegation-admission-slots.md +52 -0
  583. package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
  584. package/docs/knowledge/import-rename-target.md +52 -0
  585. package/docs/knowledge/index.md +57 -0
  586. package/docs/knowledge/log.md +9 -0
  587. package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
  588. package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
  589. package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
  590. package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
  591. package/docs/knowledge/overview-cli.md +74 -0
  592. package/docs/knowledge/overview-coding-proxy.md +72 -0
  593. package/docs/knowledge/overview-coding.md +72 -0
  594. package/docs/knowledge/overview-config.md +60 -0
  595. package/docs/knowledge/overview-core.md +72 -0
  596. package/docs/knowledge/overview-deploy.md +83 -0
  597. package/docs/knowledge/overview-mcp.md +61 -0
  598. package/docs/knowledge/overview-prisma.md +72 -0
  599. package/docs/knowledge/overview-providers.md +89 -0
  600. package/docs/knowledge/overview-sandbox.md +83 -0
  601. package/docs/knowledge/overview-surfaces.md +83 -0
  602. package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
  603. package/docs/knowledge/proxy-settlement-projections.md +41 -0
  604. package/docs/knowledge/run-pricing-first-writer.md +43 -0
  605. package/docs/knowledge/schedule-claim-transaction.md +41 -0
  606. package/docs/knowledge/secret-entry-replica-contract.md +52 -0
  607. package/docs/knowledge/terminal-run-first-writer.md +41 -0
  608. package/docs/knowledge/transactional-agent-authorization.md +52 -0
  609. package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
  610. package/docs/knowledge/warm-input-publication.md +30 -0
  611. package/docs/knowledge/workspace-staging-failure.md +54 -0
  612. package/docs/knowledge.md +54 -14
  613. package/docs/mcp-servers.md +254 -0
  614. package/docs/native-sandbox.md +143 -31
  615. package/docs/observability.md +4 -0
  616. package/docs/security-deployment.md +139 -29
  617. package/docs/slack-notifications.md +35 -19
  618. package/docs/tool-secrets.md +45 -10
  619. package/docs/viewer-api.md +6 -0
  620. package/docs/viewer-api.openapi.yml +1 -1
  621. package/help/admin-viewer.md +28 -2
  622. package/help/agent-recipes.md +33 -2
  623. package/help/architecture-agent.md +11 -6
  624. package/help/brokered-secrets.md +3 -0
  625. package/help/build-claude-code-image.md +1 -1
  626. package/help/build-worker-image.md +3 -1
  627. package/help/builder-agent.md +19 -6
  628. package/help/claude-code-run-pane.md +40 -0
  629. package/help/code-review-agents.md +177 -6
  630. package/help/coding-packages.md +156 -6
  631. package/help/cost-attribution.md +9 -5
  632. package/help/creating-agents.md +14 -1
  633. package/help/dependency-cache.md +143 -0
  634. package/help/deploy-gke.md +15 -8
  635. package/help/errors/budget-exhausted.md +187 -0
  636. package/help/errors/budget-group-exhausted.md +5 -1
  637. package/help/errors/coding-mcp-pins-unavailable.md +35 -0
  638. package/help/errors/coding-stream-quota-exceeded.md +33 -0
  639. package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
  640. package/help/errors/continuation-closed.md +9 -12
  641. package/help/errors/database-auth-invalid.md +1 -1
  642. package/help/errors/delegation-conflict.md +24 -0
  643. package/help/errors/file-list-truncated.md +45 -0
  644. package/help/errors/full-read-required.md +49 -0
  645. package/help/errors/github-account-not-allowed.md +4 -0
  646. package/help/errors/graph-incomplete.md +43 -0
  647. package/help/errors/graph-limit.md +43 -0
  648. package/help/errors/host-provider-error.md +40 -0
  649. package/help/errors/host-tool-failed.md +36 -0
  650. package/help/errors/mcp-call-limit.md +22 -0
  651. package/help/errors/mcp-call-timeout.md +22 -0
  652. package/help/errors/mcp-server-auth-failed.md +22 -0
  653. package/help/errors/mcp-server-credentials-unavailable.md +45 -0
  654. package/help/errors/mcp-server-error.md +28 -0
  655. package/help/errors/mcp-server-unreachable.md +22 -0
  656. package/help/errors/mcp-servers-off.md +21 -0
  657. package/help/errors/mcp-tool-not-allowed.md +26 -0
  658. package/help/errors/mcp-tool-removed.md +22 -0
  659. package/help/errors/mcp-unavailable.md +25 -0
  660. package/help/errors/merge-conflict.md +49 -0
  661. package/help/errors/native-sandbox-capacity.md +1 -1
  662. package/help/errors/native-sandbox-deadline-exceeded.md +1 -1
  663. package/help/errors/native-sandbox-docker-failed.md +1 -1
  664. package/help/errors/native-sandbox-gateway-error.md +20 -0
  665. package/help/errors/native-sandbox-gateway-unavailable.md +1 -1
  666. package/help/errors/native-sandbox-image-not-pinned.md +1 -1
  667. package/help/errors/native-sandbox-isolation-mismatch.md +1 -1
  668. package/help/errors/native-sandbox-launch-abandoned.md +21 -0
  669. package/help/errors/native-sandbox-network-unenforced.md +1 -1
  670. package/help/errors/native-sandbox-requires-catalog.md +1 -1
  671. package/help/errors/native-sandbox-unavailable.md +1 -1
  672. package/help/errors/native-sandbox-warm-delivery-failed.md +1 -1
  673. package/help/errors/native-sandbox-worker-exited.md +4 -3
  674. package/help/errors/native-sandbox-worker-lost.md +1 -1
  675. package/help/errors/native-sandbox-worker-unready.md +1 -1
  676. package/help/errors/package-not-allowed-pending.md +52 -0
  677. package/help/errors/package-not-allowed.md +51 -0
  678. package/help/errors/package-refusals.md +43 -0
  679. package/help/errors/patch-cursor-malformed.md +31 -0
  680. package/help/errors/repository-not-listed.md +36 -0
  681. package/help/errors/repository-required.md +36 -0
  682. package/help/errors/run-lost.md +39 -0
  683. package/help/errors/run-transcript-download.md +44 -0
  684. package/help/errors/secret-in-value.md +69 -0
  685. package/help/errors/target-merge.md +40 -0
  686. package/help/errors/tool-timeout.md +38 -0
  687. package/help/fix-merge-conflicts.md +73 -0
  688. package/help/github-app-setup.md +132 -0
  689. package/help/github.md +22 -0
  690. package/help/host-providers.md +40 -0
  691. package/help/identity-and-access.md +6 -1
  692. package/help/jira.md +23 -6
  693. package/help/knowledge.md +16 -7
  694. package/help/local-repositories.md +1 -1
  695. package/help/low-power-mode.md +7 -1
  696. package/help/mcp-servers.md +73 -0
  697. package/help/mcp.md +7 -2
  698. package/help/merge-order-check.md +5 -0
  699. package/help/native-capabilities.md +55 -1
  700. package/help/native-sandbox.md +16 -2
  701. package/help/operating-agents.md +21 -0
  702. package/help/package-audit-mode.md +91 -0
  703. package/help/related-pull-requests.md +17 -10
  704. package/help/repo-instructions-and-skills.md +3 -1
  705. package/help/resume-runs-locally.md +134 -0
  706. package/help/review-fix-rounds.md +33 -1
  707. package/help/sharing-agents.md +59 -0
  708. package/help/slack-notifications.md +19 -5
  709. package/help/status-comments.md +31 -0
  710. package/help/stop-run.md +58 -0
  711. package/help/troubleshooting/budgets.md +28 -0
  712. package/help/troubleshooting/coding-workers.md +86 -7
  713. package/help/troubleshooting/debugging-agent-runs.md +29 -0
  714. package/package.json +18 -10
  715. package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
  716. package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
  717. package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
  718. package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
  719. package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
  720. package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
  721. package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
  722. package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
  723. package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
  724. package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
  725. package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
  726. package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
  727. package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
  728. package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
  729. package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
  730. package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
  731. package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
  732. package/prisma/migrations/20261102000000_host_providers/migration.sql +56 -0
  733. package/prisma/migrations/20261104000000_coding_agent_repository_list/migration.sql +5 -0
  734. package/prisma/migrations/20261106000000_tool_timeout/migration.sql +4 -0
  735. package/prisma/migrations/20261107000000_mcp_servers/migration.sql +33 -0
  736. package/prisma/migrations/20261108000000_coding_mcp/migration.sql +5 -0
  737. package/prisma/migrations/20261109000000_task_run_index/migration.sql +3 -0
  738. package/prisma/schema.prisma +468 -109
  739. package/scripts/git-askpass.sh +1 -1
  740. package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
@@ -13,5 +13,13 @@ export declare class InProcessExecutor implements Executor {
13
13
  private readonly heartbeatIntervalMs;
14
14
  constructor(providers: NativeRunProviders, db?: RunnerDb, heartbeatIntervalMs?: number);
15
15
  start(runId: string): Promise<void>;
16
- stop(_runId: string, _reason?: string): Promise<void>;
16
+ /**
17
+ * Records the run cancelled (only while it is still pending or running: the first terminal write
18
+ * wins) and settles it like any finished run (its review check, status comments, notifications).
19
+ * The engine itself is stopped cooperatively: executeRun's inline step runner reads the run's row
20
+ * before every step (stopAwareStep), so the process executing it, this one or another, stops it
21
+ * at the next step boundary, and a run that has not started yet never does. A step already in
22
+ * flight (one model turn or tool call) finishes first; its spend is still recorded.
23
+ */
24
+ stop(runId: string, reason?: string): Promise<void>;
17
25
  }
@@ -5,7 +5,7 @@
5
5
  * heartbeat and recovers the run to `lost` rather than leaving it stuck
6
6
  * `running` forever.
7
7
  */
8
- import { executeRun } from "../../core/runner.js";
8
+ import { executeRun, failNativeRun, nativeRunIntegrations, RunCancelledError, } from "../../core/runner.js";
9
9
  import { prisma as defaultDb } from "../../core/db.js";
10
10
  import { HEARTBEAT_INTERVAL_MS } from "../../core/timing.js";
11
11
  export class InProcessExecutor {
@@ -31,8 +31,18 @@ export class InProcessExecutor {
31
31
  clearInterval(timer);
32
32
  }
33
33
  }
34
- async stop(_runId, _reason) {
35
- // Native engine cancellation remains cooperative until Engine accepts an
36
- // AbortSignal. The task state still records the caller's request.
34
+ /**
35
+ * Records the run cancelled (only while it is still pending or running: the first terminal write
36
+ * wins) and settles it like any finished run (its review check, status comments, notifications).
37
+ * The engine itself is stopped cooperatively: executeRun's inline step runner reads the run's row
38
+ * before every step (stopAwareStep), so the process executing it, this one or another, stops it
39
+ * at the next step boundary, and a run that has not started yet never does. A step already in
40
+ * flight (one model turn or tool call) finishes first; its spend is still recorded.
41
+ */
42
+ async stop(runId, reason) {
43
+ const run = await this.db.run.findUnique({ where: { id: runId }, select: { status: true } });
44
+ if (!run || (run.status !== "pending" && run.status !== "running"))
45
+ return;
46
+ await failNativeRun({ runId, db: this.db, providers: this.providers, ...nativeRunIntegrations(this.providers, this.db) }, new RunCancelledError(reason ?? "The run was cancelled."));
37
47
  }
38
48
  }
@@ -0,0 +1,16 @@
1
+ import type { IssueTrackerRegistry } from "../issue-tracker/types.js";
2
+ import type { ReviewHostRegistry } from "../review-host/types.js";
3
+ import type { LinkedIssueRef } from "./container.js";
4
+ /**
5
+ * The executor's readLinkedIssue: a GitHub issue through the review host's
6
+ * issue read (the App's installation token for the run's repository), a Jira
7
+ * issue through the configured tracker. Null when the number is a pull
8
+ * request, the issue is missing, or no host or tracker is configured.
9
+ */
10
+ export declare function linkedIssueReader(deps: {
11
+ hosts: ReviewHostRegistry;
12
+ issueTrackers: IssueTrackerRegistry;
13
+ }): (ref: LinkedIssueRef) => Promise<{
14
+ title: string;
15
+ body: string;
16
+ } | null>;
@@ -0,0 +1,30 @@
1
+ /** A tracker read for a continuation's task must not hold up its launch. */
2
+ const TRACKER_READ_TIMEOUT_MS = 10_000;
3
+ /**
4
+ * The executor's readLinkedIssue: a GitHub issue through the review host's
5
+ * issue read (the App's installation token for the run's repository), a Jira
6
+ * issue through the configured tracker. Null when the number is a pull
7
+ * request, the issue is missing, or no host or tracker is configured.
8
+ */
9
+ export function linkedIssueReader(deps) {
10
+ return async (ref) => {
11
+ if (ref.provider === "github") {
12
+ const host = deps.hosts.github;
13
+ if (!host?.readIssue)
14
+ return null;
15
+ // Title and body only: the task carries the ticket, not its discussion.
16
+ const result = await host.readIssue(ref.repository, ref.number, { comments: false });
17
+ return result.kind === "issue" ? { title: result.title, body: result.body } : null;
18
+ }
19
+ const tracker = deps.issueTrackers.jira;
20
+ if (!tracker)
21
+ return null;
22
+ const view = await tracker.getIssue(ref.key, {
23
+ maxComments: 0,
24
+ agentMarker: "",
25
+ timeoutMs: TRACKER_READ_TIMEOUT_MS,
26
+ retryOn429: false,
27
+ });
28
+ return { title: view.summary, body: view.description };
29
+ };
30
+ }
@@ -37,6 +37,8 @@ export declare class RoutingExecutor implements Executor {
37
37
  * backend name.
38
38
  */
39
39
  recover(handle: PersistedExecutionHandle): Promise<ExecutionRecoveryResult>;
40
+ /** Only coding runs wait in the coding queue, so only the coding executor is asked. */
41
+ cleanupQueueTimeout(runId: string): Promise<void>;
40
42
  /** Each distinct executor once, in a fixed order: native, coding, sandbox. */
41
43
  private distinct;
42
44
  /** Lifecycle fans out to every distinct executor; each hook is optional on the seam. */
@@ -63,6 +63,10 @@ export class RoutingExecutor {
63
63
  }
64
64
  return executor.recover(handle);
65
65
  }
66
+ /** Only coding runs wait in the coding queue, so only the coding executor is asked. */
67
+ async cleanupQueueTimeout(runId) {
68
+ await this.coding.cleanupQueueTimeout?.(runId);
69
+ }
66
70
  /** Each distinct executor once, in a fixed order: native, coding, sandbox. */
67
71
  distinct() {
68
72
  return [this.native, this.coding, this.sandbox].filter((executor, index, all) => executor !== undefined && all.indexOf(executor) === index);
@@ -35,6 +35,14 @@ export interface Executor {
35
35
  * terminal Run persistence completed. Recovery must never relaunch a job.
36
36
  */
37
37
  recover?: (handle: PersistedExecutionHandle) => Promise<ExecutionRecoveryResult>;
38
+ /**
39
+ * Called by drainCodingQueue for each queued coding run it failed with coding_queue_timeout, after
40
+ * that write: releases what an earlier attempt of the run left (a launch the backend refused for
41
+ * capacity), such as a continuation's in-progress host signal and its input artifact. Best effort;
42
+ * a throw is logged by the caller. Optional: an executor that never leaves a queued run anything
43
+ * to release omits it.
44
+ */
45
+ cleanupQueueTimeout?: (runId: string) => Promise<void>;
38
46
  /**
39
47
  * Optional one-time startup. A durable backend connects and re-drives the
40
48
  * workflows it owned before the last restart. Composition roots call it
@@ -97,5 +105,10 @@ export interface Executor {
97
105
  * in). MCP refuses to set an agent to sandbox mode where it cannot (docs/native-sandbox.md).
98
106
  */
99
107
  supportsNativeSandbox?(): boolean;
108
+ /**
109
+ * true: this executor cannot resolve coding inputs; dispatch records the coding run unresolved
110
+ * and the process that starts it resolves them (resolveDeferredCodingRun).
111
+ */
112
+ defersCodingResolution?: boolean;
100
113
  }
101
114
  import type { CodingProvider } from "../../coding/provider.js";
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Runs one approved snapshot of a bound tool with a restricted privileged host: fetch
3
+ * reaches the provider's API hosts inside this call's repository, using the operation's
4
+ * methods, with no redirects followed and only plain content headers, and the only secret alias is `host`. Datastores and readable secrets are
5
+ * absent, and console output is dropped. Never throws: every failure is a fixed code,
6
+ * so no tool text reaches a model, a run record or a published comment.
7
+ */
8
+ import type { SandboxLimits } from "../../sandbox/eval-core.js";
9
+ import { safeFetch } from "../../sandbox/safe-fetch.js";
10
+ import type { SecretEntry } from "../../core/secrets.js";
11
+ import { type HostOperation, type HostToolDeclineCode } from "./operations.js";
12
+ export declare const HOST_SECRET_ALIAS = "host";
13
+ export type HostToolErrorCode = "host_tool_failed" | "host_tool_timeout" | "host_tool_invalid_result" | "host_tool_invalid_params" | "host_tool_request_denied" | "host_tool_no_credential" | `host_${HostToolDeclineCode}`;
14
+ export type HostToolResult = {
15
+ ok: true;
16
+ value: unknown;
17
+ } | {
18
+ ok: false;
19
+ code: HostToolErrorCode;
20
+ };
21
+ export interface HostToolInvocation {
22
+ provider: string;
23
+ operation: HostOperation;
24
+ snapshot: {
25
+ code: string;
26
+ paramsZod: string;
27
+ };
28
+ params: Record<string, unknown>;
29
+ apiHosts: readonly string[];
30
+ pathPrefix: string;
31
+ credential: () => Promise<SecretEntry | undefined>;
32
+ fetchImpl?: typeof safeFetch;
33
+ limits?: Partial<SandboxLimits>;
34
+ /** The approved snapshot's time limit (effectiveToolTimeoutMs); absent = the default. */
35
+ timeoutMs?: number;
36
+ }
37
+ export declare function invokeHostTool(input: HostToolInvocation): Promise<HostToolResult>;
@@ -0,0 +1,117 @@
1
+ import { createPrivilegedHost } from "../../sandbox/host-functions.js";
2
+ import { runToolCode, toolLimits } from "../../sandbox/run-in-sandbox.js";
3
+ import { fetchTimeoutFor } from "../../sandbox/tool-timeout.js";
4
+ import { WALL_TIME_LIMIT_MS } from "../../sandbox/limits.js";
5
+ import { safeFetch } from "../../sandbox/safe-fetch.js";
6
+ import { validateParams } from "../../sandbox/zod-params.js";
7
+ import { HOST_OPERATIONS, HOST_TOOL_DECLINE_CODES, } from "./operations.js";
8
+ import { assertHostToolHeaders, assertHostToolRequest, HostToolRequestDenied, MAX_HOST_TOOL_FETCHES, } from "./request-guard.js";
9
+ export const HOST_SECRET_ALIAS = "host";
10
+ const absent = async () => {
11
+ throw new Error("host_tool_capability_absent");
12
+ };
13
+ export async function invokeHostTool(input) {
14
+ const definition = HOST_OPERATIONS[input.operation];
15
+ const failures = { denied: false, noCredential: false };
16
+ const validated = await validateParams(input.snapshot.paramsZod, input.params);
17
+ if (!validated.ok)
18
+ return { ok: false, code: "host_tool_invalid_params" };
19
+ const privileged = (signal) => {
20
+ const inner = createPrivilegedHost({
21
+ agentId: `host-provider:${input.provider}`,
22
+ // Never reached: every bridge that would use them is `absent` below.
23
+ datastore: {},
24
+ sharedDatastore: {},
25
+ logTag: `host-tool:${input.operation}`,
26
+ allowedFetchHosts: [...input.apiHosts],
27
+ // Redirects are never followed here: a later hop would skip the guard, so the tool re-fetches through it.
28
+ fetchImpl: (u, i, o) => (input.fetchImpl ?? safeFetch)(u, i, { ...o, followRedirects: false }),
29
+ signal,
30
+ fetchTimeoutMs: fetchTimeoutFor(input.timeoutMs ?? input.limits?.wallTimeLimitMs ?? WALL_TIME_LIMIT_MS),
31
+ secrets: {
32
+ get: async () => undefined,
33
+ resolve: async (name) => {
34
+ if (name !== HOST_SECRET_ALIAS)
35
+ return undefined;
36
+ let entry;
37
+ try {
38
+ entry = await input.credential();
39
+ }
40
+ catch {
41
+ entry = undefined;
42
+ }
43
+ // A thrown or partial credential must not carry its text into tool code. Registering
44
+ // checks the hosts, but a broker config can be narrowed afterwards.
45
+ if (!entry || !entry.broker || input.apiHosts.some((h) => !entry.broker.hosts.includes(h))) {
46
+ failures.noCredential = true;
47
+ throw new Error("host_tool_no_credential");
48
+ }
49
+ return entry;
50
+ },
51
+ },
52
+ });
53
+ let fetches = 0;
54
+ return {
55
+ __bridge_console: async () => null,
56
+ __bridge_fetch: async (argsJson) => {
57
+ try {
58
+ const [url, init, secretNames] = JSON.parse(argsJson);
59
+ if (++fetches > MAX_HOST_TOOL_FETCHES)
60
+ throw new HostToolRequestDenied();
61
+ if (secretNames !== undefined &&
62
+ !(Array.isArray(secretNames) && secretNames.every((n) => n === HOST_SECRET_ALIAS))) {
63
+ throw new HostToolRequestDenied();
64
+ }
65
+ assertHostToolHeaders(init?.headers);
66
+ assertHostToolRequest(url, init?.method ?? "GET", {
67
+ apiHosts: input.apiHosts,
68
+ pathPrefix: input.pathPrefix,
69
+ methods: definition.methods,
70
+ });
71
+ }
72
+ catch (err) {
73
+ failures.denied = true;
74
+ throw err;
75
+ }
76
+ return inner.__bridge_fetch(argsJson);
77
+ },
78
+ __bridge_datastoreGet: absent,
79
+ __bridge_datastoreSet: absent,
80
+ __bridge_datastoreDelete: absent,
81
+ __bridge_datastoreList: absent,
82
+ __bridge_sharedDatastoreGet: absent,
83
+ __bridge_sharedDatastoreSet: absent,
84
+ __bridge_sharedDatastoreDelete: absent,
85
+ __bridge_sharedDatastoreList: absent,
86
+ __bridge_secretsGet: absent,
87
+ };
88
+ };
89
+ const result = await runToolCode({
90
+ code: input.snapshot.code,
91
+ params: validated.value,
92
+ limits: toolLimits(input.timeoutMs, input.limits),
93
+ privileged,
94
+ });
95
+ // Checked first: a tool that catches a refusal must not turn it into a success.
96
+ if (failures.denied)
97
+ return { ok: false, code: "host_tool_request_denied" };
98
+ if (failures.noCredential)
99
+ return { ok: false, code: "host_tool_no_credential" };
100
+ if (!result.ok) {
101
+ return {
102
+ ok: false,
103
+ code: result.errorKind === "timeout" || result.errorKind === "cpu" ? "host_tool_timeout" : "host_tool_failed",
104
+ };
105
+ }
106
+ const decline = declineOf(result.value);
107
+ if (decline)
108
+ return { ok: false, code: `host_${decline}` };
109
+ const parsed = definition.result.safeParse(result.value);
110
+ return parsed.success ? { ok: true, value: parsed.data } : { ok: false, code: "host_tool_invalid_result" };
111
+ }
112
+ function declineOf(value) {
113
+ if (typeof value !== "object" || value === null || !("error" in value))
114
+ return null;
115
+ const { error } = value;
116
+ return HOST_TOOL_DECLINE_CODES.includes(error) ? error : null;
117
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * The contract between Wardby and a host provider's bound tools. A bound tool makes
3
+ * one host operation; paging, markers, safeguards and wording stay in Wardby. Wardby
4
+ * calls each tool with `{ workspace, repo, repository, ...operation fields }`.
5
+ *
6
+ * A tool answers with its operation's result, or `{ error: <decline code> }` when the
7
+ * host refused. Results are untrusted and validated here, and a tool's own text never
8
+ * reaches a model, a run record or a comment.
9
+ */
10
+ import { z } from "zod";
11
+ export declare const HOST_TOOL_CONTRACT_VERSION = 1;
12
+ /** What a tool may say about a host refusal: fixed words, so no tool text passes through. */
13
+ export declare const HOST_TOOL_DECLINE_CODES: readonly ["unauthorized", "forbidden", "not_found", "conflict", "rate_limited", "unavailable"];
14
+ export type HostToolDeclineCode = (typeof HOST_TOOL_DECLINE_CODES)[number];
15
+ type OperationDef = {
16
+ /** The HTTP methods this operation's requests may use. */
17
+ methods: readonly string[];
18
+ /** Changes nothing on the host: test_host_provider may call it. */
19
+ readOnly: boolean;
20
+ /** Which credential its `host` alias resolves to. */
21
+ credential: "repository" | "permission" | "none";
22
+ result: z.ZodType;
23
+ };
24
+ export declare const HOST_OPERATIONS: {
25
+ readonly getPullRequest: OperationDef;
26
+ readonly listPullRequestFiles: OperationDef;
27
+ readonly getDiff: OperationDef;
28
+ readonly findPullRequest: OperationDef;
29
+ readonly readFile: OperationDef;
30
+ readonly listFiles: OperationDef;
31
+ readonly listComments: OperationDef;
32
+ readonly listCommitStatuses: OperationDef;
33
+ readonly getRepositoryPermission: {
34
+ readonly methods: readonly ["GET"];
35
+ readonly readOnly: true;
36
+ readonly credential: "permission";
37
+ readonly result: z.ZodObject<{
38
+ permission: z.ZodEnum<{
39
+ read: "read";
40
+ write: "write";
41
+ none: "none";
42
+ triage: "triage";
43
+ maintain: "maintain";
44
+ admin: "admin";
45
+ }>;
46
+ }, z.core.$strict>;
47
+ };
48
+ readonly openPullRequest: OperationDef;
49
+ readonly updatePullRequest: OperationDef;
50
+ readonly createComment: OperationDef;
51
+ readonly editComment: OperationDef;
52
+ readonly resolveThread: OperationDef;
53
+ readonly submitVerdict: OperationDef;
54
+ readonly setCommitStatus: OperationDef;
55
+ readonly normalizeEvent: {
56
+ readonly methods: readonly [];
57
+ readonly readOnly: false;
58
+ readonly credential: "none";
59
+ readonly result: z.ZodUnknown;
60
+ };
61
+ };
62
+ export type HostOperation = keyof typeof HOST_OPERATIONS;
63
+ export declare const REQUIRED_OPERATIONS: readonly HostOperation[];
64
+ export declare function isHostOperation(name: string): name is HostOperation;
65
+ export {};
@@ -0,0 +1,149 @@
1
+ /**
2
+ * The contract between Wardby and a host provider's bound tools. A bound tool makes
3
+ * one host operation; paging, markers, safeguards and wording stay in Wardby. Wardby
4
+ * calls each tool with `{ workspace, repo, repository, ...operation fields }`.
5
+ *
6
+ * A tool answers with its operation's result, or `{ error: <decline code> }` when the
7
+ * host refused. Results are untrusted and validated here, and a tool's own text never
8
+ * reaches a model, a run record or a comment.
9
+ */
10
+ import { z } from "zod";
11
+ export const HOST_TOOL_CONTRACT_VERSION = 1;
12
+ /** What a tool may say about a host refusal: fixed words, so no tool text passes through. */
13
+ export const HOST_TOOL_DECLINE_CODES = [
14
+ "unauthorized",
15
+ "forbidden",
16
+ "not_found",
17
+ "conflict",
18
+ "rate_limited",
19
+ "unavailable",
20
+ ];
21
+ // What a paged operation returns; its tool takes the last one back as the optional `page` input.
22
+ const page = z.string().nullable();
23
+ const pullRequest = z
24
+ .object({
25
+ number: z.number().int().positive(),
26
+ title: z.string(),
27
+ body: z.string(),
28
+ author: z.string().nullable(),
29
+ // A merged pull request is "closed" with `merged` set: consumers compare state to "open".
30
+ state: z.enum(["open", "closed"]),
31
+ merged: z.boolean(),
32
+ draft: z.boolean(),
33
+ baseRef: z.string(),
34
+ headRef: z.string(),
35
+ headSha: z.string().min(1),
36
+ isFork: z.boolean(),
37
+ htmlUrl: z.string().url(),
38
+ })
39
+ .strict();
40
+ const written = z.object({ id: z.string().min(1) }).strict();
41
+ const read = (result) => ({
42
+ methods: ["GET"],
43
+ readOnly: true,
44
+ credential: "repository",
45
+ result,
46
+ });
47
+ const write = (methods, result) => ({
48
+ methods,
49
+ readOnly: false,
50
+ credential: "repository",
51
+ result,
52
+ });
53
+ export const HOST_OPERATIONS = {
54
+ getPullRequest: read(pullRequest),
55
+ listPullRequestFiles: read(z
56
+ .object({
57
+ files: z.array(z
58
+ .object({
59
+ filename: z.string(),
60
+ status: z.string(),
61
+ additions: z.number().int().nonnegative(),
62
+ deletions: z.number().int().nonnegative(),
63
+ previousFilename: z.string().optional(),
64
+ })
65
+ .strict()),
66
+ nextPage: page,
67
+ })
68
+ .strict()),
69
+ getDiff: read(z.object({ diff: z.string() }).strict()),
70
+ findPullRequest: read(z.object({ pullRequest: pullRequest.nullable() }).strict()),
71
+ readFile: read(z.discriminatedUnion("kind", [
72
+ z.object({ kind: z.literal("file"), content: z.string() }).strict(),
73
+ z.object({ kind: z.literal("directory") }).strict(),
74
+ z.object({ kind: z.literal("not_found") }).strict(),
75
+ ])),
76
+ listFiles: read(z
77
+ .object({
78
+ entries: z.array(z
79
+ .object({
80
+ path: z.string(),
81
+ type: z.enum(["file", "directory"]),
82
+ size: z.number().int().nonnegative().optional(),
83
+ })
84
+ .strict()),
85
+ nextPage: page,
86
+ })
87
+ .strict()),
88
+ listComments: read(z
89
+ .object({
90
+ comments: z.array(z
91
+ .object({
92
+ id: z.string().min(1),
93
+ author: z.string().nullable(),
94
+ authorId: z.string().nullable(),
95
+ body: z.string(),
96
+ createdAt: z.string(),
97
+ path: z.string().nullable(),
98
+ line: z.number().int().positive().nullable(),
99
+ parentId: z.string().nullable(),
100
+ resolved: z.boolean(),
101
+ })
102
+ .strict()),
103
+ nextPage: page,
104
+ })
105
+ .strict()),
106
+ listCommitStatuses: read(z
107
+ .object({
108
+ statuses: z.array(z
109
+ .object({
110
+ key: z.string(),
111
+ state: z.enum(["pending", "success", "failure", "stopped"]),
112
+ url: z.string().nullable(),
113
+ })
114
+ .strict()),
115
+ nextPage: page,
116
+ })
117
+ .strict()),
118
+ getRepositoryPermission: {
119
+ methods: ["GET"],
120
+ readOnly: true,
121
+ credential: "permission",
122
+ result: z.object({ permission: z.enum(["none", "read", "triage", "write", "maintain", "admin"]) }).strict(),
123
+ },
124
+ openPullRequest: write(["POST"], pullRequest),
125
+ updatePullRequest: write(["PUT"], pullRequest),
126
+ createComment: write(["POST"], written),
127
+ editComment: write(["PUT"], written),
128
+ resolveThread: write(["POST"], z.object({}).strict()),
129
+ submitVerdict: write(["POST"], z.object({}).strict()),
130
+ setCommitStatus: write(["POST"], z.object({}).strict()),
131
+ // PR 5 gives this its HostEvent schema. Nothing calls it before then.
132
+ normalizeEvent: { methods: [], readOnly: false, credential: "none", result: z.unknown() },
133
+ };
134
+ export const REQUIRED_OPERATIONS = [
135
+ "getPullRequest",
136
+ "listPullRequestFiles",
137
+ "getDiff",
138
+ "readFile",
139
+ "listFiles",
140
+ "listComments",
141
+ "createComment",
142
+ "submitVerdict",
143
+ "findPullRequest",
144
+ "openPullRequest",
145
+ "updatePullRequest",
146
+ ];
147
+ export function isHostOperation(name) {
148
+ return Object.hasOwn(HOST_OPERATIONS, name);
149
+ }
@@ -0,0 +1,79 @@
1
+ import { z } from "zod";
2
+ import type { PrismaClient } from "#prisma";
3
+ import type { SecretCipher } from "../secrets/types.js";
4
+ export type HostProviderErrorCode = "host_provider_not_found" | "host_provider_missing_operation" | "host_provider_tool_not_found" | "host_provider_secret_not_found" | "host_provider_secret_not_brokered" | "host_provider_secret_hosts" | "host_provider_secret_placement" | "host_provider_webhook_secret_shared" | "host_provider_webhook_secret_short" | "host_provider_permission_secret_shared" | "host_provider_username_is_secret" | "host_provider_in_use" | "host_provider_operation_not_bound" | "host_provider_tool_deleted";
5
+ export declare class HostProviderError extends Error {
6
+ readonly code: HostProviderErrorCode;
7
+ readonly detail: string;
8
+ constructor(code: HostProviderErrorCode, detail: string);
9
+ }
10
+ export declare const RegisterHostProviderSchema: z.ZodObject<{
11
+ provider: z.ZodString;
12
+ gitHost: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
13
+ apiHosts: z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
14
+ gitUsername: z.ZodString;
15
+ pullRequestUrlTemplate: z.ZodString;
16
+ repositoryApiPath: z.ZodString;
17
+ permissionApiPath: z.ZodOptional<z.ZodString>;
18
+ webhook: z.ZodObject<{
19
+ header: z.ZodString;
20
+ algorithm: z.ZodLiteral<"sha256">;
21
+ deliveryHeader: z.ZodString;
22
+ eventHeader: z.ZodString;
23
+ secret: z.ZodString;
24
+ }, z.core.$strict>;
25
+ credentials: z.ZodArray<z.ZodObject<{
26
+ repositories: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
27
+ secret: z.ZodString;
28
+ }, z.core.$strict>>;
29
+ permissionCredential: z.ZodOptional<z.ZodString>;
30
+ trustedAccounts: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
+ tools: z.ZodRecord<z.ZodString, z.ZodString>;
32
+ }, z.core.$strict>;
33
+ export type RegisterHostProviderInput = z.infer<typeof RegisterHostProviderSchema>;
34
+ export declare function findCredential<T extends {
35
+ repositoryPattern: string;
36
+ }>(credentials: readonly T[], repositoryPath: string): T | null;
37
+ export interface OperationView {
38
+ operation: string;
39
+ toolName: string | null;
40
+ status: "approved" | "changed" | "tool_deleted";
41
+ approvedAt: Date;
42
+ approvedById: string;
43
+ approvedSha256: string;
44
+ currentSha256: string | null;
45
+ /** The approved snapshot's time limit (null: the default), and the tool's now; a change waits for approval. */
46
+ approvedTimeoutMs: number | null;
47
+ currentTimeoutMs: number | null;
48
+ approvedCode?: string;
49
+ approvedParamsZod?: string;
50
+ currentCode?: string;
51
+ currentParamsZod?: string;
52
+ }
53
+ export interface HostProviderView {
54
+ provider: string;
55
+ contractVersion: number;
56
+ gitHost: string;
57
+ apiHosts: string[];
58
+ gitUsername: string;
59
+ pullRequestUrlTemplate: string;
60
+ repositoryApiPath: string;
61
+ permissionApiPath: string | null;
62
+ mode: "permission" | "allowlist";
63
+ webhook: unknown;
64
+ webhookSecret: string;
65
+ permissionSecret: string | null;
66
+ credentials: {
67
+ repositories: string;
68
+ secret: string;
69
+ kind: string;
70
+ }[];
71
+ trustedAccounts: string[];
72
+ operations: OperationView[];
73
+ }
74
+ export declare function registerHostProvider(db: PrismaClient, cipher: SecretCipher, principalId: string, input: RegisterHostProviderInput): Promise<HostProviderView>;
75
+ export declare function approveHostProviderTools(db: PrismaClient, principalId: string, provider: string, operations: readonly string[]): Promise<HostProviderView>;
76
+ export declare function getHostProviderView(db: PrismaClient, provider: string, options?: {
77
+ includeCode?: boolean;
78
+ }): Promise<HostProviderView | null>;
79
+ export declare function deleteHostProvider(db: PrismaClient, provider: string): Promise<void>;