@workflow/core 4.0.1-beta.3 → 4.0.1-beta.31

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 (140) hide show
  1. package/LICENSE.md +201 -21
  2. package/dist/builtins.js +1 -1
  3. package/dist/create-hook.js +1 -1
  4. package/dist/define-hook.d.ts +40 -25
  5. package/dist/define-hook.d.ts.map +1 -1
  6. package/dist/define-hook.js +22 -27
  7. package/dist/events-consumer.js +1 -1
  8. package/dist/global.d.ts +11 -2
  9. package/dist/global.d.ts.map +1 -1
  10. package/dist/global.js +28 -5
  11. package/dist/index.d.ts +3 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +3 -2
  14. package/dist/logger.js +1 -1
  15. package/dist/observability.d.ts +19 -0
  16. package/dist/observability.d.ts.map +1 -1
  17. package/dist/observability.js +76 -19
  18. package/dist/parse-name.d.ts.map +1 -1
  19. package/dist/parse-name.js +18 -3
  20. package/dist/private.d.ts +10 -1
  21. package/dist/private.d.ts.map +1 -1
  22. package/dist/private.js +6 -1
  23. package/dist/runtime/helpers.d.ts +25 -0
  24. package/dist/runtime/helpers.d.ts.map +1 -0
  25. package/dist/runtime/helpers.js +93 -0
  26. package/dist/runtime/resume-hook.d.ts +15 -10
  27. package/dist/runtime/resume-hook.d.ts.map +1 -1
  28. package/dist/runtime/resume-hook.js +71 -61
  29. package/dist/runtime/start.d.ts +4 -0
  30. package/dist/runtime/start.d.ts.map +1 -1
  31. package/dist/runtime/start.js +56 -45
  32. package/dist/runtime/step-handler.d.ts +7 -0
  33. package/dist/runtime/step-handler.d.ts.map +1 -0
  34. package/dist/runtime/step-handler.js +335 -0
  35. package/dist/runtime/suspension-handler.d.ts +20 -0
  36. package/dist/runtime/suspension-handler.d.ts.map +1 -0
  37. package/dist/runtime/suspension-handler.js +167 -0
  38. package/dist/runtime/world.d.ts.map +1 -1
  39. package/dist/runtime/world.js +22 -21
  40. package/dist/runtime.d.ts +2 -7
  41. package/dist/runtime.d.ts.map +1 -1
  42. package/dist/runtime.js +66 -334
  43. package/dist/schemas.d.ts +1 -15
  44. package/dist/schemas.d.ts.map +1 -1
  45. package/dist/schemas.js +2 -15
  46. package/dist/serialization.d.ts +57 -10
  47. package/dist/serialization.d.ts.map +1 -1
  48. package/dist/serialization.js +179 -52
  49. package/dist/sleep.d.ts +33 -0
  50. package/dist/sleep.d.ts.map +1 -0
  51. package/dist/sleep.js +10 -0
  52. package/dist/source-map.d.ts +10 -0
  53. package/dist/source-map.d.ts.map +1 -0
  54. package/dist/source-map.js +56 -0
  55. package/dist/step/context-storage.d.ts +2 -0
  56. package/dist/step/context-storage.d.ts.map +1 -1
  57. package/dist/step/context-storage.js +1 -1
  58. package/dist/step/get-closure-vars.d.ts +9 -0
  59. package/dist/step/get-closure-vars.d.ts.map +1 -0
  60. package/dist/step/get-closure-vars.js +16 -0
  61. package/dist/step/get-step-metadata.js +1 -1
  62. package/dist/step/get-workflow-metadata.js +1 -1
  63. package/dist/step/writable-stream.d.ts +14 -0
  64. package/dist/step/writable-stream.d.ts.map +1 -0
  65. package/dist/step/writable-stream.js +30 -0
  66. package/dist/step.d.ts +1 -1
  67. package/dist/step.d.ts.map +1 -1
  68. package/dist/step.js +38 -10
  69. package/dist/symbols.d.ts +2 -0
  70. package/dist/symbols.d.ts.map +1 -1
  71. package/dist/symbols.js +3 -1
  72. package/dist/telemetry/semantic-conventions.d.ts +66 -38
  73. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  74. package/dist/telemetry/semantic-conventions.js +16 -3
  75. package/dist/telemetry.d.ts +8 -4
  76. package/dist/telemetry.d.ts.map +1 -1
  77. package/dist/telemetry.js +39 -6
  78. package/dist/types.d.ts +0 -7
  79. package/dist/types.d.ts.map +1 -1
  80. package/dist/types.js +1 -26
  81. package/dist/util.d.ts +9 -27
  82. package/dist/util.d.ts.map +1 -1
  83. package/dist/util.js +34 -42
  84. package/dist/vm/index.js +2 -2
  85. package/dist/vm/uuid.js +1 -1
  86. package/dist/workflow/create-hook.js +1 -1
  87. package/dist/workflow/define-hook.d.ts +3 -3
  88. package/dist/workflow/define-hook.d.ts.map +1 -1
  89. package/dist/workflow/define-hook.js +1 -1
  90. package/dist/workflow/get-workflow-metadata.js +1 -1
  91. package/dist/workflow/hook.d.ts.map +1 -1
  92. package/dist/workflow/hook.js +6 -9
  93. package/dist/workflow/index.d.ts +1 -0
  94. package/dist/workflow/index.d.ts.map +1 -1
  95. package/dist/workflow/index.js +2 -1
  96. package/dist/workflow/sleep.d.ts +4 -0
  97. package/dist/workflow/sleep.d.ts.map +1 -0
  98. package/dist/workflow/sleep.js +54 -0
  99. package/dist/workflow/writable-stream.js +1 -1
  100. package/dist/workflow.d.ts.map +1 -1
  101. package/dist/workflow.js +60 -9
  102. package/dist/writable-stream.d.ts +5 -4
  103. package/dist/writable-stream.d.ts.map +1 -1
  104. package/dist/writable-stream.js +7 -6
  105. package/package.json +21 -18
  106. package/dist/builtins.js.map +0 -1
  107. package/dist/create-hook.js.map +0 -1
  108. package/dist/define-hook.js.map +0 -1
  109. package/dist/events-consumer.js.map +0 -1
  110. package/dist/global.js.map +0 -1
  111. package/dist/index.js.map +0 -1
  112. package/dist/logger.js.map +0 -1
  113. package/dist/observability.js.map +0 -1
  114. package/dist/parse-name.js.map +0 -1
  115. package/dist/private.js.map +0 -1
  116. package/dist/runtime/resume-hook.js.map +0 -1
  117. package/dist/runtime/start.js.map +0 -1
  118. package/dist/runtime/world.js.map +0 -1
  119. package/dist/runtime.js.map +0 -1
  120. package/dist/schemas.js.map +0 -1
  121. package/dist/serialization.js.map +0 -1
  122. package/dist/step/context-storage.js.map +0 -1
  123. package/dist/step/get-step-metadata.js.map +0 -1
  124. package/dist/step/get-workflow-metadata.js.map +0 -1
  125. package/dist/step.js.map +0 -1
  126. package/dist/symbols.js.map +0 -1
  127. package/dist/telemetry/semantic-conventions.js.map +0 -1
  128. package/dist/telemetry.js.map +0 -1
  129. package/dist/types.js.map +0 -1
  130. package/dist/util.js.map +0 -1
  131. package/dist/vm/index.js.map +0 -1
  132. package/dist/vm/uuid.js.map +0 -1
  133. package/dist/workflow/create-hook.js.map +0 -1
  134. package/dist/workflow/define-hook.js.map +0 -1
  135. package/dist/workflow/get-workflow-metadata.js.map +0 -1
  136. package/dist/workflow/hook.js.map +0 -1
  137. package/dist/workflow/index.js.map +0 -1
  138. package/dist/workflow/writable-stream.js.map +0 -1
  139. package/dist/workflow.js.map +0 -1
  140. package/dist/writable-stream.js.map +0 -1
@@ -0,0 +1,56 @@
1
+ import { TraceMap, originalPositionFor } from '@jridgewell/trace-mapping';
2
+ /**
3
+ * Remaps an error stack trace using inline source maps to show original source locations.
4
+ *
5
+ * @param stack - The error stack trace to remap
6
+ * @param filename - The workflow filename to match in stack frames
7
+ * @param workflowCode - The workflow bundle code containing inline source maps
8
+ * @returns The remapped stack trace with original source locations
9
+ */
10
+ export function remapErrorStack(stack, filename, workflowCode) {
11
+ // Extract inline source map from workflow code
12
+ const sourceMapMatch = workflowCode.match(/\/\/# sourceMappingURL=data:application\/json;base64,(.+)/);
13
+ if (!sourceMapMatch) {
14
+ return stack; // No source map found
15
+ }
16
+ try {
17
+ const base64 = sourceMapMatch[1];
18
+ const sourceMapJson = Buffer.from(base64, 'base64').toString('utf-8');
19
+ const sourceMapData = JSON.parse(sourceMapJson);
20
+ // Use TraceMap (pure JS, no WASM required)
21
+ const tracer = new TraceMap(sourceMapData);
22
+ // Parse and remap each line in the stack trace
23
+ const lines = stack.split('\n');
24
+ const remappedLines = lines.map((line) => {
25
+ // Match stack frames: "at functionName (filename:line:column)" or "at filename:line:column"
26
+ const frameMatch = line.match(/^\s*at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);
27
+ if (!frameMatch) {
28
+ return line; // Not a stack frame, return as-is
29
+ }
30
+ const [, functionName, file, lineStr, colStr] = frameMatch;
31
+ // Only remap frames from our workflow file
32
+ if (!file.includes(filename)) {
33
+ return line;
34
+ }
35
+ const lineNumber = parseInt(lineStr, 10);
36
+ const columnNumber = parseInt(colStr, 10);
37
+ // Map to original source position
38
+ const original = originalPositionFor(tracer, {
39
+ line: lineNumber,
40
+ column: columnNumber,
41
+ });
42
+ if (original.source && original.line !== null) {
43
+ const func = functionName || original.name || 'anonymous';
44
+ const col = original.column !== null ? original.column : columnNumber;
45
+ return ` at ${func} (${original.source}:${original.line}:${col})`;
46
+ }
47
+ return line; // Couldn't map, return original
48
+ });
49
+ return remappedLines.join('\n');
50
+ }
51
+ catch (e) {
52
+ // If source map processing fails, return original stack
53
+ return stack;
54
+ }
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zb3VyY2UtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsS0FBYSxFQUNiLFFBQWdCLEVBQ2hCLFlBQW9CO0lBRXBCLCtDQUErQztJQUMvQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUN2QywyREFBMkQsQ0FDNUQsQ0FBQztJQUNGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDLHNCQUFzQjtJQUN0QyxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhELDJDQUEyQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUzQywrQ0FBK0M7UUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsNEZBQTRGO1lBQzVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzNCLCtDQUErQyxDQUNoRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLElBQUksQ0FBQyxDQUFDLGtDQUFrQztZQUNqRCxDQUFDO1lBRUQsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBRTNELDJDQUEyQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFMUMsa0NBQWtDO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtnQkFDM0MsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE1BQU0sRUFBRSxZQUFZO2FBQ3JCLENBQUMsQ0FBQztZQUVILElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM5QyxNQUFNLElBQUksR0FBRyxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUM7Z0JBQzFELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RFLE9BQU8sVUFBVSxJQUFJLEtBQUssUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ3ZFLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLGdDQUFnQztRQUMvQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLHdEQUF3RDtRQUN4RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDIn0=
@@ -4,5 +4,7 @@ import type { StepMetadata } from './get-step-metadata.js';
4
4
  export declare const contextStorage: AsyncLocalStorage<{
5
5
  stepMetadata: StepMetadata;
6
6
  workflowMetadata: WorkflowMetadata;
7
+ ops: Promise<void>[];
8
+ closureVars?: Record<string, any>;
7
9
  }>;
8
10
  //# sourceMappingURL=context-storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../src/step/context-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,eAAO,MAAM,cAAc;kBACX,YAAY;sBACR,gBAAgB;EAChC,CAAC"}
1
+ {"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../src/step/context-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,eAAO,MAAM,cAAc;kBACX,YAAY;sBACR,gBAAgB;SAC7B,OAAO,CAAC,IAAI,CAAC,EAAE;kBACN,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;EAC/B,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { AsyncLocalStorage } from 'node:async_hooks';
2
2
  export const contextStorage = /* @__PURE__ */ new AsyncLocalStorage();
3
- //# sourceMappingURL=context-storage.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvY29udGV4dC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXJELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsSUFBSSxpQkFBaUIsRUFLL0QsQ0FBQyJ9
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Returns the closure variables for the current step function.
3
+ * This is an internal function used by the SWC transform to access
4
+ * variables from the parent workflow scope.
5
+ *
6
+ * @internal
7
+ */
8
+ export declare function __private_getClosureVars(): Record<string, any>;
9
+ //# sourceMappingURL=get-closure-vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-closure-vars.d.ts","sourceRoot":"","sources":["../../src/step/get-closure-vars.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAQ9D"}
@@ -0,0 +1,16 @@
1
+ import { contextStorage } from './context-storage.js';
2
+ /**
3
+ * Returns the closure variables for the current step function.
4
+ * This is an internal function used by the SWC transform to access
5
+ * variables from the parent workflow scope.
6
+ *
7
+ * @internal
8
+ */
9
+ export function __private_getClosureVars() {
10
+ const ctx = contextStorage.getStore();
11
+ if (!ctx) {
12
+ throw new Error('Closure variables can only be accessed inside a step function');
13
+ }
14
+ return ctx.closureVars || {};
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNsb3N1cmUtdmFycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwL2dldC1jbG9zdXJlLXZhcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXREOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztBQUMvQixDQUFDIn0=
@@ -11,4 +11,4 @@ export function getStepMetadata() {
11
11
  }
12
12
  return ctx.stepMetadata;
13
13
  }
14
- //# sourceMappingURL=get-step-metadata.js.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN0ZXAtbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcC9nZXQtc3RlcC1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFvQ3REOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZTtJQUM3QixNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FDYiwrREFBK0QsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUM7QUFDMUIsQ0FBQyJ9
@@ -9,4 +9,4 @@ export function getWorkflowMetadata() {
9
9
  }
10
10
  return ctx.workflowMetadata;
11
11
  }
12
- //# sourceMappingURL=get-workflow-metadata.js.map
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXdvcmtmbG93LW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvZ2V0LXdvcmtmbG93LW1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUl0RDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsK0VBQStFLENBQ2hGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7QUFDOUIsQ0FBQyJ9
@@ -0,0 +1,14 @@
1
+ import type { WorkflowWritableStreamOptions } from '../writable-stream.js';
2
+ export type { WorkflowWritableStreamOptions };
3
+ /**
4
+ * Retrieves a writable stream that is associated with the current workflow.
5
+ *
6
+ * The writable stream is intended to be used within step functions to write
7
+ * data that can be read outside the workflow by using the readable method of getRun.
8
+ *
9
+ * @param options - Optional configuration for the writable stream
10
+ * @returns The writable stream associated with the current workflow run
11
+ * @throws Error if called outside a workflow or step function
12
+ */
13
+ export declare function getWritable<W = any>(options?: WorkflowWritableStreamOptions): WritableStream<W>;
14
+ //# sourceMappingURL=writable-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writable-stream.d.ts","sourceRoot":"","sources":["../../src/step/writable-stream.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAG3E,YAAY,EAAE,6BAA6B,EAAE,CAAC;AAE9C;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,GAAG,GAAG,EACjC,OAAO,GAAE,6BAAkC,GAC1C,cAAc,CAAC,CAAC,CAAC,CAyBnB"}
@@ -0,0 +1,30 @@
1
+ import { getExternalReducers, getSerializeStream, WorkflowServerWritableStream, } from '../serialization.js';
2
+ import { getWorkflowRunStreamId } from '../util.js';
3
+ import { contextStorage } from './context-storage.js';
4
+ /**
5
+ * Retrieves a writable stream that is associated with the current workflow.
6
+ *
7
+ * The writable stream is intended to be used within step functions to write
8
+ * data that can be read outside the workflow by using the readable method of getRun.
9
+ *
10
+ * @param options - Optional configuration for the writable stream
11
+ * @returns The writable stream associated with the current workflow run
12
+ * @throws Error if called outside a workflow or step function
13
+ */
14
+ export function getWritable(options = {}) {
15
+ const ctx = contextStorage.getStore();
16
+ if (!ctx) {
17
+ throw new Error('`getWritable()` can only be called inside a workflow or step function');
18
+ }
19
+ const { namespace } = options;
20
+ const runId = ctx.workflowMetadata.workflowRunId;
21
+ const name = getWorkflowRunStreamId(runId, namespace);
22
+ // Create a transform stream that serializes chunks and pipes to the workflow server
23
+ const serialize = getSerializeStream(getExternalReducers(globalThis, ctx.ops, runId));
24
+ // Pipe the serialized data to the workflow server stream
25
+ // Register this async operation with the runtime's ops array so it's awaited via waitUntil
26
+ ctx.ops.push(serialize.readable.pipeTo(new WorkflowServerWritableStream(name, runId)));
27
+ // Return the writable side of the transform stream
28
+ return serialize.writable;
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGFibGUtc3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvd3JpdGFibGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixHQUM3QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJdEQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsVUFBeUMsRUFBRTtJQUUzQyxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FDYix1RUFBdUUsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7SUFDakQsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRXRELG9GQUFvRjtJQUNwRixNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FDbEMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQ2hELENBQUM7SUFFRix5REFBeUQ7SUFDekQsMkZBQTJGO0lBQzNGLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNWLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksNEJBQTRCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQ3pFLENBQUM7SUFFRixtREFBbUQ7SUFDbkQsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBQzVCLENBQUMifQ==
package/dist/step.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import type { WorkflowOrchestratorContext } from './private.js';
2
2
  import type { Serializable } from './schemas.js';
3
- export declare function createUseStep(ctx: WorkflowOrchestratorContext): <Args extends Serializable[], Result>(stepName: string) => (...args: Args) => Promise<Result>;
3
+ export declare function createUseStep(ctx: WorkflowOrchestratorContext): <Args extends Serializable[], Result>(stepName: string, closureVarsFn?: () => Record<string, Serializable>) => (...args: Args) => Promise<Result>;
4
4
  //# sourceMappingURL=step.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,wBAAgB,aAAa,CAAC,GAAG,EAAE,2BAA2B,IACpC,IAAI,SAAS,YAAY,EAAE,EAAE,MAAM,EACzD,UAAU,MAAM,MAER,GAAG,MAAM,IAAI,KAAG,OAAO,CAAC,MAAM,CAAC,CAkH1C"}
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,wBAAgB,aAAa,CAAC,GAAG,EAAE,2BAA2B,IACpC,IAAI,SAAS,YAAY,EAAE,EAAE,MAAM,EACzD,UAAU,MAAM,EAChB,gBAAgB,MAAM,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,eAEnB,IAAI,KAAG,OAAO,CAAC,MAAM,CAAC,CAkJxD"}
package/dist/step.js CHANGED
@@ -1,20 +1,26 @@
1
1
  import { FatalError, WorkflowRuntimeError } from '@workflow/errors';
2
+ import { withResolvers } from '@workflow/utils';
2
3
  import { EventConsumerResult } from './events-consumer.js';
3
4
  import { WorkflowSuspension } from './global.js';
4
5
  import { stepLogger } from './logger.js';
5
6
  import { hydrateStepReturnValue } from './serialization.js';
6
- import { withResolvers } from './util.js';
7
7
  export function createUseStep(ctx) {
8
- return function useStep(stepName) {
9
- return (...args) => {
8
+ return function useStep(stepName, closureVarsFn) {
9
+ const stepFunction = (...args) => {
10
10
  const { promise, resolve, reject } = withResolvers();
11
11
  const correlationId = `step_${ctx.generateUlid()}`;
12
- ctx.invocationsQueue.push({
12
+ const queueItem = {
13
13
  type: 'step',
14
14
  correlationId,
15
15
  stepName,
16
16
  args,
17
- });
17
+ };
18
+ // Invoke the closure variables function to get the closure scope
19
+ const closureVars = closureVarsFn?.();
20
+ if (closureVars) {
21
+ queueItem.closureVars = closureVars;
22
+ }
23
+ ctx.invocationsQueue.set(correlationId, queueItem);
18
24
  // Track whether we've already seen a "step_started" event for this step.
19
25
  // This is important because after a retryable failure, the step moves back to
20
26
  // "pending" status which causes another "step_started" event to be emitted.
@@ -50,10 +56,9 @@ export function createUseStep(ctx) {
50
56
  if (event.eventType === 'step_started') {
51
57
  // Step has started - so remove from the invocations queue (only on the first "step_started" event)
52
58
  if (!hasSeenStepStarted) {
53
- const invocationsQueueIndex = ctx.invocationsQueue.findIndex((invocation) => invocation.type === 'step' &&
54
- invocation.correlationId === correlationId);
55
- if (invocationsQueueIndex !== -1) {
56
- ctx.invocationsQueue.splice(invocationsQueueIndex, 1);
59
+ // O(1) lookup and delete using Map
60
+ if (ctx.invocationsQueue.has(correlationId)) {
61
+ ctx.invocationsQueue.delete(correlationId);
57
62
  }
58
63
  else {
59
64
  setTimeout(() => {
@@ -99,6 +104,29 @@ export function createUseStep(ctx) {
99
104
  });
100
105
  return promise;
101
106
  };
107
+ // Ensure the "name" property matches the original step function name
108
+ // Extract function name from stepName (format: "step//filepath//functionName")
109
+ const functionName = stepName.split('//').pop();
110
+ Object.defineProperty(stepFunction, 'name', {
111
+ value: functionName,
112
+ });
113
+ // Add the step function identifier to the step function for serialization
114
+ Object.defineProperty(stepFunction, 'stepId', {
115
+ value: stepName,
116
+ writable: false,
117
+ enumerable: false,
118
+ configurable: false,
119
+ });
120
+ // Store the closure variables function for serialization
121
+ if (closureVarsFn) {
122
+ Object.defineProperty(stepFunction, '__closureVarsFn', {
123
+ value: closureVarsFn,
124
+ writable: false,
125
+ enumerable: false,
126
+ configurable: false,
127
+ });
128
+ }
129
+ return stepFunction;
102
130
  };
103
131
  }
104
- //# sourceMappingURL=step.js.map
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFnQyxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTVELE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBZ0M7SUFDNUQsT0FBTyxTQUFTLE9BQU8sQ0FDckIsUUFBZ0IsRUFDaEIsYUFBa0Q7UUFFbEQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQVUsRUFBbUIsRUFBRTtZQUN0RCxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxhQUFhLEVBQVUsQ0FBQztZQUU3RCxNQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBRW5ELE1BQU0sU0FBUyxHQUE0QjtnQkFDekMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osYUFBYTtnQkFDYixRQUFRO2dCQUNSLElBQUk7YUFDTCxDQUFDO1lBRUYsaUVBQWlFO1lBQ2pFLE1BQU0sV0FBVyxHQUFHLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsU0FBUyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFDdEMsQ0FBQztZQUVELEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRW5ELHlF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
package/dist/symbols.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  export declare const WORKFLOW_USE_STEP: unique symbol;
2
2
  export declare const WORKFLOW_CREATE_HOOK: unique symbol;
3
+ export declare const WORKFLOW_SLEEP: unique symbol;
3
4
  export declare const WORKFLOW_CONTEXT: unique symbol;
4
5
  export declare const WORKFLOW_GET_STREAM_ID: unique symbol;
6
+ export declare const STABLE_ULID: unique symbol;
5
7
  export declare const STREAM_NAME_SYMBOL: unique symbol;
6
8
  export declare const STREAM_TYPE_SYMBOL: unique symbol;
7
9
  export declare const BODY_INIT_SYMBOL: unique symbol;
@@ -1 +1 @@
1
- {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,eAAkC,CAAC;AACjE,eAAO,MAAM,oBAAoB,eAAqC,CAAC;AACvE,eAAO,MAAM,gBAAgB,eAAiC,CAAC;AAC/D,eAAO,MAAM,sBAAsB,eAAuC,CAAC;AAC3E,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,gBAAgB,eAA0B,CAAC;AACxD,eAAO,MAAM,yBAAyB,eAErC,CAAC"}
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,eAAkC,CAAC;AACjE,eAAO,MAAM,oBAAoB,eAAqC,CAAC;AACvE,eAAO,MAAM,cAAc,eAA+B,CAAC;AAC3D,eAAO,MAAM,gBAAgB,eAAiC,CAAC;AAC/D,eAAO,MAAM,sBAAsB,eAAuC,CAAC;AAC3E,eAAO,MAAM,WAAW,eAAqC,CAAC;AAC9D,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,gBAAgB,eAA0B,CAAC;AACxD,eAAO,MAAM,yBAAyB,eAErC,CAAC"}
package/dist/symbols.js CHANGED
@@ -1,9 +1,11 @@
1
1
  export const WORKFLOW_USE_STEP = Symbol.for('WORKFLOW_USE_STEP');
2
2
  export const WORKFLOW_CREATE_HOOK = Symbol.for('WORKFLOW_CREATE_HOOK');
3
+ export const WORKFLOW_SLEEP = Symbol.for('WORKFLOW_SLEEP');
3
4
  export const WORKFLOW_CONTEXT = Symbol.for('WORKFLOW_CONTEXT');
4
5
  export const WORKFLOW_GET_STREAM_ID = Symbol.for('WORKFLOW_GET_STREAM_ID');
6
+ export const STABLE_ULID = Symbol.for('WORKFLOW_STABLE_ULID');
5
7
  export const STREAM_NAME_SYMBOL = Symbol.for('WORKFLOW_STREAM_NAME');
6
8
  export const STREAM_TYPE_SYMBOL = Symbol.for('WORKFLOW_STREAM_TYPE');
7
9
  export const BODY_INIT_SYMBOL = Symbol.for('BODY_INIT');
8
10
  export const WEBHOOK_RESPONSE_WRITABLE = Symbol.for('WEBHOOK_RESPONSE_WRITABLE');
9
- //# sourceMappingURL=symbols.js.map
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeW1ib2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDdkUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQ2pELDJCQUEyQixDQUM1QixDQUFDIn0=
@@ -38,138 +38,166 @@
38
38
  */
39
39
  /** The name of the workflow being executed */
40
40
  export declare const WorkflowName: (value: string) => {
41
- [x: string]: string;
41
+ [k: string]: string;
42
42
  };
43
43
  /** The operation being performed on the workflow */
44
- export declare const WorkflowOperation: (value: "start" | "execute" | "run") => {
45
- [x: string]: "start" | "execute" | "run";
44
+ export declare const WorkflowOperation: (value: "run" | "start" | "execute") => {
45
+ [k: string]: "run" | "start" | "execute";
46
46
  };
47
47
  /** Unique identifier for a specific workflow run instance */
48
48
  export declare const WorkflowRunId: (value: string) => {
49
- [x: string]: string;
49
+ [k: string]: string;
50
50
  };
51
51
  /** Current status of the workflow run */
52
- export declare const WorkflowRunStatus: (value: "pending" | "running" | "completed" | "failed" | "paused" | "cancelled" | "pending_steps") => {
53
- [x: string]: "pending" | "running" | "completed" | "failed" | "paused" | "cancelled" | "pending_steps";
52
+ export declare const WorkflowRunStatus: (value: "pending" | "running" | "paused" | "cancelled" | "completed" | "failed" | "workflow_suspended") => {
53
+ [k: string]: "pending" | "running" | "paused" | "cancelled" | "completed" | "failed" | "workflow_suspended";
54
54
  };
55
55
  /** Timestamp when the workflow execution started (Unix timestamp) */
56
56
  export declare const WorkflowStartedAt: (value: number) => {
57
- [x: string]: number;
57
+ [k: string]: number;
58
58
  };
59
59
  /** Number of events processed during workflow execution */
60
60
  export declare const WorkflowEventsCount: (value: number) => {
61
- [x: string]: number;
61
+ [k: string]: number;
62
62
  };
63
63
  /** Number of arguments passed to the workflow */
64
64
  export declare const WorkflowArgumentsCount: (value: number) => {
65
- [x: string]: number;
65
+ [k: string]: number;
66
66
  };
67
67
  /** Type of the workflow result */
68
68
  export declare const WorkflowResultType: (value: string) => {
69
- [x: string]: string;
69
+ [k: string]: string;
70
70
  };
71
71
  /** Whether trace context was propagated to this workflow execution */
72
72
  export declare const WorkflowTracePropagated: (value: boolean) => {
73
- [x: string]: boolean;
73
+ [k: string]: boolean;
74
74
  };
75
75
  /** Name of the error that caused workflow failure */
76
76
  export declare const WorkflowErrorName: (value: string) => {
77
- [x: string]: string;
77
+ [k: string]: string;
78
78
  };
79
79
  /** Error message when workflow fails */
80
80
  export declare const WorkflowErrorMessage: (value: string) => {
81
- [x: string]: string;
81
+ [k: string]: string;
82
82
  };
83
83
  /** Number of steps created during workflow execution */
84
84
  export declare const WorkflowStepsCreated: (value: number) => {
85
- [x: string]: number;
85
+ [k: string]: number;
86
+ };
87
+ /** Number of hooks created during workflow execution */
88
+ export declare const WorkflowHooksCreated: (value: number) => {
89
+ [k: string]: number;
90
+ };
91
+ /** Number of waits created during workflow execution */
92
+ export declare const WorkflowWaitsCreated: (value: number) => {
93
+ [k: string]: number;
86
94
  };
87
95
  /** Name of the step function being executed */
88
96
  export declare const StepName: (value: string) => {
89
- [x: string]: string;
97
+ [k: string]: string;
90
98
  };
91
99
  /** Unique identifier for the step instance */
92
100
  export declare const StepId: (value: string) => {
93
- [x: string]: string;
101
+ [k: string]: string;
94
102
  };
95
103
  /** Current attempt number for step execution (starts at 1) */
96
104
  export declare const StepAttempt: (value: number) => {
97
- [x: string]: number;
105
+ [k: string]: number;
98
106
  };
99
107
  /** Current status of the step */
100
- export declare const StepStatus: (value: "pending" | "running" | "completed" | "failed" | "cancelled") => {
101
- [x: string]: "pending" | "running" | "completed" | "failed" | "cancelled";
108
+ export declare const StepStatus: (value: "pending" | "running" | "cancelled" | "completed" | "failed") => {
109
+ [k: string]: "pending" | "running" | "cancelled" | "completed" | "failed";
102
110
  };
103
111
  /** Maximum number of retries allowed for this step */
104
112
  export declare const StepMaxRetries: (value: number) => {
105
- [x: string]: number;
113
+ [k: string]: number;
106
114
  };
107
115
  /** Whether trace context was propagated to this step execution */
108
116
  export declare const StepTracePropagated: (value: boolean) => {
109
- [x: string]: boolean;
117
+ [k: string]: boolean;
110
118
  };
111
119
  /** Whether the step was skipped during execution */
112
120
  export declare const StepSkipped: (value: boolean) => {
113
- [x: string]: boolean;
121
+ [k: string]: boolean;
114
122
  };
115
123
  /** Reason why the step was skipped */
116
- export declare const StepSkipReason: (value: "pending" | "running" | "completed" | "failed" | "cancelled") => {
117
- [x: string]: "pending" | "running" | "completed" | "failed" | "cancelled";
124
+ export declare const StepSkipReason: (value: "pending" | "running" | "cancelled" | "completed" | "failed") => {
125
+ [k: string]: "pending" | "running" | "cancelled" | "completed" | "failed";
118
126
  };
119
127
  /** Number of arguments passed to the step function */
120
128
  export declare const StepArgumentsCount: (value: number) => {
121
- [x: string]: number;
129
+ [k: string]: number;
122
130
  };
123
131
  /** Type of the step result */
124
132
  export declare const StepResultType: (value: string) => {
125
- [x: string]: string;
133
+ [k: string]: string;
126
134
  };
127
135
  /** Name of the error that caused step failure */
128
136
  export declare const StepErrorName: (value: string) => {
129
- [x: string]: string;
137
+ [k: string]: string;
130
138
  };
131
139
  /** Error message when step fails */
132
140
  export declare const StepErrorMessage: (value: string) => {
133
- [x: string]: string;
141
+ [k: string]: string;
134
142
  };
135
143
  /** Whether the step failed with a fatal error (no retries) */
136
144
  export declare const StepFatalError: (value: boolean) => {
137
- [x: string]: boolean;
145
+ [k: string]: boolean;
138
146
  };
139
147
  /** Whether all retry attempts have been exhausted */
140
148
  export declare const StepRetryExhausted: (value: boolean) => {
141
- [x: string]: boolean;
149
+ [k: string]: boolean;
142
150
  };
143
151
  /** Number of seconds to wait before next retry attempt */
144
152
  export declare const StepRetryTimeoutSeconds: (value: number) => {
145
- [x: string]: number;
153
+ [k: string]: number;
146
154
  };
147
155
  /** Whether the step will be retried after this failure */
148
156
  export declare const StepRetryWillRetry: (value: boolean) => {
149
- [x: string]: boolean;
157
+ [k: string]: boolean;
150
158
  };
151
159
  /** Name of the queue being used for message processing */
152
160
  export declare const QueueName: (value: string) => {
153
- [x: string]: string;
161
+ [k: string]: string;
162
+ };
163
+ /** The message id being handled */
164
+ export declare const QueueMessageId: (value: string & import("zod").$brand<"MessageId">) => {
165
+ [k: string]: string & import("zod").$brand<"MessageId">;
166
+ };
167
+ /** Time taken to enqueue the message in milliseconds */
168
+ export declare const QueueOverheadMs: (value: number) => {
169
+ [k: string]: number;
154
170
  };
155
171
  /** Unique identifier for the deployment environment */
156
172
  export declare const DeploymentId: (value: string) => {
157
- [x: string]: string;
173
+ [k: string]: string;
158
174
  };
159
175
  /** Token identifying a specific hook */
160
176
  export declare const HookToken: (value: string) => {
161
- [x: string]: string;
177
+ [k: string]: string;
162
178
  };
163
179
  /** Unique identifier for a hook instance */
164
180
  export declare const HookId: (value: string) => {
165
- [x: string]: string;
181
+ [k: string]: string;
166
182
  };
167
183
  /** Whether a hook was found by its token */
168
184
  export declare const HookFound: (value: boolean) => {
169
- [x: string]: boolean;
185
+ [k: string]: boolean;
170
186
  };
171
187
  /** Number of webhook handlers triggered */
172
188
  export declare const WebhookHandlersTriggered: (value: number) => {
173
- [x: string]: number;
189
+ [k: string]: number;
190
+ };
191
+ export declare const WorkflowSuspensionState: (value: "suspended") => {
192
+ [k: string]: "suspended";
193
+ };
194
+ export declare const WorkflowSuspensionHookCount: (value: number) => {
195
+ [k: string]: number;
196
+ };
197
+ export declare const WorkflowSuspensionStepCount: (value: number) => {
198
+ [k: string]: number;
199
+ };
200
+ export declare const WorkflowSuspensionWaitCount: (value: number) => {
201
+ [k: string]: number;
174
202
  };
175
203
  //# sourceMappingURL=semantic-conventions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-conventions.d.ts","sourceRoot":"","sources":["../../src/telemetry/semantic-conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAeH,8CAA8C;AAC9C,eAAO,MAAM,YAAY;;CAA8C,CAAC;AAExE,oDAAoD;AACpD,eAAO,MAAM,iBAAiB;;CAEP,CAAC;AAExB,6DAA6D;AAC7D,eAAO,MAAM,aAAa;;CAAgD,CAAC;AAE3E,yCAAyC;AACzC,eAAO,MAAM,iBAAiB;;CAEN,CAAC;AAEzB,qEAAqE;AACrE,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,sBAAsB;;CAElC,CAAC;AAEF,kCAAkC;AAClC,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,uBAAuB;;CAEnC,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAIF,+CAA+C;AAC/C,eAAO,MAAM,QAAQ;;CAA0C,CAAC;AAEhE,8CAA8C;AAC9C,eAAO,MAAM,MAAM;;CAAwC,CAAC;AAE5D,8DAA8D;AAC9D,eAAO,MAAM,WAAW;;CAA6C,CAAC;AAEtE,iCAAiC;AACjC,eAAO,MAAM,UAAU;;CAAoD,CAAC;AAE5E,sDAAsD;AACtD,eAAO,MAAM,cAAc;;CAAiD,CAAC;AAE7E,kEAAkE;AAClE,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,WAAW;;CAA8C,CAAC;AAEvE,sCAAsC;AACtC,eAAO,MAAM,cAAc;;CAC6B,CAAC;AAEzD,sDAAsD;AACtD,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,cAAc;;CAAiD,CAAC;AAE7E,iDAAiD;AACjD,eAAO,MAAM,aAAa;;CAAgD,CAAC;AAE3E,oCAAoC;AACpC,eAAO,MAAM,gBAAgB;;CACqB,CAAC;AAEnD,8DAA8D;AAC9D,eAAO,MAAM,cAAc;;CAAkD,CAAC;AAE9E,qDAAqD;AACrD,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,uBAAuB;;CAEnC,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAIF,0DAA0D;AAC1D,eAAO,MAAM,SAAS;;CAA2C,CAAC;AAIlE,uDAAuD;AACvD,eAAO,MAAM,YAAY;;CAA8C,CAAC;AAIxE,wCAAwC;AACxC,eAAO,MAAM,SAAS;;CAAoD,CAAC;AAE3E,4CAA4C;AAC5C,eAAO,MAAM,MAAM;;CAAiD,CAAC;AAErE,4CAA4C;AAC5C,eAAO,MAAM,SAAS;;CAAqD,CAAC;AAI5E,2CAA2C;AAC3C,eAAO,MAAM,wBAAwB;;CAEpC,CAAC"}
1
+ {"version":3,"file":"semantic-conventions.d.ts","sourceRoot":"","sources":["../../src/telemetry/semantic-conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAgBH,8CAA8C;AAC9C,eAAO,MAAM,YAAY;;CAA8C,CAAC;AAExE,oDAAoD;AACpD,eAAO,MAAM,iBAAiB;;CAEP,CAAC;AAExB,6DAA6D;AAC7D,eAAO,MAAM,aAAa;;CAAgD,CAAC;AAE3E,yCAAyC;AACzC,eAAO,MAAM,iBAAiB;;CAEN,CAAC;AAEzB,qEAAqE;AACrE,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,sBAAsB;;CAElC,CAAC;AAEF,kCAAkC;AAClC,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,uBAAuB;;CAEnC,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAIF,+CAA+C;AAC/C,eAAO,MAAM,QAAQ;;CAA0C,CAAC;AAEhE,8CAA8C;AAC9C,eAAO,MAAM,MAAM;;CAAwC,CAAC;AAE5D,8DAA8D;AAC9D,eAAO,MAAM,WAAW;;CAA6C,CAAC;AAEtE,iCAAiC;AACjC,eAAO,MAAM,UAAU;;CAAoD,CAAC;AAE5E,sDAAsD;AACtD,eAAO,MAAM,cAAc;;CAAiD,CAAC;AAE7E,kEAAkE;AAClE,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,WAAW;;CAA8C,CAAC;AAEvE,sCAAsC;AACtC,eAAO,MAAM,cAAc;;CAC6B,CAAC;AAEzD,sDAAsD;AACtD,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,cAAc;;CAAiD,CAAC;AAE7E,iDAAiD;AACjD,eAAO,MAAM,aAAa;;CAAgD,CAAC;AAE3E,oCAAoC;AACpC,eAAO,MAAM,gBAAgB;;CACqB,CAAC;AAEnD,8DAA8D;AAC9D,eAAO,MAAM,cAAc;;CAAkD,CAAC;AAE9E,qDAAqD;AACrD,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,uBAAuB;;CAEnC,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAIF,0DAA0D;AAC1D,eAAO,MAAM,SAAS;;CAA2C,CAAC;AAElE,mCAAmC;AACnC,eAAO,MAAM,cAAc;;CAG1B,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,eAAe;;CAAkD,CAAC;AAI/E,uDAAuD;AACvD,eAAO,MAAM,YAAY;;CAA8C,CAAC;AAIxE,wCAAwC;AACxC,eAAO,MAAM,SAAS;;CAAoD,CAAC;AAE3E,4CAA4C;AAC5C,eAAO,MAAM,MAAM;;CAAiD,CAAC;AAErE,4CAA4C;AAC5C,eAAO,MAAM,SAAS;;CAAqD,CAAC;AAI5E,2CAA2C;AAC3C,eAAO,MAAM,wBAAwB;;CAEpC,CAAC;AAIF,eAAO,MAAM,uBAAuB;;CAEnC,CAAC;AACF,eAAO,MAAM,2BAA2B;;CAEvC,CAAC;AACF,eAAO,MAAM,2BAA2B;;CAEvC,CAAC;AACF,eAAO,MAAM,2BAA2B;;CAEvC,CAAC"}
@@ -41,8 +41,8 @@
41
41
  * @param name - The attribute name following OpenTelemetry semantic conventions
42
42
  * @returns A function that takes a value and returns an attribute object
43
43
  */
44
- function SemanticConvention(name) {
45
- return (value) => ({ [name]: value });
44
+ function SemanticConvention(...names) {
45
+ return (value) => Object.fromEntries(names.map((name) => [name, value]));
46
46
  }
47
47
  // Workflow attributes
48
48
  /** The name of the workflow being executed */
@@ -69,6 +69,10 @@ export const WorkflowErrorName = SemanticConvention('workflow.error.name');
69
69
  export const WorkflowErrorMessage = SemanticConvention('workflow.error.message');
70
70
  /** Number of steps created during workflow execution */
71
71
  export const WorkflowStepsCreated = SemanticConvention('workflow.steps.created');
72
+ /** Number of hooks created during workflow execution */
73
+ export const WorkflowHooksCreated = SemanticConvention('workflow.hooks.created');
74
+ /** Number of waits created during workflow execution */
75
+ export const WorkflowWaitsCreated = SemanticConvention('workflow.waits.created');
72
76
  // Step attributes
73
77
  /** Name of the step function being executed */
74
78
  export const StepName = SemanticConvention('step.name');
@@ -105,6 +109,10 @@ export const StepRetryWillRetry = SemanticConvention('step.retry.will_retry');
105
109
  // Queue attributes
106
110
  /** Name of the queue being used for message processing */
107
111
  export const QueueName = SemanticConvention('queue.name');
112
+ /** The message id being handled */
113
+ export const QueueMessageId = SemanticConvention('messaging.message.id', 'queue.message.id');
114
+ /** Time taken to enqueue the message in milliseconds */
115
+ export const QueueOverheadMs = SemanticConvention('queue.overhead_ms');
108
116
  // Deployment attributes
109
117
  /** Unique identifier for the deployment environment */
110
118
  export const DeploymentId = SemanticConvention('deployment.id');
@@ -118,4 +126,9 @@ export const HookFound = SemanticConvention('workflow.hook.found');
118
126
  // Webhook attributes
119
127
  /** Number of webhook handlers triggered */
120
128
  export const WebhookHandlersTriggered = SemanticConvention('webhook.handlers.triggered');
121
- //# sourceMappingURL=semantic-conventions.js.map
129
+ // Suspension attributes
130
+ export const WorkflowSuspensionState = SemanticConvention('workflow.suspension.state');
131
+ export const WorkflowSuspensionHookCount = SemanticConvention('workflow.suspension.hook_count');
132
+ export const WorkflowSuspensionStepCount = SemanticConvention('workflow.suspension.step_count');
133
+ export const WorkflowSuspensionWaitCount = SemanticConvention('workflow.suspension.wait_count');
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtY29udmVudGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsc0JBQXNCO0FBRXRCLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFeEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUVqRCxvQkFBb0IsQ0FBQyxDQUFDO0FBRXhCLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUUzRSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBRWpELHFCQUFxQixDQUFDLENBQUM7QUFFekIscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FDbkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRixpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtC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
@@ -1,4 +1,5 @@
1
- import type { Span, SpanOptions } from '@opentelemetry/api';
1
+ import type * as api from '@opentelemetry/api';
2
+ import type { Span, SpanKind, SpanOptions } from '@opentelemetry/api';
2
3
  /**
3
4
  * Serializes the current trace context into a format that can be passed through queues
4
5
  * @returns A record of strings representing the trace context
@@ -9,7 +10,7 @@ export declare function serializeTraceCarrier(): Promise<Record<string, string>>
9
10
  * @param traceCarrier The serialized trace context
10
11
  * @returns OpenTelemetry context with the restored trace
11
12
  */
12
- export declare function deserializeTraceCarrier(traceCarrier: Record<string, string>): Promise<import("@opentelemetry/api").Context | undefined>;
13
+ export declare function deserializeTraceCarrier(traceCarrier: Record<string, string>): Promise<api.Context | undefined>;
13
14
  /**
14
15
  * Runs a function within the context of a deserialized trace
15
16
  * @param traceCarrier The serialized trace carrier (optional)
@@ -18,7 +19,10 @@ export declare function deserializeTraceCarrier(traceCarrier: Record<string, str
18
19
  */
19
20
  export declare function withTraceContext<T>(traceCarrier: Record<string, string> | undefined, fn: () => Promise<T>): Promise<T>;
20
21
  export declare function trace<T>(spanName: string, ...args: [fn: (span?: Span) => Promise<T>] | [opts: SpanOptions, fn: (span?: Span) => Promise<T>]): Promise<T>;
21
- export declare function getSpanContextForTraceCarrier(carrier: Record<string, string>): Promise<import("@opentelemetry/api").SpanContext | undefined>;
22
- export declare function getActiveSpan(): Promise<Span | null | undefined>;
22
+ export declare function getSpanContextForTraceCarrier(carrier: Record<string, string>): Promise<api.SpanContext | undefined>;
23
+ export declare function getActiveSpan(): Promise<api.Span | undefined>;
23
24
  export declare function instrumentObject<T extends object>(prefix: string, o: T): T;
25
+ export declare function getSpanKind(field: keyof typeof SpanKind): Promise<api.SpanKind | undefined>;
26
+ export declare function withOtel<T>(fn: (otel: typeof api) => T): Promise<Awaited<T> | undefined>;
27
+ export declare function linkToCurrentContext(): Promise<[api.Link] | undefined>;
24
28
  //# sourceMappingURL=telemetry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAO5D;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO7E;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,6DAMrC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAiBD,wBAAsB,KAAK,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,IAAI,EACH,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACjC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,iEAQhC;AAED,wBAAsB,aAAa,qCAIlC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAa1E"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAStE;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO7E;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,oCAMrC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAiBD,wBAAsB,KAAK,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,IAAI,EACH,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACjC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAwBD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,wCAQhC;AAED,wBAAsB,aAAa,kCAElC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAa1E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,OAAO,QAAQ,qCAE7D;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC,GAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAIjC;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAMtE"}