@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
@@ -3,12 +3,18 @@
3
3
  * attachments, secrets, datastores, webhooks, budget groups) to the database
4
4
  * from a validated bundle + reconciliation.
5
5
  */
6
+ import { toolTimeoutProblem } from "../sandbox/tool-timeout.js";
7
+ import { loadToolMaxTimeoutMs } from "../config/tool-timeout.js";
6
8
  import { Prisma } from "#prisma";
9
+ import { scheduleStartFields } from "../core/schedule-start.js";
7
10
  import { createSecret, attachSecret } from "../core/secrets.js";
8
11
  import { createDatastore, attachDatastore } from "../core/datastores.js";
12
+ import { guardDatastore } from "../core/secret-guarded-stores.js";
13
+ import { SecretCheckUnavailableError, SecretInValueError, createDbSecretWriteGuard, loadAgentSecretValues, secretNamesIn, } from "../core/secret-guard.js";
9
14
  import { createWebhook } from "../core/webhooks.js";
10
15
  import { deriveJsonSchema } from "../sandbox/zod-params.js";
11
- import { findSameNamedAttachedTool, reservedToolNameReason } from "../core/tool-names.js";
16
+ import { toolSubject, zod3ToolWarnings } from "../core/zod3-window.js";
17
+ import { findSameNamedAttachedTool, findSameNamedMcpTool, reservedToolNameReason } from "../core/tool-names.js";
12
18
  import { ToolCapabilitiesPatchSchema, FETCH_WILDCARD } from "../sandbox/tool-capabilities.js";
13
19
  import { PostgresDatastore } from "../providers/datastore/postgres.js";
14
20
  import { decryptTransferEnvelope } from "../providers/secrets/transfer-envelope.js";
@@ -24,6 +30,10 @@ function nativeSandboxConfigured() {
24
30
  return false;
25
31
  }
26
32
  }
33
+ /** A seeded entry's key for a warning; withheld when the entry was refused over a secret (the key may hold it). */
34
+ function seedKeyLabel(key, err) {
35
+ return err instanceof SecretInValueError || err instanceof SecretCheckUnavailableError ? "<key withheld>" : key;
36
+ }
27
37
  export async function createFromBundle(bundle, recon, opts) {
28
38
  const { db, cipher, ownerId, secretMode, transferPrivateKey, allowOpenFetch } = opts;
29
39
  const agentOwnerId = opts.agentOwnerId === undefined ? ownerId : opts.agentOwnerId;
@@ -62,6 +72,13 @@ export async function createFromBundle(bundle, recon, opts) {
62
72
  warnings.push(`tool ${t.name}: failed to derive JSON schema, skipping`);
63
73
  continue;
64
74
  }
75
+ const timeoutProblem = t.timeoutMs === undefined || t.timeoutMs === null
76
+ ? undefined
77
+ : toolTimeoutProblem(t.timeoutMs, loadToolMaxTimeoutMs());
78
+ if (timeoutProblem) {
79
+ warnings.push(`tool ${t.name}: ${timeoutProblem} Skipping`);
80
+ continue;
81
+ }
65
82
  // Names are unique per owner: reuse the target owner's own same-named
66
83
  // tool (what upsert-by-name used to do), never another owner's. A
67
84
  // compound unique with a nullable column can't key an upsert, hence
@@ -75,9 +92,12 @@ export async function createFromBundle(bundle, recon, opts) {
75
92
  code: t.code,
76
93
  jsonSchema: schema.value,
77
94
  ownerId,
95
+ ...(t.timeoutMs !== undefined && t.timeoutMs !== null ? { timeoutMs: t.timeoutMs } : {}),
78
96
  },
79
97
  }));
80
98
  toolIdMap.set(t.name, tool.id);
99
+ if (tool.paramsZod === t.paramsZod)
100
+ warnings.push(...(await zod3ToolWarnings(toolSubject(tool.name), t.paramsZod)));
81
101
  toolsCreated++;
82
102
  }
83
103
  // Step 2: Agents
@@ -100,6 +120,11 @@ export async function createFromBundle(bundle, recon, opts) {
100
120
  timezone: a.timezone,
101
121
  maxTurns: a.maxTurns,
102
122
  scheduleEnabled,
123
+ ...(await scheduleStartFields(db, null, {
124
+ schedule: a.schedule || null,
125
+ timezone: a.timezone,
126
+ scheduleEnabled,
127
+ })),
103
128
  ownerId: agentOwnerId,
104
129
  ...(a.nativeExecutionMode
105
130
  ? { nativeExecutionMode: a.nativeExecutionMode === "sandbox" ? "sandbox" : "control_plane" }
@@ -165,6 +190,11 @@ export async function createFromBundle(bundle, recon, opts) {
165
190
  warnings.push(`agent-tool ${at.agentName}/${at.toolName}: skipped — the agent already has a different tool with the same name (${clash.id})`);
166
191
  continue;
167
192
  }
193
+ const mcpClash = await findSameNamedMcpTool(db, agentId, eff(at.toolName));
194
+ if (mcpClash) {
195
+ warnings.push(`agent-tool ${at.agentName}/${at.toolName}: skipped — the agent already has a tool with this name from MCP server "${mcpClash.serverName}"`);
196
+ continue;
197
+ }
168
198
  const caps = capsPatch.data;
169
199
  // The importing operator is trusted with the database, so on an agent
170
200
  // this import owns it grants the bundle's capabilities in the owner's
@@ -259,7 +289,7 @@ export async function createFromBundle(bundle, recon, opts) {
259
289
  }
260
290
  }
261
291
  // Step 6: Per-agent datastore seed
262
- const ds = new PostgresDatastore(db, cipher);
292
+ const ds = guardDatastore(new PostgresDatastore(db, cipher), createDbSecretWriteGuard(db, cipher));
263
293
  for (const d of bundle.readSingleDatastores()) {
264
294
  const agentId = agentIdMap.get(d.agentName);
265
295
  if (!agentId)
@@ -270,7 +300,7 @@ export async function createFromBundle(bundle, recon, opts) {
270
300
  datastoreEntries++;
271
301
  }
272
302
  catch (err) {
273
- warnings.push(`datastore ${d.agentName}/${entry.key}: failed to set (${err instanceof Error ? err.message : String(err)})`);
303
+ warnings.push(`datastore ${d.agentName}/${seedKeyLabel(entry.key, err)}: failed to set (${err instanceof Error ? err.message : String(err)})`);
274
304
  }
275
305
  }
276
306
  }
@@ -283,6 +313,10 @@ export async function createFromBundle(bundle, recon, opts) {
283
313
  }
284
314
  else {
285
315
  const owner = ownerId; // hasOwner guarantees non-null
316
+ // The import is one writer for shared seeds: check them against the secrets
317
+ // of every agent it created, loaded once and fail closed if unreadable.
318
+ let importedSecrets;
319
+ const loadImportedSecrets = () => (importedSecrets ??= Promise.all([...agentIdMap.values()].map((id) => loadAgentSecretValues(db, cipher, id))).then((all) => all.flat()));
286
320
  for (const sd of bundle.readSharedDatastores()) {
287
321
  let created;
288
322
  try {
@@ -302,12 +336,22 @@ export async function createFromBundle(bundle, recon, opts) {
302
336
  datastoresSharedCreated++;
303
337
  for (const entry of sd.entries) {
304
338
  try {
339
+ let named;
340
+ try {
341
+ named = await loadImportedSecrets();
342
+ }
343
+ catch {
344
+ throw new SecretCheckUnavailableError();
345
+ }
346
+ const names = secretNamesIn([entry.key, entry.value], named);
347
+ if (names.length > 0)
348
+ throw new SecretInValueError(names);
305
349
  await db.datastoreEntry.create({
306
350
  data: { datastoreId: created.id, key: entry.key, value: entry.value, pii: false },
307
351
  });
308
352
  }
309
353
  catch (err) {
310
- warnings.push(`shared-datastore ${sd.name}/${entry.key}: failed to seed (${err instanceof Error ? err.message : String(err)})`);
354
+ warnings.push(`shared-datastore ${sd.name}/${seedKeyLabel(entry.key, err)}: failed to seed (${err instanceof Error ? err.message : String(err)})`);
311
355
  }
312
356
  }
313
357
  for (const agentName of sd.attachedAgentNames) {
@@ -6,83 +6,38 @@ export declare const CiphertextSchema: z.ZodObject<{
6
6
  nonce: z.ZodString;
7
7
  ct: z.ZodString;
8
8
  tag: z.ZodString;
9
- }, "strip", z.ZodTypeAny, {
10
- tag: string;
11
- alg: string;
12
- v: number;
13
- epk: string;
14
- nonce: string;
15
- ct: string;
16
- }, {
17
- tag: string;
18
- alg: string;
19
- v: number;
20
- epk: string;
21
- nonce: string;
22
- ct: string;
23
- }>;
9
+ }, z.core.$strip>;
24
10
  export declare const ManifestSchema: z.ZodObject<{
25
11
  bundleVersion: z.ZodNumber;
26
12
  source: z.ZodObject<{
27
13
  product: z.ZodString;
28
14
  exporterVersion: z.ZodString;
29
15
  exportedAt: z.ZodString;
30
- }, "strip", z.ZodTypeAny, {
31
- product: string;
32
- exporterVersion: string;
33
- exportedAt: string;
34
- }, {
35
- product: string;
36
- exporterVersion: string;
37
- exportedAt: string;
16
+ }, z.core.$strip>;
17
+ secretMode: z.ZodEnum<{
18
+ references: "references";
19
+ envelope: "envelope";
38
20
  }>;
39
- secretMode: z.ZodEnum<["references", "envelope"]>;
40
21
  transferKeyId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
41
22
  contentWindowDays: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
42
23
  contentSince: z.ZodDefault<z.ZodNullable<z.ZodString>>;
43
- toolCallDetail: z.ZodDefault<z.ZodEnum<["metadata", "full"]>>;
24
+ toolCallDetail: z.ZodDefault<z.ZodEnum<{
25
+ metadata: "metadata";
26
+ full: "full";
27
+ }>>;
44
28
  runAuditWindowDays: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
45
29
  runAuditSince: z.ZodDefault<z.ZodNullable<z.ZodString>>;
46
- capabilities: z.ZodArray<z.ZodString, "many">;
30
+ capabilities: z.ZodArray<z.ZodString>;
47
31
  counts: z.ZodRecord<z.ZodString, z.ZodNumber>;
48
- }, "strip", z.ZodTypeAny, {
49
- source: {
50
- product: string;
51
- exporterVersion: string;
52
- exportedAt: string;
53
- };
54
- capabilities: string[];
55
- bundleVersion: number;
56
- secretMode: "references" | "envelope";
57
- transferKeyId: string | null;
58
- contentWindowDays: number | null;
59
- contentSince: string | null;
60
- toolCallDetail: "metadata" | "full";
61
- runAuditWindowDays: number | null;
62
- runAuditSince: string | null;
63
- counts: Record<string, number>;
64
- }, {
65
- source: {
66
- product: string;
67
- exporterVersion: string;
68
- exportedAt: string;
69
- };
70
- capabilities: string[];
71
- bundleVersion: number;
72
- secretMode: "references" | "envelope";
73
- counts: Record<string, number>;
74
- transferKeyId?: string | null | undefined;
75
- contentWindowDays?: number | null | undefined;
76
- contentSince?: string | null | undefined;
77
- toolCallDetail?: "metadata" | "full" | undefined;
78
- runAuditWindowDays?: number | null | undefined;
79
- runAuditSince?: string | null | undefined;
80
- }>;
32
+ }, z.core.$strip>;
81
33
  export type Manifest = z.infer<typeof ManifestSchema>;
82
34
  export declare const NeutralAgentSchema: z.ZodObject<{
83
35
  name: z.ZodString;
84
36
  systemPrompt: z.ZodString;
85
- provider: z.ZodEnum<["openai", "bedrock"]>;
37
+ provider: z.ZodEnum<{
38
+ openai: "openai";
39
+ bedrock: "bedrock";
40
+ }>;
86
41
  model: z.ZodString;
87
42
  region: z.ZodDefault<z.ZodNullable<z.ZodString>>;
88
43
  schedule: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -91,64 +46,20 @@ export declare const NeutralAgentSchema: z.ZodObject<{
91
46
  maxTurns: z.ZodNumber;
92
47
  budgetUsd: z.ZodString;
93
48
  ownerEmail: z.ZodDefault<z.ZodNullable<z.ZodString>>;
94
- kind: z.ZodDefault<z.ZodEnum<["native"]>>;
49
+ kind: z.ZodDefault<z.ZodEnum<{
50
+ native: "native";
51
+ }>>;
95
52
  memoryEnabled: z.ZodDefault<z.ZodBoolean>;
96
- /** Where the agent's runs execute; absent = control-plane. Native agents only (every imported agent is native). */
97
- nativeExecutionMode: z.ZodOptional<z.ZodEnum<["control-plane", "sandbox"]>>;
98
- unmodeled: z.ZodDefault<z.ZodObject<{
99
- description: z.ZodOptional<z.ZodDefault<z.ZodNullable<z.ZodString>>>;
100
- slug: z.ZodOptional<z.ZodDefault<z.ZodNullable<z.ZodString>>>;
101
- emailAllowlist: z.ZodOptional<z.ZodDefault<z.ZodNullable<z.ZodUnknown>>>;
102
- }, "strip", z.ZodTypeAny, {
103
- description?: string | null | undefined;
104
- slug?: string | null | undefined;
105
- emailAllowlist?: unknown;
106
- }, {
107
- description?: string | null | undefined;
108
- slug?: string | null | undefined;
109
- emailAllowlist?: unknown;
53
+ nativeExecutionMode: z.ZodOptional<z.ZodEnum<{
54
+ sandbox: "sandbox";
55
+ "control-plane": "control-plane";
110
56
  }>>;
111
- }, "strip", z.ZodTypeAny, {
112
- name: string;
113
- model: string;
114
- budgetUsd: string;
115
- maxTurns: number;
116
- provider: "openai" | "bedrock";
117
- kind: "native";
118
- systemPrompt: string;
119
- schedule: string | null;
120
- timezone: string;
121
- scheduleEnabled: boolean;
122
- memoryEnabled: boolean;
123
- region: string | null;
124
- ownerEmail: string | null;
125
- unmodeled: {
126
- description?: string | null | undefined;
127
- slug?: string | null | undefined;
128
- emailAllowlist?: unknown;
129
- };
130
- nativeExecutionMode?: "sandbox" | "control-plane" | undefined;
131
- }, {
132
- name: string;
133
- model: string;
134
- budgetUsd: string;
135
- maxTurns: number;
136
- provider: "openai" | "bedrock";
137
- systemPrompt: string;
138
- scheduleEnabled: boolean;
139
- kind?: "native" | undefined;
140
- nativeExecutionMode?: "sandbox" | "control-plane" | undefined;
141
- schedule?: string | null | undefined;
142
- timezone?: string | undefined;
143
- memoryEnabled?: boolean | undefined;
144
- region?: string | null | undefined;
145
- ownerEmail?: string | null | undefined;
146
- unmodeled?: {
147
- description?: string | null | undefined;
148
- slug?: string | null | undefined;
149
- emailAllowlist?: unknown;
150
- } | undefined;
151
- }>;
57
+ unmodeled: z.ZodDefault<z.ZodObject<{
58
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
59
+ slug: z.ZodOptional<z.ZodNullable<z.ZodString>>;
60
+ emailAllowlist: z.ZodOptional<z.ZodNullable<z.ZodUnknown>>;
61
+ }, z.core.$strip>>;
62
+ }, z.core.$strip>;
152
63
  export type NeutralAgent = z.infer<typeof NeutralAgentSchema>;
153
64
  export declare const NeutralToolSchema: z.ZodObject<{
154
65
  name: z.ZodString;
@@ -157,47 +68,18 @@ export declare const NeutralToolSchema: z.ZodObject<{
157
68
  jsonSchema: z.ZodDefault<z.ZodNullable<z.ZodUnknown>>;
158
69
  code: z.ZodString;
159
70
  secretSchema: z.ZodDefault<z.ZodString>;
160
- }, "strip", z.ZodTypeAny, {
161
- name: string;
162
- code: string;
163
- description: string;
164
- paramsZod: string;
165
- secretSchema: string;
166
- jsonSchema?: unknown;
167
- }, {
168
- name: string;
169
- code: string;
170
- paramsZod: string;
171
- description?: string | undefined;
172
- jsonSchema?: unknown;
173
- secretSchema?: string | undefined;
174
- }>;
71
+ timeoutMs: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
72
+ }, z.core.$strip>;
175
73
  export type NeutralTool = z.infer<typeof NeutralToolSchema>;
176
74
  export declare const NeutralAgentToolSchema: z.ZodObject<{
177
75
  agentName: z.ZodString;
178
76
  toolName: z.ZodString;
179
- allowedSecrets: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
180
- allowedDatastorePrefixes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
181
- allowedHosts: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
182
- allowedSharedDatastorePrefixes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
77
+ allowedSecrets: z.ZodDefault<z.ZodArray<z.ZodString>>;
78
+ allowedDatastorePrefixes: z.ZodDefault<z.ZodArray<z.ZodString>>;
79
+ allowedHosts: z.ZodDefault<z.ZodArray<z.ZodString>>;
80
+ allowedSharedDatastorePrefixes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
183
81
  hostsSource: z.ZodOptional<z.ZodString>;
184
- }, "strip", z.ZodTypeAny, {
185
- allowedSecrets: string[];
186
- allowedDatastorePrefixes: string[];
187
- allowedHosts: string[];
188
- allowedSharedDatastorePrefixes: Record<string, string[]>;
189
- agentName: string;
190
- toolName: string;
191
- hostsSource?: string | undefined;
192
- }, {
193
- agentName: string;
194
- toolName: string;
195
- allowedSecrets?: string[] | undefined;
196
- allowedDatastorePrefixes?: string[] | undefined;
197
- allowedHosts?: string[] | undefined;
198
- allowedSharedDatastorePrefixes?: Record<string, string[]> | undefined;
199
- hostsSource?: string | undefined;
200
- }>;
82
+ }, z.core.$strip>;
201
83
  export type NeutralAgentTool = z.infer<typeof NeutralAgentToolSchema>;
202
84
  export declare const NeutralSecretSchema: z.ZodObject<{
203
85
  name: z.ZodString;
@@ -210,60 +92,14 @@ export declare const NeutralSecretSchema: z.ZodObject<{
210
92
  nonce: z.ZodString;
211
93
  ct: z.ZodString;
212
94
  tag: z.ZodString;
213
- }, "strip", z.ZodTypeAny, {
214
- tag: string;
215
- alg: string;
216
- v: number;
217
- epk: string;
218
- nonce: string;
219
- ct: string;
220
- }, {
221
- tag: string;
222
- alg: string;
223
- v: number;
224
- epk: string;
225
- nonce: string;
226
- ct: string;
227
- }>>;
228
- }, "strip", z.ZodTypeAny, {
229
- name: string;
230
- description: string | null;
231
- ownerEmail: string | null;
232
- ciphertext?: {
233
- tag: string;
234
- alg: string;
235
- v: number;
236
- epk: string;
237
- nonce: string;
238
- ct: string;
239
- } | undefined;
240
- }, {
241
- name: string;
242
- description?: string | null | undefined;
243
- ciphertext?: {
244
- tag: string;
245
- alg: string;
246
- v: number;
247
- epk: string;
248
- nonce: string;
249
- ct: string;
250
- } | undefined;
251
- ownerEmail?: string | null | undefined;
252
- }>;
95
+ }, z.core.$strip>>;
96
+ }, z.core.$strip>;
253
97
  export type NeutralSecret = z.infer<typeof NeutralSecretSchema>;
254
98
  export declare const NeutralAgentSecretSchema: z.ZodObject<{
255
99
  agentName: z.ZodString;
256
100
  secretName: z.ZodString;
257
101
  alias: z.ZodDefault<z.ZodNullable<z.ZodString>>;
258
- }, "strip", z.ZodTypeAny, {
259
- secretName: string;
260
- agentName: string;
261
- alias: string | null;
262
- }, {
263
- secretName: string;
264
- agentName: string;
265
- alias?: string | null | undefined;
266
- }>;
102
+ }, z.core.$strip>;
267
103
  export type NeutralAgentSecret = z.infer<typeof NeutralAgentSecretSchema>;
268
104
  export declare const NeutralSingleDatastoreSchema: z.ZodObject<{
269
105
  agentName: z.ZodString;
@@ -272,102 +108,36 @@ export declare const NeutralSingleDatastoreSchema: z.ZodObject<{
272
108
  key: z.ZodString;
273
109
  value: z.ZodUnknown;
274
110
  pii: z.ZodDefault<z.ZodBoolean>;
275
- }, "strip", z.ZodTypeAny, {
276
- key: string;
277
- pii: boolean;
278
- value?: unknown;
279
- }, {
280
- key: string;
281
- value?: unknown;
282
- pii?: boolean | undefined;
283
- }>, "many">>;
284
- }, "strip", z.ZodTypeAny, {
285
- entries: {
286
- key: string;
287
- pii: boolean;
288
- value?: unknown;
289
- }[];
290
- agentName: string;
291
- name?: string | undefined;
292
- }, {
293
- agentName: string;
294
- name?: string | undefined;
295
- entries?: {
296
- key: string;
297
- value?: unknown;
298
- pii?: boolean | undefined;
299
- }[] | undefined;
300
- }>;
111
+ }, z.core.$strip>>>;
112
+ }, z.core.$strip>;
301
113
  export type NeutralSingleDatastore = z.infer<typeof NeutralSingleDatastoreSchema>;
302
114
  export declare const NeutralSharedDatastoreSchema: z.ZodObject<{
303
115
  name: z.ZodString;
304
116
  ownerEmail: z.ZodDefault<z.ZodNullable<z.ZodString>>;
305
- attachedAgentNames: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
117
+ attachedAgentNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
306
118
  entries: z.ZodDefault<z.ZodArray<z.ZodObject<{
307
119
  key: z.ZodString;
308
120
  value: z.ZodUnknown;
309
- }, "strip", z.ZodTypeAny, {
310
- key: string;
311
- value?: unknown;
312
- }, {
313
- key: string;
314
- value?: unknown;
315
- }>, "many">>;
316
- }, "strip", z.ZodTypeAny, {
317
- name: string;
318
- entries: {
319
- key: string;
320
- value?: unknown;
321
- }[];
322
- ownerEmail: string | null;
323
- attachedAgentNames: string[];
324
- }, {
325
- name: string;
326
- entries?: {
327
- key: string;
328
- value?: unknown;
329
- }[] | undefined;
330
- ownerEmail?: string | null | undefined;
331
- attachedAgentNames?: string[] | undefined;
332
- }>;
121
+ }, z.core.$strip>>>;
122
+ }, z.core.$strip>;
333
123
  export type NeutralSharedDatastore = z.infer<typeof NeutralSharedDatastoreSchema>;
334
124
  export declare const NeutralWebhookSchema: z.ZodObject<{
335
125
  agentName: z.ZodString;
336
126
  enabled: z.ZodBoolean;
337
- }, "strip", z.ZodTypeAny, {
338
- enabled: boolean;
339
- agentName: string;
340
- }, {
341
- enabled: boolean;
342
- agentName: string;
343
- }>;
127
+ }, z.core.$strip>;
344
128
  export type NeutralWebhook = z.infer<typeof NeutralWebhookSchema>;
345
129
  export declare const NeutralBudgetSchema: z.ZodObject<{
346
130
  name: z.ZodString;
347
131
  ownerEmail: z.ZodDefault<z.ZodNullable<z.ZodString>>;
348
- period: z.ZodEnum<["daily", "weekly", "monthly"]>;
132
+ period: z.ZodEnum<{
133
+ daily: "daily";
134
+ weekly: "weekly";
135
+ monthly: "monthly";
136
+ }>;
349
137
  alertThreshold: z.ZodString;
350
138
  blockThreshold: z.ZodString;
351
- alertEmails: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
139
+ alertEmails: z.ZodDefault<z.ZodArray<z.ZodString>>;
352
140
  enabled: z.ZodBoolean;
353
- attachedAgentNames: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
354
- }, "strip", z.ZodTypeAny, {
355
- name: string;
356
- enabled: boolean;
357
- period: "daily" | "weekly" | "monthly";
358
- ownerEmail: string | null;
359
- attachedAgentNames: string[];
360
- alertThreshold: string;
361
- blockThreshold: string;
362
- alertEmails: string[];
363
- }, {
364
- name: string;
365
- enabled: boolean;
366
- period: "daily" | "weekly" | "monthly";
367
- alertThreshold: string;
368
- blockThreshold: string;
369
- ownerEmail?: string | null | undefined;
370
- attachedAgentNames?: string[] | undefined;
371
- alertEmails?: string[] | undefined;
372
- }>;
141
+ attachedAgentNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
142
+ }, z.core.$strip>;
373
143
  export type NeutralBudget = z.infer<typeof NeutralBudgetSchema>;
@@ -36,13 +36,14 @@ export const NeutralAgentSchema = z.object({
36
36
  memoryEnabled: z.boolean().default(false),
37
37
  /** Where the agent's runs execute; absent = control-plane. Native agents only (every imported agent is native). */
38
38
  nativeExecutionMode: z.enum(["control-plane", "sandbox"]).optional(),
39
+ // Each field optional with no default: Zod 4 would apply a default inside
40
+ // .partial(), where Zod 3 left an absent field absent.
39
41
  unmodeled: z
40
42
  .object({
41
- description: z.string().nullable().default(null),
42
- slug: z.string().nullable().default(null),
43
- emailAllowlist: z.unknown().nullable().default(null),
43
+ description: z.string().nullable().optional(),
44
+ slug: z.string().nullable().optional(),
45
+ emailAllowlist: z.unknown().nullable().optional(),
44
46
  })
45
- .partial()
46
47
  .default({}),
47
48
  });
48
49
  export const NeutralToolSchema = z.object({
@@ -52,6 +53,8 @@ export const NeutralToolSchema = z.object({
52
53
  jsonSchema: z.unknown().nullable().default(null), // ignored; we re-derive (ruling 2)
53
54
  code: z.string(),
54
55
  secretSchema: z.string().default(""),
56
+ /** The tool's own time limit (ms); absent or null keeps the default. Checked against WARDBY_TOOL_MAX_TIMEOUT_MS on import. */
57
+ timeoutMs: z.number().int().nullable().optional(),
55
58
  });
56
59
  export const NeutralAgentToolSchema = z.object({
57
60
  agentName: z.string(),
@@ -1,5 +1,5 @@
1
1
  export type CheckSeverity = "error" | "warning";
2
- export type CheckCode = "concept_invalid" | "concept_secret" | "index_missing" | "index_link_broken" | "concept_not_indexed" | "citation_unverifiable" | "citation_stale";
2
+ export type CheckCode = "concept_invalid" | "concept_secret" | "index_missing" | "index_link_broken" | "concept_not_indexed" | "citation_unverifiable" | "citation_stale" | "knowledge_config_invalid";
3
3
  export interface CheckIssue {
4
4
  severity: CheckSeverity;
5
5
  code: CheckCode;
@@ -1,5 +1,6 @@
1
1
  export declare function parseKnowledgeArgs(args: string[]): {
2
- dir: string;
2
+ /** Unset: the folder `.wardby/knowledge.yaml` names under `root`, else the default. */
3
+ dir: string | undefined;
3
4
  root: string;
4
5
  strict: boolean;
5
6
  json: boolean;
@@ -11,4 +12,13 @@ export declare function parseKnowledgeArgs(args: string[]): {
11
12
  * a bundle is plain files, and following links could loop or leave the bundle.
12
13
  */
13
14
  export declare function loadBundle(dir: string): Map<string, string>;
15
+ /**
16
+ * The bundle folder when no `dir` is given: the one `.wardby/knowledge.yaml`
17
+ * under `root` names, else the default. An unusable file is reported as an
18
+ * error (the server would ignore it) and the default is checked instead.
19
+ */
20
+ export declare function bundleDirFromConfig(root: string): {
21
+ dir: string;
22
+ configError?: string;
23
+ };
14
24
  export declare function knowledgeCommand(args: string[]): Promise<void>;
@@ -3,6 +3,7 @@ import { join, relative, resolve, sep } from "node:path";
3
3
  import { parseArgs } from "node:util";
4
4
  import { checkBundle } from "./check.js";
5
5
  import { DEFAULT_KNOWLEDGE_BUNDLE_PATH } from "./concept.js";
6
+ import { KNOWLEDGE_CONFIG_PATH, parseKnowledgeConfig } from "./location.js";
6
7
  const USAGE = "usage: wardby knowledge check [dir] [--root <repo root>] [--strict] [--json]";
7
8
  export function parseKnowledgeArgs(args) {
8
9
  const [sub, ...rest] = args;
@@ -16,7 +17,7 @@ export function parseKnowledgeArgs(args) {
16
17
  if (positionals.length > 1)
17
18
  throw new Error(USAGE);
18
19
  return {
19
- dir: positionals[0] ?? DEFAULT_KNOWLEDGE_BUNDLE_PATH,
20
+ dir: positionals[0],
20
21
  root: values.root ?? ".",
21
22
  strict: values.strict ?? false,
22
23
  json: values.json ?? false,
@@ -43,10 +44,38 @@ export function loadBundle(dir) {
43
44
  walk(dir);
44
45
  return files;
45
46
  }
47
+ /**
48
+ * The bundle folder when no `dir` is given: the one `.wardby/knowledge.yaml`
49
+ * under `root` names, else the default. An unusable file is reported as an
50
+ * error (the server would ignore it) and the default is checked instead.
51
+ */
52
+ export function bundleDirFromConfig(root) {
53
+ let text;
54
+ try {
55
+ text = readFileSync(join(root, KNOWLEDGE_CONFIG_PATH), "utf8");
56
+ }
57
+ catch (err) {
58
+ if (err.code === "ENOENT")
59
+ return { dir: DEFAULT_KNOWLEDGE_BUNDLE_PATH };
60
+ return { dir: DEFAULT_KNOWLEDGE_BUNDLE_PATH, configError: `it could not be read (${err.message})` };
61
+ }
62
+ const parsed = parseKnowledgeConfig(text);
63
+ return parsed.ok ? { dir: parsed.bundlePath } : { dir: DEFAULT_KNOWLEDGE_BUNDLE_PATH, configError: parsed.error };
64
+ }
46
65
  export async function knowledgeCommand(args) {
47
66
  const options = parseKnowledgeArgs(args);
48
67
  const root = resolve(options.root);
49
- const files = loadBundle(resolve(root, options.dir));
68
+ const located = options.dir === undefined ? bundleDirFromConfig(root) : { dir: options.dir };
69
+ const dir = located.dir;
70
+ const configIssue = located.configError
71
+ ? {
72
+ severity: "error",
73
+ code: "knowledge_config_invalid",
74
+ file: KNOWLEDGE_CONFIG_PATH,
75
+ message: `ignored because ${located.configError}; checked ${DEFAULT_KNOWLEDGE_BUNDLE_PATH}/ instead`,
76
+ }
77
+ : undefined;
78
+ const files = loadBundle(resolve(root, dir));
50
79
  const issues = checkBundle({ files }, (path) => {
51
80
  try {
52
81
  return readFileSync(join(root, path), "utf8");
@@ -55,11 +84,15 @@ export async function knowledgeCommand(args) {
55
84
  return null;
56
85
  }
57
86
  });
87
+ if (configIssue)
88
+ issues.unshift(configIssue);
58
89
  if (options.json)
59
90
  process.stdout.write(`${JSON.stringify({ issues }, null, 2)}\n`);
60
91
  else {
61
- for (const issue of issues)
62
- process.stdout.write(`${issue.severity} ${issue.code} ${options.dir}/${issue.file}: ${issue.message}\n`);
92
+ for (const issue of issues) {
93
+ const where = issue === configIssue ? issue.file : `${dir}/${issue.file}`;
94
+ process.stdout.write(`${issue.severity} ${issue.code} ${where}: ${issue.message}\n`);
95
+ }
63
96
  process.stdout.write(`${files.size} files checked, ${issues.filter((i) => i.severity === "error").length} errors, ${issues.filter((i) => i.severity === "warning").length} warnings\n`);
64
97
  }
65
98
  if (issues.some((i) => i.severity === "error" || (options.strict && i.severity === "warning")))