footprintjs 9.48.2 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/AGENTS.md +12 -10
  2. package/CLAUDE.md +21 -23
  3. package/README.md +1 -1
  4. package/dist/advanced.js +71 -128
  5. package/dist/esm/advanced.d.ts +24 -58
  6. package/dist/esm/advanced.js +13 -51
  7. package/dist/esm/index.d.ts +5 -8
  8. package/dist/esm/index.js +3 -3
  9. package/dist/esm/lib/builder/FlowChartBuilder.d.ts +1 -1
  10. package/dist/esm/lib/builder/FlowChartBuilder.js +3 -3
  11. package/dist/esm/lib/builder/structure/StructureRecorder.d.ts +1 -1
  12. package/dist/esm/lib/builder/structure/StructureRecorder.js +1 -1
  13. package/dist/esm/lib/capture/index.d.ts +0 -1
  14. package/dist/esm/lib/capture/index.js +1 -2
  15. package/dist/esm/lib/engine/graph/prefixNodeTree.js +2 -2
  16. package/dist/esm/lib/engine/handlers/ResumeEntry.d.ts +3 -3
  17. package/dist/esm/lib/engine/handlers/ResumeEntry.js +4 -4
  18. package/dist/esm/lib/engine/handlers/SubflowExecutor.d.ts +1 -2
  19. package/dist/esm/lib/engine/handlers/SubflowExecutor.js +4 -8
  20. package/dist/esm/lib/engine/index.d.ts +1 -1
  21. package/dist/esm/lib/engine/index.js +1 -1
  22. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +4 -4
  23. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +1 -1
  24. package/dist/esm/lib/engine/narrative/index.d.ts +1 -1
  25. package/dist/esm/lib/engine/narrative/index.js +1 -1
  26. package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +1 -11
  27. package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
  28. package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +2 -10
  29. package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +4 -6
  30. package/dist/esm/lib/engine/traversalContext.d.ts +1 -1
  31. package/dist/esm/lib/engine/traversalContext.js +2 -2
  32. package/dist/esm/lib/engine/types.d.ts +2 -10
  33. package/dist/esm/lib/engine/types.js +1 -1
  34. package/dist/esm/lib/engine/walkSubflowSpec.js +2 -2
  35. package/dist/esm/lib/ids/reservedIds.js +2 -2
  36. package/dist/esm/lib/memory/DiagnosticCollector.js +2 -2
  37. package/dist/esm/lib/memory/StageContext.d.ts +2 -4
  38. package/dist/esm/lib/memory/StageContext.js +2 -2
  39. package/dist/esm/lib/memory/borrowedMutation.js +2 -2
  40. package/dist/esm/lib/memory/index.d.ts +6 -21
  41. package/dist/esm/lib/memory/index.js +4 -22
  42. package/dist/esm/lib/memory/redaction.d.ts +1 -1
  43. package/dist/esm/lib/memory/redaction.js +2 -2
  44. package/dist/esm/lib/memory/runPolicy.d.ts +3 -2
  45. package/dist/esm/lib/memory/runPolicy.js +1 -1
  46. package/dist/esm/lib/reactive/createTypedScope.js +2 -2
  47. package/dist/esm/lib/reactive/writeTraps.js +2 -2
  48. package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +3 -2
  49. package/dist/esm/lib/recorder/ControlDepRecorder.js +3 -2
  50. package/dist/esm/lib/recorder/EmitRecorder.d.ts +1 -1
  51. package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
  52. package/dist/esm/lib/recorder/InOutRecorder.js +2 -2
  53. package/dist/esm/lib/recorder/qualityTrace.d.ts +1 -1
  54. package/dist/esm/lib/recorder/qualityTrace.js +2 -2
  55. package/dist/esm/lib/runner/DeferredObserverTier.js +2 -2
  56. package/dist/esm/lib/runner/ExecutionRuntime.d.ts +4 -5
  57. package/dist/esm/lib/runner/ExecutionRuntime.js +2 -5
  58. package/dist/esm/lib/runner/FlowChartExecutor.d.ts +1 -1
  59. package/dist/esm/lib/runner/FlowChartExecutor.js +1 -1
  60. package/dist/esm/lib/runner/getSubtreeSnapshot.d.ts +1 -1
  61. package/dist/esm/lib/runner/getSubtreeSnapshot.js +4 -4
  62. package/dist/esm/lib/runner/resume.js +2 -2
  63. package/dist/esm/lib/runner/snapshot.js +3 -2
  64. package/dist/esm/lib/scope/ScopeFacade.js +2 -2
  65. package/dist/esm/lib/scope/state/zod/scopeFactory.js +2 -2
  66. package/dist/esm/recorders.d.ts +2 -3
  67. package/dist/esm/recorders.js +1 -1
  68. package/dist/esm/trace.d.ts +11 -57
  69. package/dist/esm/trace.js +10 -68
  70. package/dist/index.js +3 -3
  71. package/dist/lib/builder/FlowChartBuilder.js +5 -5
  72. package/dist/lib/builder/structure/StructureRecorder.js +1 -1
  73. package/dist/lib/capture/index.js +2 -4
  74. package/dist/lib/engine/graph/prefixNodeTree.js +5 -5
  75. package/dist/lib/engine/handlers/ResumeEntry.js +4 -4
  76. package/dist/lib/engine/handlers/SubflowExecutor.js +5 -9
  77. package/dist/lib/engine/index.js +1 -1
  78. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +1 -1
  79. package/dist/lib/engine/narrative/index.js +1 -1
  80. package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
  81. package/dist/lib/engine/traversal/FlowchartTraverser.js +8 -10
  82. package/dist/lib/engine/traversalContext.js +4 -4
  83. package/dist/lib/engine/types.js +1 -1
  84. package/dist/lib/engine/walkSubflowSpec.js +3 -3
  85. package/dist/lib/ids/reservedIds.js +5 -5
  86. package/dist/lib/memory/DiagnosticCollector.js +3 -3
  87. package/dist/lib/memory/StageContext.js +3 -3
  88. package/dist/lib/memory/borrowedMutation.js +3 -3
  89. package/dist/lib/memory/index.js +7 -42
  90. package/dist/lib/memory/redaction.js +3 -3
  91. package/dist/lib/memory/runPolicy.js +1 -1
  92. package/dist/lib/reactive/createTypedScope.js +3 -3
  93. package/dist/lib/reactive/writeTraps.js +4 -4
  94. package/dist/lib/recorder/ControlDepRecorder.js +3 -2
  95. package/dist/lib/recorder/EmitRecorder.js +1 -1
  96. package/dist/lib/recorder/InOutRecorder.js +3 -3
  97. package/dist/lib/recorder/qualityTrace.js +4 -4
  98. package/dist/lib/runner/DeferredObserverTier.js +3 -3
  99. package/dist/lib/runner/ExecutionRuntime.js +6 -9
  100. package/dist/lib/runner/FlowChartExecutor.js +1 -1
  101. package/dist/lib/runner/getSubtreeSnapshot.js +6 -6
  102. package/dist/lib/runner/resume.js +3 -3
  103. package/dist/lib/runner/snapshot.js +6 -5
  104. package/dist/lib/scope/ScopeFacade.js +3 -3
  105. package/dist/lib/scope/state/zod/scopeFactory.js +4 -4
  106. package/dist/recorders.js +1 -1
  107. package/dist/trace.js +18 -120
  108. package/dist/types/advanced.d.ts +24 -58
  109. package/dist/types/index.d.ts +5 -8
  110. package/dist/types/lib/builder/FlowChartBuilder.d.ts +1 -1
  111. package/dist/types/lib/builder/structure/StructureRecorder.d.ts +1 -1
  112. package/dist/types/lib/capture/index.d.ts +0 -1
  113. package/dist/types/lib/engine/handlers/ResumeEntry.d.ts +3 -3
  114. package/dist/types/lib/engine/handlers/SubflowExecutor.d.ts +1 -2
  115. package/dist/types/lib/engine/index.d.ts +1 -1
  116. package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +4 -4
  117. package/dist/types/lib/engine/narrative/index.d.ts +1 -1
  118. package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +1 -11
  119. package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +2 -10
  120. package/dist/types/lib/engine/traversalContext.d.ts +1 -1
  121. package/dist/types/lib/engine/types.d.ts +2 -10
  122. package/dist/types/lib/memory/StageContext.d.ts +2 -4
  123. package/dist/types/lib/memory/index.d.ts +6 -21
  124. package/dist/types/lib/memory/redaction.d.ts +1 -1
  125. package/dist/types/lib/memory/runPolicy.d.ts +3 -2
  126. package/dist/types/lib/recorder/ControlDepRecorder.d.ts +3 -2
  127. package/dist/types/lib/recorder/EmitRecorder.d.ts +1 -1
  128. package/dist/types/lib/recorder/qualityTrace.d.ts +1 -1
  129. package/dist/types/lib/runner/ExecutionRuntime.d.ts +4 -5
  130. package/dist/types/lib/runner/FlowChartExecutor.d.ts +1 -1
  131. package/dist/types/lib/runner/getSubtreeSnapshot.d.ts +1 -1
  132. package/dist/types/recorders.d.ts +2 -3
  133. package/dist/types/trace.d.ts +11 -57
  134. package/package.json +6 -15
  135. package/dist/esm/lib/capture/freeze.d.ts +0 -91
  136. package/dist/esm/lib/capture/freeze.js +0 -314
  137. package/dist/esm/lib/capture/ownData.d.ts +0 -7
  138. package/dist/esm/lib/capture/ownData.js +0 -15
  139. package/dist/esm/lib/capture/valueKinds.d.ts +0 -57
  140. package/dist/esm/lib/capture/valueKinds.js +0 -142
  141. package/dist/esm/lib/ids/runtimeStageId.d.ts +0 -173
  142. package/dist/esm/lib/ids/runtimeStageId.js +0 -194
  143. package/dist/esm/lib/memory/EventLog.d.ts +0 -105
  144. package/dist/esm/lib/memory/EventLog.js +0 -148
  145. package/dist/esm/lib/memory/RecordFrame.d.ts +0 -232
  146. package/dist/esm/lib/memory/RecordFrame.js +0 -296
  147. package/dist/esm/lib/memory/SharedMemory.d.ts +0 -46
  148. package/dist/esm/lib/memory/SharedMemory.js +0 -88
  149. package/dist/esm/lib/memory/TransactionBuffer.d.ts +0 -521
  150. package/dist/esm/lib/memory/TransactionBuffer.js +0 -946
  151. package/dist/esm/lib/memory/admission.d.ts +0 -81
  152. package/dist/esm/lib/memory/admission.js +0 -153
  153. package/dist/esm/lib/memory/backtrack.d.ts +0 -286
  154. package/dist/esm/lib/memory/backtrack.js +0 -457
  155. package/dist/esm/lib/memory/commitLogUtils.d.ts +0 -217
  156. package/dist/esm/lib/memory/commitLogUtils.js +0 -384
  157. package/dist/esm/lib/memory/deltaEncoding.d.ts +0 -66
  158. package/dist/esm/lib/memory/deltaEncoding.js +0 -122
  159. package/dist/esm/lib/memory/equality.d.ts +0 -93
  160. package/dist/esm/lib/memory/equality.js +0 -262
  161. package/dist/esm/lib/memory/eventPosition.d.ts +0 -18
  162. package/dist/esm/lib/memory/eventPosition.js +0 -2
  163. package/dist/esm/lib/memory/honesty.d.ts +0 -93
  164. package/dist/esm/lib/memory/honesty.js +0 -92
  165. package/dist/esm/lib/memory/keyPaths.d.ts +0 -125
  166. package/dist/esm/lib/memory/keyPaths.js +0 -227
  167. package/dist/esm/lib/memory/logModel.d.ts +0 -76
  168. package/dist/esm/lib/memory/logModel.js +0 -364
  169. package/dist/esm/lib/memory/merge.d.ts +0 -26
  170. package/dist/esm/lib/memory/merge.js +0 -60
  171. package/dist/esm/lib/memory/pathOps.d.ts +0 -115
  172. package/dist/esm/lib/memory/pathOps.js +0 -290
  173. package/dist/esm/lib/memory/paths.d.ts +0 -52
  174. package/dist/esm/lib/memory/paths.js +0 -57
  175. package/dist/esm/lib/memory/placeholders.d.ts +0 -39
  176. package/dist/esm/lib/memory/placeholders.js +0 -40
  177. package/dist/esm/lib/memory/recordCommit.d.ts +0 -45
  178. package/dist/esm/lib/memory/recordCommit.js +0 -61
  179. package/dist/esm/lib/memory/scrub.d.ts +0 -53
  180. package/dist/esm/lib/memory/scrub.js +0 -74
  181. package/dist/esm/lib/memory/types.d.ts +0 -209
  182. package/dist/esm/lib/memory/types.js +0 -10
  183. package/dist/esm/lib/memory/utils.d.ts +0 -73
  184. package/dist/esm/lib/memory/utils.js +0 -159
  185. package/dist/esm/lib/memory/verbs.d.ts +0 -333
  186. package/dist/esm/lib/memory/verbs.js +0 -427
  187. package/dist/esm/lib/recorder/CommitRangeIndex.d.ts +0 -147
  188. package/dist/esm/lib/recorder/CommitRangeIndex.js +0 -207
  189. package/dist/esm/lib/scope/detectCircular.d.ts +0 -13
  190. package/dist/esm/lib/scope/detectCircular.js +0 -14
  191. package/dist/esm/lib/scope/recorders/summarizeValue.d.ts +0 -5
  192. package/dist/esm/lib/scope/recorders/summarizeValue.js +0 -6
  193. package/dist/esm/lib/slice/elementProvenance.d.ts +0 -81
  194. package/dist/esm/lib/slice/elementProvenance.js +0 -190
  195. package/dist/esm/lib/slice/forwardSliceForKey.d.ts +0 -88
  196. package/dist/esm/lib/slice/forwardSliceForKey.js +0 -243
  197. package/dist/esm/lib/slice/index.d.ts +0 -25
  198. package/dist/esm/lib/slice/index.js +0 -25
  199. package/dist/esm/lib/slice/keyIndex.d.ts +0 -137
  200. package/dist/esm/lib/slice/keyIndex.js +0 -293
  201. package/dist/esm/lib/slice/keyTimeline.d.ts +0 -49
  202. package/dist/esm/lib/slice/keyTimeline.js +0 -113
  203. package/dist/esm/lib/slice/keysReadSources.d.ts +0 -51
  204. package/dist/esm/lib/slice/keysReadSources.js +0 -95
  205. package/dist/esm/lib/slice/serialize.d.ts +0 -78
  206. package/dist/esm/lib/slice/serialize.js +0 -278
  207. package/dist/esm/lib/slice/sliceForKey.d.ts +0 -47
  208. package/dist/esm/lib/slice/sliceForKey.js +0 -88
  209. package/dist/esm/lib/slice/types.d.ts +0 -567
  210. package/dist/esm/lib/slice/types.js +0 -25
  211. package/dist/esm/lib/time-travel/axis.d.ts +0 -119
  212. package/dist/esm/lib/time-travel/axis.js +0 -179
  213. package/dist/esm/lib/time-travel/bundles.d.ts +0 -77
  214. package/dist/esm/lib/time-travel/bundles.js +0 -136
  215. package/dist/esm/lib/time-travel/chain.d.ts +0 -93
  216. package/dist/esm/lib/time-travel/chain.js +0 -188
  217. package/dist/esm/lib/time-travel/commitStops.d.ts +0 -55
  218. package/dist/esm/lib/time-travel/commitStops.js +0 -202
  219. package/dist/esm/lib/time-travel/index.d.ts +0 -22
  220. package/dist/esm/lib/time-travel/index.js +0 -21
  221. package/dist/esm/lib/time-travel/stateAt.d.ts +0 -102
  222. package/dist/esm/lib/time-travel/stateAt.js +0 -153
  223. package/dist/esm/lib/time-travel/tagStops.d.ts +0 -72
  224. package/dist/esm/lib/time-travel/tagStops.js +0 -102
  225. package/dist/esm/lib/time-travel/timeTravel.d.ts +0 -70
  226. package/dist/esm/lib/time-travel/timeTravel.js +0 -360
  227. package/dist/esm/lib/time-travel/types.d.ts +0 -470
  228. package/dist/esm/lib/time-travel/types.js +0 -23
  229. package/dist/esm/write.d.ts +0 -47
  230. package/dist/esm/write.js +0 -46
  231. package/dist/lib/capture/freeze.js +0 -320
  232. package/dist/lib/capture/ownData.js +0 -19
  233. package/dist/lib/capture/valueKinds.js +0 -146
  234. package/dist/lib/ids/runtimeStageId.js +0 -210
  235. package/dist/lib/memory/EventLog.js +0 -152
  236. package/dist/lib/memory/RecordFrame.js +0 -300
  237. package/dist/lib/memory/SharedMemory.js +0 -92
  238. package/dist/lib/memory/TransactionBuffer.js +0 -950
  239. package/dist/lib/memory/admission.js +0 -159
  240. package/dist/lib/memory/backtrack.js +0 -463
  241. package/dist/lib/memory/commitLogUtils.js +0 -399
  242. package/dist/lib/memory/deltaEncoding.js +0 -128
  243. package/dist/lib/memory/equality.js +0 -266
  244. package/dist/lib/memory/eventPosition.js +0 -3
  245. package/dist/lib/memory/honesty.js +0 -95
  246. package/dist/lib/memory/keyPaths.js +0 -243
  247. package/dist/lib/memory/logModel.js +0 -372
  248. package/dist/lib/memory/merge.js +0 -64
  249. package/dist/lib/memory/pathOps.js +0 -306
  250. package/dist/lib/memory/paths.js +0 -62
  251. package/dist/lib/memory/placeholders.js +0 -43
  252. package/dist/lib/memory/recordCommit.js +0 -65
  253. package/dist/lib/memory/scrub.js +0 -79
  254. package/dist/lib/memory/types.js +0 -11
  255. package/dist/lib/memory/utils.js +0 -178
  256. package/dist/lib/memory/verbs.js +0 -444
  257. package/dist/lib/recorder/CommitRangeIndex.js +0 -211
  258. package/dist/lib/scope/detectCircular.js +0 -21
  259. package/dist/lib/scope/recorders/summarizeValue.js +0 -10
  260. package/dist/lib/slice/elementProvenance.js +0 -195
  261. package/dist/lib/slice/forwardSliceForKey.js +0 -247
  262. package/dist/lib/slice/index.js +0 -42
  263. package/dist/lib/slice/keyIndex.js +0 -313
  264. package/dist/lib/slice/keyTimeline.js +0 -117
  265. package/dist/lib/slice/keysReadSources.js +0 -101
  266. package/dist/lib/slice/serialize.js +0 -286
  267. package/dist/lib/slice/sliceForKey.js +0 -93
  268. package/dist/lib/slice/types.js +0 -26
  269. package/dist/lib/time-travel/axis.js +0 -184
  270. package/dist/lib/time-travel/bundles.js +0 -144
  271. package/dist/lib/time-travel/chain.js +0 -193
  272. package/dist/lib/time-travel/commitStops.js +0 -206
  273. package/dist/lib/time-travel/index.js +0 -32
  274. package/dist/lib/time-travel/stateAt.js +0 -160
  275. package/dist/lib/time-travel/tagStops.js +0 -106
  276. package/dist/lib/time-travel/timeTravel.js +0 -364
  277. package/dist/lib/time-travel/types.js +0 -24
  278. package/dist/types/lib/capture/freeze.d.ts +0 -91
  279. package/dist/types/lib/capture/ownData.d.ts +0 -7
  280. package/dist/types/lib/capture/valueKinds.d.ts +0 -57
  281. package/dist/types/lib/ids/runtimeStageId.d.ts +0 -173
  282. package/dist/types/lib/memory/EventLog.d.ts +0 -105
  283. package/dist/types/lib/memory/RecordFrame.d.ts +0 -232
  284. package/dist/types/lib/memory/SharedMemory.d.ts +0 -46
  285. package/dist/types/lib/memory/TransactionBuffer.d.ts +0 -521
  286. package/dist/types/lib/memory/admission.d.ts +0 -81
  287. package/dist/types/lib/memory/backtrack.d.ts +0 -286
  288. package/dist/types/lib/memory/commitLogUtils.d.ts +0 -217
  289. package/dist/types/lib/memory/deltaEncoding.d.ts +0 -66
  290. package/dist/types/lib/memory/equality.d.ts +0 -93
  291. package/dist/types/lib/memory/eventPosition.d.ts +0 -18
  292. package/dist/types/lib/memory/honesty.d.ts +0 -93
  293. package/dist/types/lib/memory/keyPaths.d.ts +0 -125
  294. package/dist/types/lib/memory/logModel.d.ts +0 -76
  295. package/dist/types/lib/memory/merge.d.ts +0 -26
  296. package/dist/types/lib/memory/pathOps.d.ts +0 -115
  297. package/dist/types/lib/memory/paths.d.ts +0 -52
  298. package/dist/types/lib/memory/placeholders.d.ts +0 -39
  299. package/dist/types/lib/memory/recordCommit.d.ts +0 -45
  300. package/dist/types/lib/memory/scrub.d.ts +0 -53
  301. package/dist/types/lib/memory/types.d.ts +0 -209
  302. package/dist/types/lib/memory/utils.d.ts +0 -73
  303. package/dist/types/lib/memory/verbs.d.ts +0 -333
  304. package/dist/types/lib/recorder/CommitRangeIndex.d.ts +0 -147
  305. package/dist/types/lib/scope/detectCircular.d.ts +0 -13
  306. package/dist/types/lib/scope/recorders/summarizeValue.d.ts +0 -5
  307. package/dist/types/lib/slice/elementProvenance.d.ts +0 -81
  308. package/dist/types/lib/slice/forwardSliceForKey.d.ts +0 -88
  309. package/dist/types/lib/slice/index.d.ts +0 -25
  310. package/dist/types/lib/slice/keyIndex.d.ts +0 -137
  311. package/dist/types/lib/slice/keyTimeline.d.ts +0 -49
  312. package/dist/types/lib/slice/keysReadSources.d.ts +0 -51
  313. package/dist/types/lib/slice/serialize.d.ts +0 -78
  314. package/dist/types/lib/slice/sliceForKey.d.ts +0 -47
  315. package/dist/types/lib/slice/types.d.ts +0 -567
  316. package/dist/types/lib/time-travel/axis.d.ts +0 -119
  317. package/dist/types/lib/time-travel/bundles.d.ts +0 -77
  318. package/dist/types/lib/time-travel/chain.d.ts +0 -93
  319. package/dist/types/lib/time-travel/commitStops.d.ts +0 -55
  320. package/dist/types/lib/time-travel/index.d.ts +0 -22
  321. package/dist/types/lib/time-travel/stateAt.d.ts +0 -102
  322. package/dist/types/lib/time-travel/tagStops.d.ts +0 -72
  323. package/dist/types/lib/time-travel/timeTravel.d.ts +0 -70
  324. package/dist/types/lib/time-travel/types.d.ts +0 -470
  325. package/dist/types/write.d.ts +0 -47
  326. package/dist/write.js +0 -52
@@ -1,247 +0,0 @@
1
- "use strict";
2
- /**
3
- * slice/forwardSliceForKey.ts — the FORWARD half of variable-first slicing.
4
- *
5
- * `sliceForKey` answers "why is `key` what it is?" by walking backward from
6
- * the value to its causes. This file answers the opposite question, which no
7
- * query answered before: **"who READ this value, and what did it FEED?"**
8
- * (the production shape: *who read `recipeId`, and what did it feed?* — one
9
- * query, not a manual scan of a trace viewer).
10
- *
11
- * ## The algorithm: LIVE RANGES, not steps
12
- *
13
- * A backward slice hops writer→writer. Forward, the unit is a value's LIFE:
14
- *
15
- * 1. Anchor at a write of `key` — the SAME anchor idiom as `sliceForKey`
16
- * (the last writer, or the last writer before `before`).
17
- * 2. That value lives until the key's NEXT write (`nextWriteIdx`). Every
18
- * stage that READ `key` inside that window saw THIS value — a `read`.
19
- * (9.33.0: a write that reached the key only through paths INSIDE it — a
20
- * subflow seed, an outputMapper merge-back — changed part of the value
21
- * and does NOT end its life: a reader after it still read the rest. Every
22
- * life such a write starts or crosses carries a `'nested-rows'` note.)
23
- * 3. A reading stage that also WROTE something carried the value onward —
24
- * a `fed` edge to that write, which is itself the start of a new life.
25
- * 4. Descend into fed lives breadth-first (visited-set guarded, budgeted).
26
- *
27
- * ### LAW — the live range is `(writeIdx, nextWriteIdx]`
28
- *
29
- * Open at the bottom, CLOSED at the top, and both ends follow from the
30
- * engine's event order (`onRead` fires PRE-commit — see CLAUDE.md):
31
- * - a read by the writing stage itself (`readIdx === writeIdx`) saw the
32
- * PREVIOUS value: read-modify-write reads belong to the previous life;
33
- * - a read by the OVERWRITING stage (`readIdx === nextWriteIdx`) also fired
34
- * before its commit, so it still saw THIS value.
35
- * A read after that commit attributes to the NEW write, never the old one.
36
- * (Granularity limit, stated because it cannot be seen: a stage that writes
37
- * `key` and then re-reads it within the SAME stage read its own value; at
38
- * commit-index resolution that read is indistinguishable from the one that
39
- * opened the stage.)
40
- *
41
- * ### LAW — a `fed` edge is EXACT only under recorded read provenance
42
- *
43
- * With `writeProvenance: 'reads-prefix'` on, the child write's
44
- * `TraceEntry.readKeys` names the keys read before it: this key IN that list
45
- * is an exact edge (`basis: 'per-write'`), and this key ABSENT from it is an
46
- * exact *exclusion* — no edge at all. With the dial off there is no such
47
- * evidence, only "the stage read this and wrote that": the edge is stamped
48
- * `basis: 'stage'` and the slice carries a `'conservative-fed-edges'` note.
49
- * A conservative edge is never presented as an exact one.
50
- *
51
- * Budgets mirror `causalChain`'s (maxDepth 20, maxNodes 100) and a cut is
52
- * STATED — `root.truncated` plus a `'truncated'` note.
53
- *
54
- * DAG position: memory ← slice. Imports memory/ only (see README.md).
55
- */
56
- Object.defineProperty(exports, "__esModule", { value: true });
57
- exports.forwardSliceForKey = void 0;
58
- const keyPaths_js_1 = require("../memory/keyPaths.js");
59
- const utils_js_1 = require("../memory/utils.js");
60
- const keyIndex_js_1 = require("./keyIndex.js");
61
- const keysReadSources_js_1 = require("./keysReadSources.js");
62
- const sliceForKey_js_1 = require("./sliceForKey.js");
63
- /** Identity of one value life: (write position, key). Never parsed. */
64
- function nodeKey(commitIdx, key) {
65
- return `${commitIdx ?? 'pre-run'}${utils_js_1.DELIM}${key}`;
66
- }
67
- /**
68
- * Build the node for ONE value life. `writeIdx === undefined` is the pre-run
69
- * origin: the value was already there before the log's first write of the
70
- * key, so the writer identity fields stay ABSENT rather than fabricated.
71
- */
72
- function makeNode(commitLog, index, key, writeIdx, depth) {
73
- // A life ends at the next write that replaces the value — never at one that only wrote a path INSIDE the
74
- // key (a seed, a merge-back): a reader after that one still read the rest of this value.
75
- const writes = index.closingWritesOf(key);
76
- if (writeIdx === undefined) {
77
- const firstWrite = writes?.[0];
78
- return {
79
- key,
80
- origin: 'pre-run',
81
- ...(firstWrite !== undefined && { nextWriteIdx: firstWrite }),
82
- depth,
83
- reads: [],
84
- fedEdges: [],
85
- };
86
- }
87
- const bundle = commitLog[writeIdx];
88
- const entry = (0, keyIndex_js_1.writeEntry)(bundle, key);
89
- const next = (0, keyIndex_js_1.firstIndexAfter)(writes, writeIdx);
90
- return {
91
- key,
92
- origin: 'write',
93
- runtimeStageId: bundle.runtimeStageId,
94
- stageId: bundle.stageId,
95
- stageName: bundle.stage,
96
- commitIdx: writeIdx,
97
- ...(entry !== undefined && { verb: entry.verb }),
98
- ...(next !== undefined && { nextWriteIdx: next }),
99
- depth,
100
- reads: [],
101
- fedEdges: [],
102
- // Untracked-read honesty rides through from the bundle exactly as
103
- // causalChain stamps CausalNode.incompleteSources.
104
- ...(bundle.untrackedSources !== undefined &&
105
- bundle.untrackedSources.length > 0 && { incompleteSources: bundle.untrackedSources }),
106
- };
107
- }
108
- /**
109
- * Forward slice for one state key: who read this value, and what did it feed?
110
- *
111
- * @param commitLog Ordered commit bundles — `getSnapshot().commitLog`.
112
- * @param key A {@link StateKey}: the plain key string, or a path array
113
- * (normalised through the SAME `normaliseStateKey` the backward door uses,
114
- * so both doors accept identical inputs).
115
- * @param keysRead A {@link KeysReadSource} strategy or a bare lookup — the
116
- * same reads providers `sliceForKey` takes. Reads are not in the commit
117
- * log; without a provider a forward walk can see nothing, which the
118
- * `'reads-not-recorded'` note says out loud.
119
- * @returns Always a {@link ForwardSlice}. Absence is a RESULT with a reason
120
- * and, for an unknown key, a bounded list of the keys the log does know.
121
- */
122
- function forwardSliceForKey(commitLog, key, keysRead, options) {
123
- const source = (0, keysReadSources_js_1.resolveKeysReadSource)(keysRead);
124
- const normalisedKey = (0, sliceForKey_js_1.normaliseStateKey)(key);
125
- const base = {
126
- key: normalisedKey,
127
- ...(options?.before !== undefined && { before: options.before }),
128
- keysReadKind: source.kind,
129
- ...(source.coverage !== undefined && { readsCoverage: source.coverage }),
130
- };
131
- if (commitLog.length === 0)
132
- return { ...base, missing: 'empty-log', notes: [] };
133
- const index = (0, keyIndex_js_1.buildKeyIndex)(commitLog, source.lookup);
134
- const readsRecorded = (0, keyIndex_js_1.hasRecordedReads)(index);
135
- const notes = [];
136
- // ── The typo guard, split by what the recording affords ────────────────
137
- // Unknown key + reads ARE recorded → the log can see readers and this key
138
- // has none: honest absence with a named reason, no fabricated life.
139
- // Unknown key + NO reads recorded → a typo and a seeded-but-unread key are
140
- // genuinely indistinguishable; the pre-run life below is the only honest
141
- // answer, and it must carry BOTH notes so nobody reads it as "unread".
142
- const known = index.isKnown(normalisedKey);
143
- if (!known) {
144
- notes.push((0, keyIndex_js_1.unknownKeyNote)(index, normalisedKey));
145
- if (readsRecorded)
146
- return { ...base, missing: 'never-written', notes };
147
- }
148
- if (!readsRecorded)
149
- notes.push((0, keyIndex_js_1.readsNotRecordedNote)());
150
- const maxDepth = options?.maxDepth ?? 20;
151
- const maxNodes = options?.maxNodes ?? 100;
152
- const nodes = new Map();
153
- let created = 0;
154
- let truncatedByDepth = false;
155
- let truncatedByNodes = false;
156
- let anyConservative = false;
157
- const anchorIdx = (0, keyIndex_js_1.lastIndexBefore)(index.writesOf(normalisedKey), options?.before);
158
- const root = makeNode(commitLog, index, normalisedKey, anchorIdx, 0);
159
- nodes.set(nodeKey(anchorIdx, normalisedKey), root);
160
- created = 1;
161
- const queue = [root];
162
- while (queue.length > 0) {
163
- const node = queue.shift();
164
- // Live range: open below the write, CLOSED at the next write (see LAW).
165
- const from = node.commitIdx !== undefined ? node.commitIdx + 1 : 0;
166
- const readers = (0, keyIndex_js_1.indicesInRange)(index.readsOf(node.key), from, node.nextWriteIdx);
167
- if (node.depth >= maxDepth) {
168
- // Only a life that still HAD readers to expand counts as a cut.
169
- if (readers.length > 0)
170
- truncatedByDepth = true;
171
- continue;
172
- }
173
- for (const readerIdx of readers) {
174
- const bundle = commitLog[readerIdx];
175
- node.reads.push({
176
- runtimeStageId: bundle.runtimeStageId,
177
- stageId: bundle.stageId,
178
- stageName: bundle.stage,
179
- commitIdx: readerIdx,
180
- });
181
- // The reader IS the writer of everything it committed — each written
182
- // path is a candidate `fed` edge.
183
- for (const path of (0, keyIndex_js_1.writtenPaths)(bundle)) {
184
- const entry = (0, keyIndex_js_1.lastTraceEntry)(bundle, path);
185
- let basis;
186
- if (entry?.readKeys !== undefined) {
187
- // EXACT both ways: recorded provenance can include or EXCLUDE. A read
188
- // on the key, inside it or around it is a read of its value.
189
- if (!entry.readKeys.some((read) => (0, keyPaths_js_1.relation)(read, node.key) !== undefined))
190
- continue;
191
- basis = 'per-write';
192
- }
193
- else {
194
- basis = 'stage';
195
- anyConservative = true;
196
- }
197
- const id = nodeKey(readerIdx, path);
198
- let child = nodes.get(id);
199
- if (!child) {
200
- if (created >= maxNodes) {
201
- truncatedByNodes = true;
202
- continue;
203
- }
204
- child = makeNode(commitLog, index, path, readerIdx, node.depth + 1);
205
- nodes.set(id, child);
206
- created++;
207
- queue.push(child);
208
- }
209
- // One edge per distinct child life (a stage reads a key once).
210
- if (!node.fedEdges.some((e) => e.child === child))
211
- node.fedEdges.push({ child, basis });
212
- }
213
- }
214
- }
215
- // ── Honesty envelope, deterministic order ─────────────────────────────
216
- if (root.origin === 'pre-run')
217
- notes.push((0, keyIndex_js_1.preRunOriginNote)(normalisedKey));
218
- // Every life a write INSIDE its key starts or crosses — the anchor's, a pre-run life's, a child's — says so.
219
- const partial = new Map();
220
- for (const node of nodes.values()) {
221
- const start = node.commitIdx ?? -1;
222
- const crossed = index
223
- .writesOf(node.key)
224
- .filter((c) => (c === start || c > start) && (node.nextWriteIdx === undefined || c < node.nextWriteIdx));
225
- for (const c of (0, keyIndex_js_1.nestedOnlyWrites)(commitLog, node.key, crossed)) {
226
- const set = partial.get(node.key) ?? new Set();
227
- set.add(c);
228
- partial.set(node.key, set);
229
- }
230
- }
231
- for (const [key, commits] of partial)
232
- notes.push((0, keyIndex_js_1.nestedRowsNote)(key, [...commits].sort((a, b) => a - b)));
233
- if (anyConservative)
234
- notes.push((0, keyIndex_js_1.conservativeEdgesNote)(normalisedKey));
235
- if (truncatedByDepth || truncatedByNodes) {
236
- root.truncated = { byDepth: truncatedByDepth, byNodes: truncatedByNodes };
237
- notes.push((0, keyIndex_js_1.truncatedNote)(truncatedByDepth, truncatedByNodes));
238
- }
239
- return {
240
- ...base,
241
- ...(anchorIdx !== undefined && { writer: commitLog[anchorIdx] }),
242
- root,
243
- notes,
244
- };
245
- }
246
- exports.forwardSliceForKey = forwardSliceForKey;
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZFNsaWNlRm9yS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zbGljZS9mb3J3YXJkU2xpY2VGb3JLZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFERzs7O0FBR0gsdURBQWlEO0FBRWpELGlEQUEyQztBQUMzQywrQ0FpQnVCO0FBQ3ZCLDZEQUE2RDtBQUM3RCxxREFBcUQ7QUFvQnJELHVFQUF1RTtBQUN2RSxTQUFTLE9BQU8sQ0FBQyxTQUE2QixFQUFFLEdBQVc7SUFDekQsT0FBTyxHQUFHLFNBQVMsSUFBSSxTQUFTLEdBQUcsZ0JBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsUUFBUSxDQUNmLFNBQXlCLEVBQ3pCLEtBQWUsRUFDZixHQUFXLEVBQ1gsUUFBNEIsRUFDNUIsS0FBYTtJQUViLHlHQUF5RztJQUN6Ryx5RkFBeUY7SUFDekYsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixPQUFPO1lBQ0wsR0FBRztZQUNILE1BQU0sRUFBRSxTQUFTO1lBQ2pCLEdBQUcsQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQzdELEtBQUs7WUFDTCxLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBQSx3QkFB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QUFTLEdBQUcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDMUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFhLEVBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRyxJQUFJO1FBQ1AsR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDaEUsSUFBSTtRQUNKLEtBQUs7S0FDTixDQUFDO0FBQ0osQ0FBQztBQXpJRCxnREF5SUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHNsaWNlL2ZvcndhcmRTbGljZUZvcktleS50cyDigJQgdGhlIEZPUldBUkQgaGFsZiBvZiB2YXJpYWJsZS1maXJzdCBzbGljaW5nLlxuICpcbiAqIGBzbGljZUZvcktleWAgYW5zd2VycyBcIndoeSBpcyBga2V5YCB3aGF0IGl0IGlzP1wiIGJ5IHdhbGtpbmcgYmFja3dhcmQgZnJvbVxuICogdGhlIHZhbHVlIHRvIGl0cyBjYXVzZXMuIFRoaXMgZmlsZSBhbnN3ZXJzIHRoZSBvcHBvc2l0ZSBxdWVzdGlvbiwgd2hpY2ggbm9cbiAqIHF1ZXJ5IGFuc3dlcmVkIGJlZm9yZTogKipcIndobyBSRUFEIHRoaXMgdmFsdWUsIGFuZCB3aGF0IGRpZCBpdCBGRUVEP1wiKipcbiAqICh0aGUgcHJvZHVjdGlvbiBzaGFwZTogKndobyByZWFkIGByZWNpcGVJZGAsIGFuZCB3aGF0IGRpZCBpdCBmZWVkPyog4oCUIG9uZVxuICogcXVlcnksIG5vdCBhIG1hbnVhbCBzY2FuIG9mIGEgdHJhY2Ugdmlld2VyKS5cbiAqXG4gKiAjIyBUaGUgYWxnb3JpdGhtOiBMSVZFIFJBTkdFUywgbm90IHN0ZXBzXG4gKlxuICogQSBiYWNrd2FyZCBzbGljZSBob3BzIHdyaXRlcuKGkndyaXRlci4gRm9yd2FyZCwgdGhlIHVuaXQgaXMgYSB2YWx1ZSdzIExJRkU6XG4gKlxuICogMS4gQW5jaG9yIGF0IGEgd3JpdGUgb2YgYGtleWAg4oCUIHRoZSBTQU1FIGFuY2hvciBpZGlvbSBhcyBgc2xpY2VGb3JLZXlgXG4gKiAgICAodGhlIGxhc3Qgd3JpdGVyLCBvciB0aGUgbGFzdCB3cml0ZXIgYmVmb3JlIGBiZWZvcmVgKS5cbiAqIDIuIFRoYXQgdmFsdWUgbGl2ZXMgdW50aWwgdGhlIGtleSdzIE5FWFQgd3JpdGUgKGBuZXh0V3JpdGVJZHhgKS4gRXZlcnlcbiAqICAgIHN0YWdlIHRoYXQgUkVBRCBga2V5YCBpbnNpZGUgdGhhdCB3aW5kb3cgc2F3IFRISVMgdmFsdWUg4oCUIGEgYHJlYWRgLlxuICogICAgKDkuMzMuMDogYSB3cml0ZSB0aGF0IHJlYWNoZWQgdGhlIGtleSBvbmx5IHRocm91Z2ggcGF0aHMgSU5TSURFIGl0IOKAlCBhXG4gKiAgICBzdWJmbG93IHNlZWQsIGFuIG91dHB1dE1hcHBlciBtZXJnZS1iYWNrIOKAlCBjaGFuZ2VkIHBhcnQgb2YgdGhlIHZhbHVlXG4gKiAgICBhbmQgZG9lcyBOT1QgZW5kIGl0cyBsaWZlOiBhIHJlYWRlciBhZnRlciBpdCBzdGlsbCByZWFkIHRoZSByZXN0LiBFdmVyeVxuICogICAgbGlmZSBzdWNoIGEgd3JpdGUgc3RhcnRzIG9yIGNyb3NzZXMgY2FycmllcyBhIGAnbmVzdGVkLXJvd3MnYCBub3RlLilcbiAqIDMuIEEgcmVhZGluZyBzdGFnZSB0aGF0IGFsc28gV1JPVEUgc29tZXRoaW5nIGNhcnJpZWQgdGhlIHZhbHVlIG9ud2FyZCDigJRcbiAqICAgIGEgYGZlZGAgZWRnZSB0byB0aGF0IHdyaXRlLCB3aGljaCBpcyBpdHNlbGYgdGhlIHN0YXJ0IG9mIGEgbmV3IGxpZmUuXG4gKiA0LiBEZXNjZW5kIGludG8gZmVkIGxpdmVzIGJyZWFkdGgtZmlyc3QgKHZpc2l0ZWQtc2V0IGd1YXJkZWQsIGJ1ZGdldGVkKS5cbiAqXG4gKiAjIyMgTEFXIOKAlCB0aGUgbGl2ZSByYW5nZSBpcyBgKHdyaXRlSWR4LCBuZXh0V3JpdGVJZHhdYFxuICpcbiAqIE9wZW4gYXQgdGhlIGJvdHRvbSwgQ0xPU0VEIGF0IHRoZSB0b3AsIGFuZCBib3RoIGVuZHMgZm9sbG93IGZyb20gdGhlXG4gKiBlbmdpbmUncyBldmVudCBvcmRlciAoYG9uUmVhZGAgZmlyZXMgUFJFLWNvbW1pdCDigJQgc2VlIENMQVVERS5tZCk6XG4gKiAtIGEgcmVhZCBieSB0aGUgd3JpdGluZyBzdGFnZSBpdHNlbGYgKGByZWFkSWR4ID09PSB3cml0ZUlkeGApIHNhdyB0aGVcbiAqICAgUFJFVklPVVMgdmFsdWU6IHJlYWQtbW9kaWZ5LXdyaXRlIHJlYWRzIGJlbG9uZyB0byB0aGUgcHJldmlvdXMgbGlmZTtcbiAqIC0gYSByZWFkIGJ5IHRoZSBPVkVSV1JJVElORyBzdGFnZSAoYHJlYWRJZHggPT09IG5leHRXcml0ZUlkeGApIGFsc28gZmlyZWRcbiAqICAgYmVmb3JlIGl0cyBjb21taXQsIHNvIGl0IHN0aWxsIHNhdyBUSElTIHZhbHVlLlxuICogQSByZWFkIGFmdGVyIHRoYXQgY29tbWl0IGF0dHJpYnV0ZXMgdG8gdGhlIE5FVyB3cml0ZSwgbmV2ZXIgdGhlIG9sZCBvbmUuXG4gKiAoR3JhbnVsYXJpdHkgbGltaXQsIHN0YXRlZCBiZWNhdXNlIGl0IGNhbm5vdCBiZSBzZWVuOiBhIHN0YWdlIHRoYXQgd3JpdGVzXG4gKiBga2V5YCBhbmQgdGhlbiByZS1yZWFkcyBpdCB3aXRoaW4gdGhlIFNBTUUgc3RhZ2UgcmVhZCBpdHMgb3duIHZhbHVlOyBhdFxuICogY29tbWl0LWluZGV4IHJlc29sdXRpb24gdGhhdCByZWFkIGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gdGhlIG9uZSB0aGF0XG4gKiBvcGVuZWQgdGhlIHN0YWdlLilcbiAqXG4gKiAjIyMgTEFXIOKAlCBhIGBmZWRgIGVkZ2UgaXMgRVhBQ1Qgb25seSB1bmRlciByZWNvcmRlZCByZWFkIHByb3ZlbmFuY2VcbiAqXG4gKiBXaXRoIGB3cml0ZVByb3ZlbmFuY2U6ICdyZWFkcy1wcmVmaXgnYCBvbiwgdGhlIGNoaWxkIHdyaXRlJ3NcbiAqIGBUcmFjZUVudHJ5LnJlYWRLZXlzYCBuYW1lcyB0aGUga2V5cyByZWFkIGJlZm9yZSBpdDogdGhpcyBrZXkgSU4gdGhhdCBsaXN0XG4gKiBpcyBhbiBleGFjdCBlZGdlIChgYmFzaXM6ICdwZXItd3JpdGUnYCksIGFuZCB0aGlzIGtleSBBQlNFTlQgZnJvbSBpdCBpcyBhblxuICogZXhhY3QgKmV4Y2x1c2lvbiog4oCUIG5vIGVkZ2UgYXQgYWxsLiBXaXRoIHRoZSBkaWFsIG9mZiB0aGVyZSBpcyBubyBzdWNoXG4gKiBldmlkZW5jZSwgb25seSBcInRoZSBzdGFnZSByZWFkIHRoaXMgYW5kIHdyb3RlIHRoYXRcIjogdGhlIGVkZ2UgaXMgc3RhbXBlZFxuICogYGJhc2lzOiAnc3RhZ2UnYCBhbmQgdGhlIHNsaWNlIGNhcnJpZXMgYSBgJ2NvbnNlcnZhdGl2ZS1mZWQtZWRnZXMnYCBub3RlLlxuICogQSBjb25zZXJ2YXRpdmUgZWRnZSBpcyBuZXZlciBwcmVzZW50ZWQgYXMgYW4gZXhhY3Qgb25lLlxuICpcbiAqIEJ1ZGdldHMgbWlycm9yIGBjYXVzYWxDaGFpbmAncyAobWF4RGVwdGggMjAsIG1heE5vZGVzIDEwMCkgYW5kIGEgY3V0IGlzXG4gKiBTVEFURUQg4oCUIGByb290LnRydW5jYXRlZGAgcGx1cyBhIGAndHJ1bmNhdGVkJ2Agbm90ZS5cbiAqXG4gKiBEQUcgcG9zaXRpb246IG1lbW9yeSDihpAgc2xpY2UuIEltcG9ydHMgbWVtb3J5LyBvbmx5IChzZWUgUkVBRE1FLm1kKS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEtleXNSZWFkTG9va3VwIH0gZnJvbSAnLi4vbWVtb3J5L2JhY2t0cmFjay5qcyc7XG5pbXBvcnQgeyByZWxhdGlvbiB9IGZyb20gJy4uL21lbW9yeS9rZXlQYXRocy5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSB9IGZyb20gJy4uL21lbW9yeS90eXBlcy5qcyc7XG5pbXBvcnQgeyBERUxJTSB9IGZyb20gJy4uL21lbW9yeS91dGlscy5qcyc7XG5pbXBvcnQge1xuICB0eXBlIEtleUluZGV4LFxuICBidWlsZEtleUluZGV4LFxuICBjb25zZXJ2YXRpdmVFZGdlc05vdGUsXG4gIGZpcnN0SW5kZXhBZnRlcixcbiAgaGFzUmVjb3JkZWRSZWFkcyxcbiAgaW5kaWNlc0luUmFuZ2UsXG4gIGxhc3RJbmRleEJlZm9yZSxcbiAgbGFzdFRyYWNlRW50cnksXG4gIG5lc3RlZE9ubHlXcml0ZXMsXG4gIG5lc3RlZFJvd3NOb3RlLFxuICBwcmVSdW5PcmlnaW5Ob3RlLFxuICByZWFkc05vdFJlY29yZGVkTm90ZSxcbiAgdHJ1bmNhdGVkTm90ZSxcbiAgdW5rbm93bktleU5vdGUsXG4gIHdyaXRlRW50cnksXG4gIHdyaXR0ZW5QYXRocyxcbn0gZnJvbSAnLi9rZXlJbmRleC5qcyc7XG5pbXBvcnQgeyByZXNvbHZlS2V5c1JlYWRTb3VyY2UgfSBmcm9tICcuL2tleXNSZWFkU291cmNlcy5qcyc7XG5pbXBvcnQgeyBub3JtYWxpc2VTdGF0ZUtleSB9IGZyb20gJy4vc2xpY2VGb3JLZXkuanMnO1xuaW1wb3J0IHR5cGUgeyBGZWRCYXNpcywgRm9yd2FyZE5vZGUsIEZvcndhcmRTbGljZSwgSG9uZXN0eU5vdGUsIEtleXNSZWFkU291cmNlLCBTdGF0ZUtleSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rIGZvcndhcmRTbGljZUZvcktleX0g4oCUIGFuY2hvcmluZyBwbHVzIHdhbGsgYnVkZ2V0cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9yd2FyZFNsaWNlRm9yS2V5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBFeGNsdXNpdmUgY29tbWl0LWFycmF5LWluZGV4IHVwcGVyIGJvdW5kIGZvciB0aGUgQU5DSE9SIHNlYXJjaDogZm9sbG93XG4gICAqIHRoZSB2YWx1ZSBhcyBpdCBzdG9vZCBCRUZPUkUgdGhpcyBpZHguIFNhbWUgY29udHJhY3QgYXNcbiAgICogYHNsaWNlRm9yS2V5YCdzIGBiZWZvcmVgIC8gYGZpbmRMYXN0V3JpdGVyYCdzIGBiZWZvcmVJZHhgLlxuICAgKlxuICAgKiBJdCBib3VuZHMgdGhlIGFuY2hvciBPTkxZIOKAlCB0aGUgd2FsayB0aGVuIHJ1bnMgZm9yd2FyZCBwYXN0IGl0LCBiZWNhdXNlXG4gICAqIFwid2hhdCBkaWQgdGhlIHZhbHVlIGF0IHN0ZXAgMTIgZ28gb24gdG8gZmVlZD9cIiBpcyB0aGUgd2hvbGUgcXVlc3Rpb24uXG4gICAqL1xuICBiZWZvcmU/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIEJGUyBkZXB0aCBpbiB2YWx1ZS1saXZlcyAoZGVmYXVsdDogMjAg4oCUIGNhdXNhbENoYWluJ3MpLiAqL1xuICBtYXhEZXB0aD86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gdG90YWwgbm9kZXMgKGRlZmF1bHQ6IDEwMCDigJQgY2F1c2FsQ2hhaW4ncykuICovXG4gIG1heE5vZGVzPzogbnVtYmVyO1xufVxuXG4vKiogSWRlbnRpdHkgb2Ygb25lIHZhbHVlIGxpZmU6ICh3cml0ZSBwb3NpdGlvbiwga2V5KS4gTmV2ZXIgcGFyc2VkLiAqL1xuZnVuY3Rpb24gbm9kZUtleShjb21taXRJZHg6IG51bWJlciB8IHVuZGVmaW5lZCwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Y29tbWl0SWR4ID8/ICdwcmUtcnVuJ30ke0RFTElNfSR7a2V5fWA7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIG5vZGUgZm9yIE9ORSB2YWx1ZSBsaWZlLiBgd3JpdGVJZHggPT09IHVuZGVmaW5lZGAgaXMgdGhlIHByZS1ydW5cbiAqIG9yaWdpbjogdGhlIHZhbHVlIHdhcyBhbHJlYWR5IHRoZXJlIGJlZm9yZSB0aGUgbG9nJ3MgZmlyc3Qgd3JpdGUgb2YgdGhlXG4gKiBrZXksIHNvIHRoZSB3cml0ZXIgaWRlbnRpdHkgZmllbGRzIHN0YXkgQUJTRU5UIHJhdGhlciB0aGFuIGZhYnJpY2F0ZWQuXG4gKi9cbmZ1bmN0aW9uIG1ha2VOb2RlKFxuICBjb21taXRMb2c6IENvbW1pdEJ1bmRsZVtdLFxuICBpbmRleDogS2V5SW5kZXgsXG4gIGtleTogc3RyaW5nLFxuICB3cml0ZUlkeDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBkZXB0aDogbnVtYmVyLFxuKTogRm9yd2FyZE5vZGUge1xuICAvLyBBIGxpZmUgZW5kcyBhdCB0aGUgbmV4dCB3cml0ZSB0aGF0IHJlcGxhY2VzIHRoZSB2YWx1ZSDigJQgbmV2ZXIgYXQgb25lIHRoYXQgb25seSB3cm90ZSBhIHBhdGggSU5TSURFIHRoZVxuICAvLyBrZXkgKGEgc2VlZCwgYSBtZXJnZS1iYWNrKTogYSByZWFkZXIgYWZ0ZXIgdGhhdCBvbmUgc3RpbGwgcmVhZCB0aGUgcmVzdCBvZiB0aGlzIHZhbHVlLlxuICBjb25zdCB3cml0ZXMgPSBpbmRleC5jbG9zaW5nV3JpdGVzT2Yoa2V5KTtcbiAgaWYgKHdyaXRlSWR4ID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBmaXJzdFdyaXRlID0gd3JpdGVzPy5bMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleSxcbiAgICAgIG9yaWdpbjogJ3ByZS1ydW4nLFxuICAgICAgLi4uKGZpcnN0V3JpdGUgIT09IHVuZGVmaW5lZCAmJiB7IG5leHRXcml0ZUlkeDogZmlyc3RXcml0ZSB9KSxcbiAgICAgIGRlcHRoLFxuICAgICAgcmVhZHM6IFtdLFxuICAgICAgZmVkRWRnZXM6IFtdLFxuICAgIH07XG4gIH1cbiAgY29uc3QgYnVuZGxlID0gY29tbWl0TG9nW3dyaXRlSWR4XTtcbiAgY29uc3QgZW50cnkgPSB3cml0ZUVudHJ5KGJ1bmRsZSwga2V5KTtcbiAgY29uc3QgbmV4dCA9IGZpcnN0SW5kZXhBZnRlcih3cml0ZXMsIHdyaXRlSWR4KTtcbiAgcmV0dXJuIHtcbiAgICBrZXksXG4gICAgb3JpZ2luOiAnd3JpdGUnLFxuICAgIHJ1bnRpbWVTdGFnZUlkOiBidW5kbGUucnVudGltZVN0YWdlSWQsXG4gICAgc3RhZ2VJZDogYnVuZGxlLnN0YWdlSWQsXG4gICAgc3RhZ2VOYW1lOiBidW5kbGUuc3RhZ2UsXG4gICAgY29tbWl0SWR4OiB3cml0ZUlkeCxcbiAgICAuLi4oZW50cnkgIT09IHVuZGVmaW5lZCAmJiB7IHZlcmI6IGVudHJ5LnZlcmIgfSksXG4gICAgLi4uKG5leHQgIT09IHVuZGVmaW5lZCAmJiB7IG5leHRXcml0ZUlkeDogbmV4dCB9KSxcbiAgICBkZXB0aCxcbiAgICByZWFkczogW10sXG4gICAgZmVkRWRnZXM6IFtdLFxuICAgIC8vIFVudHJhY2tlZC1yZWFkIGhvbmVzdHkgcmlkZXMgdGhyb3VnaCBmcm9tIHRoZSBidW5kbGUgZXhhY3RseSBhc1xuICAgIC8vIGNhdXNhbENoYWluIHN0YW1wcyBDYXVzYWxOb2RlLmluY29tcGxldGVTb3VyY2VzLlxuICAgIC4uLihidW5kbGUudW50cmFja2VkU291cmNlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBidW5kbGUudW50cmFja2VkU291cmNlcy5sZW5ndGggPiAwICYmIHsgaW5jb21wbGV0ZVNvdXJjZXM6IGJ1bmRsZS51bnRyYWNrZWRTb3VyY2VzIH0pLFxuICB9O1xufVxuXG4vKipcbiAqIEZvcndhcmQgc2xpY2UgZm9yIG9uZSBzdGF0ZSBrZXk6IHdobyByZWFkIHRoaXMgdmFsdWUsIGFuZCB3aGF0IGRpZCBpdCBmZWVkP1xuICpcbiAqIEBwYXJhbSBjb21taXRMb2cgT3JkZXJlZCBjb21taXQgYnVuZGxlcyDigJQgYGdldFNuYXBzaG90KCkuY29tbWl0TG9nYC5cbiAqIEBwYXJhbSBrZXkgQSB7QGxpbmsgU3RhdGVLZXl9OiB0aGUgcGxhaW4ga2V5IHN0cmluZywgb3IgYSBwYXRoIGFycmF5XG4gKiAgIChub3JtYWxpc2VkIHRocm91Z2ggdGhlIFNBTUUgYG5vcm1hbGlzZVN0YXRlS2V5YCB0aGUgYmFja3dhcmQgZG9vciB1c2VzLFxuICogICBzbyBib3RoIGRvb3JzIGFjY2VwdCBpZGVudGljYWwgaW5wdXRzKS5cbiAqIEBwYXJhbSBrZXlzUmVhZCBBIHtAbGluayBLZXlzUmVhZFNvdXJjZX0gc3RyYXRlZ3kgb3IgYSBiYXJlIGxvb2t1cCDigJQgdGhlXG4gKiAgIHNhbWUgcmVhZHMgcHJvdmlkZXJzIGBzbGljZUZvcktleWAgdGFrZXMuIFJlYWRzIGFyZSBub3QgaW4gdGhlIGNvbW1pdFxuICogICBsb2c7IHdpdGhvdXQgYSBwcm92aWRlciBhIGZvcndhcmQgd2FsayBjYW4gc2VlIG5vdGhpbmcsIHdoaWNoIHRoZVxuICogICBgJ3JlYWRzLW5vdC1yZWNvcmRlZCdgIG5vdGUgc2F5cyBvdXQgbG91ZC5cbiAqIEByZXR1cm5zIEFsd2F5cyBhIHtAbGluayBGb3J3YXJkU2xpY2V9LiBBYnNlbmNlIGlzIGEgUkVTVUxUIHdpdGggYSByZWFzb25cbiAqICAgYW5kLCBmb3IgYW4gdW5rbm93biBrZXksIGEgYm91bmRlZCBsaXN0IG9mIHRoZSBrZXlzIHRoZSBsb2cgZG9lcyBrbm93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZFNsaWNlRm9yS2V5KFxuICBjb21taXRMb2c6IENvbW1pdEJ1bmRsZVtdLFxuICBrZXk6IFN0YXRlS2V5LFxuICBrZXlzUmVhZDogS2V5c1JlYWRTb3VyY2UgfCBLZXlzUmVhZExvb2t1cCxcbiAgb3B0aW9ucz86IEZvcndhcmRTbGljZUZvcktleU9wdGlvbnMsXG4pOiBGb3J3YXJkU2xpY2Uge1xuICBjb25zdCBzb3VyY2UgPSByZXNvbHZlS2V5c1JlYWRTb3VyY2Uoa2V5c1JlYWQpO1xuICBjb25zdCBub3JtYWxpc2VkS2V5ID0gbm9ybWFsaXNlU3RhdGVLZXkoa2V5KTtcbiAgY29uc3QgYmFzZTogUGljazxGb3J3YXJkU2xpY2UsICdrZXknIHwgJ2JlZm9yZScgfCAna2V5c1JlYWRLaW5kJyB8ICdyZWFkc0NvdmVyYWdlJz4gPSB7XG4gICAga2V5OiBub3JtYWxpc2VkS2V5LFxuICAgIC4uLihvcHRpb25zPy5iZWZvcmUgIT09IHVuZGVmaW5lZCAmJiB7IGJlZm9yZTogb3B0aW9ucy5iZWZvcmUgfSksXG4gICAga2V5c1JlYWRLaW5kOiBzb3VyY2Uua2luZCxcbiAgICAuLi4oc291cmNlLmNvdmVyYWdlICE9PSB1bmRlZmluZWQgJiYgeyByZWFkc0NvdmVyYWdlOiBzb3VyY2UuY292ZXJhZ2UgfSksXG4gIH07XG5cbiAgaWYgKGNvbW1pdExvZy5sZW5ndGggPT09IDApIHJldHVybiB7IC4uLmJhc2UsIG1pc3Npbmc6ICdlbXB0eS1sb2cnLCBub3RlczogW10gfTtcblxuICBjb25zdCBpbmRleCA9IGJ1aWxkS2V5SW5kZXgoY29tbWl0TG9nLCBzb3VyY2UubG9va3VwKTtcbiAgY29uc3QgcmVhZHNSZWNvcmRlZCA9IGhhc1JlY29yZGVkUmVhZHMoaW5kZXgpO1xuICBjb25zdCBub3RlczogSG9uZXN0eU5vdGVbXSA9IFtdO1xuXG4gIC8vIOKUgOKUgCBUaGUgdHlwbyBndWFyZCwgc3BsaXQgYnkgd2hhdCB0aGUgcmVjb3JkaW5nIGFmZm9yZHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8vIFVua25vd24ga2V5ICsgcmVhZHMgQVJFIHJlY29yZGVkIOKGkiB0aGUgbG9nIGNhbiBzZWUgcmVhZGVycyBhbmQgdGhpcyBrZXlcbiAgLy8gaGFzIG5vbmU6IGhvbmVzdCBhYnNlbmNlIHdpdGggYSBuYW1lZCByZWFzb24sIG5vIGZhYnJpY2F0ZWQgbGlmZS5cbiAgLy8gVW5rbm93biBrZXkgKyBOTyByZWFkcyByZWNvcmRlZCDihpIgYSB0eXBvIGFuZCBhIHNlZWRlZC1idXQtdW5yZWFkIGtleSBhcmVcbiAgLy8gZ2VudWluZWx5IGluZGlzdGluZ3Vpc2hhYmxlOyB0aGUgcHJlLXJ1biBsaWZlIGJlbG93IGlzIHRoZSBvbmx5IGhvbmVzdFxuICAvLyBhbnN3ZXIsIGFuZCBpdCBtdXN0IGNhcnJ5IEJPVEggbm90ZXMgc28gbm9ib2R5IHJlYWRzIGl0IGFzIFwidW5yZWFkXCIuXG4gIGNvbnN0IGtub3duID0gaW5kZXguaXNLbm93bihub3JtYWxpc2VkS2V5KTtcbiAgaWYgKCFrbm93bikge1xuICAgIG5vdGVzLnB1c2godW5rbm93bktleU5vdGUoaW5kZXgsIG5vcm1hbGlzZWRLZXkpKTtcbiAgICBpZiAocmVhZHNSZWNvcmRlZCkgcmV0dXJuIHsgLi4uYmFzZSwgbWlzc2luZzogJ25ldmVyLXdyaXR0ZW4nLCBub3RlcyB9O1xuICB9XG4gIGlmICghcmVhZHNSZWNvcmRlZCkgbm90ZXMucHVzaChyZWFkc05vdFJlY29yZGVkTm90ZSgpKTtcblxuICBjb25zdCBtYXhEZXB0aCA9IG9wdGlvbnM/Lm1heERlcHRoID8/IDIwO1xuICBjb25zdCBtYXhOb2RlcyA9IG9wdGlvbnM/Lm1heE5vZGVzID8/IDEwMDtcblxuICBjb25zdCBub2RlcyA9IG5ldyBNYXA8c3RyaW5nLCBGb3J3YXJkTm9kZT4oKTtcbiAgbGV0IGNyZWF0ZWQgPSAwO1xuICBsZXQgdHJ1bmNhdGVkQnlEZXB0aCA9IGZhbHNlO1xuICBsZXQgdHJ1bmNhdGVkQnlOb2RlcyA9IGZhbHNlO1xuICBsZXQgYW55Q29uc2VydmF0aXZlID0gZmFsc2U7XG5cbiAgY29uc3QgYW5jaG9ySWR4ID0gbGFzdEluZGV4QmVmb3JlKGluZGV4LndyaXRlc09mKG5vcm1hbGlzZWRLZXkpLCBvcHRpb25zPy5iZWZvcmUpO1xuICBjb25zdCByb290ID0gbWFrZU5vZGUoY29tbWl0TG9nLCBpbmRleCwgbm9ybWFsaXNlZEtleSwgYW5jaG9ySWR4LCAwKTtcbiAgbm9kZXMuc2V0KG5vZGVLZXkoYW5jaG9ySWR4LCBub3JtYWxpc2VkS2V5KSwgcm9vdCk7XG4gIGNyZWF0ZWQgPSAxO1xuXG4gIGNvbnN0IHF1ZXVlOiBGb3J3YXJkTm9kZVtdID0gW3Jvb3RdO1xuICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IG5vZGUgPSBxdWV1ZS5zaGlmdCgpITtcbiAgICAvLyBMaXZlIHJhbmdlOiBvcGVuIGJlbG93IHRoZSB3cml0ZSwgQ0xPU0VEIGF0IHRoZSBuZXh0IHdyaXRlIChzZWUgTEFXKS5cbiAgICBjb25zdCBmcm9tID0gbm9kZS5jb21taXRJZHggIT09IHVuZGVmaW5lZCA/IG5vZGUuY29tbWl0SWR4ICsgMSA6IDA7XG4gICAgY29uc3QgcmVhZGVycyA9IGluZGljZXNJblJhbmdlKGluZGV4LnJlYWRzT2Yobm9kZS5rZXkpLCBmcm9tLCBub2RlLm5leHRXcml0ZUlkeCk7XG5cbiAgICBpZiAobm9kZS5kZXB0aCA+PSBtYXhEZXB0aCkge1xuICAgICAgLy8gT25seSBhIGxpZmUgdGhhdCBzdGlsbCBIQUQgcmVhZGVycyB0byBleHBhbmQgY291bnRzIGFzIGEgY3V0LlxuICAgICAgaWYgKHJlYWRlcnMubGVuZ3RoID4gMCkgdHJ1bmNhdGVkQnlEZXB0aCA9IHRydWU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlYWRlcklkeCBvZiByZWFkZXJzKSB7XG4gICAgICBjb25zdCBidW5kbGUgPSBjb21taXRMb2dbcmVhZGVySWR4XTtcbiAgICAgIG5vZGUucmVhZHMucHVzaCh7XG4gICAgICAgIHJ1bnRpbWVTdGFnZUlkOiBidW5kbGUucnVudGltZVN0YWdlSWQsXG4gICAgICAgIHN0YWdlSWQ6IGJ1bmRsZS5zdGFnZUlkLFxuICAgICAgICBzdGFnZU5hbWU6IGJ1bmRsZS5zdGFnZSxcbiAgICAgICAgY29tbWl0SWR4OiByZWFkZXJJZHgsXG4gICAgICB9KTtcblxuICAgICAgLy8gVGhlIHJlYWRlciBJUyB0aGUgd3JpdGVyIG9mIGV2ZXJ5dGhpbmcgaXQgY29tbWl0dGVkIOKAlCBlYWNoIHdyaXR0ZW5cbiAgICAgIC8vIHBhdGggaXMgYSBjYW5kaWRhdGUgYGZlZGAgZWRnZS5cbiAgICAgIGZvciAoY29uc3QgcGF0aCBvZiB3cml0dGVuUGF0aHMoYnVuZGxlKSkge1xuICAgICAgICBjb25zdCBlbnRyeSA9IGxhc3RUcmFjZUVudHJ5KGJ1bmRsZSwgcGF0aCk7XG4gICAgICAgIGxldCBiYXNpczogRmVkQmFzaXM7XG4gICAgICAgIGlmIChlbnRyeT8ucmVhZEtleXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIEVYQUNUIGJvdGggd2F5czogcmVjb3JkZWQgcHJvdmVuYW5jZSBjYW4gaW5jbHVkZSBvciBFWENMVURFLiBBIHJlYWRcbiAgICAgICAgICAvLyBvbiB0aGUga2V5LCBpbnNpZGUgaXQgb3IgYXJvdW5kIGl0IGlzIGEgcmVhZCBvZiBpdHMgdmFsdWUuXG4gICAgICAgICAgaWYgKCFlbnRyeS5yZWFkS2V5cy5zb21lKChyZWFkKSA9PiByZWxhdGlvbihyZWFkLCBub2RlLmtleSkgIT09IHVuZGVmaW5lZCkpIGNvbnRpbnVlO1xuICAgICAgICAgIGJhc2lzID0gJ3Blci13cml0ZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaXMgPSAnc3RhZ2UnO1xuICAgICAgICAgIGFueUNvbnNlcnZhdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpZCA9IG5vZGVLZXkocmVhZGVySWR4LCBwYXRoKTtcbiAgICAgICAgbGV0IGNoaWxkID0gbm9kZXMuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjaGlsZCkge1xuICAgICAgICAgIGlmIChjcmVhdGVkID49IG1heE5vZGVzKSB7XG4gICAgICAgICAgICB0cnVuY2F0ZWRCeU5vZGVzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaGlsZCA9IG1ha2VOb2RlKGNvbW1pdExvZywgaW5kZXgsIHBhdGgsIHJlYWRlcklkeCwgbm9kZS5kZXB0aCArIDEpO1xuICAgICAgICAgIG5vZGVzLnNldChpZCwgY2hpbGQpO1xuICAgICAgICAgIGNyZWF0ZWQrKztcbiAgICAgICAgICBxdWV1ZS5wdXNoKGNoaWxkKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPbmUgZWRnZSBwZXIgZGlzdGluY3QgY2hpbGQgbGlmZSAoYSBzdGFnZSByZWFkcyBhIGtleSBvbmNlKS5cbiAgICAgICAgaWYgKCFub2RlLmZlZEVkZ2VzLnNvbWUoKGUpID0+IGUuY2hpbGQgPT09IGNoaWxkKSkgbm9kZS5mZWRFZGdlcy5wdXNoKHsgY2hpbGQsIGJhc2lzIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIOKUgOKUgCBIb25lc3R5IGVudmVsb3BlLCBkZXRlcm1pbmlzdGljIG9yZGVyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICBpZiAocm9vdC5vcmlnaW4gPT09ICdwcmUtcnVuJykgbm90ZXMucHVzaChwcmVSdW5PcmlnaW5Ob3RlKG5vcm1hbGlzZWRLZXkpKTtcbiAgLy8gRXZlcnkgbGlmZSBhIHdyaXRlIElOU0lERSBpdHMga2V5IHN0YXJ0cyBvciBjcm9zc2VzIOKAlCB0aGUgYW5jaG9yJ3MsIGEgcHJlLXJ1biBsaWZlJ3MsIGEgY2hpbGQncyDigJQgc2F5cyBzby5cbiAgY29uc3QgcGFydGlhbCA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8bnVtYmVyPj4oKTtcbiAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzLnZhbHVlcygpKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBub2RlLmNvbW1pdElkeCA/PyAtMTtcbiAgICBjb25zdCBjcm9zc2VkID0gaW5kZXhcbiAgICAgIC53cml0ZXNPZihub2RlLmtleSlcbiAgICAgIC5maWx0ZXIoKGMpID0+IChjID09PSBzdGFydCB8fCBjID4gc3RhcnQpICYmIChub2RlLm5leHRXcml0ZUlkeCA9PT0gdW5kZWZpbmVkIHx8IGMgPCBub2RlLm5leHRXcml0ZUlkeCkpO1xuICAgIGZvciAoY29uc3QgYyBvZiBuZXN0ZWRPbmx5V3JpdGVzKGNvbW1pdExvZywgbm9kZS5rZXksIGNyb3NzZWQpKSB7XG4gICAgICBjb25zdCBzZXQgPSBwYXJ0aWFsLmdldChub2RlLmtleSkgPz8gbmV3IFNldDxudW1iZXI+KCk7XG4gICAgICBzZXQuYWRkKGMpO1xuICAgICAgcGFydGlhbC5zZXQobm9kZS5rZXksIHNldCk7XG4gICAgfVxuICB9XG4gIGZvciAoY29uc3QgW2tleSwgY29tbWl0c10gb2YgcGFydGlhbClcbiAgICBub3Rlcy5wdXNoKFxuICAgICAgbmVzdGVkUm93c05vdGUoXG4gICAgICAgIGtleSxcbiAgICAgICAgWy4uLmNvbW1pdHNdLnNvcnQoKGEsIGIpID0+IGEgLSBiKSxcbiAgICAgICksXG4gICAgKTtcbiAgaWYgKGFueUNvbnNlcnZhdGl2ZSkgbm90ZXMucHVzaChjb25zZXJ2YXRpdmVFZGdlc05vdGUobm9ybWFsaXNlZEtleSkpO1xuICBpZiAodHJ1bmNhdGVkQnlEZXB0aCB8fCB0cnVuY2F0ZWRCeU5vZGVzKSB7XG4gICAgcm9vdC50cnVuY2F0ZWQgPSB7IGJ5RGVwdGg6IHRydW5jYXRlZEJ5RGVwdGgsIGJ5Tm9kZXM6IHRydW5jYXRlZEJ5Tm9kZXMgfTtcbiAgICBub3Rlcy5wdXNoKHRydW5jYXRlZE5vdGUodHJ1bmNhdGVkQnlEZXB0aCwgdHJ1bmNhdGVkQnlOb2RlcykpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlLFxuICAgIC4uLihhbmNob3JJZHggIT09IHVuZGVmaW5lZCAmJiB7IHdyaXRlcjogY29tbWl0TG9nW2FuY2hvcklkeF0gfSksXG4gICAgcm9vdCxcbiAgICBub3RlcyxcbiAgfTtcbn1cbiJdfQ==
@@ -1,42 +0,0 @@
1
- "use strict";
2
- /**
3
- * slice/ — variable-first slicing, both directions (the triage query layer).
4
- *
5
- * One variable, one contract, every surface — asked identically by UI panels
6
- * (explainable-ui / lens), LLM triage tools (trace toolpacks), and offline
7
- * autopsy agents:
8
- *
9
- * - BACKWARD — "why is this VARIABLE what it is?" (`sliceForKey`,
10
- * `arrayProvenance` / `elementProvenance`).
11
- * - FORWARD — "who READ it, and what did it FEED?" (`forwardSliceForKey`),
12
- * plus the flat chronological view (`keyTimeline`).
13
- *
14
- * See README.md for the algorithms (thin-slice composition, append-fold
15
- * provenance, live-range walking), the honesty model, serialization rules,
16
- * and the evolution path.
17
- *
18
- * DAG position: memory ← slice (leaf-adjacent; imports memory/ only).
19
- */
20
- Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.sliceForKey = exports.normaliseStateKey = exports.sliceToJSON = exports.forwardSliceToJSON = exports.formatTimeline = exports.formatSlice = exports.formatForwardSlice = exports.keyTimeline = exports.resolveKeysReadSource = exports.keysReadFromMap = exports.keysReadFromExecutionTree = exports.forwardSliceForKey = exports.elementProvenance = exports.arrayProvenance = void 0;
22
- var elementProvenance_js_1 = require("./elementProvenance.js");
23
- Object.defineProperty(exports, "arrayProvenance", { enumerable: true, get: function () { return elementProvenance_js_1.arrayProvenance; } });
24
- Object.defineProperty(exports, "elementProvenance", { enumerable: true, get: function () { return elementProvenance_js_1.elementProvenance; } });
25
- var forwardSliceForKey_js_1 = require("./forwardSliceForKey.js");
26
- Object.defineProperty(exports, "forwardSliceForKey", { enumerable: true, get: function () { return forwardSliceForKey_js_1.forwardSliceForKey; } });
27
- var keysReadSources_js_1 = require("./keysReadSources.js");
28
- Object.defineProperty(exports, "keysReadFromExecutionTree", { enumerable: true, get: function () { return keysReadSources_js_1.keysReadFromExecutionTree; } });
29
- Object.defineProperty(exports, "keysReadFromMap", { enumerable: true, get: function () { return keysReadSources_js_1.keysReadFromMap; } });
30
- Object.defineProperty(exports, "resolveKeysReadSource", { enumerable: true, get: function () { return keysReadSources_js_1.resolveKeysReadSource; } });
31
- var keyTimeline_js_1 = require("./keyTimeline.js");
32
- Object.defineProperty(exports, "keyTimeline", { enumerable: true, get: function () { return keyTimeline_js_1.keyTimeline; } });
33
- var serialize_js_1 = require("./serialize.js");
34
- Object.defineProperty(exports, "formatForwardSlice", { enumerable: true, get: function () { return serialize_js_1.formatForwardSlice; } });
35
- Object.defineProperty(exports, "formatSlice", { enumerable: true, get: function () { return serialize_js_1.formatSlice; } });
36
- Object.defineProperty(exports, "formatTimeline", { enumerable: true, get: function () { return serialize_js_1.formatTimeline; } });
37
- Object.defineProperty(exports, "forwardSliceToJSON", { enumerable: true, get: function () { return serialize_js_1.forwardSliceToJSON; } });
38
- Object.defineProperty(exports, "sliceToJSON", { enumerable: true, get: function () { return serialize_js_1.sliceToJSON; } });
39
- var sliceForKey_js_1 = require("./sliceForKey.js");
40
- Object.defineProperty(exports, "normaliseStateKey", { enumerable: true, get: function () { return sliceForKey_js_1.normaliseStateKey; } });
41
- Object.defineProperty(exports, "sliceForKey", { enumerable: true, get: function () { return sliceForKey_js_1.sliceForKey; } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NsaWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7OztBQUVILCtEQUE0RTtBQUFuRSx1SEFBQSxlQUFlLE9BQUE7QUFBRSx5SEFBQSxpQkFBaUIsT0FBQTtBQUMzQyxpRUFBNkY7QUFBcEQsMkhBQUEsa0JBQWtCLE9BQUE7QUFDM0QsMkRBQXlHO0FBQWhHLCtIQUFBLHlCQUF5QixPQUFBO0FBQUUscUhBQUEsZUFBZSxPQUFBO0FBQUUsMkhBQUEscUJBQXFCLE9BQUE7QUFDMUUsbURBQXdFO0FBQXRDLDZHQUFBLFdBQVcsT0FBQTtBQUM3QywrQ0FBa0g7QUFBekcsa0hBQUEsa0JBQWtCLE9BQUE7QUFBRSwyR0FBQSxXQUFXLE9BQUE7QUFBRSw4R0FBQSxjQUFjLE9BQUE7QUFBRSxrSEFBQSxrQkFBa0IsT0FBQTtBQUFFLDJHQUFBLFdBQVcsT0FBQTtBQUN6RixtREFBMkY7QUFBekQsbUhBQUEsaUJBQWlCLE9BQUE7QUFBRSw2R0FBQSxXQUFXLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHNsaWNlLyDigJQgdmFyaWFibGUtZmlyc3Qgc2xpY2luZywgYm90aCBkaXJlY3Rpb25zICh0aGUgdHJpYWdlIHF1ZXJ5IGxheWVyKS5cbiAqXG4gKiBPbmUgdmFyaWFibGUsIG9uZSBjb250cmFjdCwgZXZlcnkgc3VyZmFjZSDigJQgYXNrZWQgaWRlbnRpY2FsbHkgYnkgVUkgcGFuZWxzXG4gKiAoZXhwbGFpbmFibGUtdWkgLyBsZW5zKSwgTExNIHRyaWFnZSB0b29scyAodHJhY2UgdG9vbHBhY2tzKSwgYW5kIG9mZmxpbmVcbiAqIGF1dG9wc3kgYWdlbnRzOlxuICpcbiAqIC0gQkFDS1dBUkQg4oCUIFwid2h5IGlzIHRoaXMgVkFSSUFCTEUgd2hhdCBpdCBpcz9cIiAoYHNsaWNlRm9yS2V5YCxcbiAqICAgYGFycmF5UHJvdmVuYW5jZWAgLyBgZWxlbWVudFByb3ZlbmFuY2VgKS5cbiAqIC0gRk9SV0FSRCDigJQgXCJ3aG8gUkVBRCBpdCwgYW5kIHdoYXQgZGlkIGl0IEZFRUQ/XCIgKGBmb3J3YXJkU2xpY2VGb3JLZXlgKSxcbiAqICAgcGx1cyB0aGUgZmxhdCBjaHJvbm9sb2dpY2FsIHZpZXcgKGBrZXlUaW1lbGluZWApLlxuICpcbiAqIFNlZSBSRUFETUUubWQgZm9yIHRoZSBhbGdvcml0aG1zICh0aGluLXNsaWNlIGNvbXBvc2l0aW9uLCBhcHBlbmQtZm9sZFxuICogcHJvdmVuYW5jZSwgbGl2ZS1yYW5nZSB3YWxraW5nKSwgdGhlIGhvbmVzdHkgbW9kZWwsIHNlcmlhbGl6YXRpb24gcnVsZXMsXG4gKiBhbmQgdGhlIGV2b2x1dGlvbiBwYXRoLlxuICpcbiAqIERBRyBwb3NpdGlvbjogbWVtb3J5IOKGkCBzbGljZSAobGVhZi1hZGphY2VudDsgaW1wb3J0cyBtZW1vcnkvIG9ubHkpLlxuICovXG5cbmV4cG9ydCB7IGFycmF5UHJvdmVuYW5jZSwgZWxlbWVudFByb3ZlbmFuY2UgfSBmcm9tICcuL2VsZW1lbnRQcm92ZW5hbmNlLmpzJztcbmV4cG9ydCB7IHR5cGUgRm9yd2FyZFNsaWNlRm9yS2V5T3B0aW9ucywgZm9yd2FyZFNsaWNlRm9yS2V5IH0gZnJvbSAnLi9mb3J3YXJkU2xpY2VGb3JLZXkuanMnO1xuZXhwb3J0IHsga2V5c1JlYWRGcm9tRXhlY3V0aW9uVHJlZSwga2V5c1JlYWRGcm9tTWFwLCByZXNvbHZlS2V5c1JlYWRTb3VyY2UgfSBmcm9tICcuL2tleXNSZWFkU291cmNlcy5qcyc7XG5leHBvcnQgeyB0eXBlIEtleVRpbWVsaW5lT3B0aW9ucywga2V5VGltZWxpbmUgfSBmcm9tICcuL2tleVRpbWVsaW5lLmpzJztcbmV4cG9ydCB7IGZvcm1hdEZvcndhcmRTbGljZSwgZm9ybWF0U2xpY2UsIGZvcm1hdFRpbWVsaW5lLCBmb3J3YXJkU2xpY2VUb0pTT04sIHNsaWNlVG9KU09OIH0gZnJvbSAnLi9zZXJpYWxpemUuanMnO1xuZXhwb3J0IHsgdHlwZSBTbGljZUZvcktleU9wdGlvbnMsIG5vcm1hbGlzZVN0YXRlS2V5LCBzbGljZUZvcktleSB9IGZyb20gJy4vc2xpY2VGb3JLZXkuanMnO1xuZXhwb3J0IHR5cGUge1xuICBBcnJheVByb3ZlbmFuY2UsXG4gIEF0dHJpYnV0aW9uQmFzaXMsXG4gIEVsZW1lbnRCaXJ0aCxcbiAgRmVkQmFzaXMsXG4gIEZvcndhcmRFZGdlLFxuICBGb3J3YXJkTm9kZSxcbiAgRm9yd2FyZFJlYWQsXG4gIEZvcndhcmRTbGljZSxcbiAgRm9yd2FyZFNsaWNlSlNPTixcbiAgSG9uZXN0eU5vdGUsXG4gIEhvbmVzdHlOb3RlQ29kZSxcbiAgS2V5TW9tZW50LFxuICBLZXlzUmVhZFNvdXJjZSxcbiAgS2V5VGltZWxpbmUsXG4gIE1pc3NpbmdQcm92ZW5hbmNlUmVhc29uLFxuICBNaXNzaW5nU2xpY2VSZWFzb24sXG4gIFJlYWRzQ292ZXJhZ2UsXG4gIFNsaWNlSlNPTixcbiAgU3RhdGVLZXksXG4gIFZhcmlhYmxlU2xpY2UsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuIl19