@desplega.ai/agent-swarm 1.152.2 → 1.153.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 (224) hide show
  1. package/README.md +1 -1
  2. package/dist/{acp-adapter-pfeje2v5.js → acp-adapter-ahmjxhek.js} +4 -4
  3. package/dist/{actions-0sttc7f5.js → actions-jzrfpkmn.js} +30 -26
  4. package/dist/{anthropic-messages-2y8nktar.js → anthropic-messages-9vqsbznt.js} +112 -84
  5. package/dist/{app-p8teva95.js → app-03na2vwb.js} +9 -6
  6. package/dist/{assistant-r45jnsrt.js → assistant-hfkxvhgt.js} +31 -27
  7. package/dist/{azure-openai-responses-f38x2avq.js → azure-openai-responses-04qwdwfq.js} +27 -13
  8. package/dist/{boot-reembed-je26h5y7.js → boot-reembed-c98xrad3.js} +8 -6
  9. package/dist/{boot-reembed-1qmybsd4.js → boot-reembed-zt3qm9xn.js} +9 -7
  10. package/dist/{boot-scrub-logs-gte3h1mm.js → boot-scrub-logs-jcqd8ksj.js} +6 -4
  11. package/dist/{claude-adapter-csc1mzka.js → claude-adapter-mgryg8g3.js} +17 -15
  12. package/dist/{claude-managed-adapter-dsmkcrjy.js → claude-managed-adapter-ea2aga6w.js} +3 -3
  13. package/dist/{claude-sdk-session-fcd6f078.js → claude-sdk-session-jjf4zss1.js} +17 -15
  14. package/dist/{cli-r2fpe7cx.js → cli-00w2c66p.js} +61 -55
  15. package/dist/{cli-fm4ytsdk.js → cli-0d9nbqxf.js} +1 -1
  16. package/dist/cli-0x5qzvkg.js +4279 -0
  17. package/dist/{cli-d3p82erb.js → cli-18amys3y.js} +9 -9
  18. package/dist/{cli-wbyk465z.js → cli-1hwnb4hc.js} +1 -1
  19. package/dist/{cli-xw7vak96.js → cli-3bcmp015.js} +5 -5
  20. package/dist/cli-3er6gcsn.js +1849 -0
  21. package/dist/{cli-c4eeb5q2.js → cli-5b6b62tz.js} +1 -1
  22. package/dist/{cli-4ahpr4sw.js → cli-5mbmvxnn.js} +5 -5
  23. package/dist/{cli-xy1cchaf.js → cli-5taqtpze.js} +235 -8
  24. package/dist/{cli-fmy65jdn.js → cli-6ks9xf1n.js} +7 -5
  25. package/dist/cli-7g9s78jf.js +2827 -0
  26. package/dist/{cli-jew3jda5.js → cli-7pnz2v6s.js} +2 -2
  27. package/dist/{cli-r84ctdxn.js → cli-83wkg402.js} +2 -2
  28. package/dist/{cli-jvy9qgjs.js → cli-a9scg8sv.js} +4 -4
  29. package/dist/{cli-4yc5d8fk.js → cli-avkd6mqv.js} +50 -0
  30. package/dist/{cli-ht5rs63n.js → cli-b2g6mzjc.js} +15 -6
  31. package/dist/{cli-jbmc0r7r.js → cli-bw0dfwkr.js} +1 -1
  32. package/dist/{cli-8wrympd7.js → cli-bzr0ftht.js} +26 -7
  33. package/dist/{cli-wpv5rgg2.js → cli-cdq08v3r.js} +2 -2
  34. package/dist/cli-cgj4hc12.js +18902 -0
  35. package/dist/cli-d6hk10xx.js +14075 -0
  36. package/dist/{cli-zvgj5zg8.js → cli-djvxhnc4.js} +31 -3324
  37. package/dist/{cli-s25avqg9.js → cli-e781c6f9.js} +1 -0
  38. package/dist/{cli-3bpzj8me.js → cli-eazstkad.js} +2 -2
  39. package/dist/{cli-s2qjdd6z.js → cli-eetrvv91.js} +1 -1
  40. package/dist/cli-h38x0qhg.js +6912 -0
  41. package/dist/{cli-9xvdm3bx.js → cli-h60qfasa.js} +742 -278
  42. package/dist/{pi-mono-adapter-jcqt71cg.js → cli-ja7mrygn.js} +67343 -101083
  43. package/dist/{cli-j8dggbcr.js → cli-k0g1sjzm.js} +23 -31
  44. package/dist/{cli-gphgnvpf.js → cli-m04pt18h.js} +2 -2
  45. package/dist/{cli-rgvp6r2x.js → cli-mcnhgnn1.js} +193 -4
  46. package/dist/{cli-j4nv2wqy.js → cli-mzgyhxbe.js} +10 -4
  47. package/dist/{cli-qn042eh7.js → cli-n0q9b7j4.js} +46 -1870
  48. package/dist/cli-n7h1kqpf.js +29 -0
  49. package/dist/{cli-ckz5t2hb.js → cli-nq0kgyxe.js} +5 -5
  50. package/dist/{cli-z3wkng35.js → cli-qrqhc31j.js} +151 -125
  51. package/dist/{cli-56h18ng2.js → cli-r8tdds6s.js} +1 -1
  52. package/dist/{cli-ch38q5z4.js → cli-rj7de4b2.js} +6788 -2541
  53. package/dist/{cli-qd65dvr6.js → cli-s5s1f2yn.js} +56 -40
  54. package/dist/{cli-kj76p1ez.js → cli-scwq51gn.js} +13 -7
  55. package/dist/{cli-2nnd56zt.js → cli-tdh4hjr2.js} +3 -2
  56. package/dist/{cli-c2mk1kgf.js → cli-v4en75c5.js} +8 -1
  57. package/dist/{cli-b9dd0h3k.js → cli-vw03hg5t.js} +3 -2
  58. package/dist/{cli-zvkq5csn.js → cli-ybpp1srm.js} +6 -6
  59. package/dist/cli-yn0a417a.js +4069 -0
  60. package/dist/{cli-gpqcs935.js → cli-ysc1kbet.js} +2 -2
  61. package/dist/{cli-zfzznn7c.js → cli-ytxs7mn1.js} +26 -2
  62. package/dist/cli-zcsyfw2z.js +3335 -0
  63. package/dist/{cli-4j8k1m4w.js → cli-zt1227k1.js} +1162 -192
  64. package/dist/cli-zy5w9gpt.js +230 -0
  65. package/dist/cli.js +26 -34
  66. package/dist/{codex-adapter-fxmpsabw.js → codex-adapter-8548daap.js} +12 -11
  67. package/dist/{codex-session-runner-rr1e47ea.js → codex-session-runner-2dad8p4x.js} +12 -11
  68. package/dist/{commands-0f5rxz51.js → commands-355dbpa8.js} +6 -4
  69. package/dist/{db-r3jxf3wy.js → db-4jjvwz1s.js} +6 -4
  70. package/dist/{dispatcher-06vph6q4.js → dispatcher-ca590nkz.js} +29 -25
  71. package/dist/dsh-adapter-rgvj6ykp.js +19 -0
  72. package/dist/{e2b-413b8t4v.js → e2b-93x1k0j5.js} +6 -7
  73. package/dist/{google-generative-ai-ndjmj5fa.js → google-generative-ai-xtw7tggr.js} +33 -73
  74. package/dist/{google-vertex-fr665tqs.js → google-vertex-zdqpms6n.js} +38 -68
  75. package/dist/{handlers-0hgtc910.js → handlers-2y6dqpvf.js} +32 -28
  76. package/dist/{hook-9kvrv1er.js → hook-0s8knepr.js} +11 -9
  77. package/dist/{hook-fbfhkat3.js → hook-k0gec254.js} +12 -10
  78. package/dist/{http-xbyx8k5j.js → http-jp2nb4zw.js} +300 -237
  79. package/dist/{index-tfsdxyv6.js → index-0wzg3sp3.js} +39 -24
  80. package/dist/{index-rnyahfn5.js → index-3mq6ce93.js} +29 -25
  81. package/dist/{index-jsw3aynb.js → index-42s7eezq.js} +29 -25
  82. package/dist/{cli-pdz9qde4.js → index-9ch1n761.js} +10 -11
  83. package/dist/{index-gpfn1741.js → index-b56xkbc7.js} +8 -6
  84. package/dist/{index-66xz5e9j.js → index-h5gs261z.js} +521 -9
  85. package/dist/{index-2sp0384z.js → index-kkeftv5h.js} +738 -21
  86. package/dist/{index-sgk50mbg.js → index-s37dbevy.js} +30 -26
  87. package/dist/index-w097eg0x.js +5 -0
  88. package/dist/jiti-loader-b4837mtm.js +34 -0
  89. package/dist/jiti-static-loader-q2g5ds0y.js +31267 -0
  90. package/dist/{keepalive-s3xpr7sw.js → keepalive-9pfw7t02.js} +8 -6
  91. package/dist/{lead-rq4n5r16.js → lead-7vcmcdq4.js} +44 -39
  92. package/dist/{maintenance-f0atj1ab.js → maintenance-x277jbpd.js} +9 -7
  93. package/dist/{mistral-conversations-qhr84ph3.js → mistral-conversations-zx0kn554.js} +24 -18
  94. package/dist/{node-x1g4v0pq.js → node-5qtycf6a.js} +16 -11
  95. package/dist/{oauth-refresh-sweep-q0t3bxre.js → oauth-refresh-sweep-5fwa7th2.js} +7 -5
  96. package/dist/{onboard-br5j1kch.js → onboard-17sv0f51.js} +103 -35
  97. package/dist/{openai-codex-responses-wy6a43wd.js → openai-codex-responses-4vjqzvjp.js} +33 -27
  98. package/dist/{openai-completions-32rdwmze.js → openai-completions-pxsmym7g.js} +52 -64
  99. package/dist/{openai-responses-6xwf7bzg.js → openai-responses-tmn0rqp0.js} +23 -24
  100. package/dist/{opencode-adapter-28axqa09.js → opencode-adapter-qbmv4tpy.js} +6 -6
  101. package/dist/{otel-impl-vdqge2nt.js → otel-impl-srjy4be4.js} +4 -4
  102. package/dist/{pi-messages-b1mbr6gp.js → pi-messages-txpjj39q.js} +3 -3
  103. package/dist/pi-mono-adapter-946a0sdd.js +1316 -0
  104. package/dist/{pricing-refresh-hb3691fd.js → pricing-refresh-vetcm563.js} +8 -6
  105. package/dist/{rbac-roles-jh280k9g.js → rbac-roles-cfzgr6r1.js} +8 -6
  106. package/dist/{rbac-roles-t78xt39b.js → rbac-roles-cmxaddmy.js} +7 -5
  107. package/dist/{render-v2-7p8r2ymg.js → render-v2-f9hzff72.js} +9 -6
  108. package/dist/{seed-pricing-hf889enh.js → seed-pricing-jggk6rsy.js} +7 -5
  109. package/dist/{setup-w6mb03jv.js → setup-8mfceb9t.js} +4 -5
  110. package/dist/virtual-modules-ax661xp0.js +54 -0
  111. package/dist/{work-objects-nt8gy1kj.js → work-objects-vdsdcczj.js} +32 -28
  112. package/dist/{worker-dwy617t0.js → worker-cd0nhyv1.js} +44 -39
  113. package/openapi.json +36 -14
  114. package/package.json +6 -6
  115. package/src/be/automation-preflight.ts +6 -4
  116. package/src/be/extensions/db.ts +35 -4
  117. package/src/be/models-catalog.ts +2 -0
  118. package/src/be/modelsdev-cache.json +213 -0
  119. package/src/be/rbac-audit.ts +2 -0
  120. package/src/be/seed-pricing.ts +3 -1
  121. package/src/be/swarm-config-guard.ts +1 -0
  122. package/src/commands/onboard/compose-generator.ts +6 -1
  123. package/src/commands/onboard/env-generator.ts +6 -1
  124. package/src/commands/onboard/manifest.ts +1 -0
  125. package/src/commands/onboard/steps/integration-slack.tsx +56 -16
  126. package/src/commands/onboard/steps/review.tsx +5 -0
  127. package/src/commands/onboard/types.ts +6 -0
  128. package/src/commands/onboard.tsx +5 -1
  129. package/src/commands/provider-credentials.ts +14 -2
  130. package/src/extensions/lifecycle.ts +15 -21
  131. package/src/http/agents.ts +2 -2
  132. package/src/http/config.ts +1 -1
  133. package/src/http/core.ts +5 -3
  134. package/src/http/extensions.ts +108 -34
  135. package/src/http/status.ts +22 -10
  136. package/src/prompts/base-prompt.ts +15 -7
  137. package/src/providers/claude-managed-models.ts +8 -0
  138. package/src/providers/codex-models.ts +15 -1
  139. package/src/providers/dsh-adapter.ts +248 -0
  140. package/src/providers/index.ts +5 -1
  141. package/src/providers/modelsdev-reasoning.json +50 -0
  142. package/src/rbac/legacy-policy.ts +15 -1
  143. package/src/rbac/types.ts +2 -0
  144. package/src/server.ts +7 -1
  145. package/src/slack/app.ts +32 -10
  146. package/src/slack/config.ts +29 -0
  147. package/src/telemetry.ts +2 -3
  148. package/src/tests/agents-harness-provider.test.ts +19 -0
  149. package/src/tests/agents-list-model-display.test.ts +60 -1
  150. package/src/tests/base-prompt.test.ts +25 -0
  151. package/src/tests/claude-managed-adapter.test.ts +6 -0
  152. package/src/tests/codex-gpt6-release.test.ts +97 -0
  153. package/src/tests/config-api-only-keys.test.ts +9 -0
  154. package/src/tests/context-window.test.ts +1 -0
  155. package/src/tests/dsh-adapter.test.ts +276 -0
  156. package/src/tests/e2e-nightly-report.test.ts +3 -3
  157. package/src/tests/e2e-redact.test.ts +2 -0
  158. package/src/tests/env-flag.test.ts +6 -0
  159. package/src/tests/extensions-db.test.ts +41 -0
  160. package/src/tests/extensions-http.test.ts +148 -4
  161. package/src/tests/extensions-lifecycle.test.ts +18 -0
  162. package/src/tests/extensions-mcp-tools.test.ts +9 -5
  163. package/src/tests/internal-ai/complete-structured.test.ts +32 -9
  164. package/src/tests/internal-ai/credentials.test.ts +4 -4
  165. package/src/tests/internal-ai/models.test.ts +20 -0
  166. package/src/tests/migration-046-budgets.test.ts +2 -0
  167. package/src/tests/model-control.test.ts +2 -2
  168. package/src/tests/onboard-compose.test.ts +14 -0
  169. package/src/tests/onboard-env.test.ts +17 -0
  170. package/src/tests/onboard-manifest.test.ts +12 -0
  171. package/src/tests/opus-5-5-registry.test.ts +48 -0
  172. package/src/tests/pricing-refresh.test.ts +1 -1
  173. package/src/tests/pricing-routes.test.ts +15 -3
  174. package/src/tests/provider-registration.test.ts +5 -2
  175. package/src/tests/rbac-admission-e2e.test.ts +54 -0
  176. package/src/tests/rbac-e2e-helpers.ts +2 -0
  177. package/src/tests/rbac-engine.test.ts +32 -0
  178. package/src/tests/rbac-wire-e2e.test.ts +33 -0
  179. package/src/tests/reasoning-effort.test.ts +8 -0
  180. package/src/tests/reload-config.test.ts +33 -0
  181. package/src/tests/session-costs-model-key-normalize.test.ts +1 -0
  182. package/src/tests/slack-config.test.ts +136 -0
  183. package/src/tests/slack-mode-lifecycle.test.ts +69 -0
  184. package/src/tests/status.test.ts +22 -2
  185. package/src/tests/task-tool-preload-mcp.test.ts +3 -1
  186. package/src/tests/telemetry-init.test.ts +18 -0
  187. package/src/tests/workflow-llm.test.ts +3 -3
  188. package/src/tools/extension-common.ts +4 -0
  189. package/src/tools/extension-install.ts +1 -1
  190. package/src/tools/extension-list.ts +4 -3
  191. package/src/types.ts +17 -8
  192. package/src/utils/context-window.ts +1 -0
  193. package/src/utils/credentials.ts +8 -0
  194. package/src/utils/internal-ai/complete-structured.ts +8 -0
  195. package/src/utils/internal-ai/models.ts +5 -5
  196. package/templates/schedules/daily-status-report/content.md +25 -12
  197. package/templates/schedules/daily-workflow-health-audit/content.md +1 -1
  198. package/templates/skills/swarm-extensions/content.md +9 -5
  199. package/dist/cli-4wppfkcm.js +0 -16384
  200. package/dist/cli-55qrx3q8.js +0 -6041
  201. package/dist/cli-cg4vnyh4.js +0 -305
  202. package/dist/cli-jyetr64j.js +0 -52
  203. package/dist/cli-pp9ax9pa.js +0 -520
  204. package/dist/cli-qa66qaf0.js +0 -6076
  205. package/dist/cli-qghpvca2.js +0 -590
  206. package/dist/cli-rembwgt8.js +0 -861
  207. package/dist/cli-tcvj7j2r.js +0 -1971
  208. package/dist/cli-vfcth11k.js +0 -36
  209. package/dist/cli-w1d1bgkk.js +0 -1422
  210. package/dist/cli-y6x0gqtg.js +0 -5977
  211. package/dist/es5-tj3tn4jj.js +0 -844
  212. package/dist/index-1kq5hw2p.js +0 -467
  213. package/dist/index-1p8wdstt.js +0 -7
  214. package/dist/index-8fdjzb2f.js +0 -100
  215. package/dist/index-bxmwzbgw.js +0 -365
  216. package/dist/index-nzerxd5z.js +0 -7
  217. package/dist/index-pyymnzat.js +0 -1168
  218. package/dist/index-qv6atbab.js +0 -619
  219. package/dist/index-rja32qa7.js +0 -801
  220. package/dist/index-tzg5srfp.js +0 -211
  221. package/dist/index-vhncw983.js +0 -90
  222. package/dist/index-xk036zsk.js +0 -859
  223. package/dist/index-zyazbzcb.js +0 -6
  224. package/dist/{claude-managed-setup-48dwg9bv.js → claude-managed-setup-f5pmsyrp.js} +3 -3
@@ -0,0 +1,3335 @@
1
+ import {
2
+ MAX_PROFILE_FILE_LENGTH,
3
+ init_constants
4
+ } from "./cli-dv6cdjs2.js";
5
+ import {
6
+ exports_zod,
7
+ init_zod
8
+ } from "./cli-sd0mxa3c.js";
9
+ import {
10
+ __esm
11
+ } from "./cli-bc05qbss.js";
12
+
13
+ // src/assets/key.ts
14
+ function normalizeAssetKey(input) {
15
+ if (typeof input !== "string")
16
+ throw new AssetKeyError("Asset key must be a string");
17
+ if (input.includes("\x00"))
18
+ throw new AssetKeyError("Asset key cannot contain NUL bytes");
19
+ if (input.includes("\\"))
20
+ throw new AssetKeyError("Asset key must use forward slashes");
21
+ const normalized = input.trim().normalize("NFKC").toLowerCase();
22
+ if (!normalized)
23
+ throw new AssetKeyError("Asset key cannot be empty");
24
+ if (normalized.startsWith("/"))
25
+ throw new AssetKeyError("Asset key must be relative");
26
+ const withTrailingSlash = normalized.endsWith("/") ? normalized : `${normalized}/`;
27
+ if (withTrailingSlash.length > ASSET_KEY_MAX_LENGTH) {
28
+ throw new AssetKeyError(`Asset key cannot exceed ${ASSET_KEY_MAX_LENGTH} characters`);
29
+ }
30
+ const segments = withTrailingSlash.slice(0, -1).split("/");
31
+ if (segments.some((segment) => segment === "" || segment === "." || segment === "..")) {
32
+ throw new AssetKeyError("Asset key contains an empty or traversal segment");
33
+ }
34
+ const root = segments[0];
35
+ if (root !== "shared" && root !== "personal") {
36
+ throw new AssetKeyError("Asset key root must be shared or personal");
37
+ }
38
+ if (root === "personal" && !segments[1]) {
39
+ throw new AssetKeyError("Personal asset keys require a canonical user ID");
40
+ }
41
+ return withTrailingSlash;
42
+ }
43
+ function defaultAssetKey(resource, id) {
44
+ if (!id.trim())
45
+ throw new AssetKeyError("Asset key resource ID cannot be empty");
46
+ return normalizeAssetKey(`shared/${resource}:${id}/`);
47
+ }
48
+ function parseAssetKey(input) {
49
+ const key = normalizeAssetKey(input);
50
+ const segments = key.slice(0, -1).split("/");
51
+ if (segments[0] === "personal") {
52
+ return {
53
+ root: "personal",
54
+ key,
55
+ segments,
56
+ userId: segments[1],
57
+ relativeSegments: segments.slice(2)
58
+ };
59
+ }
60
+ return {
61
+ root: "shared",
62
+ key,
63
+ segments,
64
+ relativeSegments: segments.slice(1)
65
+ };
66
+ }
67
+ function isCanonicalAssetKey(input) {
68
+ try {
69
+ return normalizeAssetKey(input) === input;
70
+ } catch {
71
+ return false;
72
+ }
73
+ }
74
+ function canWriteAssetKey(input, trustedUserId) {
75
+ const parsed = parseAssetKey(input);
76
+ return parsed.root === "shared" || !!trustedUserId && parsed.userId === trustedUserId;
77
+ }
78
+ var ASSET_KEY_MAX_LENGTH = 255, AssetKeyError;
79
+ var init_key = __esm(() => {
80
+ AssetKeyError = class AssetKeyError extends Error {
81
+ constructor(message) {
82
+ super(message);
83
+ this.name = "AssetKeyError";
84
+ }
85
+ };
86
+ });
87
+
88
+ // src/extensions/bundle-path.ts
89
+ function isSafeBundlePath(path) {
90
+ return path.length > 0 && path.length <= 256 && !path.startsWith("/") && !path.includes("\\") && !path.includes("\x00") && path.split("/").every((segment) => segment !== "" && segment !== "." && segment !== "..");
91
+ }
92
+ var init_bundle_path = () => {};
93
+
94
+ // node_modules/@asteasolutions/zod-to-openapi/dist/index.cjs
95
+ function __rest(s, e) {
96
+ var t = {};
97
+ for (var p in s)
98
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
99
+ t[p] = s[p];
100
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
101
+ for (var i = 0, p = Object.getOwnPropertySymbols(s);i < p.length; i++) {
102
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
103
+ t[p[i]] = s[p[i]];
104
+ }
105
+ return t;
106
+ }
107
+ function isZodType(schema, typeNames) {
108
+ const typeNamesArray = Array.isArray(typeNames) ? typeNames : [typeNames];
109
+ return typeNamesArray.some((typeName) => {
110
+ var _a;
111
+ const typeNameMatch = ((_a = schema === null || schema === undefined ? undefined : schema.def) === null || _a === undefined ? undefined : _a.type) === ZodTypeKeys[typeName];
112
+ if (typeName === "ZodDiscriminatedUnion") {
113
+ return typeNameMatch && "discriminator" in schema.def;
114
+ }
115
+ return typeNameMatch;
116
+ });
117
+ }
118
+ function isAnyZodType(schema) {
119
+ return schema && "def" in schema;
120
+ }
121
+ function isNullableSchema(schema) {
122
+ return schema.safeParse(null).success;
123
+ }
124
+ function isOptionalSchema(schema) {
125
+ return schema.safeParse(undefined).success;
126
+ }
127
+
128
+ class $ZodRegistry {
129
+ constructor() {
130
+ this._map = new Map;
131
+ this._idmap = new Map;
132
+ }
133
+ add(schema, ..._meta) {
134
+ const meta = _meta[0];
135
+ this._map.set(schema, meta);
136
+ if (meta && typeof meta === "object" && "id" in meta) {
137
+ if (this._idmap.has(meta.id)) {
138
+ throw new Error(`ID ${meta.id} already exists in the registry`);
139
+ }
140
+ this._idmap.set(meta.id, schema);
141
+ }
142
+ return this;
143
+ }
144
+ clear() {
145
+ this._map = new Map;
146
+ this._idmap = new Map;
147
+ return this;
148
+ }
149
+ remove(schema) {
150
+ const meta = this._map.get(schema);
151
+ if (meta && typeof meta === "object" && "id" in meta) {
152
+ this._idmap.delete(meta.id);
153
+ }
154
+ this._map.delete(schema);
155
+ return this;
156
+ }
157
+ get(schema) {
158
+ const p = schema._zod.parent;
159
+ if (p) {
160
+ const pm = { ...this.get(p) ?? {} };
161
+ delete pm.id;
162
+ return { ...pm, ...this._map.get(schema) };
163
+ }
164
+ return this._map.get(schema);
165
+ }
166
+ has(schema) {
167
+ return this._map.has(schema);
168
+ }
169
+ }
170
+ function registry() {
171
+ return new $ZodRegistry;
172
+ }
173
+ function isEqual(x, y) {
174
+ if (x === null || x === undefined || y === null || y === undefined) {
175
+ return x === y;
176
+ }
177
+ if (x === y || x.valueOf() === y.valueOf()) {
178
+ return true;
179
+ }
180
+ if (Array.isArray(x)) {
181
+ if (!Array.isArray(y)) {
182
+ return false;
183
+ }
184
+ if (x.length !== y.length) {
185
+ return false;
186
+ }
187
+ }
188
+ if (!(x instanceof Object) || !(y instanceof Object)) {
189
+ return false;
190
+ }
191
+ const keysX = Object.keys(x);
192
+ return Object.keys(y).every((keyY) => keysX.indexOf(keyY) !== -1) && keysX.every((key) => isEqual(x[key], y[key]));
193
+ }
194
+
195
+ class ObjectSet {
196
+ constructor() {
197
+ this.buckets = new Map;
198
+ }
199
+ put(value) {
200
+ const hashCode = this.hashCodeOf(value);
201
+ const itemsByCode = this.buckets.get(hashCode);
202
+ if (!itemsByCode) {
203
+ this.buckets.set(hashCode, [value]);
204
+ return;
205
+ }
206
+ const alreadyHasItem = itemsByCode.some((_) => isEqual(_, value));
207
+ if (!alreadyHasItem) {
208
+ itemsByCode.push(value);
209
+ }
210
+ }
211
+ contains(value) {
212
+ const hashCode = this.hashCodeOf(value);
213
+ const itemsByCode = this.buckets.get(hashCode);
214
+ if (!itemsByCode) {
215
+ return false;
216
+ }
217
+ return itemsByCode.some((_) => isEqual(_, value));
218
+ }
219
+ values() {
220
+ return [...this.buckets.values()].flat();
221
+ }
222
+ stats() {
223
+ let totalBuckets = 0;
224
+ let totalValues = 0;
225
+ let collisions = 0;
226
+ for (const bucket of this.buckets.values()) {
227
+ totalBuckets += 1;
228
+ totalValues += bucket.length;
229
+ if (bucket.length > 1) {
230
+ collisions += 1;
231
+ }
232
+ }
233
+ const hashEffectiveness = totalBuckets / totalValues;
234
+ return { totalBuckets, collisions, totalValues, hashEffectiveness };
235
+ }
236
+ hashCodeOf(object) {
237
+ let hashCode = 0;
238
+ if (Array.isArray(object)) {
239
+ for (let i = 0;i < object.length; i++) {
240
+ hashCode ^= this.hashCodeOf(object[i]) * i;
241
+ }
242
+ return hashCode;
243
+ }
244
+ if (typeof object === "string") {
245
+ for (let i = 0;i < object.length; i++) {
246
+ hashCode ^= object.charCodeAt(i) * i;
247
+ }
248
+ return hashCode;
249
+ }
250
+ if (typeof object === "number") {
251
+ return object;
252
+ }
253
+ if (typeof object === "object") {
254
+ for (const [key, value] of Object.entries(object)) {
255
+ hashCode ^= this.hashCodeOf(key) + this.hashCodeOf(value !== null && value !== undefined ? value : "");
256
+ }
257
+ }
258
+ return hashCode;
259
+ }
260
+ }
261
+ function isUndefined(value) {
262
+ return value === undefined;
263
+ }
264
+ function mapValues(object, mapper) {
265
+ const result = {};
266
+ Object.entries(object).forEach(([key, value]) => {
267
+ result[key] = mapper(value);
268
+ });
269
+ return result;
270
+ }
271
+ function omit(object, keys) {
272
+ const result = {};
273
+ Object.entries(object).forEach(([key, value]) => {
274
+ if (!keys.some((keyToOmit) => keyToOmit === key)) {
275
+ result[key] = value;
276
+ }
277
+ });
278
+ return result;
279
+ }
280
+ function omitBy(object, predicate) {
281
+ const result = {};
282
+ Object.entries(object).forEach(([key, value]) => {
283
+ if (!predicate(value, key)) {
284
+ result[key] = value;
285
+ }
286
+ });
287
+ return result;
288
+ }
289
+ function compact(arr) {
290
+ return arr.filter((elem) => !isUndefined(elem));
291
+ }
292
+ function uniq(values) {
293
+ const set = new ObjectSet;
294
+ values.forEach((value) => set.put(value));
295
+ return [...set.values()];
296
+ }
297
+ function isString(val) {
298
+ return typeof val === "string";
299
+ }
300
+ function sortObjectByKeys(obj) {
301
+ return Object.fromEntries(Object.entries(obj).sort(([leftKey], [rightKey]) => leftKey.localeCompare(rightKey)));
302
+ }
303
+
304
+ class Metadata {
305
+ static collectMetadata(schema, metadata) {
306
+ const currentMetadata = this.getMetadataFromRegistry(schema);
307
+ const _internal = Object.assign(Object.assign({}, currentMetadata === null || currentMetadata === undefined ? undefined : currentMetadata._internal), metadata === null || metadata === undefined ? undefined : metadata._internal);
308
+ const param = Object.assign(Object.assign({}, currentMetadata === null || currentMetadata === undefined ? undefined : currentMetadata.param), metadata === null || metadata === undefined ? undefined : metadata.param);
309
+ const totalMetadata = Object.assign(Object.assign(Object.assign(Object.assign({}, Object.keys(_internal).length > 0 ? { _internal } : {}), currentMetadata), metadata), Object.keys(param).length > 0 ? { param } : {});
310
+ if (isZodType(schema, [
311
+ "ZodOptional",
312
+ "ZodNullable",
313
+ "ZodDefault",
314
+ "ZodPrefault",
315
+ "ZodReadonly",
316
+ "ZodNonOptional"
317
+ ]) && isAnyZodType(schema._zod.def.innerType)) {
318
+ return this.collectMetadata(schema._zod.def.innerType, totalMetadata);
319
+ }
320
+ if (isZodType(schema, "ZodPipe")) {
321
+ const inSchema = schema._zod.def.in;
322
+ const outSchema = schema._zod.def.out;
323
+ if (isZodType(inSchema, "ZodTransform") && isAnyZodType(outSchema)) {
324
+ return this.collectMetadata(outSchema, totalMetadata);
325
+ }
326
+ if (isAnyZodType(inSchema)) {
327
+ return this.collectMetadata(inSchema, totalMetadata);
328
+ }
329
+ }
330
+ return totalMetadata;
331
+ }
332
+ static getMetadata(zodSchema) {
333
+ return this.collectMetadata(zodSchema);
334
+ }
335
+ static getOpenApiMetadata(zodSchema) {
336
+ const metadata = this.collectMetadata(zodSchema);
337
+ const _a = metadata !== null && metadata !== undefined ? metadata : {}, { _internal } = _a, rest = __rest(_a, ["_internal"]);
338
+ return rest;
339
+ }
340
+ static getInternalMetadata(zodSchema) {
341
+ var _a;
342
+ return (_a = this.collectMetadata(zodSchema)) === null || _a === undefined ? undefined : _a._internal;
343
+ }
344
+ static getParamMetadata(zodSchema) {
345
+ const metadata = this.collectMetadata(zodSchema);
346
+ return Object.assign(Object.assign({}, metadata), {
347
+ param: Object.assign(Object.assign({}, (metadata === null || metadata === undefined ? undefined : metadata.description) ? { description: metadata.description } : {}), metadata === null || metadata === undefined ? undefined : metadata.param)
348
+ });
349
+ }
350
+ static buildSchemaMetadata(metadata) {
351
+ return omitBy(omit(metadata, ["param", "_internal"]), isUndefined);
352
+ }
353
+ static buildParameterMetadata(metadata) {
354
+ return omitBy(metadata, isUndefined);
355
+ }
356
+ static applySchemaMetadata(initialData, metadata) {
357
+ return omitBy(Object.assign(Object.assign({}, initialData), this.buildSchemaMetadata(metadata)), isUndefined);
358
+ }
359
+ static getRefId(zodSchema) {
360
+ var _a;
361
+ return (_a = this.getInternalMetadata(zodSchema)) === null || _a === undefined ? undefined : _a.refId;
362
+ }
363
+ static unwrapChained(schema) {
364
+ return this.unwrapUntil(schema);
365
+ }
366
+ static getDefaultValue(zodSchema) {
367
+ var _a;
368
+ const unwrapped = (_a = this.unwrapUntil(zodSchema, "ZodDefault")) !== null && _a !== undefined ? _a : this.unwrapUntil(zodSchema, "ZodPrefault");
369
+ return unwrapped === null || unwrapped === undefined ? undefined : unwrapped._zod.def.defaultValue;
370
+ }
371
+ static unwrapUntil(schema, typeName) {
372
+ if (typeName && isZodType(schema, typeName)) {
373
+ return schema;
374
+ }
375
+ if (isZodType(schema, [
376
+ "ZodOptional",
377
+ "ZodNullable",
378
+ "ZodDefault",
379
+ "ZodPrefault",
380
+ "ZodReadonly",
381
+ "ZodNonOptional"
382
+ ]) && isAnyZodType(schema._zod.def.innerType)) {
383
+ return this.unwrapUntil(schema._zod.def.innerType, typeName);
384
+ }
385
+ if (isZodType(schema, "ZodPipe")) {
386
+ const inSchema = schema._zod.def.in;
387
+ const outSchema = schema._zod.def.out;
388
+ if (isZodType(inSchema, "ZodTransform") && isAnyZodType(outSchema)) {
389
+ return this.unwrapUntil(outSchema, typeName);
390
+ }
391
+ if (isAnyZodType(inSchema)) {
392
+ return this.unwrapUntil(inSchema, typeName);
393
+ }
394
+ }
395
+ return typeName ? undefined : schema;
396
+ }
397
+ static getMetadataFromInternalRegistry(zodSchema) {
398
+ return zodToOpenAPIRegistry.get(zodSchema);
399
+ }
400
+ static getMetadataFromRegistry(zodSchema) {
401
+ const internal = this.getMetadataFromInternalRegistry(zodSchema);
402
+ const general = zodSchema.meta();
403
+ if (!internal) {
404
+ return general;
405
+ }
406
+ const { _internal } = internal, rest = __rest(internal, ["_internal"]);
407
+ const _a = general !== null && general !== undefined ? general : {}, { id, title } = _a, restGeneral = __rest(_a, ["id", "title"]);
408
+ return Object.assign(Object.assign(Object.assign({ _internal: Object.assign(Object.assign({}, id ? { refId: id } : {}), _internal) }, rest), title ? { description: title } : {}), restGeneral);
409
+ }
410
+ static setMetadataInRegistry(zodSchema, metadata) {
411
+ zodToOpenAPIRegistry.add(zodSchema, metadata);
412
+ }
413
+ }
414
+ function preserveMetadataFromModifier(zodSchema, modifier) {
415
+ const zodModifier = zodSchema[modifier];
416
+ if (typeof zodModifier !== "function") {
417
+ return;
418
+ }
419
+ zodSchema[modifier] = function(...args) {
420
+ const result = zodModifier.apply(this, args);
421
+ const meta = Metadata.getMetadataFromRegistry(this);
422
+ if (meta) {
423
+ Metadata.setMetadataInRegistry(result, meta);
424
+ }
425
+ return result;
426
+ };
427
+ }
428
+ function extendZodWithOpenApi(zod) {
429
+ if (typeof zod.ZodType.prototype.openapi !== "undefined") {
430
+ return;
431
+ }
432
+ zod.ZodType.prototype.openapi = function(...args) {
433
+ const { refId, metadata, options } = getOpenApiConfiguration(...args);
434
+ const _a = metadata !== null && metadata !== undefined ? metadata : {}, { param } = _a, restOfOpenApi = __rest(_a, ["param"]);
435
+ const allMetadata = Metadata.getMetadataFromRegistry(this);
436
+ const _b = allMetadata !== null && allMetadata !== undefined ? allMetadata : {}, { _internal: internalMetadata } = _b, currentMetadata = __rest(_b, ["_internal"]);
437
+ const _internal = Object.assign(Object.assign(Object.assign({}, internalMetadata), options), refId ? { refId } : undefined);
438
+ const resultMetadata = Object.assign(Object.assign(Object.assign({}, currentMetadata), restOfOpenApi), (currentMetadata === null || currentMetadata === undefined ? undefined : currentMetadata.param) || param ? {
439
+ param: Object.assign(Object.assign({}, currentMetadata === null || currentMetadata === undefined ? undefined : currentMetadata.param), param)
440
+ } : undefined);
441
+ const result = new this.constructor(this._def);
442
+ function setMetadata(schema) {
443
+ Metadata.setMetadataInRegistry(schema, Object.assign(Object.assign({}, Object.keys(_internal).length > 0 ? { _internal } : undefined), resultMetadata));
444
+ }
445
+ setMetadata(result);
446
+ if (isZodType(result, "ZodLazy")) {
447
+ setMetadata(this);
448
+ }
449
+ if (isZodType(result, "ZodObject")) {
450
+ const currentMetadata2 = Metadata.getMetadataFromRegistry(result);
451
+ const originalExtend = result.extend;
452
+ result.extend = function(...args2) {
453
+ const extendedResult = originalExtend.apply(result, args2);
454
+ const _a2 = currentMetadata2 !== null && currentMetadata2 !== undefined ? currentMetadata2 : {}, { _internal: _internal2 } = _a2, rest = __rest(_a2, ["_internal"]);
455
+ Metadata.setMetadataInRegistry(extendedResult, {
456
+ _internal: {
457
+ extendedFrom: (_internal2 === null || _internal2 === undefined ? undefined : _internal2.refId) ? { refId: _internal2.refId, schema: result } : _internal2 === null || _internal2 === undefined ? undefined : _internal2.extendedFrom
458
+ }
459
+ });
460
+ return extendedResult.openapi(rest);
461
+ };
462
+ preserveMetadataFromModifier(result, "catchall");
463
+ }
464
+ preserveMetadataFromModifier(result, "optional");
465
+ preserveMetadataFromModifier(result, "nullable");
466
+ preserveMetadataFromModifier(result, "default");
467
+ preserveMetadataFromModifier(result, "transform");
468
+ preserveMetadataFromModifier(result, "refine");
469
+ preserveMetadataFromModifier(result, "length");
470
+ preserveMetadataFromModifier(result, "min");
471
+ preserveMetadataFromModifier(result, "max");
472
+ const originalMeta = result.meta;
473
+ result.meta = function(...args2) {
474
+ const result2 = originalMeta.apply(this, args2);
475
+ if (args2[0]) {
476
+ const meta = Metadata.getMetadataFromInternalRegistry(this);
477
+ if (meta) {
478
+ Metadata.setMetadataInRegistry(result2, Object.assign(Object.assign({}, meta), args2[0]));
479
+ }
480
+ }
481
+ return result2;
482
+ };
483
+ return result;
484
+ };
485
+ }
486
+ function getOpenApiConfiguration(refOrOpenapi, metadataOrOptions, options) {
487
+ if (typeof refOrOpenapi === "string") {
488
+ return {
489
+ refId: refOrOpenapi,
490
+ metadata: metadataOrOptions,
491
+ options
492
+ };
493
+ }
494
+ return {
495
+ refId: undefined,
496
+ metadata: refOrOpenapi,
497
+ options: metadataOrOptions
498
+ };
499
+ }
500
+
501
+ class OpenAPIRegistry {
502
+ constructor(parents) {
503
+ this.parents = parents;
504
+ this._definitions = [];
505
+ }
506
+ get definitions() {
507
+ var _a, _b;
508
+ const parentDefinitions = (_b = (_a = this.parents) === null || _a === undefined ? undefined : _a.flatMap((par) => par._definitions)) !== null && _b !== undefined ? _b : [];
509
+ return [...parentDefinitions, ...this._definitions];
510
+ }
511
+ register(refId, zodSchema) {
512
+ const schemaWithRefId = this.schemaWithRefId(refId, zodSchema);
513
+ this._definitions.push({ type: "schema", schema: schemaWithRefId });
514
+ return schemaWithRefId;
515
+ }
516
+ registerParameter(refId, zodSchema) {
517
+ var _a, _b, _c;
518
+ const schemaWithRefId = this.schemaWithRefId(refId, zodSchema);
519
+ const currentMetadata = (_a = Metadata.getOpenApiMetadata(schemaWithRefId)) !== null && _a !== undefined ? _a : {};
520
+ const schemaWithMetadata = schemaWithRefId.openapi(Object.assign(Object.assign({}, currentMetadata), { param: Object.assign(Object.assign({}, currentMetadata === null || currentMetadata === undefined ? undefined : currentMetadata.param), { name: (_c = (_b = currentMetadata === null || currentMetadata === undefined ? undefined : currentMetadata.param) === null || _b === undefined ? undefined : _b.name) !== null && _c !== undefined ? _c : refId }) }));
521
+ this._definitions.push({
522
+ type: "parameter",
523
+ schema: schemaWithMetadata
524
+ });
525
+ return schemaWithMetadata;
526
+ }
527
+ registerPath(route) {
528
+ this._definitions.push({
529
+ type: "route",
530
+ route
531
+ });
532
+ }
533
+ registerWebhook(webhook) {
534
+ this._definitions.push({
535
+ type: "webhook",
536
+ webhook
537
+ });
538
+ }
539
+ registerComponent(type, name, component) {
540
+ this._definitions.push({
541
+ type: "component",
542
+ componentType: type,
543
+ name,
544
+ component
545
+ });
546
+ return {
547
+ name,
548
+ ref: { $ref: `#/components/${type}/${name}` }
549
+ };
550
+ }
551
+ schemaWithRefId(refId, zodSchema) {
552
+ return zodSchema.openapi(refId);
553
+ }
554
+ }
555
+
556
+ class ZodToOpenAPIError {
557
+ constructor(message) {
558
+ this.message = message;
559
+ }
560
+ }
561
+ function enhanceMissingParametersError(action, paramsToAdd) {
562
+ try {
563
+ return action();
564
+ } catch (error) {
565
+ if (error instanceof MissingParameterDataError) {
566
+ throw new MissingParameterDataError(Object.assign(Object.assign({}, error.data), paramsToAdd));
567
+ }
568
+ throw error;
569
+ }
570
+ }
571
+
572
+ class ArrayTransformer {
573
+ transform(zodSchema, mapNullableType, mapItems) {
574
+ var _a, _b, _c, _d;
575
+ const itemType = zodSchema.def.element;
576
+ const minItems = (_b = (_a = zodSchema.def.checks) === null || _a === undefined ? undefined : _a.find((check) => check._zod.def.check === "min_length")) === null || _b === undefined ? undefined : _b._zod.def.minimum;
577
+ const maxItems = (_d = (_c = zodSchema.def.checks) === null || _c === undefined ? undefined : _c.find((check) => check._zod.def.check === "max_length")) === null || _d === undefined ? undefined : _d._zod.def.maximum;
578
+ return Object.assign(Object.assign({}, mapNullableType("array")), {
579
+ items: isAnyZodType(itemType) ? mapItems(itemType) : {},
580
+ minItems,
581
+ maxItems
582
+ });
583
+ }
584
+ }
585
+
586
+ class BigIntTransformer {
587
+ transform(mapNullableType) {
588
+ return Object.assign(Object.assign({}, mapNullableType("string")), { pattern: `^d+$` });
589
+ }
590
+ }
591
+
592
+ class DiscriminatedUnionTransformer {
593
+ transform(zodSchema, isNullable, mapNullableOfArray, mapItem, generateSchemaRef) {
594
+ const options = [...zodSchema.def.options];
595
+ const optionSchema = options.map(mapItem);
596
+ if (isNullable) {
597
+ return {
598
+ oneOf: mapNullableOfArray(optionSchema, isNullable)
599
+ };
600
+ }
601
+ const discriminator = zodSchema._zod.def.discriminator;
602
+ if (!discriminator) {
603
+ console.error("No discriminator found for discriminated union", zodSchema);
604
+ return {
605
+ oneOf: optionSchema
606
+ };
607
+ }
608
+ return {
609
+ oneOf: optionSchema,
610
+ discriminator: this.mapDiscriminator(options, discriminator, generateSchemaRef)
611
+ };
612
+ }
613
+ mapDiscriminator(zodObjects, discriminator, generateSchemaRef) {
614
+ if (zodObjects.some((obj) => Metadata.getRefId(obj) === undefined)) {
615
+ return;
616
+ }
617
+ const mapping = {};
618
+ zodObjects.forEach((obj) => {
619
+ var _a;
620
+ const refId = Metadata.getRefId(obj);
621
+ const value = (_a = obj.def.shape) === null || _a === undefined ? undefined : _a[discriminator];
622
+ if (isZodType(value, "ZodEnum")) {
623
+ const keys = Object.values(value._zod.def.entries).filter(isString);
624
+ keys.forEach((enumValue) => {
625
+ mapping[enumValue] = generateSchemaRef(refId);
626
+ });
627
+ return;
628
+ }
629
+ const literalValue = value === null || value === undefined ? undefined : value.def.values[0];
630
+ if (typeof literalValue !== "string") {
631
+ throw new Error(`Discriminator ${discriminator} could not be found in one of the values of a discriminated union`);
632
+ }
633
+ mapping[literalValue] = generateSchemaRef(refId);
634
+ });
635
+ return {
636
+ propertyName: discriminator,
637
+ mapping
638
+ };
639
+ }
640
+ }
641
+ function enumInfo(enumObject) {
642
+ const keysExceptReverseMappings = Object.keys(enumObject).filter((key) => typeof enumObject[enumObject[key]] !== "number");
643
+ const values = keysExceptReverseMappings.map((key) => enumObject[key]);
644
+ const numericCount = values.filter((_) => typeof _ === "number").length;
645
+ const type = numericCount === 0 ? "string" : numericCount === values.length ? "numeric" : "mixed";
646
+ return { values, type };
647
+ }
648
+
649
+ class EnumTransformer {
650
+ transform(zodSchema, isNullable, mapNullableType) {
651
+ const { type, values } = enumInfo(zodSchema._zod.def.entries);
652
+ if (type === "mixed") {
653
+ throw new ZodToOpenAPIError("Enum has mixed string and number values, please specify the OpenAPI type manually");
654
+ }
655
+ return Object.assign(Object.assign({}, mapNullableType(type === "numeric" ? "integer" : "string")), { enum: isNullable ? [...values, null] : values });
656
+ }
657
+ }
658
+
659
+ class IntersectionTransformer {
660
+ transform(zodSchema, isNullable, mapNullableOfArray, mapItem) {
661
+ const subtypes = this.flattenIntersectionTypes(zodSchema);
662
+ const allOfSchema = {
663
+ allOf: subtypes.map(mapItem)
664
+ };
665
+ if (isNullable) {
666
+ return {
667
+ anyOf: mapNullableOfArray([allOfSchema], isNullable)
668
+ };
669
+ }
670
+ return allOfSchema;
671
+ }
672
+ flattenIntersectionTypes(schema) {
673
+ if (!isZodType(schema, "ZodIntersection")) {
674
+ return [schema];
675
+ }
676
+ const leftSubTypes = isAnyZodType(schema._zod.def.left) ? this.flattenIntersectionTypes(schema._zod.def.left) : [];
677
+ const rightSubTypes = isAnyZodType(schema._zod.def.right) ? this.flattenIntersectionTypes(schema._zod.def.right) : [];
678
+ return [...leftSubTypes, ...rightSubTypes];
679
+ }
680
+ }
681
+
682
+ class LiteralTransformer {
683
+ constructor() {
684
+ this.bigIntTransformer = new BigIntTransformer;
685
+ }
686
+ transform(zodSchema, mapNullableType) {
687
+ const type = typeof zodSchema.def.values[0];
688
+ if (type === "boolean" || type === "number" || type === "string" || type === "object") {
689
+ return Object.assign(Object.assign({}, mapNullableType(type)), { enum: [zodSchema.def.values[0]] });
690
+ }
691
+ if (type === "bigint") {
692
+ return this.bigIntTransformer.transform(mapNullableType);
693
+ }
694
+ return mapNullableType("null");
695
+ }
696
+ }
697
+
698
+ class NumberTransformer {
699
+ transform(zodSchema, mapNullableType, getNumberChecks) {
700
+ var _a;
701
+ return Object.assign(Object.assign(Object.assign({}, mapNullableType("number")), mapNullableType(zodSchema.format === "safeint" ? "integer" : "number")), getNumberChecks((_a = zodSchema.def.checks) !== null && _a !== undefined ? _a : []));
702
+ }
703
+ }
704
+
705
+ class ObjectTransformer {
706
+ transform(zodSchema, defaultValue, mapNullableType, mapItem) {
707
+ var _a;
708
+ const extendedFrom = (_a = Metadata.getInternalMetadata(zodSchema)) === null || _a === undefined ? undefined : _a.extendedFrom;
709
+ const required = this.requiredKeysOf(zodSchema);
710
+ const properties = mapValues(zodSchema.def.shape, mapItem);
711
+ if (!extendedFrom) {
712
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, mapNullableType("object")), { properties, default: defaultValue }), required.length > 0 ? { required } : {}), this.generateAdditionalProperties(zodSchema, mapItem));
713
+ }
714
+ const parent = extendedFrom.schema;
715
+ mapItem(parent);
716
+ const keysRequiredByParent = this.requiredKeysOf(parent);
717
+ const propsOfParent = mapValues(parent === null || parent === undefined ? undefined : parent.def.shape, mapItem);
718
+ const propertiesToAdd = Object.fromEntries(Object.entries(properties).filter(([key, type]) => {
719
+ return !objectEquals(propsOfParent[key], type);
720
+ }));
721
+ const additionallyRequired = required.filter((prop) => !keysRequiredByParent.includes(prop));
722
+ const objectData = Object.assign(Object.assign(Object.assign(Object.assign({}, mapNullableType("object")), { default: defaultValue, properties: propertiesToAdd }), additionallyRequired.length > 0 ? { required: additionallyRequired } : {}), this.generateAdditionalProperties(zodSchema, mapItem));
723
+ return {
724
+ allOf: [
725
+ { $ref: `#/components/schemas/${extendedFrom.refId}` },
726
+ objectData
727
+ ]
728
+ };
729
+ }
730
+ generateAdditionalProperties(zodSchema, mapItem) {
731
+ const catchallSchema = zodSchema.def.catchall;
732
+ if (!catchallSchema) {
733
+ return {};
734
+ }
735
+ if (isZodType(catchallSchema, "ZodNever")) {
736
+ return { additionalProperties: false };
737
+ }
738
+ if (isAnyZodType(catchallSchema)) {
739
+ return { additionalProperties: mapItem(catchallSchema) };
740
+ }
741
+ return {};
742
+ }
743
+ requiredKeysOf(objectSchema) {
744
+ return Object.entries(objectSchema.def.shape).filter(([_key, type]) => !isOptionalSchema(type)).map(([key, _type]) => key);
745
+ }
746
+ }
747
+
748
+ class RecordTransformer {
749
+ transform(zodSchema, mapNullableType, mapItem) {
750
+ const propertiesType = zodSchema.valueType;
751
+ const keyType = zodSchema.keyType;
752
+ const propertiesSchema = isAnyZodType(propertiesType) ? mapItem(propertiesType) : {};
753
+ if (isZodType(keyType, "ZodEnum")) {
754
+ const keys = Object.values(keyType._zod.def.entries).filter(isString);
755
+ const properties = keys.reduce((acc, curr) => Object.assign(Object.assign({}, acc), { [curr]: propertiesSchema }), {});
756
+ return Object.assign(Object.assign({}, mapNullableType("object")), { properties });
757
+ }
758
+ return Object.assign(Object.assign({}, mapNullableType("object")), { additionalProperties: propertiesSchema });
759
+ }
760
+ }
761
+ function isZodCheckLengthEquals(check) {
762
+ return check._zod.def.check === "length_equals";
763
+ }
764
+ function isZodCheckRegex(check) {
765
+ return check._zod.def.check === "string_format" && check._zod.def.format === "regex";
766
+ }
767
+
768
+ class StringTransformer {
769
+ transform(zodSchema, mapNullableType) {
770
+ var _a, _b, _c, _d;
771
+ const regexCheck = (_a = zodSchema.def.checks) === null || _a === undefined ? undefined : _a.find(isZodCheckRegex);
772
+ const pattern = regexCheck === null || regexCheck === undefined ? undefined : regexCheck._zod.def.pattern.toString().replace(/^\/|\/$/g, "");
773
+ const check = (_b = zodSchema.def.checks) === null || _b === undefined ? undefined : _b.find(isZodCheckLengthEquals);
774
+ const length = check === null || check === undefined ? undefined : check._zod.def.length;
775
+ const maxLength = Number.isFinite(zodSchema.minLength) ? (_c = zodSchema.minLength) !== null && _c !== undefined ? _c : undefined : undefined;
776
+ const minLength = Number.isFinite(zodSchema.maxLength) ? (_d = zodSchema.maxLength) !== null && _d !== undefined ? _d : undefined : undefined;
777
+ return Object.assign(Object.assign({}, mapNullableType("string")), {
778
+ minLength: length !== null && length !== undefined ? length : maxLength,
779
+ maxLength: length !== null && length !== undefined ? length : minLength,
780
+ format: this.mapStringFormat(zodSchema),
781
+ pattern
782
+ });
783
+ }
784
+ mapStringFormat(zodString) {
785
+ if (zodString.format === "uuid")
786
+ return "uuid";
787
+ if (zodString.format === "email")
788
+ return "email";
789
+ if (zodString.format === "url")
790
+ return "uri";
791
+ if (zodString.format === "date")
792
+ return "date";
793
+ if (zodString.format === "datetime")
794
+ return "date-time";
795
+ if (zodString.format === "cuid")
796
+ return "cuid";
797
+ if (zodString.format === "cuid2")
798
+ return "cuid2";
799
+ if (zodString.format === "ulid")
800
+ return "ulid";
801
+ if (zodString.format === "ipv4")
802
+ return "ip";
803
+ if (zodString.format === "ipv6")
804
+ return "ip";
805
+ if (zodString.format === "emoji")
806
+ return "emoji";
807
+ return;
808
+ }
809
+ }
810
+
811
+ class TupleTransformer {
812
+ constructor(versionSpecifics) {
813
+ this.versionSpecifics = versionSpecifics;
814
+ }
815
+ transform(zodSchema, mapNullableType, mapItem) {
816
+ const items = zodSchema._zod.def.items;
817
+ const schemas = items.map((item) => isAnyZodType(item) ? mapItem(item) : {});
818
+ return Object.assign(Object.assign({}, mapNullableType("array")), this.versionSpecifics.mapTupleItems(schemas));
819
+ }
820
+ }
821
+
822
+ class UnionTransformer {
823
+ constructor(options) {
824
+ this.options = options;
825
+ }
826
+ transform(zodSchema, mapNullableOfArray, mapItem) {
827
+ var _a, _b, _c;
828
+ const internalMetadata = Metadata.getInternalMetadata(zodSchema);
829
+ const preferredType = (_c = (_a = internalMetadata === null || internalMetadata === undefined ? undefined : internalMetadata.unionPreferredType) !== null && _a !== undefined ? _a : (_b = this.options) === null || _b === undefined ? undefined : _b.unionPreferredType) !== null && _c !== undefined ? _c : "anyOf";
830
+ const options = this.flattenUnionTypes(zodSchema);
831
+ const schemas = options.map((schema) => {
832
+ const optionToGenerate = this.unwrapNullable(schema);
833
+ return mapItem(optionToGenerate);
834
+ });
835
+ return {
836
+ [preferredType]: mapNullableOfArray(schemas)
837
+ };
838
+ }
839
+ flattenUnionTypes(schema) {
840
+ if (!isZodType(schema, "ZodUnion")) {
841
+ return [schema];
842
+ }
843
+ const options = schema.def.options;
844
+ return options.flatMap((option) => isAnyZodType(option) ? this.flattenUnionTypes(option) : []);
845
+ }
846
+ unwrapNullable(schema) {
847
+ if (isZodType(schema, "ZodNullable")) {
848
+ const unwrapped = schema.unwrap();
849
+ if (isAnyZodType(unwrapped)) {
850
+ return this.unwrapNullable(unwrapped);
851
+ }
852
+ }
853
+ return schema;
854
+ }
855
+ }
856
+
857
+ class DateTransformer {
858
+ transform(mapNullableType) {
859
+ return Object.assign(Object.assign({}, mapNullableType("string")), { format: "date-time" });
860
+ }
861
+ }
862
+
863
+ class LazyTransformer {
864
+ transform(zodSchema, mapItem, mapNullableType, mapNullableRef) {
865
+ const result = mapItem(zodSchema._zod.def.getter());
866
+ return LazyTransformer.mapRecursive(result, mapNullableType, mapNullableRef);
867
+ }
868
+ static mapRecursive(schema, mapNullableType, mapNullableRef) {
869
+ if ("$ref" in schema) {
870
+ return mapNullableRef(schema);
871
+ }
872
+ if (schema.type) {
873
+ return Object.assign(Object.assign({}, schema), mapNullableType(schema.type));
874
+ }
875
+ return schema;
876
+ }
877
+ }
878
+
879
+ class TemplateLiteralTransformer {
880
+ transform(zodSchema, mapNullableType) {
881
+ const parts = zodSchema.def.parts;
882
+ const contentPattern = parts.map((part) => this.generatePattern(part)).join("");
883
+ return Object.assign(Object.assign({}, mapNullableType("string")), { pattern: `^${contentPattern}$` });
884
+ }
885
+ generatePattern(part) {
886
+ if (typeof part === "string" || typeof part === "number" || typeof part === "boolean" || typeof part === "bigint" || part === null || part === undefined) {
887
+ return this.escapeRegex(String(part));
888
+ }
889
+ if (isZodType(part, "ZodLiteral")) {
890
+ const value = part.def.values[0];
891
+ return this.escapeRegex(String(value));
892
+ }
893
+ if (isZodType(part, "ZodNumber")) {
894
+ return "[+-]?\\d+(\\.\\d+)?";
895
+ }
896
+ if (isZodType(part, "ZodBoolean")) {
897
+ return "(true|false)";
898
+ }
899
+ if (isZodType(part, "ZodEnum")) {
900
+ const { values } = enumInfo(part.def.entries);
901
+ return `(${values.map((v) => this.escapeRegex(String(v))).join("|")})`;
902
+ }
903
+ return ".*";
904
+ }
905
+ escapeRegex(str) {
906
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
907
+ }
908
+ }
909
+
910
+ class OpenApiTransformer {
911
+ constructor(versionSpecifics, options) {
912
+ this.versionSpecifics = versionSpecifics;
913
+ this.objectTransformer = new ObjectTransformer;
914
+ this.stringTransformer = new StringTransformer;
915
+ this.numberTransformer = new NumberTransformer;
916
+ this.bigIntTransformer = new BigIntTransformer;
917
+ this.dateTransformer = new DateTransformer;
918
+ this.lazyTransformer = new LazyTransformer;
919
+ this.literalTransformer = new LiteralTransformer;
920
+ this.templateLiteralTransformer = new TemplateLiteralTransformer;
921
+ this.enumTransformer = new EnumTransformer;
922
+ this.arrayTransformer = new ArrayTransformer;
923
+ this.discriminatedUnionTransformer = new DiscriminatedUnionTransformer;
924
+ this.intersectionTransformer = new IntersectionTransformer;
925
+ this.recordTransformer = new RecordTransformer;
926
+ this.tupleTransformer = new TupleTransformer(versionSpecifics);
927
+ this.unionTransformer = new UnionTransformer(options);
928
+ }
929
+ transform(zodSchema, isNullable, mapItem, generateSchemaRef, defaultValue) {
930
+ if (isZodType(zodSchema, "ZodNull")) {
931
+ return this.versionSpecifics.nullType;
932
+ }
933
+ if (isZodType(zodSchema, "ZodUnknown") || isZodType(zodSchema, "ZodAny")) {
934
+ return this.versionSpecifics.mapNullableType(undefined, isNullable);
935
+ }
936
+ if (isZodType(zodSchema, "ZodObject")) {
937
+ return this.objectTransformer.transform(zodSchema, defaultValue, (_) => this.versionSpecifics.mapNullableType(_, isNullable), mapItem);
938
+ }
939
+ const schema = this.transformSchemaWithoutDefault(zodSchema, isNullable, mapItem, generateSchemaRef);
940
+ return Object.assign(Object.assign({}, schema), { default: defaultValue });
941
+ }
942
+ transformSchemaWithoutDefault(zodSchema, isNullable, mapItem, generateSchemaRef) {
943
+ if (isZodType(zodSchema, "ZodUnknown") || isZodType(zodSchema, "ZodAny")) {
944
+ return this.versionSpecifics.mapNullableType(undefined, isNullable);
945
+ }
946
+ if (isZodType(zodSchema, "ZodString")) {
947
+ return this.stringTransformer.transform(zodSchema, (schema) => this.versionSpecifics.mapNullableType(schema, isNullable));
948
+ }
949
+ if (isZodType(zodSchema, "ZodNumber")) {
950
+ return this.numberTransformer.transform(zodSchema, (schema) => this.versionSpecifics.mapNullableType(schema, isNullable), (_) => this.versionSpecifics.getNumberChecks(_));
951
+ }
952
+ if (isZodType(zodSchema, "ZodBigInt")) {
953
+ return this.bigIntTransformer.transform((schema) => this.versionSpecifics.mapNullableType(schema, isNullable));
954
+ }
955
+ if (isZodType(zodSchema, "ZodBoolean")) {
956
+ return this.versionSpecifics.mapNullableType("boolean", isNullable);
957
+ }
958
+ if (isZodType(zodSchema, "ZodLazy")) {
959
+ return this.lazyTransformer.transform(zodSchema, mapItem, (schema) => this.versionSpecifics.mapNullableType(schema, isNullable), (schema) => this.versionSpecifics.mapNullableOfRef(schema, isNullable));
960
+ }
961
+ if (isZodType(zodSchema, "ZodLiteral")) {
962
+ return this.literalTransformer.transform(zodSchema, (schema) => this.versionSpecifics.mapNullableType(schema, isNullable));
963
+ }
964
+ if (isZodType(zodSchema, "ZodTemplateLiteral")) {
965
+ return this.templateLiteralTransformer.transform(zodSchema, (schema) => this.versionSpecifics.mapNullableType(schema, isNullable));
966
+ }
967
+ if (isZodType(zodSchema, "ZodEnum")) {
968
+ return this.enumTransformer.transform(zodSchema, isNullable, (schema) => this.versionSpecifics.mapNullableType(schema, isNullable));
969
+ }
970
+ if (isZodType(zodSchema, "ZodArray")) {
971
+ return this.arrayTransformer.transform(zodSchema, (_) => this.versionSpecifics.mapNullableType(_, isNullable), mapItem);
972
+ }
973
+ if (isZodType(zodSchema, "ZodTuple")) {
974
+ return this.tupleTransformer.transform(zodSchema, (_) => this.versionSpecifics.mapNullableType(_, isNullable), mapItem);
975
+ }
976
+ if (isZodType(zodSchema, "ZodDiscriminatedUnion")) {
977
+ return this.discriminatedUnionTransformer.transform(zodSchema, isNullable, (_) => this.versionSpecifics.mapNullableOfArray(_, isNullable), mapItem, generateSchemaRef);
978
+ }
979
+ if (isZodType(zodSchema, "ZodUnion")) {
980
+ return this.unionTransformer.transform(zodSchema, (_) => this.versionSpecifics.mapNullableOfArray(_, isNullable), mapItem);
981
+ }
982
+ if (isZodType(zodSchema, "ZodIntersection")) {
983
+ return this.intersectionTransformer.transform(zodSchema, isNullable, (_) => this.versionSpecifics.mapNullableOfArray(_, isNullable), mapItem);
984
+ }
985
+ if (isZodType(zodSchema, "ZodRecord")) {
986
+ return this.recordTransformer.transform(zodSchema, (_) => this.versionSpecifics.mapNullableType(_, isNullable), mapItem);
987
+ }
988
+ if (isZodType(zodSchema, "ZodDate")) {
989
+ return this.dateTransformer.transform((_) => this.versionSpecifics.mapNullableType(_, isNullable));
990
+ }
991
+ const refId = Metadata.getRefId(zodSchema);
992
+ throw new UnknownZodTypeError({
993
+ currentSchema: zodSchema.def,
994
+ schemaName: refId
995
+ });
996
+ }
997
+ }
998
+
999
+ class OpenAPIGenerator {
1000
+ constructor(definitions, versionSpecifics, options) {
1001
+ this.definitions = definitions;
1002
+ this.versionSpecifics = versionSpecifics;
1003
+ this.options = options;
1004
+ this.schemaRefs = {};
1005
+ this.paramRefs = {};
1006
+ this.pathRefs = {};
1007
+ this.rawComponents = [];
1008
+ this.openApiTransformer = new OpenApiTransformer(versionSpecifics, options);
1009
+ this.sortDefinitions();
1010
+ }
1011
+ generateDocumentData() {
1012
+ this.definitions.forEach((definition) => this.generateSingle(definition));
1013
+ return {
1014
+ components: this.buildComponents(),
1015
+ paths: this.pathRefs
1016
+ };
1017
+ }
1018
+ generateComponents() {
1019
+ this.definitions.forEach((definition) => this.generateSingle(definition));
1020
+ return {
1021
+ components: this.buildComponents()
1022
+ };
1023
+ }
1024
+ buildComponents() {
1025
+ var _a, _b, _c, _d;
1026
+ const rawComponents = {};
1027
+ this.rawComponents.forEach(({ componentType, name, component }) => {
1028
+ var _a2;
1029
+ (_a2 = rawComponents[componentType]) !== null && _a2 !== undefined || (rawComponents[componentType] = {});
1030
+ rawComponents[componentType][name] = component;
1031
+ });
1032
+ const allSchemas = Object.assign(Object.assign({}, (_a = rawComponents.schemas) !== null && _a !== undefined ? _a : {}), this.filteredSchemaRefs);
1033
+ const schemas = ((_b = this.options) === null || _b === undefined ? undefined : _b.sortComponents) === "alphabetically" ? sortObjectByKeys(allSchemas) : allSchemas;
1034
+ const allParameters = Object.assign(Object.assign({}, (_c = rawComponents.parameters) !== null && _c !== undefined ? _c : {}), this.paramRefs);
1035
+ const parameters = ((_d = this.options) === null || _d === undefined ? undefined : _d.sortComponents) === "alphabetically" ? sortObjectByKeys(allParameters) : allParameters;
1036
+ return Object.assign(Object.assign({}, rawComponents), { schemas, parameters });
1037
+ }
1038
+ isNotPendingRefEntry(entry) {
1039
+ return entry[1] !== "pending";
1040
+ }
1041
+ get filteredSchemaRefs() {
1042
+ const filtered = Object.entries(this.schemaRefs).filter(this.isNotPendingRefEntry);
1043
+ return Object.fromEntries(filtered);
1044
+ }
1045
+ sortDefinitions() {
1046
+ const generationOrder = [
1047
+ "schema",
1048
+ "parameter",
1049
+ "component",
1050
+ "route"
1051
+ ];
1052
+ this.definitions.sort((left, right) => {
1053
+ if (!("type" in left)) {
1054
+ if (!("type" in right)) {
1055
+ return 0;
1056
+ }
1057
+ return -1;
1058
+ }
1059
+ if (!("type" in right)) {
1060
+ return 1;
1061
+ }
1062
+ const leftIndex = generationOrder.findIndex((type) => type === left.type);
1063
+ const rightIndex = generationOrder.findIndex((type) => type === right.type);
1064
+ return leftIndex - rightIndex;
1065
+ });
1066
+ }
1067
+ generateSingle(definition) {
1068
+ if (!("type" in definition)) {
1069
+ this.generateSchemaWithRef(definition);
1070
+ return;
1071
+ }
1072
+ switch (definition.type) {
1073
+ case "parameter":
1074
+ this.generateParameterDefinition(definition.schema);
1075
+ return;
1076
+ case "schema":
1077
+ this.generateSchemaWithRef(definition.schema);
1078
+ return;
1079
+ case "route":
1080
+ this.generateSingleRoute(definition.route);
1081
+ return;
1082
+ case "component":
1083
+ this.rawComponents.push(definition);
1084
+ return;
1085
+ }
1086
+ }
1087
+ generateParameterDefinition(zodSchema) {
1088
+ const refId = Metadata.getRefId(zodSchema);
1089
+ const result = this.generateParameter(zodSchema);
1090
+ if (refId) {
1091
+ this.paramRefs[refId] = result;
1092
+ }
1093
+ return result;
1094
+ }
1095
+ getParameterRef(schema, external) {
1096
+ const metadata = Metadata.getOpenApiMetadata(schema);
1097
+ const internalMetadata = Metadata.getInternalMetadata(schema);
1098
+ const parameterMetadata = metadata === null || metadata === undefined ? undefined : metadata.param;
1099
+ const existingRef = (internalMetadata === null || internalMetadata === undefined ? undefined : internalMetadata.refId) ? this.paramRefs[internalMetadata.refId] : undefined;
1100
+ if (!(internalMetadata === null || internalMetadata === undefined ? undefined : internalMetadata.refId) || !existingRef) {
1101
+ return;
1102
+ }
1103
+ if (parameterMetadata && existingRef.in !== parameterMetadata.in || (external === null || external === undefined ? undefined : external.in) && existingRef.in !== external.in) {
1104
+ throw new ConflictError(`Conflicting location for parameter ${existingRef.name}`, {
1105
+ key: "in",
1106
+ values: compact([
1107
+ existingRef.in,
1108
+ external === null || external === undefined ? undefined : external.in,
1109
+ parameterMetadata === null || parameterMetadata === undefined ? undefined : parameterMetadata.in
1110
+ ])
1111
+ });
1112
+ }
1113
+ if (parameterMetadata && existingRef.name !== parameterMetadata.name || (external === null || external === undefined ? undefined : external.name) && existingRef.name !== (external === null || external === undefined ? undefined : external.name)) {
1114
+ throw new ConflictError(`Conflicting names for parameter`, {
1115
+ key: "name",
1116
+ values: compact([
1117
+ existingRef.name,
1118
+ external === null || external === undefined ? undefined : external.name,
1119
+ parameterMetadata === null || parameterMetadata === undefined ? undefined : parameterMetadata.name
1120
+ ])
1121
+ });
1122
+ }
1123
+ return {
1124
+ $ref: `#/components/parameters/${internalMetadata.refId}`
1125
+ };
1126
+ }
1127
+ generateInlineParameters(zodSchema, location) {
1128
+ const metadata = Metadata.getOpenApiMetadata(zodSchema);
1129
+ const parameterMetadata = metadata === null || metadata === undefined ? undefined : metadata.param;
1130
+ const referencedSchema = this.getParameterRef(zodSchema, { in: location });
1131
+ if (referencedSchema) {
1132
+ return [referencedSchema];
1133
+ }
1134
+ if (isZodType(zodSchema, "ZodObject")) {
1135
+ const propTypes = zodSchema.def.shape;
1136
+ const parameters = Object.entries(propTypes).map(([key, schema]) => {
1137
+ var _a;
1138
+ const innerMetadata = Metadata.getOpenApiMetadata(schema);
1139
+ const referencedSchema2 = this.getParameterRef(schema, {
1140
+ in: location,
1141
+ name: key
1142
+ });
1143
+ if (referencedSchema2) {
1144
+ return referencedSchema2;
1145
+ }
1146
+ const innerParameterMetadata = innerMetadata === null || innerMetadata === undefined ? undefined : innerMetadata.param;
1147
+ if ((innerParameterMetadata === null || innerParameterMetadata === undefined ? undefined : innerParameterMetadata.name) && innerParameterMetadata.name !== key) {
1148
+ throw new ConflictError(`Conflicting names for parameter`, {
1149
+ key: "name",
1150
+ values: [key, innerParameterMetadata.name]
1151
+ });
1152
+ }
1153
+ if ((innerParameterMetadata === null || innerParameterMetadata === undefined ? undefined : innerParameterMetadata.in) && innerParameterMetadata.in !== location) {
1154
+ throw new ConflictError(`Conflicting location for parameter ${(_a = innerParameterMetadata.name) !== null && _a !== undefined ? _a : key}`, {
1155
+ key: "in",
1156
+ values: [location, innerParameterMetadata.in]
1157
+ });
1158
+ }
1159
+ return this.generateParameter(schema, { name: key, in: location });
1160
+ });
1161
+ return parameters;
1162
+ }
1163
+ if ((parameterMetadata === null || parameterMetadata === undefined ? undefined : parameterMetadata.in) && parameterMetadata.in !== location) {
1164
+ throw new ConflictError(`Conflicting location for parameter ${parameterMetadata.name}`, {
1165
+ key: "in",
1166
+ values: [location, parameterMetadata.in]
1167
+ });
1168
+ }
1169
+ return [this.generateParameter(zodSchema, { in: location })];
1170
+ }
1171
+ generateSimpleParameter(zodSchema, externalParamMetadata) {
1172
+ const metadata = Metadata.getParamMetadata(zodSchema);
1173
+ const paramMetadata = metadata === null || metadata === undefined ? undefined : metadata.param;
1174
+ const mergedParamMetadata = Object.assign(Object.assign({}, paramMetadata), externalParamMetadata);
1175
+ const required = !isOptionalSchema(zodSchema) && !isNullableSchema(zodSchema);
1176
+ const schema = this.generateSchemaWithRef(zodSchema);
1177
+ return Object.assign({
1178
+ schema,
1179
+ required
1180
+ }, Object.keys(mergedParamMetadata).length > 0 ? Metadata.buildParameterMetadata(mergedParamMetadata) : {});
1181
+ }
1182
+ generateParameter(zodSchema, externalParamMetadata) {
1183
+ var _a, _b;
1184
+ const metadata = Metadata.getOpenApiMetadata(zodSchema);
1185
+ const paramMetadata = metadata === null || metadata === undefined ? undefined : metadata.param;
1186
+ const paramName = (_a = externalParamMetadata === null || externalParamMetadata === undefined ? undefined : externalParamMetadata.name) !== null && _a !== undefined ? _a : paramMetadata === null || paramMetadata === undefined ? undefined : paramMetadata.name;
1187
+ const paramLocation = (_b = externalParamMetadata === null || externalParamMetadata === undefined ? undefined : externalParamMetadata.in) !== null && _b !== undefined ? _b : paramMetadata === null || paramMetadata === undefined ? undefined : paramMetadata.in;
1188
+ if (!paramName) {
1189
+ throw new MissingParameterDataError({ missingField: "name" });
1190
+ }
1191
+ if (!paramLocation) {
1192
+ throw new MissingParameterDataError({
1193
+ missingField: "in",
1194
+ paramName
1195
+ });
1196
+ }
1197
+ const baseParameter = this.generateSimpleParameter(zodSchema, externalParamMetadata);
1198
+ return Object.assign(Object.assign({}, baseParameter), { in: paramLocation, name: paramName });
1199
+ }
1200
+ generateSchemaWithMetadata(zodSchema) {
1201
+ const innerSchema = Metadata.unwrapChained(zodSchema);
1202
+ const metadata = Metadata.getOpenApiMetadata(zodSchema);
1203
+ const defaultValue = Metadata.getDefaultValue(zodSchema);
1204
+ const refId = Metadata.getRefId(zodSchema);
1205
+ if (refId && typeof this.schemaRefs[refId] === "object") {
1206
+ return this.schemaRefs[refId];
1207
+ }
1208
+ if (refId && this.schemaRefs[refId] === "pending") {
1209
+ const refSchema = { $ref: this.generateSchemaRef(refId) };
1210
+ return this.versionSpecifics.mapNullableOfRef(refSchema, isNullableSchema(zodSchema));
1211
+ }
1212
+ if (refId && !this.schemaRefs[refId]) {
1213
+ this.schemaRefs[refId] = "pending";
1214
+ }
1215
+ const result = (metadata === null || metadata === undefined ? undefined : metadata.type) ? { type: metadata.type } : this.toOpenAPISchema(innerSchema, isNullableSchema(zodSchema), defaultValue);
1216
+ return metadata ? Metadata.applySchemaMetadata(result, metadata) : omitBy(result, isUndefined);
1217
+ }
1218
+ constructReferencedOpenAPISchema(zodSchema) {
1219
+ const metadata = Metadata.getOpenApiMetadata(zodSchema);
1220
+ const innerSchema = Metadata.unwrapChained(zodSchema);
1221
+ const defaultValue = Metadata.getDefaultValue(zodSchema);
1222
+ const isNullable = isNullableSchema(zodSchema);
1223
+ if (metadata === null || metadata === undefined ? undefined : metadata.type) {
1224
+ return this.versionSpecifics.mapNullableType(metadata.type, isNullable);
1225
+ }
1226
+ const refId = Metadata.getRefId(zodSchema);
1227
+ if (refId && typeof this.schemaRefs[refId] === "object") {
1228
+ return LazyTransformer.mapRecursive(this.schemaRefs[refId], (schema) => this.versionSpecifics.mapNullableType(schema, isNullable), (schema) => this.versionSpecifics.mapNullableOfRef(schema, isNullable));
1229
+ }
1230
+ if (refId && this.schemaRefs[refId] === "pending") {
1231
+ const refSchema = { $ref: this.generateSchemaRef(refId) };
1232
+ return this.versionSpecifics.mapNullableOfRef(refSchema, isNullable);
1233
+ }
1234
+ if (refId && !this.schemaRefs[refId]) {
1235
+ this.schemaRefs[refId] = "pending";
1236
+ }
1237
+ return this.toOpenAPISchema(innerSchema, isNullable, defaultValue);
1238
+ }
1239
+ generateSimpleSchema(zodSchema) {
1240
+ const metadata = Metadata.getOpenApiMetadata(zodSchema);
1241
+ const refId = Metadata.getRefId(zodSchema);
1242
+ if (!refId || !this.schemaRefs[refId]) {
1243
+ return this.generateSchemaWithMetadata(zodSchema);
1244
+ }
1245
+ const schemaRef = this.schemaRefs[refId];
1246
+ const referenceObject = {
1247
+ $ref: this.generateSchemaRef(refId)
1248
+ };
1249
+ if (this.schemaRefs[refId] === "pending") {
1250
+ return this.versionSpecifics.mapNullableOfRef(referenceObject, isNullableSchema(zodSchema));
1251
+ }
1252
+ const newMetadata = omitBy(Metadata.buildSchemaMetadata(metadata !== null && metadata !== undefined ? metadata : {}), (value, key) => value === undefined || objectEquals(value, schemaRef[key]));
1253
+ if (newMetadata.type) {
1254
+ return {
1255
+ allOf: [referenceObject, newMetadata]
1256
+ };
1257
+ }
1258
+ const newSchemaMetadata = omitBy(this.constructReferencedOpenAPISchema(zodSchema), (value, key) => value === undefined || objectEquals(value, schemaRef[key]));
1259
+ const appliedMetadata = Metadata.applySchemaMetadata(newSchemaMetadata, newMetadata);
1260
+ if (Object.keys(appliedMetadata).length > 0) {
1261
+ return {
1262
+ allOf: [referenceObject, appliedMetadata]
1263
+ };
1264
+ }
1265
+ return referenceObject;
1266
+ }
1267
+ generateSchemaWithRef(zodSchema) {
1268
+ const refId = Metadata.getRefId(zodSchema);
1269
+ if (refId && !this.schemaRefs[refId]) {
1270
+ this.schemaRefs[refId] = this.generateSimpleSchema(zodSchema);
1271
+ return { $ref: this.generateSchemaRef(refId) };
1272
+ }
1273
+ return this.generateSimpleSchema(zodSchema);
1274
+ }
1275
+ generateSchemaRef(refId) {
1276
+ return `#/components/schemas/${refId}`;
1277
+ }
1278
+ getRequestBody(requestBody) {
1279
+ if (!requestBody) {
1280
+ return;
1281
+ }
1282
+ const { content } = requestBody, rest = __rest(requestBody, ["content"]);
1283
+ const requestBodyContent = this.getBodyContent(content);
1284
+ return Object.assign(Object.assign({}, rest), { content: requestBodyContent });
1285
+ }
1286
+ getParameters(request) {
1287
+ if (!request) {
1288
+ return [];
1289
+ }
1290
+ const { headers } = request;
1291
+ const query = this.cleanParameter(request.query);
1292
+ const params = this.cleanParameter(request.params);
1293
+ const cookies = this.cleanParameter(request.cookies);
1294
+ const queryParameters = enhanceMissingParametersError(() => query ? this.generateInlineParameters(query, "query") : [], { location: "query" });
1295
+ const pathParameters = enhanceMissingParametersError(() => params ? this.generateInlineParameters(params, "path") : [], { location: "path" });
1296
+ const cookieParameters = enhanceMissingParametersError(() => cookies ? this.generateInlineParameters(cookies, "cookie") : [], { location: "cookie" });
1297
+ const headerParameters = enhanceMissingParametersError(() => {
1298
+ if (Array.isArray(headers)) {
1299
+ return headers.flatMap((header) => this.generateInlineParameters(header, "header"));
1300
+ }
1301
+ const cleanHeaders = this.cleanParameter(headers);
1302
+ return cleanHeaders ? this.generateInlineParameters(cleanHeaders, "header") : [];
1303
+ }, { location: "header" });
1304
+ return [
1305
+ ...pathParameters,
1306
+ ...queryParameters,
1307
+ ...headerParameters,
1308
+ ...cookieParameters
1309
+ ];
1310
+ }
1311
+ cleanParameter(schema) {
1312
+ if (!schema) {
1313
+ return;
1314
+ }
1315
+ if (isZodType(schema, "ZodPipe")) {
1316
+ const inSchema = schema._zod.def.in;
1317
+ const outSchema = schema._zod.def.out;
1318
+ if (isZodType(inSchema, "ZodObject")) {
1319
+ return this.cleanParameter(inSchema);
1320
+ }
1321
+ if (isZodType(outSchema, "ZodObject")) {
1322
+ return this.cleanParameter(outSchema);
1323
+ }
1324
+ return;
1325
+ }
1326
+ return schema;
1327
+ }
1328
+ generatePath(route) {
1329
+ const { method, path, request, responses } = route, pathItemConfig = __rest(route, ["method", "path", "request", "responses"]);
1330
+ const generatedResponses = mapValues(responses, (response) => {
1331
+ return this.getResponse(response);
1332
+ });
1333
+ const parameters = enhanceMissingParametersError(() => this.getParameters(request), { route: `${method} ${path}` });
1334
+ const requestBody = this.getRequestBody(request === null || request === undefined ? undefined : request.body);
1335
+ const routeDoc = {
1336
+ [method]: Object.assign(Object.assign(Object.assign(Object.assign({}, pathItemConfig), parameters.length > 0 ? {
1337
+ parameters: [...pathItemConfig.parameters || [], ...parameters]
1338
+ } : {}), requestBody ? { requestBody } : {}), { responses: generatedResponses })
1339
+ };
1340
+ return routeDoc;
1341
+ }
1342
+ generateSingleRoute(route) {
1343
+ const routeDoc = this.generatePath(route);
1344
+ this.pathRefs[route.path] = Object.assign(Object.assign({}, this.pathRefs[route.path]), routeDoc);
1345
+ return routeDoc;
1346
+ }
1347
+ getResponse(response) {
1348
+ if (this.isReferenceObject(response)) {
1349
+ return response;
1350
+ }
1351
+ const { content, headers } = response, rest = __rest(response, ["content", "headers"]);
1352
+ const responseContent = content ? { content: this.getBodyContent(content) } : {};
1353
+ if (!headers) {
1354
+ return Object.assign(Object.assign({}, rest), responseContent);
1355
+ }
1356
+ const responseHeaders = isZodType(headers, "ZodObject") ? this.getResponseHeaders(headers) : headers;
1357
+ return Object.assign(Object.assign(Object.assign({}, rest), { headers: responseHeaders }), responseContent);
1358
+ }
1359
+ isReferenceObject(schema) {
1360
+ return "$ref" in schema;
1361
+ }
1362
+ getResponseHeaders(headers) {
1363
+ const schemaShape = headers.def.shape;
1364
+ const responseHeaders = mapValues(schemaShape, (_) => this.generateSimpleParameter(_));
1365
+ return responseHeaders;
1366
+ }
1367
+ getBodyContent(content) {
1368
+ return mapValues(content, (config) => {
1369
+ if (!config || !isAnyZodType(config.schema)) {
1370
+ return config;
1371
+ }
1372
+ const { schema: configSchema } = config, rest = __rest(config, ["schema"]);
1373
+ const schema = this.generateSchemaWithRef(configSchema);
1374
+ return Object.assign({ schema }, rest);
1375
+ });
1376
+ }
1377
+ toOpenAPISchema(zodSchema, isNullable, defaultValue) {
1378
+ const result = this.openApiTransformer.transform(zodSchema, isNullable, (_) => this.generateSchemaWithRef(_), (_) => this.generateSchemaRef(_), defaultValue);
1379
+ return result;
1380
+ }
1381
+ }
1382
+
1383
+ class OpenApiGeneratorV31Specifics {
1384
+ get nullType() {
1385
+ return { type: "null" };
1386
+ }
1387
+ mapNullableOfArray(objects, isNullable) {
1388
+ if (isNullable && !objects.some((object) => objectEquals(object, this.nullType))) {
1389
+ return [...objects, this.nullType];
1390
+ }
1391
+ return objects;
1392
+ }
1393
+ mapNullableType(type, isNullable) {
1394
+ if (!type) {
1395
+ return {};
1396
+ }
1397
+ if (isNullable) {
1398
+ const typeArray = Array.isArray(type) ? type : [type];
1399
+ const nullableType = uniq([...typeArray, "null"]);
1400
+ return { type: nullableType };
1401
+ }
1402
+ return { type };
1403
+ }
1404
+ mapNullableOfRef(ref, isNullable) {
1405
+ if (isNullable) {
1406
+ return {
1407
+ oneOf: [ref, this.nullType]
1408
+ };
1409
+ }
1410
+ return ref;
1411
+ }
1412
+ mapTupleItems(schemas) {
1413
+ return {
1414
+ prefixItems: schemas
1415
+ };
1416
+ }
1417
+ getNumberChecks(checks) {
1418
+ return Object.assign({}, ...checks.map((check) => {
1419
+ switch (check._zod.def.check) {
1420
+ case "greater_than": {
1421
+ const greaterThanCheck = check;
1422
+ return greaterThanCheck._zod.def.inclusive ? { minimum: Number(greaterThanCheck._zod.def.value) } : { exclusiveMinimum: Number(greaterThanCheck._zod.def.value) };
1423
+ }
1424
+ case "less_than": {
1425
+ const lessThanCheck = check;
1426
+ return lessThanCheck._zod.def.inclusive ? { maximum: Number(lessThanCheck._zod.def.value) } : { exclusiveMaximum: Number(lessThanCheck._zod.def.value) };
1427
+ }
1428
+ default:
1429
+ return {};
1430
+ }
1431
+ }));
1432
+ }
1433
+ }
1434
+ function isWebhookDefinition(definition) {
1435
+ return "type" in definition && definition.type === "webhook";
1436
+ }
1437
+
1438
+ class OpenApiGeneratorV31 {
1439
+ constructor(definitions, options) {
1440
+ this.definitions = definitions;
1441
+ this.webhookRefs = {};
1442
+ const specifics = new OpenApiGeneratorV31Specifics;
1443
+ this.generator = new OpenAPIGenerator(this.definitions, specifics, options);
1444
+ }
1445
+ generateDocument(config) {
1446
+ const baseDocument = this.generator.generateDocumentData();
1447
+ this.definitions.filter(isWebhookDefinition).forEach((definition) => this.generateSingleWebhook(definition.webhook));
1448
+ return Object.assign(Object.assign(Object.assign({}, config), baseDocument), { webhooks: this.webhookRefs });
1449
+ }
1450
+ generateComponents() {
1451
+ return this.generator.generateComponents();
1452
+ }
1453
+ generateSingleWebhook(route) {
1454
+ const routeDoc = this.generator.generatePath(route);
1455
+ this.webhookRefs[route.path] = Object.assign(Object.assign({}, this.webhookRefs[route.path]), routeDoc);
1456
+ return routeDoc;
1457
+ }
1458
+ }
1459
+ var ZodTypeKeys, objectEquals, zodToOpenAPIRegistry, ConflictError, MissingParameterDataError, UnknownZodTypeError, $OpenAPIRegistry, $OpenApiGeneratorV31, $extendZodWithOpenApi;
1460
+ var init_dist = __esm(() => {
1461
+ ZodTypeKeys = {
1462
+ ZodAny: "any",
1463
+ ZodArray: "array",
1464
+ ZodBigInt: "bigint",
1465
+ ZodBoolean: "boolean",
1466
+ ZodDefault: "default",
1467
+ ZodPrefault: "prefault",
1468
+ ZodTransform: "transform",
1469
+ ZodEnum: "enum",
1470
+ ZodIntersection: "intersection",
1471
+ ZodLazy: "lazy",
1472
+ ZodLiteral: "literal",
1473
+ ZodNever: "never",
1474
+ ZodNull: "null",
1475
+ ZodNullable: "nullable",
1476
+ ZodNumber: "number",
1477
+ ZodNonOptional: "nonoptional",
1478
+ ZodObject: "object",
1479
+ ZodOptional: "optional",
1480
+ ZodPipe: "pipe",
1481
+ ZodReadonly: "readonly",
1482
+ ZodRecord: "record",
1483
+ ZodString: "string",
1484
+ ZodTuple: "tuple",
1485
+ ZodType: "type",
1486
+ ZodUnion: "union",
1487
+ ZodDiscriminatedUnion: "union",
1488
+ ZodUnknown: "unknown",
1489
+ ZodVoid: "void",
1490
+ ZodDate: "date",
1491
+ ZodTemplateLiteral: "template_literal"
1492
+ };
1493
+ objectEquals = isEqual;
1494
+ zodToOpenAPIRegistry = registry();
1495
+ ConflictError = class ConflictError extends ZodToOpenAPIError {
1496
+ constructor(message, data) {
1497
+ super(message);
1498
+ this.data = data;
1499
+ }
1500
+ };
1501
+ MissingParameterDataError = class MissingParameterDataError extends ZodToOpenAPIError {
1502
+ constructor(data) {
1503
+ super(`Missing parameter data, please specify \`${data.missingField}\` and other OpenAPI parameter props using the \`param\` field of \`schema.openapi\``);
1504
+ this.data = data;
1505
+ }
1506
+ };
1507
+ UnknownZodTypeError = class UnknownZodTypeError extends ZodToOpenAPIError {
1508
+ constructor(data) {
1509
+ super(`Unknown zod object type, please specify \`type\` and other OpenAPI props using \`schema.openapi\`.`);
1510
+ this.data = data;
1511
+ }
1512
+ };
1513
+ $OpenAPIRegistry = OpenAPIRegistry;
1514
+ $OpenApiGeneratorV31 = OpenApiGeneratorV31;
1515
+ $extendZodWithOpenApi = extendZodWithOpenApi;
1516
+ });
1517
+
1518
+ // src/utils/zod-openapi.ts
1519
+ var init_zod_openapi = __esm(() => {
1520
+ init_dist();
1521
+ init_zod();
1522
+ $extendZodWithOpenApi(exports_zod);
1523
+ });
1524
+
1525
+ // src/types.ts
1526
+ function parseModelTier(value) {
1527
+ if (!value)
1528
+ return;
1529
+ const normalized = value.trim().toLowerCase();
1530
+ return ModelTierSchema.safeParse(normalized).success ? normalized : LEGACY_MODEL_TO_TIER[normalized];
1531
+ }
1532
+ function splitLegacyModelAlias(input) {
1533
+ const explicitTier = parseModelTier(input.modelTier);
1534
+ const model = input.model?.trim();
1535
+ if (!model)
1536
+ return { modelTier: explicitTier };
1537
+ const legacyTier = parseModelTier(model);
1538
+ if (legacyTier && !explicitTier) {
1539
+ return { modelTier: legacyTier };
1540
+ }
1541
+ return {
1542
+ model,
1543
+ modelTier: explicitTier
1544
+ };
1545
+ }
1546
+ function parseTierMapJson(value) {
1547
+ if (!value)
1548
+ return {};
1549
+ try {
1550
+ const parsed = JSON.parse(value);
1551
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
1552
+ return {};
1553
+ const result = {};
1554
+ for (const tier of MODEL_TIERS) {
1555
+ const model = parsed[tier];
1556
+ if (typeof model === "string" && model.trim())
1557
+ result[tier] = model.trim();
1558
+ }
1559
+ return result;
1560
+ } catch {
1561
+ return {};
1562
+ }
1563
+ }
1564
+ function resolveModelTier(opts) {
1565
+ const tier = parseModelTier(opts.tier);
1566
+ if (!tier)
1567
+ return;
1568
+ const env = opts.env ?? {};
1569
+ const jsonOverrides = parseTierMapJson(env.MODEL_TIER_MAP);
1570
+ const envKey = `MODEL_TIER_${tier.toUpperCase()}`;
1571
+ const directOverride = env[envKey]?.trim();
1572
+ if (directOverride)
1573
+ return directOverride;
1574
+ if (jsonOverrides[tier])
1575
+ return jsonOverrides[tier];
1576
+ return DEFAULT_MODEL_TIER_MAP[opts.harnessProvider]?.[tier];
1577
+ }
1578
+ function resolveTaskModelSelection(opts) {
1579
+ const model = opts.model?.trim();
1580
+ if (model)
1581
+ return { model, source: "model" };
1582
+ const tierModel = resolveModelTier({
1583
+ tier: opts.modelTier,
1584
+ harnessProvider: opts.harnessProvider,
1585
+ env: opts.env
1586
+ });
1587
+ if (tierModel)
1588
+ return { model: tierModel, source: "modelTier" };
1589
+ return { source: "none" };
1590
+ }
1591
+ function isTerminalTaskStatus(status) {
1592
+ return TERMINAL_TASK_STATUSES.includes(status);
1593
+ }
1594
+ var AssetKeySchema, AssetEntityTypeSchema, AssetProviderRefSchema, AssetKeyMappingSchema, AssetSummarySchema, ModelTierSchema, MODEL_TIERS, ReasoningEffortSchema, LEGACY_MODEL_TO_TIER, DEFAULT_MODEL_TIER_MAP, AgentTaskStatusSchema, TERMINAL_TASK_STATUSES, InboxMessageStatusSchema, InboxMessageSchema, AgentTaskSourceSchema, RoutingReasonSchema, RoutingSourceSchema, ProviderNameSchema, SteerModeSchema, SteeringStatusSchema, SteeringSourceSchema, SteeringMessageSchema, SteerOutcomeSchema, OnUnsupportedSchema, SteerResultSchema, PROVIDER_STEER_CAPABILITIES, FollowUpConfigSchema, RoutingAffinitySchema, AgentTaskSchema, CreateTaskOptionsSchema, TaskAttachmentKindSchema, SERVER_GENERATED_ATTACHMENT_CAPABILITY = "_agentSwarmGeneratedBy", attachmentCapabilitiesSchema, attachmentCommonFields, AttachmentInputSchema, TaskAttachmentSchema, UserSchema, UserCommsPrefsSchema, IdentityEventTypeSchema, InboxItemTypeSchema, InboxItemStatusSchema, InboxItemStateSchema, FavoriteItemTypeSchema, UserFavoriteSchema, TaskTemplateKindSchema, TaskTemplateSchema, AgentStatusSchema, AgentAvatarSchema, AgentSchema, AgentCredStatusLiveTestSchema, AgentLatestModelSchema, AgentBedrockStatusSchema, AcpSessionConfigSelectValueSchema, AcpSessionConfigSelectGroupSchema, AcpSessionConfigOptionSchema, AgentAcpStatusSchema, AgentCredStatusSchema, AgentWithTasksSchema, ChangeSourceSchema, VersionableFieldSchema, ContextVersionSchema, ChannelTypeSchema, ChannelSchema, ChannelMessageSchema, ServiceStatusSchema, ServiceSchema, AgentLogEventTypeSchema, ResumeReasonSchema, AgentLogSchema, SessionLogSchema, SessionCostSourceSchema, SessionCostModelBreakdownSchema, SessionCostSchema, EventCategorySchema, EventStatusSchema, EventSourceSchema, EventNameSchema, SwarmEventSchema, AutomationIntegrationIdSchema, ScheduledTaskTargetTypeSchema, ScheduledTaskSchema, SwarmConfigScopeSchema, SwarmConfigSchema, RepoGuidelinesSchema, REPO_GUIDELINES_MAX_ENTRIES = 50, RepoGuidelinesInputSchema, RepoHooksSchema, SwarmRepoSchema, AgentMemoryScopeSchema, AgentMemorySourceSchema, AgentMemorySchema, ActiveSessionSchema, RuntimeInstanceStatusSchema, RuntimeInstanceSchema, RetryPolicySchema, ExecutorMetaSchema, ValidationResultSchema, StepValidationConfigSchema, SwarmScriptNodeConfigSchema, WorkflowNodeSchema, WorkflowEdgeSchema, WorkflowDefinitionSchema, WorkflowNodePatchSchema, WorkflowPatchSchema, WebhookVerificationSchema, TriggerConfigSchema, CooldownConfigSchema, InputValueSchema, WorkflowTemplateSchema, WorkflowSnapshotSchema, WorkflowSchema, WorkflowVersionSchema, PageContentTypeSchema, PageAuthModeSchema, PageSnapshotSchema, PageSchema, PageVersionSchema, MetricParamSchema, MetricVariableTypeSchema, MetricFormatSchema, MetricVisualizationSchema, MetricQuerySchema, MetricVariableSchema, MetricVizConfigSchema, MetricWidgetSchema, MetricDefinitionSchema, MetricSnapshotSchema, MetricSchema, MetricVersionSchema, WorkflowRunStatusSchema, WorkflowRunSchema, ScriptRunStatusSchema, TERMINAL_SCRIPT_RUN_STATUSES, ScriptRunKindSchema, ScriptRunSchema, ScriptRunListItemSchema, ScriptRunJournalEntrySchema, WorkflowRunStepStatusSchema, WorkflowRunStepSchema, WaitModeSchema, WaitStateStatusSchema, WaitStateRowSchema, PromptTemplateScopeSchema, PromptTemplateStateSchema, PromptTemplateSchema, PromptTemplateHistorySchema, ScriptScopeSchema, ScriptFsModeSchema, ScriptRecordSchema, ScriptVersionRecordSchema, ExtensionNameSchema, SemverSchema, ExtensionManifestSchema, ExtensionStatusSchema, ExtensionSchema, ExtensionFileSchema, ExtensionVersionSchema, ExtensionRunSchema, ExtensionInstallBodySchema, ScriptApiAuthModeSchema, ScriptApiRecordSchema, SkillTypeSchema, SkillScopeSchema, SkillSchema, AgentSkillSchema, SkillWithInstallInfoSchema, SkillFileSchema, McpServerTransportSchema, McpServerScopeSchema, McpAuthMethodSchema, McpServerSchema, AgentMcpServerSchema, McpServerWithInstallInfoSchema, ContextSnapshotEventTypeSchema, ContextFormulaSchema, ContextSnapshotSchema, BudgetScopeSchema, BudgetSchema, PricingProviderSchema, PricingTokenClassSchema, PricingRowSchema, BudgetRefusalCauseSchema, BudgetRefusalNotificationSchema, BudgetRefusedTriggerSchema, KvValueTypeSchema, KV_NAME_REGEX, KvNamespaceSchema, KvKeySchema, KvEntrySchema;
1595
+ var init_types = __esm(() => {
1596
+ init_key();
1597
+ init_bundle_path();
1598
+ init_constants();
1599
+ init_zod_openapi();
1600
+ AssetKeySchema = exports_zod.string().min(1).max(255).superRefine((value, ctx) => {
1601
+ try {
1602
+ normalizeAssetKey(value);
1603
+ } catch (error) {
1604
+ ctx.addIssue({
1605
+ code: "custom",
1606
+ message: error instanceof Error ? error.message : "Invalid asset namespace key"
1607
+ });
1608
+ }
1609
+ }).describe("Non-unique asset directory namespace (for example shared/ or personal/<user-id>/drafts/). Runtime write boundaries normalize and validate the canonical form.");
1610
+ AssetEntityTypeSchema = exports_zod.enum([
1611
+ "task",
1612
+ "workflow",
1613
+ "schedule",
1614
+ "page",
1615
+ "app",
1616
+ "script",
1617
+ "file"
1618
+ ]);
1619
+ AssetProviderRefSchema = exports_zod.object({
1620
+ providerId: exports_zod.string(),
1621
+ orgId: exports_zod.string().optional(),
1622
+ driveId: exports_zod.string().optional(),
1623
+ providerKey: exports_zod.string()
1624
+ }).openapi("AssetProviderRef");
1625
+ AssetKeyMappingSchema = exports_zod.object({
1626
+ id: exports_zod.string(),
1627
+ providerId: exports_zod.string(),
1628
+ providerOrgId: exports_zod.string().optional(),
1629
+ providerDriveId: exports_zod.string().optional(),
1630
+ providerKey: exports_zod.string(),
1631
+ key: AssetKeySchema,
1632
+ sourceEntityType: exports_zod.enum(["task-attachment", "external"]).optional(),
1633
+ sourceEntityId: exports_zod.string().optional(),
1634
+ createdAt: exports_zod.iso.datetime(),
1635
+ updatedAt: exports_zod.iso.datetime(),
1636
+ createdBy: exports_zod.string().optional(),
1637
+ updatedBy: exports_zod.string().optional()
1638
+ }).openapi("AssetKeyMapping");
1639
+ AssetSummarySchema = exports_zod.object({
1640
+ entityType: AssetEntityTypeSchema,
1641
+ id: exports_zod.string(),
1642
+ key: AssetKeySchema,
1643
+ label: exports_zod.string(),
1644
+ updatedAt: exports_zod.string(),
1645
+ providerRef: AssetProviderRefSchema.optional()
1646
+ }).openapi("AssetSummary");
1647
+ ModelTierSchema = exports_zod.enum(["smol", "regular", "smart", "ultra"]);
1648
+ MODEL_TIERS = ModelTierSchema.options;
1649
+ ReasoningEffortSchema = exports_zod.enum(["off", "low", "medium", "high", "xhigh", "max"]);
1650
+ LEGACY_MODEL_TO_TIER = {
1651
+ haiku: "smol",
1652
+ sonnet: "regular",
1653
+ opus: "smart",
1654
+ fable: "ultra"
1655
+ };
1656
+ DEFAULT_MODEL_TIER_MAP = {
1657
+ claude: {
1658
+ smol: "haiku",
1659
+ regular: "sonnet",
1660
+ smart: "opus",
1661
+ ultra: "fable"
1662
+ },
1663
+ "claude-managed": {
1664
+ smol: "claude-haiku-4-5",
1665
+ regular: "claude-sonnet-5",
1666
+ smart: "claude-opus-4-8",
1667
+ ultra: "claude-fable-5"
1668
+ },
1669
+ codex: {
1670
+ smol: "gpt-5.6-luna",
1671
+ regular: "gpt-5.6-terra",
1672
+ smart: "gpt-5.6-sol",
1673
+ ultra: "gpt-5.6-sol"
1674
+ },
1675
+ pi: {
1676
+ smol: "openrouter/deepseek/deepseek-v4.1-flash",
1677
+ regular: "openrouter/deepseek/deepseek-v4.1-flash",
1678
+ smart: "openrouter/deepseek/deepseek-v4-pro-0813",
1679
+ ultra: "openrouter/anthropic/claude-opus-5.5"
1680
+ },
1681
+ opencode: {
1682
+ smol: "openrouter/deepseek/deepseek-v4.1-flash",
1683
+ regular: "openrouter/deepseek/deepseek-v4.1-flash",
1684
+ smart: "openrouter/deepseek/deepseek-v4-pro-0813",
1685
+ ultra: "openrouter/anthropic/claude-opus-5.5"
1686
+ },
1687
+ dsh: {
1688
+ smol: "openrouter/deepseek/deepseek-v4.1-flash",
1689
+ regular: "openrouter/deepseek/deepseek-v4.1-flash",
1690
+ smart: "openrouter/deepseek/deepseek-v4-pro-0813",
1691
+ ultra: "openrouter/anthropic/claude-opus-5.5"
1692
+ },
1693
+ devin: {
1694
+ smol: "devin",
1695
+ regular: "devin",
1696
+ smart: "devin",
1697
+ ultra: "devin"
1698
+ },
1699
+ acp: {
1700
+ smol: "",
1701
+ regular: "",
1702
+ smart: "",
1703
+ ultra: ""
1704
+ }
1705
+ };
1706
+ AgentTaskStatusSchema = exports_zod.enum([
1707
+ "draft",
1708
+ "backlog",
1709
+ "unassigned",
1710
+ "offered",
1711
+ "reviewing",
1712
+ "pending",
1713
+ "in_progress",
1714
+ "paused",
1715
+ "completed",
1716
+ "failed",
1717
+ "cancelled",
1718
+ "superseded"
1719
+ ]);
1720
+ TERMINAL_TASK_STATUSES = ["completed", "failed", "cancelled", "superseded"];
1721
+ InboxMessageStatusSchema = exports_zod.enum([
1722
+ "unread",
1723
+ "processing",
1724
+ "read",
1725
+ "responded",
1726
+ "delegated"
1727
+ ]);
1728
+ InboxMessageSchema = exports_zod.object({
1729
+ id: exports_zod.uuid(),
1730
+ agentId: exports_zod.string(),
1731
+ content: exports_zod.string().min(1),
1732
+ source: exports_zod.enum(["slack", "agentmail"]).default("slack"),
1733
+ status: InboxMessageStatusSchema.default("unread"),
1734
+ slackChannelId: exports_zod.string().optional(),
1735
+ slackThreadTs: exports_zod.string().optional(),
1736
+ slackUserId: exports_zod.string().optional(),
1737
+ matchedText: exports_zod.string().optional(),
1738
+ delegatedToTaskId: exports_zod.uuid().optional(),
1739
+ responseText: exports_zod.string().optional(),
1740
+ createdAt: exports_zod.iso.datetime(),
1741
+ lastUpdatedAt: exports_zod.iso.datetime()
1742
+ }).openapi("InboxMessage");
1743
+ AgentTaskSourceSchema = exports_zod.enum([
1744
+ "mcp",
1745
+ "slack",
1746
+ "api",
1747
+ "ui",
1748
+ "github",
1749
+ "gitlab",
1750
+ "agentmail",
1751
+ "system",
1752
+ "schedule",
1753
+ "workflow",
1754
+ "linear",
1755
+ "jira"
1756
+ ]);
1757
+ RoutingReasonSchema = exports_zod.enum([
1758
+ "skill",
1759
+ "continuity",
1760
+ "overflow",
1761
+ "human_pinned",
1762
+ "reroute_fault"
1763
+ ]);
1764
+ RoutingSourceSchema = exports_zod.enum(["declared", "engine_default"]);
1765
+ ProviderNameSchema = exports_zod.enum([
1766
+ "claude",
1767
+ "codex",
1768
+ "pi",
1769
+ "devin",
1770
+ "claude-managed",
1771
+ "opencode",
1772
+ "acp",
1773
+ "dsh"
1774
+ ]);
1775
+ SteerModeSchema = exports_zod.enum(["steer", "queue"]);
1776
+ SteeringStatusSchema = exports_zod.enum([
1777
+ "pending",
1778
+ "delivered",
1779
+ "handled",
1780
+ "promoted",
1781
+ "cancelled"
1782
+ ]);
1783
+ SteeringSourceSchema = exports_zod.enum(["ui", "mcp", "script", "slack", "api"]);
1784
+ SteeringMessageSchema = exports_zod.object({
1785
+ id: exports_zod.uuid(),
1786
+ taskId: exports_zod.uuid(),
1787
+ body: exports_zod.string().min(1),
1788
+ mode: SteerModeSchema,
1789
+ status: SteeringStatusSchema,
1790
+ deliveredMode: SteerModeSchema.optional(),
1791
+ source: SteeringSourceSchema,
1792
+ createdByKind: exports_zod.enum(["user", "agent", "system"]),
1793
+ createdByUserId: exports_zod.string().optional(),
1794
+ createdByAgentId: exports_zod.string().optional(),
1795
+ promotedTaskId: exports_zod.uuid().optional(),
1796
+ createdAt: exports_zod.iso.datetime(),
1797
+ deliveredAt: exports_zod.iso.datetime().optional(),
1798
+ handledAt: exports_zod.iso.datetime().optional(),
1799
+ handledNote: exports_zod.string().optional()
1800
+ }).openapi("SteeringMessage");
1801
+ SteerOutcomeSchema = exports_zod.enum(["steered", "queued", "promoted"]);
1802
+ OnUnsupportedSchema = exports_zod.enum(["degrade", "fail"]).default("degrade");
1803
+ SteerResultSchema = exports_zod.object({
1804
+ outcome: SteerOutcomeSchema,
1805
+ steeringMessageId: exports_zod.uuid().optional(),
1806
+ promotedTaskId: exports_zod.uuid().optional(),
1807
+ effectiveMode: SteerModeSchema,
1808
+ degradedFrom: SteerModeSchema.optional()
1809
+ }).openapi("SteerResult");
1810
+ PROVIDER_STEER_CAPABILITIES = {
1811
+ pi: ["steer", "queue"],
1812
+ "claude-managed": ["steer", "queue"],
1813
+ devin: ["queue"],
1814
+ opencode: ["queue"],
1815
+ claude: ["queue"],
1816
+ codex: ["steer", "queue"],
1817
+ acp: [],
1818
+ dsh: []
1819
+ };
1820
+ FollowUpConfigSchema = exports_zod.object({
1821
+ disabled: exports_zod.boolean().optional(),
1822
+ onCompleted: exports_zod.string().max(4000).optional(),
1823
+ onFailed: exports_zod.string().max(4000).optional()
1824
+ }).openapi("FollowUpConfig");
1825
+ RoutingAffinitySchema = exports_zod.object({
1826
+ sourceAgentId: exports_zod.string().optional(),
1827
+ role: exports_zod.string().max(100).optional(),
1828
+ harnessProvider: ProviderNameSchema.optional(),
1829
+ capabilities: exports_zod.array(exports_zod.string()).default([]),
1830
+ leadOnly: exports_zod.boolean().optional()
1831
+ }).openapi("RoutingAffinity");
1832
+ AgentTaskSchema = exports_zod.object({
1833
+ id: exports_zod.uuid(),
1834
+ key: AssetKeySchema,
1835
+ agentId: exports_zod.string().nullable(),
1836
+ creatorAgentId: exports_zod.string().optional(),
1837
+ task: exports_zod.string().min(1),
1838
+ title: exports_zod.string().optional(),
1839
+ status: AgentTaskStatusSchema,
1840
+ source: AgentTaskSourceSchema.default("mcp"),
1841
+ routingReason: RoutingReasonSchema.optional(),
1842
+ routingSource: RoutingSourceSchema.optional().describe("Origin of the routing reason: declared by the caller or chosen by the engine. Absent for unknown historical provenance or no reason."),
1843
+ routingNote: exports_zod.string().max(200).optional(),
1844
+ taskType: exports_zod.string().max(50).optional(),
1845
+ tags: exports_zod.array(exports_zod.string()).default([]),
1846
+ priority: exports_zod.number().int().min(0).max(100).default(50),
1847
+ dependsOn: exports_zod.array(exports_zod.string()).default([]),
1848
+ offeredTo: exports_zod.string().optional(),
1849
+ offeredAt: exports_zod.iso.datetime().optional(),
1850
+ acceptedAt: exports_zod.iso.datetime().optional(),
1851
+ rejectionReason: exports_zod.string().optional(),
1852
+ createdAt: exports_zod.iso.datetime(),
1853
+ lastUpdatedAt: exports_zod.iso.datetime(),
1854
+ finishedAt: exports_zod.iso.datetime().optional(),
1855
+ notifiedAt: exports_zod.iso.datetime().optional(),
1856
+ failureReason: exports_zod.string().optional(),
1857
+ output: exports_zod.string().optional(),
1858
+ progress: exports_zod.string().optional(),
1859
+ slackChannelId: exports_zod.string().optional(),
1860
+ slackThreadTs: exports_zod.string().optional(),
1861
+ slackTriggerMessageTs: exports_zod.string().optional(),
1862
+ slackUserId: exports_zod.string().optional(),
1863
+ slackReplySent: exports_zod.boolean().default(false),
1864
+ slackProgressMessageTs: exports_zod.string().optional(),
1865
+ slackTreeRootMessageTs: exports_zod.string().optional(),
1866
+ vcsProvider: exports_zod.enum(["github", "gitlab"]).optional(),
1867
+ vcsRepo: exports_zod.string().optional(),
1868
+ vcsEventType: exports_zod.string().optional(),
1869
+ vcsNumber: exports_zod.number().int().optional(),
1870
+ vcsCommentId: exports_zod.number().int().optional(),
1871
+ vcsAuthor: exports_zod.string().optional(),
1872
+ vcsUrl: exports_zod.string().optional(),
1873
+ vcsInstallationId: exports_zod.number().int().optional(),
1874
+ vcsNodeId: exports_zod.string().optional(),
1875
+ agentmailInboxId: exports_zod.string().optional(),
1876
+ agentmailMessageId: exports_zod.string().optional(),
1877
+ agentmailThreadId: exports_zod.string().optional(),
1878
+ mentionMessageId: exports_zod.string().optional(),
1879
+ mentionChannelId: exports_zod.string().optional(),
1880
+ dir: exports_zod.string().min(1).optional(),
1881
+ parentTaskId: exports_zod.string().optional(),
1882
+ claudeSessionId: exports_zod.string().optional(),
1883
+ model: exports_zod.string().optional(),
1884
+ modelTier: ModelTierSchema.optional(),
1885
+ effort: ReasoningEffortSchema.optional(),
1886
+ scheduleId: exports_zod.string().optional(),
1887
+ workflowRunId: exports_zod.string().uuid().nullable().optional(),
1888
+ workflowRunStepId: exports_zod.string().uuid().nullable().optional(),
1889
+ contextKey: exports_zod.string().optional(),
1890
+ outputSchema: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
1891
+ followUpConfig: FollowUpConfigSchema.optional(),
1892
+ wasPaused: exports_zod.boolean().default(false),
1893
+ compactionCount: exports_zod.number().int().min(0).optional(),
1894
+ peakContextPercent: exports_zod.number().min(0).max(100).optional(),
1895
+ peakContextTokens: exports_zod.number().int().min(0).optional(),
1896
+ contextWindowSize: exports_zod.number().int().min(0).optional(),
1897
+ credentialKeySuffix: exports_zod.string().optional(),
1898
+ credentialKeyType: exports_zod.string().optional(),
1899
+ requestedByUserId: exports_zod.string().optional(),
1900
+ swarmVersion: exports_zod.string().optional(),
1901
+ provider: ProviderNameSchema.optional(),
1902
+ providerMeta: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
1903
+ harnessVariant: exports_zod.string().optional(),
1904
+ harnessVariantMeta: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
1905
+ totalCostUsd: exports_zod.number().min(0).optional(),
1906
+ routingAffinity: RoutingAffinitySchema.optional(),
1907
+ routingAffinityInvalid: exports_zod.boolean().optional()
1908
+ }).openapi("AgentTask");
1909
+ CreateTaskOptionsSchema = exports_zod.object({
1910
+ key: exports_zod.string().min(1).optional(),
1911
+ agentId: exports_zod.string().nullable().optional(),
1912
+ creatorAgentId: exports_zod.string().optional(),
1913
+ source: AgentTaskSourceSchema.optional(),
1914
+ routingReason: RoutingReasonSchema.optional(),
1915
+ routingSource: RoutingSourceSchema.optional(),
1916
+ routingNote: exports_zod.string().max(200).optional(),
1917
+ taskType: exports_zod.string().max(50).optional(),
1918
+ tags: exports_zod.array(exports_zod.string()).optional(),
1919
+ priority: exports_zod.number().int().min(0).max(100).optional(),
1920
+ dependsOn: exports_zod.array(exports_zod.string()).optional(),
1921
+ offeredTo: exports_zod.string().optional(),
1922
+ status: exports_zod.enum(["draft", "backlog", "unassigned"]).optional(),
1923
+ slackChannelId: exports_zod.string().optional(),
1924
+ slackThreadTs: exports_zod.string().optional(),
1925
+ slackTriggerMessageTs: exports_zod.string().optional(),
1926
+ slackUserId: exports_zod.string().optional(),
1927
+ overrideSlackContext: exports_zod.boolean().optional(),
1928
+ vcsProvider: exports_zod.enum(["github", "gitlab"]).optional(),
1929
+ vcsRepo: exports_zod.string().optional(),
1930
+ vcsEventType: exports_zod.string().optional(),
1931
+ vcsNumber: exports_zod.number().int().optional(),
1932
+ vcsCommentId: exports_zod.number().int().optional(),
1933
+ vcsAuthor: exports_zod.string().optional(),
1934
+ vcsUrl: exports_zod.string().optional(),
1935
+ vcsInstallationId: exports_zod.number().int().optional(),
1936
+ vcsNodeId: exports_zod.string().optional(),
1937
+ agentmailInboxId: exports_zod.string().optional(),
1938
+ agentmailMessageId: exports_zod.string().optional(),
1939
+ agentmailThreadId: exports_zod.string().optional(),
1940
+ mentionMessageId: exports_zod.string().optional(),
1941
+ mentionChannelId: exports_zod.string().optional(),
1942
+ dir: exports_zod.string().optional(),
1943
+ parentTaskId: exports_zod.string().optional(),
1944
+ model: exports_zod.string().optional(),
1945
+ modelTier: ModelTierSchema.optional(),
1946
+ effort: ReasoningEffortSchema.optional(),
1947
+ scheduleId: exports_zod.string().optional(),
1948
+ workflowRunId: exports_zod.string().optional(),
1949
+ workflowRunStepId: exports_zod.string().optional(),
1950
+ sourceTaskId: exports_zod.string().optional(),
1951
+ outputSchema: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
1952
+ inheritParentOutputSchema: exports_zod.boolean().optional(),
1953
+ inheritParentRoutingAffinity: exports_zod.boolean().optional(),
1954
+ followUpConfig: FollowUpConfigSchema.optional(),
1955
+ requestedByUserId: exports_zod.string().optional(),
1956
+ contextKey: exports_zod.string().optional(),
1957
+ bypassTrackerContextDedup: exports_zod.boolean().optional(),
1958
+ routingAffinity: RoutingAffinitySchema.optional()
1959
+ });
1960
+ TaskAttachmentKindSchema = exports_zod.enum(["agent-fs", "url", "shared-fs", "page"]);
1961
+ attachmentCapabilitiesSchema = exports_zod.record(exports_zod.string(), exports_zod.unknown()).refine((capabilities) => !(SERVER_GENERATED_ATTACHMENT_CAPABILITY in capabilities), {
1962
+ message: `${SERVER_GENERATED_ATTACHMENT_CAPABILITY} is reserved for server-generated attachments`
1963
+ });
1964
+ attachmentCommonFields = {
1965
+ name: exports_zod.string().min(1).describe("Display name for the attachment."),
1966
+ providerId: exports_zod.string().min(1).optional(),
1967
+ providerKey: exports_zod.string().min(1).optional(),
1968
+ capabilities: attachmentCapabilitiesSchema.optional(),
1969
+ mimeType: exports_zod.string().optional(),
1970
+ sizeBytes: exports_zod.number().int().min(0).optional(),
1971
+ sha256: exports_zod.string().optional(),
1972
+ intent: exports_zod.string().optional().describe("WHY this attachment exists — the purpose it serves for this task."),
1973
+ description: exports_zod.string().optional().describe("Optional: what the attachment is."),
1974
+ isPrimary: exports_zod.boolean().optional()
1975
+ };
1976
+ AttachmentInputSchema = exports_zod.discriminatedUnion("kind", [
1977
+ exports_zod.object({
1978
+ kind: exports_zod.literal("agent-fs"),
1979
+ path: exports_zod.string().min(1).describe("agent-fs path the attachment points at."),
1980
+ orgId: exports_zod.string().min(1).optional().describe("agent-fs org id — paired with `driveId` lets the renderer build a public live-host URL."),
1981
+ driveId: exports_zod.string().min(1).optional().describe("agent-fs drive id — paired with `orgId` lets the renderer build a public live-host URL."),
1982
+ ...attachmentCommonFields
1983
+ }),
1984
+ exports_zod.object({
1985
+ kind: exports_zod.literal("url"),
1986
+ url: exports_zod.string().min(1).describe("External URL the attachment points at."),
1987
+ ...attachmentCommonFields
1988
+ }),
1989
+ exports_zod.object({
1990
+ kind: exports_zod.literal("shared-fs"),
1991
+ path: exports_zod.string().min(1).describe("Shared-filesystem path the attachment points at."),
1992
+ ...attachmentCommonFields
1993
+ }),
1994
+ exports_zod.object({
1995
+ kind: exports_zod.literal("page"),
1996
+ pageId: exports_zod.string().min(1).describe("Swarm Page id the attachment points at."),
1997
+ ...attachmentCommonFields
1998
+ })
1999
+ ]);
2000
+ TaskAttachmentSchema = exports_zod.object({
2001
+ id: exports_zod.uuid(),
2002
+ taskId: exports_zod.uuid(),
2003
+ agentId: exports_zod.string().nullable(),
2004
+ name: exports_zod.string(),
2005
+ kind: TaskAttachmentKindSchema,
2006
+ url: exports_zod.string().optional(),
2007
+ path: exports_zod.string().optional(),
2008
+ pageId: exports_zod.string().optional(),
2009
+ providerId: exports_zod.string().optional(),
2010
+ providerKey: exports_zod.string().optional(),
2011
+ capabilities: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2012
+ orgId: exports_zod.string().optional(),
2013
+ driveId: exports_zod.string().optional(),
2014
+ mimeType: exports_zod.string().optional(),
2015
+ sizeBytes: exports_zod.number().int().min(0).optional(),
2016
+ sha256: exports_zod.string().optional(),
2017
+ intent: exports_zod.string().optional(),
2018
+ description: exports_zod.string().optional(),
2019
+ isPrimary: exports_zod.boolean().default(false),
2020
+ createdAt: exports_zod.iso.datetime(),
2021
+ createdBy: exports_zod.string().optional(),
2022
+ updatedBy: exports_zod.string().optional()
2023
+ }).openapi("TaskAttachment");
2024
+ UserSchema = exports_zod.object({
2025
+ id: exports_zod.string(),
2026
+ name: exports_zod.string().min(1),
2027
+ email: exports_zod.string().optional(),
2028
+ role: exports_zod.string().optional(),
2029
+ notes: exports_zod.string().optional(),
2030
+ emailAliases: exports_zod.array(exports_zod.string()).default([]),
2031
+ preferredChannel: exports_zod.string().default("slack"),
2032
+ timezone: exports_zod.string().optional(),
2033
+ metadata: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2034
+ dailyBudgetUsd: exports_zod.number().nullable().optional(),
2035
+ status: exports_zod.enum(["invited", "active", "suspended"]).default("active"),
2036
+ createdAt: exports_zod.iso.datetime(),
2037
+ lastUpdatedAt: exports_zod.iso.datetime()
2038
+ }).openapi("User");
2039
+ UserCommsPrefsSchema = exports_zod.object({
2040
+ tone: exports_zod.string().optional(),
2041
+ language: exports_zod.string().optional(),
2042
+ verbosity: exports_zod.string().optional()
2043
+ }).openapi("UserCommsPrefs");
2044
+ IdentityEventTypeSchema = exports_zod.enum([
2045
+ "auto_merge",
2046
+ "manual_merge",
2047
+ "identity_added",
2048
+ "identity_removed",
2049
+ "email_added",
2050
+ "email_removed",
2051
+ "token_minted",
2052
+ "token_revoked",
2053
+ "budget_changed",
2054
+ "status_changed",
2055
+ "profile_changed"
2056
+ ]);
2057
+ InboxItemTypeSchema = exports_zod.enum([
2058
+ "approval",
2059
+ "credential_missing",
2060
+ "broken_task",
2061
+ "to_read",
2062
+ "to_start_template",
2063
+ "notification"
2064
+ ]);
2065
+ InboxItemStatusSchema = exports_zod.enum(["open", "snoozed", "dismissed", "done"]);
2066
+ InboxItemStateSchema = exports_zod.object({
2067
+ id: exports_zod.string(),
2068
+ userId: exports_zod.string(),
2069
+ itemType: InboxItemTypeSchema,
2070
+ itemId: exports_zod.string(),
2071
+ status: InboxItemStatusSchema,
2072
+ snoozeUntil: exports_zod.string().optional(),
2073
+ dismissedAt: exports_zod.string().optional(),
2074
+ doneAt: exports_zod.string().optional(),
2075
+ readAt: exports_zod.string().optional(),
2076
+ createdAt: exports_zod.string(),
2077
+ lastUpdatedAt: exports_zod.string()
2078
+ }).openapi("InboxItemState");
2079
+ FavoriteItemTypeSchema = exports_zod.enum(["page", "workflow", "schedule"]);
2080
+ UserFavoriteSchema = exports_zod.object({
2081
+ id: exports_zod.string(),
2082
+ userId: exports_zod.string().optional(),
2083
+ itemType: FavoriteItemTypeSchema,
2084
+ itemId: exports_zod.string(),
2085
+ createdAt: exports_zod.string(),
2086
+ lastUpdatedAt: exports_zod.string(),
2087
+ createdBy: exports_zod.string().optional(),
2088
+ updatedBy: exports_zod.string().optional()
2089
+ }).openapi("UserFavorite");
2090
+ TaskTemplateKindSchema = exports_zod.enum(["task", "workflow", "schedule"]);
2091
+ TaskTemplateSchema = exports_zod.object({
2092
+ id: exports_zod.string(),
2093
+ title: exports_zod.string().min(1),
2094
+ description: exports_zod.string(),
2095
+ prompt: exports_zod.string(),
2096
+ kind: TaskTemplateKindSchema.default("task"),
2097
+ payload: exports_zod.record(exports_zod.string(), exports_zod.unknown()).default({}),
2098
+ category: exports_zod.string().optional(),
2099
+ tags: exports_zod.array(exports_zod.string()).default([]),
2100
+ createdAt: exports_zod.string()
2101
+ }).openapi("TaskTemplate");
2102
+ AgentStatusSchema = exports_zod.enum(["idle", "busy", "offline", "waiting_for_credentials"]);
2103
+ AgentAvatarSchema = exports_zod.discriminatedUnion("type", [
2104
+ exports_zod.object({
2105
+ type: exports_zod.literal("lucide"),
2106
+ icon: exports_zod.string().regex(/^[a-z0-9-]+$/).max(64),
2107
+ color: exports_zod.string().regex(/^#[0-9a-fA-F]{6}$/).optional()
2108
+ })
2109
+ ]);
2110
+ AgentSchema = exports_zod.object({
2111
+ id: exports_zod.string(),
2112
+ name: exports_zod.string().min(1),
2113
+ isLead: exports_zod.boolean().default(false),
2114
+ status: AgentStatusSchema,
2115
+ description: exports_zod.string().optional(),
2116
+ role: exports_zod.string().max(100).optional(),
2117
+ capabilities: exports_zod.array(exports_zod.string()).default([]),
2118
+ claudeMd: exports_zod.string().max(MAX_PROFILE_FILE_LENGTH).optional(),
2119
+ soulMd: exports_zod.string().max(MAX_PROFILE_FILE_LENGTH).optional(),
2120
+ identityMd: exports_zod.string().max(MAX_PROFILE_FILE_LENGTH).optional(),
2121
+ setupScript: exports_zod.string().max(MAX_PROFILE_FILE_LENGTH).optional(),
2122
+ toolsMd: exports_zod.string().max(MAX_PROFILE_FILE_LENGTH).optional(),
2123
+ heartbeatMd: exports_zod.string().max(MAX_PROFILE_FILE_LENGTH).optional(),
2124
+ maxTasks: exports_zod.number().int().min(1).max(100).optional(),
2125
+ emptyPollCount: exports_zod.number().int().min(0).optional(),
2126
+ lastActivityAt: exports_zod.iso.datetime().optional(),
2127
+ provider: ProviderNameSchema.optional(),
2128
+ harnessProvider: ProviderNameSchema.nullable().optional(),
2129
+ credentialMissing: exports_zod.array(exports_zod.string()).nullable().optional(),
2130
+ credStatus: exports_zod.lazy(() => AgentCredStatusSchema).nullable().optional(),
2131
+ avatar: exports_zod.lazy(() => AgentAvatarSchema).nullable().optional(),
2132
+ createdAt: exports_zod.iso.datetime(),
2133
+ lastUpdatedAt: exports_zod.iso.datetime()
2134
+ }).openapi("Agent");
2135
+ AgentCredStatusLiveTestSchema = exports_zod.object({
2136
+ ok: exports_zod.boolean(),
2137
+ error: exports_zod.string().nullable().default(null),
2138
+ latency_ms: exports_zod.number(),
2139
+ testedAt: exports_zod.number()
2140
+ }).openapi("AgentCredStatusLiveTest");
2141
+ AgentLatestModelSchema = exports_zod.object({
2142
+ model: exports_zod.string().min(1),
2143
+ source: exports_zod.enum(["task", "agent_config", "adapter_default", "custom"]),
2144
+ taskId: exports_zod.string().nullable().default(null),
2145
+ harnessProvider: ProviderNameSchema.nullable().default(null),
2146
+ reportedAt: exports_zod.number(),
2147
+ reasoningEffort: ReasoningEffortSchema.optional()
2148
+ }).openapi("AgentLatestModel");
2149
+ AgentBedrockStatusSchema = exports_zod.object({
2150
+ region: exports_zod.string(),
2151
+ probedAt: exports_zod.number(),
2152
+ ready: exports_zod.boolean(),
2153
+ models: exports_zod.array(exports_zod.object({ id: exports_zod.string(), name: exports_zod.string() })).default([]),
2154
+ error: exports_zod.string().optional()
2155
+ }).openapi("AgentBedrockStatus");
2156
+ AcpSessionConfigSelectValueSchema = exports_zod.object({
2157
+ value: exports_zod.string(),
2158
+ name: exports_zod.string(),
2159
+ description: exports_zod.string().nullable().optional()
2160
+ });
2161
+ AcpSessionConfigSelectGroupSchema = exports_zod.object({
2162
+ group: exports_zod.string(),
2163
+ name: exports_zod.string(),
2164
+ options: exports_zod.array(AcpSessionConfigSelectValueSchema)
2165
+ });
2166
+ AcpSessionConfigOptionSchema = exports_zod.discriminatedUnion("type", [
2167
+ exports_zod.object({
2168
+ type: exports_zod.literal("select"),
2169
+ id: exports_zod.string(),
2170
+ name: exports_zod.string(),
2171
+ description: exports_zod.string().nullable().optional(),
2172
+ category: exports_zod.string().nullable().optional(),
2173
+ currentValue: exports_zod.string(),
2174
+ options: exports_zod.array(exports_zod.union([AcpSessionConfigSelectValueSchema, AcpSessionConfigSelectGroupSchema]))
2175
+ }),
2176
+ exports_zod.object({
2177
+ type: exports_zod.literal("boolean"),
2178
+ id: exports_zod.string(),
2179
+ name: exports_zod.string(),
2180
+ description: exports_zod.string().nullable().optional(),
2181
+ category: exports_zod.string().nullable().optional(),
2182
+ currentValue: exports_zod.boolean()
2183
+ })
2184
+ ]);
2185
+ AgentAcpStatusSchema = exports_zod.object({
2186
+ target: exports_zod.enum(["opencode", "custom"]),
2187
+ configOptions: exports_zod.array(AcpSessionConfigOptionSchema),
2188
+ reportedAt: exports_zod.number()
2189
+ }).openapi("AgentAcpStatus");
2190
+ AgentCredStatusSchema = exports_zod.object({
2191
+ ready: exports_zod.boolean(),
2192
+ missing: exports_zod.array(exports_zod.string()).default([]),
2193
+ satisfiedBy: exports_zod.enum(["env", "file", "side-effect-pending", "sdk-delegated"]).nullable().default(null),
2194
+ hint: exports_zod.string().nullable().default(null),
2195
+ liveTest: AgentCredStatusLiveTestSchema.nullable().default(null),
2196
+ latestModel: AgentLatestModelSchema.nullable().default(null),
2197
+ reportedAt: exports_zod.number(),
2198
+ reportKind: exports_zod.enum(["boot", "post_task"]).default("boot"),
2199
+ bedrock: AgentBedrockStatusSchema.nullable().default(null),
2200
+ acp: AgentAcpStatusSchema.nullable().default(null)
2201
+ }).openapi("AgentCredStatus");
2202
+ AgentWithTasksSchema = AgentSchema.extend({
2203
+ tasks: exports_zod.array(AgentTaskSchema).default([])
2204
+ });
2205
+ ChangeSourceSchema = exports_zod.enum([
2206
+ "self_edit",
2207
+ "lead_coaching",
2208
+ "api",
2209
+ "system",
2210
+ "session_sync"
2211
+ ]);
2212
+ VersionableFieldSchema = exports_zod.enum([
2213
+ "soulMd",
2214
+ "identityMd",
2215
+ "toolsMd",
2216
+ "claudeMd",
2217
+ "setupScript",
2218
+ "heartbeatMd"
2219
+ ]);
2220
+ ContextVersionSchema = exports_zod.object({
2221
+ id: exports_zod.uuid(),
2222
+ agentId: exports_zod.string(),
2223
+ field: VersionableFieldSchema,
2224
+ content: exports_zod.string(),
2225
+ version: exports_zod.number().int().min(1),
2226
+ changeSource: ChangeSourceSchema,
2227
+ changedByAgentId: exports_zod.string().nullable(),
2228
+ changeReason: exports_zod.string().nullable(),
2229
+ contentHash: exports_zod.string(),
2230
+ previousVersionId: exports_zod.uuid().nullable(),
2231
+ createdAt: exports_zod.iso.datetime()
2232
+ }).openapi("ContextVersion");
2233
+ ChannelTypeSchema = exports_zod.enum(["public", "dm"]);
2234
+ ChannelSchema = exports_zod.object({
2235
+ id: exports_zod.uuid(),
2236
+ name: exports_zod.string().min(1).max(100),
2237
+ description: exports_zod.string().max(500).optional(),
2238
+ type: ChannelTypeSchema.default("public"),
2239
+ createdBy: exports_zod.string().optional(),
2240
+ participants: exports_zod.array(exports_zod.string()).default([]),
2241
+ createdAt: exports_zod.iso.datetime()
2242
+ }).openapi("Channel");
2243
+ ChannelMessageSchema = exports_zod.object({
2244
+ id: exports_zod.uuid(),
2245
+ channelId: exports_zod.uuid(),
2246
+ agentId: exports_zod.string().nullable(),
2247
+ agentName: exports_zod.string().optional(),
2248
+ content: exports_zod.string().min(1).max(4000),
2249
+ replyToId: exports_zod.uuid().optional(),
2250
+ mentions: exports_zod.array(exports_zod.string()).default([]),
2251
+ createdAt: exports_zod.iso.datetime()
2252
+ }).openapi("ChannelMessage");
2253
+ ServiceStatusSchema = exports_zod.enum(["starting", "healthy", "unhealthy", "stopped"]);
2254
+ ServiceSchema = exports_zod.object({
2255
+ id: exports_zod.uuid(),
2256
+ agentId: exports_zod.string(),
2257
+ name: exports_zod.string().min(1).max(50),
2258
+ port: exports_zod.number().int().min(1).max(65535).default(3000),
2259
+ description: exports_zod.string().optional(),
2260
+ url: exports_zod.string().url().optional(),
2261
+ healthCheckPath: exports_zod.string().default("/health"),
2262
+ status: ServiceStatusSchema.default("starting"),
2263
+ script: exports_zod.string().min(1),
2264
+ cwd: exports_zod.string().optional(),
2265
+ interpreter: exports_zod.string().optional(),
2266
+ args: exports_zod.array(exports_zod.string()).optional(),
2267
+ env: exports_zod.record(exports_zod.string(), exports_zod.string()).optional(),
2268
+ metadata: exports_zod.record(exports_zod.string(), exports_zod.unknown()).default({}),
2269
+ createdAt: exports_zod.iso.datetime(),
2270
+ lastUpdatedAt: exports_zod.iso.datetime()
2271
+ }).openapi("Service");
2272
+ AgentLogEventTypeSchema = exports_zod.enum([
2273
+ "agent_joined",
2274
+ "agent_status_change",
2275
+ "agent_left",
2276
+ "task_created",
2277
+ "task_status_change",
2278
+ "task_progress",
2279
+ "task_steering",
2280
+ "task_offered",
2281
+ "task_accepted",
2282
+ "task_rejected",
2283
+ "task_claimed",
2284
+ "task_claim_rejected_affinity",
2285
+ "task_dispatch_rejected_affinity",
2286
+ "task_authorization_rejected",
2287
+ "task_recovery_authorization",
2288
+ "task_released",
2289
+ "channel_message",
2290
+ "service_registered",
2291
+ "service_unregistered",
2292
+ "service_status_change",
2293
+ "budget.upserted",
2294
+ "budget.deleted",
2295
+ "pricing.inserted",
2296
+ "pricing.deleted",
2297
+ "pricing.refresh",
2298
+ "pricing.refresh.failed",
2299
+ "task_superseded",
2300
+ "slack_delivery"
2301
+ ]);
2302
+ ResumeReasonSchema = exports_zod.enum([
2303
+ "graceful_shutdown",
2304
+ "context_limits",
2305
+ "manual_supersede",
2306
+ "crash_recovery"
2307
+ ]);
2308
+ AgentLogSchema = exports_zod.object({
2309
+ id: exports_zod.uuid(),
2310
+ eventType: AgentLogEventTypeSchema,
2311
+ agentId: exports_zod.string().optional(),
2312
+ taskId: exports_zod.string().optional(),
2313
+ oldValue: exports_zod.string().optional(),
2314
+ newValue: exports_zod.string().optional(),
2315
+ metadata: exports_zod.string().optional(),
2316
+ createdAt: exports_zod.iso.datetime()
2317
+ }).openapi("AgentLog");
2318
+ SessionLogSchema = exports_zod.object({
2319
+ id: exports_zod.uuid(),
2320
+ taskId: exports_zod.uuid().optional(),
2321
+ sessionId: exports_zod.string(),
2322
+ iteration: exports_zod.number().int().min(1),
2323
+ cli: exports_zod.string().default("claude"),
2324
+ content: exports_zod.string(),
2325
+ lineNumber: exports_zod.number().int().min(0),
2326
+ createdAt: exports_zod.iso.datetime()
2327
+ }).openapi("SessionLog");
2328
+ SessionCostSourceSchema = exports_zod.enum(["harness", "pricing-table", "unpriced"]);
2329
+ SessionCostModelBreakdownSchema = exports_zod.object({
2330
+ model: exports_zod.string(),
2331
+ inputTokens: exports_zod.number().int().nonnegative(),
2332
+ outputTokens: exports_zod.number().int().nonnegative(),
2333
+ cacheReadTokens: exports_zod.number().int().nonnegative(),
2334
+ cacheWriteTokens: exports_zod.number().int().nonnegative(),
2335
+ webSearchRequests: exports_zod.number().int().nonnegative().nullable().optional(),
2336
+ costUsd: exports_zod.number().nullable().optional(),
2337
+ harnessCostUsd: exports_zod.number().nullable().optional()
2338
+ }).openapi("SessionCostModelBreakdown");
2339
+ SessionCostSchema = exports_zod.object({
2340
+ id: exports_zod.uuid(),
2341
+ sessionId: exports_zod.string(),
2342
+ taskId: exports_zod.uuid().optional(),
2343
+ agentId: exports_zod.string(),
2344
+ totalCostUsd: exports_zod.number().min(0),
2345
+ inputTokens: exports_zod.number().int().min(0).default(0),
2346
+ outputTokens: exports_zod.number().int().min(0).default(0),
2347
+ cacheReadTokens: exports_zod.number().int().min(0).default(0),
2348
+ cacheWriteTokens: exports_zod.number().int().min(0).default(0),
2349
+ reasoningOutputTokens: exports_zod.number().int().min(0).default(0),
2350
+ thinkingTokens: exports_zod.number().int().min(0).default(0),
2351
+ durationMs: exports_zod.number().int().min(0),
2352
+ numTurns: exports_zod.number().int().min(1).nullable(),
2353
+ model: exports_zod.string(),
2354
+ isError: exports_zod.boolean().default(false),
2355
+ costSource: SessionCostSourceSchema.default("harness"),
2356
+ harnessCostUsd: exports_zod.number().nullable().optional(),
2357
+ cacheWrite5mTokens: exports_zod.number().int().nullable().optional(),
2358
+ cacheWrite1hTokens: exports_zod.number().int().nullable().optional(),
2359
+ modelBreakdown: exports_zod.array(SessionCostModelBreakdownSchema).nullable().optional(),
2360
+ createdAt: exports_zod.iso.datetime()
2361
+ }).openapi("SessionCost");
2362
+ EventCategorySchema = exports_zod.enum([
2363
+ "tool",
2364
+ "skill",
2365
+ "session",
2366
+ "api",
2367
+ "task",
2368
+ "workflow",
2369
+ "system"
2370
+ ]);
2371
+ EventStatusSchema = exports_zod.enum(["ok", "error", "timeout", "skipped"]);
2372
+ EventSourceSchema = exports_zod.enum(["worker", "api", "hook", "scheduler", "cli"]);
2373
+ EventNameSchema = exports_zod.enum([
2374
+ "tool.start",
2375
+ "tool.end",
2376
+ "skill.invoke",
2377
+ "skill.complete",
2378
+ "session.start",
2379
+ "session.end",
2380
+ "session.resume",
2381
+ "session.cost",
2382
+ "api.request",
2383
+ "api.error",
2384
+ "task.poll",
2385
+ "task.assign",
2386
+ "task.timeout",
2387
+ "workflow.step.start",
2388
+ "workflow.step.end",
2389
+ "workflow.run.start",
2390
+ "workflow.run.end",
2391
+ "system.boot",
2392
+ "system.migration",
2393
+ "system.error",
2394
+ "system.profile_sync_rejected",
2395
+ "system.profile_sync_reconciled",
2396
+ "system.profile_sync_conflict",
2397
+ "script.global_upsert",
2398
+ "schedule.deleted"
2399
+ ]);
2400
+ SwarmEventSchema = exports_zod.object({
2401
+ id: exports_zod.uuid(),
2402
+ category: EventCategorySchema,
2403
+ event: EventNameSchema,
2404
+ status: EventStatusSchema,
2405
+ source: EventSourceSchema,
2406
+ agentId: exports_zod.string().optional(),
2407
+ taskId: exports_zod.string().optional(),
2408
+ sessionId: exports_zod.string().optional(),
2409
+ parentEventId: exports_zod.string().optional(),
2410
+ numericValue: exports_zod.number().optional(),
2411
+ durationMs: exports_zod.number().int().optional(),
2412
+ data: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2413
+ createdAt: exports_zod.iso.datetime()
2414
+ }).openapi("SwarmEvent");
2415
+ AutomationIntegrationIdSchema = exports_zod.enum([
2416
+ "slack",
2417
+ "github",
2418
+ "linear",
2419
+ "jira",
2420
+ "gsc",
2421
+ "agentmail",
2422
+ "agentfs"
2423
+ ]);
2424
+ ScheduledTaskTargetTypeSchema = exports_zod.enum(["agent-task", "workflow", "script"]);
2425
+ ScheduledTaskSchema = exports_zod.object({
2426
+ id: exports_zod.uuid(),
2427
+ key: AssetKeySchema,
2428
+ name: exports_zod.string().min(1).max(100),
2429
+ description: exports_zod.string().optional(),
2430
+ cronExpression: exports_zod.string().optional(),
2431
+ intervalMs: exports_zod.number().int().positive().optional(),
2432
+ taskTemplate: exports_zod.string().optional(),
2433
+ taskType: exports_zod.string().max(50).optional(),
2434
+ tags: exports_zod.array(exports_zod.string()).default([]),
2435
+ priority: exports_zod.number().int().min(0).max(100).default(50),
2436
+ targetAgentId: exports_zod.string().optional(),
2437
+ enabled: exports_zod.boolean().default(true),
2438
+ lastRunAt: exports_zod.iso.datetime().optional(),
2439
+ nextRunAt: exports_zod.iso.datetime().optional(),
2440
+ createdByAgentId: exports_zod.string().optional(),
2441
+ parentTaskId: exports_zod.string().optional(),
2442
+ timezone: exports_zod.string().default("UTC"),
2443
+ consecutiveErrors: exports_zod.number().int().min(0).default(0),
2444
+ lastErrorAt: exports_zod.iso.datetime().optional(),
2445
+ lastErrorMessage: exports_zod.string().optional(),
2446
+ model: exports_zod.string().optional(),
2447
+ modelTier: ModelTierSchema.optional(),
2448
+ scheduleType: exports_zod.enum(["recurring", "one_time"]).default("recurring"),
2449
+ targetType: ScheduledTaskTargetTypeSchema.default("agent-task"),
2450
+ workflowId: exports_zod.uuid().optional(),
2451
+ scriptName: exports_zod.string().optional(),
2452
+ scriptArgs: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2453
+ params: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2454
+ requiredParams: exports_zod.array(exports_zod.string()).optional(),
2455
+ requires: exports_zod.array(AutomationIntegrationIdSchema).optional(),
2456
+ createdAt: exports_zod.iso.datetime(),
2457
+ lastUpdatedAt: exports_zod.iso.datetime(),
2458
+ createdBy: exports_zod.string().optional(),
2459
+ updatedBy: exports_zod.string().optional(),
2460
+ favorite: exports_zod.boolean().optional()
2461
+ }).refine((data) => {
2462
+ if (data.scheduleType === "one_time")
2463
+ return true;
2464
+ return data.cronExpression || data.intervalMs;
2465
+ }, {
2466
+ message: "Either cronExpression or intervalMs must be provided for recurring schedules"
2467
+ }).refine((data) => {
2468
+ switch (data.targetType) {
2469
+ case "agent-task":
2470
+ return !!data.taskTemplate;
2471
+ case "workflow":
2472
+ return !!data.workflowId;
2473
+ case "script":
2474
+ return !!data.scriptName;
2475
+ default:
2476
+ return true;
2477
+ }
2478
+ }, {
2479
+ message: "Target-type specific field is required (taskTemplate, workflowId, or scriptName)"
2480
+ });
2481
+ SwarmConfigScopeSchema = exports_zod.enum(["global", "agent", "repo"]);
2482
+ SwarmConfigSchema = exports_zod.object({
2483
+ id: exports_zod.string().uuid(),
2484
+ scope: SwarmConfigScopeSchema,
2485
+ scopeId: exports_zod.string().nullable(),
2486
+ key: exports_zod.string().min(1).max(255),
2487
+ value: exports_zod.string(),
2488
+ isSecret: exports_zod.boolean(),
2489
+ envPath: exports_zod.string().nullable(),
2490
+ description: exports_zod.string().nullable(),
2491
+ createdAt: exports_zod.string(),
2492
+ lastUpdatedAt: exports_zod.string(),
2493
+ encrypted: exports_zod.boolean()
2494
+ }).openapi("SwarmConfig");
2495
+ RepoGuidelinesSchema = exports_zod.object({
2496
+ prChecks: exports_zod.array(exports_zod.string()),
2497
+ mergeChecks: exports_zod.array(exports_zod.string()),
2498
+ allowMerge: exports_zod.boolean().optional().default(false),
2499
+ review: exports_zod.array(exports_zod.string())
2500
+ }).openapi("RepoGuidelines");
2501
+ RepoGuidelinesInputSchema = exports_zod.object({
2502
+ prChecks: exports_zod.array(exports_zod.string()).max(REPO_GUIDELINES_MAX_ENTRIES),
2503
+ mergeChecks: exports_zod.array(exports_zod.string()).max(REPO_GUIDELINES_MAX_ENTRIES),
2504
+ allowMerge: exports_zod.boolean().optional().default(false),
2505
+ review: exports_zod.array(exports_zod.string()).max(REPO_GUIDELINES_MAX_ENTRIES)
2506
+ }).openapi("RepoGuidelinesInput");
2507
+ RepoHooksSchema = exports_zod.object({
2508
+ enabled: exports_zod.boolean().default(false)
2509
+ }).openapi("RepoHooks");
2510
+ SwarmRepoSchema = exports_zod.object({
2511
+ id: exports_zod.string().uuid(),
2512
+ url: exports_zod.string().min(1),
2513
+ name: exports_zod.string().min(1).max(100),
2514
+ clonePath: exports_zod.string().min(1),
2515
+ defaultBranch: exports_zod.string().default("main"),
2516
+ autoClone: exports_zod.boolean().default(true),
2517
+ hooks: RepoHooksSchema.optional().default({ enabled: false }),
2518
+ guidelines: RepoGuidelinesSchema.nullable().optional(),
2519
+ createdAt: exports_zod.string(),
2520
+ lastUpdatedAt: exports_zod.string()
2521
+ }).openapi("SwarmRepo");
2522
+ AgentMemoryScopeSchema = exports_zod.enum(["agent", "swarm"]);
2523
+ AgentMemorySourceSchema = exports_zod.enum([
2524
+ "manual",
2525
+ "file_index",
2526
+ "session_summary",
2527
+ "task_completion"
2528
+ ]);
2529
+ AgentMemorySchema = exports_zod.object({
2530
+ id: exports_zod.string().uuid(),
2531
+ agentId: exports_zod.string().nullable(),
2532
+ scope: AgentMemoryScopeSchema,
2533
+ key: exports_zod.string().nullable().optional(),
2534
+ name: exports_zod.string().min(1).max(500),
2535
+ content: exports_zod.string(),
2536
+ summary: exports_zod.string().nullable(),
2537
+ source: AgentMemorySourceSchema,
2538
+ sourceTaskId: exports_zod.string().uuid().nullable(),
2539
+ sourcePath: exports_zod.string().nullable(),
2540
+ chunkIndex: exports_zod.number().int().min(0).default(0),
2541
+ totalChunks: exports_zod.number().int().min(1).default(1),
2542
+ tags: exports_zod.array(exports_zod.string()),
2543
+ createdAt: exports_zod.string(),
2544
+ updatedAt: exports_zod.string().nullable().optional(),
2545
+ accessedAt: exports_zod.string(),
2546
+ expiresAt: exports_zod.string().nullable().optional(),
2547
+ accessCount: exports_zod.number().int().min(0).default(0).optional(),
2548
+ embeddingModel: exports_zod.string().nullable().optional(),
2549
+ contentHash: exports_zod.string().nullable().optional(),
2550
+ version: exports_zod.number().int().min(1).default(1).optional()
2551
+ }).openapi("AgentMemory");
2552
+ ActiveSessionSchema = exports_zod.object({
2553
+ id: exports_zod.uuid(),
2554
+ agentId: exports_zod.string(),
2555
+ taskId: exports_zod.string().nullable(),
2556
+ triggerType: exports_zod.string(),
2557
+ inboxMessageId: exports_zod.string().nullable(),
2558
+ taskDescription: exports_zod.string().nullable(),
2559
+ runnerSessionId: exports_zod.string().nullable(),
2560
+ providerSessionId: exports_zod.string().nullable(),
2561
+ runtimeInstanceId: exports_zod.string().nullable().optional(),
2562
+ startedAt: exports_zod.iso.datetime(),
2563
+ lastHeartbeatAt: exports_zod.iso.datetime()
2564
+ }).openapi("ActiveSession");
2565
+ RuntimeInstanceStatusSchema = exports_zod.enum(["active", "offline"]);
2566
+ RuntimeInstanceSchema = exports_zod.object({
2567
+ id: exports_zod.string(),
2568
+ agentId: exports_zod.string(),
2569
+ status: RuntimeInstanceStatusSchema,
2570
+ reportedSlots: exports_zod.number().int(),
2571
+ credentialReady: exports_zod.boolean().nullable().optional(),
2572
+ metadata: exports_zod.record(exports_zod.string(), exports_zod.unknown()).nullable(),
2573
+ lastSeenAt: exports_zod.iso.datetime(),
2574
+ createdAt: exports_zod.iso.datetime(),
2575
+ updatedAt: exports_zod.iso.datetime()
2576
+ }).openapi("RuntimeInstance");
2577
+ RetryPolicySchema = exports_zod.object({
2578
+ maxRetries: exports_zod.number().int().min(0).default(3),
2579
+ strategy: exports_zod.enum(["exponential", "static", "linear"]).default("exponential"),
2580
+ baseDelayMs: exports_zod.number().int().min(0).default(1000),
2581
+ maxDelayMs: exports_zod.number().int().min(0).default(60000)
2582
+ }).openapi("RetryPolicy");
2583
+ ExecutorMetaSchema = exports_zod.object({
2584
+ runId: exports_zod.string().uuid(),
2585
+ stepId: exports_zod.string().uuid(),
2586
+ nodeId: exports_zod.string(),
2587
+ workflowId: exports_zod.string().uuid(),
2588
+ dryRun: exports_zod.boolean().default(false),
2589
+ requestedByUserId: exports_zod.string().optional(),
2590
+ inputCtx: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional()
2591
+ }).openapi("ExecutorMeta");
2592
+ ValidationResultSchema = exports_zod.object({
2593
+ pass: exports_zod.boolean(),
2594
+ reasoning: exports_zod.string(),
2595
+ confidence: exports_zod.number().min(0).max(1)
2596
+ }).openapi("ValidationResult");
2597
+ StepValidationConfigSchema = exports_zod.object({
2598
+ executor: exports_zod.string().default("validate"),
2599
+ config: exports_zod.record(exports_zod.string(), exports_zod.unknown()),
2600
+ mustPass: exports_zod.boolean().default(false),
2601
+ retry: RetryPolicySchema.optional()
2602
+ }).openapi("StepValidationConfig");
2603
+ SwarmScriptNodeConfigSchema = exports_zod.object({
2604
+ scriptName: exports_zod.string().min(1),
2605
+ scope: exports_zod.enum(["global", "agent"]).optional(),
2606
+ pinHash: exports_zod.string().min(1).optional(),
2607
+ args: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2608
+ fsMode: exports_zod.enum(["none", "workspace-rw"]).optional(),
2609
+ timeoutMs: exports_zod.number().int().min(1000).max(300000).optional()
2610
+ }).openapi("SwarmScriptNodeConfig");
2611
+ WorkflowNodeSchema = exports_zod.object({
2612
+ id: exports_zod.string().describe("Unique node identifier, used in 'next' and 'inputs' mappings"),
2613
+ type: exports_zod.string().describe("Executor type: 'agent-task', 'script', 'swarm-script', 'raw-llm', 'validate', 'property-match'"),
2614
+ label: exports_zod.string().optional().describe("Human-readable label for UI display"),
2615
+ config: exports_zod.record(exports_zod.string(), exports_zod.unknown()).describe("Executor-specific config. For agent-task: { template, outputSchema?, agentId?, routingReason?, routingNote?, tags?, priority?, dir?, vcsRepo?, model? }; configured agentId defaults routingReason to human_pinned. " + "For script: { runtime, script, args?, timeout? }. " + "For swarm-script: { scriptName, scope?, pinHash?, args?, fsMode?, timeoutMs? (1000-300000) }. " + "Agent-task templates and ordinary config values support {{interpolation}} from the node's inputs context, including trigger and declared upstream aliases. " + "SECURITY: executable source for script/swarm-script nodes does not interpolate trigger.* or upstream node outputs; only input/workflow/swarm/run values are allowed in inline script source, and named swarm-script source is not workflow-interpolated. " + "Pass dynamic values through config.args instead (inline script receives them as argv; swarm-script receives its args object). " + "NOTE: config.outputSchema on agent-task nodes validates the AGENT's raw JSON output, " + "while node-level outputSchema validates the EXECUTOR's return value ({taskId, taskOutput})."),
2616
+ next: exports_zod.union([exports_zod.string(), exports_zod.array(exports_zod.string()), exports_zod.record(exports_zod.string(), exports_zod.string())]).optional().describe("Next node(s): string for simple chaining, string[] for fan-out to parallel nodes, or record for port-based routing ({pass: 'a', fail: 'b'})"),
2617
+ validation: StepValidationConfigSchema.optional(),
2618
+ retry: RetryPolicySchema.optional(),
2619
+ inputs: exports_zod.record(exports_zod.string(), exports_zod.string()).optional().describe("REQUIRED for cross-node data access. Maps local names to context paths. " + "Without this, upstream step outputs are NOT available for interpolation; built-in trigger/input/workflow/swarm/run context remains available. " + 'Example: { "cityData": "generate-city" } → use {{cityData.taskOutput.field}} in config templates. ' + 'For trigger data: { "pr": "trigger.pullRequest" }. ' + "This mapping works in agent-task templates and ordinary config, but executable script/swarm-script source excludes trigger and upstream-output aliases. " + "Route those dynamic values through config.args (argv for inline scripts) instead."),
2620
+ inputSchema: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional().describe("JSON Schema to validate resolved inputs before execution"),
2621
+ outputSchema: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional().describe("JSON Schema to validate the executor's output (e.g. {taskId, taskOutput} for agent-task). " + "Different from config.outputSchema which validates the agent's raw output.")
2622
+ }).openapi("WorkflowNode");
2623
+ WorkflowEdgeSchema = exports_zod.object({
2624
+ id: exports_zod.string(),
2625
+ source: exports_zod.string(),
2626
+ sourcePort: exports_zod.string(),
2627
+ target: exports_zod.string()
2628
+ }).openapi("WorkflowEdge");
2629
+ WorkflowDefinitionSchema = exports_zod.object({
2630
+ nodes: exports_zod.array(WorkflowNodeSchema).min(1),
2631
+ onNodeFailure: exports_zod.enum(["fail", "continue"]).default("fail").describe("Behavior when a node's task fails or is cancelled. " + "'fail' (default): mark the entire run as failed. " + "'continue': treat the failed node as completed with error output and proceed — " + "downstream convergence nodes receive '[FAILED: reason]' and can handle partial results.")
2632
+ }).openapi("WorkflowDefinition");
2633
+ WorkflowNodePatchSchema = WorkflowNodeSchema.partial().omit({ id: true });
2634
+ WorkflowPatchSchema = exports_zod.object({
2635
+ update: exports_zod.array(exports_zod.object({
2636
+ nodeId: exports_zod.string().describe("ID of the node to update"),
2637
+ node: WorkflowNodePatchSchema.describe("Partial node data to merge")
2638
+ })).optional().describe("Nodes to update (partial merge)"),
2639
+ delete: exports_zod.array(exports_zod.string()).optional().describe("Node IDs to delete"),
2640
+ create: exports_zod.array(WorkflowNodeSchema).optional().describe("New nodes to add"),
2641
+ onNodeFailure: exports_zod.enum(["fail", "continue"]).optional().describe("Update the definition-level onNodeFailure behavior"),
2642
+ triggerSchema: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional().nullable().describe("Optional JSON-Schema describing the expected trigger payload shape. " + "Pass an object to set/replace; pass null to clear; omit to leave unchanged. " + "Validator subset: type, required, properties, enum, const, items. " + "Other JSON-Schema keywords are silently ignored."),
2643
+ params: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2644
+ requiredParams: exports_zod.array(exports_zod.string()).optional(),
2645
+ requires: exports_zod.array(AutomationIntegrationIdSchema).optional()
2646
+ }).openapi("WorkflowPatch");
2647
+ WebhookVerificationSchema = exports_zod.discriminatedUnion("format", [
2648
+ exports_zod.object({
2649
+ format: exports_zod.literal("hmac-sha256"),
2650
+ header: exports_zod.string().default("X-Hub-Signature-256").describe("Header containing HMAC-SHA256 over the raw request body. Accepts sha256=<hex> or bare hex.")
2651
+ }),
2652
+ exports_zod.object({
2653
+ format: exports_zod.literal("timestamped-hmac-sha256"),
2654
+ header: exports_zod.string().min(1).describe("Header containing comma-separated timestamp/signature pairs such as t=<timestamp>,v1=<hex>."),
2655
+ timestampKey: exports_zod.string().default("t").describe("Timestamp field key in the signature header"),
2656
+ signatureKey: exports_zod.string().default("v1").describe("Signature field key in the signature header; multiple entries are allowed"),
2657
+ toleranceSeconds: exports_zod.number().int().positive().default(300).describe("Maximum allowed clock skew, in seconds, for replay protection")
2658
+ }),
2659
+ exports_zod.object({
2660
+ format: exports_zod.literal("token-equality"),
2661
+ header: exports_zod.string().min(1).describe("Header containing the shared token to compare")
2662
+ })
2663
+ ]);
2664
+ TriggerConfigSchema = exports_zod.discriminatedUnion("type", [
2665
+ exports_zod.object({
2666
+ type: exports_zod.literal("webhook"),
2667
+ hmacSecret: exports_zod.string().optional(),
2668
+ hmacHeader: exports_zod.string().default("X-Hub-Signature-256").describe("Legacy HMAC header for webhook verification. Prefer verification.header for new workflows."),
2669
+ verification: WebhookVerificationSchema.optional().describe("Optional webhook verification format. Omit to keep legacy HMAC-SHA256 behavior with fallback header scanning.")
2670
+ }),
2671
+ exports_zod.object({
2672
+ type: exports_zod.literal("schedule"),
2673
+ scheduleId: exports_zod.string().uuid()
2674
+ }),
2675
+ exports_zod.object({
2676
+ type: exports_zod.literal("event"),
2677
+ eventName: exports_zod.literal("slack.message")
2678
+ })
2679
+ ]).superRefine((trigger, ctx) => {
2680
+ if (trigger.type === "webhook" && trigger.verification && !trigger.hmacSecret) {
2681
+ ctx.addIssue({
2682
+ code: exports_zod.ZodIssueCode.custom,
2683
+ message: "hmacSecret is required when verification is configured",
2684
+ path: ["hmacSecret"]
2685
+ });
2686
+ }
2687
+ });
2688
+ CooldownConfigSchema = exports_zod.object({
2689
+ hours: exports_zod.number().min(0).optional(),
2690
+ minutes: exports_zod.number().min(0).optional(),
2691
+ seconds: exports_zod.number().min(0).optional()
2692
+ }).refine((v) => v.hours !== undefined || v.minutes !== undefined || v.seconds !== undefined, {
2693
+ message: "At least one of hours, minutes, or seconds is required"
2694
+ });
2695
+ InputValueSchema = exports_zod.union([
2696
+ exports_zod.string().regex(/^\$\{.+\}$/),
2697
+ exports_zod.string().regex(/^secret\..+$/),
2698
+ exports_zod.string()
2699
+ ]);
2700
+ WorkflowTemplateSchema = exports_zod.object({
2701
+ id: exports_zod.string().uuid(),
2702
+ name: exports_zod.string(),
2703
+ description: exports_zod.string(),
2704
+ category: exports_zod.string(),
2705
+ variables: exports_zod.array(exports_zod.object({
2706
+ name: exports_zod.string(),
2707
+ description: exports_zod.string(),
2708
+ type: exports_zod.enum(["string", "number", "boolean"]),
2709
+ default: exports_zod.unknown().optional(),
2710
+ required: exports_zod.boolean().default(true)
2711
+ })),
2712
+ definition: WorkflowDefinitionSchema
2713
+ }).openapi("WorkflowTemplate");
2714
+ WorkflowSnapshotSchema = exports_zod.object({
2715
+ name: exports_zod.string(),
2716
+ description: exports_zod.string().optional(),
2717
+ definition: WorkflowDefinitionSchema,
2718
+ triggers: exports_zod.array(TriggerConfigSchema),
2719
+ cooldown: CooldownConfigSchema.optional(),
2720
+ input: exports_zod.record(exports_zod.string(), InputValueSchema).optional(),
2721
+ triggerSchema: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2722
+ params: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2723
+ requiredParams: exports_zod.array(exports_zod.string()).optional(),
2724
+ requires: exports_zod.array(AutomationIntegrationIdSchema).optional(),
2725
+ dir: exports_zod.string().min(1).startsWith("/").optional(),
2726
+ vcsRepo: exports_zod.string().min(1).optional(),
2727
+ enabled: exports_zod.boolean()
2728
+ }).openapi("WorkflowSnapshot");
2729
+ WorkflowSchema = exports_zod.object({
2730
+ id: exports_zod.string().uuid(),
2731
+ key: AssetKeySchema,
2732
+ name: exports_zod.string(),
2733
+ description: exports_zod.string().optional(),
2734
+ enabled: exports_zod.boolean(),
2735
+ definition: WorkflowDefinitionSchema,
2736
+ triggers: exports_zod.array(TriggerConfigSchema).default([]),
2737
+ cooldown: CooldownConfigSchema.optional(),
2738
+ input: exports_zod.record(exports_zod.string(), InputValueSchema).optional(),
2739
+ triggerSchema: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2740
+ params: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2741
+ requiredParams: exports_zod.array(exports_zod.string()).optional(),
2742
+ requires: exports_zod.array(AutomationIntegrationIdSchema).optional(),
2743
+ dir: exports_zod.string().min(1).startsWith("/").optional(),
2744
+ vcsRepo: exports_zod.string().min(1).optional(),
2745
+ createdByAgentId: exports_zod.string().optional(),
2746
+ createdAt: exports_zod.string(),
2747
+ lastUpdatedAt: exports_zod.string(),
2748
+ createdBy: exports_zod.string().optional(),
2749
+ updatedBy: exports_zod.string().optional(),
2750
+ favorite: exports_zod.boolean().optional()
2751
+ }).openapi("Workflow");
2752
+ WorkflowVersionSchema = exports_zod.object({
2753
+ id: exports_zod.string().uuid(),
2754
+ workflowId: exports_zod.string().uuid(),
2755
+ version: exports_zod.number().int().min(1),
2756
+ snapshot: WorkflowSnapshotSchema,
2757
+ changedByAgentId: exports_zod.string().optional(),
2758
+ createdAt: exports_zod.string()
2759
+ }).openapi("WorkflowVersion");
2760
+ PageContentTypeSchema = exports_zod.enum(["text/html", "application/json", "image/svg+xml"]);
2761
+ PageAuthModeSchema = exports_zod.enum(["public", "authed", "password"]);
2762
+ PageSnapshotSchema = exports_zod.object({
2763
+ title: exports_zod.string(),
2764
+ description: exports_zod.string().optional(),
2765
+ contentType: PageContentTypeSchema,
2766
+ authMode: PageAuthModeSchema,
2767
+ passwordHash: exports_zod.string().optional(),
2768
+ body: exports_zod.string(),
2769
+ needsCredentials: exports_zod.array(exports_zod.string()).optional()
2770
+ }).openapi("PageSnapshot");
2771
+ PageSchema = exports_zod.object({
2772
+ id: exports_zod.string(),
2773
+ key: AssetKeySchema,
2774
+ agentId: exports_zod.string(),
2775
+ slug: exports_zod.string(),
2776
+ title: exports_zod.string(),
2777
+ description: exports_zod.string().optional(),
2778
+ contentType: PageContentTypeSchema,
2779
+ authMode: PageAuthModeSchema,
2780
+ passwordHash: exports_zod.string().optional(),
2781
+ body: exports_zod.string(),
2782
+ needsCredentials: exports_zod.array(exports_zod.string()).optional(),
2783
+ viewCount: exports_zod.number().int().min(0).default(0),
2784
+ createdAt: exports_zod.string(),
2785
+ updatedAt: exports_zod.string(),
2786
+ favorite: exports_zod.boolean().optional()
2787
+ }).openapi("Page");
2788
+ PageVersionSchema = exports_zod.object({
2789
+ id: exports_zod.string(),
2790
+ pageId: exports_zod.string(),
2791
+ version: exports_zod.number().int().min(1),
2792
+ snapshot: PageSnapshotSchema,
2793
+ changedByAgentId: exports_zod.string().optional(),
2794
+ createdAt: exports_zod.string()
2795
+ }).openapi("PageVersion");
2796
+ MetricParamSchema = exports_zod.union([exports_zod.string(), exports_zod.number(), exports_zod.boolean(), exports_zod.null()]);
2797
+ MetricVariableTypeSchema = exports_zod.enum(["text", "number", "select"]);
2798
+ MetricFormatSchema = exports_zod.enum(["number", "integer", "currency", "percent", "duration"]);
2799
+ MetricVisualizationSchema = exports_zod.enum([
2800
+ "stat",
2801
+ "table",
2802
+ "bar",
2803
+ "line",
2804
+ "multi-bar",
2805
+ "multi-line"
2806
+ ]);
2807
+ MetricQuerySchema = exports_zod.object({
2808
+ sql: exports_zod.string().min(1).max(1e4),
2809
+ params: exports_zod.array(MetricParamSchema).optional(),
2810
+ maxRows: exports_zod.number().int().min(1).max(500).optional()
2811
+ });
2812
+ MetricVariableSchema = exports_zod.object({
2813
+ key: exports_zod.string().min(1).regex(/^[a-zA-Z][a-zA-Z0-9_]*$/),
2814
+ label: exports_zod.string().min(1).optional(),
2815
+ type: MetricVariableTypeSchema.default("text"),
2816
+ defaultValue: MetricParamSchema.optional(),
2817
+ options: exports_zod.array(exports_zod.object({
2818
+ label: exports_zod.string().min(1),
2819
+ value: MetricParamSchema
2820
+ })).optional(),
2821
+ optionsQuery: exports_zod.object({
2822
+ sql: exports_zod.string().min(1).max(1e4),
2823
+ valueKey: exports_zod.string().min(1),
2824
+ labelKey: exports_zod.string().min(1).optional()
2825
+ }).optional()
2826
+ }).openapi("MetricVariable");
2827
+ MetricVizConfigSchema = exports_zod.object({
2828
+ type: MetricVisualizationSchema,
2829
+ x: exports_zod.string().optional(),
2830
+ y: exports_zod.string().optional(),
2831
+ series: exports_zod.array(exports_zod.string()).optional(),
2832
+ label: exports_zod.string().optional(),
2833
+ value: exports_zod.string().optional(),
2834
+ columns: exports_zod.array(exports_zod.object({
2835
+ key: exports_zod.string(),
2836
+ label: exports_zod.string().optional(),
2837
+ format: MetricFormatSchema.optional()
2838
+ })).optional(),
2839
+ format: MetricFormatSchema.optional()
2840
+ }).openapi("MetricVizConfig");
2841
+ MetricWidgetSchema = exports_zod.object({
2842
+ id: exports_zod.string().min(1),
2843
+ title: exports_zod.string().min(1),
2844
+ description: exports_zod.string().optional(),
2845
+ query: MetricQuerySchema,
2846
+ viz: MetricVizConfigSchema,
2847
+ colSpan: exports_zod.number().int().min(1).max(4).optional(),
2848
+ rowSpan: exports_zod.number().int().min(1).max(4).optional()
2849
+ }).openapi("MetricWidget");
2850
+ MetricDefinitionSchema = exports_zod.object({
2851
+ version: exports_zod.literal(1),
2852
+ widgets: exports_zod.array(MetricWidgetSchema).min(1).max(24),
2853
+ variables: exports_zod.array(MetricVariableSchema).max(12).optional(),
2854
+ layout: exports_zod.object({
2855
+ columns: exports_zod.number().int().min(1).max(4).optional()
2856
+ }).optional(),
2857
+ refreshSeconds: exports_zod.number().int().min(5).max(3600).optional()
2858
+ }).openapi("MetricDefinition");
2859
+ MetricSnapshotSchema = exports_zod.object({
2860
+ title: exports_zod.string(),
2861
+ description: exports_zod.string().optional(),
2862
+ definition: MetricDefinitionSchema
2863
+ }).openapi("MetricSnapshot");
2864
+ MetricSchema = exports_zod.object({
2865
+ id: exports_zod.string(),
2866
+ agentId: exports_zod.string(),
2867
+ slug: exports_zod.string(),
2868
+ title: exports_zod.string(),
2869
+ description: exports_zod.string().optional(),
2870
+ definition: MetricDefinitionSchema,
2871
+ createdAt: exports_zod.string(),
2872
+ updatedAt: exports_zod.string()
2873
+ }).openapi("Metric");
2874
+ MetricVersionSchema = exports_zod.object({
2875
+ id: exports_zod.string(),
2876
+ metricId: exports_zod.string(),
2877
+ version: exports_zod.number().int().min(1),
2878
+ snapshot: MetricSnapshotSchema,
2879
+ changedByAgentId: exports_zod.string().optional(),
2880
+ createdAt: exports_zod.string()
2881
+ }).openapi("MetricVersion");
2882
+ WorkflowRunStatusSchema = exports_zod.enum([
2883
+ "running",
2884
+ "waiting",
2885
+ "completed",
2886
+ "failed",
2887
+ "skipped",
2888
+ "cancelled"
2889
+ ]);
2890
+ WorkflowRunSchema = exports_zod.object({
2891
+ id: exports_zod.string().uuid(),
2892
+ workflowId: exports_zod.string().uuid(),
2893
+ status: WorkflowRunStatusSchema,
2894
+ triggerData: exports_zod.unknown().optional(),
2895
+ context: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional(),
2896
+ error: exports_zod.string().optional(),
2897
+ createdBy: exports_zod.string().optional(),
2898
+ startedAt: exports_zod.string(),
2899
+ lastUpdatedAt: exports_zod.string(),
2900
+ finishedAt: exports_zod.string().optional()
2901
+ }).openapi("WorkflowRun");
2902
+ ScriptRunStatusSchema = exports_zod.enum([
2903
+ "running",
2904
+ "paused",
2905
+ "completed",
2906
+ "failed",
2907
+ "cancelled",
2908
+ "aborted_limit"
2909
+ ]);
2910
+ TERMINAL_SCRIPT_RUN_STATUSES = [
2911
+ "completed",
2912
+ "failed",
2913
+ "cancelled",
2914
+ "aborted_limit"
2915
+ ];
2916
+ ScriptRunKindSchema = exports_zod.enum(["workflow", "inline"]);
2917
+ ScriptRunSchema = exports_zod.object({
2918
+ id: exports_zod.string().uuid(),
2919
+ agentId: exports_zod.string(),
2920
+ scriptName: exports_zod.string().optional(),
2921
+ source: exports_zod.string(),
2922
+ args: exports_zod.unknown(),
2923
+ kind: ScriptRunKindSchema,
2924
+ status: ScriptRunStatusSchema,
2925
+ pid: exports_zod.number().int().optional(),
2926
+ startedAt: exports_zod.string(),
2927
+ finishedAt: exports_zod.string().optional(),
2928
+ output: exports_zod.unknown().optional(),
2929
+ error: exports_zod.string().optional(),
2930
+ lastHeartbeatAt: exports_zod.string().optional(),
2931
+ idempotencyKey: exports_zod.string().optional(),
2932
+ requestedByUserId: exports_zod.string().optional()
2933
+ }).openapi("ScriptRun");
2934
+ ScriptRunListItemSchema = ScriptRunSchema.omit({
2935
+ source: true,
2936
+ args: true,
2937
+ output: true
2938
+ });
2939
+ ScriptRunJournalEntrySchema = exports_zod.object({
2940
+ id: exports_zod.string().uuid(),
2941
+ runId: exports_zod.string().uuid(),
2942
+ stepKey: exports_zod.string(),
2943
+ stepType: exports_zod.string(),
2944
+ config: exports_zod.record(exports_zod.string(), exports_zod.unknown()),
2945
+ status: exports_zod.enum(["completed", "failed"]),
2946
+ result: exports_zod.unknown().optional(),
2947
+ error: exports_zod.string().optional(),
2948
+ startedAt: exports_zod.string(),
2949
+ completedAt: exports_zod.string().optional(),
2950
+ durationMs: exports_zod.number().optional()
2951
+ }).openapi("ScriptRunJournalEntry");
2952
+ WorkflowRunStepStatusSchema = exports_zod.enum([
2953
+ "pending",
2954
+ "running",
2955
+ "waiting",
2956
+ "completed",
2957
+ "failed",
2958
+ "skipped",
2959
+ "cancelled"
2960
+ ]);
2961
+ WorkflowRunStepSchema = exports_zod.object({
2962
+ id: exports_zod.string().uuid(),
2963
+ runId: exports_zod.string().uuid(),
2964
+ nodeId: exports_zod.string(),
2965
+ nodeType: exports_zod.string(),
2966
+ status: WorkflowRunStepStatusSchema,
2967
+ input: exports_zod.unknown().optional(),
2968
+ output: exports_zod.unknown().optional(),
2969
+ error: exports_zod.string().optional(),
2970
+ startedAt: exports_zod.string(),
2971
+ finishedAt: exports_zod.string().optional(),
2972
+ retryCount: exports_zod.number().int().min(0).default(0),
2973
+ maxRetries: exports_zod.number().int().min(0).default(3),
2974
+ nextRetryAt: exports_zod.string().optional(),
2975
+ idempotencyKey: exports_zod.string().optional(),
2976
+ diagnostics: exports_zod.string().optional(),
2977
+ nextPort: exports_zod.string().optional()
2978
+ }).openapi("WorkflowRunStep");
2979
+ WaitModeSchema = exports_zod.enum(["time", "event"]);
2980
+ WaitStateStatusSchema = exports_zod.enum(["pending", "fired", "timeout"]);
2981
+ WaitStateRowSchema = exports_zod.object({
2982
+ id: exports_zod.string(),
2983
+ workflowRunId: exports_zod.string(),
2984
+ workflowRunStepId: exports_zod.string(),
2985
+ mode: WaitModeSchema,
2986
+ wakeUpAt: exports_zod.string().nullable(),
2987
+ eventName: exports_zod.string().nullable(),
2988
+ eventFilter: exports_zod.union([exports_zod.record(exports_zod.string(), exports_zod.unknown()), exports_zod.string()]).nullable(),
2989
+ expiresAt: exports_zod.string().nullable(),
2990
+ status: WaitStateStatusSchema,
2991
+ firedPayload: exports_zod.unknown().nullable(),
2992
+ resolvedAt: exports_zod.string().nullable(),
2993
+ createdAt: exports_zod.string(),
2994
+ updatedAt: exports_zod.string(),
2995
+ eventScope: exports_zod.enum(["run", "global"])
2996
+ }).openapi("WaitStateRow");
2997
+ PromptTemplateScopeSchema = exports_zod.enum(["global", "agent", "repo"]);
2998
+ PromptTemplateStateSchema = exports_zod.enum([
2999
+ "enabled",
3000
+ "default_prompt_fallback",
3001
+ "skip_event"
3002
+ ]);
3003
+ PromptTemplateSchema = exports_zod.object({
3004
+ id: exports_zod.string(),
3005
+ eventType: exports_zod.string(),
3006
+ scope: PromptTemplateScopeSchema,
3007
+ scopeId: exports_zod.string().nullable(),
3008
+ state: PromptTemplateStateSchema,
3009
+ body: exports_zod.string(),
3010
+ isDefault: exports_zod.boolean(),
3011
+ version: exports_zod.number(),
3012
+ createdBy: exports_zod.string().nullable(),
3013
+ createdAt: exports_zod.string(),
3014
+ updatedAt: exports_zod.string()
3015
+ }).openapi("PromptTemplate");
3016
+ PromptTemplateHistorySchema = exports_zod.object({
3017
+ id: exports_zod.string(),
3018
+ templateId: exports_zod.string(),
3019
+ version: exports_zod.number(),
3020
+ body: exports_zod.string(),
3021
+ state: exports_zod.string(),
3022
+ changedBy: exports_zod.string().nullable(),
3023
+ changedAt: exports_zod.string(),
3024
+ changeReason: exports_zod.string().nullable()
3025
+ }).openapi("PromptTemplateHistory");
3026
+ ScriptScopeSchema = exports_zod.enum(["global", "agent"]);
3027
+ ScriptFsModeSchema = exports_zod.enum(["none", "workspace-rw"]);
3028
+ ScriptRecordSchema = exports_zod.object({
3029
+ id: exports_zod.string(),
3030
+ name: exports_zod.string(),
3031
+ scope: ScriptScopeSchema,
3032
+ scopeId: exports_zod.string().nullable(),
3033
+ source: exports_zod.string(),
3034
+ description: exports_zod.string(),
3035
+ intent: exports_zod.string(),
3036
+ signatureJson: exports_zod.string(),
3037
+ argsJsonSchema: exports_zod.string().nullable(),
3038
+ contentHash: exports_zod.string(),
3039
+ version: exports_zod.number(),
3040
+ isScratch: exports_zod.boolean(),
3041
+ typeChecked: exports_zod.boolean(),
3042
+ fsMode: ScriptFsModeSchema,
3043
+ createdByAgentId: exports_zod.string().nullable(),
3044
+ createdAt: exports_zod.string(),
3045
+ updatedAt: exports_zod.string()
3046
+ }).openapi("ScriptRecord");
3047
+ ScriptVersionRecordSchema = exports_zod.object({
3048
+ id: exports_zod.string(),
3049
+ scriptId: exports_zod.string(),
3050
+ version: exports_zod.number(),
3051
+ source: exports_zod.string(),
3052
+ description: exports_zod.string(),
3053
+ intent: exports_zod.string(),
3054
+ signatureJson: exports_zod.string(),
3055
+ contentHash: exports_zod.string(),
3056
+ changedByAgentId: exports_zod.string().nullable(),
3057
+ changedAt: exports_zod.string(),
3058
+ changeReason: exports_zod.string().nullable()
3059
+ }).openapi("ScriptVersionRecord");
3060
+ ExtensionNameSchema = exports_zod.string().min(1).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, "must be a lowercase slug");
3061
+ SemverSchema = exports_zod.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/, "must be a semantic version");
3062
+ ExtensionManifestSchema = exports_zod.object({
3063
+ name: ExtensionNameSchema,
3064
+ description: exports_zod.string(),
3065
+ version: SemverSchema,
3066
+ runtime: exports_zod.enum(["api", "worker"]),
3067
+ assets: exports_zod.object({
3068
+ hooks: exports_zod.string().min(1).refine(isSafeBundlePath, "Must be a relative POSIX file path without empty, dot, or parent segments, at most 256 characters"),
3069
+ skills: exports_zod.array(exports_zod.string()).optional(),
3070
+ workflows: exports_zod.array(exports_zod.string()).optional(),
3071
+ schedules: exports_zod.array(exports_zod.string()).optional()
3072
+ }).strict(),
3073
+ homepage: exports_zod.string().url().optional(),
3074
+ author: exports_zod.string().min(1).optional()
3075
+ }).strict().openapi("ExtensionManifest");
3076
+ ExtensionStatusSchema = exports_zod.enum(["disabled", "enabled", "error", "auto-disabled"]);
3077
+ ExtensionSchema = exports_zod.object({
3078
+ id: exports_zod.string(),
3079
+ name: ExtensionNameSchema,
3080
+ description: exports_zod.string(),
3081
+ runtime: exports_zod.enum(["api", "worker"]),
3082
+ manifestJson: exports_zod.string(),
3083
+ contentHash: exports_zod.string(),
3084
+ version: exports_zod.number().int().min(1),
3085
+ activeVersion: exports_zod.number().int().min(1),
3086
+ enabled: exports_zod.boolean(),
3087
+ priority: exports_zod.number().int(),
3088
+ configJson: exports_zod.string(),
3089
+ status: ExtensionStatusSchema,
3090
+ consecutiveFailures: exports_zod.number().int().min(0),
3091
+ lastError: exports_zod.string().nullable(),
3092
+ agentId: exports_zod.string().nullable(),
3093
+ createdByAgentId: exports_zod.string().nullable(),
3094
+ createdAt: exports_zod.string(),
3095
+ updatedAt: exports_zod.string()
3096
+ }).openapi("Extension");
3097
+ ExtensionFileSchema = exports_zod.object({
3098
+ id: exports_zod.string(),
3099
+ extensionId: exports_zod.string(),
3100
+ path: exports_zod.string(),
3101
+ content: exports_zod.string(),
3102
+ contentHash: exports_zod.string()
3103
+ }).openapi("ExtensionFile");
3104
+ ExtensionVersionSchema = exports_zod.object({
3105
+ id: exports_zod.string(),
3106
+ extensionId: exports_zod.string(),
3107
+ version: exports_zod.number().int().min(1),
3108
+ manifestJson: exports_zod.string(),
3109
+ filesJson: exports_zod.string(),
3110
+ contentHash: exports_zod.string(),
3111
+ changedByAgentId: exports_zod.string().nullable(),
3112
+ changedAt: exports_zod.string(),
3113
+ changeReason: exports_zod.string().nullable()
3114
+ }).openapi("ExtensionVersion");
3115
+ ExtensionRunSchema = exports_zod.object({
3116
+ id: exports_zod.string(),
3117
+ extensionId: exports_zod.string(),
3118
+ version: exports_zod.number().int().min(1),
3119
+ event: exports_zod.string(),
3120
+ action: exports_zod.enum(["continue", "modify", "block", "error", "timeout", "load-error"]),
3121
+ durationMs: exports_zod.number().int().nullable(),
3122
+ message: exports_zod.string().nullable(),
3123
+ agentId: exports_zod.string().nullable(),
3124
+ subject: exports_zod.string().nullable(),
3125
+ createdAt: exports_zod.string()
3126
+ }).openapi("ExtensionRun");
3127
+ ExtensionInstallBodySchema = exports_zod.object({
3128
+ manifest: ExtensionManifestSchema,
3129
+ files: exports_zod.record(exports_zod.string(), exports_zod.string()),
3130
+ priority: exports_zod.number().int().optional(),
3131
+ config: exports_zod.record(exports_zod.string(), exports_zod.unknown()).optional()
3132
+ }).strict().openapi("ExtensionInstallBody");
3133
+ ScriptApiAuthModeSchema = exports_zod.enum(["none", "bearer"]);
3134
+ ScriptApiRecordSchema = exports_zod.object({
3135
+ id: exports_zod.string(),
3136
+ scriptId: exports_zod.string(),
3137
+ agentId: exports_zod.string(),
3138
+ authMode: ScriptApiAuthModeSchema,
3139
+ enabled: exports_zod.boolean(),
3140
+ label: exports_zod.string().nullable(),
3141
+ callCount: exports_zod.number(),
3142
+ lastUsedAt: exports_zod.string().nullable(),
3143
+ createdAt: exports_zod.string()
3144
+ }).openapi("ScriptApiRecord");
3145
+ SkillTypeSchema = exports_zod.enum(["remote", "personal"]);
3146
+ SkillScopeSchema = exports_zod.enum(["global", "swarm", "agent"]);
3147
+ SkillSchema = exports_zod.object({
3148
+ id: exports_zod.string(),
3149
+ name: exports_zod.string(),
3150
+ description: exports_zod.string(),
3151
+ content: exports_zod.string(),
3152
+ type: SkillTypeSchema,
3153
+ scope: SkillScopeSchema,
3154
+ ownerAgentId: exports_zod.string().nullable(),
3155
+ sourceUrl: exports_zod.string().nullable(),
3156
+ sourceRepo: exports_zod.string().nullable(),
3157
+ sourcePath: exports_zod.string().nullable(),
3158
+ sourceBranch: exports_zod.string(),
3159
+ sourceHash: exports_zod.string().nullable(),
3160
+ isComplex: exports_zod.boolean(),
3161
+ allowedTools: exports_zod.string().nullable(),
3162
+ model: exports_zod.string().nullable(),
3163
+ effort: exports_zod.string().nullable(),
3164
+ context: exports_zod.string().nullable(),
3165
+ agent: exports_zod.string().nullable(),
3166
+ disableModelInvocation: exports_zod.boolean(),
3167
+ userInvocable: exports_zod.boolean(),
3168
+ version: exports_zod.number(),
3169
+ isEnabled: exports_zod.boolean(),
3170
+ systemDefault: exports_zod.boolean(),
3171
+ createdAt: exports_zod.string(),
3172
+ lastUpdatedAt: exports_zod.string(),
3173
+ lastFetchedAt: exports_zod.string().nullable()
3174
+ }).openapi("Skill");
3175
+ AgentSkillSchema = exports_zod.object({
3176
+ id: exports_zod.string(),
3177
+ agentId: exports_zod.string(),
3178
+ skillId: exports_zod.string(),
3179
+ isActive: exports_zod.boolean(),
3180
+ installedAt: exports_zod.string()
3181
+ }).openapi("AgentSkill");
3182
+ SkillWithInstallInfoSchema = SkillSchema.extend({
3183
+ isActive: exports_zod.boolean(),
3184
+ installedAt: exports_zod.string()
3185
+ });
3186
+ SkillFileSchema = exports_zod.object({
3187
+ id: exports_zod.string(),
3188
+ skillId: exports_zod.string(),
3189
+ path: exports_zod.string(),
3190
+ content: exports_zod.string(),
3191
+ mimeType: exports_zod.string(),
3192
+ isBinary: exports_zod.boolean(),
3193
+ size: exports_zod.number().nullable(),
3194
+ createdAt: exports_zod.string(),
3195
+ lastUpdatedAt: exports_zod.string()
3196
+ }).openapi("SkillFile");
3197
+ McpServerTransportSchema = exports_zod.enum(["stdio", "http", "sse"]);
3198
+ McpServerScopeSchema = exports_zod.enum(["global", "swarm", "agent"]);
3199
+ McpAuthMethodSchema = exports_zod.enum(["static", "oauth", "auto"]);
3200
+ McpServerSchema = exports_zod.object({
3201
+ id: exports_zod.string(),
3202
+ name: exports_zod.string(),
3203
+ description: exports_zod.string().nullable(),
3204
+ scope: McpServerScopeSchema,
3205
+ ownerAgentId: exports_zod.string().nullable(),
3206
+ transport: McpServerTransportSchema,
3207
+ command: exports_zod.string().nullable(),
3208
+ args: exports_zod.string().nullable(),
3209
+ url: exports_zod.string().nullable(),
3210
+ headers: exports_zod.string().nullable(),
3211
+ envConfigKeys: exports_zod.string().nullable(),
3212
+ headerConfigKeys: exports_zod.string().nullable(),
3213
+ extraAuthorizeParams: exports_zod.string().nullable(),
3214
+ authMethod: McpAuthMethodSchema.default("static"),
3215
+ isEnabled: exports_zod.boolean(),
3216
+ version: exports_zod.number(),
3217
+ createdAt: exports_zod.string(),
3218
+ lastUpdatedAt: exports_zod.string()
3219
+ }).openapi("McpServer");
3220
+ AgentMcpServerSchema = exports_zod.object({
3221
+ id: exports_zod.string(),
3222
+ agentId: exports_zod.string(),
3223
+ mcpServerId: exports_zod.string(),
3224
+ isActive: exports_zod.boolean(),
3225
+ installedAt: exports_zod.string()
3226
+ }).openapi("AgentMcpServer");
3227
+ McpServerWithInstallInfoSchema = McpServerSchema.extend({
3228
+ isActive: exports_zod.boolean(),
3229
+ installedAt: exports_zod.string()
3230
+ });
3231
+ ContextSnapshotEventTypeSchema = exports_zod.enum(["progress", "compaction", "completion"]);
3232
+ ContextFormulaSchema = exports_zod.enum([
3233
+ "input-cache-output",
3234
+ "input-cache-no-output",
3235
+ "input-output-no-cache",
3236
+ "peak-proxy",
3237
+ "pi-delegated",
3238
+ "harness-reported",
3239
+ "unknown"
3240
+ ]);
3241
+ ContextSnapshotSchema = exports_zod.object({
3242
+ id: exports_zod.uuid(),
3243
+ taskId: exports_zod.uuid(),
3244
+ agentId: exports_zod.string(),
3245
+ sessionId: exports_zod.string(),
3246
+ contextUsedTokens: exports_zod.number().int().min(0).optional(),
3247
+ contextTotalTokens: exports_zod.number().int().min(0).optional(),
3248
+ contextPercent: exports_zod.number().min(0).max(100).optional(),
3249
+ eventType: ContextSnapshotEventTypeSchema,
3250
+ compactTrigger: exports_zod.enum(["auto", "manual", "auto-inferred"]).optional(),
3251
+ preCompactTokens: exports_zod.number().int().min(0).optional(),
3252
+ cumulativeInputTokens: exports_zod.number().int().min(0).default(0),
3253
+ cumulativeOutputTokens: exports_zod.number().int().min(0).default(0),
3254
+ contextFormula: ContextFormulaSchema.optional(),
3255
+ createdAt: exports_zod.iso.datetime()
3256
+ }).openapi("ContextSnapshot");
3257
+ BudgetScopeSchema = exports_zod.enum(["global", "agent", "user"]);
3258
+ BudgetSchema = exports_zod.object({
3259
+ scope: BudgetScopeSchema,
3260
+ scopeId: exports_zod.string(),
3261
+ dailyBudgetUsd: exports_zod.number().nonnegative(),
3262
+ createdAt: exports_zod.number(),
3263
+ lastUpdatedAt: exports_zod.number()
3264
+ }).openapi("Budget");
3265
+ PricingProviderSchema = exports_zod.enum([
3266
+ "claude",
3267
+ "claude-managed",
3268
+ "codex",
3269
+ "pi",
3270
+ "opencode",
3271
+ "devin",
3272
+ "gemini",
3273
+ "acp"
3274
+ ]);
3275
+ PricingTokenClassSchema = exports_zod.enum([
3276
+ "input",
3277
+ "cached_input",
3278
+ "output",
3279
+ "cache_write",
3280
+ "cache_write_1h",
3281
+ "web_search",
3282
+ "runtime_hour",
3283
+ "acu"
3284
+ ]);
3285
+ PricingRowSchema = exports_zod.object({
3286
+ provider: PricingProviderSchema,
3287
+ model: exports_zod.string(),
3288
+ tokenClass: PricingTokenClassSchema,
3289
+ effectiveFrom: exports_zod.number().nonnegative(),
3290
+ pricePerMillionUsd: exports_zod.number().nonnegative(),
3291
+ createdAt: exports_zod.number(),
3292
+ lastUpdatedAt: exports_zod.number()
3293
+ }).openapi("PricingRow");
3294
+ BudgetRefusalCauseSchema = exports_zod.enum(["agent", "global", "user"]);
3295
+ BudgetRefusalNotificationSchema = exports_zod.object({
3296
+ taskId: exports_zod.string(),
3297
+ date: exports_zod.string(),
3298
+ agentId: exports_zod.string(),
3299
+ cause: BudgetRefusalCauseSchema,
3300
+ agentSpendUsd: exports_zod.number().nullable().optional(),
3301
+ agentBudgetUsd: exports_zod.number().nullable().optional(),
3302
+ globalSpendUsd: exports_zod.number().nullable().optional(),
3303
+ globalBudgetUsd: exports_zod.number().nullable().optional(),
3304
+ userSpendUsd: exports_zod.number().nullable().optional(),
3305
+ userBudgetUsd: exports_zod.number().nullable().optional(),
3306
+ followUpTaskId: exports_zod.string().nullable().optional(),
3307
+ createdAt: exports_zod.number()
3308
+ }).openapi("BudgetRefusalNotification");
3309
+ BudgetRefusedTriggerSchema = exports_zod.object({
3310
+ type: exports_zod.literal("budget_refused"),
3311
+ cause: BudgetRefusalCauseSchema,
3312
+ agentSpend: exports_zod.number().optional(),
3313
+ agentBudget: exports_zod.number().optional(),
3314
+ globalSpend: exports_zod.number().optional(),
3315
+ globalBudget: exports_zod.number().optional(),
3316
+ userSpend: exports_zod.number().optional(),
3317
+ userBudget: exports_zod.number().optional(),
3318
+ resetAt: exports_zod.string()
3319
+ }).openapi("BudgetRefusedTrigger");
3320
+ KvValueTypeSchema = exports_zod.enum(["json", "string", "integer"]);
3321
+ KV_NAME_REGEX = /^[a-zA-Z0-9._:/%-]{1,512}$/;
3322
+ KvNamespaceSchema = exports_zod.string().min(1).max(512).regex(KV_NAME_REGEX, "namespace must match [a-zA-Z0-9._:/%-]{1,512}");
3323
+ KvKeySchema = exports_zod.string().min(1).max(512).regex(KV_NAME_REGEX, "key must match [a-zA-Z0-9._:/%-]{1,512}");
3324
+ KvEntrySchema = exports_zod.object({
3325
+ namespace: exports_zod.string(),
3326
+ key: exports_zod.string(),
3327
+ value: exports_zod.unknown(),
3328
+ valueType: KvValueTypeSchema,
3329
+ expiresAt: exports_zod.number().int().nullable(),
3330
+ createdAt: exports_zod.number().int(),
3331
+ updatedAt: exports_zod.number().int()
3332
+ }).openapi("KvEntry");
3333
+ });
3334
+
3335
+ export { normalizeAssetKey, defaultAssetKey, parseAssetKey, isCanonicalAssetKey, canWriteAssetKey, init_key, isSafeBundlePath, init_bundle_path, $OpenAPIRegistry, $OpenApiGeneratorV31, init_dist, init_zod_openapi, AssetKeySchema, AssetEntityTypeSchema, AssetKeyMappingSchema, AssetSummarySchema, ModelTierSchema, ReasoningEffortSchema, DEFAULT_MODEL_TIER_MAP, parseModelTier, splitLegacyModelAlias, resolveTaskModelSelection, AgentTaskStatusSchema, isTerminalTaskStatus, AgentTaskSourceSchema, RoutingReasonSchema, ProviderNameSchema, SteerModeSchema, SteeringSourceSchema, SteeringMessageSchema, SteerOutcomeSchema, OnUnsupportedSchema, SteerResultSchema, PROVIDER_STEER_CAPABILITIES, FollowUpConfigSchema, RoutingAffinitySchema, AgentTaskSchema, CreateTaskOptionsSchema, SERVER_GENERATED_ATTACHMENT_CAPABILITY, AttachmentInputSchema, TaskAttachmentSchema, UserSchema, UserCommsPrefsSchema, InboxItemTypeSchema, InboxItemStatusSchema, InboxItemStateSchema, FavoriteItemTypeSchema, UserFavoriteSchema, TaskTemplateKindSchema, TaskTemplateSchema, AgentStatusSchema, AgentAvatarSchema, AgentSchema, AgentLatestModelSchema, AgentAcpStatusSchema, AgentCredStatusSchema, AgentWithTasksSchema, VersionableFieldSchema, ChannelTypeSchema, ServiceStatusSchema, ServiceSchema, ResumeReasonSchema, AgentLogSchema, SessionLogSchema, SessionCostModelBreakdownSchema, SessionCostSchema, EventCategorySchema, EventStatusSchema, EventSourceSchema, EventNameSchema, SwarmEventSchema, AutomationIntegrationIdSchema, ScheduledTaskTargetTypeSchema, ScheduledTaskSchema, SwarmConfigScopeSchema, SwarmConfigSchema, RepoGuidelinesInputSchema, RepoHooksSchema, SwarmRepoSchema, AgentMemoryScopeSchema, AgentMemorySourceSchema, AgentMemorySchema, ActiveSessionSchema, RuntimeInstanceSchema, WorkflowEdgeSchema, WorkflowDefinitionSchema, WorkflowNodePatchSchema, WorkflowPatchSchema, TriggerConfigSchema, CooldownConfigSchema, InputValueSchema, WorkflowSchema, WorkflowVersionSchema, PageContentTypeSchema, PageAuthModeSchema, PageSchema, PageVersionSchema, MetricWidgetSchema, MetricDefinitionSchema, MetricSchema, MetricVersionSchema, WorkflowRunStatusSchema, WorkflowRunSchema, ScriptRunStatusSchema, TERMINAL_SCRIPT_RUN_STATUSES, ScriptRunSchema, ScriptRunListItemSchema, ScriptRunJournalEntrySchema, WorkflowRunStepSchema, PromptTemplateScopeSchema, PromptTemplateStateSchema, PromptTemplateSchema, PromptTemplateHistorySchema, ScriptScopeSchema, ScriptFsModeSchema, ScriptRecordSchema, ScriptVersionRecordSchema, ExtensionManifestSchema, ExtensionSchema, ExtensionVersionSchema, ExtensionRunSchema, ExtensionInstallBodySchema, ScriptApiAuthModeSchema, ScriptApiRecordSchema, SkillSchema, AgentSkillSchema, SkillWithInstallInfoSchema, SkillFileSchema, McpAuthMethodSchema, McpServerSchema, AgentMcpServerSchema, McpServerWithInstallInfoSchema, ContextSnapshotEventTypeSchema, ContextFormulaSchema, ContextSnapshotSchema, BudgetScopeSchema, BudgetSchema, PricingProviderSchema, PricingTokenClassSchema, PricingRowSchema, BudgetRefusalCauseSchema, BudgetRefusalNotificationSchema, BudgetRefusedTriggerSchema, KvValueTypeSchema, KvNamespaceSchema, KvKeySchema, KvEntrySchema, init_types };