@wardby/cli 0.2.1 → 0.4.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 (555) hide show
  1. package/.env.example +53 -4
  2. package/README.md +52 -13
  3. package/dist/claude-coding-worker/driver.d.ts +6 -1
  4. package/dist/claude-coding-worker/driver.js +27 -1
  5. package/dist/claude-coding-worker/main.js +2 -0
  6. package/dist/claude-coding-worker/tool-socket.d.ts +9 -0
  7. package/dist/claude-coding-worker/tool-socket.js +26 -0
  8. package/dist/cli-help.d.ts +1 -1
  9. package/dist/cli-help.js +14 -4
  10. package/dist/cli.d.ts +1 -1
  11. package/dist/cli.js +284 -36
  12. package/dist/coding/base-commit.d.ts +6 -0
  13. package/dist/coding/base-commit.js +12 -0
  14. package/dist/coding/collect-exclude.d.ts +25 -0
  15. package/dist/coding/collect-exclude.js +76 -0
  16. package/dist/coding/profile.d.ts +67 -22
  17. package/dist/coding/profile.js +58 -25
  18. package/dist/coding/protected-path-wording.d.ts +24 -0
  19. package/dist/coding/protected-path-wording.js +55 -0
  20. package/dist/coding/protected-paths.d.ts +31 -0
  21. package/dist/coding/protected-paths.js +48 -0
  22. package/dist/coding/protocol.d.ts +91 -4
  23. package/dist/coding/protocol.js +123 -12
  24. package/dist/coding/provider.d.ts +6 -1
  25. package/dist/coding/provider.js +16 -9
  26. package/dist/coding/registry/adapters.d.ts +2 -0
  27. package/dist/coding/registry/adapters.js +9 -0
  28. package/dist/coding/registry/allowlist.d.ts +9 -0
  29. package/dist/coding/registry/allowlist.js +28 -0
  30. package/dist/coding/registry/json-scan.d.ts +55 -0
  31. package/dist/coding/registry/json-scan.js +191 -0
  32. package/dist/coding/registry/lockfiles.d.ts +6 -0
  33. package/dist/coding/registry/lockfiles.js +89 -0
  34. package/dist/coding/registry/npm-lockfile.d.ts +9 -0
  35. package/dist/coding/registry/npm-lockfile.js +73 -0
  36. package/dist/coding/registry/npm-plan.d.ts +29 -0
  37. package/dist/coding/registry/npm-plan.js +289 -0
  38. package/dist/coding/registry/npm.d.ts +7 -0
  39. package/dist/coding/registry/npm.js +252 -0
  40. package/dist/coding/registry/pypi.d.ts +4 -0
  41. package/dist/coding/registry/pypi.js +210 -0
  42. package/dist/coding/registry/report.d.ts +37 -0
  43. package/dist/coding/registry/report.js +31 -0
  44. package/dist/coding/registry/token.d.ts +4 -0
  45. package/dist/coding/registry/token.js +7 -0
  46. package/dist/coding/registry/types.d.ts +286 -0
  47. package/dist/coding/registry/types.js +19 -0
  48. package/dist/coding/registry/worker-config.d.ts +14 -0
  49. package/dist/coding/registry/worker-config.js +31 -0
  50. package/dist/coding/services/builtins.d.ts +22 -0
  51. package/dist/coding/services/builtins.js +85 -0
  52. package/dist/coding/services/catalog.d.ts +443 -0
  53. package/dist/coding/services/catalog.js +159 -0
  54. package/dist/coding/services/declaration.d.ts +11 -0
  55. package/dist/coding/services/declaration.js +114 -0
  56. package/dist/coding/services/note.d.ts +8 -0
  57. package/dist/coding/services/note.js +15 -0
  58. package/dist/coding/services/resolve.d.ts +25 -0
  59. package/dist/coding/services/resolve.js +50 -0
  60. package/dist/coding/services/wording.d.ts +25 -0
  61. package/dist/coding/services/wording.js +70 -0
  62. package/dist/coding-proxy/main.js +24 -4
  63. package/dist/coding-worker/artifact.d.ts +6 -0
  64. package/dist/coding-worker/debug-trace.d.ts +37 -0
  65. package/dist/coding-worker/debug-trace.js +117 -0
  66. package/dist/coding-worker/driver.d.ts +13 -1
  67. package/dist/coding-worker/driver.js +102 -13
  68. package/dist/coding-worker/errors.js +8 -0
  69. package/dist/coding-worker/main.js +10 -2
  70. package/dist/coding-worker/sdk.d.ts +2 -2
  71. package/dist/coding-worker/sdk.js +7 -2
  72. package/dist/coding-worker/types.d.ts +3 -0
  73. package/dist/config/providers.d.ts +66 -0
  74. package/dist/config/providers.js +137 -0
  75. package/dist/core/attribution.d.ts +101 -0
  76. package/dist/core/attribution.js +208 -0
  77. package/dist/core/budget-groups.d.ts +120 -10
  78. package/dist/core/budget-groups.js +133 -24
  79. package/dist/core/budget-wording.d.ts +22 -0
  80. package/dist/core/budget-wording.js +55 -0
  81. package/dist/core/coding-queue.d.ts +3 -0
  82. package/dist/core/coding-queue.js +6 -2
  83. package/dist/core/coding-service-status.d.ts +11 -0
  84. package/dist/core/coding-service-status.js +17 -0
  85. package/dist/core/cost-report.d.ts +88 -0
  86. package/dist/core/cost-report.js +248 -0
  87. package/dist/core/datastores.js +18 -2
  88. package/dist/core/db.d.ts +5 -1
  89. package/dist/core/db.js +8 -2
  90. package/dist/core/dispatch.d.ts +74 -7
  91. package/dist/core/dispatch.js +382 -47
  92. package/dist/core/engine-native.js +44 -14
  93. package/dist/core/glob.d.ts +10 -0
  94. package/dist/core/glob.js +33 -0
  95. package/dist/core/grants.d.ts +86 -0
  96. package/dist/core/grants.js +126 -0
  97. package/dist/core/host-events.d.ts +72 -0
  98. package/dist/core/host-events.js +597 -0
  99. package/dist/core/host-identity-links.d.ts +54 -0
  100. package/dist/core/host-identity-links.js +189 -0
  101. package/dist/core/host-status.d.ts +78 -0
  102. package/dist/core/host-status.js +228 -0
  103. package/dist/core/in-flight-runs.d.ts +8 -0
  104. package/dist/core/in-flight-runs.js +56 -0
  105. package/dist/core/issue-bridge.d.ts +60 -0
  106. package/dist/core/issue-bridge.js +189 -0
  107. package/dist/core/issue-dedupe.d.ts +70 -0
  108. package/dist/core/issue-dedupe.js +255 -0
  109. package/dist/core/issue-events.d.ts +42 -0
  110. package/dist/core/issue-events.js +155 -0
  111. package/dist/core/issue-status.d.ts +29 -0
  112. package/dist/core/issue-status.js +241 -0
  113. package/dist/core/issue-tracker-tools.d.ts +64 -0
  114. package/dist/core/issue-tracker-tools.js +850 -0
  115. package/dist/core/model-usage.d.ts +10 -0
  116. package/dist/core/model-usage.js +24 -0
  117. package/dist/core/provider-wording.d.ts +12 -0
  118. package/dist/core/provider-wording.js +44 -0
  119. package/dist/core/reconciler.d.ts +42 -2
  120. package/dist/core/reconciler.js +97 -2
  121. package/dist/core/repo-access.d.ts +99 -0
  122. package/dist/core/repo-access.js +136 -0
  123. package/dist/core/review-host-checks.d.ts +11 -0
  124. package/dist/core/review-host-checks.js +41 -0
  125. package/dist/core/review-host-tools.d.ts +47 -0
  126. package/dist/core/review-host-tools.js +354 -0
  127. package/dist/core/run-heartbeat.d.ts +27 -0
  128. package/dist/core/run-heartbeat.js +54 -0
  129. package/dist/core/run-pricing.d.ts +61 -0
  130. package/dist/core/run-pricing.js +56 -0
  131. package/dist/core/runner.d.ts +33 -8
  132. package/dist/core/runner.js +410 -62
  133. package/dist/core/scheduler.d.ts +4 -1
  134. package/dist/core/scheduler.js +3 -2
  135. package/dist/core/secrets.d.ts +11 -2
  136. package/dist/core/secrets.js +25 -6
  137. package/dist/core/self-defects.d.ts +80 -0
  138. package/dist/core/self-defects.js +180 -0
  139. package/dist/core/subagent-memory-tools.d.ts +1 -1
  140. package/dist/core/subagent-memory-tools.js +16 -3
  141. package/dist/core/tool-admin.d.ts +81 -0
  142. package/dist/core/tool-admin.js +129 -0
  143. package/dist/core/tool-names.d.ts +42 -0
  144. package/dist/core/tool-names.js +67 -0
  145. package/dist/core/untrusted-content.d.ts +32 -0
  146. package/dist/core/untrusted-content.js +72 -0
  147. package/dist/core/webhooks.d.ts +17 -2
  148. package/dist/core/webhooks.js +42 -3
  149. package/dist/generated/prisma/browser.d.ts +166 -0
  150. package/dist/generated/prisma/client.d.ts +166 -0
  151. package/dist/generated/prisma/commonInputTypes.d.ts +152 -52
  152. package/dist/generated/prisma/enums.d.ts +13 -0
  153. package/dist/generated/prisma/enums.js +12 -1
  154. package/dist/generated/prisma/internal/class.d.ts +242 -0
  155. package/dist/generated/prisma/internal/class.js +4 -4
  156. package/dist/generated/prisma/internal/prismaNamespace.d.ts +2571 -577
  157. package/dist/generated/prisma/internal/prismaNamespace.js +312 -6
  158. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +328 -0
  159. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +312 -6
  160. package/dist/generated/prisma/models/Agent.d.ts +682 -1
  161. package/dist/generated/prisma/models/AgentIssueProject.d.ts +1838 -0
  162. package/dist/generated/prisma/models/AgentIssueProject.js +1 -0
  163. package/dist/generated/prisma/models/AgentRepository.d.ts +1425 -0
  164. package/dist/generated/prisma/models/AgentRepository.js +1 -0
  165. package/dist/generated/prisma/models/AgentTool.d.ts +95 -1
  166. package/dist/generated/prisma/models/AuthUser.d.ts +56 -1
  167. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +258 -7
  168. package/dist/generated/prisma/models/CodingProxySession.d.ts +195 -2
  169. package/dist/generated/prisma/models/CodingRun.d.ts +1405 -95
  170. package/dist/generated/prisma/models/CodingRunServiceStatus.d.ts +1404 -0
  171. package/dist/generated/prisma/models/CodingRunServiceStatus.js +1 -0
  172. package/dist/generated/prisma/models/CodingService.d.ts +1348 -0
  173. package/dist/generated/prisma/models/CodingService.js +1 -0
  174. package/dist/generated/prisma/models/HostEventDelivery.d.ts +946 -0
  175. package/dist/generated/prisma/models/HostEventDelivery.js +1 -0
  176. package/dist/generated/prisma/models/HostIdentity.d.ts +1232 -0
  177. package/dist/generated/prisma/models/HostIdentity.js +1 -0
  178. package/dist/generated/prisma/models/HostIdentityLinkRequest.d.ts +1473 -0
  179. package/dist/generated/prisma/models/HostIdentityLinkRequest.js +1 -0
  180. package/dist/generated/prisma/models/IssueFingerprint.d.ts +1183 -0
  181. package/dist/generated/prisma/models/IssueFingerprint.js +1 -0
  182. package/dist/generated/prisma/models/IssuePullRequest.d.ts +1255 -0
  183. package/dist/generated/prisma/models/IssuePullRequest.js +1 -0
  184. package/dist/generated/prisma/models/ModelCatalogEntry.d.ts +1322 -0
  185. package/dist/generated/prisma/models/ModelCatalogEntry.js +1 -0
  186. package/dist/generated/prisma/models/Principal.d.ts +455 -0
  187. package/dist/generated/prisma/models/RegistryAllowance.d.ts +1148 -0
  188. package/dist/generated/prisma/models/RegistryAllowance.js +1 -0
  189. package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +1219 -0
  190. package/dist/generated/prisma/models/RegistryApprovedVersion.js +1 -0
  191. package/dist/generated/prisma/models/RegistryFetch.d.ts +1428 -0
  192. package/dist/generated/prisma/models/RegistryFetch.js +1 -0
  193. package/dist/generated/prisma/models/RegistryPlanRefusal.d.ts +1294 -0
  194. package/dist/generated/prisma/models/RegistryPlanRefusal.js +1 -0
  195. package/dist/generated/prisma/models/RegistryVersionFact.d.ts +1085 -0
  196. package/dist/generated/prisma/models/RegistryVersionFact.js +1 -0
  197. package/dist/generated/prisma/models/ResourceGrant.d.ts +1437 -0
  198. package/dist/generated/prisma/models/ResourceGrant.js +1 -0
  199. package/dist/generated/prisma/models/Run.d.ts +1402 -82
  200. package/dist/generated/prisma/models/RunAttribution.d.ts +1259 -0
  201. package/dist/generated/prisma/models/RunAttribution.js +1 -0
  202. package/dist/generated/prisma/models/RunHostCheck.d.ts +1239 -0
  203. package/dist/generated/prisma/models/RunHostCheck.js +1 -0
  204. package/dist/generated/prisma/models/RunHostStatus.d.ts +1315 -0
  205. package/dist/generated/prisma/models/RunHostStatus.js +1 -0
  206. package/dist/generated/prisma/models/RunIssueStatus.d.ts +1199 -0
  207. package/dist/generated/prisma/models/RunIssueStatus.js +1 -0
  208. package/dist/generated/prisma/models/RunModelUsage.d.ts +1316 -0
  209. package/dist/generated/prisma/models/RunModelUsage.js +1 -0
  210. package/dist/generated/prisma/models/Tool.d.ts +15 -3
  211. package/dist/generated/prisma/models/WorkItem.d.ts +1408 -0
  212. package/dist/generated/prisma/models/WorkItem.js +1 -0
  213. package/dist/generated/prisma/models.d.ts +22 -0
  214. package/dist/help/build.d.ts +1 -0
  215. package/dist/help/build.js +9 -0
  216. package/dist/help/catalog.d.ts +24 -0
  217. package/dist/help/catalog.js +160 -0
  218. package/dist/help/cli.d.ts +2 -0
  219. package/dist/help/cli.js +65 -0
  220. package/dist/help/runtime.d.ts +3 -0
  221. package/dist/help/runtime.js +44 -0
  222. package/dist/help/search.d.ts +9 -0
  223. package/dist/help/search.js +104 -0
  224. package/dist/help-index.json +999 -0
  225. package/dist/import/cli-args.js +3 -2
  226. package/dist/import/create.d.ts +5 -0
  227. package/dist/import/create.js +67 -13
  228. package/dist/import/index.js +19 -9
  229. package/dist/import/neutral-schema.d.ts +18 -18
  230. package/dist/knowledge/check.d.ts +13 -0
  231. package/dist/knowledge/check.js +69 -0
  232. package/dist/knowledge/cli.d.ts +14 -0
  233. package/dist/knowledge/cli.js +67 -0
  234. package/dist/knowledge/concept.d.ts +54 -0
  235. package/dist/knowledge/concept.js +78 -0
  236. package/dist/knowledge/note.d.ts +11 -0
  237. package/dist/knowledge/note.js +39 -0
  238. package/dist/knowledge/relevance.d.ts +11 -0
  239. package/dist/knowledge/relevance.js +14 -0
  240. package/dist/knowledge/span-hash.d.ts +3 -0
  241. package/dist/knowledge/span-hash.js +16 -0
  242. package/dist/mcp/auth/access.d.ts +72 -0
  243. package/dist/mcp/auth/access.js +58 -0
  244. package/dist/mcp/auth/grants-cli.d.ts +149 -0
  245. package/dist/mcp/auth/grants-cli.js +518 -0
  246. package/dist/mcp/auth/host-account-cli.d.ts +2 -0
  247. package/dist/mcp/auth/host-account-cli.js +47 -0
  248. package/dist/mcp/auth/ownership.d.ts +25 -51
  249. package/dist/mcp/auth/ownership.js +19 -14
  250. package/dist/mcp/auth/repo-authorization.d.ts +22 -0
  251. package/dist/mcp/auth/repo-authorization.js +51 -0
  252. package/dist/mcp/auth/resource-server.d.ts +33 -2
  253. package/dist/mcp/auth/resource-server.js +99 -3
  254. package/dist/mcp/auth/self-hosted/browser.js +2 -2
  255. package/dist/mcp/auth/self-hosted/cli.js +47 -13
  256. package/dist/mcp/auth/self-hosted/credentials.d.ts +23 -5
  257. package/dist/mcp/auth/self-hosted/credentials.js +62 -4
  258. package/dist/mcp/auth/self-hosted/session.d.ts +7 -6
  259. package/dist/mcp/context.d.ts +30 -1
  260. package/dist/mcp/errors.d.ts +25 -6
  261. package/dist/mcp/errors.js +98 -0
  262. package/dist/mcp/host-events/deliveries.d.ts +9 -0
  263. package/dist/mcp/host-events/deliveries.js +17 -0
  264. package/dist/mcp/host-events/github-ingress.d.ts +38 -0
  265. package/dist/mcp/host-events/github-ingress.js +83 -0
  266. package/dist/mcp/host-events/github-user-callback.d.ts +18 -0
  267. package/dist/mcp/host-events/github-user-callback.js +50 -0
  268. package/dist/mcp/host-events/jira-ingress.d.ts +29 -0
  269. package/dist/mcp/host-events/jira-ingress.js +92 -0
  270. package/dist/mcp/index.d.ts +10 -1
  271. package/dist/mcp/index.js +187 -19
  272. package/dist/mcp/server.js +32 -11
  273. package/dist/mcp/tools/agents.js +519 -50
  274. package/dist/mcp/tools/budget-groups.js +3 -3
  275. package/dist/mcp/tools/cost-report.d.ts +8 -0
  276. package/dist/mcp/tools/cost-report.js +60 -0
  277. package/dist/mcp/tools/datastore.js +22 -15
  278. package/dist/mcp/tools/grants.d.ts +2 -0
  279. package/dist/mcp/tools/grants.js +239 -0
  280. package/dist/mcp/tools/help.d.ts +5 -0
  281. package/dist/mcp/tools/help.js +67 -0
  282. package/dist/mcp/tools/host-accounts.d.ts +2 -0
  283. package/dist/mcp/tools/host-accounts.js +114 -0
  284. package/dist/mcp/tools/issue-projects.d.ts +2 -0
  285. package/dist/mcp/tools/issue-projects.js +238 -0
  286. package/dist/mcp/tools/memory.d.ts +7 -1
  287. package/dist/mcp/tools/memory.js +5 -5
  288. package/dist/mcp/tools/model-catalog.d.ts +22 -0
  289. package/dist/mcp/tools/model-catalog.js +423 -0
  290. package/dist/mcp/tools/repositories.d.ts +2 -0
  291. package/dist/mcp/tools/repositories.js +182 -0
  292. package/dist/mcp/tools/runs.d.ts +6 -0
  293. package/dist/mcp/tools/runs.js +60 -6
  294. package/dist/mcp/tools/scheduling.js +3 -6
  295. package/dist/mcp/tools/secrets.js +18 -6
  296. package/dist/mcp/tools/services.d.ts +2 -0
  297. package/dist/mcp/tools/services.js +222 -0
  298. package/dist/mcp/tools/subagents.js +52 -16
  299. package/dist/mcp/tools/tools.d.ts +41 -0
  300. package/dist/mcp/tools/tools.js +201 -40
  301. package/dist/mcp/tools/trigger.js +65 -7
  302. package/dist/mcp/tools/webhooks.js +15 -4
  303. package/dist/mcp/transport/streamable-http.d.ts +15 -0
  304. package/dist/mcp/transport/streamable-http.js +55 -3
  305. package/dist/mcp/webhooks/ingress.d.ts +2 -1
  306. package/dist/mcp/webhooks/ingress.js +9 -2
  307. package/dist/providers/auth/delegating.d.ts +19 -0
  308. package/dist/providers/auth/delegating.js +71 -0
  309. package/dist/providers/auth/index.d.ts +2 -0
  310. package/dist/providers/auth/index.js +11 -0
  311. package/dist/providers/auth/self-hosted.d.ts +10 -2
  312. package/dist/providers/auth/self-hosted.js +55 -6
  313. package/dist/providers/auth/types.d.ts +6 -0
  314. package/dist/providers/coding-proxy/memory-ledger.d.ts +4 -1
  315. package/dist/providers/coding-proxy/memory-ledger.js +31 -3
  316. package/dist/providers/coding-proxy/metering.d.ts +6 -1
  317. package/dist/providers/coding-proxy/metering.js +41 -4
  318. package/dist/providers/coding-proxy/prisma-ledger.d.ts +17 -0
  319. package/dist/providers/coding-proxy/prisma-ledger.js +106 -8
  320. package/dist/providers/coding-proxy/proxy.d.ts +25 -2
  321. package/dist/providers/coding-proxy/proxy.js +561 -38
  322. package/dist/providers/coding-proxy/registry/audit.d.ts +131 -0
  323. package/dist/providers/coding-proxy/registry/audit.js +380 -0
  324. package/dist/providers/coding-proxy/registry/bounded-fetch.d.ts +16 -0
  325. package/dist/providers/coding-proxy/registry/bounded-fetch.js +77 -0
  326. package/dist/providers/coding-proxy/registry/plan.d.ts +58 -0
  327. package/dist/providers/coding-proxy/registry/plan.js +304 -0
  328. package/dist/providers/coding-proxy/registry/prisma-store.d.ts +34 -0
  329. package/dist/providers/coding-proxy/registry/prisma-store.js +151 -0
  330. package/dist/providers/coding-proxy/registry/service.d.ts +213 -0
  331. package/dist/providers/coding-proxy/registry/service.js +1137 -0
  332. package/dist/providers/coding-proxy/registry/store.d.ts +127 -0
  333. package/dist/providers/coding-proxy/registry/store.js +70 -0
  334. package/dist/providers/coding-proxy/runtime.d.ts +17 -0
  335. package/dist/providers/coding-proxy/runtime.js +63 -0
  336. package/dist/providers/coding-proxy/secure-fetch.js +0 -1
  337. package/dist/providers/coding-proxy/server.d.ts +11 -0
  338. package/dist/providers/coding-proxy/server.js +163 -0
  339. package/dist/providers/coding-proxy/types.d.ts +33 -1
  340. package/dist/providers/coding-proxy/types.js +12 -1
  341. package/dist/providers/engine/types.d.ts +29 -0
  342. package/dist/providers/executor/build.d.ts +2 -2
  343. package/dist/providers/executor/composition.d.ts +3 -0
  344. package/dist/providers/executor/composition.js +28 -1
  345. package/dist/providers/executor/container.d.ts +134 -4
  346. package/dist/providers/executor/container.js +394 -37
  347. package/dist/providers/executor/dbos.d.ts +4 -3
  348. package/dist/providers/executor/dbos.js +7 -5
  349. package/dist/providers/executor/in-process.d.ts +2 -3
  350. package/dist/providers/executor/routing.d.ts +13 -0
  351. package/dist/providers/executor/routing.js +18 -0
  352. package/dist/providers/executor/types.d.ts +34 -0
  353. package/dist/providers/issue-tracker/adf.d.ts +31 -0
  354. package/dist/providers/issue-tracker/adf.js +181 -0
  355. package/dist/providers/issue-tracker/index.d.ts +5 -0
  356. package/dist/providers/issue-tracker/index.js +12 -0
  357. package/dist/providers/issue-tracker/jira-client.d.ts +41 -0
  358. package/dist/providers/issue-tracker/jira-client.js +151 -0
  359. package/dist/providers/issue-tracker/jira-events.d.ts +3 -0
  360. package/dist/providers/issue-tracker/jira-events.js +98 -0
  361. package/dist/providers/issue-tracker/jira.d.ts +116 -0
  362. package/dist/providers/issue-tracker/jira.js +502 -0
  363. package/dist/providers/issue-tracker/types.d.ts +269 -0
  364. package/dist/providers/issue-tracker/types.js +16 -0
  365. package/dist/providers/jobs/claude-tool-setup.d.ts +23 -0
  366. package/dist/providers/jobs/claude-tool-setup.js +50 -0
  367. package/dist/providers/jobs/collect-prune.d.ts +7 -0
  368. package/dist/providers/jobs/collect-prune.js +27 -0
  369. package/dist/providers/jobs/docker-isolation.d.ts +48 -3
  370. package/dist/providers/jobs/docker-isolation.js +213 -22
  371. package/dist/providers/jobs/docker-services.d.ts +35 -0
  372. package/dist/providers/jobs/docker-services.js +191 -0
  373. package/dist/providers/jobs/docker.d.ts +53 -2
  374. package/dist/providers/jobs/docker.js +307 -32
  375. package/dist/providers/jobs/fake-kubernetes-api.d.ts +1 -0
  376. package/dist/providers/jobs/fake-kubernetes-api.js +12 -3
  377. package/dist/providers/jobs/kubernetes-isolation.d.ts +17 -2
  378. package/dist/providers/jobs/kubernetes-isolation.js +238 -57
  379. package/dist/providers/jobs/kubernetes-platform.d.ts +10 -4
  380. package/dist/providers/jobs/kubernetes-platform.js +11 -5
  381. package/dist/providers/jobs/kubernetes-preflight.js +3 -0
  382. package/dist/providers/jobs/kubernetes.d.ts +24 -2
  383. package/dist/providers/jobs/kubernetes.js +153 -22
  384. package/dist/providers/jobs/service-state.d.ts +22 -0
  385. package/dist/providers/jobs/service-state.js +17 -0
  386. package/dist/providers/jobs/types.d.ts +18 -0
  387. package/dist/providers/llm/anthropic.d.ts +3 -3
  388. package/dist/providers/llm/anthropic.js +3 -5
  389. package/dist/providers/llm/bedrock.d.ts +3 -3
  390. package/dist/providers/llm/bedrock.js +3 -8
  391. package/dist/providers/llm/catalog-lookup.d.ts +10 -0
  392. package/dist/providers/llm/catalog-lookup.js +15 -0
  393. package/dist/providers/llm/catalog-shipped.d.ts +18 -0
  394. package/dist/providers/llm/catalog-shipped.js +197 -0
  395. package/dist/providers/llm/catalog-store.d.ts +58 -0
  396. package/dist/providers/llm/catalog-store.js +138 -0
  397. package/dist/providers/llm/catalog-types.d.ts +66 -0
  398. package/dist/providers/llm/catalog-types.js +64 -0
  399. package/dist/providers/llm/catalog.d.ts +61 -0
  400. package/dist/providers/llm/catalog.js +147 -0
  401. package/dist/providers/llm/claude-messages.d.ts +5 -1
  402. package/dist/providers/llm/claude-messages.js +1 -0
  403. package/dist/providers/llm/claude-provider.d.ts +10 -12
  404. package/dist/providers/llm/claude-provider.js +15 -6
  405. package/dist/providers/llm/index.d.ts +9 -6
  406. package/dist/providers/llm/index.js +8 -5
  407. package/dist/providers/llm/openai.d.ts +14 -5
  408. package/dist/providers/llm/openai.js +24 -14
  409. package/dist/providers/llm/pricing-core.d.ts +5 -3
  410. package/dist/providers/llm/registration.js +8 -12
  411. package/dist/providers/llm/routing.d.ts +21 -11
  412. package/dist/providers/llm/routing.js +47 -13
  413. package/dist/providers/llm/types.d.ts +12 -0
  414. package/dist/providers/llm/types.js +8 -1
  415. package/dist/providers/review-host/diff-lines.d.ts +16 -0
  416. package/dist/providers/review-host/diff-lines.js +59 -0
  417. package/dist/providers/review-host/github-events.d.ts +6 -0
  418. package/dist/providers/review-host/github-events.js +226 -0
  419. package/dist/providers/review-host/github-user-auth.d.ts +38 -0
  420. package/dist/providers/review-host/github-user-auth.js +128 -0
  421. package/dist/providers/review-host/github.d.ts +57 -0
  422. package/dist/providers/review-host/github.js +568 -0
  423. package/dist/providers/review-host/index.d.ts +12 -0
  424. package/dist/providers/review-host/index.js +30 -0
  425. package/dist/providers/review-host/review-format.d.ts +19 -0
  426. package/dist/providers/review-host/review-format.js +59 -0
  427. package/dist/providers/review-host/types.d.ts +309 -0
  428. package/dist/providers/review-host/types.js +24 -0
  429. package/dist/providers/vcs/git.d.ts +16 -6
  430. package/dist/providers/vcs/git.js +78 -34
  431. package/dist/providers/vcs/github.d.ts +94 -3
  432. package/dist/providers/vcs/github.js +223 -17
  433. package/dist/providers/vcs/types.d.ts +48 -4
  434. package/dist/quickstart/index.d.ts +2 -0
  435. package/dist/quickstart/index.js +36 -8
  436. package/dist/sandbox/fetch-policy.d.ts +20 -2
  437. package/dist/sandbox/fetch-policy.js +64 -3
  438. package/dist/sandbox/host-functions.d.ts +9 -1
  439. package/dist/sandbox/host-functions.js +12 -5
  440. package/dist/serve.js +8 -2
  441. package/dist/viewer/api-schema.d.ts +2757 -0
  442. package/dist/viewer/api-schema.js +165 -0
  443. package/dist/viewer/build-schemas.d.ts +2 -0
  444. package/dist/viewer/build-schemas.js +18 -0
  445. package/dist/viewer/event-bus.d.ts +38 -0
  446. package/dist/viewer/event-bus.js +232 -0
  447. package/dist/viewer/graph.d.ts +40 -0
  448. package/dist/viewer/graph.js +243 -0
  449. package/dist/viewer/http.d.ts +30 -0
  450. package/dist/viewer/http.js +133 -0
  451. package/dist/viewer/run-detail.d.ts +4 -0
  452. package/dist/viewer/run-detail.js +61 -0
  453. package/dist/wardby-bin.js +11 -0
  454. package/docs/README.md +40 -0
  455. package/docs/agent-recipes.md +383 -0
  456. package/docs/architecture-runtime.md +90 -0
  457. package/docs/assets/brand/wardby-icon-512.png +0 -0
  458. package/docs/assets/brand/wardby-icon.svg +16 -0
  459. package/docs/assets/brand/wardby-mascot-profile-512.png +0 -0
  460. package/docs/assets/brand/wardby-mascot.png +0 -0
  461. package/docs/assets/brand/wardby-mascot.svg +5 -0
  462. package/docs/assets/wardby-workflow.svg +106 -0
  463. package/docs/code-review-agents.md +508 -0
  464. package/docs/coding-agent-setup.md +175 -0
  465. package/docs/coding-packages.md +455 -0
  466. package/docs/coding-services.md +300 -0
  467. package/docs/coding-worker-byo-images.md +98 -0
  468. package/docs/coding-worker-isolation.md +1068 -0
  469. package/docs/getting-started-gke.md +632 -0
  470. package/docs/getting-started-identity-provider.md +319 -0
  471. package/docs/getting-started.md +147 -0
  472. package/docs/jira-agents.md +649 -0
  473. package/docs/knowledge.md +387 -0
  474. package/docs/models.md +221 -0
  475. package/docs/observability.md +53 -0
  476. package/docs/release-verification.md +66 -0
  477. package/docs/security-deployment.md +667 -0
  478. package/docs/viewer-api.md +142 -0
  479. package/help/admin-viewer.md +39 -0
  480. package/help/agent-recipes.md +173 -0
  481. package/help/architecture-agent.md +189 -0
  482. package/help/builder-agent.md +80 -0
  483. package/help/code-review-agents.md +37 -0
  484. package/help/coding-packages.md +31 -0
  485. package/help/coding-services.md +71 -0
  486. package/help/cost-attribution.md +67 -0
  487. package/help/creating-agents.md +90 -0
  488. package/help/deploy-gke.md +45 -0
  489. package/help/deployment-targets.md +39 -0
  490. package/help/errors/budget-group-exhausted.md +25 -0
  491. package/help/errors/docker-isolation-unsupported.md +26 -0
  492. package/help/errors/model-unavailable.md +63 -0
  493. package/help/errors/protected-path.md +45 -0
  494. package/help/errors/repo-access.md +27 -0
  495. package/help/errors/service-declaration-invalid.md +27 -0
  496. package/help/errors/service-declaration-unavailable.md +25 -0
  497. package/help/errors/service-launcher-unsupported.md +30 -0
  498. package/help/errors/service-not-allowed.md +27 -0
  499. package/help/errors/service-unknown.md +23 -0
  500. package/help/errors/service-unready.md +49 -0
  501. package/help/getting-started.md +32 -0
  502. package/help/github.md +48 -0
  503. package/help/identity-and-access.md +44 -0
  504. package/help/jira.md +135 -0
  505. package/help/knowledge.md +47 -0
  506. package/help/mcp.md +30 -0
  507. package/help/models.md +90 -0
  508. package/help/native-capabilities.md +30 -0
  509. package/help/observability.md +41 -0
  510. package/help/operating-agents.md +36 -0
  511. package/help/security.md +27 -0
  512. package/help/troubleshooting/budgets.md +32 -0
  513. package/help/troubleshooting/coding-workers.md +47 -0
  514. package/help/troubleshooting/repository-access.md +27 -0
  515. package/package.json +14 -3
  516. package/prisma/migrations/20260925010000_coding_collect_exclude/migration.sql +8 -0
  517. package/prisma/migrations/20260925015000_allowed_egress_default/migration.sql +8 -0
  518. package/prisma/migrations/20260925020000_coding_package_registry/migration.sql +55 -0
  519. package/prisma/migrations/20260925030000_tool_name_per_owner/migration.sql +11 -0
  520. package/prisma/migrations/20260926010000_run_trigger_host_event/migration.sql +7 -0
  521. package/prisma/migrations/20260926020000_code_review_hosts/migration.sql +53 -0
  522. package/prisma/migrations/20260926030000_auth_user_roles/migration.sql +9 -0
  523. package/prisma/migrations/20260926040000_agent_effort/migration.sql +6 -0
  524. package/prisma/migrations/20260926050000_registry_lockfile_plan/migration.sql +32 -0
  525. package/prisma/migrations/20260926050000_repo_access_authorization/migration.sql +82 -0
  526. package/prisma/migrations/20260926060000_registry_plan_refusal/migration.sql +19 -0
  527. package/prisma/migrations/20260926100000_registry_plan_refusal_published_at/migration.sql +5 -0
  528. package/prisma/migrations/20260926190000_run_host_status/migration.sql +18 -0
  529. package/prisma/migrations/20260926210000_run_host_status_at_dispatch/migration.sql +5 -0
  530. package/prisma/migrations/20260927010000_resource_grants/migration.sql +72 -0
  531. package/prisma/migrations/20260927020000_proxy_session_budget_exhausted/migration.sql +3 -0
  532. package/prisma/migrations/20260927030000_coding_debug_trace/migration.sql +4 -0
  533. package/prisma/migrations/20260927040000_proxy_session_upstream_failure/migration.sql +3 -0
  534. package/prisma/migrations/20260927050000_coding_run_services/migration.sql +74 -0
  535. package/prisma/migrations/20260928000000_coding_run_tool_image/migration.sql +5 -0
  536. package/prisma/migrations/20260930000000_jira_issue_projects/migration.sql +34 -0
  537. package/prisma/migrations/20261001000000_jira_phase2_allowlists/migration.sql +3 -0
  538. package/prisma/migrations/20261001010000_jira_link_types_allowlist/migration.sql +2 -0
  539. package/prisma/migrations/20261002000000_jira_coding_bridge/migration.sql +28 -0
  540. package/prisma/migrations/20261002010000_jira_issue_creation/migration.sql +25 -0
  541. package/prisma/migrations/20261003000000_issue_cost_attribution/migration.sql +56 -0
  542. package/prisma/migrations/20261003010000_coding_run_service_status/migration.sql +23 -0
  543. package/prisma/migrations/20261003020000_viewer_notify/migration.sql +54 -0
  544. package/prisma/migrations/20261003030000_viewer_notify_fixes/migration.sql +47 -0
  545. package/prisma/migrations/20261003040000_viewer_indexes/migration.sql +12 -0
  546. package/prisma/migrations/20261004000000_model_catalog/migration.sql +26 -0
  547. package/prisma/schema.prisma +663 -21
  548. package/dist/mcp/tools/models.d.ts +0 -8
  549. package/dist/mcp/tools/models.js +0 -15
  550. package/dist/providers/llm/pricing-anthropic.d.ts +0 -4
  551. package/dist/providers/llm/pricing-anthropic.js +0 -30
  552. package/dist/providers/llm/pricing-bedrock-claude.d.ts +0 -12
  553. package/dist/providers/llm/pricing-bedrock-claude.js +0 -37
  554. package/dist/providers/llm/pricing.d.ts +0 -30
  555. package/dist/providers/llm/pricing.js +0 -74
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: errors/service-unknown
3
+ title: Service not in the catalog
4
+ summary: Wardby refused the coding run because the repository declares a service name and version the service catalog does not have.
5
+ audience: operator
6
+ tags: [error, coding-agents, services, refusal]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Service not in the catalog
11
+
12
+ `service_unknown` means `.wardby/services.yaml` on the base branch asks for a
13
+ name and version, such as `postgres 14`, that has no entry in Wardby's service
14
+ catalog. Wardby refuses the run before a coding worker starts.
15
+
16
+ 1. Run `list_services` (needs `agents:read`) to see the names and versions
17
+ available.
18
+ 2. Either change the declaration on the base branch to an available version,
19
+ or ask someone with `services:manage` and the `admin` or `service-manager`
20
+ role to add the entry with `create_service`, pinned by digest.
21
+ 3. Trigger a new run once the catalog or the declaration matches.
22
+
23
+ See [Coding services](../coding-services.md).
@@ -0,0 +1,49 @@
1
+ ---
2
+ id: errors/service-unready
3
+ title: Service did not become ready
4
+ summary: A coding run failed at launch because one of its services never passed its readiness check.
5
+ audience: operator
6
+ tags: [error, coding-agents, services, kubernetes, docker]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Service did not become ready
11
+
12
+ A run that failed with category `service_unready` (launcher error
13
+ `coding_service_unready:<name>`) started, but the named service never became
14
+ ready, so the coding agent never started. A service is not ready when its
15
+ readiness command keeps failing past its failure threshold, its image cannot
16
+ be pulled or started, or it is still not ready when the launcher's start-up
17
+ limit runs out.
18
+
19
+ 1. On Kubernetes, inspect the run pod's init-container status and events for
20
+ the `service-<name>` container: image pull errors, crash loops, or probe
21
+ failures. On Docker the service's container is removed with the failed run,
22
+ so reproduce it on the Docker host: pull the entry's image and run it with
23
+ `--read-only`, `--user 10001:10001`, a `--tmpfs` at its `dataPath` and at
24
+ each `writablePaths` entry, and its `serviceEnv`; then run its readiness
25
+ command with `docker exec`.
26
+ 2. For a custom catalog entry, confirm the image runs as a non-root user with a
27
+ read-only root filesystem: every directory it writes to must be its
28
+ `dataPath` or one of its `writablePaths`. Probe over TCP on `127.0.0.1`
29
+ rather than a Unix socket.
30
+ 3. Each entry's readiness settings (`periodSeconds`, `timeoutSeconds`,
31
+ `failureThreshold`) apply within an overall start-up limit, whatever the
32
+ entry's own threshold would otherwise allow. On Kubernetes that limit is
33
+ the pod-start timeout (`KUBERNETES_READY_TIMEOUT_MS`, default 120000, an
34
+ operator setting) and includes image pulls; if first pulls on new nodes
35
+ are slow, raise it or mirror the image into a nearby registry. On Docker
36
+ the limit is a fixed 120 seconds covering every service of the run
37
+ together (they start one at a time), never runs past the run's own
38
+ timeout, and has no setting to raise it; image pulls are not counted in it
39
+ but may take up to 5 minutes each. The Docker launcher pulls without
40
+ registry credentials, so pull a private or rate-limited image on the
41
+ Docker host beforehand.
42
+ 4. Trigger a new run once the cause is fixed.
43
+
44
+ When this run is a sub-run another agent dispatched (for example a router
45
+ handing work to a coding agent), the parent sees a failed sub-run on its own
46
+ status comment, with a line naming the service: "A sub-run could not start:
47
+ The `<name>` service didn't become ready, so the run couldn't start."
48
+
49
+ See [Coding services](../coding-services.md).
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: getting-started
3
+ title: Get started with Wardby
4
+ summary: Set up a local Wardby control plane, verify it, and choose the next guide.
5
+ audience: operator
6
+ tags: [setup, quickstart, operator]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Get started with Wardby
11
+
12
+ From the project you want Wardby to manage, run:
13
+
14
+ ```sh
15
+ npx --yes @wardby/cli@latest quickstart
16
+ ```
17
+
18
+ The quickstart creates local state under `.wardby/`, starts the local services,
19
+ applies the required database migrations, and can register Wardby with Codex or
20
+ Claude Code. Run `wardby doctor` afterwards to verify the local installation.
21
+
22
+ Use [Operate agents](operating-agents.md) to create and supervise managed work.
23
+ Read [Choose a native or coding agent](creating-agents.md) before creating your
24
+ first agent.
25
+ Use [MCP access](mcp.md) when connecting an MCP client. Before enabling coding
26
+ agents against a repository, complete [GitHub integration](github.md).
27
+ For two complete example setups, see [Agent recipes](agent-recipes.md).
28
+ For a self-hosted installation, start with [Choose a deployment target](deployment-targets.md)
29
+ and [Configure identity and privileged access](identity-and-access.md).
30
+
31
+ For complete local setup and deployment prerequisites, read
32
+ [`docs/getting-started.md`](../docs/getting-started.md).
package/help/github.md ADDED
@@ -0,0 +1,48 @@
1
+ ---
2
+ id: github-integration
3
+ title: Connect GitHub repositories
4
+ summary: Authorize repository access and configure Wardby coding or review agents through a scoped GitHub App.
5
+ audience: operator
6
+ tags: [github, repositories, coding-agents, code-review]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Connect GitHub repositories
11
+
12
+ Wardby uses a GitHub App installed only on the repositories an agent may use.
13
+ Repository access is checked against the agent owner's linked GitHub account,
14
+ or an explicitly recorded administrator approval. Coding agents need write
15
+ access because they can push a branch and open a draft pull request.
16
+
17
+ Wardby rechecks access before preparing a coding workspace and again before
18
+ pushing. Losing access, unlinking the account, or a failed access check stops
19
+ the run without publishing changes. See [Repository-access troubleshooting](troubleshooting/repository-access.md)
20
+ for the resulting refusal states.
21
+
22
+ Workers do not receive the GitHub App private key. A trusted component validates
23
+ the changes, pushes a controlled branch, and opens at most one draft pull
24
+ request. Wardby does not auto-merge coding-agent output.
25
+
26
+ Read [`docs/coding-agent-setup.md`](../docs/coding-agent-setup.md) for coding
27
+ agent setup and [`docs/code-review-agents.md`](../docs/code-review-agents.md)
28
+ for pull-request review agents and webhook configuration.
29
+ Use [Run GitHub code-review agents](code-review-agents.md) for the operator
30
+ overview of checks, mentions, and fork limitations.
31
+
32
+ ## Events and triggers
33
+
34
+ Link a native agent to a repository with `link_repository`. Each trigger needs
35
+ its GitHub App event ticked in the App's event settings; every event is a
36
+ separate checkbox.
37
+
38
+ | Trigger | Starts a run when | App event to subscribe |
39
+ | -------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
40
+ | `pull_request` | A pull request is opened or pushed to; a re-run of the review check | Pull request, Check run (re-runs of the review check) |
41
+ | `mention` | Someone with write access `@`-mentions the App | Issue comment, Issues, Pull request review comment (mentions in inline review threads) |
42
+ | `push` | A commit lands on the repository's default branch | Push |
43
+
44
+ The `push` trigger starts a merge-watcher agent; only default-branch pushes
45
+ count (tags, other branches, and deletions are ignored). See
46
+ [Keep the knowledge bundle current on merge](help://architecture-agent).
47
+
48
+ For Jira Cloud instead of GitHub, see [Run Jira agents](jira.md).
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: identity-and-access
3
+ title: Configure identity and privileged access
4
+ summary: Protect remote MCP access with an OAuth/OIDC provider and restrict sensitive operations with scopes and roles.
5
+ audience: operator
6
+ tags: [identity, oauth, oidc, access-control, mcp]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Configure identity and privileged access
11
+
12
+ Local stdio MCP created by `wardby quickstart` trusts the local operator. A
13
+ shared HTTPS deployment needs an OAuth/OIDC identity provider. In delegating
14
+ mode, that provider authenticates the caller and issues a signed JWT access
15
+ token; Wardby verifies the token and enforces its scopes without administering
16
+ the provider's users or exchanging authorization codes.
17
+
18
+ Set the provider's resource audience, `MCP_CANONICAL_URI`, and `AUTH_AUDIENCE`
19
+ to the exact same public MCP URL. Tokens need a stable subject, expiry, issuer,
20
+ audience, and the granted Wardby scopes in `scope` or `scp`.
21
+
22
+ Scopes authorize normal operations such as managing agents, runs, tools,
23
+ datastores, secrets, webhooks, budgets, packages, services, memory, and
24
+ models. Five sensitive permissions have an additional role requirement:
25
+
26
+ - `agents:admin` requires the Wardby `admin` role.
27
+ - `packages:approve` requires the `admin` or `package-approver` role.
28
+ - `services:manage` requires the `admin` or `service-manager` role.
29
+ - `admin:view` requires the `admin` role. It opens the read-only, deployment-wide
30
+ admin viewer API; see [Watch live runs with the admin viewer API](admin-viewer.md).
31
+ - `models:admin` requires the `admin` or `model-manager` role. It adds,
32
+ overrides, disables, and resets model catalog entries; see
33
+ [Models and pricing](models.md).
34
+
35
+ Map roles only from an IdP claim that users cannot self-assign. Removing a
36
+ role affects the next token the caller receives.
37
+
38
+ When you upgrade a delegating-mode deployment, define any newly advertised
39
+ scope, such as `admin:view`, in the provider before deploying. Clients
40
+ that request every advertised scope otherwise fail with `invalid_scope`.
41
+
42
+ Read [`docs/getting-started-identity-provider.md`](../docs/getting-started-identity-provider.md)
43
+ for the required claims, scope list, role mapping, provider examples, and
44
+ client registration.
package/help/jira.md ADDED
@@ -0,0 +1,135 @@
1
+ ---
2
+ id: jira
3
+ title: Run Jira agents
4
+ summary: Connect Wardby to Jira Cloud with a service account, add the webhook, and link agents to projects.
5
+ audience: operator
6
+ tags: [jira, issue-tracker, webhooks, service-account]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Run Jira agents
11
+
12
+ A native agent linked to a Jira Cloud project can be started by issue events
13
+ and can read, search and comment on issues in that project. Everything it does
14
+ is attributed to one Atlassian service account whose API token Wardby holds.
15
+ Use only a service-account token (the email-plus-token setup is refused at
16
+ startup); a personal token would attribute agent actions to that person. Check
17
+ the `Jira acting as` startup line to confirm the account.
18
+
19
+ ## Setup checklist
20
+
21
+ 1. In Atlassian Administration, create a service account (Directory, then
22
+ Service accounts). Give it a project role with Browse Projects, Add
23
+ Comments and Edit Own Comments in each project agents will use, and only
24
+ there. To let agents change issues also add Transition issues, Edit issues
25
+ Link issues and Create issues. Its permissions are the outer boundary of what any linked
26
+ agent can read or change.
27
+ 2. Create an API token for it, with an expiry, and the scopes
28
+ `read:jira-work` (read issues and comments, JQL search), `write:jira-work`
29
+ (add and edit comments, transition issues, edit fields, link issues, write
30
+ issue properties) and `read:jira-user` (read its own identity).
31
+ 3. Find your site's cloudId at `https://your-site.atlassian.net/_edge/tenant_info`.
32
+ 4. In Jira, Settings, System, WebHooks: add
33
+ `https://<your-wardby-host>/hosts/jira/events` with a secret of 20 or more
34
+ characters and the events Issue created, Issue updated, Comment created and
35
+ Comment updated.
36
+ Editing a comment that mentions the service account can trigger the agent
37
+ again when the editor is a trusted account; leave out Comment updated if you
38
+ don't want that.
39
+ 5. Set `WARDBY_JIRA_SITE_URL`, `WARDBY_JIRA_API_BASE_URL`
40
+ (`https://api.atlassian.com/ex/jira/<cloudId>`), `WARDBY_JIRA_API_TOKEN` and
41
+ `WARDBY_JIRA_WEBHOOK_SECRET`, then restart. The startup log line
42
+ `Jira acting as` shows which account Wardby uses; confirm it is the service
43
+ account. Optionally set `WARDBY_JIRA_API_TOKEN_EXPIRES_AT` to get a warning
44
+ 14 days before expiry.
45
+ 6. A Wardby administrator links the agent with `link_issue_project`, for
46
+ example `projectKey: "PROJ"`, `access: "write"`,
47
+ `triggers: ["transitioned", "mention"]`,
48
+ `triggerStatuses: ["Ready for agent"]` and
49
+ `trustedAccountIds: ["<accountId>"]`. To let the agent change issues, add
50
+ `allowedTransitions` (target status names), `writableFields` (`labels`,
51
+ `components`, `priority`, `customfield_N`) and `allowedLinkTypes` (issue
52
+ link type names such as `Duplicate`); all need `write` access and an empty
53
+ list means the tool refuses. Linking two issues also needs a `write` link to
54
+ both issues' projects, each allowlisting the type. Existing links get these
55
+ only once you set the lists. Status and link type names are matched in the
56
+ service account's Jira language (its profile language setting, which Jira
57
+ reports as its locale), so set that language to the one your team uses for
58
+ status names.
59
+
60
+ ## What agents can do
61
+
62
+ Beyond reading, searching and commenting, linked agents get
63
+ `jira_list_transitions`, `jira_transition`, `jira_update_fields`,
64
+ `jira_link_issues`, and `jira_get_property` / `jira_set_property` for
65
+ per-issue state, plus `jira_create_issue` and `jira_read_attachment`. Each authorizes against the issue's own project and the
66
+ agent's live link. Properties are not allowlisted: any `write` link can set
67
+ them and any link can read them. They are stored as `wardby.<agentId>.<name>`,
68
+ and anyone with Jira API access to the issue can read or overwrite them, so
69
+ never store secrets there. Run status comments include an `Agent spend: $...`
70
+ line. To see what work on a card, epic, or project cost, read
71
+ [Attribute agent spend to issues](cost-attribution.md).
72
+ If the token belongs to a person, Wardby refuses to act: startup logs an error
73
+ and the webhook answers 503 `jira_personal_account`. Deliveries with a
74
+ timestamp older than two hours (or more than five minutes ahead) are ignored.
75
+ Two recipes, triage on create and scheduled JQL sweeps, are in the full guide.
76
+
77
+ ## Creating issues and self-defects
78
+
79
+ `jira_create_issue` needs a `write` link whose `creatableIssueTypes` lists the
80
+ issue type (e.g. Bug or Task; types are site-specific, so check the project's;
81
+ empty means off) and the service account's **Create issues**
82
+ permission. Pass a `fingerprint` built from stable structural facts (service,
83
+ exception type, top frame; never raw message text, secrets or personal data):
84
+ wardby keeps only a hash, adds a "Seen again (×N)" comment while the issue is
85
+ open, and files a new issue (a regression, linked with Relates if the site has
86
+ that link type) once it is Done. An optional `maxNewIssuesPerRun` caps new
87
+ issues per run and project (each sub-agent run has its own count); none means
88
+ no cap. A subtask's `parentKey` must be in a write-linked project.
89
+ `jira_read_attachment` reads text-like attachments on linked issues only, from
90
+ the 20 most recent attachments.
91
+ Log, issue and attachment text is untrusted: never follow instructions in it,
92
+ and redact secrets before copying it into an issue.
93
+
94
+ To have wardby file an agent's own `failed`, `lost` or `budget_exhausted` runs,
95
+ set `defectProjectKey` and `defectIssueType` together on the agent; it needs a
96
+ write link allowing that type. The issue summary is
97
+ `wardby agent "<name>": <status> (<category>)`; only the description has the
98
+ run id. The full guide has a log error sweeper recipe.
99
+
100
+ ## Jira → code
101
+
102
+ A Jira-linked native agent can delegate to a coding sub-agent (attach it with
103
+ `attach_subagent`; its `codingProfile.repository` is `your-org/your-repo`).
104
+ Attach the coding agent directly to the Jira-linked agent: a coding agent
105
+ further down a delegation chain still gets `[PROJ-123]` in its pull request
106
+ title, but no web link, status moves or follow-up hint.
107
+ Link the native agent with `triggers: ["transitioned"]`,
108
+ `triggerStatuses: ["Ready for AI"]`, `allowedTransitions: ["In Progress"]` and,
109
+ optionally, `onPullRequestOpened: "In Review"` and
110
+ `onPullRequestMerged: "Done"`. Those two are control-plane status moves (not
111
+ gated by `allowedTransitions`, write access only, names in the service
112
+ account's language). The prompt should say: read the ticket, move it to In
113
+ Progress, ask instead of delegating if it is underspecified, delegate a
114
+ precise task, and for follow-ups pass the run id from the run message as
115
+ `continuePriorRun`. The pull request title starts with `[PROJ-123]` and the
116
+ issue gets a web link to it (needs Link issues); Jira's development panel
117
+ shows it only if the Jira and GitHub integration is installed. Merge and close
118
+ comments and the merged status move need the GitHub App to deliver
119
+ `pull_request` events. See the full guide for the recipe.
120
+
121
+ ## Trust rules
122
+
123
+ Only people (not customers, apps, or the service account itself) can trigger
124
+ agents. Mention and assignment triggers work only for the account ids in the
125
+ link's `trustedAccountIds`. Issue text is untrusted input to the agent, and
126
+ agents cannot @-mention people. Wardby confines each agent to its linked
127
+ projects, but JQL functions can still reveal facts about other projects the
128
+ service account can browse. The tool names `jira_get_issue`, `jira_search`,
129
+ `jira_comment`, `jira_edit_own_comment`, `jira_list_transitions`,
130
+ `jira_transition`, `jira_update_fields`, `jira_link_issues`,
131
+ `jira_get_property` and `jira_set_property` are reserved; rename any existing
132
+ user-defined tool with one of them before linking the agent.
133
+
134
+ For the full guide, including tools, link options, token rotation and
135
+ troubleshooting, follow [`docs/jira-agents.md`](../docs/jira-agents.md).
@@ -0,0 +1,47 @@
1
+ ---
2
+ id: knowledge
3
+ title: Architecture knowledge bundles
4
+ summary: Keep cited, non-obvious architecture knowledge in docs/knowledge/ so coding runs, reviewers, and live sessions (through the AGENTS.md pointer) use it; validate it with wardby knowledge check.
5
+ audience: operator
6
+ tags: [knowledge, architecture, coding-agents, okf, cli, drift, push]
7
+ appliesTo: >=0.4.0
8
+ ---
9
+
10
+ # Architecture knowledge bundles
11
+
12
+ A knowledge bundle is a set of markdown files in `docs/knowledge/` that records
13
+ architecture knowledge people tend to miss: pitfalls, invariants, decisions and
14
+ their reasons, and cross-module contracts. It uses the Open Knowledge Format
15
+ (OKF) v0.2 plus a `wardby:` front-matter block that lists the roles a concept is
16
+ for, the paths it affects, and citations to the code it describes. Each citation
17
+ carries a commit `sha` and a `spanHash` so staleness can be detected.
18
+
19
+ - `docs/knowledge/index.md` lists every concept in one line; `log.md` records
20
+ changes to the bundle.
21
+ - When `docs/knowledge/index.md` exists on a coding run's base branch, the run's
22
+ task includes the index automatically (up to 8 KiB). It never fails a
23
+ dispatch; an unreadable index just means no note.
24
+ - When the run's commit is known (it always is for a normal clone) and the
25
+ request leaves room, the task ends with a `Base commit: <sha>` line. The workspace
26
+ has no git metadata, so use that value for citation `sha` fields.
27
+ - Validate the bundle with `wardby knowledge check` (add `--strict` to fail on
28
+ warnings, `--json` for machine output, `--root` to point at the repository).
29
+ Errors are `concept_invalid`, `concept_secret`, `index_missing`, and
30
+ `index_link_broken`; warnings are `concept_not_indexed`,
31
+ `citation_unverifiable`, and `citation_stale`.
32
+ - Builders may edit concept prose. Citations can go stale afterward; the
33
+ architecture agent re-anchors them.
34
+
35
+ To keep the bundle current on a schedule, set up the scheduled agent described
36
+ in [Set up an architecture agent](help://architecture-agent). Code-review agents can read the bundle too.
37
+
38
+ To re-verify only the concepts a merge touched, link a small watcher agent with
39
+ the `push` trigger; it starts the architecture agent when a merge to the default
40
+ branch affects a concept. See
41
+ [Keep the knowledge bundle current on merge](help://architecture-agent) and
42
+ [Connect GitHub repositories](help://github-integration) (the GitHub App must
43
+ subscribe to the Push event).
44
+
45
+ Read [`docs/knowledge.md`](../docs/knowledge.md) for the concept format, the
46
+ span-hash definition, a full example, the issue-code table, and the reviewer
47
+ prompt section.
package/help/mcp.md ADDED
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: mcp-access
3
+ title: Connect an MCP client
4
+ summary: Use Wardby's local stdio or protected HTTP MCP transport safely.
5
+ audience: developer
6
+ tags: [mcp, oauth, codex, claude-code]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Connect an MCP client
11
+
12
+ For local use, `wardby quickstart` can register the local stdio MCP server with
13
+ Codex or Claude Code. Local stdio trusts the local operator.
14
+
15
+ For remote access, Wardby exposes an OAuth 2.1-protected HTTP resource server.
16
+ Run the service with `MCP_TRANSPORT=http`, set a canonical public URI, and use
17
+ the instance's configured identity-provider mode. Keep the MCP endpoint behind
18
+ your intended ingress and authentication boundary.
19
+
20
+ MCP clients use Wardby to manage agents, budgets, tools, schedules, secrets,
21
+ datastores, and runs. They do not receive the provider or GitHub App
22
+ credentials held by Wardby's trusted components.
23
+
24
+ With the existing `agents:read` scope, clients can also use `search_help` to
25
+ find bundled self-hosted guidance with fuzzy matching and `get_help_article`
26
+ to read a complete article by id. These tools use the same release-bundled,
27
+ offline catalog as `wardby help`; they expose no instance data or credentials.
28
+
29
+ See [`docs/getting-started-identity-provider.md`](../docs/getting-started-identity-provider.md)
30
+ for the supported self-hosted and delegated identity-provider setup.
package/help/models.md ADDED
@@ -0,0 +1,90 @@
1
+ ---
2
+ id: models
3
+ title: Models and pricing
4
+ summary: Which models this deployment can run, what they cost, and how admins add, reprice, disable or reset them.
5
+ audience: all
6
+ tags: [models, pricing, list_models, set_model, disable_model, reset_model, get_model, models:admin, model-manager]
7
+ appliesTo: ">=0.4.0"
8
+ ---
9
+
10
+ # Models and pricing
11
+
12
+ Wardby prices and routes every model call from one catalog: the models this
13
+ release ships, overlaid with this deployment's own additions and overrides.
14
+ An agent can use a model only when it's in the catalog and its provider has
15
+ credentials configured here.
16
+
17
+ ## The five tools
18
+
19
+ | Tool | Scope | What it does |
20
+ | --------------- | -------------- | ----------------------------------------------------------------------------------------- |
21
+ | `list_models` | `agents:read` | Every active catalog entry (or, with `includeDisabled: true`, disabled ones too). |
22
+ | `get_model` | `agents:read` | One entry by `modelId`; for an override, also the shipped entry it shadows. |
23
+ | `set_model` | `models:admin` | Adds or completely replaces one entry. Every field is required. |
24
+ | `disable_model` | `models:admin` | Removes a model from routing without deleting its pricing history. |
25
+ | `reset_model` | `models:admin` | Removes every row for a model id, reverting to the shipped entry (if any) or removing it. |
26
+
27
+ Reading the catalog needs only `agents:read` — no secrets live in an entry.
28
+ Changing it needs `models:admin`, honored only for a caller whose Wardby role
29
+ grants it: `admin`, or the narrower `model-manager` role.
30
+
31
+ An entry's `origin` is `shipped` or `override`; `routable` says whether this
32
+ deployment can actually route to it right now; `shippedDiffers` (overrides of
33
+ a shipped model only) says whether your override has drifted from the
34
+ current shipped values. See [`docs/models.md`](../docs/models.md) for the
35
+ full field reference.
36
+
37
+ ## Adding or overriding a model
38
+
39
+ ```json
40
+ {
41
+ "provider": "anthropic",
42
+ "modelId": "claude-example-model",
43
+ "encoding": "o200k_base",
44
+ "inputPerMTok": 0.0,
45
+ "outputPerMTok": 0.0,
46
+ "cachedInputPerMTok": 0.0,
47
+ "cacheWritePerMTok": 0.0,
48
+ "efforts": ["low", "medium", "high"],
49
+ "thinkingMode": "adaptive",
50
+ "sourceUrl": "https://example.com/replace-with-the-providers-own-pricing-page"
51
+ }
52
+ ```
53
+
54
+ The rates above are placeholders. Copy the provider's own published rates for
55
+ that exact model — including its cache read and cache write rates — from its
56
+ pricing page, and point `sourceUrl` at that page; never compute cache rates
57
+ from `inputPerMTok` with a multiplier.
58
+
59
+ `set_model` refuses (409) a `modelId` another provider already owns. A
60
+ shipped id always belongs to its shipped provider — permanently; no other
61
+ provider can ever claim it, not even by disabling or resetting the override.
62
+ A non-shipped id already claimed by another provider (its row active or
63
+ disabled) is freed only by `reset_model` — it takes only the `modelId` and
64
+ clears every row for it, whichever provider owns it; `disable_model` alone
65
+ never frees it, since the disabled row still reserves the id.
66
+
67
+ `thinkingMode` (`adaptive`, `manual`, or `none`) must match what the exact
68
+ model accepts. Getting it wrong doesn't fail at `set_model` — it fails later,
69
+ when a run calls the model, with `unsupported_anthropic_feature`.
70
+ For Claude Code coding runs, `efforts` is also the exact set of levels a run
71
+ may send, so always include the model's default effort level.
72
+
73
+ A newly released Claude model may also need a newer Claude Code than your
74
+ Claude Code worker image has: coding runs on it then fail as
75
+ `provider_rejected` (no cost) while native runs work. Upgrade wardby and
76
+ rebuild the worker images before using the model in Claude Code agents.
77
+
78
+ Catalog changes take effect on the writing process immediately, and on every
79
+ other wardby process within `WARDBY_MODEL_CATALOG_REFRESH_SECONDS` (default
80
+ 45). A run already in progress keeps the catalog entry it started with, so
81
+ disabling or repricing a model never changes a run already under way — only
82
+ new runs.
83
+
84
+ If this deployment delegates to an identity provider, define `models:admin`
85
+ there before relying on it, and map the `model-manager` role (or `admin`) to
86
+ the people who maintain pricing — see
87
+ [Configure identity and privileged access](identity-and-access.md).
88
+
89
+ If a run can't use a model, see
90
+ [Model not available](errors/model-unavailable.md).
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: native-capabilities
3
+ title: Use native agents, tools, and data
4
+ summary: Attach scoped tools, secrets, datastores, memory, schedules, and sub-agents to a native Wardby agent.
5
+ audience: developer
6
+ tags: [agents, tools, secrets, datastores, memory, schedules, subagents]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Use native agents, tools, and data
11
+
12
+ Native agents work through the Wardby control plane rather than a repository
13
+ checkout. Give each agent only the capabilities its job needs:
14
+
15
+ - **Tools** for approved external actions or APIs.
16
+ - **Secrets** as bindings to tools or agents; values remain in Wardby's trusted
17
+ components rather than being returned through MCP.
18
+ - **Datastores** for scoped application data and queries.
19
+ - **Memory** for agent-owned durable context.
20
+ - **Schedules and webhooks** to start event-driven work.
21
+ - **Sub-agents** for delegated, bounded work with their own capability set.
22
+
23
+ Use a budget or shared budget group on every agent, and inspect runs before
24
+ expanding its access. An access grant is intentional delegation: use it only
25
+ when an owner permits one agent to use another resource. Creating or changing
26
+ tools, secrets, datastores, schedules, webhooks, memory, and budget groups
27
+ requires the matching MCP scope.
28
+
29
+ See [Operate agents](operating-agents.md) for run and budget management, and
30
+ [`README.md`](../README.md) for the feature overview and MCP operations.
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: observability
3
+ title: Monitor Wardby
4
+ summary: Scrape private Prometheus metrics and build production alerting around the coding proxy and run lifecycle.
5
+ audience: operator
6
+ tags: [observability, prometheus, grafana, metrics, operations]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Monitor Wardby
11
+
12
+ When `METRICS_BIND` is configured, Wardby's coding proxy exposes Prometheus
13
+ metrics at `/metrics`. Keep that endpoint on a private network and permit only
14
+ your collector to scrape it. Metrics cover proxy requests, errors, latency,
15
+ audit events, model cost, reserved and actual budget spend, coding outcomes,
16
+ and Node.js process health; they intentionally exclude prompts, repository
17
+ content, credentials, diffs, raw worker output, and run identifiers.
18
+
19
+ For a local dashboard stack, run:
20
+
21
+ ```sh
22
+ npm run observability:up
23
+ npm run observability:smoke
24
+ ```
25
+
26
+ This starts Prometheus and Grafana locally. Use `npm run observability:down`
27
+ when finished.
28
+
29
+ In production, configure your own Prometheus-compatible collector, retention,
30
+ private connectivity, alerts, and SLOs. GCP operators can use the Ops Agent or
31
+ Managed Service for Prometheus; AWS operators can use the CloudWatch Agent
32
+ Prometheus collector. Wardby's reference cloud deployments do not provision
33
+ them, and application/MCP metrics are currently narrower than coding-proxy
34
+ metrics.
35
+
36
+ Alert on proxy failures, budget cutoffs, cleanup failures, stalled runs, and
37
+ sustained latency or memory growth. Wardby's database remains the source of
38
+ truth for runs, budgets, and accounting.
39
+
40
+ Read [`docs/observability.md`](../docs/observability.md) for configuration and
41
+ the full production checklist.
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: operating-agents
3
+ title: Operate managed agents
4
+ summary: Understand the identity, budget, capabilities, triggers, and result of a Wardby-managed agent.
5
+ audience: operator
6
+ tags: [agents, budgets, schedules, runs]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Operate managed agents
11
+
12
+ Every Wardby-managed agent has an owner, system prompt, model, per-run budget,
13
+ and explicitly attached capabilities. A run starts only when its identity,
14
+ policy, and available budget agree.
15
+
16
+ Create, update, pause, trigger, and inspect agents through Wardby's MCP tools.
17
+ The CLI is the bootstrap and operations fallback. Scheduled work requires a
18
+ running scheduler: `wardby serve` runs MCP, scheduler, and reconciliation in
19
+ one process; `wardby mcp` alone does not execute schedules.
20
+
21
+ Use [Choose a native or coding agent](creating-agents.md) to select the least
22
+ powerful execution model that can safely produce the desired outcome.
23
+
24
+ Before a run starts, Wardby reserves its allowed spend. The reservation is
25
+ constrained by the agent's own budget, any shared budget group, and any
26
+ sub-agent run tree. See [Budget troubleshooting](troubleshooting/budgets.md)
27
+ when a run is refused for lack of budget, and
28
+ [Attribute agent spend to issues](cost-attribution.md) to see what runs cost
29
+ per issue, epic, project, agent, or model.
30
+
31
+ A running run's cost, token counts, and turn count update after each model
32
+ call, so `get_run` and `list_runs` show spend so far rather than zero until the
33
+ run finishes.
34
+
35
+ For the full lifecycle and the controls applied to every managed run, read
36
+ [`README.md`](../README.md).
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: security-boundaries
3
+ title: Understand Wardby security boundaries
4
+ summary: Review the isolation, credential, budget, and action-authority controls that apply to managed work.
5
+ audience: operator
6
+ tags: [security, isolation, credentials, budgets]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Understand Wardby security boundaries
11
+
12
+ Wardby is designed to make agent work bounded and reviewable. It applies hard
13
+ per-agent and shared-budget limits, grants only explicitly attached tools,
14
+ secrets, datastores, and sub-agents, and records a durable result.
15
+
16
+ Native tools run in a constrained QuickJS environment. Coding agents use
17
+ isolated workers with bounded resources and a trusted proxy. Workers do not
18
+ receive provider credentials or the GitHub App private key. Coding finalization
19
+ creates a draft pull request; it does not grant the worker merge authority.
20
+
21
+ Treat the deployment boundary as part of the security model. Restrict Docker or
22
+ Kubernetes administrator access, protect secrets, constrain network egress,
23
+ and read the deployment guide before enabling a production repository.
24
+
25
+ See [`docs/security-deployment.md`](../docs/security-deployment.md) and
26
+ [`docs/coding-worker-isolation.md`](../docs/coding-worker-isolation.md) for
27
+ the detailed operational model.