footprintjs 9.41.0 → 9.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/AGENTS.md +7 -3
  2. package/CLAUDE.md +12 -11
  3. package/README.md +7 -3
  4. package/dist/advanced.js +4 -3
  5. package/dist/esm/advanced.d.ts +3 -1
  6. package/dist/esm/advanced.js +3 -2
  7. package/dist/esm/index.d.ts +3 -3
  8. package/dist/esm/index.js +1 -1
  9. package/dist/esm/lib/builder/FlowChartBuilder.d.ts +14 -4
  10. package/dist/esm/lib/builder/FlowChartBuilder.js +25 -7
  11. package/dist/esm/lib/builder/types.d.ts +2 -3
  12. package/dist/esm/lib/builder/types.js +1 -1
  13. package/dist/esm/lib/capture/freeze.d.ts +5 -5
  14. package/dist/esm/lib/capture/freeze.js +5 -4
  15. package/dist/esm/lib/contract/index.d.ts +5 -8
  16. package/dist/esm/lib/contract/index.js +5 -10
  17. package/dist/esm/lib/contract/types.d.ts +3 -81
  18. package/dist/esm/lib/contract/types.js +4 -5
  19. package/dist/esm/lib/decide/decide.js +13 -46
  20. package/dist/esm/lib/detach/drivers/batch.d.ts +9 -0
  21. package/dist/esm/lib/detach/drivers/batch.js +79 -0
  22. package/dist/esm/lib/detach/drivers/microtaskBatch.d.ts +17 -20
  23. package/dist/esm/lib/detach/drivers/microtaskBatch.js +20 -72
  24. package/dist/esm/lib/detach/drivers/setImmediate.js +10 -41
  25. package/dist/esm/lib/detach/drivers/setTimeout.js +3 -36
  26. package/dist/esm/lib/detach/types.d.ts +17 -20
  27. package/dist/esm/lib/detach/types.js +9 -11
  28. package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +7 -3
  29. package/dist/esm/lib/engine/handlers/DeciderHandler.js +7 -5
  30. package/dist/esm/lib/engine/handlers/ParallelForEachHandler.d.ts +2 -3
  31. package/dist/esm/lib/engine/handlers/ParallelForEachHandler.js +21 -24
  32. package/dist/esm/lib/engine/handlers/SelectorHandler.d.ts +2 -4
  33. package/dist/esm/lib/engine/handlers/SelectorHandler.js +15 -7
  34. package/dist/esm/lib/engine/handlers/StageRunner.js +11 -22
  35. package/dist/esm/lib/engine/handlers/SubflowExecutor.js +32 -17
  36. package/dist/esm/lib/engine/handlers/SubflowInputMapper.d.ts +4 -3
  37. package/dist/esm/lib/engine/handlers/SubflowInputMapper.js +19 -8
  38. package/dist/esm/lib/engine/handlers/breakFlag.d.ts +3 -0
  39. package/dist/esm/lib/engine/handlers/breakFlag.js +9 -0
  40. package/dist/esm/lib/engine/handlers/commitStage.js +3 -3
  41. package/dist/esm/lib/engine/handlers/servedPause.d.ts +15 -0
  42. package/dist/esm/lib/engine/handlers/servedPause.js +26 -0
  43. package/dist/esm/lib/engine/handlers/stageError.d.ts +20 -0
  44. package/dist/esm/lib/engine/handlers/stageError.js +28 -0
  45. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +6 -1
  46. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +40 -67
  47. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +3 -3
  48. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +4 -8
  49. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.d.ts +7 -1
  50. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +28 -48
  51. package/dist/esm/lib/engine/narrative/formatting/resolveText.d.ts +6 -0
  52. package/dist/esm/lib/engine/narrative/formatting/resolveText.js +9 -0
  53. package/dist/esm/lib/engine/narrative/formatting/sentences.d.ts +16 -0
  54. package/dist/esm/lib/engine/narrative/formatting/sentences.js +50 -0
  55. package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +2 -0
  56. package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
  57. package/dist/esm/lib/engine/narrative/recorders/RLENarrativeFlowRecorder.js +3 -7
  58. package/dist/esm/lib/engine/narrative/recorders/SeparateNarrativeFlowRecorder.js +3 -7
  59. package/dist/esm/lib/engine/narrative/recorders/WindowedNarrativeFlowRecorder.d.ts +0 -1
  60. package/dist/esm/lib/engine/narrative/recorders/WindowedNarrativeFlowRecorder.js +5 -10
  61. package/dist/esm/lib/engine/narrative/types.d.ts +18 -8
  62. package/dist/esm/lib/engine/narrative/types.js +1 -1
  63. package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +8 -3
  64. package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +64 -33
  65. package/dist/esm/lib/engine/types.d.ts +4 -0
  66. package/dist/esm/lib/engine/types.js +1 -1
  67. package/dist/esm/lib/memory/DiagnosticCollector.d.ts +12 -0
  68. package/dist/esm/lib/memory/DiagnosticCollector.js +53 -9
  69. package/dist/esm/lib/memory/EventLog.d.ts +9 -0
  70. package/dist/esm/lib/memory/EventLog.js +24 -1
  71. package/dist/esm/lib/memory/StageContext.d.ts +22 -1
  72. package/dist/esm/lib/memory/StageContext.js +61 -7
  73. package/dist/esm/lib/memory/eventPosition.d.ts +18 -0
  74. package/dist/esm/lib/memory/eventPosition.js +2 -0
  75. package/dist/esm/lib/memory/merge.d.ts +2 -1
  76. package/dist/esm/lib/memory/merge.js +15 -4
  77. package/dist/esm/lib/memory/redaction.d.ts +339 -17
  78. package/dist/esm/lib/memory/redaction.js +993 -32
  79. package/dist/esm/lib/observer-queue/deferredDispatcher.d.ts +2 -2
  80. package/dist/esm/lib/observer-queue/deferredDispatcher.js +3 -3
  81. package/dist/esm/lib/observer-queue/index.d.ts +7 -4
  82. package/dist/esm/lib/observer-queue/index.js +8 -5
  83. package/dist/esm/lib/pause/index.d.ts +1 -1
  84. package/dist/esm/lib/pause/index.js +1 -1
  85. package/dist/esm/lib/pause/record.js +19 -1
  86. package/dist/esm/lib/pause/types.d.ts +20 -0
  87. package/dist/esm/lib/pause/types.js +1 -1
  88. package/dist/esm/lib/reactive/createTypedScope.js +20 -21
  89. package/dist/esm/lib/reactive/index.d.ts +1 -1
  90. package/dist/esm/lib/reactive/index.js +2 -2
  91. package/dist/esm/lib/reactive/types.d.ts +0 -3
  92. package/dist/esm/lib/reactive/types.js +1 -23
  93. package/dist/esm/lib/recorder/EmitRecorder.d.ts +9 -0
  94. package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
  95. package/dist/esm/lib/recorder/InOutRecorder.d.ts +5 -2
  96. package/dist/esm/lib/recorder/InOutRecorder.js +6 -3
  97. package/dist/esm/lib/runner/DeferredObserverTier.d.ts +4 -3
  98. package/dist/esm/lib/runner/DeferredObserverTier.js +5 -4
  99. package/dist/esm/lib/runner/ExecutionRuntime.d.ts +3 -0
  100. package/dist/esm/lib/runner/ExecutionRuntime.js +2 -1
  101. package/dist/esm/lib/runner/FlowChartExecutor.d.ts +11 -9
  102. package/dist/esm/lib/runner/FlowChartExecutor.js +18 -10
  103. package/dist/esm/lib/runner/attach.d.ts +3 -1
  104. package/dist/esm/lib/runner/attach.js +21 -31
  105. package/dist/esm/lib/runner/checkpoint.d.ts +3 -1
  106. package/dist/esm/lib/runner/checkpoint.js +4 -1
  107. package/dist/esm/lib/scope/ScopeFacade.d.ts +13 -1
  108. package/dist/esm/lib/scope/ScopeFacade.js +60 -39
  109. package/dist/esm/lib/scope/protection/createProtectedScope.js +5 -2
  110. package/dist/esm/lib/scope/protection/readonlyInput.d.ts +16 -6
  111. package/dist/esm/lib/scope/protection/readonlyInput.js +72 -9
  112. package/dist/esm/lib/scope/providers/baseStateCompatible.d.ts +10 -24
  113. package/dist/esm/lib/scope/providers/baseStateCompatible.js +35 -35
  114. package/dist/esm/lib/scope/providers/providers.d.ts +2 -2
  115. package/dist/esm/lib/scope/providers/providers.js +3 -3
  116. package/dist/esm/lib/scope/providers/resolve.js +2 -2
  117. package/dist/esm/lib/scope/providers/types.d.ts +4 -2
  118. package/dist/esm/lib/scope/providers/types.js +1 -1
  119. package/dist/esm/lib/scope/recorders/MetricRecorder.d.ts +2 -3
  120. package/dist/esm/lib/scope/recorders/MetricRecorder.js +11 -14
  121. package/dist/esm/lib/scope/runtime.d.ts +48 -0
  122. package/dist/esm/lib/scope/runtime.js +60 -0
  123. package/dist/esm/lib/scope/state/zod/defineScopeFromZod.d.ts +2 -2
  124. package/dist/esm/lib/scope/state/zod/defineScopeFromZod.js +17 -6
  125. package/dist/esm/lib/scope/state/zod/resolver.js +3 -15
  126. package/dist/esm/lib/scope/state/zod/scopeFactory.d.ts +7 -3
  127. package/dist/esm/lib/scope/state/zod/scopeFactory.js +57 -22
  128. package/dist/esm/lib/scope/state/zod/utils/validateHelper.d.ts +27 -18
  129. package/dist/esm/lib/scope/state/zod/utils/validateHelper.js +66 -67
  130. package/dist/esm/recorders.d.ts +3 -0
  131. package/dist/esm/recorders.js +1 -1
  132. package/dist/index.js +1 -1
  133. package/dist/lib/builder/FlowChartBuilder.js +25 -7
  134. package/dist/lib/builder/types.js +1 -1
  135. package/dist/lib/capture/freeze.js +5 -4
  136. package/dist/lib/contract/index.js +6 -13
  137. package/dist/lib/contract/types.js +4 -5
  138. package/dist/lib/decide/decide.js +13 -46
  139. package/dist/lib/detach/drivers/batch.js +83 -0
  140. package/dist/lib/detach/drivers/microtaskBatch.js +20 -72
  141. package/dist/lib/detach/drivers/setImmediate.js +10 -41
  142. package/dist/lib/detach/drivers/setTimeout.js +3 -36
  143. package/dist/lib/detach/types.js +9 -11
  144. package/dist/lib/engine/handlers/ChildrenExecutor.js +7 -3
  145. package/dist/lib/engine/handlers/DeciderHandler.js +7 -5
  146. package/dist/lib/engine/handlers/ParallelForEachHandler.js +21 -24
  147. package/dist/lib/engine/handlers/SelectorHandler.js +15 -7
  148. package/dist/lib/engine/handlers/StageRunner.js +11 -22
  149. package/dist/lib/engine/handlers/SubflowExecutor.js +32 -17
  150. package/dist/lib/engine/handlers/SubflowInputMapper.js +19 -8
  151. package/dist/lib/engine/handlers/breakFlag.js +13 -0
  152. package/dist/lib/engine/handlers/commitStage.js +2 -2
  153. package/dist/lib/engine/handlers/servedPause.js +30 -0
  154. package/dist/lib/engine/handlers/stageError.js +34 -0
  155. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +40 -67
  156. package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +4 -8
  157. package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +28 -48
  158. package/dist/lib/engine/narrative/formatting/resolveText.js +13 -0
  159. package/dist/lib/engine/narrative/formatting/sentences.js +63 -0
  160. package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
  161. package/dist/lib/engine/narrative/recorders/RLENarrativeFlowRecorder.js +3 -7
  162. package/dist/lib/engine/narrative/recorders/SeparateNarrativeFlowRecorder.js +3 -7
  163. package/dist/lib/engine/narrative/recorders/WindowedNarrativeFlowRecorder.js +5 -10
  164. package/dist/lib/engine/narrative/types.js +1 -1
  165. package/dist/lib/engine/traversal/FlowchartTraverser.js +64 -33
  166. package/dist/lib/engine/types.js +1 -1
  167. package/dist/lib/memory/DiagnosticCollector.js +53 -9
  168. package/dist/lib/memory/EventLog.js +24 -1
  169. package/dist/lib/memory/StageContext.js +61 -7
  170. package/dist/lib/memory/eventPosition.js +3 -0
  171. package/dist/lib/memory/merge.js +15 -4
  172. package/dist/lib/memory/redaction.js +997 -33
  173. package/dist/lib/observer-queue/deferredDispatcher.js +3 -3
  174. package/dist/lib/observer-queue/index.js +8 -5
  175. package/dist/lib/pause/index.js +1 -1
  176. package/dist/lib/pause/record.js +19 -1
  177. package/dist/lib/pause/types.js +1 -1
  178. package/dist/lib/reactive/createTypedScope.js +19 -20
  179. package/dist/lib/reactive/index.js +2 -5
  180. package/dist/lib/reactive/types.js +2 -24
  181. package/dist/lib/recorder/EmitRecorder.js +1 -1
  182. package/dist/lib/recorder/InOutRecorder.js +6 -3
  183. package/dist/lib/runner/DeferredObserverTier.js +5 -4
  184. package/dist/lib/runner/ExecutionRuntime.js +2 -1
  185. package/dist/lib/runner/FlowChartExecutor.js +18 -10
  186. package/dist/lib/runner/attach.js +21 -31
  187. package/dist/lib/runner/checkpoint.js +4 -1
  188. package/dist/lib/scope/ScopeFacade.js +60 -39
  189. package/dist/lib/scope/protection/createProtectedScope.js +5 -2
  190. package/dist/lib/scope/protection/readonlyInput.js +74 -10
  191. package/dist/lib/scope/providers/baseStateCompatible.js +37 -36
  192. package/dist/lib/scope/providers/providers.js +3 -3
  193. package/dist/lib/scope/providers/resolve.js +2 -2
  194. package/dist/lib/scope/providers/types.js +1 -1
  195. package/dist/lib/scope/recorders/MetricRecorder.js +11 -14
  196. package/dist/lib/scope/runtime.js +67 -0
  197. package/dist/lib/scope/state/zod/defineScopeFromZod.js +15 -4
  198. package/dist/lib/scope/state/zod/resolver.js +3 -15
  199. package/dist/lib/scope/state/zod/scopeFactory.js +58 -22
  200. package/dist/lib/scope/state/zod/utils/validateHelper.js +70 -68
  201. package/dist/recorders.js +1 -1
  202. package/dist/types/advanced.d.ts +3 -1
  203. package/dist/types/index.d.ts +3 -3
  204. package/dist/types/lib/builder/FlowChartBuilder.d.ts +14 -4
  205. package/dist/types/lib/builder/types.d.ts +2 -3
  206. package/dist/types/lib/capture/freeze.d.ts +5 -5
  207. package/dist/types/lib/contract/index.d.ts +5 -8
  208. package/dist/types/lib/contract/types.d.ts +3 -81
  209. package/dist/types/lib/detach/drivers/batch.d.ts +9 -0
  210. package/dist/types/lib/detach/drivers/microtaskBatch.d.ts +17 -20
  211. package/dist/types/lib/detach/types.d.ts +17 -20
  212. package/dist/types/lib/engine/handlers/ParallelForEachHandler.d.ts +2 -3
  213. package/dist/types/lib/engine/handlers/SelectorHandler.d.ts +2 -4
  214. package/dist/types/lib/engine/handlers/SubflowInputMapper.d.ts +4 -3
  215. package/dist/types/lib/engine/handlers/breakFlag.d.ts +3 -0
  216. package/dist/types/lib/engine/handlers/servedPause.d.ts +15 -0
  217. package/dist/types/lib/engine/handlers/stageError.d.ts +20 -0
  218. package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +6 -1
  219. package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +3 -3
  220. package/dist/types/lib/engine/narrative/NarrativeFlowRecorder.d.ts +7 -1
  221. package/dist/types/lib/engine/narrative/formatting/resolveText.d.ts +6 -0
  222. package/dist/types/lib/engine/narrative/formatting/sentences.d.ts +16 -0
  223. package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +2 -0
  224. package/dist/types/lib/engine/narrative/recorders/WindowedNarrativeFlowRecorder.d.ts +0 -1
  225. package/dist/types/lib/engine/narrative/types.d.ts +18 -8
  226. package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +8 -3
  227. package/dist/types/lib/engine/types.d.ts +4 -0
  228. package/dist/types/lib/memory/DiagnosticCollector.d.ts +12 -0
  229. package/dist/types/lib/memory/EventLog.d.ts +9 -0
  230. package/dist/types/lib/memory/StageContext.d.ts +22 -1
  231. package/dist/types/lib/memory/eventPosition.d.ts +18 -0
  232. package/dist/types/lib/memory/merge.d.ts +2 -1
  233. package/dist/types/lib/memory/redaction.d.ts +339 -17
  234. package/dist/types/lib/observer-queue/deferredDispatcher.d.ts +2 -2
  235. package/dist/types/lib/observer-queue/index.d.ts +7 -4
  236. package/dist/types/lib/pause/index.d.ts +1 -1
  237. package/dist/types/lib/pause/types.d.ts +20 -0
  238. package/dist/types/lib/reactive/index.d.ts +1 -1
  239. package/dist/types/lib/reactive/types.d.ts +0 -3
  240. package/dist/types/lib/recorder/EmitRecorder.d.ts +9 -0
  241. package/dist/types/lib/recorder/InOutRecorder.d.ts +5 -2
  242. package/dist/types/lib/runner/DeferredObserverTier.d.ts +4 -3
  243. package/dist/types/lib/runner/ExecutionRuntime.d.ts +3 -0
  244. package/dist/types/lib/runner/FlowChartExecutor.d.ts +11 -9
  245. package/dist/types/lib/runner/attach.d.ts +3 -1
  246. package/dist/types/lib/runner/checkpoint.d.ts +3 -1
  247. package/dist/types/lib/scope/ScopeFacade.d.ts +13 -1
  248. package/dist/types/lib/scope/protection/readonlyInput.d.ts +16 -6
  249. package/dist/types/lib/scope/providers/baseStateCompatible.d.ts +10 -24
  250. package/dist/types/lib/scope/providers/providers.d.ts +2 -2
  251. package/dist/types/lib/scope/providers/types.d.ts +4 -2
  252. package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +2 -3
  253. package/dist/types/lib/scope/runtime.d.ts +48 -0
  254. package/dist/types/lib/scope/state/zod/defineScopeFromZod.d.ts +2 -2
  255. package/dist/types/lib/scope/state/zod/scopeFactory.d.ts +7 -3
  256. package/dist/types/lib/scope/state/zod/utils/validateHelper.d.ts +27 -18
  257. package/dist/types/recorders.d.ts +3 -0
  258. package/package.json +4 -3
  259. package/dist/esm/lib/contract/defineContract.d.ts +0 -18
  260. package/dist/esm/lib/contract/defineContract.js +0 -64
  261. package/dist/esm/lib/contract/openapi.d.ts +0 -18
  262. package/dist/esm/lib/contract/openapi.js +0 -98
  263. package/dist/lib/contract/defineContract.js +0 -68
  264. package/dist/lib/contract/openapi.js +0 -102
  265. package/dist/types/lib/contract/defineContract.d.ts +0 -18
  266. package/dist/types/lib/contract/openapi.d.ts +0 -18
@@ -606,24 +606,27 @@ export declare class FlowChartBuilder<TOut = any, TScope = any> {
606
606
  * `addFunction(...).addListOfFunction(...)` already builds, which every
607
607
  * reader (engine, resume, structure, spec) handles. A second fan-out call
608
608
  * reuses that node, as it would any cursor. The id is reserved both ways:
609
- * refused here when a stage already has it, and by `_addToMap` /
609
+ * refused here when a stage already has it, and by stage admission /
610
610
  * `_registerSubflowDef` when a later stage or mount asks for it.
611
611
  */
612
612
  private _needForkParent;
613
613
  /** Ids `_needForkParent` generated — no later stage or mount may take one. */
614
614
  private _forkNodeIds;
615
- /** Asked by `_addToMap` / `_registerSubflowDef`: an id a generated fork node or a claiming door holds is refused. */
615
+ /** Shared by stage admission and subflow registration: reserved structural ids cannot be reused. */
616
616
  private _refuseForkNodeId;
617
617
  /** Ids the lazy-mount and parallelForEach doors claimed (they register in no map). */
618
618
  private _claimedIds;
619
+ /** Structural declarations without an embedded function; not function entries or loop targets. */
620
+ private _functionlessStageIds;
619
621
  /** True when an earlier stage, branch, fork child, mount or generated fork node holds `id`. */
620
622
  private _idTaken;
621
623
  /**
622
624
  * @internal The lazy-mount doors and `addParallelForEach` register their id
623
625
  * in no map, so through 9.37.0 they accepted an id another stage or mount
624
626
  * already had (and a later stage could take theirs). They claim it here:
625
- * refused when taken, recorded when fresh. Loop-ref stubs never pass
626
- * through a door, so they stay the one deliberate duplicate.
627
+ * refused when taken, recorded when fresh. Loop-ref stubs reference an
628
+ * existing stage rather than claiming a new id. Reusable function stages
629
+ * retain their separate `_addToMap` rule.
627
630
  */
628
631
  _claimFreshId(id: string, door: string): void;
629
632
  /**
@@ -656,6 +659,13 @@ export declare class FlowChartBuilder<TOut = any, TScope = any> {
656
659
  * here, at build time, where the id can still be changed.
657
660
  */
658
661
  _registerSubflowDef(id: string, root: StageNode<TOut, TScope>): void;
662
+ /**
663
+ * @internal One admission path for optional-function children and branches.
664
+ * A missing function does not erase the graph identity: check reservations
665
+ * and record it for future fresh-id claims, without adding a function or a
666
+ * loop target. Existing function references by id/name remain legal.
667
+ */
668
+ _registerStage(id: string, fn: StageFunction<TOut, TScope> | undefined): void;
659
669
  _addToMap(id: string, fn: StageFunction<TOut, TScope>): void;
660
670
  _mergeStageMap(other: Map<string, StageFunction<TOut, TScope>>, prefix?: string): void;
661
671
  /**