footprintjs 10.0.1 → 10.2.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/AGENTS.md +2 -1
- package/CLAUDE.md +61 -7
- package/README.md +136 -312
- package/dist/esm/index.d.ts +62 -2
- package/dist/esm/index.js +13 -6
- package/dist/esm/lib/attempt/anySignal.d.ts +19 -0
- package/dist/esm/lib/attempt/anySignal.js +39 -0
- package/dist/esm/lib/attempt/call.d.ts +88 -0
- package/dist/esm/lib/attempt/call.js +129 -0
- package/dist/esm/lib/attempt/category.d.ts +37 -0
- package/dist/esm/lib/attempt/category.js +131 -0
- package/dist/esm/lib/attempt/correlation.d.ts +95 -0
- package/dist/esm/lib/attempt/correlation.js +178 -0
- package/dist/esm/lib/attempt/deadline.d.ts +44 -0
- package/dist/esm/lib/attempt/deadline.js +101 -0
- package/dist/esm/lib/attempt/decision.d.ts +52 -0
- package/dist/esm/lib/attempt/decision.js +134 -0
- package/dist/esm/lib/attempt/effect.d.ts +76 -0
- package/dist/esm/lib/attempt/effect.js +160 -0
- package/dist/esm/lib/attempt/errors.d.ts +41 -0
- package/dist/esm/lib/attempt/errors.js +44 -0
- package/dist/esm/lib/attempt/index.d.ts +18 -0
- package/dist/esm/lib/attempt/index.js +15 -0
- package/dist/esm/lib/attempt/name.d.ts +21 -0
- package/dist/esm/lib/attempt/name.js +43 -0
- package/dist/esm/lib/attempt/observed.d.ts +66 -0
- package/dist/esm/lib/attempt/observed.js +171 -0
- package/dist/esm/lib/attempt/policy.d.ts +45 -0
- package/dist/esm/lib/attempt/policy.js +83 -0
- package/dist/esm/lib/attempt/record.d.ts +11 -0
- package/dist/esm/lib/attempt/record.js +24 -0
- package/dist/esm/lib/attempt/retryLoopContext.d.ts +18 -0
- package/dist/esm/lib/attempt/retryLoopContext.js +24 -0
- package/dist/esm/lib/attempt/retryLoopTypes.d.ts +18 -0
- package/dist/esm/lib/attempt/retryLoopTypes.js +2 -0
- package/dist/esm/lib/attempt/runner.d.ts +157 -0
- package/dist/esm/lib/attempt/runner.js +523 -0
- package/dist/esm/lib/attempt/standalone.d.ts +47 -0
- package/dist/esm/lib/attempt/standalone.js +126 -0
- package/dist/esm/lib/attempt/types.d.ts +453 -0
- package/dist/esm/lib/attempt/types.js +16 -0
- package/dist/esm/lib/budget/index.d.ts +9 -0
- package/dist/esm/lib/budget/index.js +9 -0
- package/dist/esm/lib/budget/timeBudget.d.ts +136 -0
- package/dist/esm/lib/budget/timeBudget.js +666 -0
- package/dist/esm/lib/builder/FlowChartBuilder.d.ts +88 -3
- package/dist/esm/lib/builder/FlowChartBuilder.js +199 -9
- package/dist/esm/lib/builder/retryLoop.d.ts +56 -0
- package/dist/esm/lib/builder/retryLoop.js +283 -0
- package/dist/esm/lib/builder/types.d.ts +35 -1
- package/dist/esm/lib/builder/types.js +1 -1
- package/dist/esm/lib/decide/decide.js +2 -2
- package/dist/esm/lib/decide/index.d.ts +1 -1
- package/dist/esm/lib/decide/index.js +2 -2
- package/dist/esm/lib/decide/types.d.ts +3 -0
- package/dist/esm/lib/decide/types.js +1 -8
- package/dist/esm/lib/engine/graph/StageNode.d.ts +11 -1
- package/dist/esm/lib/engine/graph/StageNode.js +1 -1
- package/dist/esm/lib/engine/graph/prefixNodeTree.js +5 -1
- package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +36 -6
- package/dist/esm/lib/engine/handlers/DeciderHandler.js +9 -5
- package/dist/esm/lib/engine/handlers/ResumeEntry.js +3 -1
- package/dist/esm/lib/engine/handlers/SelectorHandler.js +6 -5
- package/dist/esm/lib/engine/handlers/StageRunner.d.ts +8 -1
- package/dist/esm/lib/engine/handlers/StageRunner.js +36 -9
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +24 -5
- package/dist/esm/lib/engine/handlers/commitStage.d.ts +7 -0
- package/dist/esm/lib/engine/handlers/commitStage.js +22 -4
- package/dist/esm/lib/engine/handlers/stageError.d.ts +9 -0
- package/dist/esm/lib/engine/handlers/stageError.js +23 -1
- package/dist/esm/lib/engine/index.d.ts +2 -2
- package/dist/esm/lib/engine/index.js +1 -1
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +68 -40
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
- package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
- package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +61 -9
- package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
- package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
- package/dist/esm/lib/engine/narrative/formatting/sentences.d.ts +23 -0
- package/dist/esm/lib/engine/narrative/formatting/sentences.js +127 -1
- package/dist/esm/lib/engine/narrative/index.d.ts +2 -2
- package/dist/esm/lib/engine/narrative/index.js +1 -1
- package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +27 -21
- package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
- package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
- package/dist/esm/lib/engine/narrative/recorders/index.d.ts +1 -1
- package/dist/esm/lib/engine/narrative/recorders/index.js +1 -1
- package/dist/esm/lib/engine/narrative/types.d.ts +74 -5
- package/dist/esm/lib/engine/narrative/types.js +1 -1
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +194 -118
- package/dist/esm/lib/engine/traversalContext.d.ts +7 -2
- package/dist/esm/lib/engine/traversalContext.js +6 -3
- package/dist/esm/lib/engine/types.d.ts +52 -57
- package/dist/esm/lib/engine/types.js +1 -1
- package/dist/esm/lib/errors/terminalFailure.d.ts +29 -0
- package/dist/esm/lib/errors/terminalFailure.js +60 -0
- package/dist/esm/lib/{decide → filter}/evaluator.d.ts +7 -2
- package/dist/esm/lib/filter/evaluator.js +135 -0
- package/dist/esm/lib/ids/idempotencyKey.d.ts +14 -0
- package/dist/esm/lib/ids/idempotencyKey.js +24 -0
- package/dist/esm/lib/memory/StageContext.d.ts +123 -3
- package/dist/esm/lib/memory/StageContext.js +245 -4
- package/dist/esm/lib/memory/attention.d.ts +26 -0
- package/dist/esm/lib/memory/attention.js +171 -0
- package/dist/esm/lib/memory/borrowedMutation.d.ts +8 -0
- package/dist/esm/lib/memory/borrowedMutation.js +14 -1
- package/dist/esm/lib/memory/frameTypes.d.ts +38 -0
- package/dist/esm/lib/memory/frameTypes.js +3 -1
- package/dist/esm/lib/memory/redaction.d.ts +12 -0
- package/dist/esm/lib/memory/redaction.js +54 -5
- package/dist/esm/lib/pause/record.js +10 -1
- package/dist/esm/lib/pause/types.d.ts +19 -0
- package/dist/esm/lib/pause/types.js +17 -1
- package/dist/esm/lib/reactive/createTypedScope.js +3 -1
- package/dist/esm/lib/reactive/types.d.ts +36 -4
- package/dist/esm/lib/reactive/types.js +3 -1
- package/dist/esm/lib/recorder/AttemptRecorder.d.ts +141 -0
- package/dist/esm/lib/recorder/AttemptRecorder.js +412 -0
- package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +36 -2
- package/dist/esm/lib/recorder/ControlDepRecorder.js +50 -2
- package/dist/esm/lib/recorder/EmitRecorder.d.ts +3 -0
- package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
- package/dist/esm/lib/recorder/InOutRecorder.d.ts +37 -1
- package/dist/esm/lib/recorder/InOutRecorder.js +75 -6
- package/dist/esm/lib/recorder/QualityRecorder.d.ts +32 -5
- package/dist/esm/lib/recorder/QualityRecorder.js +87 -29
- package/dist/esm/lib/recorder/TopologyRecorder.d.ts +35 -5
- package/dist/esm/lib/recorder/TopologyRecorder.js +76 -2
- package/dist/esm/lib/recorder/attemptMetricRows.d.ts +11 -0
- package/dist/esm/lib/recorder/attemptMetricRows.js +202 -0
- package/dist/esm/lib/recorder/attemptMetrics.d.ts +7 -0
- package/dist/esm/lib/recorder/attemptMetrics.js +165 -0
- package/dist/esm/lib/recorder/attemptMetricsTypes.d.ts +114 -0
- package/dist/esm/lib/recorder/attemptMetricsTypes.js +2 -0
- package/dist/esm/lib/recorder/attemptOTel.d.ts +78 -0
- package/dist/esm/lib/recorder/attemptOTel.js +107 -0
- package/dist/esm/lib/recorder/attemptSeries.d.ts +81 -0
- package/dist/esm/lib/recorder/attemptSeries.js +103 -0
- package/dist/esm/lib/recorder/hooks.d.ts +9 -0
- package/dist/esm/lib/recorder/hooks.js +4 -1
- package/dist/esm/lib/runner/DeferredObserverTier.js +13 -1
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +54 -6
- package/dist/esm/lib/runner/ExecutionRuntime.js +57 -5
- package/dist/esm/lib/runner/FlowChartExecutor.d.ts +46 -2
- package/dist/esm/lib/runner/FlowChartExecutor.js +330 -101
- package/dist/esm/lib/runner/RunnableChart.d.ts +6 -0
- package/dist/esm/lib/runner/RunnableChart.js +5 -1
- package/dist/esm/lib/runner/attach.d.ts +2 -1
- package/dist/esm/lib/runner/attach.js +8 -2
- package/dist/esm/lib/runner/checkpoint.js +3 -1
- package/dist/esm/lib/runner/deadline.d.ts +42 -0
- package/dist/esm/lib/runner/deadline.js +90 -0
- package/dist/esm/lib/runner/index.d.ts +3 -1
- package/dist/esm/lib/runner/index.js +2 -1
- package/dist/esm/lib/runner/options.d.ts +17 -0
- package/dist/esm/lib/runner/options.js +3 -1
- package/dist/esm/lib/runner/recordSink.d.ts +128 -0
- package/dist/esm/lib/runner/recordSink.js +296 -0
- package/dist/esm/lib/runner/resume.d.ts +3 -0
- package/dist/esm/lib/runner/resume.js +22 -2
- package/dist/esm/lib/runner/snapshot.d.ts +2 -2
- package/dist/esm/lib/runner/snapshot.js +6 -2
- package/dist/esm/lib/scope/ScopeFacade.d.ts +118 -4
- package/dist/esm/lib/scope/ScopeFacade.js +304 -7
- package/dist/esm/lib/scope/recorders/DebugRecorder.d.ts +17 -3
- package/dist/esm/lib/scope/recorders/DebugRecorder.js +79 -13
- package/dist/esm/lib/scope/recorders/MetricRecorder.d.ts +10 -0
- package/dist/esm/lib/scope/recorders/MetricRecorder.js +15 -2
- package/dist/esm/lib/scope/runtime.d.ts +3 -0
- package/dist/esm/lib/scope/runtime.js +1 -1
- package/dist/esm/lib/scope/types.d.ts +6 -0
- package/dist/esm/lib/scope/types.js +1 -1
- package/dist/esm/lib/sinks/fileSink.d.ts +135 -0
- package/dist/esm/lib/sinks/fileSink.js +387 -0
- package/dist/esm/recorders.d.ts +8 -2
- package/dist/esm/recorders.js +7 -1
- package/dist/esm/sinks.d.ts +23 -0
- package/dist/esm/sinks.js +23 -0
- package/dist/esm/trace.d.ts +2 -2
- package/dist/esm/trace.js +1 -1
- package/dist/index.js +77 -60
- package/dist/lib/attempt/anySignal.js +43 -0
- package/dist/lib/attempt/call.js +134 -0
- package/dist/lib/attempt/category.js +136 -0
- package/dist/lib/attempt/correlation.js +186 -0
- package/dist/lib/attempt/deadline.js +112 -0
- package/dist/lib/attempt/decision.js +139 -0
- package/dist/lib/attempt/effect.js +174 -0
- package/dist/lib/attempt/errors.js +49 -0
- package/dist/lib/attempt/index.js +26 -0
- package/dist/lib/attempt/name.js +48 -0
- package/dist/lib/attempt/observed.js +177 -0
- package/dist/lib/attempt/policy.js +92 -0
- package/dist/lib/attempt/record.js +29 -0
- package/dist/lib/attempt/retryLoopContext.js +31 -0
- package/dist/lib/attempt/retryLoopTypes.js +3 -0
- package/dist/lib/attempt/runner.js +530 -0
- package/dist/lib/attempt/standalone.js +130 -0
- package/dist/lib/attempt/types.js +17 -0
- package/dist/lib/budget/index.js +17 -0
- package/dist/lib/budget/timeBudget.js +674 -0
- package/dist/lib/builder/FlowChartBuilder.js +199 -9
- package/dist/lib/builder/retryLoop.js +287 -0
- package/dist/lib/builder/types.js +1 -1
- package/dist/lib/decide/decide.js +2 -2
- package/dist/lib/decide/index.js +2 -2
- package/dist/lib/decide/types.js +1 -8
- package/dist/lib/engine/graph/StageNode.js +1 -1
- package/dist/lib/engine/graph/prefixNodeTree.js +5 -1
- package/dist/lib/engine/handlers/ChildrenExecutor.js +36 -6
- package/dist/lib/engine/handlers/DeciderHandler.js +7 -3
- package/dist/lib/engine/handlers/ResumeEntry.js +3 -1
- package/dist/lib/engine/handlers/SelectorHandler.js +4 -3
- package/dist/lib/engine/handlers/StageRunner.js +36 -9
- package/dist/lib/engine/handlers/SubflowExecutor.js +24 -5
- package/dist/lib/engine/handlers/commitStage.js +24 -5
- package/dist/lib/engine/handlers/stageError.js +26 -2
- package/dist/lib/engine/index.js +1 -1
- package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +67 -39
- package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
- package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +60 -8
- package/dist/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
- package/dist/lib/engine/narrative/formatting/sentences.js +131 -2
- package/dist/lib/engine/narrative/index.js +1 -1
- package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
- package/dist/lib/engine/narrative/recorders/index.js +1 -1
- package/dist/lib/engine/narrative/types.js +1 -1
- package/dist/lib/engine/traversal/FlowchartTraverser.js +192 -116
- package/dist/lib/engine/traversalContext.js +6 -3
- package/dist/lib/engine/types.js +1 -1
- package/dist/lib/errors/terminalFailure.js +64 -0
- package/dist/lib/filter/evaluator.js +139 -0
- package/dist/lib/ids/idempotencyKey.js +28 -0
- package/dist/lib/memory/StageContext.js +246 -5
- package/dist/lib/memory/attention.js +175 -0
- package/dist/lib/memory/borrowedMutation.js +16 -2
- package/dist/lib/memory/frameTypes.js +3 -1
- package/dist/lib/memory/redaction.js +54 -5
- package/dist/lib/pause/record.js +10 -1
- package/dist/lib/pause/types.js +17 -1
- package/dist/lib/reactive/createTypedScope.js +3 -1
- package/dist/lib/reactive/types.js +3 -1
- package/dist/lib/recorder/AttemptRecorder.js +417 -0
- package/dist/lib/recorder/ControlDepRecorder.js +50 -2
- package/dist/lib/recorder/EmitRecorder.js +1 -1
- package/dist/lib/recorder/InOutRecorder.js +75 -6
- package/dist/lib/recorder/QualityRecorder.js +87 -29
- package/dist/lib/recorder/TopologyRecorder.js +76 -2
- package/dist/lib/recorder/attemptMetricRows.js +209 -0
- package/dist/lib/recorder/attemptMetrics.js +174 -0
- package/dist/lib/recorder/attemptMetricsTypes.js +3 -0
- package/dist/lib/recorder/attemptOTel.js +111 -0
- package/dist/lib/recorder/attemptSeries.js +113 -0
- package/dist/lib/recorder/hooks.js +4 -1
- package/dist/lib/runner/DeferredObserverTier.js +13 -1
- package/dist/lib/runner/ExecutionRuntime.js +57 -5
- package/dist/lib/runner/FlowChartExecutor.js +330 -101
- package/dist/lib/runner/RunnableChart.js +5 -1
- package/dist/lib/runner/attach.js +8 -2
- package/dist/lib/runner/checkpoint.js +3 -1
- package/dist/lib/runner/deadline.js +94 -0
- package/dist/lib/runner/index.js +4 -2
- package/dist/lib/runner/options.js +3 -1
- package/dist/lib/runner/recordSink.js +302 -0
- package/dist/lib/runner/resume.js +22 -2
- package/dist/lib/runner/snapshot.js +6 -2
- package/dist/lib/scope/ScopeFacade.js +303 -6
- package/dist/lib/scope/recorders/DebugRecorder.js +79 -13
- package/dist/lib/scope/recorders/MetricRecorder.js +15 -2
- package/dist/lib/scope/runtime.js +1 -1
- package/dist/lib/scope/types.js +1 -1
- package/dist/lib/sinks/fileSink.js +392 -0
- package/dist/recorders.js +10 -2
- package/dist/sinks.js +32 -0
- package/dist/trace.js +1 -1
- package/dist/types/index.d.ts +62 -2
- package/dist/types/lib/attempt/anySignal.d.ts +19 -0
- package/dist/types/lib/attempt/call.d.ts +88 -0
- package/dist/types/lib/attempt/category.d.ts +37 -0
- package/dist/types/lib/attempt/correlation.d.ts +95 -0
- package/dist/types/lib/attempt/deadline.d.ts +44 -0
- package/dist/types/lib/attempt/decision.d.ts +52 -0
- package/dist/types/lib/attempt/effect.d.ts +76 -0
- package/dist/types/lib/attempt/errors.d.ts +41 -0
- package/dist/types/lib/attempt/index.d.ts +18 -0
- package/dist/types/lib/attempt/name.d.ts +21 -0
- package/dist/types/lib/attempt/observed.d.ts +66 -0
- package/dist/types/lib/attempt/policy.d.ts +45 -0
- package/dist/types/lib/attempt/record.d.ts +11 -0
- package/dist/types/lib/attempt/retryLoopContext.d.ts +18 -0
- package/dist/types/lib/attempt/retryLoopTypes.d.ts +18 -0
- package/dist/types/lib/attempt/runner.d.ts +157 -0
- package/dist/types/lib/attempt/standalone.d.ts +47 -0
- package/dist/types/lib/attempt/types.d.ts +453 -0
- package/dist/types/lib/budget/index.d.ts +9 -0
- package/dist/types/lib/budget/timeBudget.d.ts +136 -0
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +88 -3
- package/dist/types/lib/builder/retryLoop.d.ts +56 -0
- package/dist/types/lib/builder/types.d.ts +35 -1
- package/dist/types/lib/decide/index.d.ts +1 -1
- package/dist/types/lib/decide/types.d.ts +3 -0
- package/dist/types/lib/engine/graph/StageNode.d.ts +11 -1
- package/dist/types/lib/engine/handlers/StageRunner.d.ts +8 -1
- package/dist/types/lib/engine/handlers/commitStage.d.ts +7 -0
- package/dist/types/lib/engine/handlers/stageError.d.ts +9 -0
- package/dist/types/lib/engine/index.d.ts +2 -2
- package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
- package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
- package/dist/types/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
- package/dist/types/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
- package/dist/types/lib/engine/narrative/formatting/sentences.d.ts +23 -0
- package/dist/types/lib/engine/narrative/index.d.ts +2 -2
- package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +27 -21
- package/dist/types/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
- package/dist/types/lib/engine/narrative/recorders/index.d.ts +1 -1
- package/dist/types/lib/engine/narrative/types.d.ts +74 -5
- package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
- package/dist/types/lib/engine/traversalContext.d.ts +7 -2
- package/dist/types/lib/engine/types.d.ts +52 -57
- package/dist/types/lib/errors/terminalFailure.d.ts +29 -0
- package/dist/types/lib/{decide → filter}/evaluator.d.ts +7 -2
- package/dist/types/lib/ids/idempotencyKey.d.ts +14 -0
- package/dist/types/lib/memory/StageContext.d.ts +123 -3
- package/dist/types/lib/memory/attention.d.ts +26 -0
- package/dist/types/lib/memory/borrowedMutation.d.ts +8 -0
- package/dist/types/lib/memory/frameTypes.d.ts +38 -0
- package/dist/types/lib/memory/redaction.d.ts +12 -0
- package/dist/types/lib/pause/types.d.ts +19 -0
- package/dist/types/lib/reactive/types.d.ts +36 -4
- package/dist/types/lib/recorder/AttemptRecorder.d.ts +141 -0
- package/dist/types/lib/recorder/ControlDepRecorder.d.ts +36 -2
- package/dist/types/lib/recorder/EmitRecorder.d.ts +3 -0
- package/dist/types/lib/recorder/InOutRecorder.d.ts +37 -1
- package/dist/types/lib/recorder/QualityRecorder.d.ts +32 -5
- package/dist/types/lib/recorder/TopologyRecorder.d.ts +35 -5
- package/dist/types/lib/recorder/attemptMetricRows.d.ts +11 -0
- package/dist/types/lib/recorder/attemptMetrics.d.ts +7 -0
- package/dist/types/lib/recorder/attemptMetricsTypes.d.ts +114 -0
- package/dist/types/lib/recorder/attemptOTel.d.ts +78 -0
- package/dist/types/lib/recorder/attemptSeries.d.ts +81 -0
- package/dist/types/lib/recorder/hooks.d.ts +9 -0
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +54 -6
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +46 -2
- package/dist/types/lib/runner/RunnableChart.d.ts +6 -0
- package/dist/types/lib/runner/attach.d.ts +2 -1
- package/dist/types/lib/runner/deadline.d.ts +42 -0
- package/dist/types/lib/runner/index.d.ts +3 -1
- package/dist/types/lib/runner/options.d.ts +17 -0
- package/dist/types/lib/runner/recordSink.d.ts +128 -0
- package/dist/types/lib/runner/resume.d.ts +3 -0
- package/dist/types/lib/runner/snapshot.d.ts +2 -2
- package/dist/types/lib/scope/ScopeFacade.d.ts +118 -4
- package/dist/types/lib/scope/recorders/DebugRecorder.d.ts +17 -3
- package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +10 -0
- package/dist/types/lib/scope/runtime.d.ts +3 -0
- package/dist/types/lib/scope/types.d.ts +6 -0
- package/dist/types/lib/sinks/fileSink.d.ts +135 -0
- package/dist/types/recorders.d.ts +8 -2
- package/dist/types/sinks.d.ts +23 -0
- package/dist/types/trace.d.ts +2 -2
- package/package.json +20 -6
- package/dist/esm/lib/decide/evaluator.js +0 -130
- package/dist/lib/decide/evaluator.js +0 -134
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Engine-owned attention is collected with retained facts; snapshots only copy this bounded projection. */
|
|
2
|
+
import type { Attention } from 'foottrace';
|
|
3
|
+
import type { AttemptRecord, AttemptSummary } from '../attempt/types.js';
|
|
4
|
+
/** One execution's ownership, pending summary, marks and omission accounting stay in this helper. */
|
|
5
|
+
export declare class StageAttention {
|
|
6
|
+
private marks?;
|
|
7
|
+
private omitted;
|
|
8
|
+
private retryPossible;
|
|
9
|
+
private summary?;
|
|
10
|
+
private terminal?;
|
|
11
|
+
/** A new execution starts fresh; an attempt discard never calls this. No collection is reconstructed. */
|
|
12
|
+
begin(): void;
|
|
13
|
+
/** Called only after the frame retained this attempt. Raw error, target and decision payloads are never read. */
|
|
14
|
+
recordAttempt(record: AttemptRecord, owner: string): void;
|
|
15
|
+
recordSummary(summary: AttemptSummary): void;
|
|
16
|
+
/** A summary-only cut wait has no phantom final attempt; use its actual retained summary. */
|
|
17
|
+
private projectSummary;
|
|
18
|
+
/** Only the explicit retained stage-error path calls this; a diagnostic value never classifies itself. */
|
|
19
|
+
stageFailed(errors: unknown): void;
|
|
20
|
+
attemptDropped(): void;
|
|
21
|
+
/** Keep only bounded exact references; one slot is reserved to disclose omissions. */
|
|
22
|
+
append(attention: Attention): void;
|
|
23
|
+
missing(): void;
|
|
24
|
+
/** Copy already collected bounded marks, never an attempt array, diagnostic bag or execution tree. */
|
|
25
|
+
snapshot(): readonly Attention[];
|
|
26
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { buildAttemptId, parseAttemptId } from 'foottrace';
|
|
2
|
+
const MAX_MARKS = 32;
|
|
3
|
+
const MAX_REFERENCES = 16;
|
|
4
|
+
const MAX_REFERENCE_LENGTH = 512;
|
|
5
|
+
const STOPPED_REASONS = new Set(['exhausted', 'declined', 'no-time-left']);
|
|
6
|
+
const MISSING_ATTENTION = Object.freeze({
|
|
7
|
+
kind: 'not-collected',
|
|
8
|
+
reason: 'EVIDENCE_NOT_COLLECTED',
|
|
9
|
+
evidence: Object.freeze([]),
|
|
10
|
+
});
|
|
11
|
+
function validReference(reference) {
|
|
12
|
+
return (typeof reference === 'string' &&
|
|
13
|
+
reference.length > 0 &&
|
|
14
|
+
reference.length <= MAX_REFERENCE_LENGTH &&
|
|
15
|
+
// eslint-disable-next-line no-control-regex -- Match the shared Foottrace evidence-reference boundary.
|
|
16
|
+
!/[\u0000-\u001f\u007f-\u009f]/.test(reference));
|
|
17
|
+
}
|
|
18
|
+
/** Reuse the one attempt grammar, including nested call addresses; never shorten an unaddressable proof. */
|
|
19
|
+
function attemptReference(record, owner) {
|
|
20
|
+
if (typeof record.series !== 'string' ||
|
|
21
|
+
!Number.isSafeInteger(record.attempt) ||
|
|
22
|
+
record.attempt < 1 ||
|
|
23
|
+
record.series.length + String(record.attempt).length + 1 > MAX_REFERENCE_LENGTH)
|
|
24
|
+
return undefined;
|
|
25
|
+
try {
|
|
26
|
+
const candidate = record.series + '@' + record.attempt;
|
|
27
|
+
const parts = parseAttemptId(candidate);
|
|
28
|
+
if (!parts ||
|
|
29
|
+
parts.runtimeStageId !== owner ||
|
|
30
|
+
(record.kind === 'stage' ? parts.call !== undefined : parts.call === undefined))
|
|
31
|
+
return undefined;
|
|
32
|
+
const canonical = buildAttemptId(parts.runtimeStageId, parts.attempt, parts.call);
|
|
33
|
+
return canonical === candidate && validReference(canonical) ? canonical : undefined;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** One execution's ownership, pending summary, marks and omission accounting stay in this helper. */
|
|
40
|
+
export class StageAttention {
|
|
41
|
+
marks;
|
|
42
|
+
omitted = false;
|
|
43
|
+
retryPossible = false;
|
|
44
|
+
summary;
|
|
45
|
+
terminal;
|
|
46
|
+
/** A new execution starts fresh; an attempt discard never calls this. No collection is reconstructed. */
|
|
47
|
+
begin() {
|
|
48
|
+
this.marks = undefined;
|
|
49
|
+
this.omitted = false;
|
|
50
|
+
this.retryPossible = false;
|
|
51
|
+
this.summary = undefined;
|
|
52
|
+
this.terminal = undefined;
|
|
53
|
+
}
|
|
54
|
+
/** Called only after the frame retained this attempt. Raw error, target and decision payloads are never read. */
|
|
55
|
+
recordAttempt(record, owner) {
|
|
56
|
+
const reference = attemptReference(record, owner);
|
|
57
|
+
if (record.kind === 'stage' && record.series === owner) {
|
|
58
|
+
if (record.retryLoop === undefined && (record.of ?? 1) > 1)
|
|
59
|
+
this.retryPossible = true;
|
|
60
|
+
if (reference && record.next !== 'retry') {
|
|
61
|
+
this.terminal = { next: record.next, reason: record.reason, effect: record.effect, evidence: reference };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// The runner calls recordSummary before its final attempt. Finish that pending projection now too.
|
|
65
|
+
this.projectSummary();
|
|
66
|
+
const add = (kind, reason) => {
|
|
67
|
+
if (reference)
|
|
68
|
+
this.append({ kind, reason, evidence: [reference] });
|
|
69
|
+
else
|
|
70
|
+
this.missing();
|
|
71
|
+
};
|
|
72
|
+
if (record.effect === 'unknown')
|
|
73
|
+
add('unknown-effect', 'UNKNOWN_EFFECT_RECORDED');
|
|
74
|
+
if (record.outcome === 'timeout')
|
|
75
|
+
add('timeout', 'TIMEOUT_RECORDED');
|
|
76
|
+
// An SDK's suggested next/reason is not its actual policy; only a later ordinal proves its retry.
|
|
77
|
+
const observed = record.kind === 'observed';
|
|
78
|
+
if ((!observed && record.next === 'retry') || record.attempt > 1)
|
|
79
|
+
add('retried', 'RETRY_RECORDED');
|
|
80
|
+
if (!observed &&
|
|
81
|
+
record.next === 'stop' &&
|
|
82
|
+
STOPPED_REASONS.has(record.reason) &&
|
|
83
|
+
(record.of ?? 1) > 1 &&
|
|
84
|
+
record.retryLoop === undefined)
|
|
85
|
+
add('gave-up', 'RETRY_STOP_RECORDED');
|
|
86
|
+
}
|
|
87
|
+
recordSummary(summary) {
|
|
88
|
+
this.summary = summary;
|
|
89
|
+
this.projectSummary();
|
|
90
|
+
}
|
|
91
|
+
/** A summary-only cut wait has no phantom final attempt; use its actual retained summary. */
|
|
92
|
+
projectSummary() {
|
|
93
|
+
const last = this.summary?.last;
|
|
94
|
+
if (!last)
|
|
95
|
+
return;
|
|
96
|
+
const terminal = this.terminal;
|
|
97
|
+
const matching = terminal?.next === last.next && terminal.reason === last.reason;
|
|
98
|
+
const add = (kind, reason, proof) => {
|
|
99
|
+
const reference = proof ?? 'attemptSummary';
|
|
100
|
+
const key = kind + ':' + reason;
|
|
101
|
+
const marks = this.marks;
|
|
102
|
+
const previous = marks?.get(key);
|
|
103
|
+
if (proof && marks && previous?.evidence.includes('attemptSummary')) {
|
|
104
|
+
marks.set(key, { ...previous, evidence: previous.evidence.filter((item) => item !== 'attemptSummary') });
|
|
105
|
+
}
|
|
106
|
+
this.append({ kind, reason, evidence: [reference] });
|
|
107
|
+
};
|
|
108
|
+
if (last.effect === 'unknown')
|
|
109
|
+
add('unknown-effect', 'UNKNOWN_EFFECT_RECORDED', matching && terminal.effect === 'unknown' ? terminal.evidence : undefined);
|
|
110
|
+
if (this.retryPossible && last.next === 'stop' && STOPPED_REASONS.has(last.reason))
|
|
111
|
+
add('gave-up', 'RETRY_STOP_RECORDED', matching ? terminal.evidence : undefined);
|
|
112
|
+
}
|
|
113
|
+
/** Only the explicit retained stage-error path calls this; a diagnostic value never classifies itself. */
|
|
114
|
+
stageFailed(errors) {
|
|
115
|
+
try {
|
|
116
|
+
const descriptor = errors && typeof errors === 'object'
|
|
117
|
+
? Object.getOwnPropertyDescriptor(errors, 'stageExecutionError')
|
|
118
|
+
: undefined;
|
|
119
|
+
if (descriptor && Object.hasOwn(descriptor, 'value')) {
|
|
120
|
+
this.append({ kind: 'error', reason: 'ERROR_RECORDED', evidence: ['errors:stageExecutionError'] });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
/* A malformed evidence bag is unavailable, never another stage failure. */
|
|
126
|
+
}
|
|
127
|
+
this.missing();
|
|
128
|
+
}
|
|
129
|
+
attemptDropped() {
|
|
130
|
+
this.append({ kind: 'not-collected', reason: 'EVIDENCE_NOT_COLLECTED', evidence: ['attemptsDropped'] });
|
|
131
|
+
}
|
|
132
|
+
/** Keep only bounded exact references; one slot is reserved to disclose omissions. */
|
|
133
|
+
append(attention) {
|
|
134
|
+
const key = attention.kind + ':' + attention.reason;
|
|
135
|
+
const previous = this.marks?.get(key);
|
|
136
|
+
const references = [...(previous?.evidence ?? [])];
|
|
137
|
+
for (const reference of attention.evidence) {
|
|
138
|
+
if (!validReference(reference)) {
|
|
139
|
+
this.omitted = true;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (references.includes(reference))
|
|
143
|
+
continue;
|
|
144
|
+
if (references.length >= MAX_REFERENCES) {
|
|
145
|
+
this.omitted = true;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
references.push(reference);
|
|
149
|
+
}
|
|
150
|
+
if (attention.kind !== 'not-collected' && references.length === 0) {
|
|
151
|
+
this.omitted = true;
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if (!previous && (this.marks?.size ?? 0) >= MAX_MARKS - 1) {
|
|
155
|
+
this.omitted = true;
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
(this.marks ??= new Map()).set(key, { kind: attention.kind, reason: attention.reason, evidence: references });
|
|
159
|
+
}
|
|
160
|
+
missing() {
|
|
161
|
+
this.omitted = true;
|
|
162
|
+
}
|
|
163
|
+
/** Copy already collected bounded marks, never an attempt array, diagnostic bag or execution tree. */
|
|
164
|
+
snapshot() {
|
|
165
|
+
const result = [...(this.marks?.values() ?? [])].map((attention) => Object.freeze({ ...attention, evidence: Object.freeze([...attention.evidence]) }));
|
|
166
|
+
if (this.omitted && !result.some((attention) => attention.kind === 'not-collected'))
|
|
167
|
+
result.push(MISSING_ATTENTION);
|
|
168
|
+
return Object.freeze(result);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZW50aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tZW1vcnkvYXR0ZW50aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTNELE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNyQixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFDakMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDM0UsTUFBTSxpQkFBaUIsR0FBYyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2pELElBQUksRUFBRSxlQUFlO0lBQ3JCLE1BQU0sRUFBRSx3QkFBd0I7SUFDaEMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0NBQzVCLENBQUMsQ0FBQztBQUVILFNBQVMsY0FBYyxDQUFDLFNBQWtCO0lBQ3hDLE9BQU8sQ0FDTCxPQUFPLFNBQVMsS0FBSyxRQUFRO1FBQzdCLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNwQixTQUFTLENBQUMsTUFBTSxJQUFJLG9CQUFvQjtRQUN4Qyx1R0FBdUc7UUFDdkcsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ2hELENBQUM7QUFDSixDQUFDO0FBRUQsNEdBQTRHO0FBQzVHLFNBQVMsZ0JBQWdCLENBQUMsTUFBcUIsRUFBRSxLQUFhO0lBQzVELElBQ0UsT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFFBQVE7UUFDakMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDckMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxvQkFBb0I7UUFFL0UsT0FBTyxTQUFTLENBQUM7SUFDbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN2RCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsSUFDRSxDQUFDLEtBQUs7WUFDTixLQUFLLENBQUMsY0FBYyxLQUFLLEtBQUs7WUFDOUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO1lBRS9FLE9BQU8sU0FBUyxDQUFDO1FBQ25CLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sU0FBUyxLQUFLLFNBQVMsSUFBSSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RGLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUlELHFHQUFxRztBQUNyRyxNQUFNLE9BQU8sY0FBYztJQUNqQixLQUFLLENBQTBCO0lBQy9CLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixPQUFPLENBQWtCO0lBQ3pCLFFBQVEsQ0FBaUI7SUFFakMseUdBQXlHO0lBQ3pHLEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBRUQsaUhBQWlIO0lBQ2pILGFBQWEsQ0FBQyxNQUFxQixFQUFFLEtBQWE7UUFDaEQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN2RCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUFFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQ3RGLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDM0csQ0FBQztRQUNILENBQUM7UUFDRCxtR0FBbUc7UUFDbkcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBdUIsRUFBRSxNQUEyQixFQUFFLEVBQUU7WUFDbkUsSUFBSSxTQUFTO2dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs7Z0JBQy9ELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUztZQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2xGLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTO1lBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JFLGtHQUFrRztRQUNsRyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztRQUM1QyxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUM7WUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDbkcsSUFDRSxDQUFDLFFBQVE7WUFDVCxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU07WUFDdEIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ2xDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUztZQUU5QixHQUFHLENBQUMsU0FBUyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUF1QjtRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELDZGQUE2RjtJQUNyRixjQUFjO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLE1BQU0sUUFBUSxHQUFHLFFBQVEsRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakYsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUF1QixFQUFFLE1BQTJCLEVBQUUsS0FBYyxFQUFFLEVBQUU7WUFDbkYsTUFBTSxTQUFTLEdBQUcsS0FBSyxJQUFJLGdCQUFnQixDQUFDO1lBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUNwRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNHLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFDM0IsR0FBRyxDQUNELGdCQUFnQixFQUNoQix5QkFBeUIsRUFDekIsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzFFLENBQUM7UUFDSixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2hGLEdBQUcsQ0FBQyxTQUFTLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsMEdBQTBHO0lBQzFHLFdBQVcsQ0FBQyxNQUFlO1FBQ3pCLElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUNkLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO2dCQUNsQyxDQUFDLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQztnQkFDaEUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNoQixJQUFJLFVBQVUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25HLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLDJFQUEyRTtRQUM3RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxzRkFBc0Y7SUFDdEYsTUFBTSxDQUFDLFNBQW9CO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25ELEtBQUssTUFBTSxTQUFTLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFBRSxTQUFTO1lBQzdDLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLGVBQWUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixPQUFPO1FBQ1QsQ0FBQztRQUNELENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELHNHQUFzRztJQUN0RyxRQUFRO1FBQ04sTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNsRixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUM7WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEgsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBFbmdpbmUtb3duZWQgYXR0ZW50aW9uIGlzIGNvbGxlY3RlZCB3aXRoIHJldGFpbmVkIGZhY3RzOyBzbmFwc2hvdHMgb25seSBjb3B5IHRoaXMgYm91bmRlZCBwcm9qZWN0aW9uLiAqL1xuaW1wb3J0IHR5cGUgeyBBdHRlbnRpb24gfSBmcm9tICdmb290dHJhY2UnO1xuaW1wb3J0IHsgYnVpbGRBdHRlbXB0SWQsIHBhcnNlQXR0ZW1wdElkIH0gZnJvbSAnZm9vdHRyYWNlJztcblxuaW1wb3J0IHR5cGUgeyBBdHRlbXB0UmVjb3JkLCBBdHRlbXB0U3VtbWFyeSB9IGZyb20gJy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuXG5jb25zdCBNQVhfTUFSS1MgPSAzMjtcbmNvbnN0IE1BWF9SRUZFUkVOQ0VTID0gMTY7XG5jb25zdCBNQVhfUkVGRVJFTkNFX0xFTkdUSCA9IDUxMjtcbmNvbnN0IFNUT1BQRURfUkVBU09OUyA9IG5ldyBTZXQoWydleGhhdXN0ZWQnLCAnZGVjbGluZWQnLCAnbm8tdGltZS1sZWZ0J10pO1xuY29uc3QgTUlTU0lOR19BVFRFTlRJT046IEF0dGVudGlvbiA9IE9iamVjdC5mcmVlemUoe1xuICBraW5kOiAnbm90LWNvbGxlY3RlZCcsXG4gIHJlYXNvbjogJ0VWSURFTkNFX05PVF9DT0xMRUNURUQnLFxuICBldmlkZW5jZTogT2JqZWN0LmZyZWV6ZShbXSksXG59KTtcblxuZnVuY3Rpb24gdmFsaWRSZWZlcmVuY2UocmVmZXJlbmNlOiB1bmtub3duKTogcmVmZXJlbmNlIGlzIHN0cmluZyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHJlZmVyZW5jZSA9PT0gJ3N0cmluZycgJiZcbiAgICByZWZlcmVuY2UubGVuZ3RoID4gMCAmJlxuICAgIHJlZmVyZW5jZS5sZW5ndGggPD0gTUFYX1JFRkVSRU5DRV9MRU5HVEggJiZcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udHJvbC1yZWdleCAtLSBNYXRjaCB0aGUgc2hhcmVkIEZvb3R0cmFjZSBldmlkZW5jZS1yZWZlcmVuY2UgYm91bmRhcnkuXG4gICAgIS9bXFx1MDAwMC1cXHUwMDFmXFx1MDA3Zi1cXHUwMDlmXS8udGVzdChyZWZlcmVuY2UpXG4gICk7XG59XG5cbi8qKiBSZXVzZSB0aGUgb25lIGF0dGVtcHQgZ3JhbW1hciwgaW5jbHVkaW5nIG5lc3RlZCBjYWxsIGFkZHJlc3NlczsgbmV2ZXIgc2hvcnRlbiBhbiB1bmFkZHJlc3NhYmxlIHByb29mLiAqL1xuZnVuY3Rpb24gYXR0ZW1wdFJlZmVyZW5jZShyZWNvcmQ6IEF0dGVtcHRSZWNvcmQsIG93bmVyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoXG4gICAgdHlwZW9mIHJlY29yZC5zZXJpZXMgIT09ICdzdHJpbmcnIHx8XG4gICAgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHJlY29yZC5hdHRlbXB0KSB8fFxuICAgIHJlY29yZC5hdHRlbXB0IDwgMSB8fFxuICAgIHJlY29yZC5zZXJpZXMubGVuZ3RoICsgU3RyaW5nKHJlY29yZC5hdHRlbXB0KS5sZW5ndGggKyAxID4gTUFYX1JFRkVSRU5DRV9MRU5HVEhcbiAgKVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gcmVjb3JkLnNlcmllcyArICdAJyArIHJlY29yZC5hdHRlbXB0O1xuICAgIGNvbnN0IHBhcnRzID0gcGFyc2VBdHRlbXB0SWQoY2FuZGlkYXRlKTtcbiAgICBpZiAoXG4gICAgICAhcGFydHMgfHxcbiAgICAgIHBhcnRzLnJ1bnRpbWVTdGFnZUlkICE9PSBvd25lciB8fFxuICAgICAgKHJlY29yZC5raW5kID09PSAnc3RhZ2UnID8gcGFydHMuY2FsbCAhPT0gdW5kZWZpbmVkIDogcGFydHMuY2FsbCA9PT0gdW5kZWZpbmVkKVxuICAgIClcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY2Fub25pY2FsID0gYnVpbGRBdHRlbXB0SWQocGFydHMucnVudGltZVN0YWdlSWQsIHBhcnRzLmF0dGVtcHQsIHBhcnRzLmNhbGwpO1xuICAgIHJldHVybiBjYW5vbmljYWwgPT09IGNhbmRpZGF0ZSAmJiB2YWxpZFJlZmVyZW5jZShjYW5vbmljYWwpID8gY2Fub25pY2FsIDogdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbnR5cGUgVGVybWluYWxQcm9vZiA9IFBpY2s8QXR0ZW1wdFJlY29yZCwgJ25leHQnIHwgJ3JlYXNvbicgfCAnZWZmZWN0Jz4gJiB7IHJlYWRvbmx5IGV2aWRlbmNlOiBzdHJpbmcgfTtcblxuLyoqIE9uZSBleGVjdXRpb24ncyBvd25lcnNoaXAsIHBlbmRpbmcgc3VtbWFyeSwgbWFya3MgYW5kIG9taXNzaW9uIGFjY291bnRpbmcgc3RheSBpbiB0aGlzIGhlbHBlci4gKi9cbmV4cG9ydCBjbGFzcyBTdGFnZUF0dGVudGlvbiB7XG4gIHByaXZhdGUgbWFya3M/OiBNYXA8c3RyaW5nLCBBdHRlbnRpb24+O1xuICBwcml2YXRlIG9taXR0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXRyeVBvc3NpYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgc3VtbWFyeT86IEF0dGVtcHRTdW1tYXJ5O1xuICBwcml2YXRlIHRlcm1pbmFsPzogVGVybWluYWxQcm9vZjtcblxuICAvKiogQSBuZXcgZXhlY3V0aW9uIHN0YXJ0cyBmcmVzaDsgYW4gYXR0ZW1wdCBkaXNjYXJkIG5ldmVyIGNhbGxzIHRoaXMuIE5vIGNvbGxlY3Rpb24gaXMgcmVjb25zdHJ1Y3RlZC4gKi9cbiAgYmVnaW4oKTogdm9pZCB7XG4gICAgdGhpcy5tYXJrcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9taXR0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJldHJ5UG9zc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnN1bW1hcnkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50ZXJtaW5hbCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBDYWxsZWQgb25seSBhZnRlciB0aGUgZnJhbWUgcmV0YWluZWQgdGhpcyBhdHRlbXB0LiBSYXcgZXJyb3IsIHRhcmdldCBhbmQgZGVjaXNpb24gcGF5bG9hZHMgYXJlIG5ldmVyIHJlYWQuICovXG4gIHJlY29yZEF0dGVtcHQocmVjb3JkOiBBdHRlbXB0UmVjb3JkLCBvd25lcjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gYXR0ZW1wdFJlZmVyZW5jZShyZWNvcmQsIG93bmVyKTtcbiAgICBpZiAocmVjb3JkLmtpbmQgPT09ICdzdGFnZScgJiYgcmVjb3JkLnNlcmllcyA9PT0gb3duZXIpIHtcbiAgICAgIGlmIChyZWNvcmQucmV0cnlMb29wID09PSB1bmRlZmluZWQgJiYgKHJlY29yZC5vZiA/PyAxKSA+IDEpIHRoaXMucmV0cnlQb3NzaWJsZSA9IHRydWU7XG4gICAgICBpZiAocmVmZXJlbmNlICYmIHJlY29yZC5uZXh0ICE9PSAncmV0cnknKSB7XG4gICAgICAgIHRoaXMudGVybWluYWwgPSB7IG5leHQ6IHJlY29yZC5uZXh0LCByZWFzb246IHJlY29yZC5yZWFzb24sIGVmZmVjdDogcmVjb3JkLmVmZmVjdCwgZXZpZGVuY2U6IHJlZmVyZW5jZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBUaGUgcnVubmVyIGNhbGxzIHJlY29yZFN1bW1hcnkgYmVmb3JlIGl0cyBmaW5hbCBhdHRlbXB0LiBGaW5pc2ggdGhhdCBwZW5kaW5nIHByb2plY3Rpb24gbm93IHRvby5cbiAgICB0aGlzLnByb2plY3RTdW1tYXJ5KCk7XG4gICAgY29uc3QgYWRkID0gKGtpbmQ6IEF0dGVudGlvblsna2luZCddLCByZWFzb246IEF0dGVudGlvblsncmVhc29uJ10pID0+IHtcbiAgICAgIGlmIChyZWZlcmVuY2UpIHRoaXMuYXBwZW5kKHsga2luZCwgcmVhc29uLCBldmlkZW5jZTogW3JlZmVyZW5jZV0gfSk7XG4gICAgICBlbHNlIHRoaXMubWlzc2luZygpO1xuICAgIH07XG4gICAgaWYgKHJlY29yZC5lZmZlY3QgPT09ICd1bmtub3duJykgYWRkKCd1bmtub3duLWVmZmVjdCcsICdVTktOT1dOX0VGRkVDVF9SRUNPUkRFRCcpO1xuICAgIGlmIChyZWNvcmQub3V0Y29tZSA9PT0gJ3RpbWVvdXQnKSBhZGQoJ3RpbWVvdXQnLCAnVElNRU9VVF9SRUNPUkRFRCcpO1xuICAgIC8vIEFuIFNESydzIHN1Z2dlc3RlZCBuZXh0L3JlYXNvbiBpcyBub3QgaXRzIGFjdHVhbCBwb2xpY3k7IG9ubHkgYSBsYXRlciBvcmRpbmFsIHByb3ZlcyBpdHMgcmV0cnkuXG4gICAgY29uc3Qgb2JzZXJ2ZWQgPSByZWNvcmQua2luZCA9PT0gJ29ic2VydmVkJztcbiAgICBpZiAoKCFvYnNlcnZlZCAmJiByZWNvcmQubmV4dCA9PT0gJ3JldHJ5JykgfHwgcmVjb3JkLmF0dGVtcHQgPiAxKSBhZGQoJ3JldHJpZWQnLCAnUkVUUllfUkVDT1JERUQnKTtcbiAgICBpZiAoXG4gICAgICAhb2JzZXJ2ZWQgJiZcbiAgICAgIHJlY29yZC5uZXh0ID09PSAnc3RvcCcgJiZcbiAgICAgIFNUT1BQRURfUkVBU09OUy5oYXMocmVjb3JkLnJlYXNvbikgJiZcbiAgICAgIChyZWNvcmQub2YgPz8gMSkgPiAxICYmXG4gICAgICByZWNvcmQucmV0cnlMb29wID09PSB1bmRlZmluZWRcbiAgICApXG4gICAgICBhZGQoJ2dhdmUtdXAnLCAnUkVUUllfU1RPUF9SRUNPUkRFRCcpO1xuICB9XG5cbiAgcmVjb3JkU3VtbWFyeShzdW1tYXJ5OiBBdHRlbXB0U3VtbWFyeSk6IHZvaWQge1xuICAgIHRoaXMuc3VtbWFyeSA9IHN1bW1hcnk7XG4gICAgdGhpcy5wcm9qZWN0U3VtbWFyeSgpO1xuICB9XG5cbiAgLyoqIEEgc3VtbWFyeS1vbmx5IGN1dCB3YWl0IGhhcyBubyBwaGFudG9tIGZpbmFsIGF0dGVtcHQ7IHVzZSBpdHMgYWN0dWFsIHJldGFpbmVkIHN1bW1hcnkuICovXG4gIHByaXZhdGUgcHJvamVjdFN1bW1hcnkoKTogdm9pZCB7XG4gICAgY29uc3QgbGFzdCA9IHRoaXMuc3VtbWFyeT8ubGFzdDtcbiAgICBpZiAoIWxhc3QpIHJldHVybjtcbiAgICBjb25zdCB0ZXJtaW5hbCA9IHRoaXMudGVybWluYWw7XG4gICAgY29uc3QgbWF0Y2hpbmcgPSB0ZXJtaW5hbD8ubmV4dCA9PT0gbGFzdC5uZXh0ICYmIHRlcm1pbmFsLnJlYXNvbiA9PT0gbGFzdC5yZWFzb247XG4gICAgY29uc3QgYWRkID0gKGtpbmQ6IEF0dGVudGlvblsna2luZCddLCByZWFzb246IEF0dGVudGlvblsncmVhc29uJ10sIHByb29mPzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCByZWZlcmVuY2UgPSBwcm9vZiA/PyAnYXR0ZW1wdFN1bW1hcnknO1xuICAgICAgY29uc3Qga2V5ID0ga2luZCArICc6JyArIHJlYXNvbjtcbiAgICAgIGNvbnN0IG1hcmtzID0gdGhpcy5tYXJrcztcbiAgICAgIGNvbnN0IHByZXZpb3VzID0gbWFya3M/LmdldChrZXkpO1xuICAgICAgaWYgKHByb29mICYmIG1hcmtzICYmIHByZXZpb3VzPy5ldmlkZW5jZS5pbmNsdWRlcygnYXR0ZW1wdFN1bW1hcnknKSkge1xuICAgICAgICBtYXJrcy5zZXQoa2V5LCB7IC4uLnByZXZpb3VzLCBldmlkZW5jZTogcHJldmlvdXMuZXZpZGVuY2UuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSAnYXR0ZW1wdFN1bW1hcnknKSB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYXBwZW5kKHsga2luZCwgcmVhc29uLCBldmlkZW5jZTogW3JlZmVyZW5jZV0gfSk7XG4gICAgfTtcbiAgICBpZiAobGFzdC5lZmZlY3QgPT09ICd1bmtub3duJylcbiAgICAgIGFkZChcbiAgICAgICAgJ3Vua25vd24tZWZmZWN0JyxcbiAgICAgICAgJ1VOS05PV05fRUZGRUNUX1JFQ09SREVEJyxcbiAgICAgICAgbWF0Y2hpbmcgJiYgdGVybWluYWwuZWZmZWN0ID09PSAndW5rbm93bicgPyB0ZXJtaW5hbC5ldmlkZW5jZSA6IHVuZGVmaW5lZCxcbiAgICAgICk7XG4gICAgaWYgKHRoaXMucmV0cnlQb3NzaWJsZSAmJiBsYXN0Lm5leHQgPT09ICdzdG9wJyAmJiBTVE9QUEVEX1JFQVNPTlMuaGFzKGxhc3QucmVhc29uKSlcbiAgICAgIGFkZCgnZ2F2ZS11cCcsICdSRVRSWV9TVE9QX1JFQ09SREVEJywgbWF0Y2hpbmcgPyB0ZXJtaW5hbC5ldmlkZW5jZSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKiogT25seSB0aGUgZXhwbGljaXQgcmV0YWluZWQgc3RhZ2UtZXJyb3IgcGF0aCBjYWxscyB0aGlzOyBhIGRpYWdub3N0aWMgdmFsdWUgbmV2ZXIgY2xhc3NpZmllcyBpdHNlbGYuICovXG4gIHN0YWdlRmFpbGVkKGVycm9yczogdW5rbm93bik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZXNjcmlwdG9yID1cbiAgICAgICAgZXJyb3JzICYmIHR5cGVvZiBlcnJvcnMgPT09ICdvYmplY3QnXG4gICAgICAgICAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVycm9ycywgJ3N0YWdlRXhlY3V0aW9uRXJyb3InKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGRlc2NyaXB0b3IgJiYgT2JqZWN0Lmhhc093bihkZXNjcmlwdG9yLCAndmFsdWUnKSkge1xuICAgICAgICB0aGlzLmFwcGVuZCh7IGtpbmQ6ICdlcnJvcicsIHJlYXNvbjogJ0VSUk9SX1JFQ09SREVEJywgZXZpZGVuY2U6IFsnZXJyb3JzOnN0YWdlRXhlY3V0aW9uRXJyb3InXSB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLyogQSBtYWxmb3JtZWQgZXZpZGVuY2UgYmFnIGlzIHVuYXZhaWxhYmxlLCBuZXZlciBhbm90aGVyIHN0YWdlIGZhaWx1cmUuICovXG4gICAgfVxuICAgIHRoaXMubWlzc2luZygpO1xuICB9XG5cbiAgYXR0ZW1wdERyb3BwZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBlbmQoeyBraW5kOiAnbm90LWNvbGxlY3RlZCcsIHJlYXNvbjogJ0VWSURFTkNFX05PVF9DT0xMRUNURUQnLCBldmlkZW5jZTogWydhdHRlbXB0c0Ryb3BwZWQnXSB9KTtcbiAgfVxuXG4gIC8qKiBLZWVwIG9ubHkgYm91bmRlZCBleGFjdCByZWZlcmVuY2VzOyBvbmUgc2xvdCBpcyByZXNlcnZlZCB0byBkaXNjbG9zZSBvbWlzc2lvbnMuICovXG4gIGFwcGVuZChhdHRlbnRpb246IEF0dGVudGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IGF0dGVudGlvbi5raW5kICsgJzonICsgYXR0ZW50aW9uLnJlYXNvbjtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMubWFya3M/LmdldChrZXkpO1xuICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBbLi4uKHByZXZpb3VzPy5ldmlkZW5jZSA/PyBbXSldO1xuICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGF0dGVudGlvbi5ldmlkZW5jZSkge1xuICAgICAgaWYgKCF2YWxpZFJlZmVyZW5jZShyZWZlcmVuY2UpKSB7XG4gICAgICAgIHRoaXMub21pdHRlZCA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHJlZmVyZW5jZXMuaW5jbHVkZXMocmVmZXJlbmNlKSkgY29udGludWU7XG4gICAgICBpZiAocmVmZXJlbmNlcy5sZW5ndGggPj0gTUFYX1JFRkVSRU5DRVMpIHtcbiAgICAgICAgdGhpcy5vbWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZWZlcmVuY2VzLnB1c2gocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgaWYgKGF0dGVudGlvbi5raW5kICE9PSAnbm90LWNvbGxlY3RlZCcgJiYgcmVmZXJlbmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMub21pdHRlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghcHJldmlvdXMgJiYgKHRoaXMubWFya3M/LnNpemUgPz8gMCkgPj0gTUFYX01BUktTIC0gMSkge1xuICAgICAgdGhpcy5vbWl0dGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKHRoaXMubWFya3MgPz89IG5ldyBNYXAoKSkuc2V0KGtleSwgeyBraW5kOiBhdHRlbnRpb24ua2luZCwgcmVhc29uOiBhdHRlbnRpb24ucmVhc29uLCBldmlkZW5jZTogcmVmZXJlbmNlcyB9KTtcbiAgfVxuXG4gIG1pc3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5vbWl0dGVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBDb3B5IGFscmVhZHkgY29sbGVjdGVkIGJvdW5kZWQgbWFya3MsIG5ldmVyIGFuIGF0dGVtcHQgYXJyYXksIGRpYWdub3N0aWMgYmFnIG9yIGV4ZWN1dGlvbiB0cmVlLiAqL1xuICBzbmFwc2hvdCgpOiByZWFkb25seSBBdHRlbnRpb25bXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gWy4uLih0aGlzLm1hcmtzPy52YWx1ZXMoKSA/PyBbXSldLm1hcCgoYXR0ZW50aW9uKSA9PlxuICAgICAgT2JqZWN0LmZyZWV6ZSh7IC4uLmF0dGVudGlvbiwgZXZpZGVuY2U6IE9iamVjdC5mcmVlemUoWy4uLmF0dGVudGlvbi5ldmlkZW5jZV0pIH0pLFxuICAgICk7XG4gICAgaWYgKHRoaXMub21pdHRlZCAmJiAhcmVzdWx0LnNvbWUoKGF0dGVudGlvbikgPT4gYXR0ZW50aW9uLmtpbmQgPT09ICdub3QtY29sbGVjdGVkJykpIHJlc3VsdC5wdXNoKE1JU1NJTkdfQVRURU5USU9OKTtcbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShyZXN1bHQpO1xuICB9XG59XG4iXX0=
|
|
@@ -47,6 +47,14 @@ export declare function firstDifferingPath(before: unknown, after: unknown, pref
|
|
|
47
47
|
* path names it); this text names the stage the handle came from.
|
|
48
48
|
*/
|
|
49
49
|
export declare function deadFrameMessage(stageName: string, runtimeStageId: string | undefined, key: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* The refusal raised in an attempt that has ENDED (P1b) — timed out, aborted or
|
|
52
|
+
* failed — when the function behind it touches its scope anyway. The engine
|
|
53
|
+
* stopped waiting for it; whatever it does now would land beside a later
|
|
54
|
+
* attempt (or after the stage's commit), so it is refused. A write or emit is
|
|
55
|
+
* recorded on the stage (`StageSnapshot.lateWrites`) before this is thrown.
|
|
56
|
+
*/
|
|
57
|
+
export declare function lateAttemptMessage(stageName: string, series: string, attempt: number, key: string): string;
|
|
50
58
|
/**
|
|
51
59
|
* The warning text for a key the stage WROTE after changing, in place, the
|
|
52
60
|
* committed value it had read before its first write (copy-on-write, 9.29.0).
|
|
@@ -92,6 +92,19 @@ export function deadFrameMessage(stageName, runtimeStageId, key) {
|
|
|
92
92
|
"stage's commit it has no frame to land in, so the write would vanish with no trace row. " +
|
|
93
93
|
"Read the key again through the CURRENT stage's scope and write there.");
|
|
94
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* The refusal raised in an attempt that has ENDED (P1b) — timed out, aborted or
|
|
97
|
+
* failed — when the function behind it touches its scope anyway. The engine
|
|
98
|
+
* stopped waiting for it; whatever it does now would land beside a later
|
|
99
|
+
* attempt (or after the stage's commit), so it is refused. A write or emit is
|
|
100
|
+
* recorded on the stage (`StageSnapshot.lateWrites`) before this is thrown.
|
|
101
|
+
*/
|
|
102
|
+
export function lateAttemptMessage(stageName, series, attempt, key) {
|
|
103
|
+
return (`[footprint] Stage "${stageName}" (${series}): attempt ${attempt} has already ended, and \`${key}\` was ` +
|
|
104
|
+
'touched through its scope afterwards — refused. The engine stopped waiting for this attempt (its cap, the ' +
|
|
105
|
+
"run's deadline, a cancellation, or its own error); its work must not land beside a later attempt. Pass " +
|
|
106
|
+
'`scope.$attempt().signal` to the calls it makes, so they stop when the attempt does.');
|
|
107
|
+
}
|
|
95
108
|
/**
|
|
96
109
|
* The warning text for a key the stage WROTE after changing, in place, the
|
|
97
110
|
* committed value it had read before its first write (copy-on-write, 9.29.0).
|
|
@@ -127,4 +140,4 @@ export function borrowedMutationMessage(stageName, key, path) {
|
|
|
127
140
|
'This usually comes from mutating an element reached by `find`/`filter`/`for…of`/`forEach`, ' +
|
|
128
141
|
'which the scope proxy cannot intercept.');
|
|
129
142
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9ycm93ZWRNdXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L2JvcnJvd2VkTXV0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsOEVBQThFO0FBQzlFLFNBQVMsV0FBVyxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsU0FBa0I7SUFDdEUsSUFBSSxTQUFTO1FBQUUsT0FBTyxHQUFHLE1BQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUM5QyxPQUFPLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7QUFDMUQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBZSxFQUFFLEtBQWMsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDO0lBQ3hGLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDekQsSUFBSSxLQUFLLElBQUksRUFBRTtRQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsMkNBQTJDO0lBQzNFLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFFaEgsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxJQUFJLGFBQWEsS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8s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QUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekUsT0FBTyxDQUNMLHNCQUFzQixTQUFTLGVBQWUsS0FBSyx3Q0FBd0M7UUFDM0Ysb0dBQW9HO1FBQ3BHLG1HQUFtRztRQUNuRyw0REFBNEQ7UUFDNUQsMENBQTBDO1FBQzFDLEtBQUs7UUFDTCx5REFBeUQ7UUFDekQsd0RBQXdELEdBQUcsY0FBYztRQUN6RSw2RkFBNkY7UUFDN0YseUNBQXlDLENBQzFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBtZW1vcnkvYm9ycm93ZWRNdXRhdGlvbiDigJQgdGhlIGhvbmVzdCBib3VuZGFyeSdzIHR3byB0ZXh0czogdGhlIGRldi1tb2RlXG4gKiBSRVBPUlQgZm9yIGEgd3JpdGUgdGhlIGVuZ2luZSBjYW5ub3Qgc2VlICh7QGxpbmsgYm9ycm93ZWRNdXRhdGlvbk1lc3NhZ2V9KVxuICogYW5kIHRoZSBSRUZVU0FMIGZvciBhIHdyaXRlIGZyb20gYSBoYW5kbGUgaGVsZCBwYXN0IGl0cyBzdGFnZVxuICogKHtAbGluayBkZWFkRnJhbWVNZXNzYWdlfSwgdGhyb3duIGJ5IGBTY29wZUZhY2FkZSDCtyBhc3NlcnRMaXZlYCkuXG4gKlxuICog4pSA4pSAIFRoZSBob25lc3QgYm91bmRhcnkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gKiBUaGUgdHlwZWQgc2NvcGUgaW50ZXJjZXB0cyBldmVyeSB3cml0ZSBpdCBjYW4gcmVhY2g6IGEgcHJvcGVydHkgYXQgYW55XG4gKiBkZXB0aCwgYW4gaW5kZXhlZCBlbGVtZW50LCBhbiBhcnJheSBtZXRob2QuIFdoYXQgaXQgY2Fubm90IHJlYWNoIGlzIGFuXG4gKiBlbGVtZW50IGhhbmRlZCBvdXQgYnkgYSBSRUFEIE1FVEhPRCDigJQgYGZpbmRgLCBgZmlsdGVyYCwgYGZvcuKApm9mYCwgYGZvckVhY2hgLFxuICogZGVzdHJ1Y3R1cmluZyDigJQgYmVjYXVzZSB3cmFwcGluZyB0aG9zZSB3b3VsZCBtZWFuIHJldHVybmluZyBwcm94aWVzIG91dCBvZlxuICogZXZlcnkgcmVhZCAoYG1hcGAgd291bGQgYnVpbGQgYW4gYXJyYXkgb2YgcHJveGllcywgYGZpbHRlcmAgd291bGQgY29tcGFyZVxuICogcHJveGllcywgYSByZXR1cm5lZCB2YWx1ZSB3b3VsZCBlc2NhcGUgdGhlIHN0YWdlIHN0aWxsIGJvdW5kIHRvIGl0KS4gVGhhdCBpc1xuICogYSBjb3N0IHRoZSBsaWJyYXJ5IHNob3VsZCBub3QgcGF5LCBhbmQgYSBzZW1hbnRpYyBjaGFuZ2UgaXQgc2hvdWxkIG5vdCBtYWtlLlxuICpcbiAqIFNvIHRoZSBhbnN3ZXIgZm9yIHRoYXQgZmFtaWx5IGlzIG5vdCBpbnRlcmNlcHRpb24g4oCUIGl0IGlzIGEgUkVQT1JULiBBIHJlYWRcbiAqIGlzIEJPUlJPV0VEOyBtdXRhdGluZyBpdCBpbiBwbGFjZSBpcyBvdXQgb2YgY29udHJhY3QuIFRoaXMgbW9kdWxlIGRldGVjdHMgdGhlXG4gKiB2aW9sYXRpb24gYWZ0ZXIgdGhlIGZhY3QgYW5kIG5hbWVzIGl0IChhIGRldi1tb2RlIHdhcm5pbmcgYXQgY29tbWl0IOKAlCB0aGVcbiAqIHdyaXRlIGFscmVhZHkgaGFwcGVuZWQsIHNvIGl0IGNhbm5vdCBiZSByZWZ1c2VkKSwgaW5zdGVhZCBvZiBsZXR0aW5nIHRoZSBydW5cbiAqIGVuZCB3aXRoIGEgY29tbWl0IGxvZyB0aGF0IGRpc2FncmVlcyB3aXRoIGZpbmFsIHN0YXRlIGFuZCBub3RoaW5nIHNheWluZyBzby5cbiAqXG4gKiDilIDilIAgSG93IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogYHJlYWRUcmFja2luZzogJ2Z1bGwnYCAodGhlIGRlZmF1bHQpIGFscmVhZHkgcmV0YWlucyBhIENMT05FIG9mIGV2ZXJ5IHZhbHVlXG4gKiBhIHN0YWdlIHJlYWQuIEF0IGNvbW1pdCwgYSBrZXkgdGhlIHN0YWdlIHJlYWQgYnV0IG5ldmVyIFdST1RFIG11c3Qgc3RpbGxcbiAqIGhvbGQgd2hhdCBpdCBoZWxkIGF0IHJlYWQgdGltZSDigJQgY29tbWl0dGVkIHN0YXRlIGlzIGltbXV0YWJsZS1hZnRlci1zd2FwIGFuZFxuICogdGhlIGJ1ZmZlcidzIHdvcmtpbmcgY29weSBpcyBwcml2YXRlLiBJZiBpdCBkaWZmZXJzLCB0aGUgb25seSB0aGluZyB0aGF0IGNhblxuICogaGF2ZSBjaGFuZ2VkIGl0IGlzIHRoZSBzdGFnZSBpdHNlbGYsIGluIHBsYWNlLlxuICpcbiAqIERldi1tb2RlIG9ubHkgKGBlbmFibGVEZXZNb2RlKClgKSwgc28gdGhlIGRlZmF1bHQgcnVuIHBheXMgbm90aGluZyBhbmQgaXRzXG4gKiBieXRlcyBhcmUgdW5jaGFuZ2VkLlxuICovXG5cbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJ2Zvb3R0cmFjZSc7XG5cbi8qKiBSZW5kZXIgb25lIHBhdGggc2VnbWVudCBmb3IgYSBodW1hbjogYGxpbmVzWzBdLnF0eWAsIG5vdCBgbGluZXMuMC5xdHlgLiAqL1xuZnVuY3Rpb24gam9pblNlZ21lbnQocHJlZml4OiBzdHJpbmcsIHNlZ21lbnQ6IHN0cmluZywgaW50b0FycmF5OiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKGludG9BcnJheSkgcmV0dXJuIGAke3ByZWZpeH1bJHtzZWdtZW50fV1gO1xuICByZXR1cm4gcHJlZml4ID09PSAnJyA/IHNlZ21lbnQgOiBgJHtwcmVmaXh9LiR7c2VnbWVudH1gO1xufVxuXG4vKipcbiAqIFRoZSBmaXJzdCBwYXRoIGF0IHdoaWNoIGBhZnRlcmAgc3RvcHMgYWdyZWVpbmcgd2l0aCBgYmVmb3JlYCwgb3IgYHVuZGVmaW5lZGBcbiAqIHdoZW4gdGhleSBhcmUgc3RydWN0dXJhbGx5IGVxdWFsLiBEZXB0aC1maXJzdCwgb3duIGtleXMgb25seSDigJQgdGhlIHNhbWVcbiAqIHNoYXBlcyBgZGVlcEVxdWFsYCBoYW5kbGVzLCBzaW5jZSBjb21taXR0ZWQgc3RhdGUgaXMgSlNPTi1zaGFwZWQuXG4gKlxuICogQ3ljbGUtc2FmZSBieSBjb25zdHJ1Y3Rpb246IGl0IG9ubHkgcmVjdXJzZXMgaW50byBwYWlycyB0aGF0IGFyZSBub3QgYWxyZWFkeVxuICogYGRlZXBFcXVhbGAsIGFuZCBzdG9wcyBhdCB0aGUgZmlyc3QgZGlzYWdyZWVtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlyc3REaWZmZXJpbmdQYXRoKGJlZm9yZTogdW5rbm93biwgYWZ0ZXI6IHVua25vd24sIHByZWZpeCA9ICcnLCBkZXB0aCA9IDApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoZGVlcEVxdWFsKGJlZm9yZSwgYWZ0ZXIsICdjb3BpZXMnKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKGRlcHRoID49IDI0KSByZXR1cm4gcHJlZml4OyAvLyBwYXRob2xvZ2ljYWwgbmVzdGluZyDigJQgbmFtZSB3aGF0IHdlIGhhdmVcbiAgaWYgKGJlZm9yZSA9PT0gbnVsbCB8fCBhZnRlciA9PT0gbnVsbCB8fCB0eXBlb2YgYmVmb3JlICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYWZ0ZXIgIT09ICdvYmplY3QnKSByZXR1cm4gcHJlZml4O1xuXG4gIGNvbnN0IGJlZm9yZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGJlZm9yZSk7XG4gIGlmIChiZWZvcmVJc0FycmF5ICE9PSBBcnJheS5pc0FycmF5KGFmdGVyKSkgcmV0dXJuIHByZWZpeDtcblxuICBpZiAoYmVmb3JlSXNBcnJheSkge1xuICAgIGNvbnN0IGEgPSBiZWZvcmUgYXMgdW5rbm93bltdO1xuICAgIGNvbnN0IGIgPSBhZnRlciBhcyB1bmtub3duW107XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIHByZWZpeDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGRlZXBlciA9IGZpcnN0RGlmZmVyaW5nUGF0aChhW2ldLCBiW2ldLCBqb2luU2VnbWVudChwcmVmaXgsIFN0cmluZyhpKSwgdHJ1ZSksIGRlcHRoICsgMSk7XG4gICAgICBpZiAoZGVlcGVyICE9PSB1bmRlZmluZWQpIHJldHVybiBkZWVwZXI7XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXg7XG4gIH1cblxuICBjb25zdCBhID0gYmVmb3JlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBiID0gYWZ0ZXIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGtleXMgPSBuZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhhKSwgLi4uT2JqZWN0LmtleXMoYildKTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGNvbnN0IGRlZXBlciA9IGZpcnN0RGlmZmVyaW5nUGF0aChhW2tleV0sIGJba2V5XSwgam9pblNlZ21lbnQocHJlZml4LCBrZXksIGZhbHNlKSwgZGVwdGggKyAxKTtcbiAgICBpZiAoZGVlcGVyICE9PSB1bmRlZmluZWQpIHJldHVybiBkZWVwZXI7XG4gIH1cbiAgcmV0dXJuIHByZWZpeDtcbn1cblxuLyoqXG4gKiBUaGUgcmVmdXNhbCB0ZXh0IGZvciBhIHdyaXRlIHRoYXQgcmVhY2hlZCBhIGZyYW1lIEFGVEVSIGl0cyBzdGFnZSBjb21taXR0ZWQuXG4gKiBBIHNjb3BlLCBhbmQgZXZlcnkgcHJveHkgcmVhZCBvdXQgb2YgaXQsIGlzIGJvdW5kIHRvIHRoZSBzdGFnZSBpdCB3YXMgaGFuZGVkXG4gKiB0bzsga2VwdCBwYXN0IHRoYXQgc3RhZ2UncyBjb21taXQgaXQgaGFzIG5vIGZyYW1lIHRvIGxhbmQgaW4sIHNvIHRoZSB3cml0ZVxuICogd291bGQgc2l0IGluIGEgYnVmZmVyIG5vdGhpbmcgZXZlciBjb21taXRzIOKAlCBubyB0cmFjZSByb3csIHN0YXRlIHVuY2hhbmdlZC5cbiAqIFRoZSB0aHJvdyBzdXJmYWNlcyBpbiB0aGUgc3RhZ2UgdGhhdCBtYWRlIHRoZSB3cml0ZSAodGhlIGVuZ2luZSdzIGVycm9yXG4gKiBwYXRoIG5hbWVzIGl0KTsgdGhpcyB0ZXh0IG5hbWVzIHRoZSBzdGFnZSB0aGUgaGFuZGxlIGNhbWUgZnJvbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWRGcmFtZU1lc3NhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcsIHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZnJvbSA9IHJ1bnRpbWVTdGFnZUlkID8gYFwiJHtzdGFnZU5hbWV9XCIgKCR7cnVudGltZVN0YWdlSWR9KWAgOiBgXCIke3N0YWdlTmFtZX1cImA7XG4gIHJldHVybiAoXG4gICAgYFtmb290cHJpbnRdIFN0YWdlICR7ZnJvbX0gaGFzIGFscmVhZHkgY29tbWl0dGVkIOKAlCBpdHMgc2NvcGUgaXMgZGVhZCwgYW5kIGEgd3JpdGUgdG8gXFxgJHtrZXl9XFxgIGAgK1xuICAgICdqdXN0IHJlYWNoZWQgaXQgZnJvbSBhIGxhdGVyIHN0YWdlICh0aGlzIGVycm9yIGlzIHJhaXNlZCBpbiB0aGF0IHN0YWdlKS4gQSBzY29wZSwgYW5kIGFueXRoaW5nIHJlYWQgJyArXG4gICAgJ291dCBvZiBpdCAoYHNjb3BlLmtgLCBgc2NvcGUuay5hcnJbMF1gKSwgYmVsb25ncyB0byB0aGUgc3RhZ2UgaXQgd2FzIGhhbmRlZCB0bzsgaGVsZCBwYXN0IHRoYXQgJyArXG4gICAgXCJzdGFnZSdzIGNvbW1pdCBpdCBoYXMgbm8gZnJhbWUgdG8gbGFuZCBpbiwgc28gdGhlIHdyaXRlIHdvdWxkIHZhbmlzaCB3aXRoIG5vIHRyYWNlIHJvdy4gXCIgK1xuICAgIFwiUmVhZCB0aGUga2V5IGFnYWluIHRocm91Z2ggdGhlIENVUlJFTlQgc3RhZ2UncyBzY29wZSBhbmQgd3JpdGUgdGhlcmUuXCJcbiAgKTtcbn1cblxuLyoqXG4gKiBUaGUgd2FybmluZyB0ZXh0IGZvciBhIGtleSB0aGUgc3RhZ2UgV1JPVEUgYWZ0ZXIgY2hhbmdpbmcsIGluIHBsYWNlLCB0aGVcbiAqIGNvbW1pdHRlZCB2YWx1ZSBpdCBoYWQgcmVhZCBiZWZvcmUgaXRzIGZpcnN0IHdyaXRlIChjb3B5LW9uLXdyaXRlLCA5LjI5LjApLlxuICogVGhlIGNvbW1pdCBjb21wYXJlcyB3aGF0IHRoZSBzdGFnZSB3cm90ZSBhZ2FpbnN0IGNvbW1pdHRlZCBzdGF0ZSDigJQgdGhlXG4gKiBvYmplY3QgdGhlIGluLXBsYWNlIGNoYW5nZSBhbHNvIG1vdmVkIOKAlCBzbyBpdCByZWNvcmRzIG5vIGNoYW5nZTogbGl2ZSBzdGF0ZVxuICoga2VlcHMgdGhlIGVkaXQsIHRoZSBsb2cgYW5kIGV2ZXJ5IGZvbGQgZG8gbm90LiAoOS4yOC4wIHJlY29yZGVkIGl0IHdoZW4gdGhlXG4gKiBlZGl0IGNhbWUgYWZ0ZXIgdGhlIGZpcnN0IHdyaXRlLCBieSBhY2NpZGVudCBvZiBhIHdob2xlLXN0YXRlIGNsb25lLilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1pdHRlZE11dGF0aW9uTWVzc2FnZShzdGFnZU5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHdoZXJlID0gcGF0aCA9PT0gJycgPyBrZXkgOiBgJHtrZXl9LiR7cGF0aH1gLnJlcGxhY2UoL1xcLlxcWy9nLCAnWycpO1xuICByZXR1cm4gKFxuICAgIGBbZm9vdHByaW50XSBTdGFnZSBcIiR7c3RhZ2VOYW1lfVwiIGNoYW5nZWQgXFxgJHt3aGVyZX1cXGAgSU4gUExBQ0Ugb24gdGhlIGNvbW1pdHRlZCB2YWx1ZSBpdCByZWFkIGJlZm9yZSBgICtcbiAgICAnaXRzIGZpcnN0IHdyaXRlLCB0aGVuIHdyb3RlIHRoZSBrZXkuIFRoZSBjb21taXQgY29tcGFyZXMgdGhlIHdyaXR0ZW4gdmFsdWUgd2l0aCBjb21taXR0ZWQgc3RhdGUg4oCUICcgK1xuICAgICd3aGljaCB0aGUgaW4tcGxhY2UgY2hhbmdlIGFsc28gbW92ZWQg4oCUIHNvIGl0IHJlY29yZHMgTk8gY2hhbmdlOiBsaXZlIHN0YXRlIGtlZXBzIHRoZSBlZGl0LCB0aGUgY29tbWl0ICcgK1xuICAgICdsb2cgYW5kIGV2ZXJ5IHJlYWRlciB0aGF0IGZvbGRzIGl0IGRvIG5vdC4gUmVhZHMgYXJlIEJPUlJPV0VELiBCdWlsZCB0aGUgbmV4dCB2YWx1ZSBpbnN0ZWFkICcgK1xuICAgIGAoXFxgc2NvcGUuJHNldFZhbHVlKCcke2tleX0nLCB7IC4uLnZhbHVlLCDigKYgfSlcXGApLCBvciByZWFkIHRoZSBrZXkgYWdhaW4gYWZ0ZXIgdGhlIHN0YWdlJ3MgZmlyc3QgYCArXG4gICAgXCJ3cml0ZSDigJQgdGhhdCByZWFkIGlzIHRoZSBzdGFnZSdzIG93biBjb3B5LlwiXG4gICk7XG59XG5cbi8qKlxuICogVGhlIHdhcm5pbmcgdGV4dC4gTmFtZXMgdGhlIHN0YWdlLCB0aGUgZXhhY3QgcGF0aCB0aGF0IG1vdmVkLCBhbmQgdGhlIHR3b1xuICogd2F5cyB0byB3cml0ZSBpdCBiYWNrIOKAlCBiZWNhdXNlIFwieW91IG11dGF0ZWQgc29tZXRoaW5nXCIgaXMgbm90IGFjdGlvbmFibGVcbiAqIGFuZCB0aGlzIGlzIHRoZSBvbmUgZmFpbHVyZSBtb2RlIHRoZSB3aG9sZSBkZXNpZ24gZXhpc3RzIHRvIHByZXZlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib3Jyb3dlZE11dGF0aW9uTWVzc2FnZShzdGFnZU5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHdoZXJlID0gcGF0aCA9PT0gJycgPyBrZXkgOiBgJHtrZXl9LiR7cGF0aH1gLnJlcGxhY2UoL1xcLlxcWy9nLCAnWycpO1xuICByZXR1cm4gKFxuICAgIGBbZm9vdHByaW50XSBTdGFnZSBcIiR7c3RhZ2VOYW1lfVwiIGNoYW5nZWQgXFxgJHt3aGVyZX1cXGAgSU4gUExBQ0UsIG9uIGEgdmFsdWUgaXQgb25seSByZWFkLiBgICtcbiAgICAnZm9vdHByaW50IG5ldmVyIHNhdyB0aGF0IHdyaXRlOiB0aGVyZSBpcyBubyB0cmFjZSByb3cgZm9yIGl0LCBzbyB0aGUgY29tbWl0IGxvZywgdGhlIGNhdXNhbCBjaGFpbiAnICtcbiAgICAnYW5kIGV2ZXJ5IHJlYWRlciB0aGF0IGZvbGRzIHRoZSBsb2cgd2lsbCBkaXNhZ3JlZSB3aXRoIGZpbmFsIHN0YXRlIOKAlCBhbmQgdW5kZXIgYSBkaWZmZXJlbnQgd3JpdGUgJyArXG4gICAgJ29yZGVyIHRoZSBjaGFuZ2UgaXMgZHJvcHBlZCBlbnRpcmVseS4gUmVhZHMgYXJlIEJPUlJPV0VELiAnICtcbiAgICAnV3JpdGUgdGhyb3VnaCB0aGUgc2NvcGUgaW5zdGVhZCAoYHNjb3BlLicgK1xuICAgIHdoZXJlICtcbiAgICAnID0g4oCmYCDigJQgcHJvcGVydHkgYW5kIGluZGV4ZWQgYWNjZXNzIGFyZSBib3RoIHRyYWNrZWQpLCAnICtcbiAgICBgb3IgaGFuZCBiYWNrIHRoZSB3aG9sZSB2YWx1ZSB3aXRoIFxcYHNjb3BlLiRzZXRWYWx1ZSgnJHtrZXl9JywgbmV4dClcXGAuIGAgK1xuICAgICdUaGlzIHVzdWFsbHkgY29tZXMgZnJvbSBtdXRhdGluZyBhbiBlbGVtZW50IHJlYWNoZWQgYnkgYGZpbmRgL2BmaWx0ZXJgL2Bmb3LigKZvZmAvYGZvckVhY2hgLCAnICtcbiAgICAnd2hpY2ggdGhlIHNjb3BlIHByb3h5IGNhbm5vdCBpbnRlcmNlcHQuJ1xuICApO1xufVxuIl19
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9ycm93ZWRNdXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L2JvcnJvd2VkTXV0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsOEVBQThFO0FBQzlFLFNBQVMsV0FBVyxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsU0FBa0I7SUFDdEUsSUFBSSxTQUFTO1FBQUUsT0FBTyxHQUFHLE1BQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUM5QyxPQUFPLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7QUFDMUQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBZSxFQUFFLEtBQWMsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDO0lBQ3hGLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDekQsSUFBSSxLQUFLLElBQUksRUFBRTtRQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsMkNBQTJDO0lBQzNFLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFFaEgsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxJQUFJLGFBQWEsS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8s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QTRDLENBQzdDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxTQUFpQixFQUFFLEdBQVcsRUFBRSxJQUFZO0lBQ2xGLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6RSxPQUFPLENBQ0wsc0JBQXNCLFNBQVMsZUFBZSxLQUFLLHdDQUF3QztRQUMzRixvR0FBb0c7UUFDcEcsbUdBQW1HO1FBQ25HLDREQUE0RDtRQUM1RCwwQ0FBMEM7UUFDMUMsS0FBSztRQUNMLHlEQUF5RDtRQUN6RCx3REFBd0QsR0FBRyxjQUFjO1FBQ3pFLDZGQUE2RjtRQUM3Rix5Q0FBeUMsQ0FDMUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIG1lbW9yeS9ib3Jyb3dlZE11dGF0aW9uIOKAlCB0aGUgaG9uZXN0IGJvdW5kYXJ5J3MgdHdvIHRleHRzOiB0aGUgZGV2LW1vZGVcbiAqIFJFUE9SVCBmb3IgYSB3cml0ZSB0aGUgZW5naW5lIGNhbm5vdCBzZWUgKHtAbGluayBib3Jyb3dlZE11dGF0aW9uTWVzc2FnZX0pXG4gKiBhbmQgdGhlIFJFRlVTQUwgZm9yIGEgd3JpdGUgZnJvbSBhIGhhbmRsZSBoZWxkIHBhc3QgaXRzIHN0YWdlXG4gKiAoe0BsaW5rIGRlYWRGcmFtZU1lc3NhZ2V9LCB0aHJvd24gYnkgYFNjb3BlRmFjYWRlIMK3IGFzc2VydExpdmVgKS5cbiAqXG4gKiDilIDilIAgVGhlIGhvbmVzdCBib3VuZGFyeSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAqIFRoZSB0eXBlZCBzY29wZSBpbnRlcmNlcHRzIGV2ZXJ5IHdyaXRlIGl0IGNhbiByZWFjaDogYSBwcm9wZXJ0eSBhdCBhbnlcbiAqIGRlcHRoLCBhbiBpbmRleGVkIGVsZW1lbnQsIGFuIGFycmF5IG1ldGhvZC4gV2hhdCBpdCBjYW5ub3QgcmVhY2ggaXMgYW5cbiAqIGVsZW1lbnQgaGFuZGVkIG91dCBieSBhIFJFQUQgTUVUSE9EIOKAlCBgZmluZGAsIGBmaWx0ZXJgLCBgZm9y4oCmb2ZgLCBgZm9yRWFjaGAsXG4gKiBkZXN0cnVjdHVyaW5nIOKAlCBiZWNhdXNlIHdyYXBwaW5nIHRob3NlIHdvdWxkIG1lYW4gcmV0dXJuaW5nIHByb3hpZXMgb3V0IG9mXG4gKiBldmVyeSByZWFkIChgbWFwYCB3b3VsZCBidWlsZCBhbiBhcnJheSBvZiBwcm94aWVzLCBgZmlsdGVyYCB3b3VsZCBjb21wYXJlXG4gKiBwcm94aWVzLCBhIHJldHVybmVkIHZhbHVlIHdvdWxkIGVzY2FwZSB0aGUgc3RhZ2Ugc3RpbGwgYm91bmQgdG8gaXQpLiBUaGF0IGlzXG4gKiBhIGNvc3QgdGhlIGxpYnJhcnkgc2hvdWxkIG5vdCBwYXksIGFuZCBhIHNlbWFudGljIGNoYW5nZSBpdCBzaG91bGQgbm90IG1ha2UuXG4gKlxuICogU28gdGhlIGFuc3dlciBmb3IgdGhhdCBmYW1pbHkgaXMgbm90IGludGVyY2VwdGlvbiDigJQgaXQgaXMgYSBSRVBPUlQuIEEgcmVhZFxuICogaXMgQk9SUk9XRUQ7IG11dGF0aW5nIGl0IGluIHBsYWNlIGlzIG91dCBvZiBjb250cmFjdC4gVGhpcyBtb2R1bGUgZGV0ZWN0cyB0aGVcbiAqIHZpb2xhdGlvbiBhZnRlciB0aGUgZmFjdCBhbmQgbmFtZXMgaXQgKGEgZGV2LW1vZGUgd2FybmluZyBhdCBjb21taXQg4oCUIHRoZVxuICogd3JpdGUgYWxyZWFkeSBoYXBwZW5lZCwgc28gaXQgY2Fubm90IGJlIHJlZnVzZWQpLCBpbnN0ZWFkIG9mIGxldHRpbmcgdGhlIHJ1blxuICogZW5kIHdpdGggYSBjb21taXQgbG9nIHRoYXQgZGlzYWdyZWVzIHdpdGggZmluYWwgc3RhdGUgYW5kIG5vdGhpbmcgc2F5aW5nIHNvLlxuICpcbiAqIOKUgOKUgCBIb3cg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gKiBgcmVhZFRyYWNraW5nOiAnZnVsbCdgICh0aGUgZGVmYXVsdCkgYWxyZWFkeSByZXRhaW5zIGEgQ0xPTkUgb2YgZXZlcnkgdmFsdWVcbiAqIGEgc3RhZ2UgcmVhZC4gQXQgY29tbWl0LCBhIGtleSB0aGUgc3RhZ2UgcmVhZCBidXQgbmV2ZXIgV1JPVEUgbXVzdCBzdGlsbFxuICogaG9sZCB3aGF0IGl0IGhlbGQgYXQgcmVhZCB0aW1lIOKAlCBjb21taXR0ZWQgc3RhdGUgaXMgaW1tdXRhYmxlLWFmdGVyLXN3YXAgYW5kXG4gKiB0aGUgYnVmZmVyJ3Mgd29ya2luZyBjb3B5IGlzIHByaXZhdGUuIElmIGl0IGRpZmZlcnMsIHRoZSBvbmx5IHRoaW5nIHRoYXQgY2FuXG4gKiBoYXZlIGNoYW5nZWQgaXQgaXMgdGhlIHN0YWdlIGl0c2VsZiwgaW4gcGxhY2UuXG4gKlxuICogRGV2LW1vZGUgb25seSAoYGVuYWJsZURldk1vZGUoKWApLCBzbyB0aGUgZGVmYXVsdCBydW4gcGF5cyBub3RoaW5nIGFuZCBpdHNcbiAqIGJ5dGVzIGFyZSB1bmNoYW5nZWQuXG4gKi9cblxuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnZm9vdHRyYWNlJztcblxuLyoqIFJlbmRlciBvbmUgcGF0aCBzZWdtZW50IGZvciBhIGh1bWFuOiBgbGluZXNbMF0ucXR5YCwgbm90IGBsaW5lcy4wLnF0eWAuICovXG5mdW5jdGlvbiBqb2luU2VnbWVudChwcmVmaXg6IHN0cmluZywgc2VnbWVudDogc3RyaW5nLCBpbnRvQXJyYXk6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoaW50b0FycmF5KSByZXR1cm4gYCR7cHJlZml4fVske3NlZ21lbnR9XWA7XG4gIHJldHVybiBwcmVmaXggPT09ICcnID8gc2VnbWVudCA6IGAke3ByZWZpeH0uJHtzZWdtZW50fWA7XG59XG5cbi8qKlxuICogVGhlIGZpcnN0IHBhdGggYXQgd2hpY2ggYGFmdGVyYCBzdG9wcyBhZ3JlZWluZyB3aXRoIGBiZWZvcmVgLCBvciBgdW5kZWZpbmVkYFxuICogd2hlbiB0aGV5IGFyZSBzdHJ1Y3R1cmFsbHkgZXF1YWwuIERlcHRoLWZpcnN0LCBvd24ga2V5cyBvbmx5IOKAlCB0aGUgc2FtZVxuICogc2hhcGVzIGBkZWVwRXF1YWxgIGhhbmRsZXMsIHNpbmNlIGNvbW1pdHRlZCBzdGF0ZSBpcyBKU09OLXNoYXBlZC5cbiAqXG4gKiBDeWNsZS1zYWZlIGJ5IGNvbnN0cnVjdGlvbjogaXQgb25seSByZWN1cnNlcyBpbnRvIHBhaXJzIHRoYXQgYXJlIG5vdCBhbHJlYWR5XG4gKiBgZGVlcEVxdWFsYCwgYW5kIHN0b3BzIGF0IHRoZSBmaXJzdCBkaXNhZ3JlZW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdERpZmZlcmluZ1BhdGgoYmVmb3JlOiB1bmtub3duLCBhZnRlcjogdW5rbm93biwgcHJlZml4ID0gJycsIGRlcHRoID0gMCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChkZWVwRXF1YWwoYmVmb3JlLCBhZnRlciwgJ2NvcGllcycpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoZGVwdGggPj0gMjQpIHJldHVybiBwcmVmaXg7IC8vIHBhdGhvbG9naWNhbCBuZXN0aW5nIOKAlCBuYW1lIHdoYXQgd2UgaGF2ZVxuICBpZiAoYmVmb3JlID09PSBudWxsIHx8IGFmdGVyID09PSBudWxsIHx8IHR5cGVvZiBiZWZvcmUgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBhZnRlciAhPT0gJ29iamVjdCcpIHJldHVybiBwcmVmaXg7XG5cbiAgY29uc3QgYmVmb3JlSXNBcnJheSA9IEFycmF5LmlzQXJyYXkoYmVmb3JlKTtcbiAgaWYgKGJlZm9yZUlzQXJyYXkgIT09IEFycmF5LmlzQXJyYXkoYWZ0ZXIpKSByZXR1cm4gcHJlZml4O1xuXG4gIGlmIChiZWZvcmVJc0FycmF5KSB7XG4gICAgY29uc3QgYSA9IGJlZm9yZSBhcyB1bmtub3duW107XG4gICAgY29uc3QgYiA9IGFmdGVyIGFzIHVua25vd25bXTtcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gcHJlZml4O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZGVlcGVyID0gZmlyc3REaWZmZXJpbmdQYXRoKGFbaV0sIGJbaV0sIGpvaW5TZWdtZW50KHByZWZpeCwgU3RyaW5nKGkpLCB0cnVlKSwgZGVwdGggKyAxKTtcbiAgICAgIGlmIChkZWVwZXIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGRlZXBlcjtcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeDtcbiAgfVxuXG4gIGNvbnN0IGEgPSBiZWZvcmUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGIgPSBhZnRlciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3Qga2V5cyA9IG5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGEpLCAuLi5PYmplY3Qua2V5cyhiKV0pO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3QgZGVlcGVyID0gZmlyc3REaWZmZXJpbmdQYXRoKGFba2V5XSwgYltrZXldLCBqb2luU2VnbWVudChwcmVmaXgsIGtleSwgZmFsc2UpLCBkZXB0aCArIDEpO1xuICAgIGlmIChkZWVwZXIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGRlZXBlcjtcbiAgfVxuICByZXR1cm4gcHJlZml4O1xufVxuXG4vKipcbiAqIFRoZSByZWZ1c2FsIHRleHQgZm9yIGEgd3JpdGUgdGhhdCByZWFjaGVkIGEgZnJhbWUgQUZURVIgaXRzIHN0YWdlIGNvbW1pdHRlZC5cbiAqIEEgc2NvcGUsIGFuZCBldmVyeSBwcm94eSByZWFkIG91dCBvZiBpdCwgaXMgYm91bmQgdG8gdGhlIHN0YWdlIGl0IHdhcyBoYW5kZWRcbiAqIHRvOyBrZXB0IHBhc3QgdGhhdCBzdGFnZSdzIGNvbW1pdCBpdCBoYXMgbm8gZnJhbWUgdG8gbGFuZCBpbiwgc28gdGhlIHdyaXRlXG4gKiB3b3VsZCBzaXQgaW4gYSBidWZmZXIgbm90aGluZyBldmVyIGNvbW1pdHMg4oCUIG5vIHRyYWNlIHJvdywgc3RhdGUgdW5jaGFuZ2VkLlxuICogVGhlIHRocm93IHN1cmZhY2VzIGluIHRoZSBzdGFnZSB0aGF0IG1hZGUgdGhlIHdyaXRlICh0aGUgZW5naW5lJ3MgZXJyb3JcbiAqIHBhdGggbmFtZXMgaXQpOyB0aGlzIHRleHQgbmFtZXMgdGhlIHN0YWdlIHRoZSBoYW5kbGUgY2FtZSBmcm9tLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVhZEZyYW1lTWVzc2FnZShzdGFnZU5hbWU6IHN0cmluZywgcnVudGltZVN0YWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBmcm9tID0gcnVudGltZVN0YWdlSWQgPyBgXCIke3N0YWdlTmFtZX1cIiAoJHtydW50aW1lU3RhZ2VJZH0pYCA6IGBcIiR7c3RhZ2VOYW1lfVwiYDtcbiAgcmV0dXJuIChcbiAgICBgW2Zvb3RwcmludF0gU3RhZ2UgJHtmcm9tfSBoYXMgYWxyZWFkeSBjb21taXR0ZWQg4oCUIGl0cyBzY29wZSBpcyBkZWFkLCBhbmQgYSB3cml0ZSB0byBcXGAke2tleX1cXGAgYCArXG4gICAgJ2p1c3QgcmVhY2hlZCBpdCBmcm9tIGEgbGF0ZXIgc3RhZ2UgKHRoaXMgZXJyb3IgaXMgcmFpc2VkIGluIHRoYXQgc3RhZ2UpLiBBIHNjb3BlLCBhbmQgYW55dGhpbmcgcmVhZCAnICtcbiAgICAnb3V0IG9mIGl0IChgc2NvcGUua2AsIGBzY29wZS5rLmFyclswXWApLCBiZWxvbmdzIHRvIHRoZSBzdGFnZSBpdCB3YXMgaGFuZGVkIHRvOyBoZWxkIHBhc3QgdGhhdCAnICtcbiAgICBcInN0YWdlJ3MgY29tbWl0IGl0IGhhcyBubyBmcmFtZSB0byBsYW5kIGluLCBzbyB0aGUgd3JpdGUgd291bGQgdmFuaXNoIHdpdGggbm8gdHJhY2Ugcm93LiBcIiArXG4gICAgXCJSZWFkIHRoZSBrZXkgYWdhaW4gdGhyb3VnaCB0aGUgQ1VSUkVOVCBzdGFnZSdzIHNjb3BlIGFuZCB3cml0ZSB0aGVyZS5cIlxuICApO1xufVxuXG4vKipcbiAqIFRoZSByZWZ1c2FsIHJhaXNlZCBpbiBhbiBhdHRlbXB0IHRoYXQgaGFzIEVOREVEIChQMWIpIOKAlCB0aW1lZCBvdXQsIGFib3J0ZWQgb3JcbiAqIGZhaWxlZCDigJQgd2hlbiB0aGUgZnVuY3Rpb24gYmVoaW5kIGl0IHRvdWNoZXMgaXRzIHNjb3BlIGFueXdheS4gVGhlIGVuZ2luZVxuICogc3RvcHBlZCB3YWl0aW5nIGZvciBpdDsgd2hhdGV2ZXIgaXQgZG9lcyBub3cgd291bGQgbGFuZCBiZXNpZGUgYSBsYXRlclxuICogYXR0ZW1wdCAob3IgYWZ0ZXIgdGhlIHN0YWdlJ3MgY29tbWl0KSwgc28gaXQgaXMgcmVmdXNlZC4gQSB3cml0ZSBvciBlbWl0IGlzXG4gKiByZWNvcmRlZCBvbiB0aGUgc3RhZ2UgKGBTdGFnZVNuYXBzaG90LmxhdGVXcml0ZXNgKSBiZWZvcmUgdGhpcyBpcyB0aHJvd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXRlQXR0ZW1wdE1lc3NhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcsIHNlcmllczogc3RyaW5nLCBhdHRlbXB0OiBudW1iZXIsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIChcbiAgICBgW2Zvb3RwcmludF0gU3RhZ2UgXCIke3N0YWdlTmFtZX1cIiAoJHtzZXJpZXN9KTogYXR0ZW1wdCAke2F0dGVtcHR9IGhhcyBhbHJlYWR5IGVuZGVkLCBhbmQgXFxgJHtrZXl9XFxgIHdhcyBgICtcbiAgICAndG91Y2hlZCB0aHJvdWdoIGl0cyBzY29wZSBhZnRlcndhcmRzIOKAlCByZWZ1c2VkLiBUaGUgZW5naW5lIHN0b3BwZWQgd2FpdGluZyBmb3IgdGhpcyBhdHRlbXB0IChpdHMgY2FwLCB0aGUgJyArXG4gICAgXCJydW4ncyBkZWFkbGluZSwgYSBjYW5jZWxsYXRpb24sIG9yIGl0cyBvd24gZXJyb3IpOyBpdHMgd29yayBtdXN0IG5vdCBsYW5kIGJlc2lkZSBhIGxhdGVyIGF0dGVtcHQuIFBhc3MgXCIgK1xuICAgICdgc2NvcGUuJGF0dGVtcHQoKS5zaWduYWxgIHRvIHRoZSBjYWxscyBpdCBtYWtlcywgc28gdGhleSBzdG9wIHdoZW4gdGhlIGF0dGVtcHQgZG9lcy4nXG4gICk7XG59XG5cbi8qKlxuICogVGhlIHdhcm5pbmcgdGV4dCBmb3IgYSBrZXkgdGhlIHN0YWdlIFdST1RFIGFmdGVyIGNoYW5naW5nLCBpbiBwbGFjZSwgdGhlXG4gKiBjb21taXR0ZWQgdmFsdWUgaXQgaGFkIHJlYWQgYmVmb3JlIGl0cyBmaXJzdCB3cml0ZSAoY29weS1vbi13cml0ZSwgOS4yOS4wKS5cbiAqIFRoZSBjb21taXQgY29tcGFyZXMgd2hhdCB0aGUgc3RhZ2Ugd3JvdGUgYWdhaW5zdCBjb21taXR0ZWQgc3RhdGUg4oCUIHRoZVxuICogb2JqZWN0IHRoZSBpbi1wbGFjZSBjaGFuZ2UgYWxzbyBtb3ZlZCDigJQgc28gaXQgcmVjb3JkcyBubyBjaGFuZ2U6IGxpdmUgc3RhdGVcbiAqIGtlZXBzIHRoZSBlZGl0LCB0aGUgbG9nIGFuZCBldmVyeSBmb2xkIGRvIG5vdC4gKDkuMjguMCByZWNvcmRlZCBpdCB3aGVuIHRoZVxuICogZWRpdCBjYW1lIGFmdGVyIHRoZSBmaXJzdCB3cml0ZSwgYnkgYWNjaWRlbnQgb2YgYSB3aG9sZS1zdGF0ZSBjbG9uZS4pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21taXR0ZWRNdXRhdGlvbk1lc3NhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB3aGVyZSA9IHBhdGggPT09ICcnID8ga2V5IDogYCR7a2V5fS4ke3BhdGh9YC5yZXBsYWNlKC9cXC5cXFsvZywgJ1snKTtcbiAgcmV0dXJuIChcbiAgICBgW2Zvb3RwcmludF0gU3RhZ2UgXCIke3N0YWdlTmFtZX1cIiBjaGFuZ2VkIFxcYCR7d2hlcmV9XFxgIElOIFBMQUNFIG9uIHRoZSBjb21taXR0ZWQgdmFsdWUgaXQgcmVhZCBiZWZvcmUgYCArXG4gICAgJ2l0cyBmaXJzdCB3cml0ZSwgdGhlbiB3cm90ZSB0aGUga2V5LiBUaGUgY29tbWl0IGNvbXBhcmVzIHRoZSB3cml0dGVuIHZhbHVlIHdpdGggY29tbWl0dGVkIHN0YXRlIOKAlCAnICtcbiAgICAnd2hpY2ggdGhlIGluLXBsYWNlIGNoYW5nZSBhbHNvIG1vdmVkIOKAlCBzbyBpdCByZWNvcmRzIE5PIGNoYW5nZTogbGl2ZSBzdGF0ZSBrZWVwcyB0aGUgZWRpdCwgdGhlIGNvbW1pdCAnICtcbiAgICAnbG9nIGFuZCBldmVyeSByZWFkZXIgdGhhdCBmb2xkcyBpdCBkbyBub3QuIFJlYWRzIGFyZSBCT1JST1dFRC4gQnVpbGQgdGhlIG5leHQgdmFsdWUgaW5zdGVhZCAnICtcbiAgICBgKFxcYHNjb3BlLiRzZXRWYWx1ZSgnJHtrZXl9JywgeyAuLi52YWx1ZSwg4oCmIH0pXFxgKSwgb3IgcmVhZCB0aGUga2V5IGFnYWluIGFmdGVyIHRoZSBzdGFnZSdzIGZpcnN0IGAgK1xuICAgIFwid3JpdGUg4oCUIHRoYXQgcmVhZCBpcyB0aGUgc3RhZ2UncyBvd24gY29weS5cIlxuICApO1xufVxuXG4vKipcbiAqIFRoZSB3YXJuaW5nIHRleHQuIE5hbWVzIHRoZSBzdGFnZSwgdGhlIGV4YWN0IHBhdGggdGhhdCBtb3ZlZCwgYW5kIHRoZSB0d29cbiAqIHdheXMgdG8gd3JpdGUgaXQgYmFjayDigJQgYmVjYXVzZSBcInlvdSBtdXRhdGVkIHNvbWV0aGluZ1wiIGlzIG5vdCBhY3Rpb25hYmxlXG4gKiBhbmQgdGhpcyBpcyB0aGUgb25lIGZhaWx1cmUgbW9kZSB0aGUgd2hvbGUgZGVzaWduIGV4aXN0cyB0byBwcmV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYm9ycm93ZWRNdXRhdGlvbk1lc3NhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB3aGVyZSA9IHBhdGggPT09ICcnID8ga2V5IDogYCR7a2V5fS4ke3BhdGh9YC5yZXBsYWNlKC9cXC5cXFsvZywgJ1snKTtcbiAgcmV0dXJuIChcbiAgICBgW2Zvb3RwcmludF0gU3RhZ2UgXCIke3N0YWdlTmFtZX1cIiBjaGFuZ2VkIFxcYCR7d2hlcmV9XFxgIElOIFBMQUNFLCBvbiBhIHZhbHVlIGl0IG9ubHkgcmVhZC4gYCArXG4gICAgJ2Zvb3RwcmludCBuZXZlciBzYXcgdGhhdCB3cml0ZTogdGhlcmUgaXMgbm8gdHJhY2Ugcm93IGZvciBpdCwgc28gdGhlIGNvbW1pdCBsb2csIHRoZSBjYXVzYWwgY2hhaW4gJyArXG4gICAgJ2FuZCBldmVyeSByZWFkZXIgdGhhdCBmb2xkcyB0aGUgbG9nIHdpbGwgZGlzYWdyZWUgd2l0aCBmaW5hbCBzdGF0ZSDigJQgYW5kIHVuZGVyIGEgZGlmZmVyZW50IHdyaXRlICcgK1xuICAgICdvcmRlciB0aGUgY2hhbmdlIGlzIGRyb3BwZWQgZW50aXJlbHkuIFJlYWRzIGFyZSBCT1JST1dFRC4gJyArXG4gICAgJ1dyaXRlIHRocm91Z2ggdGhlIHNjb3BlIGluc3RlYWQgKGBzY29wZS4nICtcbiAgICB3aGVyZSArXG4gICAgJyA9IOKApmAg4oCUIHByb3BlcnR5IGFuZCBpbmRleGVkIGFjY2VzcyBhcmUgYm90aCB0cmFja2VkKSwgJyArXG4gICAgYG9yIGhhbmQgYmFjayB0aGUgd2hvbGUgdmFsdWUgd2l0aCBcXGBzY29wZS4kc2V0VmFsdWUoJyR7a2V5fScsIG5leHQpXFxgLiBgICtcbiAgICAnVGhpcyB1c3VhbGx5IGNvbWVzIGZyb20gbXV0YXRpbmcgYW4gZWxlbWVudCByZWFjaGVkIGJ5IGBmaW5kYC9gZmlsdGVyYC9gZm9y4oCmb2ZgL2Bmb3JFYWNoYCwgJyArXG4gICAgJ3doaWNoIHRoZSBzY29wZSBwcm94eSBjYW5ub3QgaW50ZXJjZXB0LidcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -7,9 +7,13 @@
|
|
|
7
7
|
* in the record's `types.ts` until C6; the record names nothing outside itself now
|
|
8
8
|
* (`RECORD_FILES`, scripts/layering.config.cjs), so they sit beside the frame that writes them.
|
|
9
9
|
*
|
|
10
|
+
* A retried stage's node also carries its attempts (`attempts`, `attemptSummary` — the attempt leaf's types, L0).
|
|
11
|
+
*
|
|
10
12
|
* A `StageSnapshot` is an `ExecutionTree` (`types.ts`), the shape the record's readers walk:
|
|
11
13
|
* `commitStops`, `tagStops` and `keysReadFromExecutionTree` take one.
|
|
12
14
|
*/
|
|
15
|
+
import type { Attention } from 'foottrace';
|
|
16
|
+
import type { AttemptRecord, AttemptSummary, LateWrite } from '../attempt/types.js';
|
|
13
17
|
import type { RetentionPolicy } from '../capture/policies.js';
|
|
14
18
|
/** Types of control flow decisions captured by the execution engine. */
|
|
15
19
|
export type FlowControlType = 'next' | 'branch' | 'children' | 'selected' | 'subflow' | 'loop';
|
|
@@ -93,6 +97,40 @@ export type StageSnapshot = {
|
|
|
93
97
|
metrics: Record<string, unknown>;
|
|
94
98
|
evals: Record<string, unknown>;
|
|
95
99
|
flowMessages?: FlowMessage[];
|
|
100
|
+
/**
|
|
101
|
+
* Every attempt of this execution, in order — when it started, how long it took, how it ended, and the
|
|
102
|
+
* retry-or-stop decision that followed (`AttemptRecord`): the stage's own under its retry policy, a `timeoutMs`
|
|
103
|
+
* or a run deadline (10.1, `kind: 'stage'`), and those of the calls it made through `scope.$call` and the
|
|
104
|
+
* outside attempts it reported through `observed()` (P2, `kind: 'call'` / `'observed'`, the first 1000 —
|
|
105
|
+
* `StageContext · MAX_CALL_RECORDS`). Absent when there are none. The commit log never carries attempts: a
|
|
106
|
+
* retried stage is still ONE bundle.
|
|
107
|
+
*/
|
|
108
|
+
attempts?: readonly AttemptRecord[];
|
|
109
|
+
/**
|
|
110
|
+
* Call and observed attempt records this execution made past the first 1000 — counted, not kept (each still
|
|
111
|
+
* fired `onAttempt`). Absent when none were dropped.
|
|
112
|
+
*/
|
|
113
|
+
attemptsDropped?: number;
|
|
114
|
+
/**
|
|
115
|
+
* The series at a glance — counts per outcome, and how it ended. Stamped when the series ends: absent while it
|
|
116
|
+
* is still running (a snapshot taken mid-stage) and without a policy.
|
|
117
|
+
*/
|
|
118
|
+
attemptSummary?: AttemptSummary;
|
|
119
|
+
/**
|
|
120
|
+
* Writes (and emits) an attempt tried AFTER it had ended — timed out, aborted or failed — in the order they came
|
|
121
|
+
* (P1b). Each was dropped at the scope, so none reached the stage's buffer, its commit or a recorder; this is
|
|
122
|
+
* the record that they were tried — the first 100 (`MAX_LATE_WRITES`). An abandoned function can keep running
|
|
123
|
+
* after the run ended, so the list can grow after a snapshot was taken. Names only, never values. Absent when
|
|
124
|
+
* there were none.
|
|
125
|
+
*/
|
|
126
|
+
lateWrites?: readonly LateWrite[];
|
|
127
|
+
/**
|
|
128
|
+
* Fixed-reason marks collected as this execution runs. Absent when no fact needs attention.
|
|
129
|
+
* Attempt evidence uses canonical Foottrace attempt IDs. Summary-only and stage-error proof resolves within THIS node
|
|
130
|
+
* through attemptSummary, errors:stageExecutionError or attemptsDropped. Quality marks are read-time recorder work.
|
|
131
|
+
* Marks retain no error text, values, targets or idempotency keys; omitted proof is disclosed as not-collected.
|
|
132
|
+
*/
|
|
133
|
+
attention?: readonly Attention[];
|
|
96
134
|
next?: StageSnapshot;
|
|
97
135
|
children?: StageSnapshot[];
|
|
98
136
|
};
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
* in the record's `types.ts` until C6; the record names nothing outside itself now
|
|
8
8
|
* (`RECORD_FILES`, scripts/layering.config.cjs), so they sit beside the frame that writes them.
|
|
9
9
|
*
|
|
10
|
+
* A retried stage's node also carries its attempts (`attempts`, `attemptSummary` — the attempt leaf's types, L0).
|
|
11
|
+
*
|
|
10
12
|
* A `StageSnapshot` is an `ExecutionTree` (`types.ts`), the shape the record's readers walk:
|
|
11
13
|
* `commitStops`, `tagStops` and `keysReadFromExecutionTree` take one.
|
|
12
14
|
*/
|
|
13
15
|
export {};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWVUeXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L2ZyYW1lVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0dBV0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZyYW1lVHlwZXMudHMg4oCUIHRoZSB0eXBlcyBvZiB0aGUgZW5naW5lJ3MgZnJhbWUgKEw0KTogd2hhdCBvbmUgc3RhZ2UgaW5zaWRlIGEgcnVuIHJlcG9ydHMuXG4gKlxuICogSXRzIHNuYXBzaG90IChgU3RhZ2VTbmFwc2hvdGAsIG9uZSBub2RlIG9mIHRoZSBleGVjdXRpb24gdHJlZSksIGl0cyBmbG93IG1lc3NhZ2VzXG4gKiAoYEZsb3dNZXNzYWdlYCwgYEZsb3dDb250cm9sVHlwZWApIGFuZCB0aGUgdHdvIHJldGVudGlvbiBkaWFscyB0aGF0IHNoYXBlIHdoYXQgdGhlIHNuYXBzaG90XG4gKiBrZWVwcyAoYFJlYWRUcmFja2luZ01vZGVgLCBgV3JpdGVUcmFja2luZ01vZGVgLCBvdmVyIGBjYXB0dXJlL2AncyBgUmV0ZW50aW9uUG9saWN5YCkuIFRoZXkgbGl2ZWRcbiAqIGluIHRoZSByZWNvcmQncyBgdHlwZXMudHNgIHVudGlsIEM2OyB0aGUgcmVjb3JkIG5hbWVzIG5vdGhpbmcgb3V0c2lkZSBpdHNlbGYgbm93XG4gKiAoYFJFQ09SRF9GSUxFU2AsIHNjcmlwdHMvbGF5ZXJpbmcuY29uZmlnLmNqcyksIHNvIHRoZXkgc2l0IGJlc2lkZSB0aGUgZnJhbWUgdGhhdCB3cml0ZXMgdGhlbS5cbiAqXG4gKiBBIGBTdGFnZVNuYXBzaG90YCBpcyBhbiBgRXhlY3V0aW9uVHJlZWAgKGB0eXBlcy50c2ApLCB0aGUgc2hhcGUgdGhlIHJlY29yZCdzIHJlYWRlcnMgd2FsazpcbiAqIGBjb21taXRTdG9wc2AsIGB0YWdTdG9wc2AgYW5kIGBrZXlzUmVhZEZyb21FeGVjdXRpb25UcmVlYCB0YWtlIG9uZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJldGVudGlvblBvbGljeSB9IGZyb20gJy4uL2NhcHR1cmUvcG9saWNpZXMuanMnO1xuXG4vLyDilIDilIAgRmxvdyBDb250cm9sIE5hcnJhdGl2ZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIFR5cGVzIG9mIGNvbnRyb2wgZmxvdyBkZWNpc2lvbnMgY2FwdHVyZWQgYnkgdGhlIGV4ZWN1dGlvbiBlbmdpbmUuICovXG5leHBvcnQgdHlwZSBGbG93Q29udHJvbFR5cGUgPSAnbmV4dCcgfCAnYnJhbmNoJyB8ICdjaGlsZHJlbicgfCAnc2VsZWN0ZWQnIHwgJ3N1YmZsb3cnIHwgJ2xvb3AnO1xuXG4vKiogQSBzaW5nbGUgZmxvdyBjb250cm9sIG5hcnJhdGl2ZSBlbnRyeS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd01lc3NhZ2Uge1xuICB0eXBlOiBGbG93Q29udHJvbFR5cGU7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHRhcmdldFN0YWdlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHJhdGlvbmFsZT86IHN0cmluZztcbiAgY291bnQ/OiBudW1iZXI7XG4gIGl0ZXJhdGlvbj86IG51bWJlcjtcbiAgdGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG4vLyDilIDilIAgUmVhZCAvIFdyaXRlIFRyYWNraW5nICgjMTQsICMxM2MtQSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vL1xuLy8gVGhlIHBvbGljeSBmYW1pbHkgYW5kIG1hcmtlciBzaGFwZXMgYXJlIG93bmVkIGJ5IGBjYXB0dXJlL2AgKHNoYXJlZCB3aXRoXG4vLyB0aGUgZGVmZXJyZWQtb2JzZXJ2ZXIgY2FwdHVyZSB0aWVyKS5cblxuLyoqXG4gKiBQb2xpY3kgZm9yIGhvdyB0cmFja2VkIHJlYWRzIGFyZSByZWNvcmRlZCBpbnRvIGBTdGFnZVNuYXBzaG90LnN0YWdlUmVhZHNgLlxuICpcbiAqIC0gYCdmdWxsJ2AgKGRlZmF1bHQpIOKAlCBldmVyeSB0cmFja2VkIHJlYWQgYHN0cnVjdHVyZWRDbG9uZWBzIHRoZSB2YWx1ZSBpbnRvXG4gKiAgIHRoZSBzdGFnZSdzIHJlYWQgdmlldy4gQnl0ZS1pZGVudGljYWwgdG8gdGhlIGhpc3RvcmljYWwgYmVoYXZpb3I7IHRoaXMgaXNcbiAqICAgd2hhdCBzbmFwc2hvdCBjb25zdW1lcnMgKGxlbnMsIGFnZW50Zm9vdHByaW50KSBzZWUgdG9kYXkuXG4gKiAtIGAnc3VtbWFyeSdgIOKAlCByZWFkcyByZWNvcmQgYSBjaGVhcCB7QGxpbmsgUmVhZFN1bW1hcnlNYXJrZXJ9ICh0eXBlICsgc2l6ZVxuICogICBwcm94eSArIHNob3J0IHByZXZpZXcpIGluc3RlYWQgb2YgdGhlIGNsb25lZCB2YWx1ZS4gTygxKS1pc2ggcGVyIHJlYWQg4oCUXG4gKiAgIG5vIHZhbHVlIGNsb25lLCBubyBzZXJpYWxpemF0aW9uIG9mIGxhcmdlIG9iamVjdHMuXG4gKiAtIGAnb2ZmJ2Ag4oCUIHJlYWRzIGFyZSBub3QgcmVjb3JkZWQgYXQgYWxsOyBgc3RhZ2VSZWFkc2AgaXMgYWJzZW50IGZyb20gdGhlXG4gKiAgIHNuYXBzaG90LiBaZXJvIHBlci1yZWFkIGNvc3QuIFZhbHVlcyBhcmUgc3RpbGwgcmVhZGFibGUsIGFuZCB0aGVcbiAqICAgYFNjb3BlUmVjb3JkZXIub25SZWFkYCBldmVudCBzdGlsbCBmaXJlcyAoaXQgcGFzc2VzIHRoZSBsaXZlIHJlZmVyZW5jZSBhbmRcbiAqICAgbmV2ZXIgY2xvbmVkKSDigJQgc28gbmFycmF0aXZlIG91dHB1dCBpcyBpZGVudGljYWwgaW4gZXZlcnkgbW9kZS4gVGhlIHBvbGljeVxuICogICBzY29wZXMgT05MWSB0aGUgc25hcHNob3QncyBgc3RhZ2VSZWFkc2AgcGF5bG9hZC5cbiAqXG4gKiBTZXQgdmlhIGBuZXcgRmxvd0NoYXJ0RXhlY3V0b3IoY2hhcnQsIHsgcmVhZFRyYWNraW5nIH0pYCBvclxuICogYGV4ZWN1dG9yLnNldFJlYWRUcmFja2luZyhtb2RlKWAgKGJlZm9yZSBgcnVuKClgKS5cbiAqXG4gKiBBbGlhcyBvZiB0aGUgc2hhcmVkIHtAbGluayBSZXRlbnRpb25Qb2xpY3l9IGZhbWlseSAoIzEzYy1BKSDigJQga2VwdCBhcyB0aGVcbiAqIHNoaXBwZWQgcHVibGljIG5hbWUgZm9yIHRoZSByZWFkIGRpYWwuXG4gKi9cbmV4cG9ydCB0eXBlIFJlYWRUcmFja2luZ01vZGUgPSBSZXRlbnRpb25Qb2xpY3k7XG5cbi8qKlxuICogUG9saWN5IGZvciBob3cgdHJhY2tlZCB3cml0ZXMgYXJlIHJlY29yZGVkIGludG8gYFN0YWdlU25hcHNob3Quc3RhZ2VXcml0ZXNgXG4gKiAoIzEzYy1BKSDigJQgdGhlIHNpYmxpbmcgb2Yge0BsaW5rIFJlYWRUcmFja2luZ01vZGV9LlxuICpcbiAqIC0gYCdmdWxsJ2AgKGRlZmF1bHQpIOKAlCBldmVyeSB0cmFja2VkIHdyaXRlIGBzdHJ1Y3R1cmVkQ2xvbmVgcyB0aGUgdmFsdWUgaW50b1xuICogICB0aGUgc3RhZ2UncyB3cml0ZSB2aWV3LiBCeXRlLWlkZW50aWNhbCB0byB0aGUgaGlzdG9yaWNhbCBiZWhhdmlvci5cbiAqIC0gYCdzdW1tYXJ5J2Ag4oCUIHdyaXRlcyByZWNvcmQgYSBjaGVhcCB7QGxpbmsgV3JpdGVTdW1tYXJ5TWFya2VyfSBpbnN0ZWFkIG9mXG4gKiAgIHRoZSBjbG9uZWQgdmFsdWUuXG4gKiAtIGAnb2ZmJ2Ag4oCUIHdyaXRlcyBhcmUgbm90IHJlY29yZGVkIGF0IGFsbDsgYHN0YWdlV3JpdGVzYCBpcyBhYnNlbnQgZnJvbSB0aGVcbiAqICAgc25hcHNob3QuIFRoZSB3cml0ZXMgdGhlbXNlbHZlcyBzdGlsbCBjb21taXQgdG8gc2hhcmVkIHN0YXRlIGFuZCBzdGlsbFxuICogICBhcHBlYXIgaW4gdGhlIGNvbW1pdCBsb2cg4oCUIG9ubHkgdGhlIHBlci1zdGFnZSBzbmFwc2hvdCBib29ra2VlcGluZyAoYW5kXG4gKiAgIHRoZXJlZm9yZSB0aGUgY29tbWl0IG9ic2VydmVyJ3MgbXV0YXRpb25zIHBheWxvYWQpIGlzIGFmZmVjdGVkLiAoVGhlXG4gKiAgIGNvbW1pdCBsb2cncyBvd24gdmFsdWUgZW5jb2RpbmcgaGFzIGl0cyBvd24gbG9zc2xlc3MgZGlhbCDigJRcbiAqICAge0BsaW5rIENvbW1pdFZhbHVlc01vZGV9LCAjMTNjLUIuKVxuICpcbiAqIFNldCB2aWEgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyB3cml0ZVRyYWNraW5nIH0pYCBvclxuICogYGV4ZWN1dG9yLnNldFdyaXRlVHJhY2tpbmcobW9kZSlgIChiZWZvcmUgYHJ1bigpYCkuIFNlZVxuICogYEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucy53cml0ZVRyYWNraW5nYCBmb3IgdGhlIGZ1bGwgb2JzZXJ2YWJsZS1jb25zZXF1ZW5jZVxuICogY29udHJhY3QgKG9uQ29tbWl0IHBheWxvYWQsIHJlZGFjdGlvbiBwcmVjZWRlbmNlLCB3aGF0IGlzIE9VVCBvZiBzY29wZSkuXG4gKi9cbmV4cG9ydCB0eXBlIFdyaXRlVHJhY2tpbmdNb2RlID0gUmV0ZW50aW9uUG9saWN5O1xuXG4vLyDilIDilIAgU3RhZ2UgU25hcHNob3Qg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKiBTZXJpYWxpc2FibGUgcmVwcmVzZW50YXRpb24gb2YgYSBzdGFnZSdzIHN0YXRlIChmb3IgZGVidWdnaW5nIC8gdmlzdWFsaXNhdGlvbikuICovXG5leHBvcnQgdHlwZSBTdGFnZVNuYXBzaG90ID0ge1xuICBpZDogc3RyaW5nO1xuICAvKiogVW5pcXVlIHBlci1leGVjdXRpb24tc3RlcCBpZGVudGlmaWVyLiBGb3JtYXQ6IFtzdWJmbG93UGF0aC9dc3RhZ2VJZCNleGVjdXRpb25JbmRleCAqL1xuICBydW50aW1lU3RhZ2VJZD86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhpcyBzdGFnZSBkb2VzIChmcm9tIGJ1aWxkZXIpLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFN1YmZsb3cgaWRlbnRpZmllciDigJQgcHJlc2VudCB3aGVuIHRoaXMgc3RhZ2UgaXMgYSBzdWJmbG93IGVudHJ5IHBvaW50LiAqL1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIGlzRGVjaWRlcj86IGJvb2xlYW47XG4gIGlzRm9yaz86IGJvb2xlYW47XG4gIC8qKiBVc2VyLWxldmVsIHdyaXRlcyBtYWRlIGJ5IHRoaXMgc3RhZ2UgKHByZS1uYW1lc3BhY2Uga2V5cyDihpIgdmFsdWVzKS5cbiAgICogIFNoYXBlIGRlcGVuZHMgb24ge0BsaW5rIFdyaXRlVHJhY2tpbmdNb2RlfTogY2xvbmVkIHZhbHVlcyB1bmRlciBgJ2Z1bGwnYFxuICAgKiAgKGRlZmF1bHQpLCB7QGxpbmsgV3JpdGVTdW1tYXJ5TWFya2VyfXMgdW5kZXIgYCdzdW1tYXJ5J2AsIGFic2VudCB1bmRlclxuICAgKiAgYCdvZmYnYC4gUmVkYWN0ZWQgd3JpdGVzIHNob3cgYCdbUkVEQUNURURdJ2AgcmVnYXJkbGVzcyBvZiBtb2RlLiAqL1xuICBzdGFnZVdyaXRlcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogVXNlci1sZXZlbCByZWFkcyBtYWRlIGJ5IHRoaXMgc3RhZ2UgKHByZS1uYW1lc3BhY2Uga2V5cyDihpIgdmFsdWVzIGF0IHJlYWRcbiAgICogIHRpbWUpLiBTaGFwZSBkZXBlbmRzIG9uIHtAbGluayBSZWFkVHJhY2tpbmdNb2RlfTogY2xvbmVkIHZhbHVlcyB1bmRlclxuICAgKiAgYCdmdWxsJ2AgKGRlZmF1bHQpLCB7QGxpbmsgUmVhZFN1bW1hcnlNYXJrZXJ9cyB1bmRlciBgJ3N1bW1hcnknYCwgYWJzZW50XG4gICAqICB1bmRlciBgJ29mZidgLiAqL1xuICBzdGFnZVJlYWRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGxvZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBlcnJvcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBtZXRyaWNzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZhbHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmbG93TWVzc2FnZXM/OiBGbG93TWVzc2FnZVtdO1xuICBuZXh0PzogU3RhZ2VTbmFwc2hvdDtcbiAgY2hpbGRyZW4/OiBTdGFnZVNuYXBzaG90W107XG59O1xuIl19
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWVUeXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L2ZyYW1lVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7R0FhRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZnJhbWVUeXBlcy50cyDigJQgdGhlIHR5cGVzIG9mIHRoZSBlbmdpbmUncyBmcmFtZSAoTDQpOiB3aGF0IG9uZSBzdGFnZSBpbnNpZGUgYSBydW4gcmVwb3J0cy5cbiAqXG4gKiBJdHMgc25hcHNob3QgKGBTdGFnZVNuYXBzaG90YCwgb25lIG5vZGUgb2YgdGhlIGV4ZWN1dGlvbiB0cmVlKSwgaXRzIGZsb3cgbWVzc2FnZXNcbiAqIChgRmxvd01lc3NhZ2VgLCBgRmxvd0NvbnRyb2xUeXBlYCkgYW5kIHRoZSB0d28gcmV0ZW50aW9uIGRpYWxzIHRoYXQgc2hhcGUgd2hhdCB0aGUgc25hcHNob3RcbiAqIGtlZXBzIChgUmVhZFRyYWNraW5nTW9kZWAsIGBXcml0ZVRyYWNraW5nTW9kZWAsIG92ZXIgYGNhcHR1cmUvYCdzIGBSZXRlbnRpb25Qb2xpY3lgKS4gVGhleSBsaXZlZFxuICogaW4gdGhlIHJlY29yZCdzIGB0eXBlcy50c2AgdW50aWwgQzY7IHRoZSByZWNvcmQgbmFtZXMgbm90aGluZyBvdXRzaWRlIGl0c2VsZiBub3dcbiAqIChgUkVDT1JEX0ZJTEVTYCwgc2NyaXB0cy9sYXllcmluZy5jb25maWcuY2pzKSwgc28gdGhleSBzaXQgYmVzaWRlIHRoZSBmcmFtZSB0aGF0IHdyaXRlcyB0aGVtLlxuICpcbiAqIEEgcmV0cmllZCBzdGFnZSdzIG5vZGUgYWxzbyBjYXJyaWVzIGl0cyBhdHRlbXB0cyAoYGF0dGVtcHRzYCwgYGF0dGVtcHRTdW1tYXJ5YCDigJQgdGhlIGF0dGVtcHQgbGVhZidzIHR5cGVzLCBMMCkuXG4gKlxuICogQSBgU3RhZ2VTbmFwc2hvdGAgaXMgYW4gYEV4ZWN1dGlvblRyZWVgIChgdHlwZXMudHNgKSwgdGhlIHNoYXBlIHRoZSByZWNvcmQncyByZWFkZXJzIHdhbGs6XG4gKiBgY29tbWl0U3RvcHNgLCBgdGFnU3RvcHNgIGFuZCBga2V5c1JlYWRGcm9tRXhlY3V0aW9uVHJlZWAgdGFrZSBvbmUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRlbnRpb24gfSBmcm9tICdmb290dHJhY2UnO1xuXG5pbXBvcnQgdHlwZSB7IEF0dGVtcHRSZWNvcmQsIEF0dGVtcHRTdW1tYXJ5LCBMYXRlV3JpdGUgfSBmcm9tICcuLi9hdHRlbXB0L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgUmV0ZW50aW9uUG9saWN5IH0gZnJvbSAnLi4vY2FwdHVyZS9wb2xpY2llcy5qcyc7XG5cbi8vIOKUgOKUgCBGbG93IENvbnRyb2wgTmFycmF0aXZlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKiogVHlwZXMgb2YgY29udHJvbCBmbG93IGRlY2lzaW9ucyBjYXB0dXJlZCBieSB0aGUgZXhlY3V0aW9uIGVuZ2luZS4gKi9cbmV4cG9ydCB0eXBlIEZsb3dDb250cm9sVHlwZSA9ICduZXh0JyB8ICdicmFuY2gnIHwgJ2NoaWxkcmVuJyB8ICdzZWxlY3RlZCcgfCAnc3ViZmxvdycgfCAnbG9vcCc7XG5cbi8qKiBBIHNpbmdsZSBmbG93IGNvbnRyb2wgbmFycmF0aXZlIGVudHJ5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93TWVzc2FnZSB7XG4gIHR5cGU6IEZsb3dDb250cm9sVHlwZTtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdGFyZ2V0U3RhZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcmF0aW9uYWxlPzogc3RyaW5nO1xuICBjb3VudD86IG51bWJlcjtcbiAgaXRlcmF0aW9uPzogbnVtYmVyO1xuICB0aW1lc3RhbXA/OiBudW1iZXI7XG59XG5cbi8vIOKUgOKUgCBSZWFkIC8gV3JpdGUgVHJhY2tpbmcgKCMxNCwgIzEzYy1BKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vXG4vLyBUaGUgcG9saWN5IGZhbWlseSBhbmQgbWFya2VyIHNoYXBlcyBhcmUgb3duZWQgYnkgYGNhcHR1cmUvYCAoc2hhcmVkIHdpdGhcbi8vIHRoZSBkZWZlcnJlZC1vYnNlcnZlciBjYXB0dXJlIHRpZXIpLlxuXG4vKipcbiAqIFBvbGljeSBmb3IgaG93IHRyYWNrZWQgcmVhZHMgYXJlIHJlY29yZGVkIGludG8gYFN0YWdlU25hcHNob3Quc3RhZ2VSZWFkc2AuXG4gKlxuICogLSBgJ2Z1bGwnYCAoZGVmYXVsdCkg4oCUIGV2ZXJ5IHRyYWNrZWQgcmVhZCBgc3RydWN0dXJlZENsb25lYHMgdGhlIHZhbHVlIGludG9cbiAqICAgdGhlIHN0YWdlJ3MgcmVhZCB2aWV3LiBCeXRlLWlkZW50aWNhbCB0byB0aGUgaGlzdG9yaWNhbCBiZWhhdmlvcjsgdGhpcyBpc1xuICogICB3aGF0IHNuYXBzaG90IGNvbnN1bWVycyAobGVucywgYWdlbnRmb290cHJpbnQpIHNlZSB0b2RheS5cbiAqIC0gYCdzdW1tYXJ5J2Ag4oCUIHJlYWRzIHJlY29yZCBhIGNoZWFwIHtAbGluayBSZWFkU3VtbWFyeU1hcmtlcn0gKHR5cGUgKyBzaXplXG4gKiAgIHByb3h5ICsgc2hvcnQgcHJldmlldykgaW5zdGVhZCBvZiB0aGUgY2xvbmVkIHZhbHVlLiBPKDEpLWlzaCBwZXIgcmVhZCDigJRcbiAqICAgbm8gdmFsdWUgY2xvbmUsIG5vIHNlcmlhbGl6YXRpb24gb2YgbGFyZ2Ugb2JqZWN0cy5cbiAqIC0gYCdvZmYnYCDigJQgcmVhZHMgYXJlIG5vdCByZWNvcmRlZCBhdCBhbGw7IGBzdGFnZVJlYWRzYCBpcyBhYnNlbnQgZnJvbSB0aGVcbiAqICAgc25hcHNob3QuIFplcm8gcGVyLXJlYWQgY29zdC4gVmFsdWVzIGFyZSBzdGlsbCByZWFkYWJsZSwgYW5kIHRoZVxuICogICBgU2NvcGVSZWNvcmRlci5vblJlYWRgIGV2ZW50IHN0aWxsIGZpcmVzIChpdCBwYXNzZXMgdGhlIGxpdmUgcmVmZXJlbmNlIGFuZFxuICogICBuZXZlciBjbG9uZWQpIOKAlCBzbyBuYXJyYXRpdmUgb3V0cHV0IGlzIGlkZW50aWNhbCBpbiBldmVyeSBtb2RlLiBUaGUgcG9saWN5XG4gKiAgIHNjb3BlcyBPTkxZIHRoZSBzbmFwc2hvdCdzIGBzdGFnZVJlYWRzYCBwYXlsb2FkLlxuICpcbiAqIFNldCB2aWEgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyByZWFkVHJhY2tpbmcgfSlgIG9yXG4gKiBgZXhlY3V0b3Iuc2V0UmVhZFRyYWNraW5nKG1vZGUpYCAoYmVmb3JlIGBydW4oKWApLlxuICpcbiAqIEFsaWFzIG9mIHRoZSBzaGFyZWQge0BsaW5rIFJldGVudGlvblBvbGljeX0gZmFtaWx5ICgjMTNjLUEpIOKAlCBrZXB0IGFzIHRoZVxuICogc2hpcHBlZCBwdWJsaWMgbmFtZSBmb3IgdGhlIHJlYWQgZGlhbC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVhZFRyYWNraW5nTW9kZSA9IFJldGVudGlvblBvbGljeTtcblxuLyoqXG4gKiBQb2xpY3kgZm9yIGhvdyB0cmFja2VkIHdyaXRlcyBhcmUgcmVjb3JkZWQgaW50byBgU3RhZ2VTbmFwc2hvdC5zdGFnZVdyaXRlc2BcbiAqICgjMTNjLUEpIOKAlCB0aGUgc2libGluZyBvZiB7QGxpbmsgUmVhZFRyYWNraW5nTW9kZX0uXG4gKlxuICogLSBgJ2Z1bGwnYCAoZGVmYXVsdCkg4oCUIGV2ZXJ5IHRyYWNrZWQgd3JpdGUgYHN0cnVjdHVyZWRDbG9uZWBzIHRoZSB2YWx1ZSBpbnRvXG4gKiAgIHRoZSBzdGFnZSdzIHdyaXRlIHZpZXcuIEJ5dGUtaWRlbnRpY2FsIHRvIHRoZSBoaXN0b3JpY2FsIGJlaGF2aW9yLlxuICogLSBgJ3N1bW1hcnknYCDigJQgd3JpdGVzIHJlY29yZCBhIGNoZWFwIHtAbGluayBXcml0ZVN1bW1hcnlNYXJrZXJ9IGluc3RlYWQgb2ZcbiAqICAgdGhlIGNsb25lZCB2YWx1ZS5cbiAqIC0gYCdvZmYnYCDigJQgd3JpdGVzIGFyZSBub3QgcmVjb3JkZWQgYXQgYWxsOyBgc3RhZ2VXcml0ZXNgIGlzIGFic2VudCBmcm9tIHRoZVxuICogICBzbmFwc2hvdC4gVGhlIHdyaXRlcyB0aGVtc2VsdmVzIHN0aWxsIGNvbW1pdCB0byBzaGFyZWQgc3RhdGUgYW5kIHN0aWxsXG4gKiAgIGFwcGVhciBpbiB0aGUgY29tbWl0IGxvZyDigJQgb25seSB0aGUgcGVyLXN0YWdlIHNuYXBzaG90IGJvb2trZWVwaW5nIChhbmRcbiAqICAgdGhlcmVmb3JlIHRoZSBjb21taXQgb2JzZXJ2ZXIncyBtdXRhdGlvbnMgcGF5bG9hZCkgaXMgYWZmZWN0ZWQuIChUaGVcbiAqICAgY29tbWl0IGxvZydzIG93biB2YWx1ZSBlbmNvZGluZyBoYXMgaXRzIG93biBsb3NzbGVzcyBkaWFsIOKAlFxuICogICB7QGxpbmsgQ29tbWl0VmFsdWVzTW9kZX0sICMxM2MtQi4pXG4gKlxuICogU2V0IHZpYSBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IHdyaXRlVHJhY2tpbmcgfSlgIG9yXG4gKiBgZXhlY3V0b3Iuc2V0V3JpdGVUcmFja2luZyhtb2RlKWAgKGJlZm9yZSBgcnVuKClgKS4gU2VlXG4gKiBgRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zLndyaXRlVHJhY2tpbmdgIGZvciB0aGUgZnVsbCBvYnNlcnZhYmxlLWNvbnNlcXVlbmNlXG4gKiBjb250cmFjdCAob25Db21taXQgcGF5bG9hZCwgcmVkYWN0aW9uIHByZWNlZGVuY2UsIHdoYXQgaXMgT1VUIG9mIHNjb3BlKS5cbiAqL1xuZXhwb3J0IHR5cGUgV3JpdGVUcmFja2luZ01vZGUgPSBSZXRlbnRpb25Qb2xpY3k7XG5cbi8vIOKUgOKUgCBTdGFnZSBTbmFwc2hvdCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIFNlcmlhbGlzYWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIHN0YWdlJ3Mgc3RhdGUgKGZvciBkZWJ1Z2dpbmcgLyB2aXN1YWxpc2F0aW9uKS4gKi9cbmV4cG9ydCB0eXBlIFN0YWdlU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgcGVyLWV4ZWN1dGlvbi1zdGVwIGlkZW50aWZpZXIuIEZvcm1hdDogW3N1YmZsb3dQYXRoL11zdGFnZUlkI2V4ZWN1dGlvbkluZGV4ICovXG4gIHJ1bnRpbWVTdGFnZUlkPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHN0YWdlIGRvZXMgKGZyb20gYnVpbGRlcikuICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIOKAlCBwcmVzZW50IHdoZW4gdGhpcyBzdGFnZSBpcyBhIHN1YmZsb3cgZW50cnkgcG9pbnQuICovXG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgaXNEZWNpZGVyPzogYm9vbGVhbjtcbiAgaXNGb3JrPzogYm9vbGVhbjtcbiAgLyoqIFVzZXItbGV2ZWwgd3JpdGVzIG1hZGUgYnkgdGhpcyBzdGFnZSAocHJlLW5hbWVzcGFjZSBrZXlzIOKGkiB2YWx1ZXMpLlxuICAgKiAgU2hhcGUgZGVwZW5kcyBvbiB7QGxpbmsgV3JpdGVUcmFja2luZ01vZGV9OiBjbG9uZWQgdmFsdWVzIHVuZGVyIGAnZnVsbCdgXG4gICAqICAoZGVmYXVsdCksIHtAbGluayBXcml0ZVN1bW1hcnlNYXJrZXJ9cyB1bmRlciBgJ3N1bW1hcnknYCwgYWJzZW50IHVuZGVyXG4gICAqICBgJ29mZidgLiBSZWRhY3RlZCB3cml0ZXMgc2hvdyBgJ1tSRURBQ1RFRF0nYCByZWdhcmRsZXNzIG9mIG1vZGUuICovXG4gIHN0YWdlV3JpdGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBVc2VyLWxldmVsIHJlYWRzIG1hZGUgYnkgdGhpcyBzdGFnZSAocHJlLW5hbWVzcGFjZSBrZXlzIOKGkiB2YWx1ZXMgYXQgcmVhZFxuICAgKiAgdGltZSkuIFNoYXBlIGRlcGVuZHMgb24ge0BsaW5rIFJlYWRUcmFja2luZ01vZGV9OiBjbG9uZWQgdmFsdWVzIHVuZGVyXG4gICAqICBgJ2Z1bGwnYCAoZGVmYXVsdCksIHtAbGluayBSZWFkU3VtbWFyeU1hcmtlcn1zIHVuZGVyIGAnc3VtbWFyeSdgLCBhYnNlbnRcbiAgICogIHVuZGVyIGAnb2ZmJ2AuICovXG4gIHN0YWdlUmVhZHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbG9nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGVycm9yczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIG1ldHJpY3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmFsczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZsb3dNZXNzYWdlcz86IEZsb3dNZXNzYWdlW107XG4gIC8qKlxuICAgKiBFdmVyeSBhdHRlbXB0IG9mIHRoaXMgZXhlY3V0aW9uLCBpbiBvcmRlciDigJQgd2hlbiBpdCBzdGFydGVkLCBob3cgbG9uZyBpdCB0b29rLCBob3cgaXQgZW5kZWQsIGFuZCB0aGVcbiAgICogcmV0cnktb3Itc3RvcCBkZWNpc2lvbiB0aGF0IGZvbGxvd2VkIChgQXR0ZW1wdFJlY29yZGApOiB0aGUgc3RhZ2UncyBvd24gdW5kZXIgaXRzIHJldHJ5IHBvbGljeSwgYSBgdGltZW91dE1zYFxuICAgKiBvciBhIHJ1biBkZWFkbGluZSAoMTAuMSwgYGtpbmQ6ICdzdGFnZSdgKSwgYW5kIHRob3NlIG9mIHRoZSBjYWxscyBpdCBtYWRlIHRocm91Z2ggYHNjb3BlLiRjYWxsYCBhbmQgdGhlXG4gICAqIG91dHNpZGUgYXR0ZW1wdHMgaXQgcmVwb3J0ZWQgdGhyb3VnaCBgb2JzZXJ2ZWQoKWAgKFAyLCBga2luZDogJ2NhbGwnYCAvIGAnb2JzZXJ2ZWQnYCwgdGhlIGZpcnN0IDEwMDAg4oCUXG4gICAqIGBTdGFnZUNvbnRleHQgwrcgTUFYX0NBTExfUkVDT1JEU2ApLiBBYnNlbnQgd2hlbiB0aGVyZSBhcmUgbm9uZS4gVGhlIGNvbW1pdCBsb2cgbmV2ZXIgY2FycmllcyBhdHRlbXB0czogYVxuICAgKiByZXRyaWVkIHN0YWdlIGlzIHN0aWxsIE9ORSBidW5kbGUuXG4gICAqL1xuICBhdHRlbXB0cz86IHJlYWRvbmx5IEF0dGVtcHRSZWNvcmRbXTtcbiAgLyoqXG4gICAqIENhbGwgYW5kIG9ic2VydmVkIGF0dGVtcHQgcmVjb3JkcyB0aGlzIGV4ZWN1dGlvbiBtYWRlIHBhc3QgdGhlIGZpcnN0IDEwMDAg4oCUIGNvdW50ZWQsIG5vdCBrZXB0IChlYWNoIHN0aWxsXG4gICAqIGZpcmVkIGBvbkF0dGVtcHRgKS4gQWJzZW50IHdoZW4gbm9uZSB3ZXJlIGRyb3BwZWQuXG4gICAqL1xuICBhdHRlbXB0c0Ryb3BwZWQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgc2VyaWVzIGF0IGEgZ2xhbmNlIOKAlCBjb3VudHMgcGVyIG91dGNvbWUsIGFuZCBob3cgaXQgZW5kZWQuIFN0YW1wZWQgd2hlbiB0aGUgc2VyaWVzIGVuZHM6IGFic2VudCB3aGlsZSBpdFxuICAgKiBpcyBzdGlsbCBydW5uaW5nIChhIHNuYXBzaG90IHRha2VuIG1pZC1zdGFnZSkgYW5kIHdpdGhvdXQgYSBwb2xpY3kuXG4gICAqL1xuICBhdHRlbXB0U3VtbWFyeT86IEF0dGVtcHRTdW1tYXJ5O1xuICAvKipcbiAgICogV3JpdGVzIChhbmQgZW1pdHMpIGFuIGF0dGVtcHQgdHJpZWQgQUZURVIgaXQgaGFkIGVuZGVkIOKAlCB0aW1lZCBvdXQsIGFib3J0ZWQgb3IgZmFpbGVkIOKAlCBpbiB0aGUgb3JkZXIgdGhleSBjYW1lXG4gICAqIChQMWIpLiBFYWNoIHdhcyBkcm9wcGVkIGF0IHRoZSBzY29wZSwgc28gbm9uZSByZWFjaGVkIHRoZSBzdGFnZSdzIGJ1ZmZlciwgaXRzIGNvbW1pdCBvciBhIHJlY29yZGVyOyB0aGlzIGlzXG4gICAqIHRoZSByZWNvcmQgdGhhdCB0aGV5IHdlcmUgdHJpZWQg4oCUIHRoZSBmaXJzdCAxMDAgKGBNQVhfTEFURV9XUklURVNgKS4gQW4gYWJhbmRvbmVkIGZ1bmN0aW9uIGNhbiBrZWVwIHJ1bm5pbmdcbiAgICogYWZ0ZXIgdGhlIHJ1biBlbmRlZCwgc28gdGhlIGxpc3QgY2FuIGdyb3cgYWZ0ZXIgYSBzbmFwc2hvdCB3YXMgdGFrZW4uIE5hbWVzIG9ubHksIG5ldmVyIHZhbHVlcy4gQWJzZW50IHdoZW5cbiAgICogdGhlcmUgd2VyZSBub25lLlxuICAgKi9cbiAgbGF0ZVdyaXRlcz86IHJlYWRvbmx5IExhdGVXcml0ZVtdO1xuICAvKipcbiAgICogRml4ZWQtcmVhc29uIG1hcmtzIGNvbGxlY3RlZCBhcyB0aGlzIGV4ZWN1dGlvbiBydW5zLiBBYnNlbnQgd2hlbiBubyBmYWN0IG5lZWRzIGF0dGVudGlvbi5cbiAgICogQXR0ZW1wdCBldmlkZW5jZSB1c2VzIGNhbm9uaWNhbCBGb290dHJhY2UgYXR0ZW1wdCBJRHMuIFN1bW1hcnktb25seSBhbmQgc3RhZ2UtZXJyb3IgcHJvb2YgcmVzb2x2ZXMgd2l0aGluIFRISVMgbm9kZVxuICAgKiB0aHJvdWdoIGF0dGVtcHRTdW1tYXJ5LCBlcnJvcnM6c3RhZ2VFeGVjdXRpb25FcnJvciBvciBhdHRlbXB0c0Ryb3BwZWQuIFF1YWxpdHkgbWFya3MgYXJlIHJlYWQtdGltZSByZWNvcmRlciB3b3JrLlxuICAgKiBNYXJrcyByZXRhaW4gbm8gZXJyb3IgdGV4dCwgdmFsdWVzLCB0YXJnZXRzIG9yIGlkZW1wb3RlbmN5IGtleXM7IG9taXR0ZWQgcHJvb2YgaXMgZGlzY2xvc2VkIGFzIG5vdC1jb2xsZWN0ZWQuXG4gICAqL1xuICBhdHRlbnRpb24/OiByZWFkb25seSBBdHRlbnRpb25bXTtcbiAgbmV4dD86IFN0YWdlU25hcHNob3Q7XG4gIGNoaWxkcmVuPzogU3RhZ2VTbmFwc2hvdFtdO1xufTtcbiJdfQ==
|
|
@@ -224,6 +224,18 @@ export declare class RedactionRule {
|
|
|
224
224
|
* channel) applies on top. Clear values keep their identity.
|
|
225
225
|
*/
|
|
226
226
|
retainDiagnostic(address: readonly string[], value: unknown): unknown;
|
|
227
|
+
/**
|
|
228
|
+
* An idempotency key as records serve it (P3, design §6). The key is a VALUE, and the documented way to make one
|
|
229
|
+
* is from the input or the state (`order-${args.orderId}`) — so it is selected by its NAME (the diagnostic entry
|
|
230
|
+
* `{ idempotencyKey }`: a state rule of that name, or `policy.diagnostics` at `logs.idempotencyKey`) AND by its
|
|
231
|
+
* SOURCES, conservatively, the subflow-mapper taint law's way: when the input it may be derived from holds a
|
|
232
|
+
* selected key at any depth, or the stage read a selected value before making it (`selectedReads`), it is served
|
|
233
|
+
* whole as the placeholder. Never value equality. An inert rule never reads it.
|
|
234
|
+
*/
|
|
235
|
+
retainIdempotencyKey(key: string, sources: {
|
|
236
|
+
readonly input?: unknown;
|
|
237
|
+
readonly selectedReads?: number;
|
|
238
|
+
}): string;
|
|
227
239
|
/**
|
|
228
240
|
* Retain flow-message text (`flowMessages.description` / `.rationale`): text
|
|
229
241
|
* the engine composes has no name of its own, so no state selector reaches
|