footprintjs 0.1.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.
- package/LICENSE +21 -0
- package/README.md +658 -0
- package/dist/advanced.js +84 -0
- package/dist/esm/advanced.js +26 -0
- package/dist/esm/index.js +30 -0
- package/dist/esm/lib/builder/FlowChartBuilder.js +809 -0
- package/dist/esm/lib/builder/index.js +12 -0
- package/dist/esm/lib/builder/types.js +9 -0
- package/dist/esm/lib/engine/graph/StageNode.js +38 -0
- package/dist/esm/lib/engine/graph/index.js +2 -0
- package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +116 -0
- package/dist/esm/lib/engine/handlers/ContinuationResolver.js +121 -0
- package/dist/esm/lib/engine/handlers/DeciderHandler.js +78 -0
- package/dist/esm/lib/engine/handlers/ExtractorRunner.js +117 -0
- package/dist/esm/lib/engine/handlers/NodeResolver.js +72 -0
- package/dist/esm/lib/engine/handlers/RuntimeStructureManager.js +154 -0
- package/dist/esm/lib/engine/handlers/SelectorHandler.js +79 -0
- package/dist/esm/lib/engine/handlers/StageRunner.js +86 -0
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +322 -0
- package/dist/esm/lib/engine/handlers/SubflowInputMapper.js +113 -0
- package/dist/esm/lib/engine/handlers/index.js +23 -0
- package/dist/esm/lib/engine/index.js +18 -0
- package/dist/esm/lib/engine/narrative/CombinedNarrativeBuilder.js +158 -0
- package/dist/esm/lib/engine/narrative/ControlFlowNarrativeGenerator.js +90 -0
- package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +24 -0
- package/dist/esm/lib/engine/narrative/index.js +4 -0
- package/dist/esm/lib/engine/narrative/types.js +11 -0
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +419 -0
- package/dist/esm/lib/engine/traversal/index.js +2 -0
- package/dist/esm/lib/engine/types.js +16 -0
- package/dist/esm/lib/memory/DiagnosticCollector.js +44 -0
- package/dist/esm/lib/memory/EventLog.js +44 -0
- package/dist/esm/lib/memory/SharedMemory.js +53 -0
- package/dist/esm/lib/memory/StageContext.js +221 -0
- package/dist/esm/lib/memory/TransactionBuffer.js +66 -0
- package/dist/esm/lib/memory/index.js +16 -0
- package/dist/esm/lib/memory/types.js +7 -0
- package/dist/esm/lib/memory/utils.js +155 -0
- package/dist/esm/lib/runner/ExecutionRuntime.js +64 -0
- package/dist/esm/lib/runner/FlowChartExecutor.js +108 -0
- package/dist/esm/lib/runner/index.js +3 -0
- package/dist/esm/lib/scope/ScopeFacade.js +175 -0
- package/dist/esm/lib/scope/index.js +19 -0
- package/dist/esm/lib/scope/protection/createProtectedScope.js +59 -0
- package/dist/esm/lib/scope/protection/index.js +3 -0
- package/dist/esm/lib/scope/protection/types.js +8 -0
- package/dist/esm/lib/scope/providers/baseStateCompatible.js +29 -0
- package/dist/esm/lib/scope/providers/guards.js +43 -0
- package/dist/esm/lib/scope/providers/index.js +7 -0
- package/dist/esm/lib/scope/providers/providers.js +18 -0
- package/dist/esm/lib/scope/providers/registry.js +36 -0
- package/dist/esm/lib/scope/providers/resolve.js +11 -0
- package/dist/esm/lib/scope/providers/types.js +8 -0
- package/dist/esm/lib/scope/recorders/DebugRecorder.js +81 -0
- package/dist/esm/lib/scope/recorders/MetricRecorder.js +81 -0
- package/dist/esm/lib/scope/recorders/NarrativeRecorder.js +167 -0
- package/dist/esm/lib/scope/recorders/index.js +4 -0
- package/dist/esm/lib/scope/state/installResolvers.js +15 -0
- package/dist/esm/lib/scope/state/zod/defineScopeFromZod.js +14 -0
- package/dist/esm/lib/scope/state/zod/index.js +5 -0
- package/dist/esm/lib/scope/state/zod/resolver.js +28 -0
- package/dist/esm/lib/scope/state/zod/schema/builder.js +16 -0
- package/dist/esm/lib/scope/state/zod/scopeFactory.js +156 -0
- package/dist/esm/lib/scope/state/zod/utils/validateHelper.js +97 -0
- package/dist/esm/lib/scope/types.js +9 -0
- package/dist/esm/types/advanced.d.ts +35 -0
- package/dist/esm/types/index.d.ts +22 -0
- package/dist/esm/types/lib/builder/FlowChartBuilder.d.ts +121 -0
- package/dist/esm/types/lib/builder/index.d.ts +9 -0
- package/dist/esm/types/lib/builder/types.d.ts +152 -0
- package/dist/esm/types/lib/engine/graph/StageNode.d.ts +78 -0
- package/dist/esm/types/lib/engine/graph/index.d.ts +2 -0
- package/dist/esm/types/lib/engine/handlers/ChildrenExecutor.d.ts +33 -0
- package/dist/esm/types/lib/engine/handlers/ContinuationResolver.d.ts +57 -0
- package/dist/esm/types/lib/engine/handlers/DeciderHandler.d.ts +34 -0
- package/dist/esm/types/lib/engine/handlers/ExtractorRunner.d.ts +41 -0
- package/dist/esm/types/lib/engine/handlers/NodeResolver.d.ts +26 -0
- package/dist/esm/types/lib/engine/handlers/RuntimeStructureManager.d.ts +36 -0
- package/dist/esm/types/lib/engine/handlers/SelectorHandler.d.ts +26 -0
- package/dist/esm/types/lib/engine/handlers/StageRunner.d.ts +17 -0
- package/dist/esm/types/lib/engine/handlers/SubflowExecutor.d.ts +57 -0
- package/dist/esm/types/lib/engine/handlers/SubflowInputMapper.d.ts +40 -0
- package/dist/esm/types/lib/engine/handlers/index.d.ts +15 -0
- package/dist/esm/types/lib/engine/index.d.ts +16 -0
- package/dist/esm/types/lib/engine/narrative/CombinedNarrativeBuilder.d.ts +33 -0
- package/dist/esm/types/lib/engine/narrative/ControlFlowNarrativeGenerator.d.ts +29 -0
- package/dist/esm/types/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +21 -0
- package/dist/esm/types/lib/engine/narrative/index.d.ts +5 -0
- package/dist/esm/types/lib/engine/narrative/types.d.ts +33 -0
- package/dist/esm/types/lib/engine/traversal/FlowchartTraverser.d.ts +87 -0
- package/dist/esm/types/lib/engine/traversal/index.d.ts +2 -0
- package/dist/esm/types/lib/engine/types.d.ts +208 -0
- package/dist/esm/types/lib/memory/DiagnosticCollector.d.ts +33 -0
- package/dist/esm/types/lib/memory/EventLog.d.ts +27 -0
- package/dist/esm/types/lib/memory/SharedMemory.d.ts +34 -0
- package/dist/esm/types/lib/memory/StageContext.d.ts +74 -0
- package/dist/esm/types/lib/memory/TransactionBuffer.d.ts +38 -0
- package/dist/esm/types/lib/memory/index.d.ts +13 -0
- package/dist/esm/types/lib/memory/types.d.ts +60 -0
- package/dist/esm/types/lib/memory/utils.d.ts +67 -0
- package/dist/esm/types/lib/runner/ExecutionRuntime.d.ts +39 -0
- package/dist/esm/types/lib/runner/FlowChartExecutor.d.ts +34 -0
- package/dist/esm/types/lib/runner/index.d.ts +3 -0
- package/dist/esm/types/lib/scope/ScopeFacade.d.ts +47 -0
- package/dist/esm/types/lib/scope/index.d.ts +23 -0
- package/dist/esm/types/lib/scope/protection/createProtectedScope.d.ts +9 -0
- package/dist/esm/types/lib/scope/protection/index.d.ts +2 -0
- package/dist/esm/types/lib/scope/protection/types.d.ts +13 -0
- package/dist/esm/types/lib/scope/providers/baseStateCompatible.d.ts +26 -0
- package/dist/esm/types/lib/scope/providers/guards.d.ts +14 -0
- package/dist/esm/types/lib/scope/providers/index.d.ts +6 -0
- package/dist/esm/types/lib/scope/providers/providers.d.ts +8 -0
- package/dist/esm/types/lib/scope/providers/registry.d.ts +11 -0
- package/dist/esm/types/lib/scope/providers/resolve.d.ts +8 -0
- package/dist/esm/types/lib/scope/providers/types.d.ts +40 -0
- package/dist/esm/types/lib/scope/recorders/DebugRecorder.d.ts +35 -0
- package/dist/esm/types/lib/scope/recorders/MetricRecorder.d.ts +36 -0
- package/dist/esm/types/lib/scope/recorders/NarrativeRecorder.d.ts +45 -0
- package/dist/esm/types/lib/scope/recorders/index.d.ts +7 -0
- package/dist/esm/types/lib/scope/state/installResolvers.d.ts +4 -0
- package/dist/esm/types/lib/scope/state/zod/defineScopeFromZod.d.ts +9 -0
- package/dist/esm/types/lib/scope/state/zod/index.d.ts +5 -0
- package/dist/esm/types/lib/scope/state/zod/resolver.d.ts +5 -0
- package/dist/esm/types/lib/scope/state/zod/schema/builder.d.ts +12 -0
- package/dist/esm/types/lib/scope/state/zod/scopeFactory.d.ts +9 -0
- package/dist/esm/types/lib/scope/state/zod/utils/validateHelper.d.ts +10 -0
- package/dist/esm/types/lib/scope/types.d.ts +53 -0
- package/dist/index.js +42 -0
- package/dist/lib/builder/FlowChartBuilder.js +817 -0
- package/dist/lib/builder/index.js +20 -0
- package/dist/lib/builder/types.js +10 -0
- package/dist/lib/engine/graph/StageNode.js +42 -0
- package/dist/lib/engine/graph/index.js +6 -0
- package/dist/lib/engine/handlers/ChildrenExecutor.js +120 -0
- package/dist/lib/engine/handlers/ContinuationResolver.js +125 -0
- package/dist/lib/engine/handlers/DeciderHandler.js +82 -0
- package/dist/lib/engine/handlers/ExtractorRunner.js +121 -0
- package/dist/lib/engine/handlers/NodeResolver.js +76 -0
- package/dist/lib/engine/handlers/RuntimeStructureManager.js +159 -0
- package/dist/lib/engine/handlers/SelectorHandler.js +83 -0
- package/dist/lib/engine/handlers/StageRunner.js +90 -0
- package/dist/lib/engine/handlers/SubflowExecutor.js +326 -0
- package/dist/lib/engine/handlers/SubflowInputMapper.js +121 -0
- package/dist/lib/engine/handlers/index.js +42 -0
- package/dist/lib/engine/index.js +40 -0
- package/dist/lib/engine/narrative/CombinedNarrativeBuilder.js +162 -0
- package/dist/lib/engine/narrative/ControlFlowNarrativeGenerator.js +94 -0
- package/dist/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +28 -0
- package/dist/lib/engine/narrative/index.js +10 -0
- package/dist/lib/engine/narrative/types.js +12 -0
- package/dist/lib/engine/traversal/FlowchartTraverser.js +423 -0
- package/dist/lib/engine/traversal/index.js +6 -0
- package/dist/lib/engine/types.js +19 -0
- package/dist/lib/memory/DiagnosticCollector.js +48 -0
- package/dist/lib/memory/EventLog.js +48 -0
- package/dist/lib/memory/SharedMemory.js +60 -0
- package/dist/lib/memory/StageContext.js +225 -0
- package/dist/lib/memory/TransactionBuffer.js +73 -0
- package/dist/lib/memory/index.js +34 -0
- package/dist/lib/memory/types.js +8 -0
- package/dist/lib/memory/utils.js +170 -0
- package/dist/lib/runner/ExecutionRuntime.js +68 -0
- package/dist/lib/runner/FlowChartExecutor.js +112 -0
- package/dist/lib/runner/index.js +8 -0
- package/dist/lib/scope/ScopeFacade.js +179 -0
- package/dist/lib/scope/index.js +44 -0
- package/dist/lib/scope/protection/createProtectedScope.js +64 -0
- package/dist/lib/scope/protection/index.js +8 -0
- package/dist/lib/scope/protection/types.js +9 -0
- package/dist/lib/scope/providers/baseStateCompatible.js +33 -0
- package/dist/lib/scope/providers/guards.js +49 -0
- package/dist/lib/scope/providers/index.js +21 -0
- package/dist/lib/scope/providers/providers.js +23 -0
- package/dist/lib/scope/providers/registry.js +42 -0
- package/dist/lib/scope/providers/resolve.js +16 -0
- package/dist/lib/scope/providers/types.js +9 -0
- package/dist/lib/scope/recorders/DebugRecorder.js +85 -0
- package/dist/lib/scope/recorders/MetricRecorder.js +85 -0
- package/dist/lib/scope/recorders/NarrativeRecorder.js +171 -0
- package/dist/lib/scope/recorders/index.js +10 -0
- package/dist/lib/scope/state/installResolvers.js +19 -0
- package/dist/lib/scope/state/zod/defineScopeFromZod.js +18 -0
- package/dist/lib/scope/state/zod/index.js +13 -0
- package/dist/lib/scope/state/zod/resolver.js +31 -0
- package/dist/lib/scope/state/zod/schema/builder.js +21 -0
- package/dist/lib/scope/state/zod/scopeFactory.js +160 -0
- package/dist/lib/scope/state/zod/utils/validateHelper.js +104 -0
- package/dist/lib/scope/types.js +10 -0
- package/dist/types/advanced.d.ts +35 -0
- package/dist/types/index.d.ts +22 -0
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +121 -0
- package/dist/types/lib/builder/index.d.ts +9 -0
- package/dist/types/lib/builder/types.d.ts +152 -0
- package/dist/types/lib/engine/graph/StageNode.d.ts +78 -0
- package/dist/types/lib/engine/graph/index.d.ts +2 -0
- package/dist/types/lib/engine/handlers/ChildrenExecutor.d.ts +33 -0
- package/dist/types/lib/engine/handlers/ContinuationResolver.d.ts +57 -0
- package/dist/types/lib/engine/handlers/DeciderHandler.d.ts +34 -0
- package/dist/types/lib/engine/handlers/ExtractorRunner.d.ts +41 -0
- package/dist/types/lib/engine/handlers/NodeResolver.d.ts +26 -0
- package/dist/types/lib/engine/handlers/RuntimeStructureManager.d.ts +36 -0
- package/dist/types/lib/engine/handlers/SelectorHandler.d.ts +26 -0
- package/dist/types/lib/engine/handlers/StageRunner.d.ts +17 -0
- package/dist/types/lib/engine/handlers/SubflowExecutor.d.ts +57 -0
- package/dist/types/lib/engine/handlers/SubflowInputMapper.d.ts +40 -0
- package/dist/types/lib/engine/handlers/index.d.ts +15 -0
- package/dist/types/lib/engine/index.d.ts +16 -0
- package/dist/types/lib/engine/narrative/CombinedNarrativeBuilder.d.ts +33 -0
- package/dist/types/lib/engine/narrative/ControlFlowNarrativeGenerator.d.ts +29 -0
- package/dist/types/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +21 -0
- package/dist/types/lib/engine/narrative/index.d.ts +5 -0
- package/dist/types/lib/engine/narrative/types.d.ts +33 -0
- package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +87 -0
- package/dist/types/lib/engine/traversal/index.d.ts +2 -0
- package/dist/types/lib/engine/types.d.ts +208 -0
- package/dist/types/lib/memory/DiagnosticCollector.d.ts +33 -0
- package/dist/types/lib/memory/EventLog.d.ts +27 -0
- package/dist/types/lib/memory/SharedMemory.d.ts +34 -0
- package/dist/types/lib/memory/StageContext.d.ts +74 -0
- package/dist/types/lib/memory/TransactionBuffer.d.ts +38 -0
- package/dist/types/lib/memory/index.d.ts +13 -0
- package/dist/types/lib/memory/types.d.ts +60 -0
- package/dist/types/lib/memory/utils.d.ts +67 -0
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +39 -0
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +34 -0
- package/dist/types/lib/runner/index.d.ts +3 -0
- package/dist/types/lib/scope/ScopeFacade.d.ts +47 -0
- package/dist/types/lib/scope/index.d.ts +23 -0
- package/dist/types/lib/scope/protection/createProtectedScope.d.ts +9 -0
- package/dist/types/lib/scope/protection/index.d.ts +2 -0
- package/dist/types/lib/scope/protection/types.d.ts +13 -0
- package/dist/types/lib/scope/providers/baseStateCompatible.d.ts +26 -0
- package/dist/types/lib/scope/providers/guards.d.ts +14 -0
- package/dist/types/lib/scope/providers/index.d.ts +6 -0
- package/dist/types/lib/scope/providers/providers.d.ts +8 -0
- package/dist/types/lib/scope/providers/registry.d.ts +11 -0
- package/dist/types/lib/scope/providers/resolve.d.ts +8 -0
- package/dist/types/lib/scope/providers/types.d.ts +40 -0
- package/dist/types/lib/scope/recorders/DebugRecorder.d.ts +35 -0
- package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +36 -0
- package/dist/types/lib/scope/recorders/NarrativeRecorder.d.ts +45 -0
- package/dist/types/lib/scope/recorders/index.d.ts +7 -0
- package/dist/types/lib/scope/state/installResolvers.d.ts +4 -0
- package/dist/types/lib/scope/state/zod/defineScopeFromZod.d.ts +9 -0
- package/dist/types/lib/scope/state/zod/index.d.ts +5 -0
- package/dist/types/lib/scope/state/zod/resolver.d.ts +5 -0
- package/dist/types/lib/scope/state/zod/schema/builder.d.ts +12 -0
- package/dist/types/lib/scope/state/zod/scopeFactory.d.ts +9 -0
- package/dist/types/lib/scope/state/zod/utils/validateHelper.d.ts +10 -0
- package/dist/types/lib/scope/types.d.ts +53 -0
- package/package.json +148 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CombinedNarrativeBuilder — Merges flow-level narrative with data-level operations.
|
|
3
|
+
*
|
|
4
|
+
* ControlFlowNarrativeGenerator captures FLOW — what stages ran, which branches were taken.
|
|
5
|
+
* NarrativeRecorder (scope/) captures DATA — what values were read, written, updated.
|
|
6
|
+
*
|
|
7
|
+
* This builder weaves both into a single unified narrative:
|
|
8
|
+
* Stage 1: "Receive Application"
|
|
9
|
+
* Step 1: Write applicantName = 'Bob'
|
|
10
|
+
* [Condition]: risk tier is high → chose "Reject Application"
|
|
11
|
+
*/
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Builder
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
export class CombinedNarrativeBuilder {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
var _a, _b, _c;
|
|
18
|
+
this.options = {
|
|
19
|
+
includeStepNumbers: (_a = options === null || options === void 0 ? void 0 : options.includeStepNumbers) !== null && _a !== void 0 ? _a : true,
|
|
20
|
+
includeValues: (_b = options === null || options === void 0 ? void 0 : options.includeValues) !== null && _b !== void 0 ? _b : true,
|
|
21
|
+
indent: (_c = options === null || options === void 0 ? void 0 : options.indent) !== null && _c !== void 0 ? _c : ' ',
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
buildEntries(flowSentences, recorder) {
|
|
25
|
+
const entries = [];
|
|
26
|
+
const stageData = recorder.getStageData();
|
|
27
|
+
const usedStages = new Set();
|
|
28
|
+
let stageCounter = 0;
|
|
29
|
+
for (const sentence of flowSentences) {
|
|
30
|
+
const parsed = this.parseSentence(sentence);
|
|
31
|
+
if (parsed.type === 'stage') {
|
|
32
|
+
stageCounter++;
|
|
33
|
+
entries.push({
|
|
34
|
+
type: 'stage',
|
|
35
|
+
text: `Stage ${stageCounter}: ${sentence}`,
|
|
36
|
+
depth: 0,
|
|
37
|
+
stageName: parsed.stageName,
|
|
38
|
+
});
|
|
39
|
+
if (parsed.stageName) {
|
|
40
|
+
const data = this.findStageData(parsed.stageName, stageData);
|
|
41
|
+
if (data) {
|
|
42
|
+
usedStages.add(data.stageName);
|
|
43
|
+
this.addStepEntries(entries, data);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (parsed.type === 'condition') {
|
|
48
|
+
entries.push({ type: 'condition', text: `[Condition]: ${sentence}`, depth: 0 });
|
|
49
|
+
if (parsed.stageName) {
|
|
50
|
+
const data = this.findStageData(parsed.stageName, stageData);
|
|
51
|
+
if (data) {
|
|
52
|
+
usedStages.add(data.stageName);
|
|
53
|
+
this.addStepEntries(entries, data);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (parsed.type === 'fork') {
|
|
58
|
+
entries.push({ type: 'fork', text: `[Parallel]: ${sentence}`, depth: 0 });
|
|
59
|
+
}
|
|
60
|
+
else if (parsed.type === 'subflow') {
|
|
61
|
+
entries.push({ type: 'subflow', text: sentence, depth: 0 });
|
|
62
|
+
}
|
|
63
|
+
else if (parsed.type === 'loop') {
|
|
64
|
+
entries.push({ type: 'loop', text: sentence, depth: 0 });
|
|
65
|
+
}
|
|
66
|
+
else if (parsed.type === 'break') {
|
|
67
|
+
entries.push({ type: 'break', text: sentence, depth: 0 });
|
|
68
|
+
}
|
|
69
|
+
else if (parsed.type === 'error') {
|
|
70
|
+
entries.push({ type: 'error', text: `[Error]: ${sentence}`, depth: 0 });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Add stages with operations that weren't referenced in flow sentences
|
|
74
|
+
for (const [stageName, data] of Array.from(stageData.entries())) {
|
|
75
|
+
if (!usedStages.has(stageName) && data.operations.length > 0) {
|
|
76
|
+
stageCounter++;
|
|
77
|
+
entries.push({ type: 'stage', text: `Stage ${stageCounter}: ${stageName}`, depth: 0, stageName });
|
|
78
|
+
this.addStepEntries(entries, data);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return entries;
|
|
82
|
+
}
|
|
83
|
+
build(flowSentences, recorder) {
|
|
84
|
+
return this.buildEntries(flowSentences, recorder).map((entry) => {
|
|
85
|
+
const indent = this.options.indent.repeat(entry.depth);
|
|
86
|
+
return `${indent}${entry.text}`;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// ── Private helpers ──
|
|
90
|
+
addStepEntries(entries, data) {
|
|
91
|
+
for (const op of data.operations) {
|
|
92
|
+
const stepPrefix = this.options.includeStepNumbers && op.stepNumber ? `Step ${op.stepNumber}: ` : '';
|
|
93
|
+
let text;
|
|
94
|
+
if (op.type === 'read') {
|
|
95
|
+
text =
|
|
96
|
+
this.options.includeValues && op.valueSummary
|
|
97
|
+
? `${stepPrefix}Read ${op.key} = ${op.valueSummary}`
|
|
98
|
+
: `${stepPrefix}Read ${op.key}`;
|
|
99
|
+
}
|
|
100
|
+
else if (op.operation === 'delete') {
|
|
101
|
+
text = `${stepPrefix}Delete ${op.key}`;
|
|
102
|
+
}
|
|
103
|
+
else if (op.operation === 'update') {
|
|
104
|
+
text = this.options.includeValues
|
|
105
|
+
? `${stepPrefix}Update ${op.key} = ${op.valueSummary}`
|
|
106
|
+
: `${stepPrefix}Update ${op.key}`;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
text = this.options.includeValues
|
|
110
|
+
? `${stepPrefix}Write ${op.key} = ${op.valueSummary}`
|
|
111
|
+
: `${stepPrefix}Write ${op.key}`;
|
|
112
|
+
}
|
|
113
|
+
entries.push({ type: 'step', text, depth: 1, stageName: data.stageName, stepNumber: op.stepNumber });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
findStageData(name, stageData) {
|
|
117
|
+
if (stageData.has(name))
|
|
118
|
+
return stageData.get(name);
|
|
119
|
+
for (const [stageName, data] of Array.from(stageData.entries())) {
|
|
120
|
+
if (stageName.toLowerCase().includes(name.toLowerCase()) ||
|
|
121
|
+
name.toLowerCase().includes(stageName.toLowerCase())) {
|
|
122
|
+
return data;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
parseSentence(sentence) {
|
|
128
|
+
var _a, _b, _c, _d;
|
|
129
|
+
if (sentence.startsWith('The process began')) {
|
|
130
|
+
const match = sentence.match(/The process began(?:: (.+)| with (.+))\./);
|
|
131
|
+
return { type: 'stage', stageName: (_a = match === null || match === void 0 ? void 0 : match[2]) === null || _a === void 0 ? void 0 : _a.trim() };
|
|
132
|
+
}
|
|
133
|
+
if (sentence.startsWith('Next')) {
|
|
134
|
+
const match = sentence.match(/Next(?:,? it moved on to (.+)| step: (.+))\./);
|
|
135
|
+
return { type: 'stage', stageName: (_b = match === null || match === void 0 ? void 0 : match[1]) === null || _b === void 0 ? void 0 : _b.trim() };
|
|
136
|
+
}
|
|
137
|
+
if (sentence.includes('decision was made') || sentence.includes('it chose') || sentence.includes('so it chose')) {
|
|
138
|
+
const match = sentence.match(/chose (.+)\./);
|
|
139
|
+
return { type: 'condition', stageName: (_c = match === null || match === void 0 ? void 0 : match[1]) === null || _c === void 0 ? void 0 : _c.trim() };
|
|
140
|
+
}
|
|
141
|
+
if (sentence.startsWith('It ') && sentence.includes('chose')) {
|
|
142
|
+
const match = sentence.match(/chose (.+)\./);
|
|
143
|
+
return { type: 'condition', stageName: (_d = match === null || match === void 0 ? void 0 : match[1]) === null || _d === void 0 ? void 0 : _d.trim() };
|
|
144
|
+
}
|
|
145
|
+
if (sentence.includes('paths were executed in parallel') || sentence.includes('paths were selected'))
|
|
146
|
+
return { type: 'fork' };
|
|
147
|
+
if (sentence.startsWith('Entering') || sentence.startsWith('Exiting'))
|
|
148
|
+
return { type: 'subflow' };
|
|
149
|
+
if (sentence.startsWith('On pass'))
|
|
150
|
+
return { type: 'loop' };
|
|
151
|
+
if (sentence.startsWith('Execution stopped'))
|
|
152
|
+
return { type: 'break' };
|
|
153
|
+
if (sentence.startsWith('An error occurred'))
|
|
154
|
+
return { type: 'error' };
|
|
155
|
+
return { type: 'stage' };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tYmluZWROYXJyYXRpdmVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvbmFycmF0aXZlL0NvbWJpbmVkTmFycmF0aXZlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBc0JILDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsOEVBQThFO0FBRTlFLE1BQU0sT0FBTyx3QkFBd0I7SUFHbkMsWUFBWSxPQUFrQzs7UUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLGtCQUFrQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGtCQUFrQixtQ0FBSSxJQUFJO1lBQ3ZELGFBQWEsRUFBRSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxhQUFhLG1DQUFJLElBQUk7WUFDN0MsTUFBTSxFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sbUNBQUksSUFBSTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxhQUF1QixFQUFFLFFBQTJCO1FBQy9ELE1BQU0sT0FBTyxHQUE2QixFQUFFLENBQUM7UUFDN0MsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDckMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLEtBQUssTUFBTSxRQUFRLElBQUksYUFBYSxFQUFFLENBQUM7WUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUU1QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzVCLFlBQVksRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsSUFBSSxFQUFFLE9BQU87b0JBQ2IsSUFBSSxFQUFFLFNBQVMsWUFBWSxLQUFLLFFBQVEsRUFBRTtvQkFDMUMsS0FBSyxFQUFFLENBQUM7b0JBQ1IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO2lCQUM1QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDN0QsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDVCxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3JDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUM3RCxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNULFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDckMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxlQUFlLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlELENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNELENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRSxDQUFDO1FBQ0gsQ0FBQztRQUVELHVFQUF1RTtRQUN2RSxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxVQUFVLENB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QyxTQUFTLENBQUM7WUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzVELElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztZQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDdkUsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDO1lBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN2RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tYmluZWROYXJyYXRpdmVCdWlsZGVyIOKAlCBNZXJnZXMgZmxvdy1sZXZlbCBuYXJyYXRpdmUgd2l0aCBkYXRhLWxldmVsIG9wZXJhdGlvbnMuXG4gKlxuICogQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IgY2FwdHVyZXMgRkxPVyDigJQgd2hhdCBzdGFnZXMgcmFuLCB3aGljaCBicmFuY2hlcyB3ZXJlIHRha2VuLlxuICogTmFycmF0aXZlUmVjb3JkZXIgKHNjb3BlLykgY2FwdHVyZXMgREFUQSDigJQgd2hhdCB2YWx1ZXMgd2VyZSByZWFkLCB3cml0dGVuLCB1cGRhdGVkLlxuICpcbiAqIFRoaXMgYnVpbGRlciB3ZWF2ZXMgYm90aCBpbnRvIGEgc2luZ2xlIHVuaWZpZWQgbmFycmF0aXZlOlxuICogICBTdGFnZSAxOiBcIlJlY2VpdmUgQXBwbGljYXRpb25cIlxuICogICAgIFN0ZXAgMTogV3JpdGUgYXBwbGljYW50TmFtZSA9ICdCb2InXG4gKiAgIFtDb25kaXRpb25dOiByaXNrIHRpZXIgaXMgaGlnaCDihpIgY2hvc2UgXCJSZWplY3QgQXBwbGljYXRpb25cIlxuICovXG5cbmltcG9ydCB0eXBlIHsgTmFycmF0aXZlUmVjb3JkZXIsIFN0YWdlTmFycmF0aXZlRGF0YSB9IGZyb20gJy4uLy4uL3Njb3BlL3JlY29yZGVycy9OYXJyYXRpdmVSZWNvcmRlcic7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVHlwZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbWJpbmVkTmFycmF0aXZlRW50cnkge1xuICB0eXBlOiAnc3RhZ2UnIHwgJ3N0ZXAnIHwgJ2NvbmRpdGlvbicgfCAnZm9yaycgfCAnc3ViZmxvdycgfCAnbG9vcCcgfCAnYnJlYWsnIHwgJ2Vycm9yJztcbiAgdGV4dDogc3RyaW5nO1xuICBkZXB0aDogbnVtYmVyO1xuICBzdGFnZU5hbWU/OiBzdHJpbmc7XG4gIHN0ZXBOdW1iZXI/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tYmluZWROYXJyYXRpdmVPcHRpb25zIHtcbiAgaW5jbHVkZVN0ZXBOdW1iZXJzPzogYm9vbGVhbjtcbiAgaW5jbHVkZVZhbHVlcz86IGJvb2xlYW47XG4gIGluZGVudD86IHN0cmluZztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCdWlsZGVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNsYXNzIENvbWJpbmVkTmFycmF0aXZlQnVpbGRlciB7XG4gIHByaXZhdGUgb3B0aW9uczogUmVxdWlyZWQ8Q29tYmluZWROYXJyYXRpdmVPcHRpb25zPjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogQ29tYmluZWROYXJyYXRpdmVPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgaW5jbHVkZVN0ZXBOdW1iZXJzOiBvcHRpb25zPy5pbmNsdWRlU3RlcE51bWJlcnMgPz8gdHJ1ZSxcbiAgICAgIGluY2x1ZGVWYWx1ZXM6IG9wdGlvbnM/LmluY2x1ZGVWYWx1ZXMgPz8gdHJ1ZSxcbiAgICAgIGluZGVudDogb3B0aW9ucz8uaW5kZW50ID8/ICcgICcsXG4gICAgfTtcbiAgfVxuXG4gIGJ1aWxkRW50cmllcyhmbG93U2VudGVuY2VzOiBzdHJpbmdbXSwgcmVjb3JkZXI6IE5hcnJhdGl2ZVJlY29yZGVyKTogQ29tYmluZWROYXJyYXRpdmVFbnRyeVtdIHtcbiAgICBjb25zdCBlbnRyaWVzOiBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBzdGFnZURhdGEgPSByZWNvcmRlci5nZXRTdGFnZURhdGEoKTtcbiAgICBjb25zdCB1c2VkU3RhZ2VzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgbGV0IHN0YWdlQ291bnRlciA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IHNlbnRlbmNlIG9mIGZsb3dTZW50ZW5jZXMpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VTZW50ZW5jZShzZW50ZW5jZSk7XG5cbiAgICAgIGlmIChwYXJzZWQudHlwZSA9PT0gJ3N0YWdlJykge1xuICAgICAgICBzdGFnZUNvdW50ZXIrKztcbiAgICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnc3RhZ2UnLFxuICAgICAgICAgIHRleHQ6IGBTdGFnZSAke3N0YWdlQ291bnRlcn06ICR7c2VudGVuY2V9YCxcbiAgICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgICBzdGFnZU5hbWU6IHBhcnNlZC5zdGFnZU5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocGFyc2VkLnN0YWdlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZpbmRTdGFnZURhdGEocGFyc2VkLnN0YWdlTmFtZSwgc3RhZ2VEYXRhKTtcbiAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdXNlZFN0YWdlcy5hZGQoZGF0YS5zdGFnZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5hZGRTdGVwRW50cmllcyhlbnRyaWVzLCBkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFyc2VkLnR5cGUgPT09ICdjb25kaXRpb24nKSB7XG4gICAgICAgIGVudHJpZXMucHVzaCh7IHR5cGU6ICdjb25kaXRpb24nLCB0ZXh0OiBgW0NvbmRpdGlvbl06ICR7c2VudGVuY2V9YCwgZGVwdGg6IDAgfSk7XG4gICAgICAgIGlmIChwYXJzZWQuc3RhZ2VOYW1lKSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZmluZFN0YWdlRGF0YShwYXJzZWQuc3RhZ2VOYW1lLCBzdGFnZURhdGEpO1xuICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICB1c2VkU3RhZ2VzLmFkZChkYXRhLnN0YWdlTmFtZSk7XG4gICAgICAgICAgICB0aGlzLmFkZFN0ZXBFbnRyaWVzKGVudHJpZXMsIGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXJzZWQudHlwZSA9PT0gJ2ZvcmsnKSB7XG4gICAgICAgIGVudHJpZXMucHVzaCh7IHR5cGU6ICdmb3JrJywgdGV4dDogYFtQYXJhbGxlbF06ICR7c2VudGVuY2V9YCwgZGVwdGg6IDAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlZC50eXBlID09PSAnc3ViZmxvdycpIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHsgdHlwZTogJ3N1YmZsb3cnLCB0ZXh0OiBzZW50ZW5jZSwgZGVwdGg6IDAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlZC50eXBlID09PSAnbG9vcCcpIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHsgdHlwZTogJ2xvb3AnLCB0ZXh0OiBzZW50ZW5jZSwgZGVwdGg6IDAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlZC50eXBlID09PSAnYnJlYWsnKSB7XG4gICAgICAgIGVudHJpZXMucHVzaCh7IHR5cGU6ICdicmVhaycsIHRleHQ6IHNlbnRlbmNlLCBkZXB0aDogMCB9KTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VkLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHsgdHlwZTogJ2Vycm9yJywgdGV4dDogYFtFcnJvcl06ICR7c2VudGVuY2V9YCwgZGVwdGg6IDAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIHN0YWdlcyB3aXRoIG9wZXJhdGlvbnMgdGhhdCB3ZXJlbid0IHJlZmVyZW5jZWQgaW4gZmxvdyBzZW50ZW5jZXNcbiAgICBmb3IgKGNvbnN0IFtzdGFnZU5hbWUsIGRhdGFdIG9mIEFycmF5LmZyb20oc3RhZ2VEYXRhLmVudHJpZXMoKSkpIHtcbiAgICAgIGlmICghdXNlZFN0YWdlcy5oYXMoc3RhZ2VOYW1lKSAmJiBkYXRhLm9wZXJhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBzdGFnZUNvdW50ZXIrKztcbiAgICAgICAgZW50cmllcy5wdXNoKHsgdHlwZTogJ3N0YWdlJywgdGV4dDogYFN0YWdlICR7c3RhZ2VDb3VudGVyfTogJHtzdGFnZU5hbWV9YCwgZGVwdGg6IDAsIHN0YWdlTmFtZSB9KTtcbiAgICAgICAgdGhpcy5hZGRTdGVwRW50cmllcyhlbnRyaWVzLCBkYXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZW50cmllcztcbiAgfVxuXG4gIGJ1aWxkKGZsb3dTZW50ZW5jZXM6IHN0cmluZ1tdLCByZWNvcmRlcjogTmFycmF0aXZlUmVjb3JkZXIpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRFbnRyaWVzKGZsb3dTZW50ZW5jZXMsIHJlY29yZGVyKS5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBpbmRlbnQgPSB0aGlzLm9wdGlvbnMuaW5kZW50LnJlcGVhdChlbnRyeS5kZXB0aCk7XG4gICAgICByZXR1cm4gYCR7aW5kZW50fSR7ZW50cnkudGV4dH1gO1xuICAgIH0pO1xuICB9XG5cbiAgLy8g4pSA4pSAIFByaXZhdGUgaGVscGVycyDilIDilIBcblxuICBwcml2YXRlIGFkZFN0ZXBFbnRyaWVzKGVudHJpZXM6IENvbWJpbmVkTmFycmF0aXZlRW50cnlbXSwgZGF0YTogU3RhZ2VOYXJyYXRpdmVEYXRhKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBvcCBvZiBkYXRhLm9wZXJhdGlvbnMpIHtcbiAgICAgIGNvbnN0IHN0ZXBQcmVmaXggPSB0aGlzLm9wdGlvbnMuaW5jbHVkZVN0ZXBOdW1iZXJzICYmIG9wLnN0ZXBOdW1iZXIgPyBgU3RlcCAke29wLnN0ZXBOdW1iZXJ9OiBgIDogJyc7XG5cbiAgICAgIGxldCB0ZXh0OiBzdHJpbmc7XG4gICAgICBpZiAob3AudHlwZSA9PT0gJ3JlYWQnKSB7XG4gICAgICAgIHRleHQgPVxuICAgICAgICAgIHRoaXMub3B0aW9ucy5pbmNsdWRlVmFsdWVzICYmIG9wLnZhbHVlU3VtbWFyeVxuICAgICAgICAgICAgPyBgJHtzdGVwUHJlZml4fVJlYWQgJHtvcC5rZXl9ID0gJHtvcC52YWx1ZVN1bW1hcnl9YFxuICAgICAgICAgICAgOiBgJHtzdGVwUHJlZml4fVJlYWQgJHtvcC5rZXl9YDtcbiAgICAgIH0gZWxzZSBpZiAob3Aub3BlcmF0aW9uID09PSAnZGVsZXRlJykge1xuICAgICAgICB0ZXh0ID0gYCR7c3RlcFByZWZpeH1EZWxldGUgJHtvcC5rZXl9YDtcbiAgICAgIH0gZWxzZSBpZiAob3Aub3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgICB0ZXh0ID0gdGhpcy5vcHRpb25zLmluY2x1ZGVWYWx1ZXNcbiAgICAgICAgICA/IGAke3N0ZXBQcmVmaXh9VXBkYXRlICR7b3Aua2V5fSA9ICR7b3AudmFsdWVTdW1tYXJ5fWBcbiAgICAgICAgICA6IGAke3N0ZXBQcmVmaXh9VXBkYXRlICR7b3Aua2V5fWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0ID0gdGhpcy5vcHRpb25zLmluY2x1ZGVWYWx1ZXNcbiAgICAgICAgICA/IGAke3N0ZXBQcmVmaXh9V3JpdGUgJHtvcC5rZXl9ID0gJHtvcC52YWx1ZVN1bW1hcnl9YFxuICAgICAgICAgIDogYCR7c3RlcFByZWZpeH1Xcml0ZSAke29wLmtleX1gO1xuICAgICAgfVxuXG4gICAgICBlbnRyaWVzLnB1c2goeyB0eXBlOiAnc3RlcCcsIHRleHQsIGRlcHRoOiAxLCBzdGFnZU5hbWU6IGRhdGEuc3RhZ2VOYW1lLCBzdGVwTnVtYmVyOiBvcC5zdGVwTnVtYmVyIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluZFN0YWdlRGF0YShuYW1lOiBzdHJpbmcsIHN0YWdlRGF0YTogTWFwPHN0cmluZywgU3RhZ2VOYXJyYXRpdmVEYXRhPik6IFN0YWdlTmFycmF0aXZlRGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHN0YWdlRGF0YS5oYXMobmFtZSkpIHJldHVybiBzdGFnZURhdGEuZ2V0KG5hbWUpO1xuICAgIGZvciAoY29uc3QgW3N0YWdlTmFtZSwgZGF0YV0gb2YgQXJyYXkuZnJvbShzdGFnZURhdGEuZW50cmllcygpKSkge1xuICAgICAgaWYgKFxuICAgICAgICBzdGFnZU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuYW1lLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgIG5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzdGFnZU5hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VTZW50ZW5jZShzZW50ZW5jZTogc3RyaW5nKTogeyB0eXBlOiBzdHJpbmc7IHN0YWdlTmFtZT86IHN0cmluZyB9IHtcbiAgICBpZiAoc2VudGVuY2Uuc3RhcnRzV2l0aCgnVGhlIHByb2Nlc3MgYmVnYW4nKSkge1xuICAgICAgY29uc3QgbWF0Y2ggPSBzZW50ZW5jZS5tYXRjaCgvVGhlIHByb2Nlc3MgYmVnYW4oPzo6ICguKyl8IHdpdGggKC4rKSlcXC4vKTtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzdGFnZScsIHN0YWdlTmFtZTogbWF0Y2g/LlsyXT8udHJpbSgpIH07XG4gICAgfVxuICAgIGlmIChzZW50ZW5jZS5zdGFydHNXaXRoKCdOZXh0JykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gc2VudGVuY2UubWF0Y2goL05leHQoPzosPyBpdCBtb3ZlZCBvbiB0byAoLispfCBzdGVwOiAoLispKVxcLi8pO1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ3N0YWdlJywgc3RhZ2VOYW1lOiBtYXRjaD8uWzFdPy50cmltKCkgfTtcbiAgICB9XG4gICAgaWYgKHNlbnRlbmNlLmluY2x1ZGVzKCdkZWNpc2lvbiB3YXMgbWFkZScpIHx8IHNlbnRlbmNlLmluY2x1ZGVzKCdpdCBjaG9zZScpIHx8IHNlbnRlbmNlLmluY2x1ZGVzKCdzbyBpdCBjaG9zZScpKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHNlbnRlbmNlLm1hdGNoKC9jaG9zZSAoLispXFwuLyk7XG4gICAgICByZXR1cm4geyB0eXBlOiAnY29uZGl0aW9uJywgc3RhZ2VOYW1lOiBtYXRjaD8uWzFdPy50cmltKCkgfTtcbiAgICB9XG4gICAgaWYgKHNlbnRlbmNlLnN0YXJ0c1dpdGgoJ0l0ICcpICYmIHNlbnRlbmNlLmluY2x1ZGVzKCdjaG9zZScpKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHNlbnRlbmNlLm1hdGNoKC9jaG9zZSAoLispXFwuLyk7XG4gICAgICByZXR1cm4geyB0eXBlOiAnY29uZGl0aW9uJywgc3RhZ2VOYW1lOiBtYXRjaD8uWzFdPy50cmltKCkgfTtcbiAgICB9XG4gICAgaWYgKHNlbnRlbmNlLmluY2x1ZGVzKCdwYXRocyB3ZXJlIGV4ZWN1dGVkIGluIHBhcmFsbGVsJykgfHwgc2VudGVuY2UuaW5jbHVkZXMoJ3BhdGhzIHdlcmUgc2VsZWN0ZWQnKSlcbiAgICAgIHJldHVybiB7IHR5cGU6ICdmb3JrJyB9O1xuICAgIGlmIChzZW50ZW5jZS5zdGFydHNXaXRoKCdFbnRlcmluZycpIHx8IHNlbnRlbmNlLnN0YXJ0c1dpdGgoJ0V4aXRpbmcnKSkgcmV0dXJuIHsgdHlwZTogJ3N1YmZsb3cnIH07XG4gICAgaWYgKHNlbnRlbmNlLnN0YXJ0c1dpdGgoJ09uIHBhc3MnKSkgcmV0dXJuIHsgdHlwZTogJ2xvb3AnIH07XG4gICAgaWYgKHNlbnRlbmNlLnN0YXJ0c1dpdGgoJ0V4ZWN1dGlvbiBzdG9wcGVkJykpIHJldHVybiB7IHR5cGU6ICdicmVhaycgfTtcbiAgICBpZiAoc2VudGVuY2Uuc3RhcnRzV2l0aCgnQW4gZXJyb3Igb2NjdXJyZWQnKSkgcmV0dXJuIHsgdHlwZTogJ2Vycm9yJyB9O1xuICAgIHJldHVybiB7IHR5cGU6ICdzdGFnZScgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ControlFlowNarrativeGenerator — Active implementation of IControlFlowNarrative.
|
|
3
|
+
*
|
|
4
|
+
* Converts traversal events into plain-English sentences at traversal time.
|
|
5
|
+
* Produces a human-readable story as a first-class output, enabling any consumer
|
|
6
|
+
* (cheaper LLM, follow-up agent, logging system) to understand what happened
|
|
7
|
+
* without parsing technical structures.
|
|
8
|
+
*
|
|
9
|
+
* This is the FLOW narrative — it captures control flow decisions.
|
|
10
|
+
* The DATA narrative comes from scope/recorders/NarrativeRecorder.
|
|
11
|
+
* CombinedNarrativeBuilder merges both into one story.
|
|
12
|
+
*/
|
|
13
|
+
export class ControlFlowNarrativeGenerator {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.sentences = [];
|
|
16
|
+
this.isFirstStage = true;
|
|
17
|
+
}
|
|
18
|
+
onStageExecuted(stageName, displayName, description) {
|
|
19
|
+
if (this.isFirstStage) {
|
|
20
|
+
if (description) {
|
|
21
|
+
this.sentences.push(`The process began: ${description}.`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const name = displayName || stageName;
|
|
25
|
+
this.sentences.push(`The process began with ${name}.`);
|
|
26
|
+
}
|
|
27
|
+
this.isFirstStage = false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
onNext(fromStage, toStage, toDisplayName, description) {
|
|
31
|
+
if (description) {
|
|
32
|
+
this.sentences.push(`Next step: ${description}.`);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const name = toDisplayName || toStage;
|
|
36
|
+
this.sentences.push(`Next, it moved on to ${name}.`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
onDecision(deciderName, chosenBranch, chosenDisplayName, rationale, deciderDescription) {
|
|
40
|
+
const branchName = chosenDisplayName || chosenBranch;
|
|
41
|
+
if (deciderDescription && rationale) {
|
|
42
|
+
this.sentences.push(`It ${deciderDescription}: ${rationale}, so it chose ${branchName}.`);
|
|
43
|
+
}
|
|
44
|
+
else if (deciderDescription) {
|
|
45
|
+
this.sentences.push(`It ${deciderDescription} and chose ${branchName}.`);
|
|
46
|
+
}
|
|
47
|
+
else if (rationale) {
|
|
48
|
+
this.sentences.push(`A decision was made: ${rationale}, so the path taken was ${branchName}.`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.sentences.push(`A decision was made, and the path taken was ${branchName}.`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
onFork(parentStage, childNames) {
|
|
55
|
+
const names = childNames.join(', ');
|
|
56
|
+
this.sentences.push(`${childNames.length} paths were executed in parallel: ${names}.`);
|
|
57
|
+
}
|
|
58
|
+
onSelected(parentStage, selectedNames, totalCount) {
|
|
59
|
+
const names = selectedNames.join(', ');
|
|
60
|
+
this.sentences.push(`${selectedNames.length} of ${totalCount} paths were selected: ${names}.`);
|
|
61
|
+
}
|
|
62
|
+
onSubflowEntry(subflowName) {
|
|
63
|
+
this.sentences.push(`Entering the ${subflowName} subflow.`);
|
|
64
|
+
}
|
|
65
|
+
onSubflowExit(subflowName) {
|
|
66
|
+
this.sentences.push(`Exiting the ${subflowName} subflow.`);
|
|
67
|
+
}
|
|
68
|
+
onLoop(targetStage, targetDisplayName, iteration, description) {
|
|
69
|
+
if (description) {
|
|
70
|
+
this.sentences.push(`On pass ${iteration}: ${description} again.`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const name = targetDisplayName || targetStage;
|
|
74
|
+
this.sentences.push(`On pass ${iteration} through ${name}.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
onBreak(stageName, displayName) {
|
|
78
|
+
const name = displayName || stageName;
|
|
79
|
+
this.sentences.push(`Execution stopped at ${name}.`);
|
|
80
|
+
}
|
|
81
|
+
onError(stageName, errorMessage, displayName) {
|
|
82
|
+
const name = displayName || stageName;
|
|
83
|
+
this.sentences.push(`An error occurred at ${name}: ${errorMessage}.`);
|
|
84
|
+
}
|
|
85
|
+
/** Returns a defensive copy of accumulated sentences. */
|
|
86
|
+
getSentences() {
|
|
87
|
+
return [...this.sentences];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFJSCxNQUFNLE9BQU8sNkJBQTZCO0lBQTFDO1FBQ1UsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUFHLElBQUksQ0FBQztJQW1GOUIsQ0FBQztJQWpGQyxlQUFlLENBQUMsU0FBaUIsRUFBRSxXQUFvQixFQUFFLFdBQW9CO1FBQzNFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQzVELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksR0FBRyxXQUFXLElBQUksU0FBUyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQywwQkFBMEIsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsU0FBaUIsRUFBRSxPQUFlLEVBQUUsYUFBc0IsRUFBRSxXQUFvQjtRQUNyRixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLGFBQWEsSUFBSSxPQUFPLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsd0JBQXdC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SUFFRCx5REFBeUQ7SUFDekQsWUFBWTtRQUNWLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIOKAlCBBY3RpdmUgaW1wbGVtZW50YXRpb24gb2YgSUNvbnRyb2xGbG93TmFycmF0aXZlLlxuICpcbiAqIENvbnZlcnRzIHRyYXZlcnNhbCBldmVudHMgaW50byBwbGFpbi1FbmdsaXNoIHNlbnRlbmNlcyBhdCB0cmF2ZXJzYWwgdGltZS5cbiAqIFByb2R1Y2VzIGEgaHVtYW4tcmVhZGFibGUgc3RvcnkgYXMgYSBmaXJzdC1jbGFzcyBvdXRwdXQsIGVuYWJsaW5nIGFueSBjb25zdW1lclxuICogKGNoZWFwZXIgTExNLCBmb2xsb3ctdXAgYWdlbnQsIGxvZ2dpbmcgc3lzdGVtKSB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVuZWRcbiAqIHdpdGhvdXQgcGFyc2luZyB0ZWNobmljYWwgc3RydWN0dXJlcy5cbiAqXG4gKiBUaGlzIGlzIHRoZSBGTE9XIG5hcnJhdGl2ZSDigJQgaXQgY2FwdHVyZXMgY29udHJvbCBmbG93IGRlY2lzaW9ucy5cbiAqIFRoZSBEQVRBIG5hcnJhdGl2ZSBjb21lcyBmcm9tIHNjb3BlL3JlY29yZGVycy9OYXJyYXRpdmVSZWNvcmRlci5cbiAqIENvbWJpbmVkTmFycmF0aXZlQnVpbGRlciBtZXJnZXMgYm90aCBpbnRvIG9uZSBzdG9yeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IElDb250cm9sRmxvd05hcnJhdGl2ZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IgaW1wbGVtZW50cyBJQ29udHJvbEZsb3dOYXJyYXRpdmUge1xuICBwcml2YXRlIHNlbnRlbmNlczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBpc0ZpcnN0U3RhZ2UgPSB0cnVlO1xuXG4gIG9uU3RhZ2VFeGVjdXRlZChzdGFnZU5hbWU6IHN0cmluZywgZGlzcGxheU5hbWU/OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNGaXJzdFN0YWdlKSB7XG4gICAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5zZW50ZW5jZXMucHVzaChgVGhlIHByb2Nlc3MgYmVnYW46ICR7ZGVzY3JpcHRpb259LmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGRpc3BsYXlOYW1lIHx8IHN0YWdlTmFtZTtcbiAgICAgICAgdGhpcy5zZW50ZW5jZXMucHVzaChgVGhlIHByb2Nlc3MgYmVnYW4gd2l0aCAke25hbWV9LmApO1xuICAgICAgfVxuICAgICAgdGhpcy5pc0ZpcnN0U3RhZ2UgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbk5leHQoZnJvbVN0YWdlOiBzdHJpbmcsIHRvU3RhZ2U6IHN0cmluZywgdG9EaXNwbGF5TmFtZT86IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc2VudGVuY2VzLnB1c2goYE5leHQgc3RlcDogJHtkZXNjcmlwdGlvbn0uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0b0Rpc3BsYXlOYW1lIHx8IHRvU3RhZ2U7XG4gICAgICB0aGlzLnNlbnRlbmNlcy5wdXNoKGBOZXh0LCBpdCBtb3ZlZCBvbiB0byAke25hbWV9LmApO1xuICAgIH1cbiAgfVxuXG4gIG9uRGVjaXNpb24oXG4gICAgZGVjaWRlck5hbWU6IHN0cmluZyxcbiAgICBjaG9zZW5CcmFuY2g6IHN0cmluZyxcbiAgICBjaG9zZW5EaXNwbGF5TmFtZT86IHN0cmluZyxcbiAgICByYXRpb25hbGU/OiBzdHJpbmcsXG4gICAgZGVjaWRlckRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBicmFuY2hOYW1lID0gY2hvc2VuRGlzcGxheU5hbWUgfHwgY2hvc2VuQnJhbmNoO1xuICAgIGlmIChkZWNpZGVyRGVzY3JpcHRpb24gJiYgcmF0aW9uYWxlKSB7XG4gICAgICB0aGlzLnNlbnRlbmNlcy5wdXNoKGBJdCAke2RlY2lkZXJEZXNjcmlwdGlvbn06ICR7cmF0aW9uYWxlfSwgc28gaXQgY2hvc2UgJHticmFuY2hOYW1lfS5gKTtcbiAgICB9IGVsc2UgaWYgKGRlY2lkZXJEZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zZW50ZW5jZXMucHVzaChgSXQgJHtkZWNpZGVyRGVzY3JpcHRpb259IGFuZCBjaG9zZSAke2JyYW5jaE5hbWV9LmApO1xuICAgIH0gZWxzZSBpZiAocmF0aW9uYWxlKSB7XG4gICAgICB0aGlzLnNlbnRlbmNlcy5wdXNoKGBBIGRlY2lzaW9uIHdhcyBtYWRlOiAke3JhdGlvbmFsZX0sIHNvIHRoZSBwYXRoIHRha2VuIHdhcyAke2JyYW5jaE5hbWV9LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbnRlbmNlcy5wdXNoKGBBIGRlY2lzaW9uIHdhcyBtYWRlLCBhbmQgdGhlIHBhdGggdGFrZW4gd2FzICR7YnJhbmNoTmFtZX0uYCk7XG4gICAgfVxuICB9XG5cbiAgb25Gb3JrKHBhcmVudFN0YWdlOiBzdHJpbmcsIGNoaWxkTmFtZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3QgbmFtZXMgPSBjaGlsZE5hbWVzLmpvaW4oJywgJyk7XG4gICAgdGhpcy5zZW50ZW5jZXMucHVzaChgJHtjaGlsZE5hbWVzLmxlbmd0aH0gcGF0aHMgd2VyZSBleGVjdXRlZCBpbiBwYXJhbGxlbDogJHtuYW1lc30uYCk7XG4gIH1cblxuICBvblNlbGVjdGVkKHBhcmVudFN0YWdlOiBzdHJpbmcsIHNlbGVjdGVkTmFtZXM6IHN0cmluZ1tdLCB0b3RhbENvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lcyA9IHNlbGVjdGVkTmFtZXMuam9pbignLCAnKTtcbiAgICB0aGlzLnNlbnRlbmNlcy5wdXNoKGAke3NlbGVjdGVkTmFtZXMubGVuZ3RofSBvZiAke3RvdGFsQ291bnR9IHBhdGhzIHdlcmUgc2VsZWN0ZWQ6ICR7bmFtZXN9LmApO1xuICB9XG5cbiAgb25TdWJmbG93RW50cnkoc3ViZmxvd05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VudGVuY2VzLnB1c2goYEVudGVyaW5nIHRoZSAke3N1YmZsb3dOYW1lfSBzdWJmbG93LmApO1xuICB9XG5cbiAgb25TdWJmbG93RXhpdChzdWJmbG93TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZW50ZW5jZXMucHVzaChgRXhpdGluZyB0aGUgJHtzdWJmbG93TmFtZX0gc3ViZmxvdy5gKTtcbiAgfVxuXG4gIG9uTG9vcCh0YXJnZXRTdGFnZTogc3RyaW5nLCB0YXJnZXREaXNwbGF5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBpdGVyYXRpb246IG51bWJlciwgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc2VudGVuY2VzLnB1c2goYE9uIHBhc3MgJHtpdGVyYXRpb259OiAke2Rlc2NyaXB0aW9ufSBhZ2Fpbi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmFtZSA9IHRhcmdldERpc3BsYXlOYW1lIHx8IHRhcmdldFN0YWdlO1xuICAgICAgdGhpcy5zZW50ZW5jZXMucHVzaChgT24gcGFzcyAke2l0ZXJhdGlvbn0gdGhyb3VnaCAke25hbWV9LmApO1xuICAgIH1cbiAgfVxuXG4gIG9uQnJlYWsoc3RhZ2VOYW1lOiBzdHJpbmcsIGRpc3BsYXlOYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmFtZSA9IGRpc3BsYXlOYW1lIHx8IHN0YWdlTmFtZTtcbiAgICB0aGlzLnNlbnRlbmNlcy5wdXNoKGBFeGVjdXRpb24gc3RvcHBlZCBhdCAke25hbWV9LmApO1xuICB9XG5cbiAgb25FcnJvcihzdGFnZU5hbWU6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcsIGRpc3BsYXlOYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmFtZSA9IGRpc3BsYXlOYW1lIHx8IHN0YWdlTmFtZTtcbiAgICB0aGlzLnNlbnRlbmNlcy5wdXNoKGBBbiBlcnJvciBvY2N1cnJlZCBhdCAke25hbWV9OiAke2Vycm9yTWVzc2FnZX0uYCk7XG4gIH1cblxuICAvKiogUmV0dXJucyBhIGRlZmVuc2l2ZSBjb3B5IG9mIGFjY3VtdWxhdGVkIHNlbnRlbmNlcy4gKi9cbiAgZ2V0U2VudGVuY2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuc2VudGVuY2VzXTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NullControlFlowNarrativeGenerator — Zero-cost no-op (Null Object pattern).
|
|
3
|
+
*
|
|
4
|
+
* When narrative is disabled, handlers call this unconditionally.
|
|
5
|
+
* All methods are empty bodies — zero allocation, zero string formatting.
|
|
6
|
+
* getSentences() returns a bare [] literal to avoid even a single array allocation.
|
|
7
|
+
*/
|
|
8
|
+
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
9
|
+
export class NullControlFlowNarrativeGenerator {
|
|
10
|
+
onStageExecuted() { }
|
|
11
|
+
onNext() { }
|
|
12
|
+
onDecision() { }
|
|
13
|
+
onFork() { }
|
|
14
|
+
onSelected() { }
|
|
15
|
+
onSubflowEntry() { }
|
|
16
|
+
onSubflowExit() { }
|
|
17
|
+
onLoop() { }
|
|
18
|
+
onBreak() { }
|
|
19
|
+
onError() { }
|
|
20
|
+
getSentences() {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvbmFycmF0aXZlL051bGxDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFJSCx5REFBeUQ7QUFDekQsTUFBTSxPQUFPLGlDQUFpQztJQUM1QyxlQUFlLEtBQVUsQ0FBQztJQUMxQixNQUFNLEtBQVUsQ0FBQztJQUNqQixVQUFVLEtBQVUsQ0FBQztJQUNyQixNQUFNLEtBQVUsQ0FBQztJQUNqQixVQUFVLEtBQVUsQ0FBQztJQUNyQixjQUFjLEtBQVUsQ0FBQztJQUN6QixhQUFhLEtBQVUsQ0FBQztJQUN4QixNQUFNLEtBQVUsQ0FBQztJQUNqQixPQUFPLEtBQVUsQ0FBQztJQUNsQixPQUFPLEtBQVUsQ0FBQztJQUNsQixZQUFZO1FBQ1YsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE51bGxDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciDigJQgWmVyby1jb3N0IG5vLW9wIChOdWxsIE9iamVjdCBwYXR0ZXJuKS5cbiAqXG4gKiBXaGVuIG5hcnJhdGl2ZSBpcyBkaXNhYmxlZCwgaGFuZGxlcnMgY2FsbCB0aGlzIHVuY29uZGl0aW9uYWxseS5cbiAqIEFsbCBtZXRob2RzIGFyZSBlbXB0eSBib2RpZXMg4oCUIHplcm8gYWxsb2NhdGlvbiwgemVybyBzdHJpbmcgZm9ybWF0dGluZy5cbiAqIGdldFNlbnRlbmNlcygpIHJldHVybnMgYSBiYXJlIFtdIGxpdGVyYWwgdG8gYXZvaWQgZXZlbiBhIHNpbmdsZSBhcnJheSBhbGxvY2F0aW9uLlxuICovXG5cbmltcG9ydCB0eXBlIHsgSUNvbnRyb2xGbG93TmFycmF0aXZlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiAqL1xuZXhwb3J0IGNsYXNzIE51bGxDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciBpbXBsZW1lbnRzIElDb250cm9sRmxvd05hcnJhdGl2ZSB7XG4gIG9uU3RhZ2VFeGVjdXRlZCgpOiB2b2lkIHt9XG4gIG9uTmV4dCgpOiB2b2lkIHt9XG4gIG9uRGVjaXNpb24oKTogdm9pZCB7fVxuICBvbkZvcmsoKTogdm9pZCB7fVxuICBvblNlbGVjdGVkKCk6IHZvaWQge31cbiAgb25TdWJmbG93RW50cnkoKTogdm9pZCB7fVxuICBvblN1YmZsb3dFeGl0KCk6IHZvaWQge31cbiAgb25Mb29wKCk6IHZvaWQge31cbiAgb25CcmVhaygpOiB2b2lkIHt9XG4gIG9uRXJyb3IoKTogdm9pZCB7fVxuICBnZXRTZW50ZW5jZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { CombinedNarrativeBuilder } from './CombinedNarrativeBuilder';
|
|
2
|
+
export { ControlFlowNarrativeGenerator } from './ControlFlowNarrativeGenerator';
|
|
3
|
+
export { NullControlFlowNarrativeGenerator } from './NullControlFlowNarrativeGenerator';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5LCBDb21iaW5lZE5hcnJhdGl2ZU9wdGlvbnMgfSBmcm9tICcuL0NvbWJpbmVkTmFycmF0aXZlQnVpbGRlcic7XG5leHBvcnQgeyBDb21iaW5lZE5hcnJhdGl2ZUJ1aWxkZXIgfSBmcm9tICcuL0NvbWJpbmVkTmFycmF0aXZlQnVpbGRlcic7XG5leHBvcnQgeyBDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciB9IGZyb20gJy4vQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3InO1xuZXhwb3J0IHsgTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIH0gZnJvbSAnLi9OdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3InO1xuZXhwb3J0IHR5cGUgeyBJQ29udHJvbEZsb3dOYXJyYXRpdmUgfSBmcm9tICcuL3R5cGVzJztcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IControlFlowNarrative — Interface for control flow narrative generation.
|
|
3
|
+
*
|
|
4
|
+
* Captures FLOW events during traversal: decisions, forks, loops, subflows.
|
|
5
|
+
* Complementary to scope/recorders/NarrativeRecorder which captures DATA events.
|
|
6
|
+
*
|
|
7
|
+
* Uses Null Object pattern: NullControlFlowNarrativeGenerator satisfies this
|
|
8
|
+
* interface with empty methods for zero-cost disabled path.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIElDb250cm9sRmxvd05hcnJhdGl2ZSDigJQgSW50ZXJmYWNlIGZvciBjb250cm9sIGZsb3cgbmFycmF0aXZlIGdlbmVyYXRpb24uXG4gKlxuICogQ2FwdHVyZXMgRkxPVyBldmVudHMgZHVyaW5nIHRyYXZlcnNhbDogZGVjaXNpb25zLCBmb3JrcywgbG9vcHMsIHN1YmZsb3dzLlxuICogQ29tcGxlbWVudGFyeSB0byBzY29wZS9yZWNvcmRlcnMvTmFycmF0aXZlUmVjb3JkZXIgd2hpY2ggY2FwdHVyZXMgREFUQSBldmVudHMuXG4gKlxuICogVXNlcyBOdWxsIE9iamVjdCBwYXR0ZXJuOiBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3Igc2F0aXNmaWVzIHRoaXNcbiAqIGludGVyZmFjZSB3aXRoIGVtcHR5IG1ldGhvZHMgZm9yIHplcm8tY29zdCBkaXNhYmxlZCBwYXRoLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xGbG93TmFycmF0aXZlIHtcbiAgLyoqIENhbGxlZCB3aGVuIGEgc3RhZ2UgZXhlY3V0ZXMuIEZpcnN0IHN0YWdlIHVzZXMgZGlzdGluY3Qgb3BlbmluZyBwYXR0ZXJuLiAqL1xuICBvblN0YWdlRXhlY3V0ZWQoc3RhZ2VOYW1lOiBzdHJpbmcsIGRpc3BsYXlOYW1lPzogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCBvbiBsaW5lYXIgY29udGludWF0aW9uIGZyb20gb25lIHN0YWdlIHRvIHRoZSBuZXh0LiAqL1xuICBvbk5leHQoZnJvbVN0YWdlOiBzdHJpbmcsIHRvU3RhZ2U6IHN0cmluZywgdG9EaXNwbGF5TmFtZT86IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGRlY2lkZXIgc2VsZWN0cyBhIGJyYW5jaC4gTW9zdCB2YWx1YWJsZSBmb3IgTExNIGNvbnRleHQuICovXG4gIG9uRGVjaXNpb24oXG4gICAgZGVjaWRlck5hbWU6IHN0cmluZyxcbiAgICBjaG9zZW5CcmFuY2g6IHN0cmluZyxcbiAgICBjaG9zZW5EaXNwbGF5TmFtZT86IHN0cmluZyxcbiAgICByYXRpb25hbGU/OiBzdHJpbmcsXG4gICAgZGVjaWRlckRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGZvcmsgZXhlY3V0ZXMgYWxsIGNoaWxkcmVuIGluIHBhcmFsbGVsLiAqL1xuICBvbkZvcmsocGFyZW50U3RhZ2U6IHN0cmluZywgY2hpbGROYW1lczogc3RyaW5nW10pOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIHNlbGVjdG9yIHBpY2tzIGEgc3Vic2V0IG9mIGNoaWxkcmVuLiAqL1xuICBvblNlbGVjdGVkKHBhcmVudFN0YWdlOiBzdHJpbmcsIHNlbGVjdGVkTmFtZXM6IHN0cmluZ1tdLCB0b3RhbENvdW50OiBudW1iZXIpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBlbnRlcmluZyBhIHN1YmZsb3cgKG5lc3RlZCBjb250ZXh0IGJvdW5kYXJ5KS4gKi9cbiAgb25TdWJmbG93RW50cnkoc3ViZmxvd05hbWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGV4aXRpbmcgYSBzdWJmbG93LiAqL1xuICBvblN1YmZsb3dFeGl0KHN1YmZsb3dOYW1lOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgb24gbG9vcCBpdGVyYXRpb24gKGJhY2stZWRnZSB0cmF2ZXJzYWwpLiAqL1xuICBvbkxvb3AodGFyZ2V0U3RhZ2U6IHN0cmluZywgdGFyZ2V0RGlzcGxheU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCwgaXRlcmF0aW9uOiBudW1iZXIsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0cmlnZ2VycyBicmVhayAoZWFybHkgdGVybWluYXRpb24pLiAqL1xuICBvbkJyZWFrKHN0YWdlTmFtZTogc3RyaW5nLCBkaXNwbGF5TmFtZT86IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgc3RhZ2UgdGhyb3dzIGFuIGVycm9yLiAqL1xuICBvbkVycm9yKHN0YWdlTmFtZTogc3RyaW5nLCBlcnJvck1lc3NhZ2U6IHN0cmluZywgZGlzcGxheU5hbWU/OiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKiBSZXR1cm5zIGFjY3VtdWxhdGVkIG5hcnJhdGl2ZSBzZW50ZW5jZXMgaW4gZXhlY3V0aW9uIG9yZGVyLiAqL1xuICBnZXRTZW50ZW5jZXMoKTogc3RyaW5nW107XG59XG4iXX0=
|