footprintjs 3.1.0 → 4.0.0

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 (74) hide show
  1. package/dist/advanced.js +20 -23
  2. package/dist/esm/advanced.js +2 -3
  3. package/dist/esm/lib/builder/FlowChartBuilder.js +39 -14
  4. package/dist/esm/lib/builder/typedFlowChart.js +10 -31
  5. package/dist/esm/lib/builder/types.js +1 -1
  6. package/dist/esm/lib/engine/handlers/NodeResolver.js +22 -7
  7. package/dist/esm/lib/engine/handlers/RuntimeStructureManager.js +17 -4
  8. package/dist/esm/lib/engine/handlers/SelectorHandler.js +2 -2
  9. package/dist/esm/lib/engine/handlers/StageRunner.js +2 -2
  10. package/dist/esm/lib/engine/handlers/SubflowInputMapper.js +2 -2
  11. package/dist/esm/lib/engine/index.js +1 -2
  12. package/dist/esm/lib/engine/narrative/CombinedNarrativeBuilder.js +1 -1
  13. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +2 -2
  14. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +41 -32
  15. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +7 -12
  16. package/dist/esm/lib/engine/narrative/index.js +1 -2
  17. package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +42 -10
  18. package/dist/esm/lib/engine/types.js +1 -1
  19. package/dist/esm/lib/memory/StageContext.js +1 -22
  20. package/dist/esm/lib/runner/FlowChartExecutor.js +24 -50
  21. package/dist/esm/lib/runner/RunnableChart.js +25 -1
  22. package/dist/esm/lib/runner/getSubtreeSnapshot.js +17 -27
  23. package/dist/esm/lib/scope/index.js +1 -1
  24. package/dist/esm/lib/scope/providers/types.js +1 -1
  25. package/dist/esm/lib/scope/recorders/index.js +1 -1
  26. package/dist/lib/builder/FlowChartBuilder.js +39 -14
  27. package/dist/lib/builder/typedFlowChart.js +11 -33
  28. package/dist/lib/builder/types.js +1 -1
  29. package/dist/lib/engine/handlers/NodeResolver.js +22 -7
  30. package/dist/lib/engine/handlers/RuntimeStructureManager.js +17 -4
  31. package/dist/lib/engine/handlers/SelectorHandler.js +2 -2
  32. package/dist/lib/engine/handlers/StageRunner.js +2 -2
  33. package/dist/lib/engine/handlers/SubflowInputMapper.js +2 -2
  34. package/dist/lib/engine/index.js +2 -4
  35. package/dist/lib/engine/narrative/CombinedNarrativeBuilder.js +1 -1
  36. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +2 -2
  37. package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +41 -32
  38. package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +7 -12
  39. package/dist/lib/engine/narrative/index.js +2 -4
  40. package/dist/lib/engine/traversal/FlowchartTraverser.js +42 -10
  41. package/dist/lib/engine/types.js +1 -1
  42. package/dist/lib/memory/StageContext.js +1 -22
  43. package/dist/lib/runner/FlowChartExecutor.js +24 -50
  44. package/dist/lib/runner/RunnableChart.js +25 -1
  45. package/dist/lib/runner/getSubtreeSnapshot.js +17 -27
  46. package/dist/lib/scope/index.js +1 -1
  47. package/dist/lib/scope/providers/types.js +1 -1
  48. package/dist/lib/scope/recorders/index.js +1 -1
  49. package/dist/types/advanced.d.ts +2 -3
  50. package/dist/types/lib/builder/FlowChartBuilder.d.ts +2 -1
  51. package/dist/types/lib/builder/typedFlowChart.d.ts +9 -29
  52. package/dist/types/lib/builder/types.d.ts +4 -4
  53. package/dist/types/lib/engine/handlers/NodeResolver.d.ts +10 -3
  54. package/dist/types/lib/engine/handlers/RuntimeStructureManager.d.ts +1 -1
  55. package/dist/types/lib/engine/index.d.ts +0 -1
  56. package/dist/types/lib/engine/narrative/CombinedNarrativeBuilder.d.ts +1 -1
  57. package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +3 -2
  58. package/dist/types/lib/engine/narrative/NarrativeFlowRecorder.d.ts +0 -1
  59. package/dist/types/lib/engine/narrative/index.d.ts +0 -1
  60. package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +6 -0
  61. package/dist/types/lib/engine/types.d.ts +3 -3
  62. package/dist/types/lib/memory/StageContext.d.ts +0 -15
  63. package/dist/types/lib/runner/FlowChartExecutor.d.ts +13 -37
  64. package/dist/types/lib/runner/RunnableChart.d.ts +2 -0
  65. package/dist/types/lib/scope/index.d.ts +0 -1
  66. package/dist/types/lib/scope/providers/types.d.ts +0 -6
  67. package/dist/types/lib/scope/recorders/index.d.ts +0 -1
  68. package/package.json +1 -1
  69. package/dist/esm/lib/engine/narrative/ControlFlowNarrativeGenerator.js +0 -112
  70. package/dist/esm/lib/scope/recorders/NarrativeRecorder.js +0 -149
  71. package/dist/lib/engine/narrative/ControlFlowNarrativeGenerator.js +0 -116
  72. package/dist/lib/scope/recorders/NarrativeRecorder.js +0 -153
  73. package/dist/types/lib/engine/narrative/ControlFlowNarrativeGenerator.d.ts +0 -31
  74. package/dist/types/lib/scope/recorders/NarrativeRecorder.d.ts +0 -50
@@ -36,7 +36,7 @@ exports.listSubflowPaths = exports.getSubtreeSnapshot = void 0;
36
36
  * @returns the matching SubtreeSnapshot, or `undefined` if the path is not found
37
37
  */
38
38
  function getSubtreeSnapshot(snapshot, path, allNarrativeEntries) {
39
- var _a, _b;
39
+ var _a;
40
40
  if (!snapshot || !path)
41
41
  return undefined;
42
42
  const normalizedPath = path.split('/').filter(Boolean).join('/');
@@ -53,9 +53,7 @@ function getSubtreeSnapshot(snapshot, path, allNarrativeEntries) {
53
53
  subflowId: lastSegment,
54
54
  executionTree: (_a = treeCtx === null || treeCtx === void 0 ? void 0 : treeCtx.stageContexts) !== null && _a !== void 0 ? _a : findSubflowInTree(snapshot.executionTree, lastSegment),
55
55
  sharedState: treeCtx === null || treeCtx === void 0 ? void 0 : treeCtx.globalContext,
56
- narrativeEntries: allNarrativeEntries
57
- ? extractScopedNarrative(allNarrativeEntries, (_b = sfResult.subflowName) !== null && _b !== void 0 ? _b : lastSegment)
58
- : undefined,
56
+ narrativeEntries: allNarrativeEntries ? extractScopedNarrative(allNarrativeEntries, lastSegment) : undefined,
59
57
  };
60
58
  }
61
59
  // Strategy 2: Find the node in the execution tree by subflowId
@@ -88,29 +86,21 @@ function listSubflowPaths(snapshot) {
88
86
  exports.listSubflowPaths = listSubflowPaths;
89
87
  /**
90
88
  * Extract narrative entries scoped to a specific subflow.
91
- * Finds entries between the subflow's entry and exit events.
89
+ * Filters by entry.subflowId field (set by CombinedNarrativeRecorder during traversal).
90
+ * Also includes the subflow entry/exit marker entries themselves.
92
91
  */
93
- function extractScopedNarrative(entries, subflowName) {
94
- const scoped = [];
95
- let inside = false;
96
- for (const entry of entries) {
97
- if (entry.type === 'subflow' && entry.text.includes(subflowName)) {
98
- if (entry.text.toLowerCase().includes('entering')) {
99
- inside = true;
100
- scoped.push(entry);
101
- continue;
102
- }
103
- if (entry.text.toLowerCase().includes('exiting')) {
104
- scoped.push(entry);
105
- inside = false;
106
- continue;
107
- }
108
- }
109
- if (inside) {
110
- scoped.push(entry);
111
- }
112
- }
113
- return scoped;
92
+ function extractScopedNarrative(entries, path) {
93
+ // The last segment of the path is the subflowId stored on entries
94
+ const subflowId = path.split('/').pop();
95
+ return entries.filter((entry) => {
96
+ // Include entries whose subflowId matches (events emitted while inside this subflow)
97
+ if (entry.subflowId === subflowId)
98
+ return true;
99
+ // Also include the subflow entry/exit markers (they carry the parent subflowId or undefined)
100
+ if (entry.type === 'subflow' && entry.stageId === subflowId)
101
+ return true;
102
+ return false;
103
+ });
114
104
  }
115
105
  /**
116
106
  * Find a subflow node in the execution tree by searching for a node
@@ -134,4 +124,4 @@ function findSubflowInTree(node, subflowId) {
134
124
  }
135
125
  return undefined;
136
126
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U3VidHJlZVNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvZ2V0U3VidHJlZVNuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHOzs7QUFrQkg7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsUUFBeUIsRUFDekIsSUFBWSxFQUNaLG1CQUE4Qzs7SUFFOUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUV6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsSUFBSSxDQUFDLGNBQWM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUV0QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO0lBQy9DLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFHLENBQUM7SUFFckQsNERBQTREO0lBQzVELDZFQUE2RTtJQUM3RSxJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUE0QixDQUFDO1FBQzNFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFrRCxDQUFDO1FBRTVFLE9BQU87WUFDTCxTQUFTLEVBQUUsV0FBVztZQUN0QixhQUFhLEVBQ1gsTUFBQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsYUFBMEMsbUNBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7WUFDaEgsV0FBVyxFQUFFLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxhQUFvRDtZQUMxRSxnQkFBZ0IsRUFBRSxtQkFBbUI7Z0JBQ25DLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsRUFBRSxNQUFDLFFBQVEsQ0FBQyxXQUFrQyxtQ0FBSSxXQUFXLENBQUM7Z0JBQzFHLENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RSxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRWpDLE9BQU87UUFDTCxTQUFTLEVBQUUsV0FBVztRQUN0QixhQUFhLEVBQUUsU0FBUztRQUN4QixXQUFXLEVBQUUsU0FBUztRQUN0QixnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7S0FDN0csQ0FBQztBQUNKLENBQUM7QUF4Q0QsZ0RBd0NDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsUUFBeUI7SUFDeEQsSUFBSSxDQUFDLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLGNBQWMsQ0FBQTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUhELDRDQUdDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxPQUFpQyxFQUFFLFdBQW1CO0lBQ3BGLE1BQU0sTUFBTSxHQUE2QixFQUFFLENBQUM7SUFDNUMsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRW5CLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2pFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQixTQUFTO1lBQ1gsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkIsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDZixTQUFTO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxJQUErQixFQUFFLFNBQWlCO0lBQzNFLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUU5QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDbEQsSUFBSSxLQUFLO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGdldFN1YnRyZWVTbmFwc2hvdCDigJQgbmF2aWdhdGUgYW4gZXhlY3V0aW9uIHNuYXBzaG90IHRyZWUgYnkgc3ViZmxvdyBwYXRoLlxuICpcbiAqIEdpdmVuIGEgUnVudGltZVNuYXBzaG90IGFuZCBhIHNsYXNoLXNlcGFyYXRlZCBwYXRoIG9mIHN1YmZsb3cgSURzLFxuICogcmV0dXJucyB0aGUgc3VidHJlZSByb290ZWQgYXQgdGhhdCBzdWJmbG93LiBVc2VmdWwgZm9yIExMTSBkcmlsbC1kb3duOlxuICogaW5zdGVhZCBvZiBkdW1waW5nIHRoZSBmdWxsIHRyYWNlLCBmZXRjaCBvbmx5IHRoZSByZWxldmFudCBzdWJ0cmVlLlxuICpcbiAqIFVzYWdlOlxuICogICBjb25zdCBzbmFwc2hvdCA9IGV4ZWN1dG9yLmdldFNuYXBzaG90KCk7XG4gKlxuICogICAvLyBUb3AtbGV2ZWwgc3ViZmxvd1xuICogICBnZXRTdWJ0cmVlU25hcHNob3Qoc25hcHNob3QsICdzZi1wYXltZW50Jyk7XG4gKlxuICogICAvLyBOZXN0ZWQgc3ViZmxvdyAocGF5bWVudCDihpIgdmFsaWRhdGlvbilcbiAqICAgZ2V0U3VidHJlZVNuYXBzaG90KHNuYXBzaG90LCAnc2YtcGF5bWVudC9zZi12YWxpZGF0aW9uJyk7XG4gKlxuICogICAvLyBSZXR1cm5zIHVuZGVmaW5lZCBpZiBwYXRoIG5vdCBmb3VuZFxuICogICBnZXRTdWJ0cmVlU25hcHNob3Qoc25hcHNob3QsICdub25leGlzdGVudCcpOyAvLyB1bmRlZmluZWRcbiAqXG4gKiAgIC8vIERpc2NvdmVyIGF2YWlsYWJsZSBwYXRoc1xuICogICBsaXN0U3ViZmxvd1BhdGhzKHNuYXBzaG90KTsgLy8gWydzZi1wYXltZW50JywgJ3NmLXBheW1lbnQvc2YtdmFsaWRhdGlvbiddXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5IH0gZnJvbSAnLi4vZW5naW5lL25hcnJhdGl2ZS9Db21iaW5lZE5hcnJhdGl2ZUJ1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZVNuYXBzaG90IH0gZnJvbSAnLi4vbWVtb3J5L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgUnVudGltZVNuYXBzaG90IH0gZnJvbSAnLi9FeGVjdXRpb25SdW50aW1lLmpzJztcblxuLyoqIFRoZSByZXN1bHQgb2YgbmF2aWdhdGluZyB0byBhIHN1YnRyZWUgd2l0aGluIGEgc25hcHNob3QuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YnRyZWVTbmFwc2hvdCB7XG4gIC8qKiBUaGUgc3ViZmxvdyBJRCB0aGF0IHdhcyBtYXRjaGVkIChsYXN0IHNlZ21lbnQgb2YgdGhlIHBhdGgpLiAqL1xuICByZWFkb25seSBzdWJmbG93SWQ6IHN0cmluZztcbiAgLyoqIFRoZSBleGVjdXRpb24gdHJlZSByb290ZWQgYXQgdGhpcyBzdWJmbG93LiAqL1xuICByZWFkb25seSBleGVjdXRpb25UcmVlOiBTdGFnZVNuYXBzaG90O1xuICAvKiogU2hhcmVkIHN0YXRlIHNjb3BlZCB0byB0aGlzIHN1YmZsb3cgKGZyb20gc3ViZmxvd1Jlc3VsdHMgaWYgYXZhaWxhYmxlKS4gKi9cbiAgcmVhZG9ubHkgc2hhcmVkU3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIE5hcnJhdGl2ZSBlbnRyaWVzIHNjb3BlZCB0byB0aGlzIHN1YmZsb3cgKGJldHdlZW4gZW50cnkvZXhpdCBldmVudHMpLiAqL1xuICByZWFkb25seSBuYXJyYXRpdmVFbnRyaWVzPzogQ29tYmluZWROYXJyYXRpdmVFbnRyeVtdO1xufVxuXG4vKipcbiAqIE5hdmlnYXRlIHRoZSBleGVjdXRpb24gc25hcHNob3QgdHJlZSBieSBhIHNsYXNoLXNlcGFyYXRlZCBzdWJmbG93IHBhdGguXG4gKlxuICogKipJbXBsZW1lbnRhdGlvbiBub3RlOioqIGZvb3RwcmludGpzJ3MgU3ViZmxvd0V4ZWN1dG9yIHN0b3JlcyBuZXN0ZWQgc3ViZmxvd1xuICogcmVzdWx0cyB3aXRoIGNvbXBvc2l0ZSBzbGFzaC1zZXBhcmF0ZWQga2V5cyAoZS5nLiBcInNmLW91dGVyL3NmLWlubmVyXCIpIGluXG4gKiB0aGUgZmxhdCBgc3ViZmxvd1Jlc3VsdHNgIG1hcC4gVGhpcyBmdW5jdGlvbiB1c2VzIHRob3NlIGtleXMgZm9yIGxvb2t1cC5cbiAqXG4gKiBAcGFyYW0gc25hcHNob3Qg4oCUIHRoZSBmdWxsIFJ1bnRpbWVTbmFwc2hvdCBmcm9tIGBleGVjdXRvci5nZXRTbmFwc2hvdCgpYFxuICogQHBhcmFtIHBhdGgg4oCUIHNsYXNoLXNlcGFyYXRlZCBzdWJmbG93IElEcywgZS5nLiBgXCJzZi1wYXltZW50XCJgIG9yIGBcInNmLXBheW1lbnQvc2YtdmFsaWRhdGlvblwiYFxuICogQHBhcmFtIGFsbE5hcnJhdGl2ZUVudHJpZXMg4oCUIG9wdGlvbmFsIGZ1bGwgbmFycmF0aXZlIGVudHJpZXMgZnJvbSBgZXhlY3V0b3IuZ2V0TmFycmF0aXZlRW50cmllcygpYCwgdXNlZCB0byBleHRyYWN0IHNjb3BlZCBuYXJyYXRpdmUgZm9yIHRoZSBzdWJ0cmVlXG4gKiBAcmV0dXJucyB0aGUgbWF0Y2hpbmcgU3VidHJlZVNuYXBzaG90LCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcGF0aCBpcyBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN1YnRyZWVTbmFwc2hvdChcbiAgc25hcHNob3Q6IFJ1bnRpbWVTbmFwc2hvdCxcbiAgcGF0aDogc3RyaW5nLFxuICBhbGxOYXJyYXRpdmVFbnRyaWVzPzogQ29tYmluZWROYXJyYXRpdmVFbnRyeVtdLFxuKTogU3VidHJlZVNuYXBzaG90IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFzbmFwc2hvdCB8fCAhcGF0aCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbikuam9pbignLycpO1xuICBpZiAoIW5vcm1hbGl6ZWRQYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHN1YmZsb3dSZXN1bHRzID0gc25hcHNob3Quc3ViZmxvd1Jlc3VsdHM7XG4gIGNvbnN0IGxhc3RTZWdtZW50ID0gbm9ybWFsaXplZFBhdGguc3BsaXQoJy8nKS5wb3AoKSE7XG5cbiAgLy8gU3RyYXRlZ3kgMTogRGlyZWN0IGxvb2t1cCBpbiBzdWJmbG93UmVzdWx0cyBieSBmdWxsIHBhdGguXG4gIC8vIFN1YmZsb3dFeGVjdXRvciBzdG9yZXMgbmVzdGVkIHJlc3VsdHMgd2l0aCBjb21wb3NpdGUgc2xhc2gtc2VwYXJhdGVkIGtleXMuXG4gIGlmIChzdWJmbG93UmVzdWx0cyAmJiBzdWJmbG93UmVzdWx0c1tub3JtYWxpemVkUGF0aF0pIHtcbiAgICBjb25zdCBzZlJlc3VsdCA9IHN1YmZsb3dSZXN1bHRzW25vcm1hbGl6ZWRQYXRoXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCB0cmVlQ3R4ID0gc2ZSZXN1bHQudHJlZUNvbnRleHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3ViZmxvd0lkOiBsYXN0U2VnbWVudCxcbiAgICAgIGV4ZWN1dGlvblRyZWU6XG4gICAgICAgICh0cmVlQ3R4Py5zdGFnZUNvbnRleHRzIGFzIHVua25vd24gYXMgU3RhZ2VTbmFwc2hvdCkgPz8gZmluZFN1YmZsb3dJblRyZWUoc25hcHNob3QuZXhlY3V0aW9uVHJlZSwgbGFzdFNlZ21lbnQpLFxuICAgICAgc2hhcmVkU3RhdGU6IHRyZWVDdHg/Lmdsb2JhbENvbnRleHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgICBuYXJyYXRpdmVFbnRyaWVzOiBhbGxOYXJyYXRpdmVFbnRyaWVzXG4gICAgICAgID8gZXh0cmFjdFNjb3BlZE5hcnJhdGl2ZShhbGxOYXJyYXRpdmVFbnRyaWVzLCAoc2ZSZXN1bHQuc3ViZmxvd05hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSA/PyBsYXN0U2VnbWVudClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8vIFN0cmF0ZWd5IDI6IEZpbmQgdGhlIG5vZGUgaW4gdGhlIGV4ZWN1dGlvbiB0cmVlIGJ5IHN1YmZsb3dJZFxuICBjb25zdCBmb3VuZE5vZGUgPSBmaW5kU3ViZmxvd0luVHJlZShzbmFwc2hvdC5leGVjdXRpb25UcmVlLCBsYXN0U2VnbWVudCk7XG4gIGlmICghZm91bmROb2RlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgc3ViZmxvd0lkOiBsYXN0U2VnbWVudCxcbiAgICBleGVjdXRpb25UcmVlOiBmb3VuZE5vZGUsXG4gICAgc2hhcmVkU3RhdGU6IHVuZGVmaW5lZCxcbiAgICBuYXJyYXRpdmVFbnRyaWVzOiBhbGxOYXJyYXRpdmVFbnRyaWVzID8gZXh0cmFjdFNjb3BlZE5hcnJhdGl2ZShhbGxOYXJyYXRpdmVFbnRyaWVzLCBsYXN0U2VnbWVudCkgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogTGlzdCBhbGwgYXZhaWxhYmxlIHN1YmZsb3cgcGF0aHMgaW4gYSBzbmFwc2hvdC5cbiAqXG4gKiBSZXR1cm5zIHRoZSBrZXlzIGZyb20gYHN1YmZsb3dSZXN1bHRzYCwgd2hpY2ggYXJlIHNsYXNoLXNlcGFyYXRlZFxuICogc3ViZmxvdyBJRCBwYXRocyAoZS5nLiBgW1wic2YtcGF5bWVudFwiLCBcInNmLW91dGVyL3NmLWlubmVyXCJdYCkuXG4gKiBVc2VmdWwgZm9yIGRpc2NvdmVyeSDigJQgYW4gTExNIG9yIFVJIGNhbiBlbnVtZXJhdGUgYXZhaWxhYmxlIGRyaWxsLWRvd24gdGFyZ2V0cy5cbiAqXG4gKiBAcGFyYW0gc25hcHNob3Qg4oCUIHRoZSBmdWxsIFJ1bnRpbWVTbmFwc2hvdCBmcm9tIGBleGVjdXRvci5nZXRTbmFwc2hvdCgpYFxuICogQHJldHVybnMgYXJyYXkgb2YgYXZhaWxhYmxlIHN1YmZsb3cgcGF0aHMsIGVtcHR5IGlmIG5vbmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RTdWJmbG93UGF0aHMoc25hcHNob3Q6IFJ1bnRpbWVTbmFwc2hvdCk6IHN0cmluZ1tdIHtcbiAgaWYgKCFzbmFwc2hvdD8uc3ViZmxvd1Jlc3VsdHMpIHJldHVybiBbXTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHNuYXBzaG90LnN1YmZsb3dSZXN1bHRzKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IG5hcnJhdGl2ZSBlbnRyaWVzIHNjb3BlZCB0byBhIHNwZWNpZmljIHN1YmZsb3cuXG4gKiBGaW5kcyBlbnRyaWVzIGJldHdlZW4gdGhlIHN1YmZsb3cncyBlbnRyeSBhbmQgZXhpdCBldmVudHMuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RTY29wZWROYXJyYXRpdmUoZW50cmllczogQ29tYmluZWROYXJyYXRpdmVFbnRyeVtdLCBzdWJmbG93TmFtZTogc3RyaW5nKTogQ29tYmluZWROYXJyYXRpdmVFbnRyeVtdIHtcbiAgY29uc3Qgc2NvcGVkOiBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5W10gPSBbXTtcbiAgbGV0IGluc2lkZSA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS50eXBlID09PSAnc3ViZmxvdycgJiYgZW50cnkudGV4dC5pbmNsdWRlcyhzdWJmbG93TmFtZSkpIHtcbiAgICAgIGlmIChlbnRyeS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2VudGVyaW5nJykpIHtcbiAgICAgICAgaW5zaWRlID0gdHJ1ZTtcbiAgICAgICAgc2NvcGVkLnB1c2goZW50cnkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChlbnRyeS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2V4aXRpbmcnKSkge1xuICAgICAgICBzY29wZWQucHVzaChlbnRyeSk7XG4gICAgICAgIGluc2lkZSA9IGZhbHNlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluc2lkZSkge1xuICAgICAgc2NvcGVkLnB1c2goZW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzY29wZWQ7XG59XG5cbi8qKlxuICogRmluZCBhIHN1YmZsb3cgbm9kZSBpbiB0aGUgZXhlY3V0aW9uIHRyZWUgYnkgc2VhcmNoaW5nIGZvciBhIG5vZGVcbiAqIHdob3NlIHN1YmZsb3dJZCBtYXRjaGVzLlxuICogU2VhcmNoZXMgZGVwdGgtZmlyc3QgdGhyb3VnaCBgbmV4dGAgYW5kIGBjaGlsZHJlbmAgbGlua3MuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTdWJmbG93SW5UcmVlKG5vZGU6IFN0YWdlU25hcHNob3QgfCB1bmRlZmluZWQsIHN1YmZsb3dJZDogc3RyaW5nKTogU3RhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCB7XG4gIGlmICghbm9kZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBpZiAobm9kZS5zdWJmbG93SWQgPT09IHN1YmZsb3dJZCkgcmV0dXJuIG5vZGU7XG5cbiAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gZmluZFN1YmZsb3dJblRyZWUoY2hpbGQsIHN1YmZsb3dJZCk7XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICB9XG4gIH1cblxuICBpZiAobm9kZS5uZXh0KSB7XG4gICAgcmV0dXJuIGZpbmRTdWJmbG93SW5UcmVlKG5vZGUubmV4dCwgc3ViZmxvd0lkKTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U3VidHJlZVNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvZ2V0U3VidHJlZVNuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHOzs7QUFrQkg7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsUUFBeUIsRUFDekIsSUFBWSxFQUNaLG1CQUE4Qzs7SUFFOUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUV6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsSUFBSSxDQUFDLGNBQWM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUV0QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO0lBQy9DLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFHLENBQUM7SUFFckQsNERBQTREO0lBQzVELDZFQUE2RTtJQUM3RSxJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUE0QixDQUFDO1FBQzNFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFrRCxDQUFDO1FBRTVFLE9BQU87WUFDTCxTQUFTLEVBQUUsV0FBVztZQUN0QixhQUFhLEVBQ1gsTUFBQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsYUFBMEMsbUNBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7WUFDaEgsV0FBVyxFQUFFLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxhQUFvRDtZQUMxRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDN0csQ0FBQztJQUNKLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RSxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRWpDLE9BQU87UUFDTCxTQUFTLEVBQUUsV0FBVztRQUN0QixhQUFhLEVBQUUsU0FBUztRQUN4QixXQUFXLEVBQUUsU0FBUztRQUN0QixnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7S0FDN0csQ0FBQztBQUNKLENBQUM7QUF0Q0QsZ0RBc0NDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsUUFBeUI7SUFDeEQsSUFBSSxDQUFDLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLGNBQWMsQ0FBQTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUhELDRDQUdDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsc0JBQXNCLENBQUMsT0FBaUMsRUFBRSxJQUFZO0lBQzdFLGtFQUFrRTtJQUNsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRyxDQUFDO0lBQ3pDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzlCLHFGQUFxRjtRQUNyRixJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQy9DLDZGQUE2RjtRQUM3RixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsaUJBQWlCLENBQUMsSUFBK0IsRUFBRSxTQUFpQjtJQUMzRSxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRTVCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELElBQUksS0FBSztnQkFBRSxPQUFPLEtBQUssQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBnZXRTdWJ0cmVlU25hcHNob3Qg4oCUIG5hdmlnYXRlIGFuIGV4ZWN1dGlvbiBzbmFwc2hvdCB0cmVlIGJ5IHN1YmZsb3cgcGF0aC5cbiAqXG4gKiBHaXZlbiBhIFJ1bnRpbWVTbmFwc2hvdCBhbmQgYSBzbGFzaC1zZXBhcmF0ZWQgcGF0aCBvZiBzdWJmbG93IElEcyxcbiAqIHJldHVybnMgdGhlIHN1YnRyZWUgcm9vdGVkIGF0IHRoYXQgc3ViZmxvdy4gVXNlZnVsIGZvciBMTE0gZHJpbGwtZG93bjpcbiAqIGluc3RlYWQgb2YgZHVtcGluZyB0aGUgZnVsbCB0cmFjZSwgZmV0Y2ggb25seSB0aGUgcmVsZXZhbnQgc3VidHJlZS5cbiAqXG4gKiBVc2FnZTpcbiAqICAgY29uc3Qgc25hcHNob3QgPSBleGVjdXRvci5nZXRTbmFwc2hvdCgpO1xuICpcbiAqICAgLy8gVG9wLWxldmVsIHN1YmZsb3dcbiAqICAgZ2V0U3VidHJlZVNuYXBzaG90KHNuYXBzaG90LCAnc2YtcGF5bWVudCcpO1xuICpcbiAqICAgLy8gTmVzdGVkIHN1YmZsb3cgKHBheW1lbnQg4oaSIHZhbGlkYXRpb24pXG4gKiAgIGdldFN1YnRyZWVTbmFwc2hvdChzbmFwc2hvdCwgJ3NmLXBheW1lbnQvc2YtdmFsaWRhdGlvbicpO1xuICpcbiAqICAgLy8gUmV0dXJucyB1bmRlZmluZWQgaWYgcGF0aCBub3QgZm91bmRcbiAqICAgZ2V0U3VidHJlZVNuYXBzaG90KHNuYXBzaG90LCAnbm9uZXhpc3RlbnQnKTsgLy8gdW5kZWZpbmVkXG4gKlxuICogICAvLyBEaXNjb3ZlciBhdmFpbGFibGUgcGF0aHNcbiAqICAgbGlzdFN1YmZsb3dQYXRocyhzbmFwc2hvdCk7IC8vIFsnc2YtcGF5bWVudCcsICdzZi1wYXltZW50L3NmLXZhbGlkYXRpb24nXVxuICovXG5cbmltcG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvQ29tYmluZWROYXJyYXRpdmVCdWlsZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VTbmFwc2hvdCB9IGZyb20gJy4uL21lbW9yeS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJ1bnRpbWVTbmFwc2hvdCB9IGZyb20gJy4vRXhlY3V0aW9uUnVudGltZS5qcyc7XG5cbi8qKiBUaGUgcmVzdWx0IG9mIG5hdmlnYXRpbmcgdG8gYSBzdWJ0cmVlIHdpdGhpbiBhIHNuYXBzaG90LiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJ0cmVlU25hcHNob3Qge1xuICAvKiogVGhlIHN1YmZsb3cgSUQgdGhhdCB3YXMgbWF0Y2hlZCAobGFzdCBzZWdtZW50IG9mIHRoZSBwYXRoKS4gKi9cbiAgcmVhZG9ubHkgc3ViZmxvd0lkOiBzdHJpbmc7XG4gIC8qKiBUaGUgZXhlY3V0aW9uIHRyZWUgcm9vdGVkIGF0IHRoaXMgc3ViZmxvdy4gKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uVHJlZTogU3RhZ2VTbmFwc2hvdDtcbiAgLyoqIFNoYXJlZCBzdGF0ZSBzY29wZWQgdG8gdGhpcyBzdWJmbG93IChmcm9tIHN1YmZsb3dSZXN1bHRzIGlmIGF2YWlsYWJsZSkuICovXG4gIHJlYWRvbmx5IHNoYXJlZFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBOYXJyYXRpdmUgZW50cmllcyBzY29wZWQgdG8gdGhpcyBzdWJmbG93IChiZXR3ZWVuIGVudHJ5L2V4aXQgZXZlbnRzKS4gKi9cbiAgcmVhZG9ubHkgbmFycmF0aXZlRW50cmllcz86IENvbWJpbmVkTmFycmF0aXZlRW50cnlbXTtcbn1cblxuLyoqXG4gKiBOYXZpZ2F0ZSB0aGUgZXhlY3V0aW9uIHNuYXBzaG90IHRyZWUgYnkgYSBzbGFzaC1zZXBhcmF0ZWQgc3ViZmxvdyBwYXRoLlxuICpcbiAqICoqSW1wbGVtZW50YXRpb24gbm90ZToqKiBmb290cHJpbnRqcydzIFN1YmZsb3dFeGVjdXRvciBzdG9yZXMgbmVzdGVkIHN1YmZsb3dcbiAqIHJlc3VsdHMgd2l0aCBjb21wb3NpdGUgc2xhc2gtc2VwYXJhdGVkIGtleXMgKGUuZy4gXCJzZi1vdXRlci9zZi1pbm5lclwiKSBpblxuICogdGhlIGZsYXQgYHN1YmZsb3dSZXN1bHRzYCBtYXAuIFRoaXMgZnVuY3Rpb24gdXNlcyB0aG9zZSBrZXlzIGZvciBsb29rdXAuXG4gKlxuICogQHBhcmFtIHNuYXBzaG90IOKAlCB0aGUgZnVsbCBSdW50aW1lU25hcHNob3QgZnJvbSBgZXhlY3V0b3IuZ2V0U25hcHNob3QoKWBcbiAqIEBwYXJhbSBwYXRoIOKAlCBzbGFzaC1zZXBhcmF0ZWQgc3ViZmxvdyBJRHMsIGUuZy4gYFwic2YtcGF5bWVudFwiYCBvciBgXCJzZi1wYXltZW50L3NmLXZhbGlkYXRpb25cImBcbiAqIEBwYXJhbSBhbGxOYXJyYXRpdmVFbnRyaWVzIOKAlCBvcHRpb25hbCBmdWxsIG5hcnJhdGl2ZSBlbnRyaWVzIGZyb20gYGV4ZWN1dG9yLmdldE5hcnJhdGl2ZUVudHJpZXMoKWAsIHVzZWQgdG8gZXh0cmFjdCBzY29wZWQgbmFycmF0aXZlIGZvciB0aGUgc3VidHJlZVxuICogQHJldHVybnMgdGhlIG1hdGNoaW5nIFN1YnRyZWVTbmFwc2hvdCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHBhdGggaXMgbm90IGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWJ0cmVlU25hcHNob3QoXG4gIHNuYXBzaG90OiBSdW50aW1lU25hcHNob3QsXG4gIHBhdGg6IHN0cmluZyxcbiAgYWxsTmFycmF0aXZlRW50cmllcz86IENvbWJpbmVkTmFycmF0aXZlRW50cnlbXSxcbik6IFN1YnRyZWVTbmFwc2hvdCB8IHVuZGVmaW5lZCB7XG4gIGlmICghc25hcHNob3QgfHwgIXBhdGgpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBwYXRoLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy8nKTtcbiAgaWYgKCFub3JtYWxpemVkUGF0aCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBzdWJmbG93UmVzdWx0cyA9IHNuYXBzaG90LnN1YmZsb3dSZXN1bHRzO1xuICBjb25zdCBsYXN0U2VnbWVudCA9IG5vcm1hbGl6ZWRQYXRoLnNwbGl0KCcvJykucG9wKCkhO1xuXG4gIC8vIFN0cmF0ZWd5IDE6IERpcmVjdCBsb29rdXAgaW4gc3ViZmxvd1Jlc3VsdHMgYnkgZnVsbCBwYXRoLlxuICAvLyBTdWJmbG93RXhlY3V0b3Igc3RvcmVzIG5lc3RlZCByZXN1bHRzIHdpdGggY29tcG9zaXRlIHNsYXNoLXNlcGFyYXRlZCBrZXlzLlxuICBpZiAoc3ViZmxvd1Jlc3VsdHMgJiYgc3ViZmxvd1Jlc3VsdHNbbm9ybWFsaXplZFBhdGhdKSB7XG4gICAgY29uc3Qgc2ZSZXN1bHQgPSBzdWJmbG93UmVzdWx0c1tub3JtYWxpemVkUGF0aF0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3QgdHJlZUN0eCA9IHNmUmVzdWx0LnRyZWVDb250ZXh0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1YmZsb3dJZDogbGFzdFNlZ21lbnQsXG4gICAgICBleGVjdXRpb25UcmVlOlxuICAgICAgICAodHJlZUN0eD8uc3RhZ2VDb250ZXh0cyBhcyB1bmtub3duIGFzIFN0YWdlU25hcHNob3QpID8/IGZpbmRTdWJmbG93SW5UcmVlKHNuYXBzaG90LmV4ZWN1dGlvblRyZWUsIGxhc3RTZWdtZW50KSxcbiAgICAgIHNoYXJlZFN0YXRlOiB0cmVlQ3R4Py5nbG9iYWxDb250ZXh0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkLFxuICAgICAgbmFycmF0aXZlRW50cmllczogYWxsTmFycmF0aXZlRW50cmllcyA/IGV4dHJhY3RTY29wZWROYXJyYXRpdmUoYWxsTmFycmF0aXZlRW50cmllcywgbGFzdFNlZ21lbnQpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvLyBTdHJhdGVneSAyOiBGaW5kIHRoZSBub2RlIGluIHRoZSBleGVjdXRpb24gdHJlZSBieSBzdWJmbG93SWRcbiAgY29uc3QgZm91bmROb2RlID0gZmluZFN1YmZsb3dJblRyZWUoc25hcHNob3QuZXhlY3V0aW9uVHJlZSwgbGFzdFNlZ21lbnQpO1xuICBpZiAoIWZvdW5kTm9kZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHN1YmZsb3dJZDogbGFzdFNlZ21lbnQsXG4gICAgZXhlY3V0aW9uVHJlZTogZm91bmROb2RlLFxuICAgIHNoYXJlZFN0YXRlOiB1bmRlZmluZWQsXG4gICAgbmFycmF0aXZlRW50cmllczogYWxsTmFycmF0aXZlRW50cmllcyA/IGV4dHJhY3RTY29wZWROYXJyYXRpdmUoYWxsTmFycmF0aXZlRW50cmllcywgbGFzdFNlZ21lbnQpIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG4vKipcbiAqIExpc3QgYWxsIGF2YWlsYWJsZSBzdWJmbG93IHBhdGhzIGluIGEgc25hcHNob3QuXG4gKlxuICogUmV0dXJucyB0aGUga2V5cyBmcm9tIGBzdWJmbG93UmVzdWx0c2AsIHdoaWNoIGFyZSBzbGFzaC1zZXBhcmF0ZWRcbiAqIHN1YmZsb3cgSUQgcGF0aHMgKGUuZy4gYFtcInNmLXBheW1lbnRcIiwgXCJzZi1vdXRlci9zZi1pbm5lclwiXWApLlxuICogVXNlZnVsIGZvciBkaXNjb3Zlcnkg4oCUIGFuIExMTSBvciBVSSBjYW4gZW51bWVyYXRlIGF2YWlsYWJsZSBkcmlsbC1kb3duIHRhcmdldHMuXG4gKlxuICogQHBhcmFtIHNuYXBzaG90IOKAlCB0aGUgZnVsbCBSdW50aW1lU25hcHNob3QgZnJvbSBgZXhlY3V0b3IuZ2V0U25hcHNob3QoKWBcbiAqIEByZXR1cm5zIGFycmF5IG9mIGF2YWlsYWJsZSBzdWJmbG93IHBhdGhzLCBlbXB0eSBpZiBub25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0U3ViZmxvd1BhdGhzKHNuYXBzaG90OiBSdW50aW1lU25hcHNob3QpOiBzdHJpbmdbXSB7XG4gIGlmICghc25hcHNob3Q/LnN1YmZsb3dSZXN1bHRzKSByZXR1cm4gW107XG4gIHJldHVybiBPYmplY3Qua2V5cyhzbmFwc2hvdC5zdWJmbG93UmVzdWx0cyk7XG59XG5cbi8qKlxuICogRXh0cmFjdCBuYXJyYXRpdmUgZW50cmllcyBzY29wZWQgdG8gYSBzcGVjaWZpYyBzdWJmbG93LlxuICogRmlsdGVycyBieSBlbnRyeS5zdWJmbG93SWQgZmllbGQgKHNldCBieSBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyIGR1cmluZyB0cmF2ZXJzYWwpLlxuICogQWxzbyBpbmNsdWRlcyB0aGUgc3ViZmxvdyBlbnRyeS9leGl0IG1hcmtlciBlbnRyaWVzIHRoZW1zZWx2ZXMuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RTY29wZWROYXJyYXRpdmUoZW50cmllczogQ29tYmluZWROYXJyYXRpdmVFbnRyeVtdLCBwYXRoOiBzdHJpbmcpOiBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5W10ge1xuICAvLyBUaGUgbGFzdCBzZWdtZW50IG9mIHRoZSBwYXRoIGlzIHRoZSBzdWJmbG93SWQgc3RvcmVkIG9uIGVudHJpZXNcbiAgY29uc3Qgc3ViZmxvd0lkID0gcGF0aC5zcGxpdCgnLycpLnBvcCgpITtcbiAgcmV0dXJuIGVudHJpZXMuZmlsdGVyKChlbnRyeSkgPT4ge1xuICAgIC8vIEluY2x1ZGUgZW50cmllcyB3aG9zZSBzdWJmbG93SWQgbWF0Y2hlcyAoZXZlbnRzIGVtaXR0ZWQgd2hpbGUgaW5zaWRlIHRoaXMgc3ViZmxvdylcbiAgICBpZiAoZW50cnkuc3ViZmxvd0lkID09PSBzdWJmbG93SWQpIHJldHVybiB0cnVlO1xuICAgIC8vIEFsc28gaW5jbHVkZSB0aGUgc3ViZmxvdyBlbnRyeS9leGl0IG1hcmtlcnMgKHRoZXkgY2FycnkgdGhlIHBhcmVudCBzdWJmbG93SWQgb3IgdW5kZWZpbmVkKVxuICAgIGlmIChlbnRyeS50eXBlID09PSAnc3ViZmxvdycgJiYgZW50cnkuc3RhZ2VJZCA9PT0gc3ViZmxvd0lkKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xufVxuXG4vKipcbiAqIEZpbmQgYSBzdWJmbG93IG5vZGUgaW4gdGhlIGV4ZWN1dGlvbiB0cmVlIGJ5IHNlYXJjaGluZyBmb3IgYSBub2RlXG4gKiB3aG9zZSBzdWJmbG93SWQgbWF0Y2hlcy5cbiAqIFNlYXJjaGVzIGRlcHRoLWZpcnN0IHRocm91Z2ggYG5leHRgIGFuZCBgY2hpbGRyZW5gIGxpbmtzLlxuICovXG5mdW5jdGlvbiBmaW5kU3ViZmxvd0luVHJlZShub2RlOiBTdGFnZVNuYXBzaG90IHwgdW5kZWZpbmVkLCBzdWJmbG93SWQ6IHN0cmluZyk6IFN0YWdlU25hcHNob3QgfCB1bmRlZmluZWQge1xuICBpZiAoIW5vZGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgaWYgKG5vZGUuc3ViZmxvd0lkID09PSBzdWJmbG93SWQpIHJldHVybiBub2RlO1xuXG4gIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IGZpbmRTdWJmbG93SW5UcmVlKGNoaWxkLCBzdWJmbG93SWQpO1xuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKG5vZGUubmV4dCkge1xuICAgIHJldHVybiBmaW5kU3ViZmxvd0luVHJlZShub2RlLm5leHQsIHN1YmZsb3dJZCk7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
@@ -38,4 +38,4 @@ Object.defineProperty(exports, "defineScopeSchema", { enumerable: true, get: fun
38
38
  Object.defineProperty(exports, "isScopeSchema", { enumerable: true, get: function () { return builder_js_1.isScopeSchema; } });
39
39
  var scopeFactory_js_1 = require("./state/zod/scopeFactory.js");
40
40
  Object.defineProperty(exports, "createScopeProxyFromZod", { enumerable: true, get: function () { return scopeFactory_js_1.createScopeProxyFromZod; } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Njb3BlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7OztBQUVILE9BQU87QUFDUCxtREFBK0M7QUFBdEMsNkdBQUEsV0FBVyxPQUFBO0FBaUJwQixpRUFBNkQ7QUFBcEQsaUhBQUEsYUFBYSxPQUFBO0FBRXRCLG1FQUErRDtBQUF0RCxtSEFBQSxjQUFjLE9BQUE7QUFVdkIsa0RBQWlGO0FBQXhFLDhHQUFBLGtCQUFrQixPQUFBO0FBQUUsZ0hBQUEsb0JBQW9CLE9BQUE7QUFXakQsaURBVzhCO0FBVjVCLHlIQUFBLDZCQUE2QixPQUFBO0FBQzdCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLG1IQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDRHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLCtHQUFBLG1CQUFtQixPQUFBO0FBQ25CLGlIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLGdIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDBHQUFBLGNBQWMsT0FBQTtBQUtoQiwyRUFBdUU7QUFBOUQsMkhBQUEsa0JBQWtCLE9BQUE7QUFDM0IsdURBQTJEO0FBQWxELCtHQUFBLGdCQUFnQixPQUFBO0FBQ3pCLDREQUFpRjtBQUF4RSwrR0FBQSxpQkFBaUIsT0FBQTtBQUFFLDJHQUFBLGFBQWEsT0FBQTtBQUN6QywrREFBc0U7QUFBN0QsMEhBQUEsdUJBQXVCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuLyoqXG4gKiBzY29wZS8g4oCUIFNjb3BlIG1hbmFnZW1lbnQgbGlicmFyeVxuICpcbiAqIERlcGVuZHMgb24gbWVtb3J5LyAoUGhhc2UgMSkuIFByb3ZpZGVzIFNjb3BlRmFjYWRlLCByZWNvcmRlcnMsXG4gKiBwcm92aWRlcnMsIHByb3RlY3Rpb24sIGFuZCBab2QtYmFzZWQgc2NvcGUgZGVmaW5pdGlvbnMuXG4gKi9cblxuLy8gQ29yZVxuZXhwb3J0IHsgU2NvcGVGYWNhZGUgfSBmcm9tICcuL1Njb3BlRmFjYWRlLmpzJztcblxuLy8gVHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0RXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVjb3JkZXIsXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgUmVkYWN0aW9uUG9saWN5LFxuICBSZWRhY3Rpb25SZXBvcnQsXG4gIFN0YWdlRXZlbnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vLyBSZWNvcmRlcnNcbmV4cG9ydCB0eXBlIHsgRGVidWdFbnRyeSwgRGVidWdSZWNvcmRlck9wdGlvbnMsIERlYnVnVmVyYm9zaXR5IH0gZnJvbSAnLi9yZWNvcmRlcnMvRGVidWdSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBEZWJ1Z1JlY29yZGVyIH0gZnJvbSAnLi9yZWNvcmRlcnMvRGVidWdSZWNvcmRlci5qcyc7XG5leHBvcnQgdHlwZSB7IEFnZ3JlZ2F0ZWRNZXRyaWNzLCBTdGFnZU1ldHJpY3MgfSBmcm9tICcuL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBNZXRyaWNSZWNvcmRlciB9IGZyb20gJy4vcmVjb3JkZXJzL01ldHJpY1JlY29yZGVyLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgTmFycmF0aXZlRGV0YWlsLFxuICBOYXJyYXRpdmVPcGVyYXRpb24sXG4gIE5hcnJhdGl2ZVJlY29yZGVyT3B0aW9ucyxcbiAgU3RhZ2VOYXJyYXRpdmVEYXRhLFxufSBmcm9tICcuL3JlY29yZGVycy9OYXJyYXRpdmVSZWNvcmRlci5qcyc7XG5cbi8vIFByb3RlY3Rpb25cbmV4cG9ydCB0eXBlIHsgU2NvcGVQcm90ZWN0aW9uTW9kZSwgU2NvcGVQcm90ZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4vcHJvdGVjdGlvbi9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVFcnJvck1lc3NhZ2UsIGNyZWF0ZVByb3RlY3RlZFNjb3BlIH0gZnJvbSAnLi9wcm90ZWN0aW9uL2luZGV4LmpzJztcblxuLy8gUHJvdmlkZXJzXG5leHBvcnQgdHlwZSB7XG4gIFByb3ZpZGVyUmVzb2x2ZXIsXG4gIFJlc29sdmVPcHRpb25zLFxuICBTY29wZUZhY3RvcnksXG4gIFNjb3BlUHJvdmlkZXIsXG4gIFN0YWdlQ29udGV4dExpa2UsXG4gIFN0cmljdE1vZGUsXG59IGZyb20gJy4vcHJvdmlkZXJzL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIF9fY2xlYXJTY29wZVJlc29sdmVyc0ZvclRlc3RzLFxuICBhdHRhY2hTY29wZU1ldGhvZHMsXG4gIGlzU3ViY2xhc3NPZlNjb3BlRmFjYWRlLFxuICBsb29rc0xpa2VDbGFzc0N0b3IsXG4gIGxvb2tzTGlrZUZhY3RvcnksXG4gIG1ha2VDbGFzc1Byb3ZpZGVyLFxuICBtYWtlRmFjdG9yeVByb3ZpZGVyLFxuICByZWdpc3RlclNjb3BlUmVzb2x2ZXIsXG4gIHJlc29sdmVTY29wZVByb3ZpZGVyLFxuICB0b1Njb3BlRmFjdG9yeSxcbn0gZnJvbSAnLi9wcm92aWRlcnMvaW5kZXguanMnO1xuXG4vLyBTdGF0ZSAvIFpvZFxuZXhwb3J0IHR5cGUgeyBEZWZpbmVTY29wZU9wdGlvbnMgfSBmcm9tICcuL3N0YXRlL3pvZC9kZWZpbmVTY29wZUZyb21ab2QuanMnO1xuZXhwb3J0IHsgZGVmaW5lU2NvcGVGcm9tWm9kIH0gZnJvbSAnLi9zdGF0ZS96b2QvZGVmaW5lU2NvcGVGcm9tWm9kLmpzJztcbmV4cG9ydCB7IFpvZFNjb3BlUmVzb2x2ZXIgfSBmcm9tICcuL3N0YXRlL3pvZC9yZXNvbHZlci5qcyc7XG5leHBvcnQgeyBkZWZpbmVTY29wZVNjaGVtYSwgaXNTY29wZVNjaGVtYSB9IGZyb20gJy4vc3RhdGUvem9kL3NjaGVtYS9idWlsZGVyLmpzJztcbmV4cG9ydCB7IGNyZWF0ZVNjb3BlUHJveHlGcm9tWm9kIH0gZnJvbSAnLi9zdGF0ZS96b2Qvc2NvcGVGYWN0b3J5LmpzJztcbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Njb3BlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7OztBQUVILE9BQU87QUFDUCxtREFBK0M7QUFBdEMsNkdBQUEsV0FBVyxPQUFBO0FBaUJwQixpRUFBNkQ7QUFBcEQsaUhBQUEsYUFBYSxPQUFBO0FBRXRCLG1FQUErRDtBQUF0RCxtSEFBQSxjQUFjLE9BQUE7QUFJdkIsa0RBQWlGO0FBQXhFLDhHQUFBLGtCQUFrQixPQUFBO0FBQUUsZ0hBQUEsb0JBQW9CLE9BQUE7QUFXakQsaURBVzhCO0FBVjVCLHlIQUFBLDZCQUE2QixPQUFBO0FBQzdCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLG1IQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDRHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLCtHQUFBLG1CQUFtQixPQUFBO0FBQ25CLGlIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLGdIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDBHQUFBLGNBQWMsT0FBQTtBQUtoQiwyRUFBdUU7QUFBOUQsMkhBQUEsa0JBQWtCLE9BQUE7QUFDM0IsdURBQTJEO0FBQWxELCtHQUFBLGdCQUFnQixPQUFBO0FBQ3pCLDREQUFpRjtBQUF4RSwrR0FBQSxpQkFBaUIsT0FBQTtBQUFFLDJHQUFBLGFBQWEsT0FBQTtBQUN6QywrREFBc0U7QUFBN0QsMEhBQUEsdUJBQXVCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuLyoqXG4gKiBzY29wZS8g4oCUIFNjb3BlIG1hbmFnZW1lbnQgbGlicmFyeVxuICpcbiAqIERlcGVuZHMgb24gbWVtb3J5LyAoUGhhc2UgMSkuIFByb3ZpZGVzIFNjb3BlRmFjYWRlLCByZWNvcmRlcnMsXG4gKiBwcm92aWRlcnMsIHByb3RlY3Rpb24sIGFuZCBab2QtYmFzZWQgc2NvcGUgZGVmaW5pdGlvbnMuXG4gKi9cblxuLy8gQ29yZVxuZXhwb3J0IHsgU2NvcGVGYWNhZGUgfSBmcm9tICcuL1Njb3BlRmFjYWRlLmpzJztcblxuLy8gVHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0RXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVjb3JkZXIsXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgUmVkYWN0aW9uUG9saWN5LFxuICBSZWRhY3Rpb25SZXBvcnQsXG4gIFN0YWdlRXZlbnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vLyBSZWNvcmRlcnNcbmV4cG9ydCB0eXBlIHsgRGVidWdFbnRyeSwgRGVidWdSZWNvcmRlck9wdGlvbnMsIERlYnVnVmVyYm9zaXR5IH0gZnJvbSAnLi9yZWNvcmRlcnMvRGVidWdSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBEZWJ1Z1JlY29yZGVyIH0gZnJvbSAnLi9yZWNvcmRlcnMvRGVidWdSZWNvcmRlci5qcyc7XG5leHBvcnQgdHlwZSB7IEFnZ3JlZ2F0ZWRNZXRyaWNzLCBTdGFnZU1ldHJpY3MgfSBmcm9tICcuL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBNZXRyaWNSZWNvcmRlciB9IGZyb20gJy4vcmVjb3JkZXJzL01ldHJpY1JlY29yZGVyLmpzJztcblxuLy8gUHJvdGVjdGlvblxuZXhwb3J0IHR5cGUgeyBTY29wZVByb3RlY3Rpb25Nb2RlLCBTY29wZVByb3RlY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9wcm90ZWN0aW9uL2luZGV4LmpzJztcbmV4cG9ydCB7IGNyZWF0ZUVycm9yTWVzc2FnZSwgY3JlYXRlUHJvdGVjdGVkU2NvcGUgfSBmcm9tICcuL3Byb3RlY3Rpb24vaW5kZXguanMnO1xuXG4vLyBQcm92aWRlcnNcbmV4cG9ydCB0eXBlIHtcbiAgUHJvdmlkZXJSZXNvbHZlcixcbiAgUmVzb2x2ZU9wdGlvbnMsXG4gIFNjb3BlRmFjdG9yeSxcbiAgU2NvcGVQcm92aWRlcixcbiAgU3RhZ2VDb250ZXh0TGlrZSxcbiAgU3RyaWN0TW9kZSxcbn0gZnJvbSAnLi9wcm92aWRlcnMvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgX19jbGVhclNjb3BlUmVzb2x2ZXJzRm9yVGVzdHMsXG4gIGF0dGFjaFNjb3BlTWV0aG9kcyxcbiAgaXNTdWJjbGFzc09mU2NvcGVGYWNhZGUsXG4gIGxvb2tzTGlrZUNsYXNzQ3RvcixcbiAgbG9va3NMaWtlRmFjdG9yeSxcbiAgbWFrZUNsYXNzUHJvdmlkZXIsXG4gIG1ha2VGYWN0b3J5UHJvdmlkZXIsXG4gIHJlZ2lzdGVyU2NvcGVSZXNvbHZlcixcbiAgcmVzb2x2ZVNjb3BlUHJvdmlkZXIsXG4gIHRvU2NvcGVGYWN0b3J5LFxufSBmcm9tICcuL3Byb3ZpZGVycy9pbmRleC5qcyc7XG5cbi8vIFN0YXRlIC8gWm9kXG5leHBvcnQgdHlwZSB7IERlZmluZVNjb3BlT3B0aW9ucyB9IGZyb20gJy4vc3RhdGUvem9kL2RlZmluZVNjb3BlRnJvbVpvZC5qcyc7XG5leHBvcnQgeyBkZWZpbmVTY29wZUZyb21ab2QgfSBmcm9tICcuL3N0YXRlL3pvZC9kZWZpbmVTY29wZUZyb21ab2QuanMnO1xuZXhwb3J0IHsgWm9kU2NvcGVSZXNvbHZlciB9IGZyb20gJy4vc3RhdGUvem9kL3Jlc29sdmVyLmpzJztcbmV4cG9ydCB7IGRlZmluZVNjb3BlU2NoZW1hLCBpc1Njb3BlU2NoZW1hIH0gZnJvbSAnLi9zdGF0ZS96b2Qvc2NoZW1hL2J1aWxkZXIuanMnO1xuZXhwb3J0IHsgY3JlYXRlU2NvcGVQcm94eUZyb21ab2QgfSBmcm9tICcuL3N0YXRlL3pvZC9zY29wZUZhY3RvcnkuanMnO1xuIl19
@@ -6,4 +6,4 @@
6
6
  * StageContextLike is the minimal surface from StageContext to avoid tight coupling.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3Byb3ZpZGVycy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3ZpZGVyIFN5c3RlbSBUeXBlc1xuICpcbiAqIERlZmluZXMgY29udHJhY3RzIGJldHdlZW4gdGhlIHJlZ2lzdHJ5LCByZXNvbHZlcnMsIGFuZCBwcm92aWRlcnMuXG4gKiBTdGFnZUNvbnRleHRMaWtlIGlzIHRoZSBtaW5pbWFsIHN1cmZhY2UgZnJvbSBTdGFnZUNvbnRleHQgdG8gYXZvaWQgdGlnaHQgY291cGxpbmcuXG4gKi9cblxuLyoqIE1pbmltYWwgc3VyZmFjZSBmcm9tIFN0YWdlQ29udGV4dCAocGF0Y2gtYmFzZWQpICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlQ29udGV4dExpa2Uge1xuICBnZXRWYWx1ZShwYXRoOiBzdHJpbmdbXSwga2V5Pzogc3RyaW5nKTogdW5rbm93bjtcbiAgc2V0T2JqZWN0KHBhdGg6IHN0cmluZ1tdLCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIHNob3VsZFJlZGFjdD86IGJvb2xlYW4sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcbiAgdXBkYXRlT2JqZWN0KHBhdGg6IHN0cmluZ1tdLCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcblxuICBhZGRMb2c/KGtleTogc3RyaW5nLCB2YWw6IHVua25vd24pOiB2b2lkO1xuICBhZGRFcnJvcj8oa2V5OiBzdHJpbmcsIHZhbDogdW5rbm93bik6IHZvaWQ7XG5cbiAgZ2V0R2xvYmFsPyhrZXk6IHN0cmluZyk6IHVua25vd247XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2My4xLjAg4oCUIHVzZSB7QGxpbmsgZ2V0R2xvYmFsfSBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjQuMC4wLlxuICAgKiBJbnRlcm5hbCBjYWxsZXJzIG5vIGxvbmdlciBpbnZva2UgdGhpcyBtZXRob2Qg4oCUIGltcGxlbWVudG9ycyBvZiBgU3RhZ2VDb250ZXh0TGlrZWBcbiAgICogbXVzdCBwcm92aWRlIGBnZXRHbG9iYWw/YCAobm90IGp1c3QgYGdldEZyb21HbG9iYWxDb250ZXh0P2ApIGZvciBgZ2V0SW5pdGlhbFZhbHVlRm9yYCB0byB3b3JrLlxuICAgKi9cbiAgZ2V0RnJvbUdsb2JhbENvbnRleHQ/KGtleTogc3RyaW5nKTogdW5rbm93bjtcbiAgc2V0Um9vdD8oa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgc2V0R2xvYmFsPyhrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcblxuICBwaXBlbGluZUlkPzogc3RyaW5nO1xuICBydW5JZD86IHN0cmluZztcbn1cblxuLyoqIEZhY3RvcnkgdHlwZSB0aGUgcGlwZWxpbmUgZXhwZWN0cyAqL1xuZXhwb3J0IHR5cGUgU2NvcGVGYWN0b3J5PFRTY29wZT4gPSAoY3R4OiBTdGFnZUNvbnRleHRMaWtlLCBzdGFnZU5hbWU6IHN0cmluZywgcmVhZE9ubHk/OiB1bmtub3duKSA9PiBUU2NvcGU7XG5cbi8qKiBTdHJhdGVneSBvYmplY3QgdGhhdCBjcmVhdGVzIGEgc2NvcGUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVQcm92aWRlcjxUU2NvcGU+IHtcbiAgcmVhZG9ubHkga2luZDogc3RyaW5nO1xuICBjcmVhdGUoY3R4OiBTdGFnZUNvbnRleHRMaWtlLCBzdGFnZU5hbWU6IHN0cmluZywgcmVhZE9ubHk/OiB1bmtub3duKTogVFNjb3BlO1xufVxuXG4vKiogUmVzb2x2ZXIgdGhhdCBjYW4gdHVybiBhbiBhcmJpdHJhcnkgaW5wdXQgaW50byBhIFNjb3BlUHJvdmlkZXIgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJSZXNvbHZlcjxUU2NvcGUgPSBhbnk+IHtcbiAgbmFtZTogc3RyaW5nO1xuICBjYW5IYW5kbGUoaW5wdXQ6IHVua25vd24pOiBib29sZWFuO1xuICBtYWtlUHJvdmlkZXIoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiB1bmtub3duKTogU2NvcGVQcm92aWRlcjxUU2NvcGU+O1xufVxuXG4vKiogT3B0aW9uYWwgc3RyaWN0bmVzcyBmb3Igc2NoZW1hLWJhY2tlZCBwcm92aWRlcnMgKi9cbmV4cG9ydCB0eXBlIFN0cmljdE1vZGUgPSAnb2ZmJyB8ICd3YXJuJyB8ICdkZW55JztcblxuLyoqIE9wdGlvbnMgYmFnIHBhc3NlZCB0byByZXNvbHZlKCkgKi9cbmV4cG9ydCB0eXBlIFJlc29sdmVPcHRpb25zID0ge1xuICB6b2Q/OiB7IHN0cmljdD86IFN0cmljdE1vZGUgfTtcbn07XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3Byb3ZpZGVycy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3ZpZGVyIFN5c3RlbSBUeXBlc1xuICpcbiAqIERlZmluZXMgY29udHJhY3RzIGJldHdlZW4gdGhlIHJlZ2lzdHJ5LCByZXNvbHZlcnMsIGFuZCBwcm92aWRlcnMuXG4gKiBTdGFnZUNvbnRleHRMaWtlIGlzIHRoZSBtaW5pbWFsIHN1cmZhY2UgZnJvbSBTdGFnZUNvbnRleHQgdG8gYXZvaWQgdGlnaHQgY291cGxpbmcuXG4gKi9cblxuLyoqIE1pbmltYWwgc3VyZmFjZSBmcm9tIFN0YWdlQ29udGV4dCAocGF0Y2gtYmFzZWQpICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlQ29udGV4dExpa2Uge1xuICBnZXRWYWx1ZShwYXRoOiBzdHJpbmdbXSwga2V5Pzogc3RyaW5nKTogdW5rbm93bjtcbiAgc2V0T2JqZWN0KHBhdGg6IHN0cmluZ1tdLCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIHNob3VsZFJlZGFjdD86IGJvb2xlYW4sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcbiAgdXBkYXRlT2JqZWN0KHBhdGg6IHN0cmluZ1tdLCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcblxuICBhZGRMb2c/KGtleTogc3RyaW5nLCB2YWw6IHVua25vd24pOiB2b2lkO1xuICBhZGRFcnJvcj8oa2V5OiBzdHJpbmcsIHZhbDogdW5rbm93bik6IHZvaWQ7XG5cbiAgZ2V0R2xvYmFsPyhrZXk6IHN0cmluZyk6IHVua25vd247XG4gIHNldFJvb3Q/KGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHNldEdsb2JhbD8oa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBkZXNjcmlwdGlvbj86IHN0cmluZyk6IHZvaWQ7XG5cbiAgcGlwZWxpbmVJZD86IHN0cmluZztcbiAgcnVuSWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBGYWN0b3J5IHR5cGUgdGhlIHBpcGVsaW5lIGV4cGVjdHMgKi9cbmV4cG9ydCB0eXBlIFNjb3BlRmFjdG9yeTxUU2NvcGU+ID0gKGN0eDogU3RhZ2VDb250ZXh0TGlrZSwgc3RhZ2VOYW1lOiBzdHJpbmcsIHJlYWRPbmx5PzogdW5rbm93bikgPT4gVFNjb3BlO1xuXG4vKiogU3RyYXRlZ3kgb2JqZWN0IHRoYXQgY3JlYXRlcyBhIHNjb3BlICovXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlUHJvdmlkZXI8VFNjb3BlPiB7XG4gIHJlYWRvbmx5IGtpbmQ6IHN0cmluZztcbiAgY3JlYXRlKGN0eDogU3RhZ2VDb250ZXh0TGlrZSwgc3RhZ2VOYW1lOiBzdHJpbmcsIHJlYWRPbmx5PzogdW5rbm93bik6IFRTY29wZTtcbn1cblxuLyoqIFJlc29sdmVyIHRoYXQgY2FuIHR1cm4gYW4gYXJiaXRyYXJ5IGlucHV0IGludG8gYSBTY29wZVByb3ZpZGVyICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3ZpZGVyUmVzb2x2ZXI8VFNjb3BlID0gYW55PiB7XG4gIG5hbWU6IHN0cmluZztcbiAgY2FuSGFuZGxlKGlucHV0OiB1bmtub3duKTogYm9vbGVhbjtcbiAgbWFrZVByb3ZpZGVyKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogdW5rbm93bik6IFNjb3BlUHJvdmlkZXI8VFNjb3BlPjtcbn1cblxuLyoqIE9wdGlvbmFsIHN0cmljdG5lc3MgZm9yIHNjaGVtYS1iYWNrZWQgcHJvdmlkZXJzICovXG5leHBvcnQgdHlwZSBTdHJpY3RNb2RlID0gJ29mZicgfCAnd2FybicgfCAnZGVueSc7XG5cbi8qKiBPcHRpb25zIGJhZyBwYXNzZWQgdG8gcmVzb2x2ZSgpICovXG5leHBvcnQgdHlwZSBSZXNvbHZlT3B0aW9ucyA9IHtcbiAgem9kPzogeyBzdHJpY3Q/OiBTdHJpY3RNb2RlIH07XG59O1xuIl19
@@ -5,4 +5,4 @@ var DebugRecorder_js_1 = require("./DebugRecorder.js");
5
5
  Object.defineProperty(exports, "DebugRecorder", { enumerable: true, get: function () { return DebugRecorder_js_1.DebugRecorder; } });
6
6
  var MetricRecorder_js_1 = require("./MetricRecorder.js");
7
7
  Object.defineProperty(exports, "MetricRecorder", { enumerable: true, get: function () { return MetricRecorder_js_1.MetricRecorder; } });
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSx1REFBbUQ7QUFBMUMsaUhBQUEsYUFBYSxPQUFBO0FBRXRCLHlEQUFxRDtBQUE1QyxtSEFBQSxjQUFjLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuZXhwb3J0IHR5cGUge1xuICBDb21taXRFdmVudCxcbiAgRXJyb3JFdmVudCxcbiAgUmVhZEV2ZW50LFxuICBSZWNvcmRlcixcbiAgUmVjb3JkZXJDb250ZXh0LFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5leHBvcnQgdHlwZSB7IERlYnVnRW50cnksIERlYnVnUmVjb3JkZXJPcHRpb25zLCBEZWJ1Z1ZlcmJvc2l0eSB9IGZyb20gJy4vRGVidWdSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBEZWJ1Z1JlY29yZGVyIH0gZnJvbSAnLi9EZWJ1Z1JlY29yZGVyLmpzJztcbmV4cG9ydCB0eXBlIHsgQWdncmVnYXRlZE1ldHJpY3MsIFN0YWdlTWV0cmljcyB9IGZyb20gJy4vTWV0cmljUmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL01ldHJpY1JlY29yZGVyLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgTmFycmF0aXZlRGV0YWlsLFxuICBOYXJyYXRpdmVPcGVyYXRpb24sXG4gIE5hcnJhdGl2ZVJlY29yZGVyT3B0aW9ucyxcbiAgU3RhZ2VOYXJyYXRpdmVEYXRhLFxufSBmcm9tICcuL05hcnJhdGl2ZVJlY29yZGVyLmpzJztcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSx1REFBbUQ7QUFBMUMsaUhBQUEsYUFBYSxPQUFBO0FBRXRCLHlEQUFxRDtBQUE1QyxtSEFBQSxjQUFjLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuZXhwb3J0IHR5cGUge1xuICBDb21taXRFdmVudCxcbiAgRXJyb3JFdmVudCxcbiAgUmVhZEV2ZW50LFxuICBSZWNvcmRlcixcbiAgUmVjb3JkZXJDb250ZXh0LFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5leHBvcnQgdHlwZSB7IERlYnVnRW50cnksIERlYnVnUmVjb3JkZXJPcHRpb25zLCBEZWJ1Z1ZlcmJvc2l0eSB9IGZyb20gJy4vRGVidWdSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBEZWJ1Z1JlY29yZGVyIH0gZnJvbSAnLi9EZWJ1Z1JlY29yZGVyLmpzJztcbmV4cG9ydCB0eXBlIHsgQWdncmVnYXRlZE1ldHJpY3MsIFN0YWdlTWV0cmljcyB9IGZyb20gJy4vTWV0cmljUmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL01ldHJpY1JlY29yZGVyLmpzJztcbiJdfQ==
@@ -28,11 +28,11 @@ export { DiagnosticCollector } from './lib/memory/index.js';
28
28
  export { applySmartMerge, deepSmartMerge, getNestedValue, getRunAndGlobalPaths, normalisePath, redactPatch, setNestedValue, updateNestedValue, updateValue, } from './lib/memory/index.js';
29
29
  export type { BuildTimeExtractor, BuildTimeNodeMetadata, ExecOptions, FlowChartSpec, ILogger, ScopeProtectionMode, SerializedPipelineStructure, SimplifiedParallelSpec, StageFn, StageNode, StreamCallback, StreamLifecycleHandler, StreamTokenHandler, SubflowMountOptions, SubflowRef, } from './lib/builder/index.js';
30
30
  export { DeciderList, SelectorFnList, specToStageNode } from './lib/builder/index.js';
31
- export { createTypedScopeFactory, typedFlowChart } from './lib/builder/typedFlowChart.js';
31
+ export { createTypedScopeFactory } from './lib/builder/typedFlowChart.js';
32
32
  export type { ProviderResolver, ResolveOptions, ScopeProvider, StageContextLike, StrictMode, } from './lib/scope/index.js';
33
33
  export { createErrorMessage, createProtectedScope, ScopeFacade } from './lib/scope/index.js';
34
34
  export { attachScopeMethods, isSubclassOfScopeFacade, looksLikeClassCtor, looksLikeFactory, makeClassProvider, makeFactoryProvider, registerScopeResolver, resolveScopeProvider, toScopeFactory, } from './lib/scope/index.js';
35
- export type { AggregatedMetrics, DebugEntry, DebugRecorderOptions, DebugVerbosity, DefineScopeOptions, NarrativeDetail, NarrativeOperation, NarrativeRecorderOptions, RecorderContext, StageEvent, StageMetrics, StageNarrativeData, } from './lib/scope/index.js';
35
+ export type { AggregatedMetrics, DebugEntry, DebugRecorderOptions, DebugVerbosity, DefineScopeOptions, RecorderContext, StageEvent, StageMetrics, } from './lib/scope/index.js';
36
36
  export { createScopeProxyFromZod, defineScopeSchema, isScopeSchema, ZodScopeResolver } from './lib/scope/index.js';
37
37
  export type { NarrativeEntry, RuntimeSnapshot } from './lib/runner/index.js';
38
38
  export { ExecutionRuntime } from './lib/runner/index.js';
@@ -45,7 +45,6 @@ export { isStageNodeReturn } from './lib/engine/index.js';
45
45
  export type { IControlFlowNarrative } from './lib/engine/index.js';
46
46
  export type { CombinedNarrativeEntry, CombinedNarrativeOptions } from './lib/engine/index.js';
47
47
  export type { BranchResult, BranchResults, SerializedPipelineStructure as EngineSerializedPipelineStructure, StageSnapshot as EngineStageSnapshot, ExtractorError, HandlerDeps, IExecutionRuntime, NodeResultType, RuntimeStructureMetadata, SerializedPipelineNode, StageFunction, SubflowResult, TraversalExtractor, TraversalResult, } from './lib/engine/index.js';
48
- export { ControlFlowNarrativeGenerator } from './lib/engine/index.js';
49
48
  export { NullControlFlowNarrativeGenerator } from './lib/engine/index.js';
50
49
  export type { CallExtractorFn, ExecuteNodeFn, GetStagePathFn, RunStageFn } from './lib/engine/index.js';
51
50
  export { applyOutputMapping, ChildrenExecutor, computeNodeType, ContinuationResolver, createSubflowHandlerDeps, DeciderHandler, DEFAULT_MAX_ITERATIONS, ExtractorRunner, extractParentScopeValues, getInitialScopeValues, NodeResolver, RuntimeStructureManager, seedSubflowGlobalStore, SelectorHandler, StageRunner, SubflowExecutor, } from './lib/engine/index.js';
@@ -134,7 +134,8 @@ export declare class FlowChartBuilder<TOut = any, TScope = any> {
134
134
  private _needCursor;
135
135
  private _needCursorSpec;
136
136
  _applyExtractorToNode(spec: SerializedPipelineStructure): SerializedPipelineStructure;
137
- _addToMap(name: string, fn: StageFunction<TOut, TScope>): void;
137
+ _stageMapHas(key: string): boolean;
138
+ _addToMap(id: string, fn: StageFunction<TOut, TScope>): void;
138
139
  _mergeStageMap(other: Map<string, StageFunction<TOut, TScope>>, prefix?: string): void;
139
140
  _prefixNodeTree(node: StageNode<TOut, TScope>, prefix: string): StageNode<TOut, TScope>;
140
141
  _mergeSubflows(subflows: Record<string, {
@@ -1,16 +1,11 @@
1
1
  /**
2
- * typedFlowChart<T> -- Convenience builder for TypedScope<T> pipelines.
2
+ * typedFlowChart.ts TypedScope factory for FlowChartExecutor.
3
3
  *
4
- * Wraps FlowChartBuilder with the correct TScope generic so stage functions
5
- * receive typed property access without any casts.
6
- *
7
- * Also exports createTypedScopeFactory<T>() which creates the ScopeFactory
4
+ * Exports createTypedScopeFactory<T>() which creates the ScopeFactory
8
5
  * that wraps ScopeFacade in a TypedScope proxy.
9
6
  */
10
7
  import type { ScopeFactory } from '../engine/types.js';
11
8
  import type { TypedScope } from '../reactive/types.js';
12
- import { FlowChartBuilder } from './FlowChartBuilder.js';
13
- import type { BuildTimeExtractor } from './types.js';
14
9
  /**
15
10
  * Clean stage function type for TypedScope users.
16
11
  * No breakPipeline parameter — use scope.$break() instead.
@@ -19,27 +14,12 @@ export type TypedStageFunction<T extends object> = (scope: TypedScope<T>) => Pro
19
14
  /**
20
15
  * Creates a ScopeFactory that produces TypedScope<T> instances.
21
16
  *
22
- * Pass to FlowChartExecutor as the second argument:
23
- * new FlowChartExecutor(chart, createTypedScopeFactory<MyState>())
24
- */
25
- export declare function createTypedScopeFactory<T extends object>(): ScopeFactory<TypedScope<T>>;
26
- /**
27
- * Convenience builder for typed pipelines.
17
+ * `flowChart<T>()` auto-embeds this factory at build time — you rarely need
18
+ * to call this directly. Use it only when constructing a custom executor with
19
+ * a pre-built chart that was NOT created with `flowChart<T>()`.
28
20
  *
29
- * @deprecated Use {@link flowChart} instead. `flowChart<T>(name, fn, id)` is identical
30
- * to `typedFlowChart<T>(name, fn, id)` and auto-embeds the TypedScope factory at build time.
31
- * `typedFlowChart` will be removed in a future major version.
32
- * No changes to executor construction are required — `build()` now embeds the scope factory automatically.
33
- *
34
- * Migration:
35
- * ```typescript
36
- * // Before:
37
- * import { typedFlowChart } from 'footprintjs/advanced';
38
- * const chart = typedFlowChart<LoanState>('Intake', fn, 'intake').build();
39
- *
40
- * // After:
41
- * import { flowChart } from 'footprintjs';
42
- * const chart = flowChart<LoanState>('Intake', fn, 'intake').build();
43
- * ```
21
+ * const factory = createTypedScopeFactory<MyState>();
22
+ * new FlowChartExecutor(chart, factory)
23
+ * // or: new FlowChartExecutor(chart, { scopeFactory: factory })
44
24
  */
45
- export declare function typedFlowChart<T extends object>(name: string, fn: TypedStageFunction<T>, id: string, buildTimeExtractor?: BuildTimeExtractor<any>, description?: string): FlowChartBuilder<any, TypedScope<T>>;
25
+ export declare function createTypedScopeFactory<T extends object>(): ScopeFactory<TypedScope<T>>;
@@ -18,8 +18,8 @@ export type StageFn = StageFunction<any, any>;
18
18
  export type { ScopeProtectionMode };
19
19
  export interface SerializedPipelineStructure {
20
20
  name: string;
21
- id?: string;
22
- type: 'stage' | 'decider' | 'selector' | 'fork' | 'streaming';
21
+ id: string;
22
+ type: 'stage' | 'decider' | 'selector' | 'fork' | 'streaming' | 'subflow';
23
23
  /** Semantic icon hint for visualization (e.g., "llm", "tool", "rag", "agent", "start") */
24
24
  icon?: string;
25
25
  description?: string;
@@ -50,9 +50,9 @@ export interface SerializedPipelineStructure {
50
50
  }
51
51
  export interface FlowChartSpec {
52
52
  name: string;
53
- id?: string;
53
+ id: string;
54
54
  /** Node type — matches `SerializedPipelineStructure.type` for visualization alignment. */
55
- type?: 'stage' | 'decider' | 'selector' | 'fork' | 'streaming';
55
+ type?: 'stage' | 'decider' | 'selector' | 'fork' | 'streaming' | 'subflow';
56
56
  /** Semantic icon hint for visualization (e.g., "llm", "tool", "rag", "agent", "start") */
57
57
  icon?: string;
58
58
  description?: string;
@@ -10,12 +10,19 @@ import type { StageNode } from '../graph/StageNode.js';
10
10
  import type { HandlerDeps } from '../types.js';
11
11
  export declare class NodeResolver<TOut = any, TScope = any> {
12
12
  private deps;
13
- constructor(deps: HandlerDeps<TOut, TScope>);
13
+ private readonly nodeIdMap;
14
+ constructor(deps: HandlerDeps<TOut, TScope>, nodeIdMap?: Map<string, StageNode<TOut, TScope>>);
14
15
  /**
15
- * DFS search for a node by ID.
16
- * Checks: current children (depth-first) next (linear continuation).
16
+ * O(1) node lookup via pre-built ID map.
17
+ * Falls back to DFS from startNode (for dynamic nodes added at runtime
18
+ * or subflow-local lookups that use an explicit startNode).
17
19
  */
18
20
  findNodeById(nodeId: string, startNode?: StageNode<TOut, TScope>): StageNode<TOut, TScope> | undefined;
21
+ /**
22
+ * DFS search for a node by ID.
23
+ * Used as fallback when the node is not in the pre-built map.
24
+ */
25
+ private _dfs;
19
26
  /**
20
27
  * Resolve a subflow reference node to its actual structure.
21
28
  *
@@ -13,7 +13,7 @@ import type { SerializedPipelineStructure } from '../types.js';
13
13
  * Compute the node type from node properties.
14
14
  * Shared by RuntimeStructureManager (serialization) and ExtractorRunner (metadata).
15
15
  */
16
- export declare function computeNodeType(node: StageNode): 'stage' | 'decider' | 'selector' | 'fork' | 'streaming';
16
+ export declare function computeNodeType(node: StageNode): 'stage' | 'decider' | 'selector' | 'fork' | 'streaming' | 'subflow';
17
17
  export declare class RuntimeStructureManager {
18
18
  private runtimePipelineStructure?;
19
19
  private structureNodeMap;
@@ -10,7 +10,6 @@ export { isStageNodeReturn } from './graph/StageNode.js';
10
10
  export * from './types.js';
11
11
  export * from './handlers/index.js';
12
12
  export type { CombinedNarrativeEntry, CombinedNarrativeOptions } from './narrative/CombinedNarrativeBuilder.js';
13
- export { ControlFlowNarrativeGenerator } from './narrative/ControlFlowNarrativeGenerator.js';
14
13
  export { NullControlFlowNarrativeGenerator } from './narrative/NullControlFlowNarrativeGenerator.js';
15
14
  export type { IControlFlowNarrative } from './narrative/types.js';
16
15
  export { FlowRecorderDispatcher } from './narrative/FlowRecorderDispatcher.js';
@@ -5,7 +5,7 @@
5
5
  * Use CombinedNarrativeRecorder (auto-attached by setEnableNarrative()) instead.
6
6
  */
7
7
  export interface CombinedNarrativeEntry {
8
- type: 'stage' | 'step' | 'condition' | 'fork' | 'subflow' | 'loop' | 'break' | 'error';
8
+ type: 'stage' | 'step' | 'condition' | 'fork' | 'selector' | 'subflow' | 'loop' | 'break' | 'error';
9
9
  text: string;
10
10
  depth: number;
11
11
  stageName?: string;
@@ -33,8 +33,9 @@ export declare class FlowRecorderDispatcher implements IControlFlowNarrative {
33
33
  onBreak(stageName: string, traversalContext?: TraversalContext): void;
34
34
  onError(stageName: string, errorMessage: string, error: unknown, traversalContext?: TraversalContext): void;
35
35
  /**
36
- * Returns sentences from the first attached recorder that provides them.
37
- * By convention, NarrativeFlowRecorder exposes getSentences().
36
+ * Returns sentences from an attached NarrativeFlowRecorder (looked up by ID).
37
+ * Callers that need sentences should attach a NarrativeFlowRecorder with id 'narrative'
38
+ * and retrieve it directly via getRecorderById() if they need typed access.
38
39
  */
39
40
  getSentences(): string[];
40
41
  }
@@ -14,7 +14,6 @@ export declare class NarrativeFlowRecorder implements FlowRecorder {
14
14
  private sentences;
15
15
  /** Parallel array: the actual stage name that produced each sentence. */
16
16
  private stageNames;
17
- private isFirstStage;
18
17
  constructor(id?: string);
19
18
  onStageExecuted(event: FlowStageEvent): void;
20
19
  onNext(event: FlowNextEvent): void;
@@ -1,7 +1,6 @@
1
1
  export type { CombinedNarrativeEntry, CombinedNarrativeOptions } from './CombinedNarrativeBuilder.js';
2
2
  export type { CombinedNarrativeRecorderOptions } from './CombinedNarrativeRecorder.js';
3
3
  export { CombinedNarrativeRecorder } from './CombinedNarrativeRecorder.js';
4
- export { ControlFlowNarrativeGenerator } from './ControlFlowNarrativeGenerator.js';
5
4
  export { NullControlFlowNarrativeGenerator } from './NullControlFlowNarrativeGenerator.js';
6
5
  export type { IControlFlowNarrative } from './types.js';
7
6
  export { FlowRecorderDispatcher } from './FlowRecorderDispatcher.js';
@@ -137,6 +137,12 @@ export declare class FlowchartTraverser<TOut = any, TScope = any> {
137
137
  getNarrative(): string[];
138
138
  /** Returns the FlowRecorderDispatcher, or undefined if narrative is disabled. */
139
139
  getFlowRecorderDispatcher(): FlowRecorderDispatcher | undefined;
140
+ /**
141
+ * Build an O(1) ID→node map from the root graph.
142
+ * Used by NodeResolver to avoid repeated DFS on every loopTo() call.
143
+ * Depth-guarded at MAX_EXECUTE_DEPTH to prevent infinite recursion on cyclic graphs.
144
+ */
145
+ private buildNodeIdMap;
140
146
  private getStageFn;
141
147
  private executeStage;
142
148
  /**
@@ -112,7 +112,7 @@ export interface HandlerDeps<TOut = any, TScope = any> {
112
112
  stageMap: Map<string, StageFunction<TOut, TScope>>;
113
113
  root: StageNode<TOut, TScope>;
114
114
  executionRuntime: IExecutionRuntime;
115
- ScopeFactory: ScopeFactory<TScope>;
115
+ scopeFactory: ScopeFactory<TScope>;
116
116
  subflows?: Record<string, {
117
117
  root: StageNode<TOut, TScope>;
118
118
  }>;
@@ -154,7 +154,7 @@ export interface RunOptions {
154
154
  }
155
155
  export type { FlowControlType, FlowMessage };
156
156
  export interface RuntimeStructureMetadata {
157
- type: 'stage' | 'decider' | 'selector' | 'fork' | 'streaming';
157
+ type: 'stage' | 'decider' | 'selector' | 'fork' | 'streaming' | 'subflow';
158
158
  subflowId?: string;
159
159
  isSubflowRoot?: boolean;
160
160
  subflowName?: string;
@@ -207,7 +207,7 @@ export type TraversalResult = BranchResults | string | Error;
207
207
  export interface SerializedPipelineNode {
208
208
  name: string;
209
209
  id?: string;
210
- type?: 'stage' | 'decider' | 'selector' | 'fork' | 'streaming' | 'loop' | 'user' | 'tool' | 'function' | 'sequence';
210
+ type?: 'stage' | 'decider' | 'selector' | 'fork' | 'streaming' | 'subflow' | 'loop' | 'user' | 'tool' | 'function' | 'sequence';
211
211
  description?: string;
212
212
  children?: SerializedPipelineNode[];
213
213
  next?: SerializedPipelineNode;
@@ -53,23 +53,8 @@ export declare class StageContext {
53
53
  appendToArray(path: string[], key: string, items: unknown[], description?: string): void;
54
54
  mergeObject(path: string[], key: string, obj: Record<string, unknown>, description?: string): void;
55
55
  getValue(path: string[], key?: string, description?: string): any;
56
- /**
57
- * @deprecated since v3.1.0 — use {@link getValue} instead. Will be removed in v4.0.0.
58
- * This alias exists for backward compatibility only.
59
- */
60
- get(path: string[], key?: string): any;
61
56
  getRoot(key: string): any;
62
57
  getGlobal(key: string): any;
63
- /**
64
- * @deprecated since v3.1.0 — use {@link getRoot} instead. Will be removed in v4.0.0.
65
- * This alias exists for backward compatibility only.
66
- */
67
- getFromRoot(key: string): any;
68
- /**
69
- * @deprecated since v3.1.0 — use {@link getGlobal} instead. Will be removed in v4.0.0.
70
- * This alias exists for backward compatibility only.
71
- */
72
- getFromGlobalContext(key: string): any;
73
58
  getScope(): Record<string, unknown>;
74
59
  getRunId(): string;
75
60
  commit(): void;
@@ -1,17 +1,20 @@
1
1
  /**
2
2
  * FlowChartExecutor — Public API for executing a compiled FlowChart.
3
3
  *
4
- * Wraps FlowchartTraverser. Pairs with FlowChartBuilder:
4
+ * Wraps FlowchartTraverser. Build a chart with flowChart() and pass the result here:
5
+ *
5
6
  * const chart = flowChart('entry', entryFn).addFunction('process', processFn).build();
6
7
  *
7
- * // Recommended options object form:
8
+ * // No-options form (uses auto-detected TypedScope factory from the chart):
8
9
  * const executor = new FlowChartExecutor(chart);
10
+ *
11
+ * // Options-object form (preferred when you need to customize behavior):
9
12
  * const executor = new FlowChartExecutor(chart, { scopeFactory: myFactory, enrichSnapshots: true });
10
13
  *
11
- * // Legacy positional params 3-9 are deprecated; pass an options object instead:
12
- * const executor = new FlowChartExecutor(chart, myFactory); // still supported
14
+ * // 2-param form (accepts a ScopeFactory directly, for backward compatibility):
15
+ * const executor = new FlowChartExecutor(chart, myFactory);
13
16
  *
14
- * const result = await executor.run();
17
+ * const result = await executor.run({ input: data, env: { traceId: 'req-123' } });
15
18
  */
16
19
  import type { CombinedNarrativeEntry } from '../engine/narrative/CombinedNarrativeBuilder.js';
17
20
  import type { ManifestEntry } from '../engine/narrative/recorders/ManifestFlowRecorder.js';
@@ -81,45 +84,20 @@ export declare class FlowChartExecutor<TOut = any, TScope = any> {
81
84
  /**
82
85
  * Create a FlowChartExecutor.
83
86
  *
84
- * **Preferred form** (options object — avoids positional parameter confusion):
87
+ * **Options object form** (preferred):
85
88
  * ```typescript
86
89
  * new FlowChartExecutor(chart, { scopeFactory, enrichSnapshots: true })
87
90
  * ```
88
91
  *
89
- * **Backward-compatible positional form** (params 3–9 deprecated — use options object):
92
+ * **2-param form** (also supported):
90
93
  * ```typescript
91
- * new FlowChartExecutor(chart, scopeFactory) // fine — 2 params
92
- * new FlowChartExecutor(chart, factory, defaultValues, ...) // deprecated: use options object
94
+ * new FlowChartExecutor(chart, scopeFactory)
93
95
  * ```
94
96
  *
95
97
  * @param flowChart - The compiled FlowChart returned by `flowChart(...).build()`
96
- * @param factoryOrOptions - A `ScopeFactory<TScope>` (still supported NOT deprecated) OR a
97
- * `FlowChartExecutorOptions<TScope>` options object (preferred for 3+ settings).
98
- * Passing `(chart, scopeFactory)` — the 2-param form — is fine and will not be removed.
99
- * Only params 3–9 are deprecated.
100
- * @param defaultValuesForContext - @deprecated Pass via `options.defaultValuesForContext` instead.
101
- * @param initialContext - @deprecated Pass via `options.initialContext` instead.
102
- * @param readOnlyContext - @deprecated Pass via `options.readOnlyContext` instead.
103
- * @param throttlingErrorChecker - @deprecated Pass via `options.throttlingErrorChecker` instead.
104
- * @param streamHandlers - @deprecated Pass via `options.streamHandlers` instead.
105
- * @param scopeProtectionMode - @deprecated Pass via `options.scopeProtectionMode` instead.
106
- * @param enrichSnapshots - @deprecated Pass via `options.enrichSnapshots` instead.
98
+ * @param factoryOrOptions - A `ScopeFactory<TScope>` OR a `FlowChartExecutorOptions<TScope>` options object.
107
99
  */
108
- constructor(flowChart: FlowChart<TOut, TScope>, factoryOrOptions?: ScopeFactory<TScope> | FlowChartExecutorOptions<TScope>,
109
- /** @deprecated Use {@link FlowChartExecutorOptions} instead. */
110
- defaultValuesForContext?: unknown,
111
- /** @deprecated Use {@link FlowChartExecutorOptions} instead. */
112
- initialContext?: unknown,
113
- /** @deprecated Use {@link FlowChartExecutorOptions} instead. */
114
- readOnlyContext?: unknown,
115
- /** @deprecated Use {@link FlowChartExecutorOptions} instead. */
116
- throttlingErrorChecker?: (error: unknown) => boolean,
117
- /** @deprecated Use {@link FlowChartExecutorOptions} instead. */
118
- streamHandlers?: StreamHandlers,
119
- /** @deprecated Use {@link FlowChartExecutorOptions} instead. */
120
- scopeProtectionMode?: ScopeProtectionMode,
121
- /** @deprecated Use {@link FlowChartExecutorOptions} instead. */
122
- enrichSnapshots?: boolean);
100
+ constructor(flowChart: FlowChart<TOut, TScope>, factoryOrOptions?: ScopeFactory<TScope> | FlowChartExecutorOptions<TScope>);
123
101
  private createTraverser;
124
102
  enableNarrative(): void;
125
103
  /**
@@ -195,8 +173,6 @@ export declare class FlowChartExecutor<TOut = any, TScope = any> {
195
173
  /** @internal */
196
174
  getExtractedResults<TResult = unknown>(): Map<string, TResult>;
197
175
  /** @internal */
198
- getEnrichedResults<TResult = unknown>(): Map<string, TResult>;
199
- /** @internal */
200
176
  getExtractorErrors(): ExtractorError[];
201
177
  /**
202
178
  * Returns the subflow manifest from an attached ManifestFlowRecorder.
@@ -47,6 +47,8 @@ export interface RunnableFlowChart<TOut = any, TScope = any> extends FlowChart<T
47
47
  toOpenAPI(options?: ChartOpenAPIOptions): object;
48
48
  /** Generate MCP tool description from chart metadata. Cached. */
49
49
  toMCPTool(): MCPToolDescription;
50
+ /** Generate a Mermaid flowchart diagram string from the chart's node graph. */
51
+ toMermaid(): string;
50
52
  }
51
53
  /**
52
54
  * Enrich a FlowChart with run + describe methods.
@@ -10,7 +10,6 @@ export type { DebugEntry, DebugRecorderOptions, DebugVerbosity } from './recorde
10
10
  export { DebugRecorder } from './recorders/DebugRecorder.js';
11
11
  export type { AggregatedMetrics, StageMetrics } from './recorders/MetricRecorder.js';
12
12
  export { MetricRecorder } from './recorders/MetricRecorder.js';
13
- export type { NarrativeDetail, NarrativeOperation, NarrativeRecorderOptions, StageNarrativeData, } from './recorders/NarrativeRecorder.js';
14
13
  export type { ScopeProtectionMode, ScopeProtectionOptions } from './protection/index.js';
15
14
  export { createErrorMessage, createProtectedScope } from './protection/index.js';
16
15
  export type { ProviderResolver, ResolveOptions, ScopeFactory, ScopeProvider, StageContextLike, StrictMode, } from './providers/index.js';
@@ -12,12 +12,6 @@ export interface StageContextLike {
12
12
  addLog?(key: string, val: unknown): void;
13
13
  addError?(key: string, val: unknown): void;
14
14
  getGlobal?(key: string): unknown;
15
- /**
16
- * @deprecated since v3.1.0 — use {@link getGlobal} instead. Will be removed in v4.0.0.
17
- * Internal callers no longer invoke this method — implementors of `StageContextLike`
18
- * must provide `getGlobal?` (not just `getFromGlobalContext?`) for `getInitialValueFor` to work.
19
- */
20
- getFromGlobalContext?(key: string): unknown;
21
15
  setRoot?(key: string, value: unknown): void;
22
16
  setGlobal?(key: string, value: unknown, description?: string): void;
23
17
  pipelineId?: string;
@@ -3,4 +3,3 @@ export type { DebugEntry, DebugRecorderOptions, DebugVerbosity } from './DebugRe
3
3
  export { DebugRecorder } from './DebugRecorder.js';
4
4
  export type { AggregatedMetrics, StageMetrics } from './MetricRecorder.js';
5
5
  export { MetricRecorder } from './MetricRecorder.js';
6
- export type { NarrativeDetail, NarrativeOperation, NarrativeRecorderOptions, StageNarrativeData, } from './NarrativeRecorder.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "footprintjs",
3
- "version": "3.1.0",
3
+ "version": "4.0.0",
4
4
  "description": "Explainable backend flows — automatic causal traces, decision evidence, and MCP tool generation for AI agents",
5
5
  "license": "MIT",
6
6
  "author": "Sanjay Krishna Anbalagan",