agent-relay 3.2.3 → 3.2.4

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 (225) hide show
  1. package/dist/index.cjs +265 -108
  2. package/package.json +11 -10
  3. package/packages/acp-bridge/package.json +2 -2
  4. package/packages/config/package.json +1 -1
  5. package/packages/hooks/package.json +4 -4
  6. package/packages/memory/package.json +2 -2
  7. package/packages/openclaw/package.json +2 -2
  8. package/packages/policy/package.json +2 -2
  9. package/packages/sdk/ADAPTER_REVIEW.md +109 -0
  10. package/packages/sdk/dist/communicate/a2a-bridge.d.ts +25 -0
  11. package/packages/sdk/dist/communicate/a2a-bridge.d.ts.map +1 -0
  12. package/packages/sdk/dist/communicate/a2a-bridge.js +89 -0
  13. package/packages/sdk/dist/communicate/a2a-bridge.js.map +1 -0
  14. package/packages/sdk/dist/communicate/a2a-server.d.ts +31 -0
  15. package/packages/sdk/dist/communicate/a2a-server.d.ts.map +1 -0
  16. package/packages/sdk/dist/communicate/a2a-server.js +220 -0
  17. package/packages/sdk/dist/communicate/a2a-server.js.map +1 -0
  18. package/packages/sdk/dist/communicate/a2a-transport.d.ts +48 -0
  19. package/packages/sdk/dist/communicate/a2a-transport.d.ts.map +1 -0
  20. package/packages/sdk/dist/communicate/a2a-transport.js +302 -0
  21. package/packages/sdk/dist/communicate/a2a-transport.js.map +1 -0
  22. package/packages/sdk/dist/communicate/a2a-types.d.ts +107 -0
  23. package/packages/sdk/dist/communicate/a2a-types.d.ts.map +1 -0
  24. package/packages/sdk/dist/communicate/a2a-types.js +209 -0
  25. package/packages/sdk/dist/communicate/a2a-types.js.map +1 -0
  26. package/packages/sdk/dist/communicate/adapters/claude-sdk.d.ts +28 -0
  27. package/packages/sdk/dist/communicate/adapters/claude-sdk.d.ts.map +1 -0
  28. package/packages/sdk/dist/communicate/adapters/claude-sdk.js +47 -0
  29. package/packages/sdk/dist/communicate/adapters/claude-sdk.js.map +1 -0
  30. package/packages/sdk/dist/communicate/adapters/crewai.d.ts +42 -0
  31. package/packages/sdk/dist/communicate/adapters/crewai.d.ts.map +1 -0
  32. package/packages/sdk/dist/communicate/adapters/crewai.js +95 -0
  33. package/packages/sdk/dist/communicate/adapters/crewai.js.map +1 -0
  34. package/packages/sdk/dist/communicate/adapters/google-adk.d.ts +53 -0
  35. package/packages/sdk/dist/communicate/adapters/google-adk.d.ts.map +1 -0
  36. package/packages/sdk/dist/communicate/adapters/google-adk.js +77 -0
  37. package/packages/sdk/dist/communicate/adapters/google-adk.js.map +1 -0
  38. package/packages/sdk/dist/communicate/adapters/index.d.ts +7 -0
  39. package/packages/sdk/dist/communicate/adapters/index.d.ts.map +1 -0
  40. package/packages/sdk/dist/communicate/adapters/index.js +7 -0
  41. package/packages/sdk/dist/communicate/adapters/index.js.map +1 -0
  42. package/packages/sdk/dist/communicate/adapters/langgraph.d.ts +40 -0
  43. package/packages/sdk/dist/communicate/adapters/langgraph.d.ts.map +1 -0
  44. package/packages/sdk/dist/communicate/adapters/langgraph.js +77 -0
  45. package/packages/sdk/dist/communicate/adapters/langgraph.js.map +1 -0
  46. package/packages/sdk/dist/communicate/adapters/openai-agents.d.ts +25 -0
  47. package/packages/sdk/dist/communicate/adapters/openai-agents.d.ts.map +1 -0
  48. package/packages/sdk/dist/communicate/adapters/openai-agents.js +70 -0
  49. package/packages/sdk/dist/communicate/adapters/openai-agents.js.map +1 -0
  50. package/packages/sdk/dist/communicate/adapters/pi.d.ts +45 -0
  51. package/packages/sdk/dist/communicate/adapters/pi.d.ts.map +1 -0
  52. package/packages/sdk/dist/communicate/adapters/pi.js +59 -0
  53. package/packages/sdk/dist/communicate/adapters/pi.js.map +1 -0
  54. package/packages/sdk/dist/communicate/core.d.ts +58 -0
  55. package/packages/sdk/dist/communicate/core.d.ts.map +1 -0
  56. package/packages/sdk/dist/communicate/core.js +128 -0
  57. package/packages/sdk/dist/communicate/core.js.map +1 -0
  58. package/packages/sdk/dist/communicate/index.d.ts +4 -0
  59. package/packages/sdk/dist/communicate/index.d.ts.map +1 -0
  60. package/packages/sdk/dist/communicate/index.js +4 -0
  61. package/packages/sdk/dist/communicate/index.js.map +1 -0
  62. package/packages/sdk/dist/communicate/transport.d.ts +36 -0
  63. package/packages/sdk/dist/communicate/transport.d.ts.map +1 -0
  64. package/packages/sdk/dist/communicate/transport.js +371 -0
  65. package/packages/sdk/dist/communicate/transport.js.map +1 -0
  66. package/packages/sdk/dist/communicate/types.d.ts +58 -0
  67. package/packages/sdk/dist/communicate/types.d.ts.map +1 -0
  68. package/packages/sdk/dist/communicate/types.js +66 -0
  69. package/packages/sdk/dist/communicate/types.js.map +1 -0
  70. package/packages/sdk/dist/workflows/builder.d.ts +35 -5
  71. package/packages/sdk/dist/workflows/builder.d.ts.map +1 -1
  72. package/packages/sdk/dist/workflows/builder.js +81 -7
  73. package/packages/sdk/dist/workflows/builder.js.map +1 -1
  74. package/packages/sdk/dist/workflows/cli.js +14 -1
  75. package/packages/sdk/dist/workflows/cli.js.map +1 -1
  76. package/packages/sdk/dist/workflows/runner.d.ts +10 -2
  77. package/packages/sdk/dist/workflows/runner.d.ts.map +1 -1
  78. package/packages/sdk/dist/workflows/runner.js +95 -1
  79. package/packages/sdk/dist/workflows/runner.js.map +1 -1
  80. package/packages/sdk/dist/workflows/types.d.ts +11 -0
  81. package/packages/sdk/dist/workflows/types.d.ts.map +1 -1
  82. package/packages/sdk/examples/communicate/claude_sdk_example.ts +5 -0
  83. package/packages/sdk/examples/communicate/pi_example.ts +8 -0
  84. package/packages/sdk/package.json +48 -2
  85. package/packages/sdk/src/__tests__/builder-deterministic.test.ts +132 -0
  86. package/packages/sdk/src/__tests__/communicate/a2a-bridge.test.ts +211 -0
  87. package/packages/sdk/src/__tests__/communicate/a2a-server.test.ts +359 -0
  88. package/packages/sdk/src/__tests__/communicate/a2a-transport.test.ts +537 -0
  89. package/packages/sdk/src/__tests__/communicate/a2a-types.test.ts +297 -0
  90. package/packages/sdk/src/__tests__/communicate/adapters/claude-sdk.test.ts +163 -0
  91. package/packages/sdk/src/__tests__/communicate/adapters/crewai.test.ts +219 -0
  92. package/packages/sdk/src/__tests__/communicate/adapters/e2e-crewai.test.ts +101 -0
  93. package/packages/sdk/src/__tests__/communicate/adapters/e2e-google-adk.test.ts +166 -0
  94. package/packages/sdk/src/__tests__/communicate/adapters/e2e-langgraph.test.ts +181 -0
  95. package/packages/sdk/src/__tests__/communicate/adapters/e2e-openai-agents.test.ts +137 -0
  96. package/packages/sdk/src/__tests__/communicate/adapters/e2e-pi.test.ts +140 -0
  97. package/packages/sdk/src/__tests__/communicate/adapters/google-adk.test.ts +200 -0
  98. package/packages/sdk/src/__tests__/communicate/adapters/langgraph.test.ts +162 -0
  99. package/packages/sdk/src/__tests__/communicate/adapters/openai-agents.test.ts +166 -0
  100. package/packages/sdk/src/__tests__/communicate/adapters/pi.test.ts +140 -0
  101. package/packages/sdk/src/__tests__/communicate/core.test.ts +574 -0
  102. package/packages/sdk/src/__tests__/communicate/integration/cross-framework.test.ts +353 -0
  103. package/packages/sdk/src/__tests__/communicate/transport.test.ts +613 -0
  104. package/packages/sdk/src/__tests__/start-from.test.ts +346 -0
  105. package/packages/sdk/src/communicate/a2a-bridge.ts +111 -0
  106. package/packages/sdk/src/communicate/a2a-server.ts +277 -0
  107. package/packages/sdk/src/communicate/a2a-transport.ts +395 -0
  108. package/packages/sdk/src/communicate/a2a-types.ts +338 -0
  109. package/packages/sdk/src/communicate/adapters/claude-sdk.ts +85 -0
  110. package/packages/sdk/src/communicate/adapters/crewai.ts +141 -0
  111. package/packages/sdk/src/communicate/adapters/google-adk.ts +139 -0
  112. package/packages/sdk/src/communicate/adapters/index.ts +6 -0
  113. package/packages/sdk/src/communicate/adapters/langgraph.ts +112 -0
  114. package/packages/sdk/src/communicate/adapters/openai-agents.ts +113 -0
  115. package/packages/sdk/src/communicate/adapters/pi.ts +105 -0
  116. package/packages/sdk/src/communicate/core.ts +157 -0
  117. package/packages/sdk/src/communicate/index.ts +3 -0
  118. package/packages/sdk/src/communicate/transport.ts +489 -0
  119. package/packages/sdk/src/communicate/types.ts +106 -0
  120. package/packages/sdk/src/examples/workflows/fix-dashboard-user-registration.yaml +182 -0
  121. package/packages/sdk/src/workflows/builder.ts +97 -9
  122. package/packages/sdk/src/workflows/cli.ts +16 -1
  123. package/packages/sdk/src/workflows/runner.ts +110 -1
  124. package/packages/sdk/src/workflows/types.ts +14 -0
  125. package/packages/sdk/tsconfig.build.json +1 -7
  126. package/packages/sdk/tsconfig.json +1 -7
  127. package/packages/sdk-py/README.md +67 -25
  128. package/packages/sdk-py/examples/communicate/agno_example.py +8 -0
  129. package/packages/sdk-py/examples/communicate/claude_sdk_example.py +6 -0
  130. package/packages/sdk-py/examples/communicate/crewai_example.py +7 -0
  131. package/packages/sdk-py/examples/communicate/google_adk_example.py +7 -0
  132. package/packages/sdk-py/examples/communicate/openai_agents_example.py +8 -0
  133. package/packages/sdk-py/examples/communicate/swarms_example.py +7 -0
  134. package/packages/sdk-py/pyproject.toml +12 -1
  135. package/packages/sdk-py/src/agent_relay/__init__.py +8 -0
  136. package/packages/sdk-py/src/agent_relay/builder.py +65 -26
  137. package/packages/sdk-py/src/agent_relay/communicate/__init__.py +6 -0
  138. package/packages/sdk-py/src/agent_relay/communicate/a2a_bridge.py +138 -0
  139. package/packages/sdk-py/src/agent_relay/communicate/a2a_server.py +242 -0
  140. package/packages/sdk-py/src/agent_relay/communicate/a2a_transport.py +366 -0
  141. package/packages/sdk-py/src/agent_relay/communicate/a2a_types.py +294 -0
  142. package/packages/sdk-py/src/agent_relay/communicate/adapters/__init__.py +10 -0
  143. package/packages/sdk-py/src/agent_relay/communicate/adapters/agno.py +74 -0
  144. package/packages/sdk-py/src/agent_relay/communicate/adapters/claude_sdk.py +78 -0
  145. package/packages/sdk-py/src/agent_relay/communicate/adapters/crewai.py +143 -0
  146. package/packages/sdk-py/src/agent_relay/communicate/adapters/google_adk.py +69 -0
  147. package/packages/sdk-py/src/agent_relay/communicate/adapters/openai_agents.py +86 -0
  148. package/packages/sdk-py/src/agent_relay/communicate/adapters/pi.py +175 -0
  149. package/packages/sdk-py/src/agent_relay/communicate/adapters/swarms.py +44 -0
  150. package/packages/sdk-py/src/agent_relay/communicate/core.py +293 -0
  151. package/packages/sdk-py/src/agent_relay/communicate/transport.py +502 -0
  152. package/packages/sdk-py/src/agent_relay/communicate/types.py +89 -0
  153. package/packages/sdk-py/src/agent_relay/types.py +2 -1
  154. package/packages/sdk-py/tests/communicate/__init__.py +0 -0
  155. package/packages/sdk-py/tests/communicate/adapters/__init__.py +0 -0
  156. package/packages/sdk-py/tests/communicate/adapters/e2e_test_agno.py +154 -0
  157. package/packages/sdk-py/tests/communicate/adapters/e2e_test_claude_sdk.py +428 -0
  158. package/packages/sdk-py/tests/communicate/adapters/e2e_test_crewai.py +234 -0
  159. package/packages/sdk-py/tests/communicate/adapters/e2e_test_google_adk.py +182 -0
  160. package/packages/sdk-py/tests/communicate/adapters/e2e_test_langgraph.py +262 -0
  161. package/packages/sdk-py/tests/communicate/adapters/e2e_test_openai_agents.py +88 -0
  162. package/packages/sdk-py/tests/communicate/adapters/e2e_test_pi.py +156 -0
  163. package/packages/sdk-py/tests/communicate/adapters/e2e_test_swarms.py +239 -0
  164. package/packages/sdk-py/tests/communicate/adapters/test_agno.py +140 -0
  165. package/packages/sdk-py/tests/communicate/adapters/test_claude_sdk.py +147 -0
  166. package/packages/sdk-py/tests/communicate/adapters/test_crewai.py +136 -0
  167. package/packages/sdk-py/tests/communicate/adapters/test_google_adk.py +125 -0
  168. package/packages/sdk-py/tests/communicate/adapters/test_openai_agents.py +99 -0
  169. package/packages/sdk-py/tests/communicate/adapters/test_pi.py +270 -0
  170. package/packages/sdk-py/tests/communicate/adapters/test_swarms.py +113 -0
  171. package/packages/sdk-py/tests/communicate/conftest.py +555 -0
  172. package/packages/sdk-py/tests/communicate/integration/__init__.py +1 -0
  173. package/packages/sdk-py/tests/communicate/integration/test_cross_framework.py +331 -0
  174. package/packages/sdk-py/tests/communicate/integration/test_end_to_end.py +151 -0
  175. package/packages/sdk-py/tests/communicate/test_a2a_bridge.py +363 -0
  176. package/packages/sdk-py/tests/communicate/test_a2a_server.py +346 -0
  177. package/packages/sdk-py/tests/communicate/test_a2a_transport.py +561 -0
  178. package/packages/sdk-py/tests/communicate/test_a2a_types.py +342 -0
  179. package/packages/sdk-py/tests/communicate/test_auto_detect.py +67 -0
  180. package/packages/sdk-py/tests/communicate/test_core.py +331 -0
  181. package/packages/sdk-py/tests/communicate/test_transport.py +373 -0
  182. package/packages/sdk-py/tests/communicate/test_types.py +285 -0
  183. package/packages/sdk-py/tests/test_builder_deterministic.py +118 -0
  184. package/packages/telemetry/package.json +1 -1
  185. package/packages/trajectory/package.json +2 -2
  186. package/packages/user-directory/package.json +2 -2
  187. package/packages/utils/package.json +2 -2
  188. package/packages/sdk/dist/__tests__/completion-pipeline.test.d.ts +0 -14
  189. package/packages/sdk/dist/__tests__/completion-pipeline.test.d.ts.map +0 -1
  190. package/packages/sdk/dist/__tests__/completion-pipeline.test.js +0 -1476
  191. package/packages/sdk/dist/__tests__/completion-pipeline.test.js.map +0 -1
  192. package/packages/sdk/dist/__tests__/contract-fixtures.test.d.ts +0 -2
  193. package/packages/sdk/dist/__tests__/contract-fixtures.test.d.ts.map +0 -1
  194. package/packages/sdk/dist/__tests__/contract-fixtures.test.js +0 -152
  195. package/packages/sdk/dist/__tests__/contract-fixtures.test.js.map +0 -1
  196. package/packages/sdk/dist/__tests__/e2e-owner-review.test.d.ts +0 -16
  197. package/packages/sdk/dist/__tests__/e2e-owner-review.test.d.ts.map +0 -1
  198. package/packages/sdk/dist/__tests__/e2e-owner-review.test.js +0 -640
  199. package/packages/sdk/dist/__tests__/e2e-owner-review.test.js.map +0 -1
  200. package/packages/sdk/dist/__tests__/facade.test.d.ts +0 -2
  201. package/packages/sdk/dist/__tests__/facade.test.d.ts.map +0 -1
  202. package/packages/sdk/dist/__tests__/facade.test.js +0 -305
  203. package/packages/sdk/dist/__tests__/facade.test.js.map +0 -1
  204. package/packages/sdk/dist/__tests__/integration.test.d.ts +0 -2
  205. package/packages/sdk/dist/__tests__/integration.test.d.ts.map +0 -1
  206. package/packages/sdk/dist/__tests__/integration.test.js +0 -205
  207. package/packages/sdk/dist/__tests__/integration.test.js.map +0 -1
  208. package/packages/sdk/dist/__tests__/pty.test.d.ts +0 -2
  209. package/packages/sdk/dist/__tests__/pty.test.d.ts.map +0 -1
  210. package/packages/sdk/dist/__tests__/pty.test.js +0 -20
  211. package/packages/sdk/dist/__tests__/pty.test.js.map +0 -1
  212. package/packages/sdk/dist/__tests__/quickstart.test.d.ts +0 -2
  213. package/packages/sdk/dist/__tests__/quickstart.test.d.ts.map +0 -1
  214. package/packages/sdk/dist/__tests__/quickstart.test.js +0 -176
  215. package/packages/sdk/dist/__tests__/quickstart.test.js.map +0 -1
  216. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts +0 -2
  217. package/packages/sdk/dist/__tests__/spawn-from-env.test.d.ts.map +0 -1
  218. package/packages/sdk/dist/__tests__/spawn-from-env.test.js +0 -222
  219. package/packages/sdk/dist/__tests__/spawn-from-env.test.js.map +0 -1
  220. package/packages/sdk/dist/__tests__/unit.test.d.ts +0 -2
  221. package/packages/sdk/dist/__tests__/unit.test.d.ts.map +0 -1
  222. package/packages/sdk/dist/__tests__/unit.test.js +0 -357
  223. package/packages/sdk/dist/__tests__/unit.test.js.map +0 -1
  224. package/packages/sdk-py/agent_relay/__init__.py +0 -21
  225. package/packages/sdk-py/agent_relay/models.py +0 -398
package/dist/index.cjs CHANGED
@@ -15849,10 +15849,10 @@ var HttpAgentRelayClient = class _HttpAgentRelayClient {
15849
15849
  }
15850
15850
  };
15851
15851
 
15852
- // node_modules/@relaycast/sdk/dist/version.js
15852
+ // packages/sdk/node_modules/@relaycast/sdk/dist/version.js
15853
15853
  var SDK_VERSION = "0.4.2";
15854
15854
 
15855
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/external.js
15855
+ // packages/sdk/node_modules/zod/v4/classic/external.js
15856
15856
  var external_exports2 = {};
15857
15857
  __export(external_exports2, {
15858
15858
  $brand: () => $brand,
@@ -16093,7 +16093,7 @@ __export(external_exports2, {
16093
16093
  xor: () => xor
16094
16094
  });
16095
16095
 
16096
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/index.js
16096
+ // packages/sdk/node_modules/zod/v4/core/index.js
16097
16097
  var core_exports2 = {};
16098
16098
  __export(core_exports2, {
16099
16099
  $ZodAny: () => $ZodAny,
@@ -16371,7 +16371,7 @@ __export(core_exports2, {
16371
16371
  version: () => version
16372
16372
  });
16373
16373
 
16374
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/core.js
16374
+ // packages/sdk/node_modules/zod/v4/core/core.js
16375
16375
  var NEVER2 = Object.freeze({
16376
16376
  status: "aborted"
16377
16377
  });
@@ -16446,7 +16446,7 @@ function config(newConfig) {
16446
16446
  return globalConfig;
16447
16447
  }
16448
16448
 
16449
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/util.js
16449
+ // packages/sdk/node_modules/zod/v4/core/util.js
16450
16450
  var util_exports = {};
16451
16451
  __export(util_exports, {
16452
16452
  BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES,
@@ -17125,7 +17125,7 @@ var Class = class {
17125
17125
  }
17126
17126
  };
17127
17127
 
17128
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/errors.js
17128
+ // packages/sdk/node_modules/zod/v4/core/errors.js
17129
17129
  var initializer = (inst, def) => {
17130
17130
  inst.name = "$ZodError";
17131
17131
  Object.defineProperty(inst, "_zod", {
@@ -17261,7 +17261,7 @@ function prettifyError(error48) {
17261
17261
  return lines.join("\n");
17262
17262
  }
17263
17263
 
17264
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/parse.js
17264
+ // packages/sdk/node_modules/zod/v4/core/parse.js
17265
17265
  var _parse = (_Err) => (schema, value, _ctx, _params) => {
17266
17266
  const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
17267
17267
  const result = schema._zod.run({ value, issues: [] }, ctx);
@@ -17349,7 +17349,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
17349
17349
  };
17350
17350
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
17351
17351
 
17352
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/regexes.js
17352
+ // packages/sdk/node_modules/zod/v4/core/regexes.js
17353
17353
  var regexes_exports = {};
17354
17354
  __export(regexes_exports, {
17355
17355
  base64: () => base64,
@@ -17506,7 +17506,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
17506
17506
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
17507
17507
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
17508
17508
 
17509
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/checks.js
17509
+ // packages/sdk/node_modules/zod/v4/core/checks.js
17510
17510
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
17511
17511
  var _a2;
17512
17512
  inst._zod ?? (inst._zod = {});
@@ -18054,7 +18054,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
18054
18054
  };
18055
18055
  });
18056
18056
 
18057
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/doc.js
18057
+ // packages/sdk/node_modules/zod/v4/core/doc.js
18058
18058
  var Doc = class {
18059
18059
  constructor(args = []) {
18060
18060
  this.content = [];
@@ -18090,14 +18090,14 @@ var Doc = class {
18090
18090
  }
18091
18091
  };
18092
18092
 
18093
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/versions.js
18093
+ // packages/sdk/node_modules/zod/v4/core/versions.js
18094
18094
  var version = {
18095
18095
  major: 4,
18096
18096
  minor: 3,
18097
18097
  patch: 6
18098
18098
  };
18099
18099
 
18100
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/schemas.js
18100
+ // packages/sdk/node_modules/zod/v4/core/schemas.js
18101
18101
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
18102
18102
  var _a2;
18103
18103
  inst ?? (inst = {});
@@ -20068,7 +20068,7 @@ function handleRefineResult(result, payload, input, inst) {
20068
20068
  }
20069
20069
  }
20070
20070
 
20071
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/index.js
20071
+ // packages/sdk/node_modules/zod/v4/locales/index.js
20072
20072
  var locales_exports = {};
20073
20073
  __export(locales_exports, {
20074
20074
  ar: () => ar_default,
@@ -20122,7 +20122,7 @@ __export(locales_exports, {
20122
20122
  zhTW: () => zh_TW_default
20123
20123
  });
20124
20124
 
20125
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ar.js
20125
+ // packages/sdk/node_modules/zod/v4/locales/ar.js
20126
20126
  var error = () => {
20127
20127
  const Sizable = {
20128
20128
  string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" },
@@ -20229,7 +20229,7 @@ function ar_default() {
20229
20229
  };
20230
20230
  }
20231
20231
 
20232
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/az.js
20232
+ // packages/sdk/node_modules/zod/v4/locales/az.js
20233
20233
  var error2 = () => {
20234
20234
  const Sizable = {
20235
20235
  string: { unit: "simvol", verb: "olmal\u0131d\u0131r" },
@@ -20335,7 +20335,7 @@ function az_default() {
20335
20335
  };
20336
20336
  }
20337
20337
 
20338
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/be.js
20338
+ // packages/sdk/node_modules/zod/v4/locales/be.js
20339
20339
  function getBelarusianPlural(count, one, few, many) {
20340
20340
  const absCount = Math.abs(count);
20341
20341
  const lastDigit = absCount % 10;
@@ -20492,7 +20492,7 @@ function be_default() {
20492
20492
  };
20493
20493
  }
20494
20494
 
20495
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/bg.js
20495
+ // packages/sdk/node_modules/zod/v4/locales/bg.js
20496
20496
  var error4 = () => {
20497
20497
  const Sizable = {
20498
20498
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" },
@@ -20613,7 +20613,7 @@ function bg_default() {
20613
20613
  };
20614
20614
  }
20615
20615
 
20616
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ca.js
20616
+ // packages/sdk/node_modules/zod/v4/locales/ca.js
20617
20617
  var error5 = () => {
20618
20618
  const Sizable = {
20619
20619
  string: { unit: "car\xE0cters", verb: "contenir" },
@@ -20722,7 +20722,7 @@ function ca_default() {
20722
20722
  };
20723
20723
  }
20724
20724
 
20725
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/cs.js
20725
+ // packages/sdk/node_modules/zod/v4/locales/cs.js
20726
20726
  var error6 = () => {
20727
20727
  const Sizable = {
20728
20728
  string: { unit: "znak\u016F", verb: "m\xEDt" },
@@ -20834,7 +20834,7 @@ function cs_default() {
20834
20834
  };
20835
20835
  }
20836
20836
 
20837
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/da.js
20837
+ // packages/sdk/node_modules/zod/v4/locales/da.js
20838
20838
  var error7 = () => {
20839
20839
  const Sizable = {
20840
20840
  string: { unit: "tegn", verb: "havde" },
@@ -20950,7 +20950,7 @@ function da_default() {
20950
20950
  };
20951
20951
  }
20952
20952
 
20953
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/de.js
20953
+ // packages/sdk/node_modules/zod/v4/locales/de.js
20954
20954
  var error8 = () => {
20955
20955
  const Sizable = {
20956
20956
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -21059,7 +21059,7 @@ function de_default() {
21059
21059
  };
21060
21060
  }
21061
21061
 
21062
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/en.js
21062
+ // packages/sdk/node_modules/zod/v4/locales/en.js
21063
21063
  var error9 = () => {
21064
21064
  const Sizable = {
21065
21065
  string: { unit: "characters", verb: "to have" },
@@ -21168,7 +21168,7 @@ function en_default2() {
21168
21168
  };
21169
21169
  }
21170
21170
 
21171
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/eo.js
21171
+ // packages/sdk/node_modules/zod/v4/locales/eo.js
21172
21172
  var error10 = () => {
21173
21173
  const Sizable = {
21174
21174
  string: { unit: "karaktrojn", verb: "havi" },
@@ -21278,7 +21278,7 @@ function eo_default() {
21278
21278
  };
21279
21279
  }
21280
21280
 
21281
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/es.js
21281
+ // packages/sdk/node_modules/zod/v4/locales/es.js
21282
21282
  var error11 = () => {
21283
21283
  const Sizable = {
21284
21284
  string: { unit: "caracteres", verb: "tener" },
@@ -21411,7 +21411,7 @@ function es_default() {
21411
21411
  };
21412
21412
  }
21413
21413
 
21414
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/fa.js
21414
+ // packages/sdk/node_modules/zod/v4/locales/fa.js
21415
21415
  var error12 = () => {
21416
21416
  const Sizable = {
21417
21417
  string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" },
@@ -21526,7 +21526,7 @@ function fa_default() {
21526
21526
  };
21527
21527
  }
21528
21528
 
21529
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/fi.js
21529
+ // packages/sdk/node_modules/zod/v4/locales/fi.js
21530
21530
  var error13 = () => {
21531
21531
  const Sizable = {
21532
21532
  string: { unit: "merkki\xE4", subject: "merkkijonon" },
@@ -21639,7 +21639,7 @@ function fi_default() {
21639
21639
  };
21640
21640
  }
21641
21641
 
21642
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/fr.js
21642
+ // packages/sdk/node_modules/zod/v4/locales/fr.js
21643
21643
  var error14 = () => {
21644
21644
  const Sizable = {
21645
21645
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -21748,7 +21748,7 @@ function fr_default() {
21748
21748
  };
21749
21749
  }
21750
21750
 
21751
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/fr-CA.js
21751
+ // packages/sdk/node_modules/zod/v4/locales/fr-CA.js
21752
21752
  var error15 = () => {
21753
21753
  const Sizable = {
21754
21754
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -21856,7 +21856,7 @@ function fr_CA_default() {
21856
21856
  };
21857
21857
  }
21858
21858
 
21859
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/he.js
21859
+ // packages/sdk/node_modules/zod/v4/locales/he.js
21860
21860
  var error16 = () => {
21861
21861
  const TypeNames = {
21862
21862
  string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" },
@@ -22051,7 +22051,7 @@ function he_default() {
22051
22051
  };
22052
22052
  }
22053
22053
 
22054
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/hu.js
22054
+ // packages/sdk/node_modules/zod/v4/locales/hu.js
22055
22055
  var error17 = () => {
22056
22056
  const Sizable = {
22057
22057
  string: { unit: "karakter", verb: "legyen" },
@@ -22160,7 +22160,7 @@ function hu_default() {
22160
22160
  };
22161
22161
  }
22162
22162
 
22163
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/hy.js
22163
+ // packages/sdk/node_modules/zod/v4/locales/hy.js
22164
22164
  function getArmenianPlural(count, one, many) {
22165
22165
  return Math.abs(count) === 1 ? one : many;
22166
22166
  }
@@ -22308,7 +22308,7 @@ function hy_default() {
22308
22308
  };
22309
22309
  }
22310
22310
 
22311
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/id.js
22311
+ // packages/sdk/node_modules/zod/v4/locales/id.js
22312
22312
  var error19 = () => {
22313
22313
  const Sizable = {
22314
22314
  string: { unit: "karakter", verb: "memiliki" },
@@ -22415,7 +22415,7 @@ function id_default() {
22415
22415
  };
22416
22416
  }
22417
22417
 
22418
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/is.js
22418
+ // packages/sdk/node_modules/zod/v4/locales/is.js
22419
22419
  var error20 = () => {
22420
22420
  const Sizable = {
22421
22421
  string: { unit: "stafi", verb: "a\xF0 hafa" },
@@ -22525,7 +22525,7 @@ function is_default() {
22525
22525
  };
22526
22526
  }
22527
22527
 
22528
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/it.js
22528
+ // packages/sdk/node_modules/zod/v4/locales/it.js
22529
22529
  var error21 = () => {
22530
22530
  const Sizable = {
22531
22531
  string: { unit: "caratteri", verb: "avere" },
@@ -22634,7 +22634,7 @@ function it_default() {
22634
22634
  };
22635
22635
  }
22636
22636
 
22637
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ja.js
22637
+ // packages/sdk/node_modules/zod/v4/locales/ja.js
22638
22638
  var error22 = () => {
22639
22639
  const Sizable = {
22640
22640
  string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" },
@@ -22742,7 +22742,7 @@ function ja_default() {
22742
22742
  };
22743
22743
  }
22744
22744
 
22745
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ka.js
22745
+ // packages/sdk/node_modules/zod/v4/locales/ka.js
22746
22746
  var error23 = () => {
22747
22747
  const Sizable = {
22748
22748
  string: { unit: "\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" },
@@ -22855,7 +22855,7 @@ function ka_default() {
22855
22855
  };
22856
22856
  }
22857
22857
 
22858
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/km.js
22858
+ // packages/sdk/node_modules/zod/v4/locales/km.js
22859
22859
  var error24 = () => {
22860
22860
  const Sizable = {
22861
22861
  string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" },
@@ -22966,12 +22966,12 @@ function km_default() {
22966
22966
  };
22967
22967
  }
22968
22968
 
22969
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/kh.js
22969
+ // packages/sdk/node_modules/zod/v4/locales/kh.js
22970
22970
  function kh_default() {
22971
22971
  return km_default();
22972
22972
  }
22973
22973
 
22974
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ko.js
22974
+ // packages/sdk/node_modules/zod/v4/locales/ko.js
22975
22975
  var error25 = () => {
22976
22976
  const Sizable = {
22977
22977
  string: { unit: "\uBB38\uC790", verb: "to have" },
@@ -23083,7 +23083,7 @@ function ko_default() {
23083
23083
  };
23084
23084
  }
23085
23085
 
23086
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/lt.js
23086
+ // packages/sdk/node_modules/zod/v4/locales/lt.js
23087
23087
  var capitalizeFirstCharacter = (text) => {
23088
23088
  return text.charAt(0).toUpperCase() + text.slice(1);
23089
23089
  };
@@ -23287,7 +23287,7 @@ function lt_default() {
23287
23287
  };
23288
23288
  }
23289
23289
 
23290
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/mk.js
23290
+ // packages/sdk/node_modules/zod/v4/locales/mk.js
23291
23291
  var error27 = () => {
23292
23292
  const Sizable = {
23293
23293
  string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" },
@@ -23397,7 +23397,7 @@ function mk_default() {
23397
23397
  };
23398
23398
  }
23399
23399
 
23400
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ms.js
23400
+ // packages/sdk/node_modules/zod/v4/locales/ms.js
23401
23401
  var error28 = () => {
23402
23402
  const Sizable = {
23403
23403
  string: { unit: "aksara", verb: "mempunyai" },
@@ -23505,7 +23505,7 @@ function ms_default() {
23505
23505
  };
23506
23506
  }
23507
23507
 
23508
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/nl.js
23508
+ // packages/sdk/node_modules/zod/v4/locales/nl.js
23509
23509
  var error29 = () => {
23510
23510
  const Sizable = {
23511
23511
  string: { unit: "tekens", verb: "heeft" },
@@ -23616,7 +23616,7 @@ function nl_default() {
23616
23616
  };
23617
23617
  }
23618
23618
 
23619
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/no.js
23619
+ // packages/sdk/node_modules/zod/v4/locales/no.js
23620
23620
  var error30 = () => {
23621
23621
  const Sizable = {
23622
23622
  string: { unit: "tegn", verb: "\xE5 ha" },
@@ -23725,7 +23725,7 @@ function no_default() {
23725
23725
  };
23726
23726
  }
23727
23727
 
23728
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ota.js
23728
+ // packages/sdk/node_modules/zod/v4/locales/ota.js
23729
23729
  var error31 = () => {
23730
23730
  const Sizable = {
23731
23731
  string: { unit: "harf", verb: "olmal\u0131d\u0131r" },
@@ -23835,7 +23835,7 @@ function ota_default() {
23835
23835
  };
23836
23836
  }
23837
23837
 
23838
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ps.js
23838
+ // packages/sdk/node_modules/zod/v4/locales/ps.js
23839
23839
  var error32 = () => {
23840
23840
  const Sizable = {
23841
23841
  string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" },
@@ -23950,7 +23950,7 @@ function ps_default() {
23950
23950
  };
23951
23951
  }
23952
23952
 
23953
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/pl.js
23953
+ // packages/sdk/node_modules/zod/v4/locales/pl.js
23954
23954
  var error33 = () => {
23955
23955
  const Sizable = {
23956
23956
  string: { unit: "znak\xF3w", verb: "mie\u0107" },
@@ -24060,7 +24060,7 @@ function pl_default() {
24060
24060
  };
24061
24061
  }
24062
24062
 
24063
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/pt.js
24063
+ // packages/sdk/node_modules/zod/v4/locales/pt.js
24064
24064
  var error34 = () => {
24065
24065
  const Sizable = {
24066
24066
  string: { unit: "caracteres", verb: "ter" },
@@ -24169,7 +24169,7 @@ function pt_default() {
24169
24169
  };
24170
24170
  }
24171
24171
 
24172
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ru.js
24172
+ // packages/sdk/node_modules/zod/v4/locales/ru.js
24173
24173
  function getRussianPlural(count, one, few, many) {
24174
24174
  const absCount = Math.abs(count);
24175
24175
  const lastDigit = absCount % 10;
@@ -24326,7 +24326,7 @@ function ru_default() {
24326
24326
  };
24327
24327
  }
24328
24328
 
24329
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/sl.js
24329
+ // packages/sdk/node_modules/zod/v4/locales/sl.js
24330
24330
  var error36 = () => {
24331
24331
  const Sizable = {
24332
24332
  string: { unit: "znakov", verb: "imeti" },
@@ -24436,7 +24436,7 @@ function sl_default() {
24436
24436
  };
24437
24437
  }
24438
24438
 
24439
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/sv.js
24439
+ // packages/sdk/node_modules/zod/v4/locales/sv.js
24440
24440
  var error37 = () => {
24441
24441
  const Sizable = {
24442
24442
  string: { unit: "tecken", verb: "att ha" },
@@ -24547,7 +24547,7 @@ function sv_default() {
24547
24547
  };
24548
24548
  }
24549
24549
 
24550
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ta.js
24550
+ // packages/sdk/node_modules/zod/v4/locales/ta.js
24551
24551
  var error38 = () => {
24552
24552
  const Sizable = {
24553
24553
  string: { unit: "\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" },
@@ -24658,7 +24658,7 @@ function ta_default() {
24658
24658
  };
24659
24659
  }
24660
24660
 
24661
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/th.js
24661
+ // packages/sdk/node_modules/zod/v4/locales/th.js
24662
24662
  var error39 = () => {
24663
24663
  const Sizable = {
24664
24664
  string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" },
@@ -24769,7 +24769,7 @@ function th_default() {
24769
24769
  };
24770
24770
  }
24771
24771
 
24772
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/tr.js
24772
+ // packages/sdk/node_modules/zod/v4/locales/tr.js
24773
24773
  var error40 = () => {
24774
24774
  const Sizable = {
24775
24775
  string: { unit: "karakter", verb: "olmal\u0131" },
@@ -24875,7 +24875,7 @@ function tr_default() {
24875
24875
  };
24876
24876
  }
24877
24877
 
24878
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/uk.js
24878
+ // packages/sdk/node_modules/zod/v4/locales/uk.js
24879
24879
  var error41 = () => {
24880
24880
  const Sizable = {
24881
24881
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" },
@@ -24984,12 +24984,12 @@ function uk_default() {
24984
24984
  };
24985
24985
  }
24986
24986
 
24987
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ua.js
24987
+ // packages/sdk/node_modules/zod/v4/locales/ua.js
24988
24988
  function ua_default() {
24989
24989
  return uk_default();
24990
24990
  }
24991
24991
 
24992
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ur.js
24992
+ // packages/sdk/node_modules/zod/v4/locales/ur.js
24993
24993
  var error42 = () => {
24994
24994
  const Sizable = {
24995
24995
  string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" },
@@ -25100,7 +25100,7 @@ function ur_default() {
25100
25100
  };
25101
25101
  }
25102
25102
 
25103
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/uz.js
25103
+ // packages/sdk/node_modules/zod/v4/locales/uz.js
25104
25104
  var error43 = () => {
25105
25105
  const Sizable = {
25106
25106
  string: { unit: "belgi", verb: "bo\u2018lishi kerak" },
@@ -25210,7 +25210,7 @@ function uz_default() {
25210
25210
  };
25211
25211
  }
25212
25212
 
25213
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/vi.js
25213
+ // packages/sdk/node_modules/zod/v4/locales/vi.js
25214
25214
  var error44 = () => {
25215
25215
  const Sizable = {
25216
25216
  string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" },
@@ -25319,7 +25319,7 @@ function vi_default() {
25319
25319
  };
25320
25320
  }
25321
25321
 
25322
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/zh-CN.js
25322
+ // packages/sdk/node_modules/zod/v4/locales/zh-CN.js
25323
25323
  var error45 = () => {
25324
25324
  const Sizable = {
25325
25325
  string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" },
@@ -25429,7 +25429,7 @@ function zh_CN_default() {
25429
25429
  };
25430
25430
  }
25431
25431
 
25432
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/zh-TW.js
25432
+ // packages/sdk/node_modules/zod/v4/locales/zh-TW.js
25433
25433
  var error46 = () => {
25434
25434
  const Sizable = {
25435
25435
  string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" },
@@ -25537,7 +25537,7 @@ function zh_TW_default() {
25537
25537
  };
25538
25538
  }
25539
25539
 
25540
- // node_modules/@relaycast/sdk/node_modules/zod/v4/locales/yo.js
25540
+ // packages/sdk/node_modules/zod/v4/locales/yo.js
25541
25541
  var error47 = () => {
25542
25542
  const Sizable = {
25543
25543
  string: { unit: "\xE0mi", verb: "n\xED" },
@@ -25645,7 +25645,7 @@ function yo_default() {
25645
25645
  };
25646
25646
  }
25647
25647
 
25648
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/registries.js
25648
+ // packages/sdk/node_modules/zod/v4/core/registries.js
25649
25649
  var _a;
25650
25650
  var $output = /* @__PURE__ */ Symbol("ZodOutput");
25651
25651
  var $input = /* @__PURE__ */ Symbol("ZodInput");
@@ -25695,7 +25695,7 @@ function registry() {
25695
25695
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
25696
25696
  var globalRegistry = globalThis.__zod_globalRegistry;
25697
25697
 
25698
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/api.js
25698
+ // packages/sdk/node_modules/zod/v4/core/api.js
25699
25699
  // @__NO_SIDE_EFFECTS__
25700
25700
  function _string(Class2, params) {
25701
25701
  return new Class2({
@@ -26734,7 +26734,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
26734
26734
  return inst;
26735
26735
  }
26736
26736
 
26737
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/to-json-schema.js
26737
+ // packages/sdk/node_modules/zod/v4/core/to-json-schema.js
26738
26738
  function initializeContext(params) {
26739
26739
  let target = params?.target ?? "draft-2020-12";
26740
26740
  if (target === "draft-4")
@@ -27086,7 +27086,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
27086
27086
  return finalize(ctx, schema);
27087
27087
  };
27088
27088
 
27089
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/json-schema-processors.js
27089
+ // packages/sdk/node_modules/zod/v4/core/json-schema-processors.js
27090
27090
  var formatMap = {
27091
27091
  guid: "uuid",
27092
27092
  url: "uri",
@@ -27637,7 +27637,7 @@ function toJSONSchema(input, params) {
27637
27637
  return finalize(ctx, input);
27638
27638
  }
27639
27639
 
27640
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/json-schema-generator.js
27640
+ // packages/sdk/node_modules/zod/v4/core/json-schema-generator.js
27641
27641
  var JSONSchemaGenerator = class {
27642
27642
  /** @deprecated Access via ctx instead */
27643
27643
  get metadataRegistry() {
@@ -27712,10 +27712,10 @@ var JSONSchemaGenerator = class {
27712
27712
  }
27713
27713
  };
27714
27714
 
27715
- // node_modules/@relaycast/sdk/node_modules/zod/v4/core/json-schema.js
27715
+ // packages/sdk/node_modules/zod/v4/core/json-schema.js
27716
27716
  var json_schema_exports = {};
27717
27717
 
27718
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/schemas.js
27718
+ // packages/sdk/node_modules/zod/v4/classic/schemas.js
27719
27719
  var schemas_exports2 = {};
27720
27720
  __export(schemas_exports2, {
27721
27721
  ZodAny: () => ZodAny2,
@@ -27884,7 +27884,7 @@ __export(schemas_exports2, {
27884
27884
  xor: () => xor
27885
27885
  });
27886
27886
 
27887
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/checks.js
27887
+ // packages/sdk/node_modules/zod/v4/classic/checks.js
27888
27888
  var checks_exports2 = {};
27889
27889
  __export(checks_exports2, {
27890
27890
  endsWith: () => _endsWith,
@@ -27918,7 +27918,7 @@ __export(checks_exports2, {
27918
27918
  uppercase: () => _uppercase
27919
27919
  });
27920
27920
 
27921
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/iso.js
27921
+ // packages/sdk/node_modules/zod/v4/classic/iso.js
27922
27922
  var iso_exports = {};
27923
27923
  __export(iso_exports, {
27924
27924
  ZodISODate: () => ZodISODate,
@@ -27959,7 +27959,7 @@ function duration2(params) {
27959
27959
  return _isoDuration(ZodISODuration, params);
27960
27960
  }
27961
27961
 
27962
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/errors.js
27962
+ // packages/sdk/node_modules/zod/v4/classic/errors.js
27963
27963
  var initializer2 = (inst, issues) => {
27964
27964
  $ZodError.init(inst, issues);
27965
27965
  inst.name = "ZodError";
@@ -27999,7 +27999,7 @@ var ZodRealError = $constructor("ZodError", initializer2, {
27999
27999
  Parent: Error
28000
28000
  });
28001
28001
 
28002
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/parse.js
28002
+ // packages/sdk/node_modules/zod/v4/classic/parse.js
28003
28003
  var parse2 = /* @__PURE__ */ _parse(ZodRealError);
28004
28004
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
28005
28005
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -28013,7 +28013,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
28013
28013
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
28014
28014
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
28015
28015
 
28016
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/schemas.js
28016
+ // packages/sdk/node_modules/zod/v4/classic/schemas.js
28017
28017
  var ZodType2 = /* @__PURE__ */ $constructor("ZodType", (inst, def) => {
28018
28018
  $ZodType.init(inst, def);
28019
28019
  Object.assign(inst["~standard"], {
@@ -29092,7 +29092,7 @@ function preprocess(fn, schema) {
29092
29092
  return pipe(transform(fn), schema);
29093
29093
  }
29094
29094
 
29095
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/compat.js
29095
+ // packages/sdk/node_modules/zod/v4/classic/compat.js
29096
29096
  var ZodIssueCode2 = {
29097
29097
  invalid_type: "invalid_type",
29098
29098
  too_big: "too_big",
@@ -29118,7 +29118,7 @@ var ZodFirstPartyTypeKind2;
29118
29118
  /* @__PURE__ */ (function(ZodFirstPartyTypeKind3) {
29119
29119
  })(ZodFirstPartyTypeKind2 || (ZodFirstPartyTypeKind2 = {}));
29120
29120
 
29121
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/from-json-schema.js
29121
+ // packages/sdk/node_modules/zod/v4/classic/from-json-schema.js
29122
29122
  var z = {
29123
29123
  ...schemas_exports2,
29124
29124
  ...checks_exports2,
@@ -29592,7 +29592,7 @@ function fromJSONSchema(schema, params) {
29592
29592
  return convertSchema(schema, ctx);
29593
29593
  }
29594
29594
 
29595
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/coerce.js
29595
+ // packages/sdk/node_modules/zod/v4/classic/coerce.js
29596
29596
  var coerce_exports = {};
29597
29597
  __export(coerce_exports, {
29598
29598
  bigint: () => bigint3,
@@ -29617,10 +29617,10 @@ function date4(params) {
29617
29617
  return _coercedDate(ZodDate2, params);
29618
29618
  }
29619
29619
 
29620
- // node_modules/@relaycast/sdk/node_modules/zod/v4/classic/external.js
29620
+ // packages/sdk/node_modules/zod/v4/classic/external.js
29621
29621
  config(en_default2());
29622
29622
 
29623
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/workspace.js
29623
+ // packages/sdk/node_modules/@relaycast/types/dist/workspace.js
29624
29624
  var WorkspaceSchema = external_exports2.object({
29625
29625
  id: external_exports2.string(),
29626
29626
  name: external_exports2.string(),
@@ -29675,7 +29675,7 @@ var TokenRotateResponseSchema = external_exports2.object({
29675
29675
  token: external_exports2.string()
29676
29676
  });
29677
29677
 
29678
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/agent.js
29678
+ // packages/sdk/node_modules/@relaycast/types/dist/agent.js
29679
29679
  var AgentTypeSchema = external_exports2.enum(["agent", "human", "system"]);
29680
29680
  var AgentStatusSchema = external_exports2.enum(["online", "offline", "away"]);
29681
29681
  var AgentSchema = external_exports2.object({
@@ -29752,7 +29752,7 @@ var ReleaseAgentResponseSchema = external_exports2.object({
29752
29752
  reason: external_exports2.string().nullable()
29753
29753
  });
29754
29754
 
29755
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/channel.js
29755
+ // packages/sdk/node_modules/@relaycast/types/dist/channel.js
29756
29756
  var ChannelMemberInfoSchema = external_exports2.object({
29757
29757
  agent_id: external_exports2.string(),
29758
29758
  agent_name: external_exports2.string(),
@@ -29799,7 +29799,7 @@ var InviteChannelResponseSchema = external_exports2.object({
29799
29799
  agent: external_exports2.string()
29800
29800
  });
29801
29801
 
29802
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/file.js
29802
+ // packages/sdk/node_modules/@relaycast/types/dist/file.js
29803
29803
  var FileStatusSchema = external_exports2.enum(["pending", "complete", "deleted"]);
29804
29804
  var FileRecordSchema = external_exports2.object({
29805
29805
  id: external_exports2.string(),
@@ -29846,7 +29846,7 @@ var CompleteUploadResponseSchema = external_exports2.object({
29846
29846
  download_url: external_exports2.string()
29847
29847
  });
29848
29848
 
29849
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/reaction.js
29849
+ // packages/sdk/node_modules/@relaycast/types/dist/reaction.js
29850
29850
  var ReactionSchema = external_exports2.object({
29851
29851
  id: external_exports2.string(),
29852
29852
  message_id: external_exports2.string(),
@@ -29870,7 +29870,7 @@ var ReactionGroupSchema = external_exports2.object({
29870
29870
  agents: external_exports2.array(external_exports2.string())
29871
29871
  });
29872
29872
 
29873
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/message.js
29873
+ // packages/sdk/node_modules/@relaycast/types/dist/message.js
29874
29874
  var HeaderBlockSchema = external_exports2.object({
29875
29875
  type: external_exports2.literal("header"),
29876
29876
  text: external_exports2.string()
@@ -29960,7 +29960,7 @@ var SearchMessageResultSchema = external_exports2.object({
29960
29960
  relevance_score: external_exports2.number()
29961
29961
  });
29962
29962
 
29963
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/receipt.js
29963
+ // packages/sdk/node_modules/@relaycast/types/dist/receipt.js
29964
29964
  var ReadReceiptSchema = external_exports2.object({
29965
29965
  message_id: external_exports2.string(),
29966
29966
  agent_id: external_exports2.string(),
@@ -29977,7 +29977,7 @@ var ChannelReadStatusSchema = external_exports2.object({
29977
29977
  last_read_at: external_exports2.string().nullable()
29978
29978
  });
29979
29979
 
29980
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/dm.js
29980
+ // packages/sdk/node_modules/@relaycast/types/dist/dm.js
29981
29981
  var DmTypeSchema = external_exports2.enum(["1:1", "group"]);
29982
29982
  var DmConversationSchema = external_exports2.object({
29983
29983
  id: external_exports2.string(),
@@ -30049,7 +30049,7 @@ var GroupDmParticipantResponseSchema = external_exports2.object({
30049
30049
  already_member: external_exports2.boolean()
30050
30050
  });
30051
30051
 
30052
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/events.js
30052
+ // packages/sdk/node_modules/@relaycast/types/dist/events.js
30053
30053
  var SubscribeEventSchema = external_exports2.object({
30054
30054
  type: external_exports2.literal("subscribe"),
30055
30055
  channels: external_exports2.array(external_exports2.string())
@@ -30260,7 +30260,7 @@ var WsClientEventSchema = external_exports2.discriminatedUnion("type", [
30260
30260
  WsCloseEventSchema
30261
30261
  ]);
30262
30262
 
30263
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/api.js
30263
+ // packages/sdk/node_modules/@relaycast/types/dist/api.js
30264
30264
  var ApiErrorSchema = external_exports2.object({
30265
30265
  ok: external_exports2.literal(false),
30266
30266
  error: external_exports2.object({
@@ -30286,7 +30286,7 @@ var InboxResponseSchema = external_exports2.object({
30286
30286
  }))
30287
30287
  });
30288
30288
 
30289
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/webhook.js
30289
+ // packages/sdk/node_modules/@relaycast/types/dist/webhook.js
30290
30290
  var WebhookSchema = external_exports2.object({
30291
30291
  id: external_exports2.string(),
30292
30292
  name: external_exports2.string(),
@@ -30320,7 +30320,7 @@ var WebhookTriggerResponseSchema = external_exports2.object({
30320
30320
  created_at: external_exports2.string()
30321
30321
  });
30322
30322
 
30323
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/subscription.js
30323
+ // packages/sdk/node_modules/@relaycast/types/dist/subscription.js
30324
30324
  var SubscribableEventTypeSchema = external_exports2.enum([
30325
30325
  "message.created",
30326
30326
  "message.updated",
@@ -30368,7 +30368,7 @@ var CreateSubscriptionResponseSchema = external_exports2.object({
30368
30368
  created_at: external_exports2.string()
30369
30369
  });
30370
30370
 
30371
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/command.js
30371
+ // packages/sdk/node_modules/@relaycast/types/dist/command.js
30372
30372
  var CommandParameterSchema = external_exports2.object({
30373
30373
  name: external_exports2.string(),
30374
30374
  description: external_exports2.string().optional(),
@@ -30415,7 +30415,7 @@ var CommandInvocationSchema = external_exports2.object({
30415
30415
  created_at: external_exports2.string()
30416
30416
  });
30417
30417
 
30418
- // node_modules/@relaycast/sdk/node_modules/@relaycast/types/dist/telemetry.js
30418
+ // packages/sdk/node_modules/@relaycast/types/dist/telemetry.js
30419
30419
  var TELEMETRY_MAX_PROPERTIES = 64;
30420
30420
  var TELEMETRY_VALUE_MAX_LENGTH = 512;
30421
30421
  var telemetryString = (max) => external_exports2.string().trim().min(1).max(max);
@@ -30518,14 +30518,14 @@ var internalTelemetryEventSchema = telemetryEnvelopeBaseSchema.extend({
30518
30518
  event: telemetryEventSchema
30519
30519
  }).merge(telemetryOriginSchema);
30520
30520
 
30521
- // node_modules/@relaycast/sdk/dist/origin.js
30521
+ // packages/sdk/node_modules/@relaycast/sdk/dist/origin.js
30522
30522
  var SDK_ORIGIN = Object.freeze({
30523
30523
  surface: "sdk",
30524
30524
  client: "@relaycast/sdk",
30525
30525
  version: SDK_VERSION
30526
30526
  });
30527
30527
 
30528
- // node_modules/@relaycast/sdk/dist/casing.js
30528
+ // packages/sdk/node_modules/@relaycast/sdk/dist/casing.js
30529
30529
  function isPlainObject2(value) {
30530
30530
  if (Object.prototype.toString.call(value) !== "[object Object]")
30531
30531
  return false;
@@ -30568,7 +30568,7 @@ function decamelizeKey(key) {
30568
30568
  return toSnakeKey(key);
30569
30569
  }
30570
30570
 
30571
- // node_modules/@relaycast/sdk/dist/ws.js
30571
+ // packages/sdk/node_modules/@relaycast/sdk/dist/ws.js
30572
30572
  var INTERNAL_WS_ORIGIN = /* @__PURE__ */ Symbol("relaycast.internal.ws-origin");
30573
30573
  function readInternalWsOrigin(options) {
30574
30574
  return options[INTERNAL_WS_ORIGIN];
@@ -30832,7 +30832,7 @@ var WsClient = class {
30832
30832
  }
30833
30833
  };
30834
30834
 
30835
- // node_modules/@relaycast/sdk/dist/agent.js
30835
+ // packages/sdk/node_modules/@relaycast/sdk/dist/agent.js
30836
30836
  function stripHash(channel) {
30837
30837
  return channel.startsWith("#") ? channel.slice(1) : channel;
30838
30838
  }
@@ -31141,7 +31141,7 @@ var AgentClient = class {
31141
31141
  };
31142
31142
  };
31143
31143
 
31144
- // node_modules/@relaycast/sdk/dist/errors.js
31144
+ // packages/sdk/node_modules/@relaycast/sdk/dist/errors.js
31145
31145
  var RAW_CODE_MAP = {
31146
31146
  name_conflict: "name_conflict",
31147
31147
  agent_already_exists: "name_conflict",
@@ -31200,7 +31200,7 @@ function relayErrorFromApi(rawCode, message, statusCode) {
31200
31200
  return new RelayError(code, message, { statusCode, rawCode });
31201
31201
  }
31202
31202
 
31203
- // node_modules/@relaycast/sdk/dist/client.js
31203
+ // packages/sdk/node_modules/@relaycast/sdk/dist/client.js
31204
31204
  var INTERNAL_ORIGIN = /* @__PURE__ */ Symbol("relaycast.internal.origin");
31205
31205
  function readInternalOrigin(options) {
31206
31206
  return options[INTERNAL_ORIGIN];
@@ -31395,7 +31395,7 @@ var HttpClient = class _HttpClient {
31395
31395
  }
31396
31396
  };
31397
31397
 
31398
- // node_modules/@relaycast/sdk/dist/identity.js
31398
+ // packages/sdk/node_modules/@relaycast/sdk/dist/identity.js
31399
31399
  var COMPAT_EVENT_NAME = "relaycast.compatibility";
31400
31400
  var emittedCompatibilityEvents = /* @__PURE__ */ new Set();
31401
31401
  function emitCompatibilityTelemetry(event, metadata = {}) {
@@ -31418,7 +31418,7 @@ function isNameConflictError(err) {
31418
31418
  return err instanceof RelayError && err.code === "name_conflict";
31419
31419
  }
31420
31420
 
31421
- // node_modules/@relaycast/sdk/dist/relay.js
31421
+ // packages/sdk/node_modules/@relaycast/sdk/dist/relay.js
31422
31422
  var RelayCast = class {
31423
31423
  client;
31424
31424
  identityHint = null;
@@ -35819,7 +35819,7 @@ ${err.suggestion}`);
35819
35819
  }
35820
35820
  // ── Execution ───────────────────────────────────────────────────────────
35821
35821
  /** Execute a named workflow from a validated config. */
35822
- async execute(config2, workflowName, vars) {
35822
+ async execute(config2, workflowName, vars, executeOptions) {
35823
35823
  this.abortController = new AbortController();
35824
35824
  this.paused = false;
35825
35825
  const resolved = vars ? this.resolveVariables(config2, vars) : config2;
@@ -35876,6 +35876,37 @@ ${err.suggestion}`);
35876
35876
  await this.db.insertStep(stepRow);
35877
35877
  stepStates.set(step.name, { row: stepRow });
35878
35878
  }
35879
+ if (executeOptions?.startFrom) {
35880
+ const startFromName = executeOptions.startFrom;
35881
+ const stepNames = new Set(resolvedWorkflow.steps.map((s) => s.name));
35882
+ if (!stepNames.has(startFromName)) {
35883
+ throw new Error(`startFrom step "${startFromName}" not found in workflow. Available steps: ${[...stepNames].join(", ")}`);
35884
+ }
35885
+ const transitiveDeps = this.collectTransitiveDeps(startFromName, resolvedWorkflow.steps);
35886
+ const skippedCount = transitiveDeps.size;
35887
+ const cacheRunId = executeOptions.previousRunId ?? this.findMostRecentRunWithSteps(transitiveDeps);
35888
+ for (const depName of transitiveDeps) {
35889
+ const state = stepStates.get(depName);
35890
+ if (!state)
35891
+ continue;
35892
+ const cachedOutput = cacheRunId ? this.loadStepOutput(cacheRunId, depName) : void 0;
35893
+ if (!cachedOutput) {
35894
+ this.log(`[startFrom] No cached output for skipped step "${depName}" \u2014 using empty string`);
35895
+ }
35896
+ state.row.status = "completed";
35897
+ state.row.output = cachedOutput ?? "";
35898
+ state.row.completedAt = now;
35899
+ await this.db.updateStep(state.row.id, {
35900
+ status: "completed",
35901
+ output: state.row.output,
35902
+ completedAt: now,
35903
+ updatedAt: now
35904
+ });
35905
+ }
35906
+ if (skippedCount > 0) {
35907
+ this.log(`[startFrom] Skipping ${skippedCount} steps, starting from "${startFromName}"`);
35908
+ }
35909
+ }
35879
35910
  return this.runWorkflowCore({
35880
35911
  run,
35881
35912
  workflow: resolvedWorkflow,
@@ -38563,6 +38594,33 @@ DO NOT:
38563
38594
  }
38564
38595
  }
38565
38596
  }
38597
+ // ── startFrom dependency resolution ─────────────────────────────────
38598
+ /**
38599
+ * Walk the dependsOn graph backwards from a target step to collect ALL
38600
+ * transitive dependencies (i.e. every step that must complete before
38601
+ * the target step can run). The target step itself is NOT included.
38602
+ */
38603
+ collectTransitiveDeps(targetStep, steps) {
38604
+ const stepMap = /* @__PURE__ */ new Map();
38605
+ for (const s of steps)
38606
+ stepMap.set(s.name, s);
38607
+ const deps = /* @__PURE__ */ new Set();
38608
+ const queue = [...stepMap.get(targetStep)?.dependsOn ?? []];
38609
+ while (queue.length > 0) {
38610
+ const current = queue.shift();
38611
+ if (deps.has(current))
38612
+ continue;
38613
+ deps.add(current);
38614
+ const step = stepMap.get(current);
38615
+ if (step?.dependsOn) {
38616
+ for (const dep of step.dependsOn) {
38617
+ if (!deps.has(dep))
38618
+ queue.push(dep);
38619
+ }
38620
+ }
38621
+ }
38622
+ return deps;
38623
+ }
38566
38624
  // ── Control flow helpers ──────────────────────────────────────────────
38567
38625
  checkAborted() {
38568
38626
  if (this.abortController?.signal.aborted) {
@@ -38934,6 +38992,35 @@ ${excerpt}` : "";
38934
38992
  ${preview}
38935
38993
  \`\`\``, { stepName });
38936
38994
  }
38995
+ /** Scan .agent-relay/step-outputs/ for the most recent run directory containing the needed steps. */
38996
+ findMostRecentRunWithSteps(stepNames) {
38997
+ try {
38998
+ const baseDir = import_node_path8.default.join(this.cwd, ".agent-relay", "step-outputs");
38999
+ if (!(0, import_node_fs5.existsSync)(baseDir))
39000
+ return void 0;
39001
+ const entries = (0, import_node_fs5.readdirSync)(baseDir);
39002
+ let best;
39003
+ for (const entry of entries) {
39004
+ const dirPath = import_node_path8.default.join(baseDir, entry);
39005
+ try {
39006
+ const stat2 = (0, import_node_fs5.statSync)(dirPath);
39007
+ if (!stat2.isDirectory())
39008
+ continue;
39009
+ const hasAny = [...stepNames].some((name) => (0, import_node_fs5.existsSync)(import_node_path8.default.join(dirPath, `${name}.md`)));
39010
+ if (!hasAny)
39011
+ continue;
39012
+ if (!best || stat2.mtimeMs > best.mtime) {
39013
+ best = { name: entry, mtime: stat2.mtimeMs };
39014
+ }
39015
+ } catch {
39016
+ continue;
39017
+ }
39018
+ }
39019
+ return best?.name;
39020
+ } catch {
39021
+ return void 0;
39022
+ }
39023
+ }
38937
39024
  /** Load persisted step output from disk. */
38938
39025
  loadStepOutput(runId, stepName) {
38939
39026
  try {
@@ -39181,6 +39268,11 @@ var WorkflowBuilder = class {
39181
39268
  _agents = [];
39182
39269
  _steps = [];
39183
39270
  _errorHandling;
39271
+ _coordination;
39272
+ _state;
39273
+ _trajectories;
39274
+ _startFrom;
39275
+ _previousRunId;
39184
39276
  constructor(name) {
39185
39277
  this._name = name;
39186
39278
  }
@@ -39214,6 +39306,31 @@ var WorkflowBuilder = class {
39214
39306
  this._idleNudge = config2;
39215
39307
  return this;
39216
39308
  }
39309
+ /** Set workflow coordination settings (barriers, voting threshold, consensus strategy). */
39310
+ coordination(config2) {
39311
+ this._coordination = config2;
39312
+ return this;
39313
+ }
39314
+ /** Configure shared workflow state backend settings. */
39315
+ state(config2) {
39316
+ this._state = config2;
39317
+ return this;
39318
+ }
39319
+ /** Configure trajectory recording, or pass `false` to disable it. */
39320
+ trajectories(config2) {
39321
+ this._trajectories = config2;
39322
+ return this;
39323
+ }
39324
+ /** Start execution from a specific step, skipping all predecessor steps. */
39325
+ startFrom(stepName) {
39326
+ this._startFrom = stepName;
39327
+ return this;
39328
+ }
39329
+ /** Set the previous run ID whose cached step outputs should be used with startFrom. */
39330
+ previousRunId(id) {
39331
+ this._previousRunId = id;
39332
+ return this;
39333
+ }
39217
39334
  /** Add an agent definition. */
39218
39335
  agent(name, options) {
39219
39336
  const def = {
@@ -39250,25 +39367,56 @@ var WorkflowBuilder = class {
39250
39367
  step(name, options) {
39251
39368
  const step = { name };
39252
39369
  if ("type" in options && options.type === "deterministic") {
39370
+ if (!options.command) {
39371
+ throw new Error("deterministic steps must have a command");
39372
+ }
39373
+ if ("agent" in options || "task" in options) {
39374
+ throw new Error("deterministic steps must not have agent or task");
39375
+ }
39253
39376
  step.type = "deterministic";
39254
39377
  step.command = options.command;
39255
- if (options.failOnError !== void 0)
39256
- step.failOnError = options.failOnError;
39257
39378
  if (options.captureOutput !== void 0)
39258
39379
  step.captureOutput = options.captureOutput;
39380
+ if (options.failOnError !== void 0)
39381
+ step.failOnError = options.failOnError;
39382
+ if (options.dependsOn !== void 0)
39383
+ step.dependsOn = options.dependsOn;
39384
+ if (options.verification !== void 0)
39385
+ step.verification = options.verification;
39386
+ if (options.timeoutMs !== void 0)
39387
+ step.timeoutMs = options.timeoutMs;
39388
+ } else if ("type" in options && options.type === "worktree") {
39389
+ if ("agent" in options || "task" in options) {
39390
+ throw new Error("worktree steps must not have agent or task");
39391
+ }
39392
+ step.type = "worktree";
39393
+ step.branch = options.branch;
39394
+ if (options.baseBranch !== void 0)
39395
+ step.baseBranch = options.baseBranch;
39396
+ if (options.path !== void 0)
39397
+ step.path = options.path;
39398
+ if (options.createBranch !== void 0)
39399
+ step.createBranch = options.createBranch;
39400
+ if (options.dependsOn !== void 0)
39401
+ step.dependsOn = options.dependsOn;
39402
+ if (options.timeoutMs !== void 0)
39403
+ step.timeoutMs = options.timeoutMs;
39259
39404
  } else {
39260
39405
  const agentOpts = options;
39406
+ if (!agentOpts.agent || !agentOpts.task) {
39407
+ throw new Error("Agent steps must have both agent and task");
39408
+ }
39261
39409
  step.agent = agentOpts.agent;
39262
39410
  step.task = agentOpts.task;
39411
+ if (agentOpts.dependsOn !== void 0)
39412
+ step.dependsOn = agentOpts.dependsOn;
39263
39413
  if (agentOpts.verification !== void 0)
39264
39414
  step.verification = agentOpts.verification;
39415
+ if (agentOpts.timeoutMs !== void 0)
39416
+ step.timeoutMs = agentOpts.timeoutMs;
39265
39417
  if (agentOpts.retries !== void 0)
39266
39418
  step.retries = agentOpts.retries;
39267
39419
  }
39268
- if (options.dependsOn !== void 0)
39269
- step.dependsOn = options.dependsOn;
39270
- if (options.timeoutMs !== void 0)
39271
- step.timeoutMs = options.timeoutMs;
39272
39420
  this._steps.push(step);
39273
39421
  return this;
39274
39422
  }
@@ -39317,6 +39465,12 @@ var WorkflowBuilder = class {
39317
39465
  config2.swarm.idleNudge = this._idleNudge;
39318
39466
  if (this._errorHandling !== void 0)
39319
39467
  config2.errorHandling = this._errorHandling;
39468
+ if (this._coordination !== void 0)
39469
+ config2.coordination = this._coordination;
39470
+ if (this._state !== void 0)
39471
+ config2.state = this._state;
39472
+ if (this._trajectories !== void 0)
39473
+ config2.trajectories = this._trajectories;
39320
39474
  return config2;
39321
39475
  }
39322
39476
  /** Serialize the config to a YAML string. */
@@ -39339,7 +39493,10 @@ var WorkflowBuilder = class {
39339
39493
  if (options.onEvent) {
39340
39494
  runner.on(options.onEvent);
39341
39495
  }
39342
- return runner.execute(config2, options.workflow, options.vars);
39496
+ const startFrom = this._startFrom ?? options.startFrom;
39497
+ const previousRunId = this._previousRunId ?? options.previousRunId;
39498
+ const executeOptions = startFrom ? { startFrom, previousRunId } : void 0;
39499
+ return runner.execute(config2, options.workflow, options.vars, executeOptions);
39343
39500
  }
39344
39501
  };
39345
39502
  function workflow(name) {