footprintjs 5.0.0 → 6.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 (78) hide show
  1. package/CLAUDE.md +32 -8
  2. package/dist/advanced.js +2 -3
  3. package/dist/esm/advanced.js +2 -2
  4. package/dist/esm/index.js +1 -1
  5. package/dist/esm/lib/builder/FlowChartBuilder.js +364 -100
  6. package/dist/esm/lib/builder/index.js +1 -1
  7. package/dist/esm/lib/builder/structure/StructureRecorder.js +158 -0
  8. package/dist/esm/lib/builder/structure/StructureRecorderDispatcher.js +171 -0
  9. package/dist/esm/lib/builder/types.js +1 -1
  10. package/dist/esm/lib/engine/errors/errorInfo.js +4 -3
  11. package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +11 -2
  12. package/dist/esm/lib/engine/handlers/DeciderHandler.js +5 -7
  13. package/dist/esm/lib/engine/handlers/RuntimeStructureManager.js +2 -2
  14. package/dist/esm/lib/engine/handlers/SelectorHandler.js +9 -7
  15. package/dist/esm/lib/engine/handlers/SubflowExecutor.js +7 -1
  16. package/dist/esm/lib/engine/handlers/index.js +1 -3
  17. package/dist/esm/lib/engine/handlers/types.js +2 -2
  18. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +12 -2
  19. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +3 -3
  20. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +8 -1
  21. package/dist/esm/lib/engine/narrative/types.js +1 -1
  22. package/dist/esm/lib/engine/runtimeStageId.js +64 -2
  23. package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +11 -54
  24. package/dist/esm/lib/engine/types.js +1 -1
  25. package/dist/esm/lib/engine/walkSubflowSpec.js +144 -0
  26. package/dist/esm/lib/runner/FlowChartExecutor.js +4 -17
  27. package/dist/esm/lib/runner/getSubtreeSnapshot.js +3 -2
  28. package/dist/esm/trace.js +3 -2
  29. package/dist/index.js +1 -1
  30. package/dist/lib/builder/FlowChartBuilder.js +364 -100
  31. package/dist/lib/builder/index.js +1 -1
  32. package/dist/lib/builder/structure/StructureRecorder.js +159 -0
  33. package/dist/lib/builder/structure/StructureRecorderDispatcher.js +175 -0
  34. package/dist/lib/builder/types.js +1 -1
  35. package/dist/lib/engine/errors/errorInfo.js +4 -3
  36. package/dist/lib/engine/handlers/ChildrenExecutor.js +11 -2
  37. package/dist/lib/engine/handlers/DeciderHandler.js +5 -7
  38. package/dist/lib/engine/handlers/RuntimeStructureManager.js +2 -2
  39. package/dist/lib/engine/handlers/SelectorHandler.js +9 -7
  40. package/dist/lib/engine/handlers/SubflowExecutor.js +7 -1
  41. package/dist/lib/engine/handlers/index.js +2 -5
  42. package/dist/lib/engine/handlers/types.js +2 -2
  43. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +12 -2
  44. package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +3 -3
  45. package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +8 -1
  46. package/dist/lib/engine/narrative/types.js +1 -1
  47. package/dist/lib/engine/runtimeStageId.js +66 -3
  48. package/dist/lib/engine/traversal/FlowchartTraverser.js +11 -54
  49. package/dist/lib/engine/types.js +1 -1
  50. package/dist/lib/engine/walkSubflowSpec.js +148 -0
  51. package/dist/lib/runner/FlowChartExecutor.js +4 -17
  52. package/dist/lib/runner/getSubtreeSnapshot.js +3 -2
  53. package/dist/trace.js +5 -2
  54. package/dist/types/advanced.d.ts +4 -4
  55. package/dist/types/index.d.ts +2 -0
  56. package/dist/types/lib/builder/FlowChartBuilder.d.ts +110 -14
  57. package/dist/types/lib/builder/index.d.ts +2 -1
  58. package/dist/types/lib/builder/structure/StructureRecorder.d.ts +349 -0
  59. package/dist/types/lib/builder/structure/StructureRecorderDispatcher.d.ts +77 -0
  60. package/dist/types/lib/builder/types.d.ts +20 -6
  61. package/dist/types/lib/engine/errors/errorInfo.d.ts +3 -2
  62. package/dist/types/lib/engine/handlers/DeciderHandler.d.ts +3 -3
  63. package/dist/types/lib/engine/handlers/RuntimeStructureManager.d.ts +1 -1
  64. package/dist/types/lib/engine/handlers/SelectorHandler.d.ts +2 -2
  65. package/dist/types/lib/engine/handlers/index.d.ts +1 -2
  66. package/dist/types/lib/engine/handlers/types.d.ts +2 -9
  67. package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +2 -2
  68. package/dist/types/lib/engine/narrative/types.d.ts +24 -2
  69. package/dist/types/lib/engine/runtimeStageId.d.ts +57 -1
  70. package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +1 -6
  71. package/dist/types/lib/engine/types.d.ts +0 -26
  72. package/dist/types/lib/engine/walkSubflowSpec.d.ts +95 -0
  73. package/dist/types/lib/runner/FlowChartExecutor.d.ts +4 -16
  74. package/dist/types/trace.d.ts +3 -1
  75. package/package.json +1 -1
  76. package/dist/esm/lib/engine/handlers/ExtractorRunner.js +0 -122
  77. package/dist/lib/engine/handlers/ExtractorRunner.js +0 -126
  78. package/dist/types/lib/engine/handlers/ExtractorRunner.d.ts +0 -41
@@ -1,122 +0,0 @@
1
- /**
2
- * ExtractorRunner — Per-stage snapshot extraction.
3
- *
4
- * Coordinates traversal extractor invocations: step counting,
5
- * snapshot enrichment, error collection, and result storage.
6
- */
7
- import { computeNodeType } from './RuntimeStructureManager.js';
8
- export class ExtractorRunner {
9
- extractor;
10
- enrichSnapshots;
11
- executionRuntime;
12
- logger;
13
- extractedResults = new Map();
14
- extractorErrors = [];
15
- stepCounter = 0;
16
- /** Current subflow context for metadata propagation. Set/cleared during subflow execution. */
17
- currentSubflowId;
18
- /** Current fork context for metadata propagation. Set/cleared during parallel children execution. */
19
- currentForkId;
20
- constructor(extractor, enrichSnapshots, executionRuntime, logger) {
21
- this.extractor = extractor;
22
- this.enrichSnapshots = enrichSnapshots;
23
- this.executionRuntime = executionRuntime;
24
- this.logger = logger;
25
- }
26
- /**
27
- * Call the extractor for a stage and store the result.
28
- * Increments stepCounter (1-based) before creating snapshot.
29
- */
30
- callExtractor(node, context, stagePath, stageOutput, errorInfo) {
31
- if (!this.extractor)
32
- return;
33
- this.stepCounter++;
34
- try {
35
- const snapshot = {
36
- node,
37
- context,
38
- stepNumber: this.stepCounter,
39
- structureMetadata: this.buildStructureMetadata(node),
40
- };
41
- if (this.enrichSnapshots) {
42
- try {
43
- snapshot.scopeState = { ...this.executionRuntime.globalStore.getState() };
44
- snapshot.debugInfo = {
45
- logs: { ...context.debug.logContext },
46
- errors: { ...context.debug.errorContext },
47
- metrics: { ...context.debug.metricContext },
48
- evals: { ...context.debug.evalContext },
49
- };
50
- if (context.debug.flowMessages.length > 0) {
51
- snapshot.debugInfo.flowMessages = [...context.debug.flowMessages];
52
- }
53
- snapshot.stageOutput = stageOutput;
54
- if (errorInfo) {
55
- snapshot.errorInfo = errorInfo;
56
- }
57
- snapshot.historyIndex = this.executionRuntime.executionHistory.list().length;
58
- }
59
- catch (enrichError) {
60
- this.logger.warn(`Enrichment error at stage '${stagePath}':`, { error: enrichError });
61
- }
62
- }
63
- const result = this.extractor(snapshot);
64
- if (result !== undefined && result !== null) {
65
- this.extractedResults.set(stagePath, result);
66
- }
67
- }
68
- catch (error) {
69
- this.logger.error(`Extractor error at stage '${stagePath}':`, { error });
70
- this.extractorErrors.push({
71
- stagePath,
72
- message: error?.message ?? String(error),
73
- error,
74
- });
75
- }
76
- }
77
- /**
78
- * Generate the stage path for extractor results.
79
- * Uses node.id combined with branchPath.
80
- */
81
- getStagePath(node, branchPath, contextStageName) {
82
- const baseName = node.id;
83
- const nodeId = contextStageName && contextStageName !== node.name ? contextStageName : baseName;
84
- if (!branchPath)
85
- return nodeId;
86
- return `${branchPath}.${nodeId}`;
87
- }
88
- buildStructureMetadata(node) {
89
- const metadata = {
90
- type: computeNodeType(node),
91
- };
92
- if (node.isSubflowRoot) {
93
- metadata.isSubflowRoot = true;
94
- metadata.subflowId = node.subflowId;
95
- metadata.subflowName = node.subflowName;
96
- }
97
- else if (this.currentSubflowId) {
98
- metadata.subflowId = this.currentSubflowId;
99
- }
100
- if (this.currentForkId) {
101
- metadata.isParallelChild = true;
102
- metadata.parallelGroupId = this.currentForkId;
103
- }
104
- if (node.isStreaming) {
105
- metadata.streamId = node.streamId;
106
- }
107
- const hasDynamicChildren = Boolean(node.children?.length && !node.nextNodeSelector && node.fn);
108
- if (hasDynamicChildren) {
109
- metadata.isDynamic = true;
110
- }
111
- return metadata;
112
- }
113
- /** Returns extracted results collected during execution. */
114
- getExtractedResults() {
115
- return this.extractedResults;
116
- }
117
- /** Returns errors encountered during extraction. */
118
- getExtractorErrors() {
119
- return this.extractorErrors;
120
- }
121
- }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXh0cmFjdG9yUnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvRXh0cmFjdG9yUnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBWUgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE1BQU0sT0FBTyxlQUFlO0lBQ1QsU0FBUyxDQUFzQjtJQUMvQixlQUFlLENBQVU7SUFDekIsZ0JBQWdCLENBQW9CO0lBQ3BDLE1BQU0sQ0FBVTtJQUV6QixnQkFBZ0IsR0FBeUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNuRCxlQUFlLEdBQXFCLEVBQUUsQ0FBQztJQUN2QyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBRXhCLDhGQUE4RjtJQUM5RixnQkFBZ0IsQ0FBVTtJQUUxQixxR0FBcUc7SUFDckcsYUFBYSxDQUFVO0lBRXZCLFlBQ0UsU0FBeUMsRUFDekMsZUFBd0IsRUFDeEIsZ0JBQW1DLEVBQ25DLE1BQWU7UUFFZixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FDWCxJQUFlLEVBQ2YsT0FBcUIsRUFDckIsU0FBaUIsRUFDakIsV0FBcUIsRUFDckIsU0FBNkM7UUFFN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUU1QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQWtCO2dCQUM5QixJQUFJO2dCQUNKLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFX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KiBFeHRyYWN0b3JSdW5uZXIg4oCUIFBlci1zdGFnZSBzbmFwc2hvdCBleHRyYWN0aW9uLlxuICpcbiAqIENvb3JkaW5hdGVzIHRyYXZlcnNhbCBleHRyYWN0b3IgaW52b2NhdGlvbnM6IHN0ZXAgY291bnRpbmcsXG4gKiBzbmFwc2hvdCBlbnJpY2htZW50LCBlcnJvciBjb2xsZWN0aW9uLCBhbmQgcmVzdWx0IHN0b3JhZ2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tZW1vcnkvU3RhZ2VDb250ZXh0LmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgRXh0cmFjdG9yRXJyb3IsXG4gIElFeGVjdXRpb25SdW50aW1lLFxuICBJTG9nZ2VyLFxuICBSdW50aW1lU3RydWN0dXJlTWV0YWRhdGEsXG4gIFN0YWdlU25hcHNob3QsXG4gIFRyYXZlcnNhbEV4dHJhY3Rvcixcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHsgY29tcHV0ZU5vZGVUeXBlIH0gZnJvbSAnLi9SdW50aW1lU3RydWN0dXJlTWFuYWdlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBFeHRyYWN0b3JSdW5uZXI8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXh0cmFjdG9yPzogVHJhdmVyc2FsRXh0cmFjdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IGVucmljaFNuYXBzaG90czogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRpb25SdW50aW1lOiBJRXhlY3V0aW9uUnVudGltZTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IElMb2dnZXI7XG5cbiAgcHJpdmF0ZSBleHRyYWN0ZWRSZXN1bHRzOiBNYXA8c3RyaW5nLCB1bmtub3duPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBleHRyYWN0b3JFcnJvcnM6IEV4dHJhY3RvckVycm9yW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGVwQ291bnRlciA9IDA7XG5cbiAgLyoqIEN1cnJlbnQgc3ViZmxvdyBjb250ZXh0IGZvciBtZXRhZGF0YSBwcm9wYWdhdGlvbi4gU2V0L2NsZWFyZWQgZHVyaW5nIHN1YmZsb3cgZXhlY3V0aW9uLiAqL1xuICBjdXJyZW50U3ViZmxvd0lkPzogc3RyaW5nO1xuXG4gIC8qKiBDdXJyZW50IGZvcmsgY29udGV4dCBmb3IgbWV0YWRhdGEgcHJvcGFnYXRpb24uIFNldC9jbGVhcmVkIGR1cmluZyBwYXJhbGxlbCBjaGlsZHJlbiBleGVjdXRpb24uICovXG4gIGN1cnJlbnRGb3JrSWQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZXh0cmFjdG9yOiBUcmF2ZXJzYWxFeHRyYWN0b3IgfCB1bmRlZmluZWQsXG4gICAgZW5yaWNoU25hcHNob3RzOiBib29sZWFuLFxuICAgIGV4ZWN1dGlvblJ1bnRpbWU6IElFeGVjdXRpb25SdW50aW1lLFxuICAgIGxvZ2dlcjogSUxvZ2dlcixcbiAgKSB7XG4gICAgdGhpcy5leHRyYWN0b3IgPSBleHRyYWN0b3I7XG4gICAgdGhpcy5lbnJpY2hTbmFwc2hvdHMgPSBlbnJpY2hTbmFwc2hvdHM7XG4gICAgdGhpcy5leGVjdXRpb25SdW50aW1lID0gZXhlY3V0aW9uUnVudGltZTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBleHRyYWN0b3IgZm9yIGEgc3RhZ2UgYW5kIHN0b3JlIHRoZSByZXN1bHQuXG4gICAqIEluY3JlbWVudHMgc3RlcENvdW50ZXIgKDEtYmFzZWQpIGJlZm9yZSBjcmVhdGluZyBzbmFwc2hvdC5cbiAgICovXG4gIGNhbGxFeHRyYWN0b3IoXG4gICAgbm9kZTogU3RhZ2VOb2RlLFxuICAgIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBzdGFnZVBhdGg6IHN0cmluZyxcbiAgICBzdGFnZU91dHB1dD86IHVua25vd24sXG4gICAgZXJyb3JJbmZvPzogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZXh0cmFjdG9yKSByZXR1cm47XG5cbiAgICB0aGlzLnN0ZXBDb3VudGVyKys7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc25hcHNob3Q6IFN0YWdlU25hcHNob3QgPSB7XG4gICAgICAgIG5vZGUsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0ZXBOdW1iZXI6IHRoaXMuc3RlcENvdW50ZXIsXG4gICAgICAgIHN0cnVjdHVyZU1ldGFkYXRhOiB0aGlzLmJ1aWxkU3RydWN0dXJlTWV0YWRhdGEobm9kZSksXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5lbnJpY2hTbmFwc2hvdHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzbmFwc2hvdC5zY29wZVN0YXRlID0geyAuLi50aGlzLmV4ZWN1dGlvblJ1bnRpbWUuZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKSB9O1xuXG4gICAgICAgICAgc25hcHNob3QuZGVidWdJbmZvID0ge1xuICAgICAgICAgICAgbG9nczogeyAuLi5jb250ZXh0LmRlYnVnLmxvZ0NvbnRleHQgfSxcbiAgICAgICAgICAgIGVycm9yczogeyAuLi5jb250ZXh0LmRlYnVnLmVycm9yQ29udGV4dCB9LFxuICAgICAgICAgICAgbWV0cmljczogeyAuLi5jb250ZXh0LmRlYnVnLm1ldHJpY0NvbnRleHQgfSxcbiAgICAgICAgICAgIGV2YWxzOiB7IC4uLmNvbnRleHQuZGVidWcuZXZhbENvbnRleHQgfSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChjb250ZXh0LmRlYnVnLmZsb3dNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzbmFwc2hvdC5kZWJ1Z0luZm8uZmxvd01lc3NhZ2VzID0gWy4uLmNvbnRleHQuZGVidWcuZmxvd01lc3NhZ2VzXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzbmFwc2hvdC5zdGFnZU91dHB1dCA9IHN0YWdlT3V0cHV0O1xuXG4gICAgICAgICAgaWYgKGVycm9ySW5mbykge1xuICAgICAgICAgICAgc25hcHNob3QuZXJyb3JJbmZvID0gZXJyb3JJbmZvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNuYXBzaG90Lmhpc3RvcnlJbmRleCA9IHRoaXMuZXhlY3V0aW9uUnVudGltZS5leGVjdXRpb25IaXN0b3J5Lmxpc3QoKS5sZW5ndGg7XG4gICAgICAgIH0gY2F0Y2ggKGVucmljaEVycm9yOiBhbnkpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBFbnJpY2htZW50IGVycm9yIGF0IHN0YWdlICcke3N0YWdlUGF0aH0nOmAsIHsgZXJyb3I6IGVucmljaEVycm9yIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZXh0cmFjdG9yKHNuYXBzaG90KTtcblxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmV4dHJhY3RlZFJlc3VsdHMuc2V0KHN0YWdlUGF0aCwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihgRXh0cmFjdG9yIGVycm9yIGF0IHN0YWdlICcke3N0YWdlUGF0aH0nOmAsIHsgZXJyb3IgfSk7XG4gICAgICB0aGlzLmV4dHJhY3RvckVycm9ycy5wdXNoKHtcbiAgICAgICAgc3RhZ2VQYXRoLFxuICAgICAgICBtZXNzYWdlOiBlcnJvcj8ubWVzc2FnZSA/PyBTdHJpbmcoZXJyb3IpLFxuICAgICAgICBlcnJvcixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgc3RhZ2UgcGF0aCBmb3IgZXh0cmFjdG9yIHJlc3VsdHMuXG4gICAqIFVzZXMgbm9kZS5pZCBjb21iaW5lZCB3aXRoIGJyYW5jaFBhdGguXG4gICAqL1xuICBnZXRTdGFnZVBhdGgobm9kZTogU3RhZ2VOb2RlLCBicmFuY2hQYXRoPzogc3RyaW5nLCBjb250ZXh0U3RhZ2VOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlTmFtZSA9IG5vZGUuaWQ7XG4gICAgY29uc3Qgbm9kZUlkID0gY29udGV4dFN0YWdlTmFtZSAmJiBjb250ZXh0U3RhZ2VOYW1lICE9PSBub2RlLm5hbWUgPyBjb250ZXh0U3RhZ2VOYW1lIDogYmFzZU5hbWU7XG4gICAgaWYgKCFicmFuY2hQYXRoKSByZXR1cm4gbm9kZUlkO1xuICAgIHJldHVybiBgJHticmFuY2hQYXRofS4ke25vZGVJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFN0cnVjdHVyZU1ldGFkYXRhKG5vZGU6IFN0YWdlTm9kZSk6IFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSB7XG4gICAgY29uc3QgbWV0YWRhdGE6IFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSA9IHtcbiAgICAgIHR5cGU6IGNvbXB1dGVOb2RlVHlwZShub2RlKSxcbiAgICB9O1xuXG4gICAgaWYgKG5vZGUuaXNTdWJmbG93Um9vdCkge1xuICAgICAgbWV0YWRhdGEuaXNTdWJmbG93Um9vdCA9IHRydWU7XG4gICAgICBtZXRhZGF0YS5zdWJmbG93SWQgPSBub2RlLnN1YmZsb3dJZDtcbiAgICAgIG1ldGFkYXRhLnN1YmZsb3dOYW1lID0gbm9kZS5zdWJmbG93TmFtZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFN1YmZsb3dJZCkge1xuICAgICAgbWV0YWRhdGEuc3ViZmxvd0lkID0gdGhpcy5jdXJyZW50U3ViZmxvd0lkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1cnJlbnRGb3JrSWQpIHtcbiAgICAgIG1ldGFkYXRhLmlzUGFyYWxsZWxDaGlsZCA9IHRydWU7XG4gICAgICBtZXRhZGF0YS5wYXJhbGxlbEdyb3VwSWQgPSB0aGlzLmN1cnJlbnRGb3JrSWQ7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuaXNTdHJlYW1pbmcpIHtcbiAgICAgIG1ldGFkYXRhLnN0cmVhbUlkID0gbm9kZS5zdHJlYW1JZDtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNEeW5hbWljQ2hpbGRyZW4gPSBCb29sZWFuKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCAmJiAhbm9kZS5uZXh0Tm9kZVNlbGVjdG9yICYmIG5vZGUuZm4pO1xuICAgIGlmIChoYXNEeW5hbWljQ2hpbGRyZW4pIHtcbiAgICAgIG1ldGFkYXRhLmlzRHluYW1pYyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgLyoqIFJldHVybnMgZXh0cmFjdGVkIHJlc3VsdHMgY29sbGVjdGVkIGR1cmluZyBleGVjdXRpb24uICovXG4gIGdldEV4dHJhY3RlZFJlc3VsdHM8VFJlc3VsdCA9IHVua25vd24+KCk6IE1hcDxzdHJpbmcsIFRSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5leHRyYWN0ZWRSZXN1bHRzIGFzIE1hcDxzdHJpbmcsIFRSZXN1bHQ+O1xuICB9XG5cbiAgLyoqIFJldHVybnMgZXJyb3JzIGVuY291bnRlcmVkIGR1cmluZyBleHRyYWN0aW9uLiAqL1xuICBnZXRFeHRyYWN0b3JFcnJvcnMoKTogRXh0cmFjdG9yRXJyb3JbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0cmFjdG9yRXJyb3JzO1xuICB9XG59XG4iXX0=
@@ -1,126 +0,0 @@
1
- "use strict";
2
- /**
3
- * ExtractorRunner — Per-stage snapshot extraction.
4
- *
5
- * Coordinates traversal extractor invocations: step counting,
6
- * snapshot enrichment, error collection, and result storage.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ExtractorRunner = void 0;
10
- const RuntimeStructureManager_js_1 = require("./RuntimeStructureManager.js");
11
- class ExtractorRunner {
12
- extractor;
13
- enrichSnapshots;
14
- executionRuntime;
15
- logger;
16
- extractedResults = new Map();
17
- extractorErrors = [];
18
- stepCounter = 0;
19
- /** Current subflow context for metadata propagation. Set/cleared during subflow execution. */
20
- currentSubflowId;
21
- /** Current fork context for metadata propagation. Set/cleared during parallel children execution. */
22
- currentForkId;
23
- constructor(extractor, enrichSnapshots, executionRuntime, logger) {
24
- this.extractor = extractor;
25
- this.enrichSnapshots = enrichSnapshots;
26
- this.executionRuntime = executionRuntime;
27
- this.logger = logger;
28
- }
29
- /**
30
- * Call the extractor for a stage and store the result.
31
- * Increments stepCounter (1-based) before creating snapshot.
32
- */
33
- callExtractor(node, context, stagePath, stageOutput, errorInfo) {
34
- if (!this.extractor)
35
- return;
36
- this.stepCounter++;
37
- try {
38
- const snapshot = {
39
- node,
40
- context,
41
- stepNumber: this.stepCounter,
42
- structureMetadata: this.buildStructureMetadata(node),
43
- };
44
- if (this.enrichSnapshots) {
45
- try {
46
- snapshot.scopeState = { ...this.executionRuntime.globalStore.getState() };
47
- snapshot.debugInfo = {
48
- logs: { ...context.debug.logContext },
49
- errors: { ...context.debug.errorContext },
50
- metrics: { ...context.debug.metricContext },
51
- evals: { ...context.debug.evalContext },
52
- };
53
- if (context.debug.flowMessages.length > 0) {
54
- snapshot.debugInfo.flowMessages = [...context.debug.flowMessages];
55
- }
56
- snapshot.stageOutput = stageOutput;
57
- if (errorInfo) {
58
- snapshot.errorInfo = errorInfo;
59
- }
60
- snapshot.historyIndex = this.executionRuntime.executionHistory.list().length;
61
- }
62
- catch (enrichError) {
63
- this.logger.warn(`Enrichment error at stage '${stagePath}':`, { error: enrichError });
64
- }
65
- }
66
- const result = this.extractor(snapshot);
67
- if (result !== undefined && result !== null) {
68
- this.extractedResults.set(stagePath, result);
69
- }
70
- }
71
- catch (error) {
72
- this.logger.error(`Extractor error at stage '${stagePath}':`, { error });
73
- this.extractorErrors.push({
74
- stagePath,
75
- message: error?.message ?? String(error),
76
- error,
77
- });
78
- }
79
- }
80
- /**
81
- * Generate the stage path for extractor results.
82
- * Uses node.id combined with branchPath.
83
- */
84
- getStagePath(node, branchPath, contextStageName) {
85
- const baseName = node.id;
86
- const nodeId = contextStageName && contextStageName !== node.name ? contextStageName : baseName;
87
- if (!branchPath)
88
- return nodeId;
89
- return `${branchPath}.${nodeId}`;
90
- }
91
- buildStructureMetadata(node) {
92
- const metadata = {
93
- type: (0, RuntimeStructureManager_js_1.computeNodeType)(node),
94
- };
95
- if (node.isSubflowRoot) {
96
- metadata.isSubflowRoot = true;
97
- metadata.subflowId = node.subflowId;
98
- metadata.subflowName = node.subflowName;
99
- }
100
- else if (this.currentSubflowId) {
101
- metadata.subflowId = this.currentSubflowId;
102
- }
103
- if (this.currentForkId) {
104
- metadata.isParallelChild = true;
105
- metadata.parallelGroupId = this.currentForkId;
106
- }
107
- if (node.isStreaming) {
108
- metadata.streamId = node.streamId;
109
- }
110
- const hasDynamicChildren = Boolean(node.children?.length && !node.nextNodeSelector && node.fn);
111
- if (hasDynamicChildren) {
112
- metadata.isDynamic = true;
113
- }
114
- return metadata;
115
- }
116
- /** Returns extracted results collected during execution. */
117
- getExtractedResults() {
118
- return this.extractedResults;
119
- }
120
- /** Returns errors encountered during extraction. */
121
- getExtractorErrors() {
122
- return this.extractorErrors;
123
- }
124
- }
125
- exports.ExtractorRunner = ExtractorRunner;
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXh0cmFjdG9yUnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvRXh0cmFjdG9yUnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7O0FBWUgsNkVBQStEO0FBRS9ELE1BQWEsZUFBZTtJQUNULFNBQVMsQ0FBc0I7SUFDL0IsZUFBZSxDQUFVO0lBQ3pCLGdCQUFnQixDQUFvQjtJQUNwQyxNQUFNLENBQVU7SUFFekIsZ0JBQWdCLEdBQXlCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbkQsZUFBZSxHQUFxQixFQUFFLENBQUM7SUFDdkMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUV4Qiw4RkFBOEY7SUFDOUYsZ0JBQWdCLENBQVU7SUFFMUIscUdBQXFHO0lBQ3JHLGFBQWEsQ0FBVTtJQUV2QixZQUNFLFNBQXlDLEVBQ3pDLGVBQXdCLEVBQ3hCLGdCQUFtQyxFQUNuQyxNQUFlO1FBRWYsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQ1gsSUFBZSxFQUNmLE9BQXFCLEVBQ3JCLFNBQWlCLEVBQ2pCLFdBQXFCLEVBQ3JCLFNBQTZDO1FBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFFNUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFrQjtnQkFDOUIsSUFBSTtnQkFDSixPQUFPO2dCQUNQLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDNUIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLHNCQUFz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ciDigJQgUGVyLXN0YWdlIHNuYXBzaG90IGV4dHJhY3Rpb24uXG4gKlxuICogQ29vcmRpbmF0ZXMgdHJhdmVyc2FsIGV4dHJhY3RvciBpbnZvY2F0aW9uczogc3RlcCBjb3VudGluZyxcbiAqIHNuYXBzaG90IGVucmljaG1lbnQsIGVycm9yIGNvbGxlY3Rpb24sIGFuZCByZXN1bHQgc3RvcmFnZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4uLy4uL21lbW9yeS9TdGFnZUNvbnRleHQuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZU5vZGUgfSBmcm9tICcuLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUge1xuICBFeHRyYWN0b3JFcnJvcixcbiAgSUV4ZWN1dGlvblJ1bnRpbWUsXG4gIElMb2dnZXIsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSxcbiAgU3RhZ2VTbmFwc2hvdCxcbiAgVHJhdmVyc2FsRXh0cmFjdG9yLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBjb21wdXRlTm9kZVR5cGUgfSBmcm9tICcuL1J1bnRpbWVTdHJ1Y3R1cmVNYW5hZ2VyLmpzJztcblxuZXhwb3J0IGNsYXNzIEV4dHJhY3RvclJ1bm5lcjxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBleHRyYWN0b3I/OiBUcmF2ZXJzYWxFeHRyYWN0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5yaWNoU25hcHNob3RzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4ZWN1dGlvblJ1bnRpbWU6IElFeGVjdXRpb25SdW50aW1lO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogSUxvZ2dlcjtcblxuICBwcml2YXRlIGV4dHJhY3RlZFJlc3VsdHM6IE1hcDxzdHJpbmcsIHVua25vd24+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGV4dHJhY3RvckVycm9yczogRXh0cmFjdG9yRXJyb3JbXSA9IFtdO1xuICBwcml2YXRlIHN0ZXBDb3VudGVyID0gMDtcblxuICAvKiogQ3VycmVudCBzdWJmbG93IGNvbnRleHQgZm9yIG1ldGFkYXRhIHByb3BhZ2F0aW9uLiBTZXQvY2xlYXJlZCBkdXJpbmcgc3ViZmxvdyBleGVjdXRpb24uICovXG4gIGN1cnJlbnRTdWJmbG93SWQ/OiBzdHJpbmc7XG5cbiAgLyoqIEN1cnJlbnQgZm9yayBjb250ZXh0IGZvciBtZXRhZGF0YSBwcm9wYWdhdGlvbi4gU2V0L2NsZWFyZWQgZHVyaW5nIHBhcmFsbGVsIGNoaWxkcmVuIGV4ZWN1dGlvbi4gKi9cbiAgY3VycmVudEZvcmtJZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBleHRyYWN0b3I6IFRyYXZlcnNhbEV4dHJhY3RvciB8IHVuZGVmaW5lZCxcbiAgICBlbnJpY2hTbmFwc2hvdHM6IGJvb2xlYW4sXG4gICAgZXhlY3V0aW9uUnVudGltZTogSUV4ZWN1dGlvblJ1bnRpbWUsXG4gICAgbG9nZ2VyOiBJTG9nZ2VyLFxuICApIHtcbiAgICB0aGlzLmV4dHJhY3RvciA9IGV4dHJhY3RvcjtcbiAgICB0aGlzLmVucmljaFNuYXBzaG90cyA9IGVucmljaFNuYXBzaG90cztcbiAgICB0aGlzLmV4ZWN1dGlvblJ1bnRpbWUgPSBleGVjdXRpb25SdW50aW1lO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIGV4dHJhY3RvciBmb3IgYSBzdGFnZSBhbmQgc3RvcmUgdGhlIHJlc3VsdC5cbiAgICogSW5jcmVtZW50cyBzdGVwQ291bnRlciAoMS1iYXNlZCkgYmVmb3JlIGNyZWF0aW5nIHNuYXBzaG90LlxuICAgKi9cbiAgY2FsbEV4dHJhY3RvcihcbiAgICBub2RlOiBTdGFnZU5vZGUsXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIHN0YWdlUGF0aDogc3RyaW5nLFxuICAgIHN0YWdlT3V0cHV0PzogdW5rbm93bixcbiAgICBlcnJvckluZm8/OiB7IHR5cGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0sXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5leHRyYWN0b3IpIHJldHVybjtcblxuICAgIHRoaXMuc3RlcENvdW50ZXIrKztcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzbmFwc2hvdDogU3RhZ2VTbmFwc2hvdCA9IHtcbiAgICAgICAgbm9kZSxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RlcE51bWJlcjogdGhpcy5zdGVwQ291bnRlcixcbiAgICAgICAgc3RydWN0dXJlTWV0YWRhdGE6IHRoaXMuYnVpbGRTdHJ1Y3R1cmVNZXRhZGF0YShub2RlKSxcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLmVucmljaFNuYXBzaG90cykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNuYXBzaG90LnNjb3BlU3RhdGUgPSB7IC4uLnRoaXMuZXhlY3V0aW9uUnVudGltZS5nbG9iYWxTdG9yZS5nZXRTdGF0ZSgpIH07XG5cbiAgICAgICAgICBzbmFwc2hvdC5kZWJ1Z0luZm8gPSB7XG4gICAgICAgICAgICBsb2dzOiB7IC4uLmNvbnRleHQuZGVidWcubG9nQ29udGV4dCB9LFxuICAgICAgICAgICAgZXJyb3JzOiB7IC4uLmNvbnRleHQuZGVidWcuZXJyb3JDb250ZXh0IH0sXG4gICAgICAgICAgICBtZXRyaWNzOiB7IC4uLmNvbnRleHQuZGVidWcubWV0cmljQ29udGV4dCB9LFxuICAgICAgICAgICAgZXZhbHM6IHsgLi4uY29udGV4dC5kZWJ1Zy5ldmFsQ29udGV4dCB9LFxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGNvbnRleHQuZGVidWcuZmxvd01lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNuYXBzaG90LmRlYnVnSW5mby5mbG93TWVzc2FnZXMgPSBbLi4uY29udGV4dC5kZWJ1Zy5mbG93TWVzc2FnZXNdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNuYXBzaG90LnN0YWdlT3V0cHV0ID0gc3RhZ2VPdXRwdXQ7XG5cbiAgICAgICAgICBpZiAoZXJyb3JJbmZvKSB7XG4gICAgICAgICAgICBzbmFwc2hvdC5lcnJvckluZm8gPSBlcnJvckluZm87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc25hcHNob3QuaGlzdG9yeUluZGV4ID0gdGhpcy5leGVjdXRpb25SdW50aW1lLmV4ZWN1dGlvbkhpc3RvcnkubGlzdCgpLmxlbmd0aDtcbiAgICAgICAgfSBjYXRjaCAoZW5yaWNoRXJyb3I6IGFueSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYEVucmljaG1lbnQgZXJyb3IgYXQgc3RhZ2UgJyR7c3RhZ2VQYXRofSc6YCwgeyBlcnJvcjogZW5yaWNoRXJyb3IgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5leHRyYWN0b3Ioc25hcHNob3QpO1xuXG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZXh0cmFjdGVkUmVzdWx0cy5zZXQoc3RhZ2VQYXRoLCByZXN1bHQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBFeHRyYWN0b3IgZXJyb3IgYXQgc3RhZ2UgJyR7c3RhZ2VQYXRofSc6YCwgeyBlcnJvciB9KTtcbiAgICAgIHRoaXMuZXh0cmFjdG9yRXJyb3JzLnB1c2goe1xuICAgICAgICBzdGFnZVBhdGgsXG4gICAgICAgIG1lc3NhZ2U6IGVycm9yPy5tZXNzYWdlID8/IFN0cmluZyhlcnJvciksXG4gICAgICAgIGVycm9yLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBzdGFnZSBwYXRoIGZvciBleHRyYWN0b3IgcmVzdWx0cy5cbiAgICogVXNlcyBub2RlLmlkIGNvbWJpbmVkIHdpdGggYnJhbmNoUGF0aC5cbiAgICovXG4gIGdldFN0YWdlUGF0aChub2RlOiBTdGFnZU5vZGUsIGJyYW5jaFBhdGg/OiBzdHJpbmcsIGNvbnRleHRTdGFnZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2VOYW1lID0gbm9kZS5pZDtcbiAgICBjb25zdCBub2RlSWQgPSBjb250ZXh0U3RhZ2VOYW1lICYmIGNvbnRleHRTdGFnZU5hbWUgIT09IG5vZGUubmFtZSA/IGNvbnRleHRTdGFnZU5hbWUgOiBiYXNlTmFtZTtcbiAgICBpZiAoIWJyYW5jaFBhdGgpIHJldHVybiBub2RlSWQ7XG4gICAgcmV0dXJuIGAke2JyYW5jaFBhdGh9LiR7bm9kZUlkfWA7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3RydWN0dXJlTWV0YWRhdGEobm9kZTogU3RhZ2VOb2RlKTogUnVudGltZVN0cnVjdHVyZU1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXRhZGF0YTogUnVudGltZVN0cnVjdHVyZU1ldGFkYXRhID0ge1xuICAgICAgdHlwZTogY29tcHV0ZU5vZGVUeXBlKG5vZGUpLFxuICAgIH07XG5cbiAgICBpZiAobm9kZS5pc1N1YmZsb3dSb290KSB7XG4gICAgICBtZXRhZGF0YS5pc1N1YmZsb3dSb290ID0gdHJ1ZTtcbiAgICAgIG1ldGFkYXRhLnN1YmZsb3dJZCA9IG5vZGUuc3ViZmxvd0lkO1xuICAgICAgbWV0YWRhdGEuc3ViZmxvd05hbWUgPSBub2RlLnN1YmZsb3dOYW1lO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50U3ViZmxvd0lkKSB7XG4gICAgICBtZXRhZGF0YS5zdWJmbG93SWQgPSB0aGlzLmN1cnJlbnRTdWJmbG93SWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudEZvcmtJZCkge1xuICAgICAgbWV0YWRhdGEuaXNQYXJhbGxlbENoaWxkID0gdHJ1ZTtcbiAgICAgIG1ldGFkYXRhLnBhcmFsbGVsR3JvdXBJZCA9IHRoaXMuY3VycmVudEZvcmtJZDtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5pc1N0cmVhbWluZykge1xuICAgICAgbWV0YWRhdGEuc3RyZWFtSWQgPSBub2RlLnN0cmVhbUlkO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0R5bmFtaWNDaGlsZHJlbiA9IEJvb2xlYW4obm9kZS5jaGlsZHJlbj8ubGVuZ3RoICYmICFub2RlLm5leHROb2RlU2VsZWN0b3IgJiYgbm9kZS5mbik7XG4gICAgaWYgKGhhc0R5bmFtaWNDaGlsZHJlbikge1xuICAgICAgbWV0YWRhdGEuaXNEeW5hbWljID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH1cblxuICAvKiogUmV0dXJucyBleHRyYWN0ZWQgcmVzdWx0cyBjb2xsZWN0ZWQgZHVyaW5nIGV4ZWN1dGlvbi4gKi9cbiAgZ2V0RXh0cmFjdGVkUmVzdWx0czxUUmVzdWx0ID0gdW5rbm93bj4oKTogTWFwPHN0cmluZywgVFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLmV4dHJhY3RlZFJlc3VsdHMgYXMgTWFwPHN0cmluZywgVFJlc3VsdD47XG4gIH1cblxuICAvKiogUmV0dXJucyBlcnJvcnMgZW5jb3VudGVyZWQgZHVyaW5nIGV4dHJhY3Rpb24uICovXG4gIGdldEV4dHJhY3RvckVycm9ycygpOiBFeHRyYWN0b3JFcnJvcltdIHtcbiAgICByZXR1cm4gdGhpcy5leHRyYWN0b3JFcnJvcnM7XG4gIH1cbn1cbiJdfQ==
@@ -1,41 +0,0 @@
1
- /**
2
- * ExtractorRunner — Per-stage snapshot extraction.
3
- *
4
- * Coordinates traversal extractor invocations: step counting,
5
- * snapshot enrichment, error collection, and result storage.
6
- */
7
- import type { StageContext } from '../../memory/StageContext.js';
8
- import type { StageNode } from '../graph/StageNode.js';
9
- import type { ExtractorError, IExecutionRuntime, ILogger, TraversalExtractor } from '../types.js';
10
- export declare class ExtractorRunner<TOut = any, TScope = any> {
11
- private readonly extractor?;
12
- private readonly enrichSnapshots;
13
- private readonly executionRuntime;
14
- private readonly logger;
15
- private extractedResults;
16
- private extractorErrors;
17
- private stepCounter;
18
- /** Current subflow context for metadata propagation. Set/cleared during subflow execution. */
19
- currentSubflowId?: string;
20
- /** Current fork context for metadata propagation. Set/cleared during parallel children execution. */
21
- currentForkId?: string;
22
- constructor(extractor: TraversalExtractor | undefined, enrichSnapshots: boolean, executionRuntime: IExecutionRuntime, logger: ILogger);
23
- /**
24
- * Call the extractor for a stage and store the result.
25
- * Increments stepCounter (1-based) before creating snapshot.
26
- */
27
- callExtractor(node: StageNode, context: StageContext, stagePath: string, stageOutput?: unknown, errorInfo?: {
28
- type: string;
29
- message: string;
30
- }): void;
31
- /**
32
- * Generate the stage path for extractor results.
33
- * Uses node.id combined with branchPath.
34
- */
35
- getStagePath(node: StageNode, branchPath?: string, contextStageName?: string): string;
36
- private buildStructureMetadata;
37
- /** Returns extracted results collected during execution. */
38
- getExtractedResults<TResult = unknown>(): Map<string, TResult>;
39
- /** Returns errors encountered during extraction. */
40
- getExtractorErrors(): ExtractorError[];
41
- }