@desplega.ai/agent-swarm 1.131.1 → 1.133.1

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 (250) hide show
  1. package/README.md +2 -2
  2. package/dist/{actions-jgcy477k.js → actions-cskpayd7.js} +11 -9
  3. package/dist/{anthropic-messages-rjmd2e7n.js → anthropic-messages-tpxtbx7b.js} +28 -12
  4. package/dist/{app-5da78bd4.js → app-ang77nbb.js} +8 -6
  5. package/dist/{assistant-f2vkk1hj.js → assistant-b4exebdw.js} +16 -13
  6. package/dist/{azure-openai-responses-c0yjmbfd.js → azure-openai-responses-m3921t4y.js} +8 -8
  7. package/dist/{boot-reembed-q7mp8hcr.js → boot-reembed-ps2aftpb.js} +9 -7
  8. package/dist/{boot-reembed-xmw8wcx6.js → boot-reembed-znyk3nxb.js} +10 -8
  9. package/dist/{boot-scrub-logs-dsqrv79n.js → boot-scrub-logs-2ax3xgz1.js} +7 -5
  10. package/dist/{claude-adapter-q6x7yspx.js → claude-adapter-3ct8kgxw.js} +13 -9
  11. package/dist/{claude-managed-adapter-wsg37bt8.js → claude-managed-adapter-akx4ntf2.js} +2 -2
  12. package/dist/{cli-114fvtmj.js → cli-13w2hwkh.js} +1 -1
  13. package/dist/{cli-4rkfg1wx.js → cli-1532szb1.js} +8 -6
  14. package/dist/{cli-g74vpjp2.js → cli-23d3rseb.js} +33 -17
  15. package/dist/{cli-3ty0t082.js → cli-2a75z9c5.js} +196 -7
  16. package/dist/{cli-pxfxkx5m.js → cli-2t30rj0d.js} +1 -1
  17. package/dist/{cli-rgrfzg8z.js → cli-3c3tdgab.js} +10 -10
  18. package/dist/{cli-6dp3ydxa.js → cli-3zzxa9jz.js} +15 -11
  19. package/dist/{cli-2f07m0xr.js → cli-4k6233gc.js} +1 -1
  20. package/dist/{cli-t8d349cy.js → cli-5p2tz05r.js} +2 -2
  21. package/dist/{cli-w2wxd56v.js → cli-5z2yhzvd.js} +127 -49
  22. package/dist/{cli-kd1ck4rx.js → cli-6zfq31nj.js} +9 -3
  23. package/dist/{cli-er3a4bb0.js → cli-8m9de10a.js} +6 -1
  24. package/dist/{cli-gm9cbhbq.js → cli-8t14vg9w.js} +27 -8
  25. package/dist/{cli-ccf9vy7q.js → cli-9nfc2es8.js} +6 -6
  26. package/dist/{cli-ycrnynpw.js → cli-9ta3pwms.js} +11 -4
  27. package/dist/{cli-7dm2zqy2.js → cli-avr0ns7z.js} +2 -2
  28. package/dist/{cli-n6h8qt8n.js → cli-c897wyhw.js} +12 -7
  29. package/dist/{cli-gecy3z2s.js → cli-dgk20ft7.js} +4 -4
  30. package/dist/cli-et1bbwqf.js +13 -0
  31. package/dist/{cli-bqw0mt1n.js → cli-f5w27pj3.js} +3 -3
  32. package/dist/{cli-2wadx7p2.js → cli-f8dre4bz.js} +2 -2
  33. package/dist/{cli-6pcz9h15.js → cli-ftwpv451.js} +170 -387
  34. package/dist/{cli-nrkkknat.js → cli-g854s2dw.js} +1 -1
  35. package/dist/{cli-793jvbsh.js → cli-ggmdxeqa.js} +13 -8
  36. package/dist/cli-hkwfe3qj.js +530 -0
  37. package/dist/{cli-5dsbcjjw.js → cli-jqwnqx9m.js} +1 -1
  38. package/dist/{cli-9dr5qzc0.js → cli-ny122vh4.js} +21 -10
  39. package/dist/{cli-sy7jk3tx.js → cli-pvzqhbs9.js} +2 -2
  40. package/dist/cli-pzq5rjym.js +15 -0
  41. package/dist/{cli-xpxde7rm.js → cli-qes8ef67.js} +48 -30
  42. package/dist/{cli-sajgpkqg.js → cli-qs9hhsvb.js} +1723 -325
  43. package/dist/cli-qys3rhhz.js +27 -0
  44. package/dist/{cli-se2p6rkb.js → cli-r6tpm37h.js} +2 -2
  45. package/dist/{cli-g1re8r05.js → cli-rch80c76.js} +2 -2
  46. package/dist/{cli-0258203w.js → cli-rpp0x4zy.js} +137 -17
  47. package/dist/{cli-5n6e5yfn.js → cli-s1k0wxhe.js} +12 -7
  48. package/dist/{cli-aca5pz9f.js → cli-sfd9v7sj.js} +1 -1
  49. package/dist/{cli-2rk0cx7s.js → cli-sh3ytsyj.js} +49 -39
  50. package/dist/{cli-zsspvvm2.js → cli-w1mp9jy7.js} +1 -1
  51. package/dist/{cli-6dpytdr2.js → cli-xdb4mpnp.js} +2 -2
  52. package/dist/{cli-57khth04.js → cli-xmyqv00z.js} +120 -4
  53. package/dist/{cli-jbcva0xj.js → cli-xv8t8p3c.js} +56 -31
  54. package/dist/{cli-f1am9szv.js → cli-xxv5pn4f.js} +1 -1
  55. package/dist/{cli-jevgrb4w.js → cli-y08jvxzx.js} +601 -140
  56. package/dist/{cli-50vbt00w.js → cli-zfbf3srj.js} +650 -245
  57. package/dist/{cli-ygrbmjja.js → cli-zmq89k34.js} +6 -6
  58. package/dist/cli.js +22 -22
  59. package/dist/{codex-adapter-htjkn22b.js → codex-adapter-bef93pq4.js} +9 -7
  60. package/dist/{codex-hook-hq54t9ft.js → codex-hook-e8dba65p.js} +3 -2
  61. package/dist/{codex-session-runner-wjfc7smz.js → codex-session-runner-5pkxys7x.js} +9 -7
  62. package/dist/{commands-xhrfwqsk.js → commands-e23s1bff.js} +9 -7
  63. package/dist/{db-anvwb22f.js → db-m3nabatn.js} +17 -5
  64. package/dist/{google-generative-ai-hysrd8qx.js → google-generative-ai-8maw55xh.js} +11 -8
  65. package/dist/{google-vertex-p5arrga0.js → google-vertex-8vjqmx8g.js} +11 -8
  66. package/dist/{handlers-b9kbc621.js → handlers-akazedvr.js} +16 -13
  67. package/dist/{hook-xkvn6c5h.js → hook-ze4cpf0v.js} +55 -41
  68. package/dist/{hook-cgk4wxmx.js → hook-zfqyyenw.js} +10 -7
  69. package/dist/{http-9xh6ta4r.js → http-sja0n6kw.js} +608 -147
  70. package/dist/index-0gr8vd6k.js +39 -0
  71. package/dist/{index-eaxyqcmj.js → index-354vkhdv.js} +154 -74
  72. package/dist/{index-070v4eyb.js → index-5qthek5t.js} +2 -3
  73. package/dist/{index-25wjsdv2.js → index-95t3cqq5.js} +16 -14
  74. package/dist/{index-9znhar3x.js → index-sea66619.js} +3 -4
  75. package/dist/{index-ywds4812.js → index-vpn36mma.js} +15 -13
  76. package/dist/{keepalive-vc7s2aa6.js → keepalive-3sp3meqj.js} +16 -10
  77. package/dist/{lead-r2yqfmx7.js → lead-mefeewkf.js} +39 -36
  78. package/dist/{maintenance-mw70k468.js → maintenance-8tbrbjfg.js} +10 -8
  79. package/dist/mistral-conversations-00zrp7g4.js +717 -0
  80. package/dist/{oauth-refresh-sweep-yecgjpk4.js → oauth-refresh-sweep-srjwjz6m.js} +8 -6
  81. package/dist/{onboard-xj0f73f9.js → onboard-mt2tgyjg.js} +7 -7
  82. package/dist/{openai-codex-responses-5g27pd6f.js → openai-codex-responses-map32h2s.js} +18 -18
  83. package/dist/{openai-completions-3vkmfz2a.js → openai-completions-w871b1cq.js} +12 -11
  84. package/dist/{openai-responses-dg4t7j7a.js → openai-responses-b0j7xnw8.js} +15 -12
  85. package/dist/{opencode-adapter-1gm38aba.js → opencode-adapter-b39jefcj.js} +5 -3
  86. package/dist/{openrouter-images-g3gm8931.js → openrouter-images-srfkywy0.js} +4 -4
  87. package/dist/{otel-impl-nxg0n0b3.js → otel-impl-z6pxt3j9.js} +224 -9
  88. package/dist/{pi-mono-adapter-4g5kby31.js → pi-mono-adapter-btvqmj58.js} +1138 -408
  89. package/dist/{pricing-refresh-2cn6effr.js → pricing-refresh-kyq8cezh.js} +9 -7
  90. package/dist/{rbac-roles-1hcxdtg7.js → rbac-roles-3ryfrfna.js} +8 -6
  91. package/dist/{rbac-roles-vynday5g.js → rbac-roles-6qfvbee1.js} +9 -7
  92. package/dist/{render-v2-tc0bh8kk.js → render-v2-p61ppjey.js} +8 -6
  93. package/dist/{seed-pricing-8kceb43f.js → seed-pricing-j56bbj4y.js} +8 -6
  94. package/dist/{setup-46xtgq3c.js → setup-tpr6c1kn.js} +2 -2
  95. package/dist/{worker-qrbz6hmv.js → worker-9w1v0mbb.js} +39 -36
  96. package/openapi.json +542 -16
  97. package/package.json +6 -6
  98. package/src/be/budget-refusal-notify.ts +14 -7
  99. package/src/be/db-queries/task-artifacts.ts +182 -0
  100. package/src/be/db.ts +783 -169
  101. package/src/be/events.ts +5 -0
  102. package/src/be/migrations/131_session_logs_created_at_index.sql +2 -0
  103. package/src/be/migrations/132_multi_runtime_instances.sql +44 -0
  104. package/src/be/migrations/133_workflow_run_trigger_type.sql +12 -0
  105. package/src/be/migrations/135_backfill_task_pull_request_attachments.sql +228 -0
  106. package/src/be/migrations/136_task_requester_provenance.sql +37 -0
  107. package/src/be/migrations/137_memory_retrieval_composite_index.sql +1 -0
  108. package/src/be/multi-runtime.ts +430 -0
  109. package/src/be/scripts/extract-schema.ts +3 -1
  110. package/src/be/scripts/typecheck.ts +3 -2
  111. package/src/be/seed-skills/index.ts +7 -0
  112. package/src/be/steering.ts +1 -1
  113. package/src/be/swarm-config-guard.ts +18 -0
  114. package/src/commands/credential-wait.ts +54 -0
  115. package/src/commands/onboard/steps/core-credentials.tsx +1 -1
  116. package/src/commands/onboard/steps/custom-templates.tsx +1 -1
  117. package/src/commands/onboard/steps/harness-credentials.tsx +1 -1
  118. package/src/commands/onboard/steps/health-check.tsx +1 -1
  119. package/src/commands/onboard/steps/start.tsx +1 -1
  120. package/src/commands/profile-sync-audit.ts +56 -0
  121. package/src/commands/profile-sync.ts +287 -15
  122. package/src/commands/provider-credentials.ts +46 -19
  123. package/src/commands/runner.ts +196 -33
  124. package/src/commands/templates.ts +22 -0
  125. package/src/github/handlers.ts +55 -9
  126. package/src/heartbeat/heartbeat.ts +71 -12
  127. package/src/hooks/hook.ts +49 -33
  128. package/src/http/active-sessions.ts +11 -1
  129. package/src/http/agents.ts +261 -30
  130. package/src/http/all-routes.ts +1 -0
  131. package/src/http/config.ts +13 -2
  132. package/src/http/core.ts +102 -4
  133. package/src/http/db-query-bounded.ts +313 -0
  134. package/src/http/db-query-shared.ts +249 -0
  135. package/src/http/db-query.ts +54 -42
  136. package/src/http/events.ts +2 -0
  137. package/src/http/index.ts +22 -2
  138. package/src/http/mcp-bridge.ts +37 -3
  139. package/src/http/mcp.ts +12 -0
  140. package/src/http/memory.ts +13 -2
  141. package/src/http/openapi.ts +1 -0
  142. package/src/http/poll.ts +70 -27
  143. package/src/http/route-def.ts +43 -9
  144. package/src/http/schedules.ts +2 -2
  145. package/src/http/scripts.ts +10 -1
  146. package/src/http/session-data.ts +44 -0
  147. package/src/http/tasks.ts +2 -2
  148. package/src/http/users.ts +74 -52
  149. package/src/http/webhooks.ts +5 -2
  150. package/src/http/workflows.ts +1 -4
  151. package/src/integrations/kapso/inbound.ts +1 -1
  152. package/src/jira/outbound.ts +39 -8
  153. package/src/jira/webhook-lifecycle.ts +13 -2
  154. package/src/linear/outbound.ts +43 -10
  155. package/src/oauth/keepalive.ts +13 -2
  156. package/src/prompts/base-prompt.ts +1 -1
  157. package/src/prompts/session-templates.ts +45 -7
  158. package/src/providers/claude-adapter.ts +6 -0
  159. package/src/providers/codex-adapter.ts +6 -0
  160. package/src/providers/opencode-adapter.ts +6 -0
  161. package/src/providers/pi-mono-adapter.ts +8 -0
  162. package/src/providers/pricing-sources.md +24 -0
  163. package/src/queue-stall-alarm.ts +216 -0
  164. package/src/scheduler/scheduler.ts +7 -0
  165. package/src/script-workflows/executor.ts +2 -1
  166. package/src/scripts-runtime/executors/native.ts +2 -1
  167. package/src/scripts-runtime/executors/types.ts +5 -0
  168. package/src/scripts-runtime/loader.ts +5 -0
  169. package/src/scripts-runtime/swarm-config.ts +8 -0
  170. package/src/scripts-runtime/swarm-sdk.ts +7 -0
  171. package/src/scripts-runtime/types/stdlib.d.ts +1 -0
  172. package/src/scripts-runtime/types/swarm-sdk.d.ts +1 -0
  173. package/src/tests/budget-claim-gate.test.ts +20 -0
  174. package/src/tests/claude-adapter.test.ts +32 -0
  175. package/src/tests/codex-adapter.test.ts +30 -0
  176. package/src/tests/create-task-validation.test.ts +128 -0
  177. package/src/tests/credential-wait.test.ts +67 -1
  178. package/src/tests/db-query.test.ts +711 -2
  179. package/src/tests/http-api-integration.test.ts +81 -0
  180. package/src/tests/http-users.test.ts +166 -1
  181. package/src/tests/identity-field-budget.test.ts +176 -0
  182. package/src/tests/mcp-tools-user.test.ts +34 -0
  183. package/src/tests/mcp-user-route.test.ts +17 -0
  184. package/src/tests/metrics-http.test.ts +44 -0
  185. package/src/tests/multi-runtime-registration.test.ts +2703 -0
  186. package/src/tests/openapi-response-contract.test.ts +24 -0
  187. package/src/tests/openapi-route-headers.test.ts +83 -0
  188. package/src/tests/opencode-adapter.test.ts +40 -0
  189. package/src/tests/outbound-listener-rejection.test.ts +138 -0
  190. package/src/tests/pi-mono-adapter.test.ts +98 -0
  191. package/src/tests/profile-sync-warning.test.ts +277 -0
  192. package/src/tests/profile-sync.test.ts +232 -6
  193. package/src/tests/prompt-template-session.test.ts +32 -3
  194. package/src/tests/queue-stall-alarm.test.ts +226 -0
  195. package/src/tests/requester-comms.test.ts +32 -0
  196. package/src/tests/runner-requester-profile.test.ts +38 -0
  197. package/src/tests/schedule-target-type.test.ts +38 -0
  198. package/src/tests/script-connections.test.ts +13 -1
  199. package/src/tests/scripts-runtime-identity.test.ts +375 -0
  200. package/src/tests/scripts-runtime.test.ts +4 -3
  201. package/src/tests/sdk-allowlist.test.ts +47 -0
  202. package/src/tests/send-task-requested-by.test.ts +9 -0
  203. package/src/tests/session-costs.test.ts +506 -1
  204. package/src/tests/shutdown-error-scrubbing.test.ts +92 -0
  205. package/src/tests/steering-core.test.ts +28 -0
  206. package/src/tests/task-artifacts.test.ts +386 -0
  207. package/src/tests/task-attachments-schema.test.ts +17 -1
  208. package/src/tests/task-completion-idempotency.test.ts +57 -0
  209. package/src/tests/task-pull-request-backfill-migration.test.ts +321 -0
  210. package/src/tests/update-profile-api.test.ts +67 -39
  211. package/src/tests/update-profile-auth.test.ts +48 -4
  212. package/src/tests/user-attribution-migration.test.ts +54 -0
  213. package/src/tests/user-identity.test.ts +72 -0
  214. package/src/tests/workflow-async-v2.test.ts +39 -1
  215. package/src/tests/workflow-http-v2.test.ts +3 -2
  216. package/src/tests/workflow-mcp-trigger-schema.test.ts +52 -3
  217. package/src/tests/workflow-retry-v2.test.ts +45 -1
  218. package/src/tools/db-query.ts +18 -8
  219. package/src/tools/get-task-details.ts +24 -3
  220. package/src/tools/manage-user.ts +36 -3
  221. package/src/tools/poll-task.ts +93 -14
  222. package/src/tools/script-common.ts +5 -0
  223. package/src/tools/send-task.ts +1 -4
  224. package/src/tools/store-progress.ts +13 -2
  225. package/src/tools/swarm-config/delete-config.ts +9 -0
  226. package/src/tools/swarm-config/set-config.ts +3 -2
  227. package/src/tools/task-action.ts +30 -0
  228. package/src/tools/task-tool-ctx.ts +8 -1
  229. package/src/tools/update-profile.ts +16 -21
  230. package/src/tools/utils.ts +5 -0
  231. package/src/tools/workflows/trigger-workflow.ts +7 -1
  232. package/src/types.ts +165 -1
  233. package/src/utils/github-pull-request.ts +76 -0
  234. package/src/utils/identity-field-budget.ts +73 -0
  235. package/src/utils/multi-runtime.ts +20 -0
  236. package/src/utils/requester-comms.ts +24 -0
  237. package/src/workflows/engine.ts +22 -2
  238. package/src/workflows/resume.ts +19 -11
  239. package/src/workflows/retry-poller.ts +1 -0
  240. package/src/workflows/triggers.ts +4 -0
  241. package/templates/skills/db-query-guidance/config.json +14 -0
  242. package/templates/skills/db-query-guidance/content.md +57 -0
  243. package/dist/cli-3te4jdkm.js +0 -225
  244. package/dist/cli-bmze986d.js +0 -7
  245. package/dist/cli-kh3ba2zf.js +0 -607
  246. package/dist/index-vg4snay4.js +0 -36
  247. package/dist/mistral-conversations-81fwav0j.js +0 -30578
  248. package/dist/otel-nqa12wf3.js +0 -3149
  249. package/dist/{cli-wz9115x0.js → cli-zr9q011v.js} +6 -6
  250. package/dist/{pi-messages-tqj8q6b9.js → pi-messages-sssy32x4.js} +3 -3
@@ -7,7 +7,7 @@ import {
7
7
  init_date_utils,
8
8
  init_db,
9
9
  normalizeDateRequired
10
- } from "./cli-50vbt00w.js";
10
+ } from "./cli-zfbf3srj.js";
11
11
  import {
12
12
  init_secret_scrubber,
13
13
  registerVolatileSecret,
@@ -4,16 +4,10 @@ import {
4
4
  import {
5
5
  resolveCodexPrompt
6
6
  } from "./cli-r94z9p1z.js";
7
- import {
8
- readPkgVersion
9
- } from "./cli-d6n0thxw.js";
10
7
  import {
11
8
  SessionErrorTracker,
12
9
  buildOtelTraceparentEnv
13
10
  } from "./cli-psrqtw2m.js";
14
- import {
15
- summarizeSession
16
- } from "./cli-w2wxd56v.js";
17
11
  import {
18
12
  CTX_MODE_NUDGE_EVERY
19
13
  } from "./cli-zm7njwzd.js";
@@ -22,11 +16,17 @@ import {
22
16
  clampContextPercent,
23
17
  computeContextUsedUnified
24
18
  } from "./cli-cw70hymf.js";
19
+ import {
20
+ readPkgVersion
21
+ } from "./cli-d6n0thxw.js";
22
+ import {
23
+ summarizeSession
24
+ } from "./cli-5z2yhzvd.js";
25
25
  import {
26
26
  buildRatingsFromLlm,
27
27
  fetchRetrievalsForTask,
28
28
  postRatings
29
- } from "./cli-2wadx7p2.js";
29
+ } from "./cli-f8dre4bz.js";
30
30
  import {
31
31
  CodexOAuthRefreshError,
32
32
  credentialsToAuthJson,
@@ -35,6 +35,9 @@ import {
35
35
  import {
36
36
  applyReasoningEffort
37
37
  } from "./cli-8whqavk2.js";
38
+ import {
39
+ swarmRuntimeInstanceId
40
+ } from "./cli-pzq5rjym.js";
38
41
  import {
39
42
  getApiKey
40
43
  } from "./cli-f14fvzag.js";
@@ -253774,12 +253777,14 @@ function buildPoolRevalidationFailureReason(err, slot) {
253774
253777
  }
253775
253778
  async function buildCodexConfig(config, model, emit) {
253776
253779
  const mcpServers = {};
253780
+ const runtimeInstanceId = swarmRuntimeInstanceId();
253777
253781
  mcpServers["agent-swarm"] = {
253778
253782
  url: `${config.apiUrl}/mcp`,
253779
253783
  http_headers: {
253780
253784
  Authorization: `Bearer ${config.apiKey}`,
253781
253785
  "X-Agent-ID": config.agentId,
253782
- "X-Source-Task-Id": config.taskId ?? ""
253786
+ "X-Source-Task-Id": config.taskId ?? "",
253787
+ ...runtimeInstanceId ? { "X-Runtime-Instance-ID": runtimeInstanceId } : {}
253783
253788
  },
253784
253789
  enabled: true,
253785
253790
  startup_timeout_sec: 30,
@@ -0,0 +1,530 @@
1
+ import {
2
+ init_registry,
3
+ init_resolver,
4
+ init_session_templates,
5
+ init_steering_enabled,
6
+ isSteeringEnabled,
7
+ registerTemplate,
8
+ resolveTemplateAsync
9
+ } from "./cli-qes8ef67.js";
10
+ import {
11
+ __esm
12
+ } from "./cli-p9swy5t3.js";
13
+
14
+ // src/prompts/base-prompt.ts
15
+ function areSlackPromptToolsEnabled(env = process.env) {
16
+ const slackDisable = env.SLACK_DISABLE;
17
+ if (slackDisable === "true" || slackDisable === "1")
18
+ return false;
19
+ return Boolean(env.SLACK_BOT_TOKEN && env.SLACK_APP_TOKEN);
20
+ }
21
+ function truncateRepoClaudeMd(content, clonePath, budget) {
22
+ if (content.length <= budget)
23
+ return content;
24
+ const notice = `
25
+
26
+ [...truncated — see ${clonePath}/CLAUDE.md for full content]
27
+ `;
28
+ const contentBudget = budget - notice.length;
29
+ if (contentBudget <= 0)
30
+ return notice.trimStart();
31
+ return content.slice(0, contentBudget) + notice;
32
+ }
33
+ function truncateSection(content, header, fileName, budget) {
34
+ if (!content || budget <= 0)
35
+ return "";
36
+ const fullSection = `
37
+
38
+ ${header}
39
+
40
+ ${content}
41
+ `;
42
+ if (fullSection.length <= budget)
43
+ return fullSection;
44
+ const headerStr = `
45
+
46
+ ${header}
47
+
48
+ `;
49
+ const notice = truncationNotice(fileName);
50
+ const contentBudget = budget - headerStr.length - notice.length;
51
+ if (contentBudget > 0) {
52
+ return headerStr + content.slice(0, contentBudget) + notice;
53
+ }
54
+ return "";
55
+ }
56
+ var BOOTSTRAP_MAX_CHARS = 20000, BOOTSTRAP_TOTAL_MAX_CHARS = 120000, REPO_CLAUDE_MD_MAX_CHARS = 12000, truncationNotice = (file) => `
57
+
58
+ [...truncated, see /workspace/${file} for full content]
59
+ `, getBasePrompt = async (args) => {
60
+ const { role, agentId, swarmUrl, traits } = args;
61
+ const {
62
+ hasMcp = true,
63
+ hasLocalEnvironment: hasLocalEnv = true,
64
+ nativeSkillDiscovery = true
65
+ } = traits ?? {};
66
+ const steerModes = traits?.steerModes ?? [];
67
+ const vars = { role, agentId, swarmUrl };
68
+ let compositeEventType;
69
+ if (!hasMcp) {
70
+ compositeEventType = "system.session.worker.remote";
71
+ } else if (args.provider === "pi") {
72
+ compositeEventType = role === "lead" ? "system.session.lead.pi" : "system.session.worker.pi";
73
+ } else if (role === "lead") {
74
+ compositeEventType = "system.session.lead";
75
+ } else {
76
+ compositeEventType = "system.session.worker";
77
+ }
78
+ const compositeResult = await resolveTemplateAsync(compositeEventType, vars);
79
+ let prompt = compositeResult.text;
80
+ const scriptsOnly = args.scriptsOnly ?? process.env.SCRIPTS_ONLY_MCP === "true";
81
+ const scriptsOnlyMode = hasMcp && scriptsOnly;
82
+ if (scriptsOnlyMode) {
83
+ const scriptsOnlyResult = await resolveTemplateAsync("system.agent.scripts_only_mode", {});
84
+ prompt += `
85
+ ${scriptsOnlyResult.text}`;
86
+ }
87
+ const slackPromptToolsEnabled = areSlackPromptToolsEnabled();
88
+ const serverHasCapability = (cap, whenUnknown) => args.serverCapabilities ? args.serverCapabilities.includes(cap) : whenUnknown;
89
+ if (hasMcp && slackPromptToolsEnabled && !scriptsOnlyMode && serverHasCapability("slack", true)) {
90
+ const slackResult = await resolveTemplateAsync("system.agent.slack", {});
91
+ prompt += slackResult.text;
92
+ }
93
+ if (role !== "lead" && args.slackContext && hasMcp && slackPromptToolsEnabled && (scriptsOnlyMode || serverHasCapability("slack", true))) {
94
+ const slackResult = await resolveTemplateAsync(scriptsOnlyMode ? "system.agent.scripts_only_mode.slack" : "system.agent.worker.slack", {
95
+ slackChannelId: args.slackContext.channelId,
96
+ slackThreadTs: args.slackContext.threadTs ?? ""
97
+ });
98
+ prompt += slackResult.text;
99
+ }
100
+ if (hasMcp && !scriptsOnlyMode && serverHasCapability("messaging", true)) {
101
+ const messagingResult = await resolveTemplateAsync("system.agent.messaging", {});
102
+ prompt += messagingResult.text;
103
+ }
104
+ if (hasMcp && isSteeringEnabled() && steerModes.length > 0 && !scriptsOnlyMode && serverHasCapability("core", true)) {
105
+ const steeringResult = await resolveTemplateAsync("system.agent.steering", {});
106
+ prompt += steeringResult.text;
107
+ }
108
+ if (!hasLocalEnv) {
109
+ prompt += `
110
+
111
+ ## Your Identity
112
+
113
+ `;
114
+ if (args.name) {
115
+ prompt += `**Name:** ${args.name}
116
+ `;
117
+ if (args.description) {
118
+ prompt += `**Description:** ${args.description}
119
+ `;
120
+ }
121
+ prompt += `
122
+ `;
123
+ }
124
+ prompt += `You are part of an agent swarm managed by the Desplega platform. `;
125
+ prompt += `You receive tasks from the swarm's lead agent and execute them independently. `;
126
+ prompt += `Focus on quality work and clear communication of results.
127
+ `;
128
+ } else if (args.soulMd || args.identityMd || args.name) {
129
+ prompt += `
130
+
131
+ ## Your Identity
132
+
133
+ `;
134
+ if (args.name) {
135
+ prompt += `**Name:** ${args.name}
136
+ `;
137
+ if (args.description) {
138
+ prompt += `**Description:** ${args.description}
139
+ `;
140
+ }
141
+ prompt += `
142
+ `;
143
+ }
144
+ if (args.soulMd) {
145
+ prompt += `${args.soulMd}
146
+ `;
147
+ }
148
+ if (args.identityMd) {
149
+ prompt += `${args.identityMd}
150
+ `;
151
+ }
152
+ }
153
+ if (hasMcp && args.skillsSummary && args.skillsSummary.length > 0) {
154
+ const discovery = "To browse the full catalog use the `skill-list` MCP tool, find one by intent with `skill-search`, and read a skill's content with `skill-get`.";
155
+ if (nativeSkillDiscovery) {
156
+ const count = args.skillsSummary.length;
157
+ const where = hasLocalEnv ? "Your harness loads them from its skills directory (each skill is a folder with a SKILL.md — e.g. ~/.claude/skills/, ~/.codex/skills/, ~/.pi/agent/skills/, ~/.opencode/skills/) and most harnesses surface them natively." : "This session has no local skills directory, so reach them through the MCP tools.";
158
+ prompt += `
159
+
160
+ ## Installed Skills
161
+
162
+ You have ${count} skill${count === 1 ? "" : "s"} installed. ${where} ${discovery}
163
+ `;
164
+ } else {
165
+ const summaries = args.skillsSummary.map((s) => `- ${hasLocalEnv ? "/" : ""}${s.name}: ${s.description}`).join(`
166
+ `);
167
+ const howTo = hasLocalEnv ? "To use one, read its SKILL.md from your skills directory and follow its instructions." : "To use one, read its content with the `skill-get` MCP tool and follow its instructions.";
168
+ prompt += `
169
+
170
+ ## Installed Skills
171
+
172
+ The following skills are available. ${howTo}
173
+
174
+ ${summaries}
175
+
176
+ ${discovery}
177
+ `;
178
+ }
179
+ }
180
+ if (hasMcp && args.mcpServersSummary) {
181
+ prompt += `
182
+
183
+ ## Installed MCP Servers
184
+
185
+ The following MCP servers are configured for your use:
186
+ ${args.mcpServersSummary}
187
+ `;
188
+ }
189
+ if (args.repoContext) {
190
+ prompt += `
191
+
192
+ ## Repository Context
193
+
194
+ `;
195
+ if (args.repoContext.warning) {
196
+ prompt += `WARNING: ${args.repoContext.warning}
197
+
198
+ `;
199
+ }
200
+ if (hasLocalEnv) {
201
+ if (args.repoContext.claudeMd) {
202
+ prompt += `The following CLAUDE.md is from the repository cloned at \`${args.repoContext.clonePath}\`. `;
203
+ prompt += `**IMPORTANT: These instructions apply ONLY when working within the \`${args.repoContext.clonePath}\` directory.** `;
204
+ prompt += `Do NOT apply these rules to files outside that directory.
205
+
206
+ `;
207
+ prompt += `${truncateRepoClaudeMd(args.repoContext.claudeMd, args.repoContext.clonePath, REPO_CLAUDE_MD_MAX_CHARS)}
208
+ `;
209
+ } else if (!args.repoContext.warning) {
210
+ prompt += `Repository is cloned at \`${args.repoContext.clonePath}\` but has no CLAUDE.md file.
211
+ `;
212
+ }
213
+ if (args.repoContext.autoStashes && args.repoContext.autoStashes.length > 0) {
214
+ const stashes = args.repoContext.autoStashes.map((stash) => `- ${stash.ref}: ${stash.message}`).join(`
215
+ `);
216
+ prompt += `
217
+ Pending auto-stashed work exists in this repo:
218
+ ${stashes}
219
+ Restore if relevant with \`git stash apply <ref>\` or \`git stash pop <ref>\`.
220
+ `;
221
+ }
222
+ }
223
+ const g = args.repoContext.guidelines;
224
+ if (g === null || g === undefined) {
225
+ prompt += `
226
+ ### Repository Guidelines
227
+
228
+ No repository guidelines defined. If you need to push code, ask the lead or user to define guidelines first.
229
+ `;
230
+ } else {
231
+ const hasAnyContent = g.prChecks.length > 0 || g.mergeChecks.length > 0 || g.review.length > 0 || g.allowMerge;
232
+ if (hasAnyContent) {
233
+ prompt += `
234
+ ### Repository Guidelines (MANDATORY)
235
+
236
+ `;
237
+ if (g.prChecks.length > 0) {
238
+ prompt += `**PR Checks — Run ALL before pushing code or creating a PR:**
239
+ `;
240
+ g.prChecks.forEach((check, i) => {
241
+ prompt += `${i + 1}. \`${check}\`
242
+ `;
243
+ });
244
+ prompt += `If ANY check fails, fix the issue before pushing. Do NOT push code with failing checks.
245
+ Do NOT use \`--no-verify\` or any flag that bypasses git hooks.
246
+
247
+ `;
248
+ }
249
+ prompt += `**Merge Policy:**
250
+ `;
251
+ prompt += `- Auto-merge: ${g.allowMerge ? "Allowed" : "Not allowed (default)"}
252
+ `;
253
+ if (g.mergeChecks.length > 0) {
254
+ prompt += `- Before merging, verify:
255
+ `;
256
+ g.mergeChecks.forEach((check) => {
257
+ prompt += ` - ${check}
258
+ `;
259
+ });
260
+ }
261
+ prompt += `
262
+ `;
263
+ if (g.review.length > 0) {
264
+ prompt += `**Review Guidance:**
265
+ `;
266
+ g.review.forEach((item) => {
267
+ prompt += `- ${item}
268
+ `;
269
+ });
270
+ prompt += `
271
+ `;
272
+ }
273
+ }
274
+ }
275
+ }
276
+ if (hasLocalEnv) {
277
+ let conditionalSuffix = "";
278
+ if (process.env.AGENT_FS_API_URL) {
279
+ const sharedOrgId = process.env.AGENT_FS_SHARED_ORG_ID || "YOUR_SHARED_ORG_ID";
280
+ const agentFsResult = await resolveTemplateAsync("system.agent.agent_fs", {
281
+ agentId,
282
+ sharedOrgId
283
+ });
284
+ conditionalSuffix += agentFsResult.text;
285
+ }
286
+ if (args.serverCapabilities ? args.serverCapabilities.includes("services") : !args.capabilities || args.capabilities.includes("services")) {
287
+ const servicesResult = await resolveTemplateAsync("system.agent.services", {
288
+ agentId,
289
+ swarmUrl
290
+ });
291
+ conditionalSuffix += servicesResult.text;
292
+ }
293
+ if (!args.capabilities || args.capabilities.includes("artifacts")) {
294
+ const artifactsResult = await resolveTemplateAsync("system.agent.artifacts", {});
295
+ conditionalSuffix += artifactsResult.text;
296
+ }
297
+ if (serverHasCapability("pages", !args.capabilities || args.capabilities.includes("pages"))) {
298
+ const appsResult = await resolveTemplateAsync("system.agent.apps", {});
299
+ conditionalSuffix += appsResult.text;
300
+ }
301
+ if (args.capabilities) {
302
+ conditionalSuffix += `
303
+ ### Capabilities enabled for this agent:
304
+
305
+ - ${args.capabilities.join(`
306
+ - `)}
307
+ `;
308
+ }
309
+ const protectedLength = prompt.length + conditionalSuffix.length;
310
+ const totalBudget = Math.max(0, BOOTSTRAP_TOTAL_MAX_CHARS - protectedLength);
311
+ let totalUsed = 0;
312
+ if (args.claudeMd) {
313
+ const perSectionBudget = Math.min(BOOTSTRAP_MAX_CHARS, totalBudget - totalUsed);
314
+ const section = truncateSection(args.claudeMd, "## Agent Instructions", "CLAUDE.md", perSectionBudget);
315
+ prompt += section;
316
+ totalUsed += section.length;
317
+ }
318
+ if (args.toolsMd) {
319
+ const perSectionBudget = Math.min(BOOTSTRAP_MAX_CHARS, totalBudget - totalUsed);
320
+ const section = truncateSection(args.toolsMd, "## Your Tools & Capabilities", "TOOLS.md", perSectionBudget);
321
+ prompt += section;
322
+ totalUsed += section.length;
323
+ }
324
+ prompt += conditionalSuffix;
325
+ }
326
+ return prompt;
327
+ };
328
+ var init_base_prompt = __esm(() => {
329
+ init_steering_enabled();
330
+ init_resolver();
331
+ init_session_templates();
332
+ });
333
+
334
+ // src/utils/identity-field-budget.ts
335
+ function checkIdentityFieldBudget({
336
+ field,
337
+ currentValue,
338
+ nextValue
339
+ }) {
340
+ const budget = IDENTITY_FIELD_BUDGETS[field];
341
+ if (nextValue.length <= budget || nextValue.length <= currentValue.length) {
342
+ return { ok: true };
343
+ }
344
+ const delta = nextValue.length - currentValue.length;
345
+ const remediation = field === "toolsMd" ? ` Content past the ${budget}-character cap is already silently dropped at read time, so shrinking that tail loses nothing sessions currently receive. Move durable content into memories and keep pointers to it in this field.` : field === "claudeMd" ? ` The tail past the ${budget}-character cap is dropped from the base prompt and only reaches harnesses with a native CLAUDE.md loader. Move durable content into memories and keep pointers to it in this field.` : " Move durable content into memories and keep pointers to it in this field.";
346
+ return {
347
+ ok: false,
348
+ field,
349
+ dbSize: currentValue.length,
350
+ diskSize: nextValue.length,
351
+ budget,
352
+ delta,
353
+ reason: `Update rejected for ${field}: current size ${currentValue.length} characters, ` + `budget ${budget} characters, delta ${delta >= 0 ? "+" : ""}${delta} characters.` + remediation
354
+ };
355
+ }
356
+ var SOUL_MD_MAX_CHARS = 1e4, IDENTITY_MD_MAX_CHARS = 1e4, IDENTITY_FIELD_BUDGETS, IdentityFieldBudgetError;
357
+ var init_identity_field_budget = __esm(() => {
358
+ init_base_prompt();
359
+ IDENTITY_FIELD_BUDGETS = {
360
+ soulMd: SOUL_MD_MAX_CHARS,
361
+ identityMd: IDENTITY_MD_MAX_CHARS,
362
+ claudeMd: BOOTSTRAP_MAX_CHARS,
363
+ toolsMd: BOOTSTRAP_MAX_CHARS
364
+ };
365
+ IdentityFieldBudgetError = class IdentityFieldBudgetError extends Error {
366
+ rejection;
367
+ dbHash;
368
+ diskHash;
369
+ constructor(rejection, dbHash, diskHash) {
370
+ super(rejection.reason);
371
+ this.rejection = rejection;
372
+ this.dbHash = dbHash;
373
+ this.diskHash = diskHash;
374
+ this.name = "IdentityFieldBudgetError";
375
+ }
376
+ };
377
+ });
378
+
379
+ // src/commands/templates.ts
380
+ var init_templates = __esm(() => {
381
+ init_registry();
382
+ registerTemplate({
383
+ eventType: "task.trigger.assigned",
384
+ header: "",
385
+ defaultBody: `{{work_on_task_cmd}} {{task_id}}{{task_desc_section}}{{attachments_section}}{{output_instructions}}`,
386
+ variables: [
387
+ { name: "work_on_task_cmd", description: "Formatted /work-on-task command" },
388
+ { name: "task_id", description: "Task ID" },
389
+ { name: "task_desc_section", description: "Task description section or empty string" },
390
+ {
391
+ name: "attachments_section",
392
+ description: "Ready-to-run fetch recipe per task attachment (or empty string if none) — lets the agent download an attachment in one call instead of discovering the path/provider itself"
393
+ },
394
+ {
395
+ name: "output_instructions",
396
+ description: "Output format instructions (with outputSchema if present, or generic store-progress)"
397
+ }
398
+ ],
399
+ category: "task_lifecycle"
400
+ });
401
+ registerTemplate({
402
+ eventType: "task.trigger.offered",
403
+ header: "",
404
+ defaultBody: `{{review_offered_task_cmd}} {{task_id}}{{task_desc_section}}
405
+
406
+ Accept if you have capacity and skills. Reject with a reason if you cannot handle it.`,
407
+ variables: [
408
+ { name: "review_offered_task_cmd", description: "Formatted /review-offered-task command" },
409
+ { name: "task_id", description: "Task ID" },
410
+ { name: "task_desc_section", description: "Task description section or empty string" }
411
+ ],
412
+ category: "task_lifecycle"
413
+ });
414
+ registerTemplate({
415
+ eventType: "task.profile_sync_rejection",
416
+ header: "",
417
+ defaultBody: `=== PERSISTED PROFILE SYNC REJECTION ===
418
+ A {{timestamp}} sync of {{field_label}} did not reach the database. Disk size: {{disk_size}}; DB size: {{db_size}}; budget: {{budget}}; delta: {{delta}}.
419
+ Audit event: {{event_id}}. {{recovery_guidance}}
420
+ === END PROFILE SYNC REJECTION ===
421
+
422
+ `,
423
+ variables: [
424
+ { name: "timestamp", description: "UTC timestamp of the rejected sync" },
425
+ { name: "field_label", description: "Profile field and its harness-specific file path" },
426
+ { name: "disk_size", description: "Rejected local file size" },
427
+ { name: "db_size", description: "Stored database field size" },
428
+ { name: "budget", description: "Configured field budget" },
429
+ { name: "delta", description: "Signed size delta" },
430
+ { name: "event_id", description: "Persisted audit event ID" },
431
+ { name: "recovery_guidance", description: "Accurate field-specific recovery instructions" }
432
+ ],
433
+ category: "task_lifecycle"
434
+ });
435
+ registerTemplate({
436
+ eventType: "task.trigger.unread_mentions",
437
+ header: "",
438
+ defaultBody: `You have {{mention_count}} mention(s) in chat channels.
439
+
440
+ 1. Use \`read-messages\` with unreadOnly: true to see them
441
+ 2. Respond to questions or requests directed at you
442
+ 3. If a message requires work, create a task using \`send-task\``,
443
+ variables: [{ name: "mention_count", description: "Number of unread mentions or 'unread'" }],
444
+ category: "task_lifecycle"
445
+ });
446
+ registerTemplate({
447
+ eventType: "task.trigger.pool_available",
448
+ header: "",
449
+ defaultBody: `{{task_count}} task(s) available in the pool.
450
+
451
+ 1. Run \`get-tasks\` with unassigned: true to browse
452
+ 2. Pick one matching your skills
453
+ 3. Run \`task-action\` with action: "claim" and taskId: "<id>"
454
+
455
+ Note: Claims are first-come-first-serve. If claim fails, pick another.`,
456
+ variables: [{ name: "task_count", description: "Number of available pool tasks" }],
457
+ category: "task_lifecycle"
458
+ });
459
+ registerTemplate({
460
+ eventType: "task.trigger.channel_activity",
461
+ header: "",
462
+ defaultBody: `## Slack Channel Activity
463
+
464
+ {{message_count}} new message(s) in monitored Slack channels:
465
+
466
+ {{messages_detail}}
467
+ ## Your Task
468
+
469
+ Review these messages and decide if any require action:
470
+ 1. If a message is a question or request, respond using \`slack-reply\` or create a task with \`send-task\`
471
+ 2. If a message is informational, no action needed
472
+ 3. Use \`slack-read\` with the channelId to get more context if needed`,
473
+ variables: [
474
+ { name: "message_count", description: "Number of new messages" },
475
+ {
476
+ name: "messages_detail",
477
+ description: "Formatted list of messages with channel and user info"
478
+ }
479
+ ],
480
+ category: "task_lifecycle"
481
+ });
482
+ registerTemplate({
483
+ eventType: "task.resumption.with_progress",
484
+ header: "",
485
+ defaultBody: `{{work_on_task_cmd}} {{task_id}}
486
+
487
+ **RESUMED TASK** - This task was interrupted during a deployment and is being resumed.
488
+
489
+ Task: "{{task_description}}"
490
+
491
+ Previous Progress:
492
+ {{progress}}
493
+
494
+ Continue from where you left off. Review the progress above and complete the remaining work.{{completion_instructions}}`,
495
+ variables: [
496
+ { name: "work_on_task_cmd", description: "Formatted /work-on-task command" },
497
+ { name: "task_id", description: "Task ID" },
498
+ { name: "task_description", description: "Original task description" },
499
+ { name: "progress", description: "Previous progress text" },
500
+ {
501
+ name: "completion_instructions",
502
+ description: "Completion instructions (empty for providers without MCP)"
503
+ }
504
+ ],
505
+ category: "task_lifecycle"
506
+ });
507
+ registerTemplate({
508
+ eventType: "task.resumption.no_progress",
509
+ header: "",
510
+ defaultBody: `{{work_on_task_cmd}} {{task_id}}
511
+
512
+ **RESUMED TASK** - This task was interrupted during a deployment and is being resumed.
513
+
514
+ Task: "{{task_description}}"
515
+
516
+ No progress was saved before the interruption. Start the task fresh but be aware files may have been partially modified.{{completion_instructions}}`,
517
+ variables: [
518
+ { name: "work_on_task_cmd", description: "Formatted /work-on-task command" },
519
+ { name: "task_id", description: "Task ID" },
520
+ { name: "task_description", description: "Original task description" },
521
+ {
522
+ name: "completion_instructions",
523
+ description: "Completion instructions (empty for providers without MCP)"
524
+ }
525
+ ],
526
+ category: "task_lifecycle"
527
+ });
528
+ });
529
+
530
+ export { getBasePrompt, init_base_prompt, IDENTITY_FIELD_BUDGETS, checkIdentityFieldBudget, IdentityFieldBudgetError, init_identity_field_budget, init_templates };
@@ -13727,4 +13727,4 @@ var init_external = __esm(() => {
13727
13727
  config(en_default());
13728
13728
  });
13729
13729
 
13730
- export { NEVER, $constructor, $brand, config, clone, exports_util, $ZodError, flattenError, formatError, treeifyError, prettifyError, parse, parseAsync, safeParse, safeParseAsync, exports_regexes, $ZodType, $ZodObject, exports_locales, init_locales, $output, $input, registry, globalRegistry, TimePrecision, _lt, _lte, _gt, _gte, _positive, _negative, _nonpositive, _nonnegative, _multipleOf, _maxSize, _minSize, _size, _maxLength, _minLength, _length, _regex, _lowercase, _uppercase, _includes, _startsWith, _endsWith, _property, _mime, _overwrite, _normalize, _trim, _toLowerCase, _toUpperCase, _slugify, toJSONSchema, init_json_schema_processors, exports_core2 as exports_core, init_core2 as init_core, ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration, exports_iso, ZodError, ZodRealError, parse3 as parse1, parseAsync2 as parseAsync1, safeParse2 as safeParse1, safeParseAsync2 as safeParseAsync1, encode2 as encode, decode2 as decode, encodeAsync2 as encodeAsync, decodeAsync2 as decodeAsync, safeEncode2 as safeEncode, safeDecode2 as safeDecode, safeEncodeAsync2 as safeEncodeAsync, safeDecodeAsync2 as safeDecodeAsync, ZodType, _ZodString, ZodString, string2 as string, ZodStringFormat, ZodEmail, email2 as email, ZodGUID, guid2 as guid, ZodUUID, uuid2 as uuid, uuidv4, uuidv6, uuidv7, ZodURL, url, httpUrl, ZodEmoji, emoji2 as emoji, ZodNanoID, nanoid2 as nanoid, ZodCUID, cuid3 as cuid, ZodCUID2, cuid22 as cuid2, ZodULID, ulid2 as ulid, ZodXID, xid2 as xid, ZodKSUID, ksuid2 as ksuid, ZodIPv4, ipv42 as ipv4, ZodMAC, mac2 as mac, ZodIPv6, ipv62 as ipv6, ZodCIDRv4, cidrv42 as cidrv4, ZodCIDRv6, cidrv62 as cidrv6, ZodBase64, base642 as base64, ZodBase64URL, base64url2 as base64url, ZodE164, e1642 as e164, ZodJWT, jwt, ZodCustomStringFormat, stringFormat, hostname2 as hostname, hex2 as hex, hash, ZodNumber, number2 as number, ZodNumberFormat, int, float32, float64, int32, uint32, ZodBoolean, boolean2 as boolean, ZodBigInt, bigint2 as bigint, ZodBigIntFormat, int64, uint64, ZodSymbol, symbol, ZodUndefined, _undefined3 as _undefined, ZodNull, _null3 as _null, ZodAny, any, ZodUnknown, unknown, ZodNever, never, ZodVoid, _void2 as _void, ZodDate, date3 as date, ZodArray, array, keyof, ZodObject, object, strictObject, looseObject, ZodUnion, union, ZodXor, xor, ZodDiscriminatedUnion, discriminatedUnion, ZodIntersection, intersection, ZodTuple, tuple, ZodRecord, record, partialRecord, looseRecord, ZodMap, map, ZodSet, set, ZodEnum, _enum2 as _enum, nativeEnum, ZodLiteral, literal, ZodFile, file, ZodTransform, transform, ZodOptional, optional, ZodNullable, nullable, nullish2 as nullish, ZodDefault, _default2 as _default, ZodPrefault, prefault, ZodNonOptional, nonoptional, ZodSuccess, success, ZodCatch, _catch2 as _catch, ZodNaN, nan, ZodPipe, pipe, ZodCodec, codec, ZodReadonly, readonly, ZodTemplateLiteral, templateLiteral, ZodLazy, lazy, ZodPromise, promise, ZodFunction, _function, ZodCustom, check, custom, refine, superRefine, describe2 as describe, meta2 as meta, _instanceof, stringbool, json, preprocess, ZodIssueCode, setErrorMap, getErrorMap, ZodFirstPartyTypeKind, fromJSONSchema, exports_coerce, exports_external, init_external };
13730
+ export { NEVER, $constructor, $brand, config, clone, exports_util, flattenError, formatError, treeifyError, prettifyError, parse, parseAsync, safeParse, safeParseAsync, exports_regexes, $ZodType, $ZodObject, exports_locales, init_locales, $output, $input, registry, globalRegistry, TimePrecision, _lt, _lte, _gt, _gte, _positive, _negative, _nonpositive, _nonnegative, _multipleOf, _maxSize, _minSize, _size, _maxLength, _minLength, _length, _regex, _lowercase, _uppercase, _includes, _startsWith, _endsWith, _property, _mime, _overwrite, _normalize, _trim, _toLowerCase, _toUpperCase, _slugify, toJSONSchema, init_json_schema_processors, exports_core2 as exports_core, init_core2 as init_core, ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration, exports_iso, ZodError, ZodRealError, parse3 as parse1, parseAsync2 as parseAsync1, safeParse2 as safeParse1, safeParseAsync2 as safeParseAsync1, encode2 as encode, decode2 as decode, encodeAsync2 as encodeAsync, decodeAsync2 as decodeAsync, safeEncode2 as safeEncode, safeDecode2 as safeDecode, safeEncodeAsync2 as safeEncodeAsync, safeDecodeAsync2 as safeDecodeAsync, ZodType, _ZodString, ZodString, string2 as string, ZodStringFormat, ZodEmail, email2 as email, ZodGUID, guid2 as guid, ZodUUID, uuid2 as uuid, uuidv4, uuidv6, uuidv7, ZodURL, url, httpUrl, ZodEmoji, emoji2 as emoji, ZodNanoID, nanoid2 as nanoid, ZodCUID, cuid3 as cuid, ZodCUID2, cuid22 as cuid2, ZodULID, ulid2 as ulid, ZodXID, xid2 as xid, ZodKSUID, ksuid2 as ksuid, ZodIPv4, ipv42 as ipv4, ZodMAC, mac2 as mac, ZodIPv6, ipv62 as ipv6, ZodCIDRv4, cidrv42 as cidrv4, ZodCIDRv6, cidrv62 as cidrv6, ZodBase64, base642 as base64, ZodBase64URL, base64url2 as base64url, ZodE164, e1642 as e164, ZodJWT, jwt, ZodCustomStringFormat, stringFormat, hostname2 as hostname, hex2 as hex, hash, ZodNumber, number2 as number, ZodNumberFormat, int, float32, float64, int32, uint32, ZodBoolean, boolean2 as boolean, ZodBigInt, bigint2 as bigint, ZodBigIntFormat, int64, uint64, ZodSymbol, symbol, ZodUndefined, _undefined3 as _undefined, ZodNull, _null3 as _null, ZodAny, any, ZodUnknown, unknown, ZodNever, never, ZodVoid, _void2 as _void, ZodDate, date3 as date, ZodArray, array, keyof, ZodObject, object, strictObject, looseObject, ZodUnion, union, ZodXor, xor, ZodDiscriminatedUnion, discriminatedUnion, ZodIntersection, intersection, ZodTuple, tuple, ZodRecord, record, partialRecord, looseRecord, ZodMap, map, ZodSet, set, ZodEnum, _enum2 as _enum, nativeEnum, ZodLiteral, literal, ZodFile, file, ZodTransform, transform, ZodOptional, optional, ZodNullable, nullable, nullish2 as nullish, ZodDefault, _default2 as _default, ZodPrefault, prefault, ZodNonOptional, nonoptional, ZodSuccess, success, ZodCatch, _catch2 as _catch, ZodNaN, nan, ZodPipe, pipe, ZodCodec, codec, ZodReadonly, readonly, ZodTemplateLiteral, templateLiteral, ZodLazy, lazy, ZodPromise, promise, ZodFunction, _function, ZodCustom, check, custom, refine, superRefine, describe2 as describe, meta2 as meta, _instanceof, stringbool, json, preprocess, ZodIssueCode, setErrorMap, getErrorMap, ZodFirstPartyTypeKind, fromJSONSchema, exports_coerce, exports_external, init_external };