@workflow/core 5.0.0-beta.5 → 5.0.0-beta.51

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 (317) hide show
  1. package/README.md +5 -0
  2. package/dist/attribute-changes.d.ts +5 -0
  3. package/dist/attribute-changes.d.ts.map +1 -0
  4. package/dist/attribute-changes.js +25 -0
  5. package/dist/capabilities.d.ts +35 -2
  6. package/dist/capabilities.d.ts.map +1 -1
  7. package/dist/capabilities.js +74 -5
  8. package/dist/capture-stack.d.ts +1 -1
  9. package/dist/capture-stack.js +2 -2
  10. package/dist/class-serialization.d.ts +32 -0
  11. package/dist/class-serialization.d.ts.map +1 -1
  12. package/dist/class-serialization.js +37 -1
  13. package/dist/classify-error.d.ts +19 -3
  14. package/dist/classify-error.d.ts.map +1 -1
  15. package/dist/classify-error.js +98 -6
  16. package/dist/context-violation-error.d.ts +5 -5
  17. package/dist/context-violation-error.d.ts.map +1 -1
  18. package/dist/context-violation-error.js +8 -6
  19. package/dist/create-hook.d.ts +72 -7
  20. package/dist/create-hook.d.ts.map +1 -1
  21. package/dist/create-hook.js +1 -1
  22. package/dist/define-hook.js +2 -2
  23. package/dist/describe-error.d.ts +7 -7
  24. package/dist/describe-error.d.ts.map +1 -1
  25. package/dist/describe-error.js +97 -12
  26. package/dist/encryption.d.ts +38 -4
  27. package/dist/encryption.d.ts.map +1 -1
  28. package/dist/encryption.js +96 -14
  29. package/dist/events-consumer.d.ts +297 -0
  30. package/dist/events-consumer.d.ts.map +1 -1
  31. package/dist/events-consumer.js +673 -42
  32. package/dist/flushable-stream.d.ts +97 -1
  33. package/dist/flushable-stream.d.ts.map +1 -1
  34. package/dist/flushable-stream.js +291 -11
  35. package/dist/global.d.ts +36 -2
  36. package/dist/global.d.ts.map +1 -1
  37. package/dist/global.js +21 -6
  38. package/dist/index.d.ts +2 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +3 -2
  41. package/dist/log-format.d.ts +2 -2
  42. package/dist/log-format.js +19 -12
  43. package/dist/logger.d.ts +1 -0
  44. package/dist/logger.d.ts.map +1 -1
  45. package/dist/logger.js +10 -6
  46. package/dist/private.d.ts +226 -9
  47. package/dist/private.d.ts.map +1 -1
  48. package/dist/private.js +626 -7
  49. package/dist/replay-divergence.d.ts +25 -0
  50. package/dist/replay-divergence.d.ts.map +1 -0
  51. package/dist/replay-divergence.js +61 -0
  52. package/dist/replay-payload-cache.d.ts +64 -0
  53. package/dist/replay-payload-cache.d.ts.map +1 -0
  54. package/dist/replay-payload-cache.js +158 -0
  55. package/dist/runtime/compute-instance.d.ts +13 -0
  56. package/dist/runtime/compute-instance.d.ts.map +1 -0
  57. package/dist/runtime/compute-instance.js +14 -0
  58. package/dist/runtime/constants.d.ts +315 -0
  59. package/dist/runtime/constants.d.ts.map +1 -1
  60. package/dist/runtime/constants.js +502 -16
  61. package/dist/runtime/count-step-started-events.d.ts +52 -0
  62. package/dist/runtime/count-step-started-events.d.ts.map +1 -0
  63. package/dist/runtime/count-step-started-events.js +72 -0
  64. package/dist/runtime/deployment-guard.d.ts +99 -0
  65. package/dist/runtime/deployment-guard.d.ts.map +1 -0
  66. package/dist/runtime/deployment-guard.js +154 -0
  67. package/dist/runtime/get-port-lazy.d.ts +15 -0
  68. package/dist/runtime/get-port-lazy.d.ts.map +1 -1
  69. package/dist/runtime/get-port-lazy.js +75 -6
  70. package/dist/runtime/get-world-lazy.d.ts +5 -14
  71. package/dist/runtime/get-world-lazy.d.ts.map +1 -1
  72. package/dist/runtime/get-world-lazy.js +19 -29
  73. package/dist/runtime/helpers.d.ts +415 -29
  74. package/dist/runtime/helpers.d.ts.map +1 -1
  75. package/dist/runtime/helpers.js +686 -57
  76. package/dist/runtime/quickjs-assets.generated.d.ts +14 -0
  77. package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -0
  78. package/dist/runtime/quickjs-assets.generated.js +30 -0
  79. package/dist/runtime/quickjs-entrypoint.d.ts +158 -0
  80. package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -0
  81. package/dist/runtime/quickjs-entrypoint.js +1863 -0
  82. package/dist/runtime/quickjs-log-view.d.ts +129 -0
  83. package/dist/runtime/quickjs-log-view.d.ts.map +1 -0
  84. package/dist/runtime/quickjs-log-view.js +229 -0
  85. package/dist/runtime/quickjs-runtime.d.ts +244 -0
  86. package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
  87. package/dist/runtime/quickjs-runtime.js +2427 -0
  88. package/dist/runtime/quickjs-serde.d.ts +107 -0
  89. package/dist/runtime/quickjs-serde.d.ts.map +1 -0
  90. package/dist/runtime/quickjs-serde.js +2159 -0
  91. package/dist/runtime/replay-budget.d.ts +97 -0
  92. package/dist/runtime/replay-budget.d.ts.map +1 -0
  93. package/dist/runtime/replay-budget.js +139 -0
  94. package/dist/runtime/replay-recovery-reporter.d.ts +36 -0
  95. package/dist/runtime/replay-recovery-reporter.d.ts.map +1 -0
  96. package/dist/runtime/replay-recovery-reporter.js +64 -0
  97. package/dist/runtime/resume-hook.d.ts +91 -8
  98. package/dist/runtime/resume-hook.d.ts.map +1 -1
  99. package/dist/runtime/resume-hook.js +512 -89
  100. package/dist/runtime/resume-latency.d.ts +150 -0
  101. package/dist/runtime/resume-latency.d.ts.map +1 -0
  102. package/dist/runtime/resume-latency.js +155 -0
  103. package/dist/runtime/run-id-time.d.ts +19 -0
  104. package/dist/runtime/run-id-time.d.ts.map +1 -0
  105. package/dist/runtime/run-id-time.js +42 -0
  106. package/dist/runtime/run.d.ts +72 -7
  107. package/dist/runtime/run.d.ts.map +1 -1
  108. package/dist/runtime/run.js +280 -53
  109. package/dist/runtime/runs.d.ts +54 -3
  110. package/dist/runtime/runs.d.ts.map +1 -1
  111. package/dist/runtime/runs.js +126 -16
  112. package/dist/runtime/start.d.ts +101 -2
  113. package/dist/runtime/start.d.ts.map +1 -1
  114. package/dist/runtime/start.js +352 -61
  115. package/dist/runtime/step-executor.d.ts +186 -5
  116. package/dist/runtime/step-executor.d.ts.map +1 -1
  117. package/dist/runtime/step-executor.js +768 -130
  118. package/dist/runtime/step-latency.d.ts +220 -0
  119. package/dist/runtime/step-latency.d.ts.map +1 -0
  120. package/dist/runtime/step-latency.js +215 -0
  121. package/dist/runtime/step-ownership.d.ts +72 -0
  122. package/dist/runtime/step-ownership.d.ts.map +1 -0
  123. package/dist/runtime/step-ownership.js +114 -0
  124. package/dist/runtime/step-single-flight.d.ts +12 -0
  125. package/dist/runtime/step-single-flight.d.ts.map +1 -0
  126. package/dist/runtime/step-single-flight.js +75 -0
  127. package/dist/runtime/suspension-handler.d.ts +247 -7
  128. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  129. package/dist/runtime/suspension-handler.js +1304 -125
  130. package/dist/runtime/unserializable-step.d.ts +34 -0
  131. package/dist/runtime/unserializable-step.d.ts.map +1 -0
  132. package/dist/runtime/unserializable-step.js +52 -0
  133. package/dist/runtime/vm-mode.d.ts +44 -0
  134. package/dist/runtime/vm-mode.d.ts.map +1 -0
  135. package/dist/runtime/vm-mode.js +62 -0
  136. package/dist/runtime/vm-serde-bundle.generated.d.ts +14 -0
  137. package/dist/runtime/vm-serde-bundle.generated.d.ts.map +1 -0
  138. package/dist/runtime/vm-serde-bundle.generated.js +16 -0
  139. package/dist/runtime/wait-continuation.d.ts +106 -0
  140. package/dist/runtime/wait-continuation.d.ts.map +1 -0
  141. package/dist/runtime/wait-continuation.js +136 -0
  142. package/dist/runtime/wait-until.d.ts +18 -0
  143. package/dist/runtime/wait-until.d.ts.map +1 -0
  144. package/dist/runtime/wait-until.js +42 -0
  145. package/dist/runtime/world-compatibility.d.ts +32 -0
  146. package/dist/runtime/world-compatibility.d.ts.map +1 -0
  147. package/dist/runtime/world-compatibility.js +44 -0
  148. package/dist/runtime/world-init.d.ts +17 -42
  149. package/dist/runtime/world-init.d.ts.map +1 -1
  150. package/dist/runtime/world-init.js +18 -43
  151. package/dist/runtime/world.d.ts +14 -2
  152. package/dist/runtime/world.d.ts.map +1 -1
  153. package/dist/runtime/world.js +75 -19
  154. package/dist/runtime.d.ts +10 -6
  155. package/dist/runtime.d.ts.map +1 -1
  156. package/dist/runtime.js +3911 -489
  157. package/dist/sealed-box.d.ts +167 -0
  158. package/dist/sealed-box.d.ts.map +1 -0
  159. package/dist/sealed-box.js +571 -0
  160. package/dist/serialization/client.d.ts +3 -3
  161. package/dist/serialization/client.d.ts.map +1 -1
  162. package/dist/serialization/client.js +8 -4
  163. package/dist/serialization/codec-devalue-vm.d.ts +16 -0
  164. package/dist/serialization/codec-devalue-vm.d.ts.map +1 -0
  165. package/dist/serialization/codec-devalue-vm.js +148 -0
  166. package/dist/serialization/codec-devalue.d.ts +1 -1
  167. package/dist/serialization/codec-devalue.d.ts.map +1 -1
  168. package/dist/serialization/codec-devalue.js +24 -6
  169. package/dist/serialization/codec.d.ts +37 -2
  170. package/dist/serialization/codec.d.ts.map +1 -1
  171. package/dist/serialization/codec.js +2 -2
  172. package/dist/serialization/compression.d.ts +105 -0
  173. package/dist/serialization/compression.d.ts.map +1 -0
  174. package/dist/serialization/compression.js +261 -0
  175. package/dist/serialization/encryption.d.ts +119 -17
  176. package/dist/serialization/encryption.d.ts.map +1 -1
  177. package/dist/serialization/encryption.js +152 -17
  178. package/dist/serialization/errors.d.ts +13 -0
  179. package/dist/serialization/errors.d.ts.map +1 -1
  180. package/dist/serialization/errors.js +20 -2
  181. package/dist/serialization/format.d.ts +6 -6
  182. package/dist/serialization/format.js +7 -7
  183. package/dist/serialization/hardened.d.ts +156 -0
  184. package/dist/serialization/hardened.d.ts.map +1 -0
  185. package/dist/serialization/hardened.js +538 -0
  186. package/dist/serialization/index.d.ts +10 -8
  187. package/dist/serialization/index.d.ts.map +1 -1
  188. package/dist/serialization/index.js +10 -8
  189. package/dist/serialization/reducers/class-vm.d.ts +20 -0
  190. package/dist/serialization/reducers/class-vm.d.ts.map +1 -0
  191. package/dist/serialization/reducers/class-vm.js +77 -0
  192. package/dist/serialization/reducers/class.d.ts.map +1 -1
  193. package/dist/serialization/reducers/class.js +11 -6
  194. package/dist/serialization/reducers/common-vm.d.ts +15 -0
  195. package/dist/serialization/reducers/common-vm.d.ts.map +1 -0
  196. package/dist/serialization/reducers/common-vm.js +616 -0
  197. package/dist/serialization/reducers/common.d.ts +1 -1
  198. package/dist/serialization/reducers/common.d.ts.map +1 -1
  199. package/dist/serialization/reducers/common.js +202 -62
  200. package/dist/serialization/reducers/step-function-vm.d.ts +44 -0
  201. package/dist/serialization/reducers/step-function-vm.d.ts.map +1 -0
  202. package/dist/serialization/reducers/step-function-vm.js +97 -0
  203. package/dist/serialization/reducers/step-function.d.ts.map +1 -1
  204. package/dist/serialization/reducers/step-function.js +25 -9
  205. package/dist/serialization/step.d.ts +4 -4
  206. package/dist/serialization/step.d.ts.map +1 -1
  207. package/dist/serialization/step.js +9 -5
  208. package/dist/serialization/types.d.ts +80 -1
  209. package/dist/serialization/types.d.ts.map +1 -1
  210. package/dist/serialization/types.js +15 -1
  211. package/dist/serialization/workflow-vm.d.ts +29 -0
  212. package/dist/serialization/workflow-vm.d.ts.map +1 -0
  213. package/dist/serialization/workflow-vm.js +74 -0
  214. package/dist/serialization-format.d.ts +64 -8
  215. package/dist/serialization-format.d.ts.map +1 -1
  216. package/dist/serialization-format.js +225 -73
  217. package/dist/serialization.d.ts +262 -34
  218. package/dist/serialization.d.ts.map +1 -1
  219. package/dist/serialization.js +1885 -277
  220. package/dist/set-attributes.d.ts +13 -0
  221. package/dist/set-attributes.d.ts.map +1 -0
  222. package/dist/set-attributes.js +60 -0
  223. package/dist/source-map.d.ts +25 -0
  224. package/dist/source-map.d.ts.map +1 -1
  225. package/dist/source-map.js +154 -10
  226. package/dist/step/context-storage.d.ts +63 -2
  227. package/dist/step/context-storage.d.ts.map +1 -1
  228. package/dist/step/context-storage.js +7 -5
  229. package/dist/step/writable-stream.d.ts +3 -3
  230. package/dist/step/writable-stream.d.ts.map +1 -1
  231. package/dist/step/writable-stream.js +80 -13
  232. package/dist/step.d.ts.map +1 -1
  233. package/dist/step.js +148 -27
  234. package/dist/symbols.d.ts +50 -0
  235. package/dist/symbols.d.ts.map +1 -1
  236. package/dist/symbols.js +51 -1
  237. package/dist/telemetry/semantic-conventions.d.ts +433 -2
  238. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  239. package/dist/telemetry/semantic-conventions.js +319 -3
  240. package/dist/telemetry.d.ts +91 -0
  241. package/dist/telemetry.d.ts.map +1 -1
  242. package/dist/telemetry.js +244 -17
  243. package/dist/test-support/orchestrator-context.d.ts +25 -0
  244. package/dist/test-support/orchestrator-context.d.ts.map +1 -0
  245. package/dist/test-support/orchestrator-context.js +107 -0
  246. package/dist/types.d.ts +6 -0
  247. package/dist/types.d.ts.map +1 -1
  248. package/dist/types.js +23 -1
  249. package/dist/util.d.ts +0 -5
  250. package/dist/util.d.ts.map +1 -1
  251. package/dist/util.js +1 -15
  252. package/dist/version.d.ts +1 -1
  253. package/dist/version.d.ts.map +1 -1
  254. package/dist/version.js +2 -2
  255. package/dist/vm/index.d.ts.map +1 -1
  256. package/dist/vm/index.js +84 -14
  257. package/dist/vm/script-cache.d.ts +26 -0
  258. package/dist/vm/script-cache.d.ts.map +1 -0
  259. package/dist/vm/script-cache.js +131 -0
  260. package/dist/vm/uint8array-base64.js +1 -1
  261. package/dist/workflow/abort-controller.d.ts +2 -2
  262. package/dist/workflow/abort-controller.d.ts.map +1 -1
  263. package/dist/workflow/abort-controller.js +88 -21
  264. package/dist/workflow/attribute-dispatcher.d.ts +6 -0
  265. package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
  266. package/dist/workflow/attribute-dispatcher.js +45 -0
  267. package/dist/workflow/create-hook.d.ts.map +1 -1
  268. package/dist/workflow/create-hook.js +24 -3
  269. package/dist/workflow/get-workflow-metadata.js +2 -2
  270. package/dist/workflow/hook.d.ts.map +1 -1
  271. package/dist/workflow/hook.js +304 -47
  272. package/dist/workflow/index.d.ts +1 -0
  273. package/dist/workflow/index.d.ts.map +1 -1
  274. package/dist/workflow/index.js +2 -1
  275. package/dist/workflow/set-attributes.d.ts +68 -0
  276. package/dist/workflow/set-attributes.d.ts.map +1 -0
  277. package/dist/workflow/set-attributes.js +60 -0
  278. package/dist/workflow/sleep.d.ts.map +1 -1
  279. package/dist/workflow/sleep.js +58 -12
  280. package/dist/workflow/world-init-stub.d.ts +3 -3
  281. package/dist/workflow/world-init-stub.js +4 -4
  282. package/dist/workflow.d.ts +95 -3
  283. package/dist/workflow.d.ts.map +1 -1
  284. package/dist/workflow.js +900 -561
  285. package/docs/api-reference/create-hook.mdx +89 -10
  286. package/docs/api-reference/create-webhook.mdx +16 -15
  287. package/docs/api-reference/define-hook.mdx +35 -33
  288. package/docs/api-reference/fatal-error.mdx +30 -8
  289. package/docs/api-reference/fetch.mdx +14 -10
  290. package/docs/api-reference/get-step-metadata.mdx +2 -2
  291. package/docs/api-reference/get-workflow-metadata.mdx +3 -3
  292. package/docs/api-reference/get-writable.mdx +7 -7
  293. package/docs/api-reference/index.mdx +4 -1
  294. package/docs/api-reference/retryable-error.mdx +1 -1
  295. package/docs/api-reference/set-attributes.mdx +61 -0
  296. package/docs/api-reference/sleep.mdx +4 -4
  297. package/docs/foundations/cancellation.mdx +31 -32
  298. package/docs/foundations/errors-and-retries.mdx +42 -11
  299. package/docs/foundations/hooks.mdx +64 -35
  300. package/docs/foundations/idempotency.mdx +244 -12
  301. package/docs/foundations/index.mdx +1 -23
  302. package/docs/foundations/meta.json +2 -1
  303. package/docs/foundations/serialization.mdx +21 -22
  304. package/docs/foundations/starting-workflows.mdx +106 -30
  305. package/docs/foundations/streaming.mdx +108 -60
  306. package/docs/foundations/versioning.mdx +263 -0
  307. package/docs/foundations/workflows-and-steps.mdx +9 -9
  308. package/docs/how-it-works/cancellation.mdx +63 -63
  309. package/docs/how-it-works/code-transform.mdx +83 -67
  310. package/docs/how-it-works/encryption.mdx +30 -26
  311. package/docs/how-it-works/event-sourcing.mdx +125 -34
  312. package/docs/how-it-works/framework-integrations.mdx +96 -337
  313. package/docs/how-it-works/understanding-directives.mdx +22 -22
  314. package/package.json +24 -15
  315. package/dist/runtime/step-handler.d.ts +0 -2
  316. package/dist/runtime/step-handler.d.ts.map +0 -1
  317. package/dist/runtime/step-handler.js +0 -776
package/README.md CHANGED
@@ -1,3 +1,8 @@
1
1
  # @workflow/core
2
2
 
3
3
  Core runtime package for [Workflow SDK](https://workflow-sdk.dev).
4
+
5
+ Queued step messages carry immutable run identity in `runContext`, so step
6
+ execution skips the initial `runs.get` and fetches the run row only when
7
+ continuing into workflow replay. Messages from older producers without
8
+ `runContext` retain the initial fetch.
@@ -0,0 +1,5 @@
1
+ import { type AttributeChange } from '@workflow/world/attributes-validation';
2
+ export declare function normalizeAttributeChanges(attrs: Record<string, string | undefined>, options?: {
3
+ allowReservedAttributes?: boolean;
4
+ }): AttributeChange[];
5
+ //# sourceMappingURL=attribute-changes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-changes.d.ts","sourceRoot":"","sources":["../src/attribute-changes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,uCAAuC,CAAC;AAE/C,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACzC,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,eAAe,EAAE,CA4BnB"}
@@ -0,0 +1,25 @@
1
+ import { FatalError } from '@workflow/errors';
2
+ import { AttributeValidationError, validateAttributeChanges, } from '@workflow/world/attributes-validation';
3
+ export function normalizeAttributeChanges(attrs, options = {}) {
4
+ if (attrs === null || typeof attrs !== 'object' || Array.isArray(attrs)) {
5
+ throw new FatalError(`setAttributes requires a plain object, got ${attrs === null ? 'null' : Array.isArray(attrs) ? 'array' : typeof attrs}`);
6
+ }
7
+ const changes = Object.entries(attrs).map(([key, value]) => ({
8
+ key,
9
+ value: value === undefined ? null : value,
10
+ }));
11
+ if (changes.length === 0)
12
+ return changes;
13
+ const allowReservedAttributes = options.allowReservedAttributes === true;
14
+ try {
15
+ validateAttributeChanges(changes, { allowReservedAttributes });
16
+ }
17
+ catch (err) {
18
+ if (err instanceof AttributeValidationError) {
19
+ throw new FatalError(err.message);
20
+ }
21
+ throw err;
22
+ }
23
+ return changes;
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWNoYW5nZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXR0cmlidXRlLWNoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsd0JBQXdCLEdBQ3pCLE1BQU0sdUNBQXVDLENBQUM7QUFFL0MsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxLQUF5QyxFQUN6QyxVQUFpRCxFQUFFO0lBRW5ELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxVQUFVLENBQ2xCLDhDQUNFLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQ3BFLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFzQixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FDMUQsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixHQUFHO1FBQ0gsS0FBSyxFQUFFLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSztLQUMxQyxDQUFDLENBQ0gsQ0FBQztJQUNGLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFFekMsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsdUJBQXVCLEtBQUssSUFBSSxDQUFDO0lBQ3pFLElBQUksQ0FBQztRQUNILHdCQUF3QixDQUFDLE9BQU8sRUFBRSxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksR0FBRyxZQUFZLHdCQUF3QixFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYXRhbEVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQge1xuICB0eXBlIEF0dHJpYnV0ZUNoYW5nZSxcbiAgQXR0cmlidXRlVmFsaWRhdGlvbkVycm9yLFxuICB2YWxpZGF0ZUF0dHJpYnV0ZUNoYW5nZXMsXG59IGZyb20gJ0B3b3JrZmxvdy93b3JsZC9hdHRyaWJ1dGVzLXZhbGlkYXRpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQXR0cmlidXRlQ2hhbmdlcyhcbiAgYXR0cnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4sXG4gIG9wdGlvbnM6IHsgYWxsb3dSZXNlcnZlZEF0dHJpYnV0ZXM/OiBib29sZWFuIH0gPSB7fVxuKTogQXR0cmlidXRlQ2hhbmdlW10ge1xuICBpZiAoYXR0cnMgPT09IG51bGwgfHwgdHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGF0dHJzKSkge1xuICAgIHRocm93IG5ldyBGYXRhbEVycm9yKFxuICAgICAgYHNldEF0dHJpYnV0ZXMgcmVxdWlyZXMgYSBwbGFpbiBvYmplY3QsIGdvdCAke1xuICAgICAgICBhdHRycyA9PT0gbnVsbCA/ICdudWxsJyA6IEFycmF5LmlzQXJyYXkoYXR0cnMpID8gJ2FycmF5JyA6IHR5cGVvZiBhdHRyc1xuICAgICAgfWBcbiAgICApO1xuICB9XG5cbiAgY29uc3QgY2hhbmdlczogQXR0cmlidXRlQ2hhbmdlW10gPSBPYmplY3QuZW50cmllcyhhdHRycykubWFwKFxuICAgIChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZTogdmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB2YWx1ZSxcbiAgICB9KVxuICApO1xuICBpZiAoY2hhbmdlcy5sZW5ndGggPT09IDApIHJldHVybiBjaGFuZ2VzO1xuXG4gIGNvbnN0IGFsbG93UmVzZXJ2ZWRBdHRyaWJ1dGVzID0gb3B0aW9ucy5hbGxvd1Jlc2VydmVkQXR0cmlidXRlcyA9PT0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICB2YWxpZGF0ZUF0dHJpYnV0ZUNoYW5nZXMoY2hhbmdlcywgeyBhbGxvd1Jlc2VydmVkQXR0cmlidXRlcyB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEF0dHJpYnV0ZVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEZhdGFsRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICByZXR1cm4gY2hhbmdlcztcbn1cbiJdfQ==
@@ -15,11 +15,34 @@
15
15
  * `@workflow/core` version that supports it
16
16
  * 3. The `getRunCapabilities()` function will automatically include it
17
17
  *
18
+ * ## Adding a new non-format capability
19
+ *
20
+ * Some capabilities aren't serialization format prefixes: e.g.
21
+ * byte-stream wire framing is an envelope around chunks rather than
22
+ * a content format. For those, add a boolean field to `RunCapabilities`
23
+ * and an entry in `CAPABILITY_VERSION_TABLE` below.
24
+ *
18
25
  * ## History
19
26
  *
20
27
  * - `encr` (AES-256-GCM encryption): added in `4.2.0-beta.64`
21
28
  * Commit: 7618ac36 "Wire AES-GCM encryption into serialization layer (#1251)"
22
29
  * https://github.com/vercel/workflow/commit/7618ac36
30
+ * - `framedByteStreams` (wire-level chunk framing for byte streams): added in `5.0.0-beta.15`
31
+ * - `gzip` (gzip payload compression): added in `5.0.0-beta.18`
32
+ * - `zstd` (zstd payload compression, preferred codec): added in `5.0.0-beta.18`
33
+ * alongside gzip; they co-ship, so any run that can read one can read both.
34
+ * - `encp` (X25519 sealed-box encryption for cross-run writes): added in
35
+ * `5.0.0-beta.37`. Note that producers do **not** gate `encp` on this table:
36
+ * they gate on the presence of `encryptionPublicKey` on the target run,
37
+ * which a run only carries if the deployment that created it could also
38
+ * open `encp`. The entry exists so the capability set stays a complete,
39
+ * auditable description of a run's decoding ability.
40
+ * - Hook-resume consumer protocol ("consumer re-ensures `hook_received` from
41
+ * `hookInput`"): deliberately NOT tracked here. Rather than predict a
42
+ * release cutoff, the run's creating deployment stamps an explicit
43
+ * `hookResumeInputVersion` execution-context marker (mirrored onto the
44
+ * hook's resumeContext by the server); older producers gate their lazy path
45
+ * on that marker.
23
46
  */
24
47
  import { type SerializationFormatType } from './serialization.js';
25
48
  /**
@@ -32,14 +55,24 @@ export interface RunCapabilities {
32
55
  * if encryption is supported, etc.
33
56
  */
34
57
  supportedFormats: ReadonlySet<SerializationFormatType>;
58
+ /**
59
+ * Whether the target run can decode wire-framed byte streams. When true,
60
+ * byte streams (`type: 'bytes'` ReadableStreams passed across boundaries)
61
+ * are wrapped in a length-prefixed frame envelope on the wire so the
62
+ * reader can identify chunk boundaries, which enables auto-reconnect
63
+ * on transient stream errors. When false, byte streams are written as
64
+ * raw bytes (the legacy format) for compatibility with older runs.
65
+ */
66
+ framedByteStreams: boolean;
35
67
  }
36
68
  /**
37
69
  * Look up what serialization capabilities a workflow run supports based on
38
70
  * its `@workflow/core` version string (from `executionContext.workflowCoreVersion`).
39
71
  *
40
72
  * When the version is `undefined`, not a string, or not a valid semver string
41
- * (e.g. very old runs that predate the field, or corrupted metadata),
42
- * we assume the most conservative capabilities (baseline formats only).
73
+ * (e.g. older runs that predate the field, or corrupted metadata),
74
+ * we assume the most conservative capabilities (baseline formats only,
75
+ * non-format capabilities all `false`).
43
76
  */
44
77
  export declare function getRunCapabilities(workflowCoreVersion: string | undefined): RunCapabilities;
45
78
  //# sourceMappingURL=capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,gBAAgB,EAAE,WAAW,CAAC,uBAAuB,CAAC,CAAC;CACxD;AA0BD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GACtC,eAAe,CAcjB"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,gBAAgB,EAAE,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAEvD;;;;;;;OAOG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AA+DD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GACtC,eAAe,CA4BjB"}
@@ -15,11 +15,34 @@
15
15
  * `@workflow/core` version that supports it
16
16
  * 3. The `getRunCapabilities()` function will automatically include it
17
17
  *
18
+ * ## Adding a new non-format capability
19
+ *
20
+ * Some capabilities aren't serialization format prefixes: e.g.
21
+ * byte-stream wire framing is an envelope around chunks rather than
22
+ * a content format. For those, add a boolean field to `RunCapabilities`
23
+ * and an entry in `CAPABILITY_VERSION_TABLE` below.
24
+ *
18
25
  * ## History
19
26
  *
20
27
  * - `encr` (AES-256-GCM encryption): added in `4.2.0-beta.64`
21
28
  * Commit: 7618ac36 "Wire AES-GCM encryption into serialization layer (#1251)"
22
29
  * https://github.com/vercel/workflow/commit/7618ac36
30
+ * - `framedByteStreams` (wire-level chunk framing for byte streams): added in `5.0.0-beta.15`
31
+ * - `gzip` (gzip payload compression): added in `5.0.0-beta.18`
32
+ * - `zstd` (zstd payload compression, preferred codec): added in `5.0.0-beta.18`
33
+ * alongside gzip; they co-ship, so any run that can read one can read both.
34
+ * - `encp` (X25519 sealed-box encryption for cross-run writes): added in
35
+ * `5.0.0-beta.37`. Note that producers do **not** gate `encp` on this table:
36
+ * they gate on the presence of `encryptionPublicKey` on the target run,
37
+ * which a run only carries if the deployment that created it could also
38
+ * open `encp`. The entry exists so the capability set stays a complete,
39
+ * auditable description of a run's decoding ability.
40
+ * - Hook-resume consumer protocol ("consumer re-ensures `hook_received` from
41
+ * `hookInput`"): deliberately NOT tracked here. Rather than predict a
42
+ * release cutoff, the run's creating deployment stamps an explicit
43
+ * `hookResumeInputVersion` execution-context marker (mirrored onto the
44
+ * hook's resumeContext by the server); older producers gate their lazy path
45
+ * on that marker.
23
46
  */
24
47
  import semver from 'semver';
25
48
  import { SerializationFormat, } from './serialization.js';
@@ -30,10 +53,43 @@ import { SerializationFormat, } from './serialization.js';
30
53
  */
31
54
  const FORMAT_VERSION_TABLE = [
32
55
  { format: SerializationFormat.ENCRYPTED, minVersion: '4.2.0-beta.64' },
56
+ // TODO(release): verify this matches the actual version that ships payload
57
+ // compression. If a "Version Packages (beta)" PR merges before this change,
58
+ // bump to the next beta. A too-low cutoff makes new producers write
59
+ // compressed payloads to consumers that cannot decompress them; too-high
60
+ // merely delays the optimization (safe). gzip and zstd ship together, so
61
+ // they share a min version: a run that can read one can read both.
62
+ { format: SerializationFormat.GZIP, minVersion: '5.0.0-beta.18' },
63
+ { format: SerializationFormat.ZSTD, minVersion: '5.0.0-beta.18' },
64
+ // TODO(release): verify this matches the actual version that ships sealed-box
65
+ // encryption. If a "Version Packages (beta)" PR merges before this change,
66
+ // bump to the next beta. Unlike the entries above, a wrong cutoff here is
67
+ // not a correctness hazard: producers gate `encp` on the target run carrying
68
+ // an `encryptionPublicKey`, not on this table (see History above).
69
+ { format: SerializationFormat.SEALED, minVersion: '5.0.0-beta.37' },
33
70
  // Future entries:
34
71
  // { format: SerializationFormat.CBOR, minVersion: '5.x.y' },
35
72
  // { format: SerializationFormat.ENCRYPTED_V2, minVersion: '5.x.y' },
36
73
  ];
74
+ /**
75
+ * Maps non-format capability flags (booleans on `RunCapabilities`) to the
76
+ * minimum `@workflow/core` version that introduced support for them.
77
+ */
78
+ const CAPABILITY_VERSION_TABLE = [
79
+ // TODO(release): verify this matches the actual version that ships byte-stream
80
+ // framing. If a "Version Packages (beta)" PR merges before this change, bump
81
+ // to the next beta. A too-low cutoff makes new producers write framed bytes to
82
+ // consumers that cannot unframe them (silent corruption); too-high merely
83
+ // delays the optimization (safe).
84
+ { capability: 'framedByteStreams', minVersion: '5.0.0-beta.15' },
85
+ // NOTE: the hook-resume consumer protocol ("does the consumer re-ensure
86
+ // `hook_received` from the queue message's `hookInput`?") is intentionally
87
+ // NOT gated here. A version-compare against a predicted release cutoff is a
88
+ // guess; instead the run's creating deployment stamps an explicit
89
+ // `hookResumeInputVersion` marker into its execution context, which the
90
+ // server mirrors onto the hook's resumeContext. Older producers gate their
91
+ // lazy path on that marker.
92
+ ];
37
93
  /**
38
94
  * The set of formats supported by all specVersion 2 runs, regardless of
39
95
  * `@workflow/core` version. These are the baseline formats that were present
@@ -47,12 +103,16 @@ const BASELINE_FORMATS = new Set([
47
103
  * its `@workflow/core` version string (from `executionContext.workflowCoreVersion`).
48
104
  *
49
105
  * When the version is `undefined`, not a string, or not a valid semver string
50
- * (e.g. very old runs that predate the field, or corrupted metadata),
51
- * we assume the most conservative capabilities (baseline formats only).
106
+ * (e.g. older runs that predate the field, or corrupted metadata),
107
+ * we assume the most conservative capabilities (baseline formats only,
108
+ * non-format capabilities all `false`).
52
109
  */
53
110
  export function getRunCapabilities(workflowCoreVersion) {
54
111
  if (!workflowCoreVersion || !semver.valid(workflowCoreVersion)) {
55
- return { supportedFormats: BASELINE_FORMATS };
112
+ return {
113
+ supportedFormats: BASELINE_FORMATS,
114
+ framedByteStreams: false,
115
+ };
56
116
  }
57
117
  const formats = new Set(BASELINE_FORMATS);
58
118
  for (const { format, minVersion } of FORMAT_VERSION_TABLE) {
@@ -60,6 +120,15 @@ export function getRunCapabilities(workflowCoreVersion) {
60
120
  formats.add(format);
61
121
  }
62
122
  }
63
- return { supportedFormats: formats };
123
+ const result = {
124
+ supportedFormats: formats,
125
+ framedByteStreams: false,
126
+ };
127
+ for (const { capability, minVersion } of CAPABILITY_VERSION_TABLE) {
128
+ if (semver.gte(workflowCoreVersion, minVersion)) {
129
+ result[capability] = true;
130
+ }
131
+ }
132
+ return result;
64
133
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwYWJpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NhcGFiaWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sb0JBQW9CLENBQUM7QUFjNUI7Ozs7R0FJRztBQUNILE1BQU0sb0JBQW9CLEdBR3JCO0lBQ0gsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDdEUsa0JBQWtCO0lBQ2xCLDZEQUE2RDtJQUM3RCxxRUFBcUU7Q0FDdEUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLGdCQUFnQixHQUF5QyxJQUFJLEdBQUcsQ0FBQztJQUNyRSxtQkFBbUIsQ0FBQyxVQUFVO0NBQy9CLENBQUMsQ0FBQztBQUVIOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLG1CQUF1QztJQUV2QyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQTBCLGdCQUFnQixDQUFDLENBQUM7SUFFbkUsS0FBSyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDMUQsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYXBhYmlsaXRpZXMgdGFibGUgZm9yIHdvcmtmbG93IHJ1bnMgYmFzZWQgb24gdGhlaXIgYEB3b3JrZmxvdy9jb3JlYCB2ZXJzaW9uLlxuICpcbiAqIFdoZW4gcmVzdW1pbmcgYSBob29rIG9yIHdlYmhvb2ssIHRoZSBwYXlsb2FkIG11c3QgYmUgZW5jb2RlZCBpbiBhIGZvcm1hdFxuICogdGhhdCB0aGUgKnRhcmdldCogd29ya2Zsb3cgcnVuJ3MgZGVwbG95bWVudCBjYW4gZGVjb2RlLiBUaGlzIG1vZHVsZSBwcm92aWRlc1xuICogYSB3YXkgdG8gbG9vayB1cCB3aGF0IHNlcmlhbGl6YXRpb24gZm9ybWF0cyBhIGdpdmVuIGBAd29ya2Zsb3cvY29yZWAgdmVyc2lvblxuICogc3VwcG9ydHMsIHNvIHRoYXQgbmV3ZXIgZGVwbG95bWVudHMgY2FuIGF2b2lkIGVuY29kaW5nIHBheWxvYWRzIGluIGZvcm1hdHNcbiAqIHRoYXQgb2xkZXIgZGVwbG95bWVudHMgZG9uJ3QgdW5kZXJzdGFuZCAoZS5nLiwgdGhlIGBlbmNyYCBlbmNyeXB0aW9uIGZvcm1hdCkuXG4gKlxuICogIyMgQWRkaW5nIGEgbmV3IGZvcm1hdFxuICpcbiAqIFdoZW4gYSBuZXcgc2VyaWFsaXphdGlvbiBmb3JtYXQgaXMgaW50cm9kdWNlZDpcbiAqIDEuIEFkZCB0aGUgZm9ybWF0IGNvbnN0YW50IHRvIGBTZXJpYWxpemF0aW9uRm9ybWF0YCBpbiBgc2VyaWFsaXphdGlvbi50c2BcbiAqIDIuIEFkZCBhbiBlbnRyeSB0byBgRk9STUFUX1ZFUlNJT05fVEFCTEVgIGJlbG93IHdpdGggdGhlIG1pbmltdW1cbiAqICAgIGBAd29ya2Zsb3cvY29yZWAgdmVyc2lvbiB0aGF0IHN1cHBvcnRzIGl0XG4gKiAzLiBUaGUgYGdldFJ1bkNhcGFiaWxpdGllcygpYCBmdW5jdGlvbiB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jbHVkZSBpdFxuICpcbiAqICMjIEhpc3RvcnlcbiAqXG4gKiAtIGBlbmNyYCAoQUVTLTI1Ni1HQ00gZW5jcnlwdGlvbik6IGFkZGVkIGluIGA0LjIuMC1iZXRhLjY0YFxuICogICBDb21taXQ6IDc2MThhYzM2IFwiV2lyZSBBRVMtR0NNIGVuY3J5cHRpb24gaW50byBzZXJpYWxpemF0aW9uIGxheWVyICgjMTI1MSlcIlxuICogICBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL3dvcmtmbG93L2NvbW1pdC83NjE4YWMzNlxuICovXG5cbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7XG4gIFNlcmlhbGl6YXRpb25Gb3JtYXQsXG4gIHR5cGUgU2VyaWFsaXphdGlvbkZvcm1hdFR5cGUsXG59IGZyb20gJy4vc2VyaWFsaXphdGlvbi5qcyc7XG5cbi8qKlxuICogQ2FwYWJpbGl0aWVzIG9mIGEgd29ya2Zsb3cgcnVuIGJhc2VkIG9uIGl0cyBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuQ2FwYWJpbGl0aWVzIHtcbiAgLyoqXG4gICAqIFRoZSBzZXQgb2Ygc2VyaWFsaXphdGlvbiBmb3JtYXQgcHJlZml4ZXMgdGhhdCB0aGUgdGFyZ2V0IHJ1biBjYW4gZGVjb2RlLlxuICAgKiBVc2UgYHN1cHBvcnRlZEZvcm1hdHMuaGFzKFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVEKWAgdG8gY2hlY2tcbiAgICogaWYgZW5jcnlwdGlvbiBpcyBzdXBwb3J0ZWQsIGV0Yy5cbiAgICovXG4gIHN1cHBvcnRlZEZvcm1hdHM6IFJlYWRvbmx5U2V0PFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlPjtcbn1cblxuLyoqXG4gKiBNYXBzIHNlcmlhbGl6YXRpb24gZm9ybWF0IGlkZW50aWZpZXJzIHRvIHRoZSBtaW5pbXVtIGBAd29ya2Zsb3cvY29yZWBcbiAqIHZlcnNpb24gdGhhdCBpbnRyb2R1Y2VkIHN1cHBvcnQgZm9yIHRoZW0uIEZvcm1hdHMgbm90IGxpc3RlZCBoZXJlIGFyZVxuICogYXNzdW1lZCB0byBiZSBzdXBwb3J0ZWQgYnkgYWxsIHNwZWNWZXJzaW9uIDIgcnVucyAoZS5nLiwgYGRldmxgKS5cbiAqL1xuY29uc3QgRk9STUFUX1ZFUlNJT05fVEFCTEU6IFJlYWRvbmx5QXJyYXk8e1xuICBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlO1xuICBtaW5WZXJzaW9uOiBzdHJpbmc7XG59PiA9IFtcbiAgeyBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVELCBtaW5WZXJzaW9uOiAnNC4yLjAtYmV0YS42NCcgfSxcbiAgLy8gRnV0dXJlIGVudHJpZXM6XG4gIC8vIHsgZm9ybWF0OiBTZXJpYWxpemF0aW9uRm9ybWF0LkNCT1IsIG1pblZlcnNpb246ICc1LngueScgfSxcbiAgLy8geyBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVEX1YyLCBtaW5WZXJzaW9uOiAnNS54LnknIH0sXG5dO1xuXG4vKipcbiAqIFRoZSBzZXQgb2YgZm9ybWF0cyBzdXBwb3J0ZWQgYnkgYWxsIHNwZWNWZXJzaW9uIDIgcnVucywgcmVnYXJkbGVzcyBvZlxuICogYEB3b3JrZmxvdy9jb3JlYCB2ZXJzaW9uLiBUaGVzZSBhcmUgdGhlIGJhc2VsaW5lIGZvcm1hdHMgdGhhdCB3ZXJlIHByZXNlbnRcbiAqIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzcGVjVmVyc2lvbiAyIHByb3RvY29sLlxuICovXG5jb25zdCBCQVNFTElORV9GT1JNQVRTOiBSZWFkb25seVNldDxTZXJpYWxpemF0aW9uRm9ybWF0VHlwZT4gPSBuZXcgU2V0KFtcbiAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuXSk7XG5cbi8qKlxuICogTG9vayB1cCB3aGF0IHNlcmlhbGl6YXRpb24gY2FwYWJpbGl0aWVzIGEgd29ya2Zsb3cgcnVuIHN1cHBvcnRzIGJhc2VkIG9uXG4gKiBpdHMgYEB3b3JrZmxvdy9jb3JlYCB2ZXJzaW9uIHN0cmluZyAoZnJvbSBgZXhlY3V0aW9uQ29udGV4dC53b3JrZmxvd0NvcmVWZXJzaW9uYCkuXG4gKlxuICogV2hlbiB0aGUgdmVyc2lvbiBpcyBgdW5kZWZpbmVkYCwgbm90IGEgc3RyaW5nLCBvciBub3QgYSB2YWxpZCBzZW12ZXIgc3RyaW5nXG4gKiAoZS5nLiB2ZXJ5IG9sZCBydW5zIHRoYXQgcHJlZGF0ZSB0aGUgZmllbGQsIG9yIGNvcnJ1cHRlZCBtZXRhZGF0YSksXG4gKiB3ZSBhc3N1bWUgdGhlIG1vc3QgY29uc2VydmF0aXZlIGNhcGFiaWxpdGllcyAoYmFzZWxpbmUgZm9ybWF0cyBvbmx5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJ1bkNhcGFiaWxpdGllcyhcbiAgd29ya2Zsb3dDb3JlVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBSdW5DYXBhYmlsaXRpZXMge1xuICBpZiAoIXdvcmtmbG93Q29yZVZlcnNpb24gfHwgIXNlbXZlci52YWxpZCh3b3JrZmxvd0NvcmVWZXJzaW9uKSkge1xuICAgIHJldHVybiB7IHN1cHBvcnRlZEZvcm1hdHM6IEJBU0VMSU5FX0ZPUk1BVFMgfTtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdHMgPSBuZXcgU2V0PFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlPihCQVNFTElORV9GT1JNQVRTKTtcblxuICBmb3IgKGNvbnN0IHsgZm9ybWF0LCBtaW5WZXJzaW9uIH0gb2YgRk9STUFUX1ZFUlNJT05fVEFCTEUpIHtcbiAgICBpZiAoc2VtdmVyLmd0ZSh3b3JrZmxvd0NvcmVWZXJzaW9uLCBtaW5WZXJzaW9uKSkge1xuICAgICAgZm9ybWF0cy5hZGQoZm9ybWF0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBzdXBwb3J0ZWRGb3JtYXRzOiBmb3JtYXRzIH07XG59XG4iXX0=
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwYWJpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NhcGFiaWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBRUgsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxtQkFBbUIsR0FFcEIsTUFBTSxvQkFBb0IsQ0FBQztBQXdCNUI7Ozs7R0FJRztBQUNILE1BQU0sb0JBQW9CLEdBR3JCO0lBQ0gsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDdEUsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSxvRUFBb0U7SUFDcEUseUVBQXlFO0lBQ3pFLHlFQUF5RTtJQUN6RSxtRUFBbUU7SUFDbkUsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDakUsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDakUsOEVBQThFO0lBQzlFLDJFQUEyRTtJQUMzRSwwRUFBMEU7SUFDMUUsNkVBQTZFO0lBQzdFLG1FQUFtRTtJQUNuRSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRTtJQUNuRSxrQkFBa0I7SUFDbEIsNkRBQTZEO0lBQzdELHFFQUFxRTtDQUN0RSxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSx3QkFBd0IsR0FHekI7SUFDSCwrRUFBK0U7SUFDL0UsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSwwRUFBMEU7SUFDMUUsa0NBQWtDO0lBQ2xDLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDaEUsd0VBQXdFO0lBQ3hFLDJFQUEyRTtJQUMzRSw0RUFBNEU7SUFDNUUsa0VBQWtFO0lBQ2xFLHdFQUF3RTtJQUN4RSwyRUFBMkU7SUFDM0UsNEJBQTRCO0NBQzdCLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBeUMsSUFBSSxHQUFHLENBQUM7SUFDckUsbUJBQW1CLENBQUMsVUFBVTtDQUMvQixDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsbUJBQXVDO0lBRXZDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1FBQy9ELE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsaUJBQWlCLEVBQUUsS0FBSztTQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUEwQixnQkFBZ0IsQ0FBQyxDQUFDO0lBRW5FLEtBQUssTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQzFELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBb0I7UUFDOUIsZ0JBQWdCLEVBQUUsT0FBTztRQUN6QixpQkFBaUIsRUFBRSxLQUFLO0tBQ3pCLENBQUM7SUFFRixLQUFLLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUNsRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FwYWJpbGl0aWVzIHRhYmxlIGZvciB3b3JrZmxvdyBydW5zIGJhc2VkIG9uIHRoZWlyIGBAd29ya2Zsb3cvY29yZWAgdmVyc2lvbi5cbiAqXG4gKiBXaGVuIHJlc3VtaW5nIGEgaG9vayBvciB3ZWJob29rLCB0aGUgcGF5bG9hZCBtdXN0IGJlIGVuY29kZWQgaW4gYSBmb3JtYXRcbiAqIHRoYXQgdGhlICp0YXJnZXQqIHdvcmtmbG93IHJ1bidzIGRlcGxveW1lbnQgY2FuIGRlY29kZS4gVGhpcyBtb2R1bGUgcHJvdmlkZXNcbiAqIGEgd2F5IHRvIGxvb2sgdXAgd2hhdCBzZXJpYWxpemF0aW9uIGZvcm1hdHMgYSBnaXZlbiBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb25cbiAqIHN1cHBvcnRzLCBzbyB0aGF0IG5ld2VyIGRlcGxveW1lbnRzIGNhbiBhdm9pZCBlbmNvZGluZyBwYXlsb2FkcyBpbiBmb3JtYXRzXG4gKiB0aGF0IG9sZGVyIGRlcGxveW1lbnRzIGRvbid0IHVuZGVyc3RhbmQgKGUuZy4sIHRoZSBgZW5jcmAgZW5jcnlwdGlvbiBmb3JtYXQpLlxuICpcbiAqICMjIEFkZGluZyBhIG5ldyBmb3JtYXRcbiAqXG4gKiBXaGVuIGEgbmV3IHNlcmlhbGl6YXRpb24gZm9ybWF0IGlzIGludHJvZHVjZWQ6XG4gKiAxLiBBZGQgdGhlIGZvcm1hdCBjb25zdGFudCB0byBgU2VyaWFsaXphdGlvbkZvcm1hdGAgaW4gYHNlcmlhbGl6YXRpb24udHNgXG4gKiAyLiBBZGQgYW4gZW50cnkgdG8gYEZPUk1BVF9WRVJTSU9OX1RBQkxFYCBiZWxvdyB3aXRoIHRoZSBtaW5pbXVtXG4gKiAgICBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb24gdGhhdCBzdXBwb3J0cyBpdFxuICogMy4gVGhlIGBnZXRSdW5DYXBhYmlsaXRpZXMoKWAgZnVuY3Rpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGluY2x1ZGUgaXRcbiAqXG4gKiAjIyBBZGRpbmcgYSBuZXcgbm9uLWZvcm1hdCBjYXBhYmlsaXR5XG4gKlxuICogU29tZSBjYXBhYmlsaXRpZXMgYXJlbid0IHNlcmlhbGl6YXRpb24gZm9ybWF0IHByZWZpeGVzOiBlLmcuXG4gKiBieXRlLXN0cmVhbSB3aXJlIGZyYW1pbmcgaXMgYW4gZW52ZWxvcGUgYXJvdW5kIGNodW5rcyByYXRoZXIgdGhhblxuICogYSBjb250ZW50IGZvcm1hdC4gRm9yIHRob3NlLCBhZGQgYSBib29sZWFuIGZpZWxkIHRvIGBSdW5DYXBhYmlsaXRpZXNgXG4gKiBhbmQgYW4gZW50cnkgaW4gYENBUEFCSUxJVFlfVkVSU0lPTl9UQUJMRWAgYmVsb3cuXG4gKlxuICogIyMgSGlzdG9yeVxuICpcbiAqIC0gYGVuY3JgIChBRVMtMjU2LUdDTSBlbmNyeXB0aW9uKTogYWRkZWQgaW4gYDQuMi4wLWJldGEuNjRgXG4gKiAgIENvbW1pdDogNzYxOGFjMzYgXCJXaXJlIEFFUy1HQ00gZW5jcnlwdGlvbiBpbnRvIHNlcmlhbGl6YXRpb24gbGF5ZXIgKCMxMjUxKVwiXG4gKiAgIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvd29ya2Zsb3cvY29tbWl0Lzc2MThhYzM2XG4gKiAtIGBmcmFtZWRCeXRlU3RyZWFtc2AgKHdpcmUtbGV2ZWwgY2h1bmsgZnJhbWluZyBmb3IgYnl0ZSBzdHJlYW1zKTogYWRkZWQgaW4gYDUuMC4wLWJldGEuMTVgXG4gKiAtIGBnemlwYCAoZ3ppcCBwYXlsb2FkIGNvbXByZXNzaW9uKTogYWRkZWQgaW4gYDUuMC4wLWJldGEuMThgXG4gKiAtIGB6c3RkYCAoenN0ZCBwYXlsb2FkIGNvbXByZXNzaW9uLCBwcmVmZXJyZWQgY29kZWMpOiBhZGRlZCBpbiBgNS4wLjAtYmV0YS4xOGBcbiAqICAgYWxvbmdzaWRlIGd6aXA7IHRoZXkgY28tc2hpcCwgc28gYW55IHJ1biB0aGF0IGNhbiByZWFkIG9uZSBjYW4gcmVhZCBib3RoLlxuICogLSBgZW5jcGAgKFgyNTUxOSBzZWFsZWQtYm94IGVuY3J5cHRpb24gZm9yIGNyb3NzLXJ1biB3cml0ZXMpOiBhZGRlZCBpblxuICogICBgNS4wLjAtYmV0YS4zN2AuIE5vdGUgdGhhdCBwcm9kdWNlcnMgZG8gKipub3QqKiBnYXRlIGBlbmNwYCBvbiB0aGlzIHRhYmxlOlxuICogICB0aGV5IGdhdGUgb24gdGhlIHByZXNlbmNlIG9mIGBlbmNyeXB0aW9uUHVibGljS2V5YCBvbiB0aGUgdGFyZ2V0IHJ1bixcbiAqICAgd2hpY2ggYSBydW4gb25seSBjYXJyaWVzIGlmIHRoZSBkZXBsb3ltZW50IHRoYXQgY3JlYXRlZCBpdCBjb3VsZCBhbHNvXG4gKiAgIG9wZW4gYGVuY3BgLiBUaGUgZW50cnkgZXhpc3RzIHNvIHRoZSBjYXBhYmlsaXR5IHNldCBzdGF5cyBhIGNvbXBsZXRlLFxuICogICBhdWRpdGFibGUgZGVzY3JpcHRpb24gb2YgYSBydW4ncyBkZWNvZGluZyBhYmlsaXR5LlxuICogLSBIb29rLXJlc3VtZSBjb25zdW1lciBwcm90b2NvbCAoXCJjb25zdW1lciByZS1lbnN1cmVzIGBob29rX3JlY2VpdmVkYCBmcm9tXG4gKiAgIGBob29rSW5wdXRgXCIpOiBkZWxpYmVyYXRlbHkgTk9UIHRyYWNrZWQgaGVyZS4gUmF0aGVyIHRoYW4gcHJlZGljdCBhXG4gKiAgIHJlbGVhc2UgY3V0b2ZmLCB0aGUgcnVuJ3MgY3JlYXRpbmcgZGVwbG95bWVudCBzdGFtcHMgYW4gZXhwbGljaXRcbiAqICAgYGhvb2tSZXN1bWVJbnB1dFZlcnNpb25gIGV4ZWN1dGlvbi1jb250ZXh0IG1hcmtlciAobWlycm9yZWQgb250byB0aGVcbiAqICAgaG9vaydzIHJlc3VtZUNvbnRleHQgYnkgdGhlIHNlcnZlcik7IG9sZGVyIHByb2R1Y2VycyBnYXRlIHRoZWlyIGxhenkgcGF0aFxuICogICBvbiB0aGF0IG1hcmtlci5cbiAqL1xuXG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQge1xuICBTZXJpYWxpemF0aW9uRm9ybWF0LFxuICB0eXBlIFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlLFxufSBmcm9tICcuL3NlcmlhbGl6YXRpb24uanMnO1xuXG4vKipcbiAqIENhcGFiaWxpdGllcyBvZiBhIHdvcmtmbG93IHJ1biBiYXNlZCBvbiBpdHMgYEB3b3JrZmxvdy9jb3JlYCB2ZXJzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bkNhcGFiaWxpdGllcyB7XG4gIC8qKlxuICAgKiBUaGUgc2V0IG9mIHNlcmlhbGl6YXRpb24gZm9ybWF0IHByZWZpeGVzIHRoYXQgdGhlIHRhcmdldCBydW4gY2FuIGRlY29kZS5cbiAgICogVXNlIGBzdXBwb3J0ZWRGb3JtYXRzLmhhcyhTZXJpYWxpemF0aW9uRm9ybWF0LkVOQ1JZUFRFRClgIHRvIGNoZWNrXG4gICAqIGlmIGVuY3J5cHRpb24gaXMgc3VwcG9ydGVkLCBldGMuXG4gICAqL1xuICBzdXBwb3J0ZWRGb3JtYXRzOiBSZWFkb25seVNldDxTZXJpYWxpemF0aW9uRm9ybWF0VHlwZT47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRhcmdldCBydW4gY2FuIGRlY29kZSB3aXJlLWZyYW1lZCBieXRlIHN0cmVhbXMuIFdoZW4gdHJ1ZSxcbiAgICogYnl0ZSBzdHJlYW1zIChgdHlwZTogJ2J5dGVzJ2AgUmVhZGFibGVTdHJlYW1zIHBhc3NlZCBhY3Jvc3MgYm91bmRhcmllcylcbiAgICogYXJlIHdyYXBwZWQgaW4gYSBsZW5ndGgtcHJlZml4ZWQgZnJhbWUgZW52ZWxvcGUgb24gdGhlIHdpcmUgc28gdGhlXG4gICAqIHJlYWRlciBjYW4gaWRlbnRpZnkgY2h1bmsgYm91bmRhcmllcywgd2hpY2ggZW5hYmxlcyBhdXRvLXJlY29ubmVjdFxuICAgKiBvbiB0cmFuc2llbnQgc3RyZWFtIGVycm9ycy4gV2hlbiBmYWxzZSwgYnl0ZSBzdHJlYW1zIGFyZSB3cml0dGVuIGFzXG4gICAqIHJhdyBieXRlcyAodGhlIGxlZ2FjeSBmb3JtYXQpIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgcnVucy5cbiAgICovXG4gIGZyYW1lZEJ5dGVTdHJlYW1zOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1hcHMgc2VyaWFsaXphdGlvbiBmb3JtYXQgaWRlbnRpZmllcnMgdG8gdGhlIG1pbmltdW0gYEB3b3JrZmxvdy9jb3JlYFxuICogdmVyc2lvbiB0aGF0IGludHJvZHVjZWQgc3VwcG9ydCBmb3IgdGhlbS4gRm9ybWF0cyBub3QgbGlzdGVkIGhlcmUgYXJlXG4gKiBhc3N1bWVkIHRvIGJlIHN1cHBvcnRlZCBieSBhbGwgc3BlY1ZlcnNpb24gMiBydW5zIChlLmcuLCBgZGV2bGApLlxuICovXG5jb25zdCBGT1JNQVRfVkVSU0lPTl9UQUJMRTogUmVhZG9ubHlBcnJheTx7XG4gIGZvcm1hdDogU2VyaWFsaXphdGlvbkZvcm1hdFR5cGU7XG4gIG1pblZlcnNpb246IHN0cmluZztcbn0+ID0gW1xuICB7IGZvcm1hdDogU2VyaWFsaXphdGlvbkZvcm1hdC5FTkNSWVBURUQsIG1pblZlcnNpb246ICc0LjIuMC1iZXRhLjY0JyB9LFxuICAvLyBUT0RPKHJlbGVhc2UpOiB2ZXJpZnkgdGhpcyBtYXRjaGVzIHRoZSBhY3R1YWwgdmVyc2lvbiB0aGF0IHNoaXBzIHBheWxvYWRcbiAgLy8gY29tcHJlc3Npb24uIElmIGEgXCJWZXJzaW9uIFBhY2thZ2VzIChiZXRhKVwiIFBSIG1lcmdlcyBiZWZvcmUgdGhpcyBjaGFuZ2UsXG4gIC8vIGJ1bXAgdG8gdGhlIG5leHQgYmV0YS4gQSB0b28tbG93IGN1dG9mZiBtYWtlcyBuZXcgcHJvZHVjZXJzIHdyaXRlXG4gIC8vIGNvbXByZXNzZWQgcGF5bG9hZHMgdG8gY29uc3VtZXJzIHRoYXQgY2Fubm90IGRlY29tcHJlc3MgdGhlbTsgdG9vLWhpZ2hcbiAgLy8gbWVyZWx5IGRlbGF5cyB0aGUgb3B0aW1pemF0aW9uIChzYWZlKS4gZ3ppcCBhbmQgenN0ZCBzaGlwIHRvZ2V0aGVyLCBzb1xuICAvLyB0aGV5IHNoYXJlIGEgbWluIHZlcnNpb246IGEgcnVuIHRoYXQgY2FuIHJlYWQgb25lIGNhbiByZWFkIGJvdGguXG4gIHsgZm9ybWF0OiBTZXJpYWxpemF0aW9uRm9ybWF0LkdaSVAsIG1pblZlcnNpb246ICc1LjAuMC1iZXRhLjE4JyB9LFxuICB7IGZvcm1hdDogU2VyaWFsaXphdGlvbkZvcm1hdC5aU1RELCBtaW5WZXJzaW9uOiAnNS4wLjAtYmV0YS4xOCcgfSxcbiAgLy8gVE9ETyhyZWxlYXNlKTogdmVyaWZ5IHRoaXMgbWF0Y2hlcyB0aGUgYWN0dWFsIHZlcnNpb24gdGhhdCBzaGlwcyBzZWFsZWQtYm94XG4gIC8vIGVuY3J5cHRpb24uIElmIGEgXCJWZXJzaW9uIFBhY2thZ2VzIChiZXRhKVwiIFBSIG1lcmdlcyBiZWZvcmUgdGhpcyBjaGFuZ2UsXG4gIC8vIGJ1bXAgdG8gdGhlIG5leHQgYmV0YS4gVW5saWtlIHRoZSBlbnRyaWVzIGFib3ZlLCBhIHdyb25nIGN1dG9mZiBoZXJlIGlzXG4gIC8vIG5vdCBhIGNvcnJlY3RuZXNzIGhhemFyZDogcHJvZHVjZXJzIGdhdGUgYGVuY3BgIG9uIHRoZSB0YXJnZXQgcnVuIGNhcnJ5aW5nXG4gIC8vIGFuIGBlbmNyeXB0aW9uUHVibGljS2V5YCwgbm90IG9uIHRoaXMgdGFibGUgKHNlZSBIaXN0b3J5IGFib3ZlKS5cbiAgeyBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXQuU0VBTEVELCBtaW5WZXJzaW9uOiAnNS4wLjAtYmV0YS4zNycgfSxcbiAgLy8gRnV0dXJlIGVudHJpZXM6XG4gIC8vIHsgZm9ybWF0OiBTZXJpYWxpemF0aW9uRm9ybWF0LkNCT1IsIG1pblZlcnNpb246ICc1LngueScgfSxcbiAgLy8geyBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVEX1YyLCBtaW5WZXJzaW9uOiAnNS54LnknIH0sXG5dO1xuXG4vKipcbiAqIE1hcHMgbm9uLWZvcm1hdCBjYXBhYmlsaXR5IGZsYWdzIChib29sZWFucyBvbiBgUnVuQ2FwYWJpbGl0aWVzYCkgdG8gdGhlXG4gKiBtaW5pbXVtIGBAd29ya2Zsb3cvY29yZWAgdmVyc2lvbiB0aGF0IGludHJvZHVjZWQgc3VwcG9ydCBmb3IgdGhlbS5cbiAqL1xuY29uc3QgQ0FQQUJJTElUWV9WRVJTSU9OX1RBQkxFOiBSZWFkb25seUFycmF5PHtcbiAgY2FwYWJpbGl0eToga2V5b2YgT21pdDxSdW5DYXBhYmlsaXRpZXMsICdzdXBwb3J0ZWRGb3JtYXRzJz47XG4gIG1pblZlcnNpb246IHN0cmluZztcbn0+ID0gW1xuICAvLyBUT0RPKHJlbGVhc2UpOiB2ZXJpZnkgdGhpcyBtYXRjaGVzIHRoZSBhY3R1YWwgdmVyc2lvbiB0aGF0IHNoaXBzIGJ5dGUtc3RyZWFtXG4gIC8vIGZyYW1pbmcuIElmIGEgXCJWZXJzaW9uIFBhY2thZ2VzIChiZXRhKVwiIFBSIG1lcmdlcyBiZWZvcmUgdGhpcyBjaGFuZ2UsIGJ1bXBcbiAgLy8gdG8gdGhlIG5leHQgYmV0YS4gQSB0b28tbG93IGN1dG9mZiBtYWtlcyBuZXcgcHJvZHVjZXJzIHdyaXRlIGZyYW1lZCBieXRlcyB0b1xuICAvLyBjb25zdW1lcnMgdGhhdCBjYW5ub3QgdW5mcmFtZSB0aGVtIChzaWxlbnQgY29ycnVwdGlvbik7IHRvby1oaWdoIG1lcmVseVxuICAvLyBkZWxheXMgdGhlIG9wdGltaXphdGlvbiAoc2FmZSkuXG4gIHsgY2FwYWJpbGl0eTogJ2ZyYW1lZEJ5dGVTdHJlYW1zJywgbWluVmVyc2lvbjogJzUuMC4wLWJldGEuMTUnIH0sXG4gIC8vIE5PVEU6IHRoZSBob29rLXJlc3VtZSBjb25zdW1lciBwcm90b2NvbCAoXCJkb2VzIHRoZSBjb25zdW1lciByZS1lbnN1cmVcbiAgLy8gYGhvb2tfcmVjZWl2ZWRgIGZyb20gdGhlIHF1ZXVlIG1lc3NhZ2UncyBgaG9va0lucHV0YD9cIikgaXMgaW50ZW50aW9uYWxseVxuICAvLyBOT1QgZ2F0ZWQgaGVyZS4gQSB2ZXJzaW9uLWNvbXBhcmUgYWdhaW5zdCBhIHByZWRpY3RlZCByZWxlYXNlIGN1dG9mZiBpcyBhXG4gIC8vIGd1ZXNzOyBpbnN0ZWFkIHRoZSBydW4ncyBjcmVhdGluZyBkZXBsb3ltZW50IHN0YW1wcyBhbiBleHBsaWNpdFxuICAvLyBgaG9va1Jlc3VtZUlucHV0VmVyc2lvbmAgbWFya2VyIGludG8gaXRzIGV4ZWN1dGlvbiBjb250ZXh0LCB3aGljaCB0aGVcbiAgLy8gc2VydmVyIG1pcnJvcnMgb250byB0aGUgaG9vaydzIHJlc3VtZUNvbnRleHQuIE9sZGVyIHByb2R1Y2VycyBnYXRlIHRoZWlyXG4gIC8vIGxhenkgcGF0aCBvbiB0aGF0IG1hcmtlci5cbl07XG5cbi8qKlxuICogVGhlIHNldCBvZiBmb3JtYXRzIHN1cHBvcnRlZCBieSBhbGwgc3BlY1ZlcnNpb24gMiBydW5zLCByZWdhcmRsZXNzIG9mXG4gKiBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb24uIFRoZXNlIGFyZSB0aGUgYmFzZWxpbmUgZm9ybWF0cyB0aGF0IHdlcmUgcHJlc2VudFxuICogZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHNwZWNWZXJzaW9uIDIgcHJvdG9jb2wuXG4gKi9cbmNvbnN0IEJBU0VMSU5FX0ZPUk1BVFM6IFJlYWRvbmx5U2V0PFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlPiA9IG5ldyBTZXQoW1xuICBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEsXG5dKTtcblxuLyoqXG4gKiBMb29rIHVwIHdoYXQgc2VyaWFsaXphdGlvbiBjYXBhYmlsaXRpZXMgYSB3b3JrZmxvdyBydW4gc3VwcG9ydHMgYmFzZWQgb25cbiAqIGl0cyBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb24gc3RyaW5nIChmcm9tIGBleGVjdXRpb25Db250ZXh0LndvcmtmbG93Q29yZVZlcnNpb25gKS5cbiAqXG4gKiBXaGVuIHRoZSB2ZXJzaW9uIGlzIGB1bmRlZmluZWRgLCBub3QgYSBzdHJpbmcsIG9yIG5vdCBhIHZhbGlkIHNlbXZlciBzdHJpbmdcbiAqIChlLmcuIG9sZGVyIHJ1bnMgdGhhdCBwcmVkYXRlIHRoZSBmaWVsZCwgb3IgY29ycnVwdGVkIG1ldGFkYXRhKSxcbiAqIHdlIGFzc3VtZSB0aGUgbW9zdCBjb25zZXJ2YXRpdmUgY2FwYWJpbGl0aWVzIChiYXNlbGluZSBmb3JtYXRzIG9ubHksXG4gKiBub24tZm9ybWF0IGNhcGFiaWxpdGllcyBhbGwgYGZhbHNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSdW5DYXBhYmlsaXRpZXMoXG4gIHdvcmtmbG93Q29yZVZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogUnVuQ2FwYWJpbGl0aWVzIHtcbiAgaWYgKCF3b3JrZmxvd0NvcmVWZXJzaW9uIHx8ICFzZW12ZXIudmFsaWQod29ya2Zsb3dDb3JlVmVyc2lvbikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VwcG9ydGVkRm9ybWF0czogQkFTRUxJTkVfRk9STUFUUyxcbiAgICAgIGZyYW1lZEJ5dGVTdHJlYW1zOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZm9ybWF0cyA9IG5ldyBTZXQ8U2VyaWFsaXphdGlvbkZvcm1hdFR5cGU+KEJBU0VMSU5FX0ZPUk1BVFMpO1xuXG4gIGZvciAoY29uc3QgeyBmb3JtYXQsIG1pblZlcnNpb24gfSBvZiBGT1JNQVRfVkVSU0lPTl9UQUJMRSkge1xuICAgIGlmIChzZW12ZXIuZ3RlKHdvcmtmbG93Q29yZVZlcnNpb24sIG1pblZlcnNpb24pKSB7XG4gICAgICBmb3JtYXRzLmFkZChmb3JtYXQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUnVuQ2FwYWJpbGl0aWVzID0ge1xuICAgIHN1cHBvcnRlZEZvcm1hdHM6IGZvcm1hdHMsXG4gICAgZnJhbWVkQnl0ZVN0cmVhbXM6IGZhbHNlLFxuICB9O1xuXG4gIGZvciAoY29uc3QgeyBjYXBhYmlsaXR5LCBtaW5WZXJzaW9uIH0gb2YgQ0FQQUJJTElUWV9WRVJTSU9OX1RBQkxFKSB7XG4gICAgaWYgKHNlbXZlci5ndGUod29ya2Zsb3dDb3JlVmVyc2lvbiwgbWluVmVyc2lvbikpIHtcbiAgICAgIHJlc3VsdFtjYXBhYmlsaXR5XSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
@@ -5,7 +5,7 @@
5
5
  * code frame at our `throw` site inside `@workflow/core`, which is useless
6
6
  * to the user.
7
7
  *
8
- * No-op on engines that don't expose `Error.captureStackTrace` the stack
8
+ * No-op on engines that don't expose `Error.captureStackTrace`: the stack
9
9
  * degrades gracefully to the default behavior.
10
10
  *
11
11
  * Kept in its own tiny module so callers that can't participate in the
@@ -5,7 +5,7 @@
5
5
  * code frame at our `throw` site inside `@workflow/core`, which is useless
6
6
  * to the user.
7
7
  *
8
- * No-op on engines that don't expose `Error.captureStackTrace` the stack
8
+ * No-op on engines that don't expose `Error.captureStackTrace`: the stack
9
9
  * degrades gracefully to the default behavior.
10
10
  *
11
11
  * Kept in its own tiny module so callers that can't participate in the
@@ -18,4 +18,4 @@ stackStartFn) {
18
18
  const capture = Error.captureStackTrace;
19
19
  capture?.(err, stackStartFn);
20
20
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdHVyZS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jYXB0dXJlLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLEdBQVU7QUFDVix3RkFBd0Y7QUFDeEYsWUFBc0I7SUFFdEIsTUFBTSxPQUFPLEdBQ1gsS0FHRCxDQUFDLGlCQUFpQixDQUFDO0lBQ3BCLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWOC1vbmx5IChOb2RlLCBCdW4sIENocm9tZSwgRGVubykuIFJld3JpdGVzIGBlcnIuc3RhY2tgIHNvIHRoZSB0b3AgZnJhbWUgaXNcbiAqIHRoZSBjYWxsZXIgb2YgYHN0YWNrU3RhcnRGbmAgaW5zdGVhZCBvZiB0aGUgZnJhbWV3b3JrIGZ1bmN0aW9uIHRoYXQgdGhyZXcuXG4gKiBXaXRob3V0IHRoaXMsIHRlcm1pbmFsIG92ZXJsYXlzIChOZXh0LmpzLCBUdXJib3BhY2ssIFZTIENvZGUpIHJlbmRlciB0aGVcbiAqIGNvZGUgZnJhbWUgYXQgb3VyIGB0aHJvd2Agc2l0ZSBpbnNpZGUgYEB3b3JrZmxvdy9jb3JlYCwgd2hpY2ggaXMgdXNlbGVzc1xuICogdG8gdGhlIHVzZXIuXG4gKlxuICogTm8tb3Agb24gZW5naW5lcyB0aGF0IGRvbid0IGV4cG9zZSBgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2VgIOKAlCB0aGUgc3RhY2tcbiAqIGRlZ3JhZGVzIGdyYWNlZnVsbHkgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4gKlxuICogS2VwdCBpbiBpdHMgb3duIHRpbnkgbW9kdWxlIHNvIGNhbGxlcnMgdGhhdCBjYW4ndCBwYXJ0aWNpcGF0ZSBpbiB0aGVcbiAqIGBjb250ZXh0LWVycm9ycy50c2Ag4oaUIGB3b3JrZmxvdy9nZXQtd29ya2Zsb3ctbWV0YWRhdGEudHNgIGltcG9ydCBjeWNsZSBjYW5cbiAqIHN0aWxsIHB1bGwgaW4gdGhlIGhlbHBlciB3aXRob3V0IHB1bGxpbmcgaW4gdGhlIGZ1bGwgZXJyb3IgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGlyZWN0U3RhY2tUb0NhbGxlcihcbiAgZXJyOiBFcnJvcixcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBzaWduYXR1cmUgbWF0Y2hlcyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZVxuICBzdGFja1N0YXJ0Rm46IEZ1bmN0aW9uXG4pOiB2b2lkIHtcbiAgY29uc3QgY2FwdHVyZSA9IChcbiAgICBFcnJvciBhcyB1bmtub3duIGFzIHtcbiAgICAgIGNhcHR1cmVTdGFja1RyYWNlPzogKHRhcmdldDogb2JqZWN0LCBmbjogRnVuY3Rpb24pID0+IHZvaWQ7XG4gICAgfVxuICApLmNhcHR1cmVTdGFja1RyYWNlO1xuICBjYXB0dXJlPy4oZXJyLCBzdGFja1N0YXJ0Rm4pO1xufVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdHVyZS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jYXB0dXJlLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLEdBQVU7QUFDVix3RkFBd0Y7QUFDeEYsWUFBc0I7SUFFdEIsTUFBTSxPQUFPLEdBQ1gsS0FHRCxDQUFDLGlCQUFpQixDQUFDO0lBQ3BCLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWOC1vbmx5IChOb2RlLCBCdW4sIENocm9tZSwgRGVubykuIFJld3JpdGVzIGBlcnIuc3RhY2tgIHNvIHRoZSB0b3AgZnJhbWUgaXNcbiAqIHRoZSBjYWxsZXIgb2YgYHN0YWNrU3RhcnRGbmAgaW5zdGVhZCBvZiB0aGUgZnJhbWV3b3JrIGZ1bmN0aW9uIHRoYXQgdGhyZXcuXG4gKiBXaXRob3V0IHRoaXMsIHRlcm1pbmFsIG92ZXJsYXlzIChOZXh0LmpzLCBUdXJib3BhY2ssIFZTIENvZGUpIHJlbmRlciB0aGVcbiAqIGNvZGUgZnJhbWUgYXQgb3VyIGB0aHJvd2Agc2l0ZSBpbnNpZGUgYEB3b3JrZmxvdy9jb3JlYCwgd2hpY2ggaXMgdXNlbGVzc1xuICogdG8gdGhlIHVzZXIuXG4gKlxuICogTm8tb3Agb24gZW5naW5lcyB0aGF0IGRvbid0IGV4cG9zZSBgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2VgOiB0aGUgc3RhY2tcbiAqIGRlZ3JhZGVzIGdyYWNlZnVsbHkgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4gKlxuICogS2VwdCBpbiBpdHMgb3duIHRpbnkgbW9kdWxlIHNvIGNhbGxlcnMgdGhhdCBjYW4ndCBwYXJ0aWNpcGF0ZSBpbiB0aGVcbiAqIGBjb250ZXh0LWVycm9ycy50c2Ag4oaUIGB3b3JrZmxvdy9nZXQtd29ya2Zsb3ctbWV0YWRhdGEudHNgIGltcG9ydCBjeWNsZSBjYW5cbiAqIHN0aWxsIHB1bGwgaW4gdGhlIGhlbHBlciB3aXRob3V0IHB1bGxpbmcgaW4gdGhlIGZ1bGwgZXJyb3IgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGlyZWN0U3RhY2tUb0NhbGxlcihcbiAgZXJyOiBFcnJvcixcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBzaWduYXR1cmUgbWF0Y2hlcyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZVxuICBzdGFja1N0YXJ0Rm46IEZ1bmN0aW9uXG4pOiB2b2lkIHtcbiAgY29uc3QgY2FwdHVyZSA9IChcbiAgICBFcnJvciBhcyB1bmtub3duIGFzIHtcbiAgICAgIGNhcHR1cmVTdGFja1RyYWNlPzogKHRhcmdldDogb2JqZWN0LCBmbjogRnVuY3Rpb24pID0+IHZvaWQ7XG4gICAgfVxuICApLmNhcHR1cmVTdGFja1RyYWNlO1xuICBjYXB0dXJlPy4oZXJyLCBzdGFja1N0YXJ0Rm4pO1xufVxuIl19
@@ -18,6 +18,38 @@
18
18
  * when serializing instances (e.g., step return values).
19
19
  */
20
20
  export declare function registerSerializationClass(classId: string, cls: Function): void;
21
+ /**
22
+ * Stable, well-known registry ID for the SDK's `Run` class.
23
+ *
24
+ * The SWC plugin auto-registers `Run` under a *path-derived* ID (e.g.
25
+ * `class//./node_modules/@workflow/core/dist/runtime/run//Run`), which
26
+ * varies with the app's dependency layout and bundler. Host-side code
27
+ * that needs to construct `Run` instances inside the workflow VM (e.g.
28
+ * the hook event consumer resolving `hook.getConflict()`) cannot know
29
+ * that ID statically, so the workflow-mode `create-hook` module also
30
+ * aliases the bundle's `Run` under this stable ID at evaluation time.
31
+ *
32
+ * The `workflow` pseudo-path cannot collide with plugin-derived IDs,
33
+ * which always use real relative module paths (`./…` / `../…`).
34
+ */
35
+ export declare const RUN_CLASS_ID = "class//workflow//Run";
36
+ /**
37
+ * Register an additional registry ID for a class without touching its
38
+ * `classId` property.
39
+ *
40
+ * Unlike {@link registerSerializationClass}, this is safe to call for a
41
+ * class the SWC plugin has already registered: the plugin's inlined IIFE
42
+ * defines `classId` as non-configurable, so a second `defineProperty`
43
+ * would throw. Aliasing only adds a registry entry: the class keeps
44
+ * serializing under its primary (path-derived) id, while lookups succeed
45
+ * under both IDs.
46
+ *
47
+ * Registration is per-global by construction: evaluated inside the
48
+ * workflow VM it registers the VM's compiled class on the VM's registry;
49
+ * evaluated on the host it registers the host class on the host's
50
+ * registry. Each context resolves its own correct variant.
51
+ */
52
+ export declare function aliasSerializationClass(classId: string, cls: Function, global?: Record<string, any>): void;
21
53
  /**
22
54
  * Find a registered class constructor by ID (used during deserialization)
23
55
  *
@@ -1 +1 @@
1
- {"version":3,"file":"class-serialization.d.ts","sourceRoot":"","sources":["../src/class-serialization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH;;;;;;;;;;;GAWG;AAEH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,QASxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAE1B,QAAQ,GAAG,SAAS,CAEtB"}
1
+ {"version":3,"file":"class-serialization.d.ts","sourceRoot":"","sources":["../src/class-serialization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH;;;;;;;;;;;GAWG;AAEH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,QASxE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,yBAAyB,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EAEf,GAAG,EAAE,QAAQ,EACb,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,QAGzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAE1B,QAAQ,GAAG,SAAS,CAEtB"}
@@ -44,6 +44,42 @@ export function registerSerializationClass(classId, cls) {
44
44
  configurable: false,
45
45
  });
46
46
  }
47
+ /**
48
+ * Stable, well-known registry ID for the SDK's `Run` class.
49
+ *
50
+ * The SWC plugin auto-registers `Run` under a *path-derived* ID (e.g.
51
+ * `class//./node_modules/@workflow/core/dist/runtime/run//Run`), which
52
+ * varies with the app's dependency layout and bundler. Host-side code
53
+ * that needs to construct `Run` instances inside the workflow VM (e.g.
54
+ * the hook event consumer resolving `hook.getConflict()`) cannot know
55
+ * that ID statically, so the workflow-mode `create-hook` module also
56
+ * aliases the bundle's `Run` under this stable ID at evaluation time.
57
+ *
58
+ * The `workflow` pseudo-path cannot collide with plugin-derived IDs,
59
+ * which always use real relative module paths (`./…` / `../…`).
60
+ */
61
+ export const RUN_CLASS_ID = 'class//workflow//Run';
62
+ /**
63
+ * Register an additional registry ID for a class without touching its
64
+ * `classId` property.
65
+ *
66
+ * Unlike {@link registerSerializationClass}, this is safe to call for a
67
+ * class the SWC plugin has already registered: the plugin's inlined IIFE
68
+ * defines `classId` as non-configurable, so a second `defineProperty`
69
+ * would throw. Aliasing only adds a registry entry: the class keeps
70
+ * serializing under its primary (path-derived) id, while lookups succeed
71
+ * under both IDs.
72
+ *
73
+ * Registration is per-global by construction: evaluated inside the
74
+ * workflow VM it registers the VM's compiled class on the VM's registry;
75
+ * evaluated on the host it registers the host class on the host's
76
+ * registry. Each context resolves its own correct variant.
77
+ */
78
+ export function aliasSerializationClass(classId,
79
+ // biome-ignore lint/complexity/noBannedTypes: We need to use Function to represent class constructors
80
+ cls, global = globalThis) {
81
+ getRegistry(global).set(classId, cls);
82
+ }
47
83
  /**
48
84
  * Find a registered class constructor by ID (used during deserialization)
49
85
  *
@@ -58,4 +94,4 @@ export function getSerializationClass(classId, global
58
94
  ) {
59
95
  return getRegistry(global).get(classId);
60
96
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Mtc2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzcy1zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUt2RDs7Ozs7R0FLRztBQUNILFNBQVMsV0FBVyxDQUFDLFNBQThCLFVBQVU7SUFDM0QsTUFBTSxDQUFDLEdBQUcsTUFBYSxDQUFDO0lBQ3hCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyx1QkFBdUIsQ0FBOEIsQ0FBQztJQUN2RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsdUJBQXVCLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHNHQUFzRztBQUN0RyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsT0FBZSxFQUFFLEdBQWE7SUFDdkUsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoQyw2Q0FBNkM7SUFDN0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ3BDLEtBQUssRUFBRSxPQUFPO1FBQ2QsUUFBUSxFQUFFLEtBQUs7UUFDZixVQUFVLEVBQUUsS0FBSztRQUNqQixZQUFZLEVBQUUsS0FBSztLQUNwQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLE9BQWUsRUFDZixNQUEyQjtBQUMzQixzR0FBc0c7O0lBRXRHLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDbGFzcyBzZXJpYWxpemF0aW9uIHV0aWxpdGllcy5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBzZXBhcmF0ZSBmcm9tIHByaXZhdGUudHMgdG8gYXZvaWQgcHVsbGluZyBpbiBOb2RlLmpzLW9ubHlcbiAqIGRlcGVuZGVuY2llcyAobGlrZSBhc3luY19ob29rcyB2aWEgZ2V0LWNsb3N1cmUtdmFycy50cykgd2hlbiB1c2VkIGluXG4gKiB3b3JrZmxvdyBidW5kbGVzLlxuICovXG5cbmltcG9ydCB7IFdPUktGTE9XX0NMQVNTX1JFR0lTVFJZIH0gZnJvbSAnLi9zeW1ib2xzLmpzJztcblxuLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBXZSBuZWVkIHRvIHVzZSBGdW5jdGlvbiB0byByZXByZXNlbnQgY2xhc3MgY29uc3RydWN0b3JzXG50eXBlIENsYXNzUmVnaXN0cnkgPSBNYXA8c3RyaW5nLCBGdW5jdGlvbj47XG5cbi8qKlxuICogR2V0IG9yIGNyZWF0ZSB0aGUgY2xhc3MgcmVnaXN0cnkgb24gdGhlIGdpdmVuIGdsb2JhbCBvYmplY3QuXG4gKiBUaGlzIHdvcmtzIGlzb21vcnBoaWNhbGx5IGluIGJvdGggc3RlcCBtb2RlIChtYWluIGNvbnRleHQpIGFuZCB3b3JrZmxvdyBtb2RlIChWTSBjb250ZXh0KS5cbiAqXG4gKiBAcGFyYW0gZ2xvYmFsIC0gVGhlIGdsb2JhbCBvYmplY3QgdG8gdXNlLiBEZWZhdWx0cyB0byBnbG9iYWxUaGlzLCBidXQgY2FuIGJlIGEgVk0ncyBnbG9iYWwuXG4gKi9cbmZ1bmN0aW9uIGdldFJlZ2lzdHJ5KGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXMpOiBDbGFzc1JlZ2lzdHJ5IHtcbiAgY29uc3QgZyA9IGdsb2JhbCBhcyBhbnk7XG4gIGxldCByZWdpc3RyeSA9IGdbV09SS0ZMT1dfQ0xBU1NfUkVHSVNUUlldIGFzIENsYXNzUmVnaXN0cnkgfCB1bmRlZmluZWQ7XG4gIGlmICghcmVnaXN0cnkpIHtcbiAgICByZWdpc3RyeSA9IG5ldyBNYXAoKTtcbiAgICBnW1dPUktGTE9XX0NMQVNTX1JFR0lTVFJZXSA9IHJlZ2lzdHJ5O1xuICB9XG4gIHJldHVybiByZWdpc3RyeTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIGNsYXNzIGNvbnN0cnVjdG9yIGZvciBzZXJpYWxpemF0aW9uLlxuICogVGhpcyBhbGxvd3MgY2xhc3MgY29uc3RydWN0b3JzIHRvIGJlIGRlc2VyaWFsaXplZCBieSBsb29raW5nIHVwIHRoZSBjbGFzc0lkLlxuICpcbiAqIE5vdGU6IFRoZSBTV0MgcGx1Z2luIG5vdyBpbmxpbmVzIGVxdWl2YWxlbnQgcmVnaXN0cmF0aW9uIGxvZ2ljIGFzIGFcbiAqIHNlbGYtY29udGFpbmVkIElJRkUgKHVzaW5nIHRoZSBzYW1lIGdsb2JhbFRoaXMgU3ltYm9sLWtleWVkIHJlZ2lzdHJ5KSxcbiAqIHNvIHRoaXMgZnVuY3Rpb24gaXMgbm8gbG9uZ2VyIGltcG9ydGVkIGJ5IGdlbmVyYXRlZCBjb2RlLiBJdCBpcyByZXRhaW5lZFxuICogZm9yIHByb2dyYW1tYXRpYyB1c2UgYW5kIHRlc3RpbmcuXG4gKlxuICogQWxzbyBzZXRzIHRoZSBgY2xhc3NJZGAgcHJvcGVydHkgb24gdGhlIGNsYXNzIHNvIHRoZSBzZXJpYWxpemVyIGNhbiBmaW5kIGl0XG4gKiB3aGVuIHNlcmlhbGl6aW5nIGluc3RhbmNlcyAoZS5nLiwgc3RlcCByZXR1cm4gdmFsdWVzKS5cbiAqL1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBXZSBuZWVkIHRvIHVzZSBGdW5jdGlvbiB0byByZXByZXNlbnQgY2xhc3MgY29uc3RydWN0b3JzXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTZXJpYWxpemF0aW9uQ2xhc3MoY2xhc3NJZDogc3RyaW5nLCBjbHM6IEZ1bmN0aW9uKSB7XG4gIGdldFJlZ2lzdHJ5KCkuc2V0KGNsYXNzSWQsIGNscyk7XG4gIC8vIFNldCBjbGFzc0lkIG9uIHRoZSBjbGFzcyBmb3Igc2VyaWFsaXphdGlvblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2xzLCAnY2xhc3NJZCcsIHtcbiAgICB2YWx1ZTogY2xhc3NJZCxcbiAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgfSk7XG59XG5cbi8qKlxuICogRmluZCBhIHJlZ2lzdGVyZWQgY2xhc3MgY29uc3RydWN0b3IgYnkgSUQgKHVzZWQgZHVyaW5nIGRlc2VyaWFsaXphdGlvbilcbiAqXG4gKiBAcGFyYW0gY2xhc3NJZCAtIFRoZSBjbGFzcyBJRCB0byBsb29rIHVwXG4gKiBAcGFyYW0gZ2xvYmFsIC0gVGhlIGdsb2JhbCBvYmplY3QgdG8gY2hlY2suIFRoaXMgZW5zdXJlcyB3b3JrZmxvdyBjb2RlIHJ1bm5pbmdcbiAqICAgICAgICAgICAgICAgICBpbiBhIFZNIG9ubHkgYWNjZXNzZXMgY2xhc3NlcyByZWdpc3RlcmVkIG9uIHRoZSBWTSdzIGdsb2JhbCxcbiAqICAgICAgICAgICAgICAgICBtYXRjaGluZyBwcm9kdWN0aW9uIHNlcnZlcmxlc3MgYmVoYXZpb3Igd2hlcmUgd29ya2Zsb3cgY29kZVxuICogICAgICAgICAgICAgICAgIHJ1bnMgaW4gaXNvbGF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VyaWFsaXphdGlvbkNsYXNzKFxuICBjbGFzc0lkOiBzdHJpbmcsXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PlxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L25vQmFubmVkVHlwZXM6IFdlIG5lZWQgdG8gdXNlIEZ1bmN0aW9uIHRvIHJlcHJlc2VudCBjbGFzcyBjb25zdHJ1Y3RvcnNcbik6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldFJlZ2lzdHJ5KGdsb2JhbCkuZ2V0KGNsYXNzSWQpO1xufVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Mtc2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzcy1zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUt2RDs7Ozs7R0FLRztBQUNILFNBQVMsV0FBVyxDQUFDLFNBQThCLFVBQVU7SUFDM0QsTUFBTSxDQUFDLEdBQUcsTUFBYSxDQUFDO0lBQ3hCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyx1QkFBdUIsQ0FBOEIsQ0FBQztJQUN2RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsdUJBQXVCLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHNHQUFzRztBQUN0RyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsT0FBZSxFQUFFLEdBQWE7SUFDdkUsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoQyw2Q0FBNkM7SUFDN0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ3BDLEtBQUssRUFBRSxPQUFPO1FBQ2QsUUFBUSxFQUFFLEtBQUs7UUFDZixVQUFVLEVBQUUsS0FBSztRQUNqQixZQUFZLEVBQUUsS0FBSztLQUNwQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQztBQUVuRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLE9BQWU7QUFDZixzR0FBc0c7QUFDdEcsR0FBYSxFQUNiLFNBQThCLFVBQVU7SUFFeEMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxPQUFlLEVBQ2YsTUFBMkI7QUFDM0Isc0dBQXNHOztJQUV0RyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2xhc3Mgc2VyaWFsaXphdGlvbiB1dGlsaXRpZXMuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgc2VwYXJhdGUgZnJvbSBwcml2YXRlLnRzIHRvIGF2b2lkIHB1bGxpbmcgaW4gTm9kZS5qcy1vbmx5XG4gKiBkZXBlbmRlbmNpZXMgKGxpa2UgYXN5bmNfaG9va3MgdmlhIGdldC1jbG9zdXJlLXZhcnMudHMpIHdoZW4gdXNlZCBpblxuICogd29ya2Zsb3cgYnVuZGxlcy5cbiAqL1xuXG5pbXBvcnQgeyBXT1JLRkxPV19DTEFTU19SRUdJU1RSWSB9IGZyb20gJy4vc3ltYm9scy5qcyc7XG5cbi8vIGJpb21lLWlnbm9yZSBsaW50L2NvbXBsZXhpdHkvbm9CYW5uZWRUeXBlczogV2UgbmVlZCB0byB1c2UgRnVuY3Rpb24gdG8gcmVwcmVzZW50IGNsYXNzIGNvbnN0cnVjdG9yc1xudHlwZSBDbGFzc1JlZ2lzdHJ5ID0gTWFwPHN0cmluZywgRnVuY3Rpb24+O1xuXG4vKipcbiAqIEdldCBvciBjcmVhdGUgdGhlIGNsYXNzIHJlZ2lzdHJ5IG9uIHRoZSBnaXZlbiBnbG9iYWwgb2JqZWN0LlxuICogVGhpcyB3b3JrcyBpc29tb3JwaGljYWxseSBpbiBib3RoIHN0ZXAgbW9kZSAobWFpbiBjb250ZXh0KSBhbmQgd29ya2Zsb3cgbW9kZSAoVk0gY29udGV4dCkuXG4gKlxuICogQHBhcmFtIGdsb2JhbCAtIFRoZSBnbG9iYWwgb2JqZWN0IHRvIHVzZS4gRGVmYXVsdHMgdG8gZ2xvYmFsVGhpcywgYnV0IGNhbiBiZSBhIFZNJ3MgZ2xvYmFsLlxuICovXG5mdW5jdGlvbiBnZXRSZWdpc3RyeShnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzKTogQ2xhc3NSZWdpc3RyeSB7XG4gIGNvbnN0IGcgPSBnbG9iYWwgYXMgYW55O1xuICBsZXQgcmVnaXN0cnkgPSBnW1dPUktGTE9XX0NMQVNTX1JFR0lTVFJZXSBhcyBDbGFzc1JlZ2lzdHJ5IHwgdW5kZWZpbmVkO1xuICBpZiAoIXJlZ2lzdHJ5KSB7XG4gICAgcmVnaXN0cnkgPSBuZXcgTWFwKCk7XG4gICAgZ1tXT1JLRkxPV19DTEFTU19SRUdJU1RSWV0gPSByZWdpc3RyeTtcbiAgfVxuICByZXR1cm4gcmVnaXN0cnk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBjbGFzcyBjb25zdHJ1Y3RvciBmb3Igc2VyaWFsaXphdGlvbi5cbiAqIFRoaXMgYWxsb3dzIGNsYXNzIGNvbnN0cnVjdG9ycyB0byBiZSBkZXNlcmlhbGl6ZWQgYnkgbG9va2luZyB1cCB0aGUgY2xhc3NJZC5cbiAqXG4gKiBOb3RlOiBUaGUgU1dDIHBsdWdpbiBub3cgaW5saW5lcyBlcXVpdmFsZW50IHJlZ2lzdHJhdGlvbiBsb2dpYyBhcyBhXG4gKiBzZWxmLWNvbnRhaW5lZCBJSUZFICh1c2luZyB0aGUgc2FtZSBnbG9iYWxUaGlzIFN5bWJvbC1rZXllZCByZWdpc3RyeSksXG4gKiBzbyB0aGlzIGZ1bmN0aW9uIGlzIG5vIGxvbmdlciBpbXBvcnRlZCBieSBnZW5lcmF0ZWQgY29kZS4gSXQgaXMgcmV0YWluZWRcbiAqIGZvciBwcm9ncmFtbWF0aWMgdXNlIGFuZCB0ZXN0aW5nLlxuICpcbiAqIEFsc28gc2V0cyB0aGUgYGNsYXNzSWRgIHByb3BlcnR5IG9uIHRoZSBjbGFzcyBzbyB0aGUgc2VyaWFsaXplciBjYW4gZmluZCBpdFxuICogd2hlbiBzZXJpYWxpemluZyBpbnN0YW5jZXMgKGUuZy4sIHN0ZXAgcmV0dXJuIHZhbHVlcykuXG4gKi9cbi8vIGJpb21lLWlnbm9yZSBsaW50L2NvbXBsZXhpdHkvbm9CYW5uZWRUeXBlczogV2UgbmVlZCB0byB1c2UgRnVuY3Rpb24gdG8gcmVwcmVzZW50IGNsYXNzIGNvbnN0cnVjdG9yc1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyU2VyaWFsaXphdGlvbkNsYXNzKGNsYXNzSWQ6IHN0cmluZywgY2xzOiBGdW5jdGlvbikge1xuICBnZXRSZWdpc3RyeSgpLnNldChjbGFzc0lkLCBjbHMpO1xuICAvLyBTZXQgY2xhc3NJZCBvbiB0aGUgY2xhc3MgZm9yIHNlcmlhbGl6YXRpb25cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNscywgJ2NsYXNzSWQnLCB7XG4gICAgdmFsdWU6IGNsYXNzSWQsXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gIH0pO1xufVxuXG4vKipcbiAqIFN0YWJsZSwgd2VsbC1rbm93biByZWdpc3RyeSBJRCBmb3IgdGhlIFNESydzIGBSdW5gIGNsYXNzLlxuICpcbiAqIFRoZSBTV0MgcGx1Z2luIGF1dG8tcmVnaXN0ZXJzIGBSdW5gIHVuZGVyIGEgKnBhdGgtZGVyaXZlZCogSUQgKGUuZy5cbiAqIGBjbGFzcy8vLi9ub2RlX21vZHVsZXMvQHdvcmtmbG93L2NvcmUvZGlzdC9ydW50aW1lL3J1bi8vUnVuYCksIHdoaWNoXG4gKiB2YXJpZXMgd2l0aCB0aGUgYXBwJ3MgZGVwZW5kZW5jeSBsYXlvdXQgYW5kIGJ1bmRsZXIuIEhvc3Qtc2lkZSBjb2RlXG4gKiB0aGF0IG5lZWRzIHRvIGNvbnN0cnVjdCBgUnVuYCBpbnN0YW5jZXMgaW5zaWRlIHRoZSB3b3JrZmxvdyBWTSAoZS5nLlxuICogdGhlIGhvb2sgZXZlbnQgY29uc3VtZXIgcmVzb2x2aW5nIGBob29rLmdldENvbmZsaWN0KClgKSBjYW5ub3Qga25vd1xuICogdGhhdCBJRCBzdGF0aWNhbGx5LCBzbyB0aGUgd29ya2Zsb3ctbW9kZSBgY3JlYXRlLWhvb2tgIG1vZHVsZSBhbHNvXG4gKiBhbGlhc2VzIHRoZSBidW5kbGUncyBgUnVuYCB1bmRlciB0aGlzIHN0YWJsZSBJRCBhdCBldmFsdWF0aW9uIHRpbWUuXG4gKlxuICogVGhlIGB3b3JrZmxvd2AgcHNldWRvLXBhdGggY2Fubm90IGNvbGxpZGUgd2l0aCBwbHVnaW4tZGVyaXZlZCBJRHMsXG4gKiB3aGljaCBhbHdheXMgdXNlIHJlYWwgcmVsYXRpdmUgbW9kdWxlIHBhdGhzIChgLi/igKZgIC8gYC4uL+KApmApLlxuICovXG5leHBvcnQgY29uc3QgUlVOX0NMQVNTX0lEID0gJ2NsYXNzLy93b3JrZmxvdy8vUnVuJztcblxuLyoqXG4gKiBSZWdpc3RlciBhbiBhZGRpdGlvbmFsIHJlZ2lzdHJ5IElEIGZvciBhIGNsYXNzIHdpdGhvdXQgdG91Y2hpbmcgaXRzXG4gKiBgY2xhc3NJZGAgcHJvcGVydHkuXG4gKlxuICogVW5saWtlIHtAbGluayByZWdpc3RlclNlcmlhbGl6YXRpb25DbGFzc30sIHRoaXMgaXMgc2FmZSB0byBjYWxsIGZvciBhXG4gKiBjbGFzcyB0aGUgU1dDIHBsdWdpbiBoYXMgYWxyZWFkeSByZWdpc3RlcmVkOiB0aGUgcGx1Z2luJ3MgaW5saW5lZCBJSUZFXG4gKiBkZWZpbmVzIGBjbGFzc0lkYCBhcyBub24tY29uZmlndXJhYmxlLCBzbyBhIHNlY29uZCBgZGVmaW5lUHJvcGVydHlgXG4gKiB3b3VsZCB0aHJvdy4gQWxpYXNpbmcgb25seSBhZGRzIGEgcmVnaXN0cnkgZW50cnk6IHRoZSBjbGFzcyBrZWVwc1xuICogc2VyaWFsaXppbmcgdW5kZXIgaXRzIHByaW1hcnkgKHBhdGgtZGVyaXZlZCkgaWQsIHdoaWxlIGxvb2t1cHMgc3VjY2VlZFxuICogdW5kZXIgYm90aCBJRHMuXG4gKlxuICogUmVnaXN0cmF0aW9uIGlzIHBlci1nbG9iYWwgYnkgY29uc3RydWN0aW9uOiBldmFsdWF0ZWQgaW5zaWRlIHRoZVxuICogd29ya2Zsb3cgVk0gaXQgcmVnaXN0ZXJzIHRoZSBWTSdzIGNvbXBpbGVkIGNsYXNzIG9uIHRoZSBWTSdzIHJlZ2lzdHJ5O1xuICogZXZhbHVhdGVkIG9uIHRoZSBob3N0IGl0IHJlZ2lzdGVycyB0aGUgaG9zdCBjbGFzcyBvbiB0aGUgaG9zdCdzXG4gKiByZWdpc3RyeS4gRWFjaCBjb250ZXh0IHJlc29sdmVzIGl0cyBvd24gY29ycmVjdCB2YXJpYW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNTZXJpYWxpemF0aW9uQ2xhc3MoXG4gIGNsYXNzSWQ6IHN0cmluZyxcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBXZSBuZWVkIHRvIHVzZSBGdW5jdGlvbiB0byByZXByZXNlbnQgY2xhc3MgY29uc3RydWN0b3JzXG4gIGNsczogRnVuY3Rpb24sXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXNcbikge1xuICBnZXRSZWdpc3RyeShnbG9iYWwpLnNldChjbGFzc0lkLCBjbHMpO1xufVxuXG4vKipcbiAqIEZpbmQgYSByZWdpc3RlcmVkIGNsYXNzIGNvbnN0cnVjdG9yIGJ5IElEICh1c2VkIGR1cmluZyBkZXNlcmlhbGl6YXRpb24pXG4gKlxuICogQHBhcmFtIGNsYXNzSWQgLSBUaGUgY2xhc3MgSUQgdG8gbG9vayB1cFxuICogQHBhcmFtIGdsb2JhbCAtIFRoZSBnbG9iYWwgb2JqZWN0IHRvIGNoZWNrLiBUaGlzIGVuc3VyZXMgd29ya2Zsb3cgY29kZSBydW5uaW5nXG4gKiAgICAgICAgICAgICAgICAgaW4gYSBWTSBvbmx5IGFjY2Vzc2VzIGNsYXNzZXMgcmVnaXN0ZXJlZCBvbiB0aGUgVk0ncyBnbG9iYWwsXG4gKiAgICAgICAgICAgICAgICAgbWF0Y2hpbmcgcHJvZHVjdGlvbiBzZXJ2ZXJsZXNzIGJlaGF2aW9yIHdoZXJlIHdvcmtmbG93IGNvZGVcbiAqICAgICAgICAgICAgICAgICBydW5zIGluIGlzb2xhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcmlhbGl6YXRpb25DbGFzcyhcbiAgY2xhc3NJZDogc3RyaW5nLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBXZSBuZWVkIHRvIHVzZSBGdW5jdGlvbiB0byByZXByZXNlbnQgY2xhc3MgY29uc3RydWN0b3JzXG4pOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRSZWdpc3RyeShnbG9iYWwpLmdldChjbGFzc0lkKTtcbn1cbiJdfQ==
@@ -1,12 +1,12 @@
1
- import { type RunErrorCode } from '@workflow/errors';
1
+ import { type RunErrorCode, WorkflowWorldError } from '@workflow/errors';
2
2
  /**
3
3
  * Classify an error that caused a workflow run to fail.
4
4
  *
5
5
  * After the structural separation of infrastructure vs user code error
6
6
  * handling, the only errors that reach the `run_failed` try/catch are:
7
7
  * - User code errors (throws from workflow functions, propagated step failures)
8
- * - WorkflowRuntimeError and subclasses (corrupted event log, missing
9
- * timestamps, workflow/step not registered, etc.)
8
+ * - WorkflowRuntimeError and subclasses (missing timestamps, workflow/step
9
+ * not registered, corrupted event log, etc.)
10
10
  *
11
11
  * Uses each subclass's `.is()` static (a name-based duck check) instead of
12
12
  * a single `instanceof` check because workflows execute in a separate
@@ -15,5 +15,21 @@ import { type RunErrorCode } from '@workflow/errors';
15
15
  * thrown inside the workflow VM and we'd misclassify genuine runtime
16
16
  * errors as user errors.
17
17
  */
18
+ export declare function isWorldContractError(err: unknown): err is WorkflowWorldError;
19
+ /**
20
+ * True when an error from a world (workflow-server) call is a transient
21
+ * infrastructure failure that should be retried by redelivering the queue
22
+ * message, rather than failing the run. A fresh invocation will likely
23
+ * succeed once the backend (or the firewall in front of it) recovers.
24
+ *
25
+ * - `ThrottleError` (429): rate limited / load shed
26
+ * - `WorkflowWorldError` with `status >= 500`: server-side error
27
+ * - `WorkflowWorldError` with a retryable transport `code` (`TRANSPORT` /
28
+ * `TIMEOUT`): the request never produced a usable response
29
+ *
30
+ * Uses `.is()` name-based duck checks (not `instanceof`) for the same
31
+ * cross-`vm`-realm reason described on `classifyRunError`.
32
+ */
33
+ export declare function isRetryableWorldError(err: unknown): boolean;
18
34
  export declare function classifyRunError(err: unknown): RunErrorCode;
19
35
  //# sourceMappingURL=classify-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"classify-error.d.ts","sourceRoot":"","sources":["../src/classify-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAIlB,MAAM,kBAAkB,CAAC;AAe1B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAO3D"}
1
+ {"version":3,"file":"classify-error.d.ts","sourceRoot":"","sources":["../src/classify-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAQjB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AA0C1B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAe5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAc3D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAsC3D"}