@workflow/core 5.0.0-beta.1 → 5.0.0-beta.11

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 (215) hide show
  1. package/README.md +1 -1
  2. package/dist/attribute-changes.d.ts +7 -0
  3. package/dist/attribute-changes.d.ts.map +1 -0
  4. package/dist/attribute-changes.js +25 -0
  5. package/dist/capabilities.js +1 -1
  6. package/dist/capture-stack.d.ts +16 -0
  7. package/dist/capture-stack.d.ts.map +1 -0
  8. package/dist/capture-stack.js +21 -0
  9. package/dist/class-serialization.js +1 -1
  10. package/dist/classify-error.d.ts +11 -3
  11. package/dist/classify-error.d.ts.map +1 -1
  12. package/dist/classify-error.js +56 -6
  13. package/dist/context-errors.d.ts +27 -0
  14. package/dist/context-errors.d.ts.map +1 -0
  15. package/dist/context-errors.js +101 -0
  16. package/dist/context-violation-error.d.ts +97 -0
  17. package/dist/context-violation-error.d.ts.map +1 -0
  18. package/dist/context-violation-error.js +147 -0
  19. package/dist/create-hook.d.ts.map +1 -1
  20. package/dist/create-hook.js +4 -3
  21. package/dist/define-hook.d.ts.map +1 -1
  22. package/dist/define-hook.js +20 -5
  23. package/dist/describe-error.d.ts +70 -0
  24. package/dist/describe-error.d.ts.map +1 -0
  25. package/dist/describe-error.js +165 -0
  26. package/dist/encryption.d.ts +22 -1
  27. package/dist/encryption.d.ts.map +1 -1
  28. package/dist/encryption.js +72 -27
  29. package/dist/events-consumer.d.ts +7 -0
  30. package/dist/events-consumer.d.ts.map +1 -1
  31. package/dist/events-consumer.js +18 -3
  32. package/dist/flushable-stream.d.ts +10 -10
  33. package/dist/flushable-stream.d.ts.map +1 -1
  34. package/dist/flushable-stream.js +18 -13
  35. package/dist/global.d.ts +4 -0
  36. package/dist/global.d.ts.map +1 -1
  37. package/dist/global.js +8 -2
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +2 -1
  41. package/dist/log-format.d.ts +25 -0
  42. package/dist/log-format.d.ts.map +1 -0
  43. package/dist/log-format.js +250 -0
  44. package/dist/logger.d.ts +28 -30
  45. package/dist/logger.d.ts.map +1 -1
  46. package/dist/logger.js +77 -31
  47. package/dist/private.js +3 -3
  48. package/dist/runtime/constants.d.ts +48 -0
  49. package/dist/runtime/constants.d.ts.map +1 -1
  50. package/dist/runtime/constants.js +91 -8
  51. package/dist/runtime/get-port-lazy.d.ts +10 -0
  52. package/dist/runtime/get-port-lazy.d.ts.map +1 -0
  53. package/dist/runtime/get-port-lazy.js +30 -0
  54. package/dist/runtime/get-world-lazy.d.ts +32 -0
  55. package/dist/runtime/get-world-lazy.d.ts.map +1 -0
  56. package/dist/runtime/get-world-lazy.js +56 -0
  57. package/dist/runtime/helpers.d.ts +38 -5
  58. package/dist/runtime/helpers.d.ts.map +1 -1
  59. package/dist/runtime/helpers.js +141 -25
  60. package/dist/runtime/replay-budget.d.ts +98 -0
  61. package/dist/runtime/replay-budget.d.ts.map +1 -0
  62. package/dist/runtime/replay-budget.js +191 -0
  63. package/dist/runtime/resume-hook.d.ts.map +1 -1
  64. package/dist/runtime/resume-hook.js +5 -4
  65. package/dist/runtime/run.d.ts.map +1 -1
  66. package/dist/runtime/run.js +31 -6
  67. package/dist/runtime/runs.d.ts.map +1 -1
  68. package/dist/runtime/runs.js +4 -1
  69. package/dist/runtime/start.js +9 -4
  70. package/dist/runtime/step-executor.d.ts +42 -0
  71. package/dist/runtime/step-executor.d.ts.map +1 -0
  72. package/dist/runtime/step-executor.js +493 -0
  73. package/dist/runtime/step-handler.d.ts.map +1 -1
  74. package/dist/runtime/step-handler.js +217 -115
  75. package/dist/runtime/suspension-handler.d.ts +22 -4
  76. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  77. package/dist/runtime/suspension-handler.js +90 -73
  78. package/dist/runtime/world-init.d.ts +75 -0
  79. package/dist/runtime/world-init.d.ts.map +1 -0
  80. package/dist/runtime/world-init.js +75 -0
  81. package/dist/runtime/world.d.ts.map +1 -1
  82. package/dist/runtime/world.js +47 -18
  83. package/dist/runtime.d.ts +8 -7
  84. package/dist/runtime.d.ts.map +1 -1
  85. package/dist/runtime.js +802 -320
  86. package/dist/schemas.d.ts +1 -1
  87. package/dist/schemas.d.ts.map +1 -1
  88. package/dist/schemas.js +1 -1
  89. package/dist/serialization/client.d.ts +17 -0
  90. package/dist/serialization/client.d.ts.map +1 -0
  91. package/dist/serialization/client.js +45 -0
  92. package/dist/serialization/codec-devalue.d.ts +14 -0
  93. package/dist/serialization/codec-devalue.d.ts.map +1 -0
  94. package/dist/serialization/codec-devalue.js +98 -0
  95. package/dist/serialization/codec.d.ts +90 -0
  96. package/dist/serialization/codec.d.ts.map +1 -0
  97. package/dist/serialization/codec.js +17 -0
  98. package/dist/serialization/encryption.d.ts +32 -0
  99. package/dist/serialization/encryption.d.ts.map +1 -0
  100. package/dist/serialization/encryption.js +67 -0
  101. package/dist/serialization/errors.d.ts +34 -0
  102. package/dist/serialization/errors.d.ts.map +1 -0
  103. package/dist/serialization/errors.js +59 -0
  104. package/dist/serialization/format.d.ts +60 -0
  105. package/dist/serialization/format.d.ts.map +1 -0
  106. package/dist/serialization/format.js +97 -0
  107. package/dist/serialization/index.d.ts +18 -0
  108. package/dist/serialization/index.d.ts.map +1 -0
  109. package/dist/serialization/index.js +20 -0
  110. package/dist/serialization/reducers/class.d.ts +11 -0
  111. package/dist/serialization/reducers/class.d.ts.map +1 -0
  112. package/dist/serialization/reducers/class.js +68 -0
  113. package/dist/serialization/reducers/common.d.ts +16 -0
  114. package/dist/serialization/reducers/common.d.ts.map +1 -0
  115. package/dist/serialization/reducers/common.js +417 -0
  116. package/dist/serialization/reducers/step-function.d.ts +35 -0
  117. package/dist/serialization/reducers/step-function.d.ts.map +1 -0
  118. package/dist/serialization/reducers/step-function.js +88 -0
  119. package/dist/serialization/step.d.ts +17 -0
  120. package/dist/serialization/step.d.ts.map +1 -0
  121. package/dist/serialization/step.js +45 -0
  122. package/dist/serialization/types.d.ts +228 -0
  123. package/dist/serialization/types.d.ts.map +1 -0
  124. package/dist/serialization/types.js +21 -0
  125. package/dist/serialization/workflow.d.ts +29 -0
  126. package/dist/serialization/workflow.d.ts.map +1 -0
  127. package/dist/serialization/workflow.js +54 -0
  128. package/dist/serialization-format.d.ts +16 -2
  129. package/dist/serialization-format.d.ts.map +1 -1
  130. package/dist/serialization-format.js +103 -5
  131. package/dist/serialization.d.ts +217 -226
  132. package/dist/serialization.d.ts.map +1 -1
  133. package/dist/serialization.js +956 -645
  134. package/dist/set-attributes.d.ts +13 -0
  135. package/dist/set-attributes.d.ts.map +1 -0
  136. package/dist/set-attributes.js +40 -0
  137. package/dist/sleep.d.ts.map +1 -1
  138. package/dist/sleep.js +3 -2
  139. package/dist/source-map.d.ts.map +1 -1
  140. package/dist/source-map.js +44 -6
  141. package/dist/step/context-storage.d.ts +16 -0
  142. package/dist/step/context-storage.d.ts.map +1 -1
  143. package/dist/step/context-storage.js +1 -1
  144. package/dist/step/get-closure-vars.d.ts.map +1 -1
  145. package/dist/step/get-closure-vars.js +3 -2
  146. package/dist/step/get-step-metadata.d.ts.map +1 -1
  147. package/dist/step/get-step-metadata.js +3 -2
  148. package/dist/step/get-workflow-metadata.d.ts.map +1 -1
  149. package/dist/step/get-workflow-metadata.js +3 -2
  150. package/dist/step/writable-stream.d.ts.map +1 -1
  151. package/dist/step/writable-stream.js +44 -4
  152. package/dist/step.d.ts.map +1 -1
  153. package/dist/step.js +97 -19
  154. package/dist/symbols.d.ts +26 -0
  155. package/dist/symbols.d.ts.map +1 -1
  156. package/dist/symbols.js +27 -1
  157. package/dist/telemetry/semantic-conventions.d.ts +2 -2
  158. package/dist/telemetry/semantic-conventions.js +1 -1
  159. package/dist/telemetry.js +1 -1
  160. package/dist/types.d.ts +6 -0
  161. package/dist/types.d.ts.map +1 -1
  162. package/dist/types.js +23 -1
  163. package/dist/util.d.ts +18 -3
  164. package/dist/util.d.ts.map +1 -1
  165. package/dist/util.js +28 -5
  166. package/dist/version.d.ts +1 -1
  167. package/dist/version.d.ts.map +1 -1
  168. package/dist/version.js +2 -2
  169. package/dist/vm/index.d.ts.map +1 -1
  170. package/dist/vm/index.js +3 -2
  171. package/dist/vm/uint8array-base64.js +1 -1
  172. package/dist/vm/uuid.js +1 -1
  173. package/dist/workflow/abort-controller.d.ts +65 -0
  174. package/dist/workflow/abort-controller.d.ts.map +1 -0
  175. package/dist/workflow/abort-controller.js +260 -0
  176. package/dist/workflow/create-hook.d.ts.map +1 -1
  177. package/dist/workflow/create-hook.js +3 -2
  178. package/dist/workflow/define-hook.d.ts +1 -1
  179. package/dist/workflow/define-hook.d.ts.map +1 -1
  180. package/dist/workflow/define-hook.js +8 -4
  181. package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
  182. package/dist/workflow/get-workflow-metadata.js +14 -3
  183. package/dist/workflow/hook.d.ts.map +1 -1
  184. package/dist/workflow/hook.js +13 -4
  185. package/dist/workflow/index.d.ts +1 -0
  186. package/dist/workflow/index.d.ts.map +1 -1
  187. package/dist/workflow/index.js +5 -3
  188. package/dist/workflow/set-attributes.d.ts +74 -0
  189. package/dist/workflow/set-attributes.d.ts.map +1 -0
  190. package/dist/workflow/set-attributes.js +66 -0
  191. package/dist/workflow/sleep.d.ts.map +1 -1
  192. package/dist/workflow/sleep.js +22 -3
  193. package/dist/workflow/world-init-stub.d.ts +15 -0
  194. package/dist/workflow/world-init-stub.d.ts.map +1 -0
  195. package/dist/workflow/world-init-stub.js +15 -0
  196. package/dist/workflow/writable-stream.js +1 -1
  197. package/dist/workflow.d.ts.map +1 -1
  198. package/dist/workflow.js +83 -31
  199. package/docs/api-reference/create-webhook.mdx +37 -18
  200. package/docs/api-reference/experimental-set-attributes.mdx +63 -0
  201. package/docs/api-reference/get-workflow-metadata.mdx +34 -0
  202. package/docs/api-reference/index.mdx +3 -0
  203. package/docs/foundations/cancellation.mdx +460 -0
  204. package/docs/foundations/errors-and-retries.mdx +7 -3
  205. package/docs/foundations/index.mdx +3 -3
  206. package/docs/foundations/meta.json +3 -2
  207. package/docs/foundations/serialization.mdx +78 -42
  208. package/docs/foundations/starting-workflows.mdx +6 -2
  209. package/docs/foundations/versioning.mdx +263 -0
  210. package/docs/how-it-works/cancellation.mdx +287 -0
  211. package/docs/how-it-works/code-transform.mdx +2 -2
  212. package/docs/how-it-works/event-sourcing.mdx +2 -2
  213. package/docs/how-it-works/meta.json +2 -1
  214. package/package.json +16 -7
  215. package/docs/foundations/common-patterns.mdx +0 -265
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Reducer and reviver for step function references.
3
+ *
4
+ * In workflow mode, step functions are replaced by the SWC plugin with
5
+ * proxies created by `globalThis[Symbol.for("WORKFLOW_USE_STEP")]("stepId")`.
6
+ * These proxies have a `.stepId` property and optionally a `.__closureVarsFn`
7
+ * for captured closure variables. They may additionally have `.__boundThis`
8
+ * (and rarely `.__boundArgs`) when the SWC plugin emitted
9
+ * `useStep(...).bind(this)` for a nested arrow step that lexically
10
+ * captured `this` (see `packages/swc-plugin-workflow/spec.md` → "Lexical
11
+ * `this` Capture in Nested Arrow Steps").
12
+ *
13
+ * The reducer serializes them as
14
+ * `{ stepId, closureVars?, boundThis?, boundArgs? }`.
15
+ * The reviver reconstructs them by calling WORKFLOW_USE_STEP and, when
16
+ * `boundThis` (or `boundArgs`) is present, re-binding the resulting
17
+ * proxy so the caller's captured `this` (and prefilled args) survive the
18
+ * round trip.
19
+ */
20
+ // ---- Reducer ----
21
+ export function getStepFunctionReducer() {
22
+ return {
23
+ StepFunction: (value) => {
24
+ if (typeof value !== 'function')
25
+ return false;
26
+ const stepId = value.stepId;
27
+ if (typeof stepId !== 'string')
28
+ return false;
29
+ const closureVarsFn = value.__closureVarsFn;
30
+ const closureVars = closureVarsFn && typeof closureVarsFn === 'function'
31
+ ? closureVarsFn()
32
+ : undefined;
33
+ // `__boundThis` / `__boundArgs` are marker properties added by the
34
+ // step proxy's overridden `.bind` (see step.ts) to record the
35
+ // bound receiver and any prefilled arguments. Use `in` for
36
+ // `__boundThis` so we round-trip even when the bound `this` is
37
+ // `undefined`/`null`. `__boundArgs` is only set when the user
38
+ // actually supplied prefilled args, so a missing property means
39
+ // "no prefilled args".
40
+ const hasBoundThis = '__boundThis' in value;
41
+ const boundThis = hasBoundThis ? value.__boundThis : undefined;
42
+ const boundArgs = value.__boundArgs;
43
+ const payload = { stepId };
44
+ if (closureVars !== undefined)
45
+ payload.closureVars = closureVars;
46
+ if (hasBoundThis)
47
+ payload.boundThis = boundThis;
48
+ if (Array.isArray(boundArgs) && boundArgs.length > 0) {
49
+ payload.boundArgs = boundArgs;
50
+ }
51
+ return payload;
52
+ },
53
+ };
54
+ }
55
+ // ---- Reviver ----
56
+ /**
57
+ * Create the StepFunction reviver for workflow context.
58
+ *
59
+ * The reviver calls WORKFLOW_USE_STEP to create the step proxy,
60
+ * restoring the ability to call the step from workflow code. If the
61
+ * serialized payload includes `boundThis` (and optionally `boundArgs`),
62
+ * the reviver also re-binds the freshly-created proxy so a step proxy
63
+ * that was constructed with `.bind(this, …)` in the workflow bundle
64
+ * continues to carry that receiver and any prefilled arguments after
65
+ * being deserialized in another bundle (e.g. when passed as a step
66
+ * argument).
67
+ */
68
+ export function getStepFunctionReviver(global = globalThis) {
69
+ const useStep = global[Symbol.for('WORKFLOW_USE_STEP')];
70
+ return {
71
+ StepFunction: (value) => {
72
+ const stepId = value.stepId;
73
+ const closureVars = value.closureVars;
74
+ if (!useStep) {
75
+ throw new Error('WORKFLOW_USE_STEP not found on global object. Step functions cannot be deserialized outside workflow context.');
76
+ }
77
+ const proxy = closureVars
78
+ ? useStep(stepId, () => closureVars)
79
+ : useStep(stepId);
80
+ if ('boundThis' in value) {
81
+ const boundArgs = Array.isArray(value.boundArgs) ? value.boundArgs : [];
82
+ return proxy.bind(value.boundThis, ...boundArgs);
83
+ }
84
+ return proxy;
85
+ },
86
+ };
87
+ }
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL3JlZHVjZXJzL3N0ZXAtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUlILG9CQUFvQjtBQUVwQixNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU87UUFDTCxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0QixJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUksS0FBYSxDQUFDLE1BQU0sQ0FBQztZQUNyQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFFN0MsTUFBTSxhQUFhLEdBQUksS0FBYSxDQUFDLGVBQWUsQ0FBQztZQUNyRCxNQUFNLFdBQVcsR0FDZixhQUFhLElBQUksT0FBTyxhQUFhLEtBQUssVUFBVTtnQkFDbEQsQ0FBQyxDQUFDLGFBQWEsRUFBRTtnQkFDakIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVoQixtRUFBbUU7WUFDbkUsOERBQThEO1lBQzlELDJEQUEyRDtZQUMzRCwrREFBK0Q7WUFDL0QsOERBQThEO1lBQzlELGdFQUFnRTtZQUNoRSx1QkFBdUI7WUFDdkIsTUFBTSxZQUFZLEdBQUcsYUFBYSxJQUFLLEtBQWEsQ0FBQztZQUNyRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFFLEtBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN4RSxNQUFNLFNBQVMsR0FBSSxLQUFhLENBQUMsV0FBb0MsQ0FBQztZQUV0RSxNQUFNLE9BQU8sR0FLVCxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2YsSUFBSSxXQUFXLEtBQUssU0FBUztnQkFBRSxPQUFPLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUNqRSxJQUFJLFlBQVk7Z0JBQUUsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDaEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxvQkFBb0I7QUFFcEI7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLFNBQThCLFVBQVU7SUFFeEMsTUFBTSxPQUFPLEdBQUksTUFBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FLbEQsQ0FBQztJQUVkLE9BQU87UUFDTCxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFFdEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0dBQStHLENBQ2hILENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsV0FBVztnQkFDdkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXBCLElBQUksV0FBVyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN6QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN4RSxPQUFRLEtBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVkdWNlciBhbmQgcmV2aXZlciBmb3Igc3RlcCBmdW5jdGlvbiByZWZlcmVuY2VzLlxuICpcbiAqIEluIHdvcmtmbG93IG1vZGUsIHN0ZXAgZnVuY3Rpb25zIGFyZSByZXBsYWNlZCBieSB0aGUgU1dDIHBsdWdpbiB3aXRoXG4gKiBwcm94aWVzIGNyZWF0ZWQgYnkgYGdsb2JhbFRoaXNbU3ltYm9sLmZvcihcIldPUktGTE9XX1VTRV9TVEVQXCIpXShcInN0ZXBJZFwiKWAuXG4gKiBUaGVzZSBwcm94aWVzIGhhdmUgYSBgLnN0ZXBJZGAgcHJvcGVydHkgYW5kIG9wdGlvbmFsbHkgYSBgLl9fY2xvc3VyZVZhcnNGbmBcbiAqIGZvciBjYXB0dXJlZCBjbG9zdXJlIHZhcmlhYmxlcy4gVGhleSBtYXkgYWRkaXRpb25hbGx5IGhhdmUgYC5fX2JvdW5kVGhpc2BcbiAqIChhbmQgcmFyZWx5IGAuX19ib3VuZEFyZ3NgKSB3aGVuIHRoZSBTV0MgcGx1Z2luIGVtaXR0ZWRcbiAqIGB1c2VTdGVwKC4uLikuYmluZCh0aGlzKWAgZm9yIGEgbmVzdGVkIGFycm93IHN0ZXAgdGhhdCBsZXhpY2FsbHlcbiAqIGNhcHR1cmVkIGB0aGlzYCAoc2VlIGBwYWNrYWdlcy9zd2MtcGx1Z2luLXdvcmtmbG93L3NwZWMubWRgIOKGkiBcIkxleGljYWxcbiAqIGB0aGlzYCBDYXB0dXJlIGluIE5lc3RlZCBBcnJvdyBTdGVwc1wiKS5cbiAqXG4gKiBUaGUgcmVkdWNlciBzZXJpYWxpemVzIHRoZW0gYXNcbiAqICAgYHsgc3RlcElkLCBjbG9zdXJlVmFycz8sIGJvdW5kVGhpcz8sIGJvdW5kQXJncz8gfWAuXG4gKiBUaGUgcmV2aXZlciByZWNvbnN0cnVjdHMgdGhlbSBieSBjYWxsaW5nIFdPUktGTE9XX1VTRV9TVEVQIGFuZCwgd2hlblxuICogYGJvdW5kVGhpc2AgKG9yIGBib3VuZEFyZ3NgKSBpcyBwcmVzZW50LCByZS1iaW5kaW5nIHRoZSByZXN1bHRpbmdcbiAqIHByb3h5IHNvIHRoZSBjYWxsZXIncyBjYXB0dXJlZCBgdGhpc2AgKGFuZCBwcmVmaWxsZWQgYXJncykgc3Vydml2ZSB0aGVcbiAqIHJvdW5kIHRyaXAuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZWR1Y2VycywgUmV2aXZlcnMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIC0tLS0gUmVkdWNlciAtLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGVwRnVuY3Rpb25SZWR1Y2VyKCk6IFBhcnRpYWw8UmVkdWNlcnM+IHtcbiAgcmV0dXJuIHtcbiAgICBTdGVwRnVuY3Rpb246ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3Qgc3RlcElkID0gKHZhbHVlIGFzIGFueSkuc3RlcElkO1xuICAgICAgaWYgKHR5cGVvZiBzdGVwSWQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGNsb3N1cmVWYXJzRm4gPSAodmFsdWUgYXMgYW55KS5fX2Nsb3N1cmVWYXJzRm47XG4gICAgICBjb25zdCBjbG9zdXJlVmFycyA9XG4gICAgICAgIGNsb3N1cmVWYXJzRm4gJiYgdHlwZW9mIGNsb3N1cmVWYXJzRm4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IGNsb3N1cmVWYXJzRm4oKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyBgX19ib3VuZFRoaXNgIC8gYF9fYm91bmRBcmdzYCBhcmUgbWFya2VyIHByb3BlcnRpZXMgYWRkZWQgYnkgdGhlXG4gICAgICAvLyBzdGVwIHByb3h5J3Mgb3ZlcnJpZGRlbiBgLmJpbmRgIChzZWUgc3RlcC50cykgdG8gcmVjb3JkIHRoZVxuICAgICAgLy8gYm91bmQgcmVjZWl2ZXIgYW5kIGFueSBwcmVmaWxsZWQgYXJndW1lbnRzLiBVc2UgYGluYCBmb3JcbiAgICAgIC8vIGBfX2JvdW5kVGhpc2Agc28gd2Ugcm91bmQtdHJpcCBldmVuIHdoZW4gdGhlIGJvdW5kIGB0aGlzYCBpc1xuICAgICAgLy8gYHVuZGVmaW5lZGAvYG51bGxgLiBgX19ib3VuZEFyZ3NgIGlzIG9ubHkgc2V0IHdoZW4gdGhlIHVzZXJcbiAgICAgIC8vIGFjdHVhbGx5IHN1cHBsaWVkIHByZWZpbGxlZCBhcmdzLCBzbyBhIG1pc3NpbmcgcHJvcGVydHkgbWVhbnNcbiAgICAgIC8vIFwibm8gcHJlZmlsbGVkIGFyZ3NcIi5cbiAgICAgIGNvbnN0IGhhc0JvdW5kVGhpcyA9ICdfX2JvdW5kVGhpcycgaW4gKHZhbHVlIGFzIGFueSk7XG4gICAgICBjb25zdCBib3VuZFRoaXMgPSBoYXNCb3VuZFRoaXMgPyAodmFsdWUgYXMgYW55KS5fX2JvdW5kVGhpcyA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGJvdW5kQXJncyA9ICh2YWx1ZSBhcyBhbnkpLl9fYm91bmRBcmdzIGFzIHVua25vd25bXSB8IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgcGF5bG9hZDoge1xuICAgICAgICBzdGVwSWQ6IHN0cmluZztcbiAgICAgICAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgICAgICBib3VuZFRoaXM/OiB1bmtub3duO1xuICAgICAgICBib3VuZEFyZ3M/OiB1bmtub3duW107XG4gICAgICB9ID0geyBzdGVwSWQgfTtcbiAgICAgIGlmIChjbG9zdXJlVmFycyAhPT0gdW5kZWZpbmVkKSBwYXlsb2FkLmNsb3N1cmVWYXJzID0gY2xvc3VyZVZhcnM7XG4gICAgICBpZiAoaGFzQm91bmRUaGlzKSBwYXlsb2FkLmJvdW5kVGhpcyA9IGJvdW5kVGhpcztcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGJvdW5kQXJncykgJiYgYm91bmRBcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcGF5bG9hZC5ib3VuZEFyZ3MgPSBib3VuZEFyZ3M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH0sXG4gIH07XG59XG5cbi8vIC0tLS0gUmV2aXZlciAtLS0tXG5cbi8qKlxuICogQ3JlYXRlIHRoZSBTdGVwRnVuY3Rpb24gcmV2aXZlciBmb3Igd29ya2Zsb3cgY29udGV4dC5cbiAqXG4gKiBUaGUgcmV2aXZlciBjYWxscyBXT1JLRkxPV19VU0VfU1RFUCB0byBjcmVhdGUgdGhlIHN0ZXAgcHJveHksXG4gKiByZXN0b3JpbmcgdGhlIGFiaWxpdHkgdG8gY2FsbCB0aGUgc3RlcCBmcm9tIHdvcmtmbG93IGNvZGUuIElmIHRoZVxuICogc2VyaWFsaXplZCBwYXlsb2FkIGluY2x1ZGVzIGBib3VuZFRoaXNgIChhbmQgb3B0aW9uYWxseSBgYm91bmRBcmdzYCksXG4gKiB0aGUgcmV2aXZlciBhbHNvIHJlLWJpbmRzIHRoZSBmcmVzaGx5LWNyZWF0ZWQgcHJveHkgc28gYSBzdGVwIHByb3h5XG4gKiB0aGF0IHdhcyBjb25zdHJ1Y3RlZCB3aXRoIGAuYmluZCh0aGlzLCDigKYpYCBpbiB0aGUgd29ya2Zsb3cgYnVuZGxlXG4gKiBjb250aW51ZXMgdG8gY2FycnkgdGhhdCByZWNlaXZlciBhbmQgYW55IHByZWZpbGxlZCBhcmd1bWVudHMgYWZ0ZXJcbiAqIGJlaW5nIGRlc2VyaWFsaXplZCBpbiBhbm90aGVyIGJ1bmRsZSAoZS5nLiB3aGVuIHBhc3NlZCBhcyBhIHN0ZXBcbiAqIGFyZ3VtZW50KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0ZXBGdW5jdGlvblJldml2ZXIoXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXNcbik6IFBhcnRpYWw8UmV2aXZlcnM+IHtcbiAgY29uc3QgdXNlU3RlcCA9IChnbG9iYWwgYXMgYW55KVtTeW1ib2wuZm9yKCdXT1JLRkxPV19VU0VfU1RFUCcpXSBhc1xuICAgIHwgKChcbiAgICAgICAgc3RlcElkOiBzdHJpbmcsXG4gICAgICAgIGNsb3N1cmVWYXJzRm4/OiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgKSA9PiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBQcm9taXNlPHVua25vd24+KVxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgU3RlcEZ1bmN0aW9uOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBJZCA9IHZhbHVlLnN0ZXBJZDtcbiAgICAgIGNvbnN0IGNsb3N1cmVWYXJzID0gdmFsdWUuY2xvc3VyZVZhcnM7XG5cbiAgICAgIGlmICghdXNlU3RlcCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1dPUktGTE9XX1VTRV9TVEVQIG5vdCBmb3VuZCBvbiBnbG9iYWwgb2JqZWN0LiBTdGVwIGZ1bmN0aW9ucyBjYW5ub3QgYmUgZGVzZXJpYWxpemVkIG91dHNpZGUgd29ya2Zsb3cgY29udGV4dC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb3h5ID0gY2xvc3VyZVZhcnNcbiAgICAgICAgPyB1c2VTdGVwKHN0ZXBJZCwgKCkgPT4gY2xvc3VyZVZhcnMpXG4gICAgICAgIDogdXNlU3RlcChzdGVwSWQpO1xuXG4gICAgICBpZiAoJ2JvdW5kVGhpcycgaW4gdmFsdWUpIHtcbiAgICAgICAgY29uc3QgYm91bmRBcmdzID0gQXJyYXkuaXNBcnJheSh2YWx1ZS5ib3VuZEFyZ3MpID8gdmFsdWUuYm91bmRBcmdzIDogW107XG4gICAgICAgIHJldHVybiAocHJveHkgYXMgYW55KS5iaW5kKHZhbHVlLmJvdW5kVGhpcywgLi4uYm91bmRBcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm94eTtcbiAgICB9LFxuICB9O1xufVxuIl19
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Step mode serialization.
3
+ *
4
+ * Used by the step handler for serializing step return values and
5
+ * deserializing step arguments. Supports encryption as a composable layer.
6
+ */
7
+ import type { CodecOptions } from './codec.js';
8
+ import { type CryptoKey } from './encryption.js';
9
+ /**
10
+ * Serialize a value from the step execution environment.
11
+ */
12
+ export declare function serialize(value: unknown, encryptionKey?: CryptoKey, options?: CodecOptions): Promise<Uint8Array | unknown>;
13
+ /**
14
+ * Deserialize a value for the step execution environment.
15
+ */
16
+ export declare function deserialize(data: Uint8Array | unknown, encryptionKey?: CryptoKey, options?: CodecOptions): Promise<unknown>;
17
+ //# sourceMappingURL=step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/serialization/step.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAa/B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,aAAa,CAAC,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Step mode serialization.
3
+ *
4
+ * Used by the step handler for serializing step return values and
5
+ * deserializing step arguments. Supports encryption as a composable layer.
6
+ */
7
+ import { SerializationError } from '@workflow/errors';
8
+ import { devalueCodec } from './codec-devalue.js';
9
+ import { decrypt as decryptData, encrypt as encryptData, } from './encryption.js';
10
+ import { formatSerializationError, rethrowIfRuntimeError } from './errors.js';
11
+ import { decodeFormatPrefix, encodeWithFormatPrefix } from './format.js';
12
+ import { SerializationFormat } from './types.js';
13
+ /**
14
+ * Serialize a value from the step execution environment.
15
+ */
16
+ export async function serialize(value, encryptionKey, options) {
17
+ try {
18
+ const payload = devalueCodec.serialize(value, 'step', options);
19
+ const prefixed = encodeWithFormatPrefix(SerializationFormat.DEVALUE_V1, payload);
20
+ return encryptData(prefixed, encryptionKey);
21
+ }
22
+ catch (error) {
23
+ rethrowIfRuntimeError(error);
24
+ const { message, hint } = formatSerializationError('step value', error);
25
+ throw new SerializationError(message, { hint, cause: error });
26
+ }
27
+ }
28
+ /**
29
+ * Deserialize a value for the step execution environment.
30
+ */
31
+ export async function deserialize(data, encryptionKey, options) {
32
+ const decrypted = await decryptData(data, encryptionKey);
33
+ if (!(decrypted instanceof Uint8Array)) {
34
+ if (devalueCodec.deserializeLegacy) {
35
+ return devalueCodec.deserializeLegacy(decrypted, 'step', options);
36
+ }
37
+ throw new Error('Cannot deserialize non-binary data without legacy support');
38
+ }
39
+ const { format, payload } = decodeFormatPrefix(decrypted);
40
+ if (format === SerializationFormat.DEVALUE_V1) {
41
+ return devalueCodec.deserialize(payload, 'step', options);
42
+ }
43
+ throw new Error(`Unsupported serialization format: ${format}`);
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL3N0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUVMLE9BQU8sSUFBSSxXQUFXLEVBQ3RCLE9BQU8sSUFBSSxXQUFXLEdBQ3ZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FDN0IsS0FBYyxFQUNkLGFBQXlCLEVBQ3pCLE9BQXNCO0lBRXRCLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FDckMsbUJBQW1CLENBQUMsVUFBVSxFQUM5QixPQUFPLENBQ00sQ0FBQztRQUNoQixPQUFPLFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLHdCQUF3QixDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RSxNQUFNLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FDL0IsSUFBMEIsRUFDMUIsYUFBeUIsRUFDekIsT0FBc0I7SUFFdEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXpELElBQUksQ0FBQyxDQUFDLFNBQVMsWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbkMsT0FBTyxZQUFZLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTFELElBQUksTUFBTSxLQUFLLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0ZXAgbW9kZSBzZXJpYWxpemF0aW9uLlxuICpcbiAqIFVzZWQgYnkgdGhlIHN0ZXAgaGFuZGxlciBmb3Igc2VyaWFsaXppbmcgc3RlcCByZXR1cm4gdmFsdWVzIGFuZFxuICogZGVzZXJpYWxpemluZyBzdGVwIGFyZ3VtZW50cy4gU3VwcG9ydHMgZW5jcnlwdGlvbiBhcyBhIGNvbXBvc2FibGUgbGF5ZXIuXG4gKi9cblxuaW1wb3J0IHsgU2VyaWFsaXphdGlvbkVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgdHlwZSB7IENvZGVjT3B0aW9ucyB9IGZyb20gJy4vY29kZWMuanMnO1xuaW1wb3J0IHsgZGV2YWx1ZUNvZGVjIH0gZnJvbSAnLi9jb2RlYy1kZXZhbHVlLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ3J5cHRvS2V5LFxuICBkZWNyeXB0IGFzIGRlY3J5cHREYXRhLFxuICBlbmNyeXB0IGFzIGVuY3J5cHREYXRhLFxufSBmcm9tICcuL2VuY3J5cHRpb24uanMnO1xuaW1wb3J0IHsgZm9ybWF0U2VyaWFsaXphdGlvbkVycm9yLCByZXRocm93SWZSdW50aW1lRXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBkZWNvZGVGb3JtYXRQcmVmaXgsIGVuY29kZVdpdGhGb3JtYXRQcmVmaXggfSBmcm9tICcuL2Zvcm1hdC5qcyc7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogU2VyaWFsaXplIGEgdmFsdWUgZnJvbSB0aGUgc3RlcCBleGVjdXRpb24gZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXJpYWxpemUoXG4gIHZhbHVlOiB1bmtub3duLFxuICBlbmNyeXB0aW9uS2V5PzogQ3J5cHRvS2V5LFxuICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRldmFsdWVDb2RlYy5zZXJpYWxpemUodmFsdWUsICdzdGVwJywgb3B0aW9ucyk7XG4gICAgY29uc3QgcHJlZml4ZWQgPSBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICAgICAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuICAgICAgcGF5bG9hZFxuICAgICkgYXMgVWludDhBcnJheTtcbiAgICByZXR1cm4gZW5jcnlwdERhdGEocHJlZml4ZWQsIGVuY3J5cHRpb25LZXkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldGhyb3dJZlJ1bnRpbWVFcnJvcihlcnJvcik7XG4gICAgY29uc3QgeyBtZXNzYWdlLCBoaW50IH0gPSBmb3JtYXRTZXJpYWxpemF0aW9uRXJyb3IoJ3N0ZXAgdmFsdWUnLCBlcnJvcik7XG4gICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihtZXNzYWdlLCB7IGhpbnQsIGNhdXNlOiBlcnJvciB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIGEgdmFsdWUgZm9yIHRoZSBzdGVwIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlc2VyaWFsaXplKFxuICBkYXRhOiBVaW50OEFycmF5IHwgdW5rbm93bixcbiAgZW5jcnlwdGlvbktleT86IENyeXB0b0tleSxcbiAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IGRlY3J5cHREYXRhKGRhdGEsIGVuY3J5cHRpb25LZXkpO1xuXG4gIGlmICghKGRlY3J5cHRlZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgaWYgKGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeSkge1xuICAgICAgcmV0dXJuIGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeShkZWNyeXB0ZWQsICdzdGVwJywgb3B0aW9ucyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgZGVzZXJpYWxpemUgbm9uLWJpbmFyeSBkYXRhIHdpdGhvdXQgbGVnYWN5IHN1cHBvcnQnXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHsgZm9ybWF0LCBwYXlsb2FkIH0gPSBkZWNvZGVGb3JtYXRQcmVmaXgoZGVjcnlwdGVkKTtcblxuICBpZiAoZm9ybWF0ID09PSBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEpIHtcbiAgICByZXR1cm4gZGV2YWx1ZUNvZGVjLmRlc2VyaWFsaXplKHBheWxvYWQsICdzdGVwJywgb3B0aW9ucyk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNlcmlhbGl6YXRpb24gZm9ybWF0OiAke2Zvcm1hdH1gKTtcbn1cbiJdfQ==
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Shared types for the serialization system.
3
+ */
4
+ import type { RuntimeDecryptionErrorContext } from '@workflow/errors';
5
+ /**
6
+ * A format prefix is exactly 4 lowercase alphanumeric characters [a-z0-9].
7
+ *
8
+ * This is a branded string type — use `isFormatPrefix()` to validate
9
+ * at runtime. The `SerializationFormat` object provides well-known
10
+ * constants, but codecs may define additional prefixes.
11
+ */
12
+ export type FormatPrefix = string & {
13
+ readonly __brand: 'FormatPrefix';
14
+ };
15
+ /**
16
+ * Runtime type guard for format prefix strings.
17
+ *
18
+ * Validates that a string is exactly 4 characters of [a-z0-9].
19
+ */
20
+ export declare function isFormatPrefix(value: string): value is FormatPrefix;
21
+ /**
22
+ * Well-known format prefix constants. Codecs may define additional ones.
23
+ */
24
+ export declare const SerializationFormat: {
25
+ /** devalue stringify/parse with TextEncoder/TextDecoder */
26
+ readonly DEVALUE_V1: FormatPrefix;
27
+ /** Encrypted payload (inner payload has its own format prefix) */
28
+ readonly ENCRYPTED: FormatPrefix;
29
+ };
30
+ /**
31
+ * Types that need specialized handling when serialized/deserialized.
32
+ * If a type is added here, it MUST also be added to the `Serializable`
33
+ * type in `schemas.ts`.
34
+ */
35
+ export interface SerializableSpecial {
36
+ ArrayBuffer: string;
37
+ BigInt: string;
38
+ BigInt64Array: string;
39
+ BigUint64Array: string;
40
+ Date: string;
41
+ DOMException: {
42
+ message: string;
43
+ name: string;
44
+ stack?: string;
45
+ cause?: unknown;
46
+ };
47
+ FatalError: {
48
+ message: string;
49
+ stack?: string;
50
+ cause?: unknown;
51
+ };
52
+ Float32Array: string;
53
+ Float64Array: string;
54
+ Error: {
55
+ name: string;
56
+ message: string;
57
+ stack?: string;
58
+ cause?: unknown;
59
+ };
60
+ EvalError: {
61
+ message: string;
62
+ stack?: string;
63
+ cause?: unknown;
64
+ };
65
+ Headers: [string, string][];
66
+ HookConflictError: {
67
+ message: string;
68
+ stack?: string;
69
+ cause?: unknown;
70
+ token: string;
71
+ conflictingRunId?: string;
72
+ };
73
+ Int8Array: string;
74
+ Int16Array: string;
75
+ Int32Array: string;
76
+ Map: [any, any][];
77
+ RangeError: {
78
+ message: string;
79
+ stack?: string;
80
+ cause?: unknown;
81
+ };
82
+ ReadableStream: {
83
+ name: string;
84
+ type?: 'bytes';
85
+ startIndex?: number;
86
+ } | {
87
+ bodyInit: any;
88
+ };
89
+ ReferenceError: {
90
+ message: string;
91
+ stack?: string;
92
+ cause?: unknown;
93
+ };
94
+ RegExp: {
95
+ source: string;
96
+ flags: string;
97
+ };
98
+ /**
99
+ * `retryAfter` is serialized as a numeric epoch timestamp rather than a
100
+ * `Date` to be realm-safe. The Date reducer uses `instanceof global.Date`,
101
+ * which fails for Dates from a different VM realm.
102
+ */
103
+ RetryableError: {
104
+ message: string;
105
+ stack?: string;
106
+ cause?: unknown;
107
+ retryAfter: number;
108
+ };
109
+ RuntimeDecryptionError: {
110
+ message: string;
111
+ stack?: string;
112
+ cause?: unknown;
113
+ context?: RuntimeDecryptionErrorContext;
114
+ };
115
+ Request: {
116
+ method: string;
117
+ url: string;
118
+ headers: Headers;
119
+ body: Request['body'];
120
+ duplex: Request['duplex'];
121
+ responseWritable?: WritableStream<Response>;
122
+ signal?: AbortSignal;
123
+ };
124
+ Response: {
125
+ type: Response['type'];
126
+ url: string;
127
+ status: number;
128
+ statusText: string;
129
+ headers: Headers;
130
+ body: Response['body'];
131
+ redirected: boolean;
132
+ };
133
+ Class: {
134
+ classId: string;
135
+ };
136
+ Instance: {
137
+ classId: string;
138
+ data: unknown;
139
+ };
140
+ Set: any[];
141
+ SyntaxError: {
142
+ message: string;
143
+ stack?: string;
144
+ cause?: unknown;
145
+ };
146
+ StepFunction: {
147
+ stepId: string;
148
+ closureVars?: Record<string, any>;
149
+ /**
150
+ * Captured lexical `this` for step proxies that were created via
151
+ * `useStep(...).bind(thisArg)` (the SWC plugin emits this for nested
152
+ * arrow steps that close over their enclosing function's `this`).
153
+ * The reviver re-binds the freshly-created proxy to this value so the
154
+ * binding survives serialization round-trips.
155
+ */
156
+ boundThis?: unknown;
157
+ /**
158
+ * Prefilled arguments captured when the user (rather than the SWC
159
+ * plugin) called `useStep(...).bind(thisArg, x, y)`. The reviver
160
+ * re-applies these alongside `boundThis` so partial application
161
+ * survives serialization. The SWC plugin only ever emits
162
+ * `.bind(this)` with no extra args today; this slot exists so a
163
+ * hand-written `.bind(thisArg, x)` doesn't silently lose `x` after
164
+ * round-tripping through the reducer/reviver.
165
+ */
166
+ boundArgs?: unknown[];
167
+ };
168
+ TypeError: {
169
+ message: string;
170
+ stack?: string;
171
+ cause?: unknown;
172
+ };
173
+ URIError: {
174
+ message: string;
175
+ stack?: string;
176
+ cause?: unknown;
177
+ };
178
+ URL: string;
179
+ WorkflowFunction: {
180
+ workflowId: string;
181
+ };
182
+ URLSearchParams: string;
183
+ Uint8Array: string;
184
+ Uint8ClampedArray: string;
185
+ Uint16Array: string;
186
+ Uint32Array: string;
187
+ AggregateError: {
188
+ message: string;
189
+ stack?: string;
190
+ cause?: unknown;
191
+ errors: unknown[];
192
+ };
193
+ WritableStream: {
194
+ name: string;
195
+ /**
196
+ * The runId of the workflow run that owns the underlying server
197
+ * stream. Present only when the writable was forwarded across a
198
+ * `start()` boundary (parent → child). When omitted, the writable
199
+ * belongs to the receiving run (the normal in-run case).
200
+ */
201
+ runId?: string;
202
+ /**
203
+ * The deployment that owns the server stream. Carried with `runId`
204
+ * so a child running on a newer deployment can encrypt chunks with
205
+ * the parent's key without fetching the parent run first.
206
+ */
207
+ deploymentId?: string;
208
+ };
209
+ AbortController: {
210
+ streamName: string;
211
+ hookToken: string;
212
+ aborted: boolean;
213
+ reason?: unknown;
214
+ };
215
+ AbortSignal: {
216
+ streamName: string;
217
+ hookToken: string;
218
+ aborted: boolean;
219
+ reason?: unknown;
220
+ };
221
+ }
222
+ export type Reducers = {
223
+ [K in keyof SerializableSpecial]: (value: any) => SerializableSpecial[K] | false;
224
+ };
225
+ export type Revivers = {
226
+ [K in keyof SerializableSpecial]: (value: SerializableSpecial[K]) => any;
227
+ };
228
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/serialization/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Shared types for the serialization system.
3
+ */
4
+ /**
5
+ * Runtime type guard for format prefix strings.
6
+ *
7
+ * Validates that a string is exactly 4 characters of [a-z0-9].
8
+ */
9
+ export function isFormatPrefix(value) {
10
+ return value.length === 4 && /^[a-z0-9]{4}$/.test(value);
11
+ }
12
+ /**
13
+ * Well-known format prefix constants. Codecs may define additional ones.
14
+ */
15
+ export const SerializationFormat = {
16
+ /** devalue stringify/parse with TextEncoder/TextDecoder */
17
+ DEVALUE_V1: 'devl',
18
+ /** Encrypted payload (inner payload has its own format prefix) */
19
+ ENCRYPTED: 'encr',
20
+ };
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQWVIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLDJEQUEyRDtJQUMzRCxVQUFVLEVBQUUsTUFBc0I7SUFDbEMsa0VBQWtFO0lBQ2xFLFNBQVMsRUFBRSxNQUFzQjtDQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgdHlwZXMgZm9yIHRoZSBzZXJpYWxpemF0aW9uIHN5c3RlbS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3JDb250ZXh0IH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5cbi8vIC0tLS0gRm9ybWF0IFByZWZpeCAtLS0tXG5cbi8qKlxuICogQSBmb3JtYXQgcHJlZml4IGlzIGV4YWN0bHkgNCBsb3dlcmNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgW2EtejAtOV0uXG4gKlxuICogVGhpcyBpcyBhIGJyYW5kZWQgc3RyaW5nIHR5cGUg4oCUIHVzZSBgaXNGb3JtYXRQcmVmaXgoKWAgdG8gdmFsaWRhdGVcbiAqIGF0IHJ1bnRpbWUuIFRoZSBgU2VyaWFsaXphdGlvbkZvcm1hdGAgb2JqZWN0IHByb3ZpZGVzIHdlbGwta25vd25cbiAqIGNvbnN0YW50cywgYnV0IGNvZGVjcyBtYXkgZGVmaW5lIGFkZGl0aW9uYWwgcHJlZml4ZXMuXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1hdFByZWZpeCA9IHN0cmluZyAmIHsgcmVhZG9ubHkgX19icmFuZDogJ0Zvcm1hdFByZWZpeCcgfTtcblxuLyoqXG4gKiBSdW50aW1lIHR5cGUgZ3VhcmQgZm9yIGZvcm1hdCBwcmVmaXggc3RyaW5ncy5cbiAqXG4gKiBWYWxpZGF0ZXMgdGhhdCBhIHN0cmluZyBpcyBleGFjdGx5IDQgY2hhcmFjdGVycyBvZiBbYS16MC05XS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRm9ybWF0UHJlZml4KHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBGb3JtYXRQcmVmaXgge1xuICByZXR1cm4gdmFsdWUubGVuZ3RoID09PSA0ICYmIC9eW2EtejAtOV17NH0kLy50ZXN0KHZhbHVlKTtcbn1cblxuLyoqXG4gKiBXZWxsLWtub3duIGZvcm1hdCBwcmVmaXggY29uc3RhbnRzLiBDb2RlY3MgbWF5IGRlZmluZSBhZGRpdGlvbmFsIG9uZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uRm9ybWF0ID0ge1xuICAvKiogZGV2YWx1ZSBzdHJpbmdpZnkvcGFyc2Ugd2l0aCBUZXh0RW5jb2Rlci9UZXh0RGVjb2RlciAqL1xuICBERVZBTFVFX1YxOiAnZGV2bCcgYXMgRm9ybWF0UHJlZml4LFxuICAvKiogRW5jcnlwdGVkIHBheWxvYWQgKGlubmVyIHBheWxvYWQgaGFzIGl0cyBvd24gZm9ybWF0IHByZWZpeCkgKi9cbiAgRU5DUllQVEVEOiAnZW5jcicgYXMgRm9ybWF0UHJlZml4LFxufSBhcyBjb25zdDtcblxuLy8gLS0tLSBTZXJpYWxpemFibGUgVHlwZXMgLS0tLVxuXG4vKipcbiAqIFR5cGVzIHRoYXQgbmVlZCBzcGVjaWFsaXplZCBoYW5kbGluZyB3aGVuIHNlcmlhbGl6ZWQvZGVzZXJpYWxpemVkLlxuICogSWYgYSB0eXBlIGlzIGFkZGVkIGhlcmUsIGl0IE1VU1QgYWxzbyBiZSBhZGRlZCB0byB0aGUgYFNlcmlhbGl6YWJsZWBcbiAqIHR5cGUgaW4gYHNjaGVtYXMudHNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6YWJsZVNwZWNpYWwge1xuICBBcnJheUJ1ZmZlcjogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEJpZ0ludDogc3RyaW5nOyAvLyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYmlnaW50XG4gIEJpZ0ludDY0QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBCaWdVaW50NjRBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIERhdGU6IHN0cmluZzsgLy8gSVNPIHN0cmluZ1xuICBET01FeGNlcHRpb246IHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICAgIGNhdXNlPzogdW5rbm93bjtcbiAgfTtcbiAgRmF0YWxFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgRmxvYXQzMkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgRmxvYXQ2NEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgRXJyb3I6IHsgbmFtZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgRXZhbEVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBIZWFkZXJzOiBbc3RyaW5nLCBzdHJpbmddW107XG4gIEhvb2tDb25mbGljdEVycm9yOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICAgIGNhdXNlPzogdW5rbm93bjtcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIC8vIFRPRE86IE1ha2UgdGhpcyByZXF1aXJlZCB3aGVuIEhvb2tDb25mbGljdEVycm9yLmNvbmZsaWN0aW5nUnVuSWQgaXMgcmVxdWlyZWQuXG4gICAgY29uZmxpY3RpbmdSdW5JZD86IHN0cmluZztcbiAgfTtcbiAgSW50OEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgSW50MTZBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEludDMyQXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBNYXA6IFthbnksIGFueV1bXTtcbiAgUmFuZ2VFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgUmVhZGFibGVTdHJlYW06XG4gICAgfCB7IG5hbWU6IHN0cmluZzsgdHlwZT86ICdieXRlcyc7IHN0YXJ0SW5kZXg/OiBudW1iZXIgfVxuICAgIHwgeyBib2R5SW5pdDogYW55IH07XG4gIFJlZmVyZW5jZUVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBSZWdFeHA6IHsgc291cmNlOiBzdHJpbmc7IGZsYWdzOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIGByZXRyeUFmdGVyYCBpcyBzZXJpYWxpemVkIGFzIGEgbnVtZXJpYyBlcG9jaCB0aW1lc3RhbXAgcmF0aGVyIHRoYW4gYVxuICAgKiBgRGF0ZWAgdG8gYmUgcmVhbG0tc2FmZS4gVGhlIERhdGUgcmVkdWNlciB1c2VzIGBpbnN0YW5jZW9mIGdsb2JhbC5EYXRlYCxcbiAgICogd2hpY2ggZmFpbHMgZm9yIERhdGVzIGZyb20gYSBkaWZmZXJlbnQgVk0gcmVhbG0uXG4gICAqL1xuICBSZXRyeWFibGVFcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgcmV0cnlBZnRlcjogbnVtYmVyO1xuICB9O1xuICBSdW50aW1lRGVjcnlwdGlvbkVycm9yOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICAgIGNhdXNlPzogdW5rbm93bjtcbiAgICBjb250ZXh0PzogUnVudGltZURlY3J5cHRpb25FcnJvckNvbnRleHQ7XG4gIH07XG4gIFJlcXVlc3Q6IHtcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgICBoZWFkZXJzOiBIZWFkZXJzO1xuICAgIGJvZHk6IFJlcXVlc3RbJ2JvZHknXTtcbiAgICBkdXBsZXg6IFJlcXVlc3RbJ2R1cGxleCddO1xuICAgIHJlc3BvbnNlV3JpdGFibGU/OiBXcml0YWJsZVN0cmVhbTxSZXNwb25zZT47XG4gICAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIH07XG4gIFJlc3BvbnNlOiB7XG4gICAgdHlwZTogUmVzcG9uc2VbJ3R5cGUnXTtcbiAgICB1cmw6IHN0cmluZztcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgaGVhZGVyczogSGVhZGVycztcbiAgICBib2R5OiBSZXNwb25zZVsnYm9keSddO1xuICAgIHJlZGlyZWN0ZWQ6IGJvb2xlYW47XG4gIH07XG4gIENsYXNzOiB7XG4gICAgY2xhc3NJZDogc3RyaW5nO1xuICB9O1xuICBJbnN0YW5jZToge1xuICAgIGNsYXNzSWQ6IHN0cmluZztcbiAgICBkYXRhOiB1bmtub3duO1xuICB9O1xuICBTZXQ6IGFueVtdO1xuICBTeW50YXhFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgU3RlcEZ1bmN0aW9uOiB7XG4gICAgc3RlcElkOiBzdHJpbmc7XG4gICAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIC8qKlxuICAgICAqIENhcHR1cmVkIGxleGljYWwgYHRoaXNgIGZvciBzdGVwIHByb3hpZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgdmlhXG4gICAgICogYHVzZVN0ZXAoLi4uKS5iaW5kKHRoaXNBcmcpYCAodGhlIFNXQyBwbHVnaW4gZW1pdHMgdGhpcyBmb3IgbmVzdGVkXG4gICAgICogYXJyb3cgc3RlcHMgdGhhdCBjbG9zZSBvdmVyIHRoZWlyIGVuY2xvc2luZyBmdW5jdGlvbidzIGB0aGlzYCkuXG4gICAgICogVGhlIHJldml2ZXIgcmUtYmluZHMgdGhlIGZyZXNobHktY3JlYXRlZCBwcm94eSB0byB0aGlzIHZhbHVlIHNvIHRoZVxuICAgICAqIGJpbmRpbmcgc3Vydml2ZXMgc2VyaWFsaXphdGlvbiByb3VuZC10cmlwcy5cbiAgICAgKi9cbiAgICBib3VuZFRoaXM/OiB1bmtub3duO1xuICAgIC8qKlxuICAgICAqIFByZWZpbGxlZCBhcmd1bWVudHMgY2FwdHVyZWQgd2hlbiB0aGUgdXNlciAocmF0aGVyIHRoYW4gdGhlIFNXQ1xuICAgICAqIHBsdWdpbikgY2FsbGVkIGB1c2VTdGVwKC4uLikuYmluZCh0aGlzQXJnLCB4LCB5KWAuIFRoZSByZXZpdmVyXG4gICAgICogcmUtYXBwbGllcyB0aGVzZSBhbG9uZ3NpZGUgYGJvdW5kVGhpc2Agc28gcGFydGlhbCBhcHBsaWNhdGlvblxuICAgICAqIHN1cnZpdmVzIHNlcmlhbGl6YXRpb24uIFRoZSBTV0MgcGx1Z2luIG9ubHkgZXZlciBlbWl0c1xuICAgICAqIGAuYmluZCh0aGlzKWAgd2l0aCBubyBleHRyYSBhcmdzIHRvZGF5OyB0aGlzIHNsb3QgZXhpc3RzIHNvIGFcbiAgICAgKiBoYW5kLXdyaXR0ZW4gYC5iaW5kKHRoaXNBcmcsIHgpYCBkb2Vzbid0IHNpbGVudGx5IGxvc2UgYHhgIGFmdGVyXG4gICAgICogcm91bmQtdHJpcHBpbmcgdGhyb3VnaCB0aGUgcmVkdWNlci9yZXZpdmVyLlxuICAgICAqL1xuICAgIGJvdW5kQXJncz86IHVua25vd25bXTtcbiAgfTtcbiAgVHlwZUVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBVUklFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgVVJMOiBzdHJpbmc7XG4gIFdvcmtmbG93RnVuY3Rpb246IHtcbiAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gIH07XG4gIFVSTFNlYXJjaFBhcmFtczogc3RyaW5nO1xuICBVaW50OEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgVWludDhDbGFtcGVkQXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBVaW50MTZBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIFVpbnQzMkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgQWdncmVnYXRlRXJyb3I6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmc7XG4gICAgY2F1c2U/OiB1bmtub3duO1xuICAgIGVycm9yczogdW5rbm93bltdO1xuICB9O1xuICBXcml0YWJsZVN0cmVhbToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgcnVuSWQgb2YgdGhlIHdvcmtmbG93IHJ1biB0aGF0IG93bnMgdGhlIHVuZGVybHlpbmcgc2VydmVyXG4gICAgICogc3RyZWFtLiBQcmVzZW50IG9ubHkgd2hlbiB0aGUgd3JpdGFibGUgd2FzIGZvcndhcmRlZCBhY3Jvc3MgYVxuICAgICAqIGBzdGFydCgpYCBib3VuZGFyeSAocGFyZW50IOKGkiBjaGlsZCkuIFdoZW4gb21pdHRlZCwgdGhlIHdyaXRhYmxlXG4gICAgICogYmVsb25ncyB0byB0aGUgcmVjZWl2aW5nIHJ1biAodGhlIG5vcm1hbCBpbi1ydW4gY2FzZSkuXG4gICAgICovXG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGRlcGxveW1lbnQgdGhhdCBvd25zIHRoZSBzZXJ2ZXIgc3RyZWFtLiBDYXJyaWVkIHdpdGggYHJ1bklkYFxuICAgICAqIHNvIGEgY2hpbGQgcnVubmluZyBvbiBhIG5ld2VyIGRlcGxveW1lbnQgY2FuIGVuY3J5cHQgY2h1bmtzIHdpdGhcbiAgICAgKiB0aGUgcGFyZW50J3Mga2V5IHdpdGhvdXQgZmV0Y2hpbmcgdGhlIHBhcmVudCBydW4gZmlyc3QuXG4gICAgICovXG4gICAgZGVwbG95bWVudElkPzogc3RyaW5nO1xuICB9O1xuICBBYm9ydENvbnRyb2xsZXI6IHtcbiAgICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gICAgaG9va1Rva2VuOiBzdHJpbmc7XG4gICAgYWJvcnRlZDogYm9vbGVhbjtcbiAgICByZWFzb24/OiB1bmtub3duO1xuICB9O1xuICBBYm9ydFNpZ25hbDoge1xuICAgIHN0cmVhbU5hbWU6IHN0cmluZztcbiAgICBob29rVG9rZW46IHN0cmluZztcbiAgICBhYm9ydGVkOiBib29sZWFuO1xuICAgIHJlYXNvbj86IHVua25vd247XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlZHVjZXJzID0ge1xuICBbSyBpbiBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTogKFxuICAgIHZhbHVlOiBhbnlcbiAgKSA9PiBTZXJpYWxpemFibGVTcGVjaWFsW0tdIHwgZmFsc2U7XG59O1xuXG5leHBvcnQgdHlwZSBSZXZpdmVycyA9IHtcbiAgW0sgaW4ga2V5b2YgU2VyaWFsaXphYmxlU3BlY2lhbF06ICh2YWx1ZTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSkgPT4gYW55O1xufTtcbiJdfQ==
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Workflow mode serialization.
3
+ *
4
+ * Provides serialize/deserialize for use inside the workflow execution
5
+ * environment (QuickJS VM or Node.js vm). It is:
6
+ * - Synchronous (no async operations)
7
+ * - No encryption (encryption is handled outside the VM on the host side)
8
+ *
9
+ * Designed to be bundled into the workflow code by esbuild and executed
10
+ * inside the sandboxed VM.
11
+ */
12
+ import type { CodecOptions } from './codec.js';
13
+ /**
14
+ * Serialize a value for storage/transmission from the workflow environment.
15
+ *
16
+ * @param value - The value to serialize
17
+ * @param options - Optional global, extra reducers/revivers for VM-context serialization
18
+ * @returns Format-prefixed serialized bytes
19
+ */
20
+ export declare function serialize(value: unknown, options?: CodecOptions): Uint8Array;
21
+ /**
22
+ * Deserialize a value received in the workflow environment.
23
+ *
24
+ * @param data - Format-prefixed serialized bytes, or legacy data
25
+ * @param options - Optional global, extra revivers for VM-context deserialization
26
+ * @returns The deserialized value
27
+ */
28
+ export declare function deserialize(data: Uint8Array | unknown, options?: CodecOptions): unknown;
29
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/serialization/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,CAW5E;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAiBT"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Workflow mode serialization.
3
+ *
4
+ * Provides serialize/deserialize for use inside the workflow execution
5
+ * environment (QuickJS VM or Node.js vm). It is:
6
+ * - Synchronous (no async operations)
7
+ * - No encryption (encryption is handled outside the VM on the host side)
8
+ *
9
+ * Designed to be bundled into the workflow code by esbuild and executed
10
+ * inside the sandboxed VM.
11
+ */
12
+ import { SerializationError } from '@workflow/errors';
13
+ import { devalueCodec } from './codec-devalue.js';
14
+ import { formatSerializationError } from './errors.js';
15
+ import { decodeFormatPrefix, encodeWithFormatPrefix } from './format.js';
16
+ import { SerializationFormat } from './types.js';
17
+ /**
18
+ * Serialize a value for storage/transmission from the workflow environment.
19
+ *
20
+ * @param value - The value to serialize
21
+ * @param options - Optional global, extra reducers/revivers for VM-context serialization
22
+ * @returns Format-prefixed serialized bytes
23
+ */
24
+ export function serialize(value, options) {
25
+ try {
26
+ const payload = devalueCodec.serialize(value, 'workflow', options);
27
+ return encodeWithFormatPrefix(SerializationFormat.DEVALUE_V1, payload);
28
+ }
29
+ catch (error) {
30
+ const { message, hint } = formatSerializationError('workflow value', error);
31
+ throw new SerializationError(message, { hint, cause: error });
32
+ }
33
+ }
34
+ /**
35
+ * Deserialize a value received in the workflow environment.
36
+ *
37
+ * @param data - Format-prefixed serialized bytes, or legacy data
38
+ * @param options - Optional global, extra revivers for VM-context deserialization
39
+ * @returns The deserialized value
40
+ */
41
+ export function deserialize(data, options) {
42
+ if (!(data instanceof Uint8Array)) {
43
+ if (devalueCodec.deserializeLegacy) {
44
+ return devalueCodec.deserializeLegacy(data, 'workflow', options);
45
+ }
46
+ throw new Error('Cannot deserialize non-binary data without legacy support');
47
+ }
48
+ const { format, payload } = decodeFormatPrefix(data);
49
+ if (format === SerializationFormat.DEVALUE_V1) {
50
+ return devalueCodec.deserialize(payload, 'workflow', options);
51
+ }
52
+ throw new Error(`Unsupported serialization format: ${format}`);
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi93b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYyxFQUFFLE9BQXNCO0lBQzlELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRSxPQUFPLHNCQUFzQixDQUMzQixtQkFBbUIsQ0FBQyxVQUFVLEVBQzlCLE9BQU8sQ0FDTSxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxNQUFNLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsSUFBMEIsRUFDMUIsT0FBc0I7SUFFdEIsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDbEMsSUFBSSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNuQyxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckQsSUFBSSxNQUFNLEtBQUssbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUMsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV29ya2Zsb3cgbW9kZSBzZXJpYWxpemF0aW9uLlxuICpcbiAqIFByb3ZpZGVzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBmb3IgdXNlIGluc2lkZSB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uXG4gKiBlbnZpcm9ubWVudCAoUXVpY2tKUyBWTSBvciBOb2RlLmpzIHZtKS4gSXQgaXM6XG4gKiAtIFN5bmNocm9ub3VzIChubyBhc3luYyBvcGVyYXRpb25zKVxuICogLSBObyBlbmNyeXB0aW9uIChlbmNyeXB0aW9uIGlzIGhhbmRsZWQgb3V0c2lkZSB0aGUgVk0gb24gdGhlIGhvc3Qgc2lkZSlcbiAqXG4gKiBEZXNpZ25lZCB0byBiZSBidW5kbGVkIGludG8gdGhlIHdvcmtmbG93IGNvZGUgYnkgZXNidWlsZCBhbmQgZXhlY3V0ZWRcbiAqIGluc2lkZSB0aGUgc2FuZGJveGVkIFZNLlxuICovXG5cbmltcG9ydCB7IFNlcmlhbGl6YXRpb25FcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlY09wdGlvbnMgfSBmcm9tICcuL2NvZGVjLmpzJztcbmltcG9ydCB7IGRldmFsdWVDb2RlYyB9IGZyb20gJy4vY29kZWMtZGV2YWx1ZS5qcyc7XG5pbXBvcnQgeyBmb3JtYXRTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBkZWNvZGVGb3JtYXRQcmVmaXgsIGVuY29kZVdpdGhGb3JtYXRQcmVmaXggfSBmcm9tICcuL2Zvcm1hdC5qcyc7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogU2VyaWFsaXplIGEgdmFsdWUgZm9yIHN0b3JhZ2UvdHJhbnNtaXNzaW9uIGZyb20gdGhlIHdvcmtmbG93IGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXJpYWxpemVcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZ2xvYmFsLCBleHRyYSByZWR1Y2Vycy9yZXZpdmVycyBmb3IgVk0tY29udGV4dCBzZXJpYWxpemF0aW9uXG4gKiBAcmV0dXJucyBGb3JtYXQtcHJlZml4ZWQgc2VyaWFsaXplZCBieXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogQ29kZWNPcHRpb25zKTogVWludDhBcnJheSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRldmFsdWVDb2RlYy5zZXJpYWxpemUodmFsdWUsICd3b3JrZmxvdycsIG9wdGlvbnMpO1xuICAgIHJldHVybiBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICAgICAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuICAgICAgcGF5bG9hZFxuICAgICkgYXMgVWludDhBcnJheTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGhpbnQgfSA9IGZvcm1hdFNlcmlhbGl6YXRpb25FcnJvcignd29ya2Zsb3cgdmFsdWUnLCBlcnJvcik7XG4gICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihtZXNzYWdlLCB7IGhpbnQsIGNhdXNlOiBlcnJvciB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIGEgdmFsdWUgcmVjZWl2ZWQgaW4gdGhlIHdvcmtmbG93IGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gRm9ybWF0LXByZWZpeGVkIHNlcmlhbGl6ZWQgYnl0ZXMsIG9yIGxlZ2FjeSBkYXRhXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGdsb2JhbCwgZXh0cmEgcmV2aXZlcnMgZm9yIFZNLWNvbnRleHQgZGVzZXJpYWxpemF0aW9uXG4gKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZShcbiAgZGF0YTogVWludDhBcnJheSB8IHVua25vd24sXG4gIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbik6IHVua25vd24ge1xuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBpZiAoZGV2YWx1ZUNvZGVjLmRlc2VyaWFsaXplTGVnYWN5KSB7XG4gICAgICByZXR1cm4gZGV2YWx1ZUNvZGVjLmRlc2VyaWFsaXplTGVnYWN5KGRhdGEsICd3b3JrZmxvdycsIG9wdGlvbnMpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ2Fubm90IGRlc2VyaWFsaXplIG5vbi1iaW5hcnkgZGF0YSB3aXRob3V0IGxlZ2FjeSBzdXBwb3J0J1xuICAgICk7XG4gIH1cblxuICBjb25zdCB7IGZvcm1hdCwgcGF5bG9hZCB9ID0gZGVjb2RlRm9ybWF0UHJlZml4KGRhdGEpO1xuXG4gIGlmIChmb3JtYXQgPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuREVWQUxVRV9WMSkge1xuICAgIHJldHVybiBkZXZhbHVlQ29kZWMuZGVzZXJpYWxpemUocGF5bG9hZCwgJ3dvcmtmbG93Jywgb3B0aW9ucyk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNlcmlhbGl6YXRpb24gZm9ybWF0OiAke2Zvcm1hdH1gKTtcbn1cbiJdfQ==
@@ -82,6 +82,19 @@ export interface StreamRef {
82
82
  __type: typeof STREAM_REF_TYPE;
83
83
  streamId: string;
84
84
  }
85
+ /** Marker for Run reference objects rendered as links in the UI */
86
+ export declare const RUN_REF_TYPE = "__workflow_run_ref__";
87
+ /** A Run reference for UI display */
88
+ export interface RunRef {
89
+ __type: typeof RUN_REF_TYPE;
90
+ runId: string;
91
+ }
92
+ /** Check if a value is a RunRef object */
93
+ export declare const isRunRef: (value: unknown) => value is RunRef;
94
+ /** Convert a serialized Run value to a RunRef for display */
95
+ export declare const serializedRunToRunRef: (value: {
96
+ runId: string;
97
+ }) => RunRef;
85
98
  /** Marker for custom class instance references */
86
99
  export declare const CLASS_INSTANCE_REF_TYPE = "__workflow_class_instance_ref__";
87
100
  /**
@@ -117,11 +130,12 @@ export declare const streamToStreamRef: (value: any) => StreamRef;
117
130
  export declare const serializedStepFunctionToString: (value: unknown) => string;
118
131
  /** Extract the class name from a classId */
119
132
  export declare const extractClassName: (classId: string) => string;
120
- /** Convert a serialized class instance to a ClassInstanceRef for display */
133
+ /** Convert a serialized class instance to a ClassInstanceRef for display.
134
+ * Run instances are special-cased to a RunRef for clickable rendering. */
121
135
  export declare const serializedInstanceToRef: (value: {
122
136
  classId: string;
123
137
  data: unknown;
124
- }) => ClassInstanceRef;
138
+ }) => ClassInstanceRef | RunRef;
125
139
  /** Convert a serialized class reference to a display string */
126
140
  export declare const serializedClassToString: (value: {
127
141
  classId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"serialization-format.d.ts","sourceRoot":"","sources":["../src/serialization-format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialization-format.d.ts","sourceRoot":"","sources":["../src/serialization-format.ts"],"names":[],"mappings":"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"}