@sunshaobei/dsh-workflow 0.0.0-stage → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/README.md +43 -2
  2. package/cordis.patch.yml +17 -0
  3. package/lib/client.js +14708 -0
  4. package/lib/core.js +137 -0
  5. package/lib/engine-adapter.js +1387 -0
  6. package/lib/host-driver.js +298 -0
  7. package/lib/index.js +536 -0
  8. package/lib/projection.js +159 -0
  9. package/lib/registry.js +218 -0
  10. package/lib/session-records.js +54 -0
  11. package/lib/submission-commit.js +34 -0
  12. package/lib/world-driver.js +275 -0
  13. package/package.json +64 -4
  14. package/vendor/PROVENANCE.md +9 -0
  15. package/vendor/dynamic-workflow/analysis/actor-graph.d.ts +47 -0
  16. package/vendor/dynamic-workflow/analysis/actor-graph.d.ts.map +1 -0
  17. package/vendor/dynamic-workflow/analysis/actor-graph.js +95 -0
  18. package/vendor/dynamic-workflow/analysis/actor-models.d.ts +60 -0
  19. package/vendor/dynamic-workflow/analysis/actor-models.d.ts.map +1 -0
  20. package/vendor/dynamic-workflow/analysis/actor-models.js +208 -0
  21. package/vendor/dynamic-workflow/analysis/actor-names.d.ts +56 -0
  22. package/vendor/dynamic-workflow/analysis/actor-names.d.ts.map +1 -0
  23. package/vendor/dynamic-workflow/analysis/actor-names.js +155 -0
  24. package/vendor/dynamic-workflow/analysis/analyze.d.ts +63 -0
  25. package/vendor/dynamic-workflow/analysis/analyze.d.ts.map +1 -0
  26. package/vendor/dynamic-workflow/analysis/analyze.js +92 -0
  27. package/vendor/dynamic-workflow/analysis/array-methods.d.ts +21 -0
  28. package/vendor/dynamic-workflow/analysis/array-methods.d.ts.map +1 -0
  29. package/vendor/dynamic-workflow/analysis/array-methods.js +132 -0
  30. package/vendor/dynamic-workflow/analysis/artifact-types.d.ts +39 -0
  31. package/vendor/dynamic-workflow/analysis/artifact-types.d.ts.map +1 -0
  32. package/vendor/dynamic-workflow/analysis/artifact-types.js +114 -0
  33. package/vendor/dynamic-workflow/analysis/artifacts.d.ts +67 -0
  34. package/vendor/dynamic-workflow/analysis/artifacts.d.ts.map +1 -0
  35. package/vendor/dynamic-workflow/analysis/artifacts.js +263 -0
  36. package/vendor/dynamic-workflow/analysis/assign.d.ts +42 -0
  37. package/vendor/dynamic-workflow/analysis/assign.d.ts.map +1 -0
  38. package/vendor/dynamic-workflow/analysis/assign.js +287 -0
  39. package/vendor/dynamic-workflow/analysis/callbacks.d.ts +71 -0
  40. package/vendor/dynamic-workflow/analysis/callbacks.d.ts.map +1 -0
  41. package/vendor/dynamic-workflow/analysis/callbacks.js +133 -0
  42. package/vendor/dynamic-workflow/analysis/calls.d.ts +40 -0
  43. package/vendor/dynamic-workflow/analysis/calls.d.ts.map +1 -0
  44. package/vendor/dynamic-workflow/analysis/calls.js +495 -0
  45. package/vendor/dynamic-workflow/analysis/causality-graph-lanes.d.ts +25 -0
  46. package/vendor/dynamic-workflow/analysis/causality-graph-lanes.d.ts.map +1 -0
  47. package/vendor/dynamic-workflow/analysis/causality-graph-lanes.js +161 -0
  48. package/vendor/dynamic-workflow/analysis/causality-graph-types.d.ts +163 -0
  49. package/vendor/dynamic-workflow/analysis/causality-graph-types.d.ts.map +1 -0
  50. package/vendor/dynamic-workflow/analysis/causality-graph-types.js +8 -0
  51. package/vendor/dynamic-workflow/analysis/causality-graph.d.ts +39 -0
  52. package/vendor/dynamic-workflow/analysis/causality-graph.d.ts.map +1 -0
  53. package/vendor/dynamic-workflow/analysis/causality-graph.js +530 -0
  54. package/vendor/dynamic-workflow/analysis/causality-order-calls.d.ts +29 -0
  55. package/vendor/dynamic-workflow/analysis/causality-order-calls.d.ts.map +1 -0
  56. package/vendor/dynamic-workflow/analysis/causality-order-calls.js +266 -0
  57. package/vendor/dynamic-workflow/analysis/causality-order-functions.d.ts +26 -0
  58. package/vendor/dynamic-workflow/analysis/causality-order-functions.d.ts.map +1 -0
  59. package/vendor/dynamic-workflow/analysis/causality-order-functions.js +116 -0
  60. package/vendor/dynamic-workflow/analysis/causality-order-loops.d.ts +5 -0
  61. package/vendor/dynamic-workflow/analysis/causality-order-loops.d.ts.map +1 -0
  62. package/vendor/dynamic-workflow/analysis/causality-order-loops.js +148 -0
  63. package/vendor/dynamic-workflow/analysis/causality-order-settle.d.ts +39 -0
  64. package/vendor/dynamic-workflow/analysis/causality-order-settle.d.ts.map +1 -0
  65. package/vendor/dynamic-workflow/analysis/causality-order-settle.js +263 -0
  66. package/vendor/dynamic-workflow/analysis/causality-order-state.d.ts +110 -0
  67. package/vendor/dynamic-workflow/analysis/causality-order-state.d.ts.map +1 -0
  68. package/vendor/dynamic-workflow/analysis/causality-order-state.js +162 -0
  69. package/vendor/dynamic-workflow/analysis/causality-order-strands.d.ts +79 -0
  70. package/vendor/dynamic-workflow/analysis/causality-order-strands.d.ts.map +1 -0
  71. package/vendor/dynamic-workflow/analysis/causality-order-strands.js +154 -0
  72. package/vendor/dynamic-workflow/analysis/causality-order-types.d.ts +174 -0
  73. package/vendor/dynamic-workflow/analysis/causality-order-types.d.ts.map +1 -0
  74. package/vendor/dynamic-workflow/analysis/causality-order-types.js +1 -0
  75. package/vendor/dynamic-workflow/analysis/causality-order-walk.d.ts +17 -0
  76. package/vendor/dynamic-workflow/analysis/causality-order-walk.d.ts.map +1 -0
  77. package/vendor/dynamic-workflow/analysis/causality-order-walk.js +282 -0
  78. package/vendor/dynamic-workflow/analysis/causality-order.d.ts +60 -0
  79. package/vendor/dynamic-workflow/analysis/causality-order.d.ts.map +1 -0
  80. package/vendor/dynamic-workflow/analysis/causality-order.js +110 -0
  81. package/vendor/dynamic-workflow/analysis/causality-reduce.d.ts +60 -0
  82. package/vendor/dynamic-workflow/analysis/causality-reduce.d.ts.map +1 -0
  83. package/vendor/dynamic-workflow/analysis/causality-reduce.js +198 -0
  84. package/vendor/dynamic-workflow/analysis/classes.d.ts +47 -0
  85. package/vendor/dynamic-workflow/analysis/classes.d.ts.map +1 -0
  86. package/vendor/dynamic-workflow/analysis/classes.js +264 -0
  87. package/vendor/dynamic-workflow/analysis/constants.d.ts +35 -0
  88. package/vendor/dynamic-workflow/analysis/constants.d.ts.map +1 -0
  89. package/vendor/dynamic-workflow/analysis/constants.js +23 -0
  90. package/vendor/dynamic-workflow/analysis/control-flow.d.ts +26 -0
  91. package/vendor/dynamic-workflow/analysis/control-flow.d.ts.map +1 -0
  92. package/vendor/dynamic-workflow/analysis/control-flow.js +132 -0
  93. package/vendor/dynamic-workflow/analysis/core-json.d.ts +45 -0
  94. package/vendor/dynamic-workflow/analysis/core-json.d.ts.map +1 -0
  95. package/vendor/dynamic-workflow/analysis/core-json.js +49 -0
  96. package/vendor/dynamic-workflow/analysis/core.d.ts +194 -0
  97. package/vendor/dynamic-workflow/analysis/core.d.ts.map +1 -0
  98. package/vendor/dynamic-workflow/analysis/core.js +204 -0
  99. package/vendor/dynamic-workflow/analysis/domain.d.ts +269 -0
  100. package/vendor/dynamic-workflow/analysis/domain.d.ts.map +1 -0
  101. package/vendor/dynamic-workflow/analysis/domain.js +523 -0
  102. package/vendor/dynamic-workflow/analysis/facade-misuse.d.ts +56 -0
  103. package/vendor/dynamic-workflow/analysis/facade-misuse.d.ts.map +1 -0
  104. package/vendor/dynamic-workflow/analysis/facade-misuse.js +350 -0
  105. package/vendor/dynamic-workflow/analysis/fanout-cardinality.d.ts +11 -0
  106. package/vendor/dynamic-workflow/analysis/fanout-cardinality.d.ts.map +1 -0
  107. package/vendor/dynamic-workflow/analysis/fanout-cardinality.js +121 -0
  108. package/vendor/dynamic-workflow/analysis/flow-graph.d.ts +113 -0
  109. package/vendor/dynamic-workflow/analysis/flow-graph.d.ts.map +1 -0
  110. package/vendor/dynamic-workflow/analysis/flow-graph.js +411 -0
  111. package/vendor/dynamic-workflow/analysis/flow-phase.d.ts +28 -0
  112. package/vendor/dynamic-workflow/analysis/flow-phase.d.ts.map +1 -0
  113. package/vendor/dynamic-workflow/analysis/flow-phase.js +104 -0
  114. package/vendor/dynamic-workflow/analysis/flow-strands.d.ts +39 -0
  115. package/vendor/dynamic-workflow/analysis/flow-strands.d.ts.map +1 -0
  116. package/vendor/dynamic-workflow/analysis/flow-strands.js +47 -0
  117. package/vendor/dynamic-workflow/analysis/flow-tree.d.ts +35 -0
  118. package/vendor/dynamic-workflow/analysis/flow-tree.d.ts.map +1 -0
  119. package/vendor/dynamic-workflow/analysis/flow-tree.js +33 -0
  120. package/vendor/dynamic-workflow/analysis/graph.d.ts +5 -0
  121. package/vendor/dynamic-workflow/analysis/graph.d.ts.map +1 -0
  122. package/vendor/dynamic-workflow/analysis/graph.js +199 -0
  123. package/vendor/dynamic-workflow/analysis/handoff-graph.d.ts +48 -0
  124. package/vendor/dynamic-workflow/analysis/handoff-graph.d.ts.map +1 -0
  125. package/vendor/dynamic-workflow/analysis/handoff-graph.js +0 -0
  126. package/vendor/dynamic-workflow/analysis/heap-ops.d.ts +14 -0
  127. package/vendor/dynamic-workflow/analysis/heap-ops.d.ts.map +1 -0
  128. package/vendor/dynamic-workflow/analysis/heap-ops.js +70 -0
  129. package/vendor/dynamic-workflow/analysis/hole-id.d.ts +28 -0
  130. package/vendor/dynamic-workflow/analysis/hole-id.d.ts.map +1 -0
  131. package/vendor/dynamic-workflow/analysis/hole-id.js +41 -0
  132. package/vendor/dynamic-workflow/analysis/hole-sites.d.ts +32 -0
  133. package/vendor/dynamic-workflow/analysis/hole-sites.d.ts.map +1 -0
  134. package/vendor/dynamic-workflow/analysis/hole-sites.js +215 -0
  135. package/vendor/dynamic-workflow/analysis/hole-splice.d.ts +45 -0
  136. package/vendor/dynamic-workflow/analysis/hole-splice.d.ts.map +1 -0
  137. package/vendor/dynamic-workflow/analysis/hole-splice.js +100 -0
  138. package/vendor/dynamic-workflow/analysis/interpret.d.ts +26 -0
  139. package/vendor/dynamic-workflow/analysis/interpret.d.ts.map +1 -0
  140. package/vendor/dynamic-workflow/analysis/interpret.js +200 -0
  141. package/vendor/dynamic-workflow/analysis/literals.d.ts +18 -0
  142. package/vendor/dynamic-workflow/analysis/literals.d.ts.map +1 -0
  143. package/vendor/dynamic-workflow/analysis/literals.js +125 -0
  144. package/vendor/dynamic-workflow/analysis/mermaid.d.ts +60 -0
  145. package/vendor/dynamic-workflow/analysis/mermaid.d.ts.map +1 -0
  146. package/vendor/dynamic-workflow/analysis/mermaid.js +477 -0
  147. package/vendor/dynamic-workflow/analysis/patterns.d.ts +31 -0
  148. package/vendor/dynamic-workflow/analysis/patterns.d.ts.map +1 -0
  149. package/vendor/dynamic-workflow/analysis/patterns.js +94 -0
  150. package/vendor/dynamic-workflow/analysis/phase-graph.d.ts +47 -0
  151. package/vendor/dynamic-workflow/analysis/phase-graph.d.ts.map +1 -0
  152. package/vendor/dynamic-workflow/analysis/phase-graph.js +334 -0
  153. package/vendor/dynamic-workflow/analysis/phases.d.ts +24 -0
  154. package/vendor/dynamic-workflow/analysis/phases.d.ts.map +1 -0
  155. package/vendor/dynamic-workflow/analysis/phases.js +54 -0
  156. package/vendor/dynamic-workflow/analysis/promise-ops.d.ts +52 -0
  157. package/vendor/dynamic-workflow/analysis/promise-ops.d.ts.map +1 -0
  158. package/vendor/dynamic-workflow/analysis/promise-ops.js +123 -0
  159. package/vendor/dynamic-workflow/analysis/relays.d.ts +12 -0
  160. package/vendor/dynamic-workflow/analysis/relays.d.ts.map +1 -0
  161. package/vendor/dynamic-workflow/analysis/relays.js +78 -0
  162. package/vendor/dynamic-workflow/analysis/serialize.d.ts +125 -0
  163. package/vendor/dynamic-workflow/analysis/serialize.d.ts.map +1 -0
  164. package/vendor/dynamic-workflow/analysis/serialize.js +321 -0
  165. package/vendor/dynamic-workflow/analysis/site-phases.d.ts +32 -0
  166. package/vendor/dynamic-workflow/analysis/site-phases.d.ts.map +1 -0
  167. package/vendor/dynamic-workflow/analysis/site-phases.js +69 -0
  168. package/vendor/dynamic-workflow/analysis/sites-labels.d.ts +71 -0
  169. package/vendor/dynamic-workflow/analysis/sites-labels.d.ts.map +1 -0
  170. package/vendor/dynamic-workflow/analysis/sites-labels.js +189 -0
  171. package/vendor/dynamic-workflow/analysis/sites.d.ts +267 -0
  172. package/vendor/dynamic-workflow/analysis/sites.d.ts.map +1 -0
  173. package/vendor/dynamic-workflow/analysis/sites.js +225 -0
  174. package/vendor/dynamic-workflow/analysis/state.d.ts +254 -0
  175. package/vendor/dynamic-workflow/analysis/state.d.ts.map +1 -0
  176. package/vendor/dynamic-workflow/analysis/state.js +569 -0
  177. package/vendor/dynamic-workflow/analysis/taint.d.ts +97 -0
  178. package/vendor/dynamic-workflow/analysis/taint.d.ts.map +1 -0
  179. package/vendor/dynamic-workflow/analysis/taint.js +649 -0
  180. package/vendor/dynamic-workflow/analysis/types.d.ts +100 -0
  181. package/vendor/dynamic-workflow/analysis/types.d.ts.map +1 -0
  182. package/vendor/dynamic-workflow/analysis/types.js +1 -0
  183. package/vendor/dynamic-workflow/analysis/world-run.d.ts +27 -0
  184. package/vendor/dynamic-workflow/analysis/world-run.d.ts.map +1 -0
  185. package/vendor/dynamic-workflow/analysis/world-run.js +44 -0
  186. package/vendor/dynamic-workflow/compiler/compile.d.ts +59 -0
  187. package/vendor/dynamic-workflow/compiler/compile.d.ts.map +1 -0
  188. package/vendor/dynamic-workflow/compiler/compile.js +159 -0
  189. package/vendor/dynamic-workflow/compiler/libs.generated.d.ts +3 -0
  190. package/vendor/dynamic-workflow/compiler/libs.generated.d.ts.map +1 -0
  191. package/vendor/dynamic-workflow/compiler/libs.generated.js +64 -0
  192. package/vendor/dynamic-workflow/engine/artifact-spec.d.ts +26 -0
  193. package/vendor/dynamic-workflow/engine/artifact-spec.d.ts.map +1 -0
  194. package/vendor/dynamic-workflow/engine/artifact-spec.js +173 -0
  195. package/vendor/dynamic-workflow/engine/ask-observation-types.d.ts +54 -0
  196. package/vendor/dynamic-workflow/engine/ask-observation-types.d.ts.map +1 -0
  197. package/vendor/dynamic-workflow/engine/ask-observation-types.js +19 -0
  198. package/vendor/dynamic-workflow/engine/cached-ask-facts.d.ts +28 -0
  199. package/vendor/dynamic-workflow/engine/cached-ask-facts.d.ts.map +1 -0
  200. package/vendor/dynamic-workflow/engine/cached-ask-facts.js +35 -0
  201. package/vendor/dynamic-workflow/engine/concurrency.d.ts +151 -0
  202. package/vendor/dynamic-workflow/engine/concurrency.d.ts.map +1 -0
  203. package/vendor/dynamic-workflow/engine/concurrency.js +282 -0
  204. package/vendor/dynamic-workflow/engine/engine-artifacts-primary.d.ts +17 -0
  205. package/vendor/dynamic-workflow/engine/engine-artifacts-primary.d.ts.map +1 -0
  206. package/vendor/dynamic-workflow/engine/engine-artifacts-primary.js +29 -0
  207. package/vendor/dynamic-workflow/engine/engine-artifacts.d.ts +55 -0
  208. package/vendor/dynamic-workflow/engine/engine-artifacts.d.ts.map +1 -0
  209. package/vendor/dynamic-workflow/engine/engine-artifacts.js +367 -0
  210. package/vendor/dynamic-workflow/engine/engine-config.d.ts +90 -0
  211. package/vendor/dynamic-workflow/engine/engine-config.d.ts.map +1 -0
  212. package/vendor/dynamic-workflow/engine/engine-config.js +6 -0
  213. package/vendor/dynamic-workflow/engine/engine-holes.d.ts +116 -0
  214. package/vendor/dynamic-workflow/engine/engine-holes.d.ts.map +1 -0
  215. package/vendor/dynamic-workflow/engine/engine-holes.js +142 -0
  216. package/vendor/dynamic-workflow/engine/engine-launch.d.ts +34 -0
  217. package/vendor/dynamic-workflow/engine/engine-launch.d.ts.map +1 -0
  218. package/vendor/dynamic-workflow/engine/engine-launch.js +26 -0
  219. package/vendor/dynamic-workflow/engine/engine-phase-stamp.d.ts +35 -0
  220. package/vendor/dynamic-workflow/engine/engine-phase-stamp.d.ts.map +1 -0
  221. package/vendor/dynamic-workflow/engine/engine-phase-stamp.js +74 -0
  222. package/vendor/dynamic-workflow/engine/engine-report.d.ts +27 -0
  223. package/vendor/dynamic-workflow/engine/engine-report.d.ts.map +1 -0
  224. package/vendor/dynamic-workflow/engine/engine-report.js +151 -0
  225. package/vendor/dynamic-workflow/engine/engine-resume.d.ts +18 -0
  226. package/vendor/dynamic-workflow/engine/engine-resume.d.ts.map +1 -0
  227. package/vendor/dynamic-workflow/engine/engine-resume.js +38 -0
  228. package/vendor/dynamic-workflow/engine/engine-settlement.d.ts +30 -0
  229. package/vendor/dynamic-workflow/engine/engine-settlement.d.ts.map +1 -0
  230. package/vendor/dynamic-workflow/engine/engine-settlement.js +79 -0
  231. package/vendor/dynamic-workflow/engine/engine-state.d.ts +99 -0
  232. package/vendor/dynamic-workflow/engine/engine-state.d.ts.map +1 -0
  233. package/vendor/dynamic-workflow/engine/engine-state.js +13 -0
  234. package/vendor/dynamic-workflow/engine/engine-world.d.ts +36 -0
  235. package/vendor/dynamic-workflow/engine/engine-world.d.ts.map +1 -0
  236. package/vendor/dynamic-workflow/engine/engine-world.js +189 -0
  237. package/vendor/dynamic-workflow/engine/engine.d.ts +263 -0
  238. package/vendor/dynamic-workflow/engine/engine.d.ts.map +1 -0
  239. package/vendor/dynamic-workflow/engine/engine.js +602 -0
  240. package/vendor/dynamic-workflow/engine/errors.d.ts +87 -0
  241. package/vendor/dynamic-workflow/engine/errors.d.ts.map +1 -0
  242. package/vendor/dynamic-workflow/engine/errors.js +56 -0
  243. package/vendor/dynamic-workflow/engine/hash-mismatch.d.ts +10 -0
  244. package/vendor/dynamic-workflow/engine/hash-mismatch.d.ts.map +1 -0
  245. package/vendor/dynamic-workflow/engine/hash-mismatch.js +15 -0
  246. package/vendor/dynamic-workflow/engine/hash.d.ts +16 -0
  247. package/vendor/dynamic-workflow/engine/hash.d.ts.map +1 -0
  248. package/vendor/dynamic-workflow/engine/hash.js +48 -0
  249. package/vendor/dynamic-workflow/engine/imported-cache-types.d.ts +96 -0
  250. package/vendor/dynamic-workflow/engine/imported-cache-types.d.ts.map +1 -0
  251. package/vendor/dynamic-workflow/engine/imported-cache-types.js +6 -0
  252. package/vendor/dynamic-workflow/engine/imported-cache.d.ts +127 -0
  253. package/vendor/dynamic-workflow/engine/imported-cache.d.ts.map +1 -0
  254. package/vendor/dynamic-workflow/engine/imported-cache.js +244 -0
  255. package/vendor/dynamic-workflow/engine/index.d.ts +11 -0
  256. package/vendor/dynamic-workflow/engine/index.d.ts.map +1 -0
  257. package/vendor/dynamic-workflow/engine/index.js +10 -0
  258. package/vendor/dynamic-workflow/engine/journal-memory.d.ts +32 -0
  259. package/vendor/dynamic-workflow/engine/journal-memory.d.ts.map +1 -0
  260. package/vendor/dynamic-workflow/engine/journal-memory.js +243 -0
  261. package/vendor/dynamic-workflow/engine/journal-read-types.d.ts +72 -0
  262. package/vendor/dynamic-workflow/engine/journal-read-types.d.ts.map +1 -0
  263. package/vendor/dynamic-workflow/engine/journal-read-types.js +28 -0
  264. package/vendor/dynamic-workflow/engine/persona.d.ts +20 -0
  265. package/vendor/dynamic-workflow/engine/persona.d.ts.map +1 -0
  266. package/vendor/dynamic-workflow/engine/persona.js +43 -0
  267. package/vendor/dynamic-workflow/engine/replay-order.d.ts +96 -0
  268. package/vendor/dynamic-workflow/engine/replay-order.d.ts.map +1 -0
  269. package/vendor/dynamic-workflow/engine/replay-order.js +229 -0
  270. package/vendor/dynamic-workflow/engine/run-terminal.d.ts +35 -0
  271. package/vendor/dynamic-workflow/engine/run-terminal.d.ts.map +1 -0
  272. package/vendor/dynamic-workflow/engine/run-terminal.js +7 -0
  273. package/vendor/dynamic-workflow/engine/scheduler-submit.d.ts +22 -0
  274. package/vendor/dynamic-workflow/engine/scheduler-submit.d.ts.map +1 -0
  275. package/vendor/dynamic-workflow/engine/scheduler-submit.js +84 -0
  276. package/vendor/dynamic-workflow/engine/scheduler-types.d.ts +105 -0
  277. package/vendor/dynamic-workflow/engine/scheduler-types.d.ts.map +1 -0
  278. package/vendor/dynamic-workflow/engine/scheduler-types.js +17 -0
  279. package/vendor/dynamic-workflow/engine/scheduler.d.ts +113 -0
  280. package/vendor/dynamic-workflow/engine/scheduler.d.ts.map +1 -0
  281. package/vendor/dynamic-workflow/engine/scheduler.js +484 -0
  282. package/vendor/dynamic-workflow/engine/types.d.ts +979 -0
  283. package/vendor/dynamic-workflow/engine/types.d.ts.map +1 -0
  284. package/vendor/dynamic-workflow/engine/types.js +26 -0
  285. package/vendor/dynamic-workflow/engine/world-read-input.d.ts +10 -0
  286. package/vendor/dynamic-workflow/engine/world-read-input.d.ts.map +1 -0
  287. package/vendor/dynamic-workflow/engine/world-read-input.js +55 -0
  288. package/vendor/dynamic-workflow/facade/artifact-caps.d.ts +48 -0
  289. package/vendor/dynamic-workflow/facade/artifact-caps.d.ts.map +1 -0
  290. package/vendor/dynamic-workflow/facade/artifact-caps.js +47 -0
  291. package/vendor/dynamic-workflow/facade/dts-hole.d.ts +16 -0
  292. package/vendor/dynamic-workflow/facade/dts-hole.d.ts.map +1 -0
  293. package/vendor/dynamic-workflow/facade/dts-hole.js +26 -0
  294. package/vendor/dynamic-workflow/facade/dts-model.d.ts +11 -0
  295. package/vendor/dynamic-workflow/facade/dts-model.d.ts.map +1 -0
  296. package/vendor/dynamic-workflow/facade/dts-model.js +18 -0
  297. package/vendor/dynamic-workflow/facade/dts-stream.d.ts +15 -0
  298. package/vendor/dynamic-workflow/facade/dts-stream.d.ts.map +1 -0
  299. package/vendor/dynamic-workflow/facade/dts-stream.js +41 -0
  300. package/vendor/dynamic-workflow/facade/dts.d.ts +29 -0
  301. package/vendor/dynamic-workflow/facade/dts.d.ts.map +1 -0
  302. package/vendor/dynamic-workflow/facade/dts.js +324 -0
  303. package/vendor/dynamic-workflow/facade/registry.d.ts +218 -0
  304. package/vendor/dynamic-workflow/facade/registry.d.ts.map +1 -0
  305. package/vendor/dynamic-workflow/facade/registry.js +203 -0
  306. package/vendor/dynamic-workflow/facade/report-caps.d.ts +40 -0
  307. package/vendor/dynamic-workflow/facade/report-caps.d.ts.map +1 -0
  308. package/vendor/dynamic-workflow/facade/report-caps.js +39 -0
  309. package/vendor/dynamic-workflow/facade/world-read-caps.d.ts +37 -0
  310. package/vendor/dynamic-workflow/facade/world-read-caps.d.ts.map +1 -0
  311. package/vendor/dynamic-workflow/facade/world-read-caps.js +36 -0
  312. package/vendor/dynamic-workflow/index.d.ts +41 -0
  313. package/vendor/dynamic-workflow/index.d.ts.map +1 -0
  314. package/vendor/dynamic-workflow/index.js +51 -0
  315. package/vendor/dynamic-workflow/lowering/index.d.ts +2 -0
  316. package/vendor/dynamic-workflow/lowering/index.d.ts.map +1 -0
  317. package/vendor/dynamic-workflow/lowering/index.js +1 -0
  318. package/vendor/dynamic-workflow/lowering/lower-hole.d.ts +16 -0
  319. package/vendor/dynamic-workflow/lowering/lower-hole.d.ts.map +1 -0
  320. package/vendor/dynamic-workflow/lowering/lower-hole.js +63 -0
  321. package/vendor/dynamic-workflow/lowering/lower.d.ts +82 -0
  322. package/vendor/dynamic-workflow/lowering/lower.d.ts.map +1 -0
  323. package/vendor/dynamic-workflow/lowering/lower.js +333 -0
  324. package/vendor/dynamic-workflow/projections.d.ts +26 -0
  325. package/vendor/dynamic-workflow/projections.d.ts.map +1 -0
  326. package/vendor/dynamic-workflow/projections.js +23 -0
  327. package/vendor/dynamic-workflow/schema/actor-submit-profiles.d.ts +49 -0
  328. package/vendor/dynamic-workflow/schema/actor-submit-profiles.d.ts.map +1 -0
  329. package/vendor/dynamic-workflow/schema/actor-submit-profiles.js +69 -0
  330. package/vendor/dynamic-workflow/schema/emit.d.ts +55 -0
  331. package/vendor/dynamic-workflow/schema/emit.d.ts.map +1 -0
  332. package/vendor/dynamic-workflow/schema/emit.js +325 -0
  333. package/vendor/dynamic-workflow/schema/jsdoc.d.ts +10 -0
  334. package/vendor/dynamic-workflow/schema/jsdoc.d.ts.map +1 -0
  335. package/vendor/dynamic-workflow/schema/jsdoc.js +83 -0
  336. package/vendor/dynamic-workflow/schema/serialize.d.ts +8 -0
  337. package/vendor/dynamic-workflow/schema/serialize.d.ts.map +1 -0
  338. package/vendor/dynamic-workflow/schema/serialize.js +20 -0
  339. package/vendor/dynamic-workflow/schema/synthesize.d.ts +48 -0
  340. package/vendor/dynamic-workflow/schema/synthesize.d.ts.map +1 -0
  341. package/vendor/dynamic-workflow/schema/synthesize.js +138 -0
  342. package/vendor/dynamic-workflow/schema/types.d.ts +67 -0
  343. package/vendor/dynamic-workflow/schema/types.d.ts.map +1 -0
  344. package/vendor/dynamic-workflow/schema/types.js +18 -0
  345. package/vendor/dynamic-workflow/schema/validate.d.ts +15 -0
  346. package/vendor/dynamic-workflow/schema/validate.d.ts.map +1 -0
  347. package/vendor/dynamic-workflow/schema/validate.js +213 -0
  348. package/vendor/dynamic-workflow/testing/index.d.ts +6 -0
  349. package/vendor/dynamic-workflow/testing/index.d.ts.map +1 -0
  350. package/vendor/dynamic-workflow/testing/index.js +5 -0
  351. package/vendor/dynamic-workflow/testing/journal-contract-artifacts.d.ts +9 -0
  352. package/vendor/dynamic-workflow/testing/journal-contract-artifacts.d.ts.map +1 -0
  353. package/vendor/dynamic-workflow/testing/journal-contract-artifacts.js +195 -0
  354. package/vendor/dynamic-workflow/testing/journal-contract-events.d.ts +9 -0
  355. package/vendor/dynamic-workflow/testing/journal-contract-events.d.ts.map +1 -0
  356. package/vendor/dynamic-workflow/testing/journal-contract-events.js +163 -0
  357. package/vendor/dynamic-workflow/testing/journal-contract-helpers.d.ts +9 -0
  358. package/vendor/dynamic-workflow/testing/journal-contract-helpers.d.ts.map +1 -0
  359. package/vendor/dynamic-workflow/testing/journal-contract-helpers.js +12 -0
  360. package/vendor/dynamic-workflow/testing/journal-contract-isolation.d.ts +9 -0
  361. package/vendor/dynamic-workflow/testing/journal-contract-isolation.d.ts.map +1 -0
  362. package/vendor/dynamic-workflow/testing/journal-contract-isolation.js +46 -0
  363. package/vendor/dynamic-workflow/testing/journal-contract-nodes.d.ts +9 -0
  364. package/vendor/dynamic-workflow/testing/journal-contract-nodes.d.ts.map +1 -0
  365. package/vendor/dynamic-workflow/testing/journal-contract-nodes.js +234 -0
  366. package/vendor/dynamic-workflow/testing/journal-contract-reads.d.ts +11 -0
  367. package/vendor/dynamic-workflow/testing/journal-contract-reads.d.ts.map +1 -0
  368. package/vendor/dynamic-workflow/testing/journal-contract-reads.js +281 -0
  369. package/vendor/dynamic-workflow/testing/journal-contract-runs.d.ts +9 -0
  370. package/vendor/dynamic-workflow/testing/journal-contract-runs.d.ts.map +1 -0
  371. package/vendor/dynamic-workflow/testing/journal-contract-runs.js +396 -0
  372. package/vendor/dynamic-workflow/testing/journal-contract-script.d.ts +12 -0
  373. package/vendor/dynamic-workflow/testing/journal-contract-script.d.ts.map +1 -0
  374. package/vendor/dynamic-workflow/testing/journal-contract-script.js +82 -0
  375. package/vendor/dynamic-workflow/testing/journal-contract.d.ts +15 -0
  376. package/vendor/dynamic-workflow/testing/journal-contract.d.ts.map +1 -0
  377. package/vendor/dynamic-workflow/testing/journal-contract.js +31 -0
  378. package/vendor/dynamic-workflow-runtime/child-cell-streams.js +128 -0
  379. package/vendor/dynamic-workflow-runtime/child-entry-file.js +43 -0
  380. package/vendor/dynamic-workflow-runtime/child-source.js +299 -0
  381. package/vendor/dynamic-workflow-runtime/harness.js +302 -0
  382. package/vendor/dynamic-workflow-runtime/index.js +4 -0
  383. package/vendor/dynamic-workflow-runtime/protocol.js +2 -0
  384. package/vendor/mcode-host/dynamic-workflow-import.js +269 -0
  385. package/vendor/mcode-host/workflow-git-world-read.js +183 -0
  386. package/vendor/mcode-host/workflow-world-read.js +282 -0
@@ -0,0 +1,60 @@
1
+ import type { WorkflowProgram } from "../compiler/compile.js";
2
+ import type { SiteTable } from "./sites.js";
3
+ import type { OrderOracle, OrderTrace } from "./causality-order-types.js";
4
+ export { UNPHASED_ID, type JumpKind, type StructuralRegionKind, type TraceRegionKind, } from "./constants.js";
5
+ export type { ActorEvent, ControlFact, IssueEvent, JumpEvent, MarkEvent, OrderEvent, OrderRegion, OrderTrace, PhaseInfo, SettleEvent, } from "./causality-order-types.js";
6
+ /**
7
+ * The ordering trace: one evaluation-order walk over the authored script body that
8
+ * records WHEN each step is issued, WHERE each `await` barrier sits, and which
9
+ * syntactic region encloses each event. It is the only new machinery the causality
10
+ * graph needs.
11
+ *
12
+ * This module reads the site table, the AST, and the taint pass's ORACLE facts. It
13
+ * collects nothing into the site table and the oracle is keyed by source position, so
14
+ * every site id stays bit-for-bit identical.
15
+ *
16
+ * Await resolution has two halves:
17
+ *
18
+ * - **syntactic** — the steps ISSUED WHILE EVALUATING the awaited expression settle
19
+ * certainly. That one rule covers `await x.ask(…)`, `await Promise.all(xs.map(…))`
20
+ * and `await helper()` uniformly, and it is all of phase 1.
21
+ * - **the oracle** — the step labels the awaited VALUE carries, which is what resolves a
22
+ * promise stored in a variable, passed into a helper, or joined. Split into certain and
23
+ * may-claims by the settle-certainty rule; see `claimAt` (causality-order-settle.ts).
24
+ *
25
+ * The barrier covers the union, and widens over everything in flight only when BOTH halves
26
+ * are empty (`await 5`, an unknown call's promise). Widening over-orders, which understates
27
+ * parallelism — the honest direction. UNDER-ordering is the one thing this walk must never
28
+ * do, and phase 1 did: on `await Promise.all([stored, fresh])` the syntactic half found
29
+ * `fresh`, so the barrier never widened and `stored` was left unsettled, inventing
30
+ * concurrency the script does not have (order-mixed-join-stored-promise).
31
+ *
32
+ * Function bodies run only when called, so the walk never descends into a
33
+ * function-like node on its own; it inlines the body at each call site instead. WHICH
34
+ * bodies a call invokes is not guessed from syntax: the walk reads the CALL ORACLE
35
+ * (`OrderOracle.applications`) — the functions
36
+ * the converged taint interpreter applied at that node, as callee (direct, through a
37
+ * parameter, a field, a class member) or as an argument a library may invoke (a registry
38
+ * `each` / `once` entry, or the keystone default). A helper called twice therefore
39
+ * contributes two issue events for the same step id (phase 1 has one step per site;
40
+ * per-call-site specialization is phase 3). Recursion is precomputed as call-graph
41
+ * self-reachability over the same oracle: a recursive function's inlined body gets a
42
+ * `loop` region and re-entry is cut, which is what turns recursion into the same
43
+ * self-arrow any other sequential repetition gets. The end-of-walk sweep is left with
44
+ * bodies no call ever applies — genuine dead code.
45
+ *
46
+ * The trace is also a STRUCTURED CONTROL TREE read in pre-order: besides the ordering regions above it
47
+ * records the structural ones — `choice` grouping the arms of one if / ternary / switch /
48
+ * short-circuit, `call` for each inlined body, `try` / `attempt` / `catch` / `finally` —
49
+ * and two extra leaves, `mark` (a phase marker evaluated) and `jump` (an unstructured
50
+ * transfer with its target region already resolved). The causality projection looks
51
+ * through all of it; the control-flow projection is built from it.
52
+ *
53
+ * 拆分:本文件顶到 oxlint max-lines 上限(400 行),走查按职责拆成兄弟模块——
54
+ * causality-order-types(产物类型)、-state(显式共享状态 + 原语)、-settle(await 屏障与
55
+ * 神谕读取)、-walk(节点访问器)、-loops(循环)、-calls(调用与内联)、-functions(函数
56
+ * 解析)。这里只剩编排:建状态、走根语句表、收尾扫尾。公开面一个不改。
57
+ */
58
+ /** Walk the authored body in evaluation order and record the ordering trace. */
59
+ export declare function traceOrder(workflow: WorkflowProgram, table: SiteTable, oracle: OrderOracle): OrderTrace;
60
+ //# sourceMappingURL=causality-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"causality-order.d.ts","sourceRoot":"","sources":["../../src/analysis/causality-order.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAS1E,OAAO,EACL,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,GACZ,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,gFAAgF;AAChF,wBAAgB,UAAU,CACxB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,WAAW,GAClB,UAAU,CA+CZ"}
@@ -0,0 +1,110 @@
1
+ import { UNPHASED_ID } from "./constants.js";
2
+ import { enclosingFunctions, functionName } from "./causality-order-functions.js";
3
+ import { createTraceState, issue, locOf, openRegion } from "./causality-order-state.js";
4
+ import { walkNode, walkStatements } from "./causality-order-walk.js";
5
+ // 追踪词汇(区域种类、跳转种类、兜底阶段 id)定义在 constants.ts——那个文件不 import
6
+ // `typescript`,纯投影模块(causality-graph / flow-phase / phase-graph)与浏览器端的
7
+ // `./projections` 桶都从那里取值。这里原样再导出,
8
+ // 既有的 `from "./causality-order.js"` 引用一个不改。
9
+ export { UNPHASED_ID, } from "./constants.js";
10
+ /**
11
+ * The ordering trace: one evaluation-order walk over the authored script body that
12
+ * records WHEN each step is issued, WHERE each `await` barrier sits, and which
13
+ * syntactic region encloses each event. It is the only new machinery the causality
14
+ * graph needs.
15
+ *
16
+ * This module reads the site table, the AST, and the taint pass's ORACLE facts. It
17
+ * collects nothing into the site table and the oracle is keyed by source position, so
18
+ * every site id stays bit-for-bit identical.
19
+ *
20
+ * Await resolution has two halves:
21
+ *
22
+ * - **syntactic** — the steps ISSUED WHILE EVALUATING the awaited expression settle
23
+ * certainly. That one rule covers `await x.ask(…)`, `await Promise.all(xs.map(…))`
24
+ * and `await helper()` uniformly, and it is all of phase 1.
25
+ * - **the oracle** — the step labels the awaited VALUE carries, which is what resolves a
26
+ * promise stored in a variable, passed into a helper, or joined. Split into certain and
27
+ * may-claims by the settle-certainty rule; see `claimAt` (causality-order-settle.ts).
28
+ *
29
+ * The barrier covers the union, and widens over everything in flight only when BOTH halves
30
+ * are empty (`await 5`, an unknown call's promise). Widening over-orders, which understates
31
+ * parallelism — the honest direction. UNDER-ordering is the one thing this walk must never
32
+ * do, and phase 1 did: on `await Promise.all([stored, fresh])` the syntactic half found
33
+ * `fresh`, so the barrier never widened and `stored` was left unsettled, inventing
34
+ * concurrency the script does not have (order-mixed-join-stored-promise).
35
+ *
36
+ * Function bodies run only when called, so the walk never descends into a
37
+ * function-like node on its own; it inlines the body at each call site instead. WHICH
38
+ * bodies a call invokes is not guessed from syntax: the walk reads the CALL ORACLE
39
+ * (`OrderOracle.applications`) — the functions
40
+ * the converged taint interpreter applied at that node, as callee (direct, through a
41
+ * parameter, a field, a class member) or as an argument a library may invoke (a registry
42
+ * `each` / `once` entry, or the keystone default). A helper called twice therefore
43
+ * contributes two issue events for the same step id (phase 1 has one step per site;
44
+ * per-call-site specialization is phase 3). Recursion is precomputed as call-graph
45
+ * self-reachability over the same oracle: a recursive function's inlined body gets a
46
+ * `loop` region and re-entry is cut, which is what turns recursion into the same
47
+ * self-arrow any other sequential repetition gets. The end-of-walk sweep is left with
48
+ * bodies no call ever applies — genuine dead code.
49
+ *
50
+ * The trace is also a STRUCTURED CONTROL TREE read in pre-order: besides the ordering regions above it
51
+ * records the structural ones — `choice` grouping the arms of one if / ternary / switch /
52
+ * short-circuit, `call` for each inlined body, `try` / `attempt` / `catch` / `finally` —
53
+ * and two extra leaves, `mark` (a phase marker evaluated) and `jump` (an unstructured
54
+ * transfer with its target region already resolved). The causality projection looks
55
+ * through all of it; the control-flow projection is built from it.
56
+ *
57
+ * 拆分:本文件顶到 oxlint max-lines 上限(400 行),走查按职责拆成兄弟模块——
58
+ * causality-order-types(产物类型)、-state(显式共享状态 + 原语)、-settle(await 屏障与
59
+ * 神谕读取)、-walk(节点访问器)、-loops(循环)、-calls(调用与内联)、-functions(函数
60
+ * 解析)。这里只剩编排:建状态、走根语句表、收尾扫尾。公开面一个不改。
61
+ */
62
+ /** Walk the authored body in evaluation order and record the ordering trace. */
63
+ export function traceOrder(workflow, table, oracle) {
64
+ const state = createTraceState(workflow, table, oracle, walkNode);
65
+ const { controls, events, fnStack, issued, phases, regions, returnTargets, root, walkedFns } = state;
66
+ walkStatements(state, state.body.statements, [root]);
67
+ // The sweep and the terminal fallback are outside every marker's extent — a body
68
+ // nothing called has no call site to inherit a phase from. (`walkStatements` has
69
+ // already restored the root value here; the assignment is the contract, not a fix.)
70
+ state.currentPhase = UNPHASED_ID;
71
+ // Sweep: a step inside a function nothing called (a `.then` callback, a method
72
+ // reached dynamically, dead code) still needs a position and a region. Walk the
73
+ // narrowest un-walked enclosing function, in site order, to a fixpoint. The region
74
+ // is `branch` because we cannot show the body runs at all.
75
+ const stepSites = [
76
+ ...table.asks,
77
+ ...table.worldReads,
78
+ ...table.holes.filter((site) => site.body === undefined),
79
+ ].sort((a, b) => a.order - b.order);
80
+ let progress = true;
81
+ while (progress) {
82
+ progress = false;
83
+ for (const site of stepSites) {
84
+ if (issued.has(site.id))
85
+ continue;
86
+ const owner = enclosingFunctions(site.call).find((fn) => !walkedFns.has(fn));
87
+ if (owner === undefined)
88
+ continue;
89
+ walkedFns.add(owner);
90
+ fnStack.push(owner);
91
+ const detached = openRegion(state, "branch", root, {
92
+ detached: true,
93
+ entered: false,
94
+ loc: locOf(state, owner),
95
+ ...(functionName(owner) === undefined ? {} : { label: functionName(owner) }),
96
+ });
97
+ returnTargets.push(detached); // a `return` here ends the detached body, not the script
98
+ state.walk(owner.body, [root, detached]);
99
+ returnTargets.pop();
100
+ fnStack.pop();
101
+ progress = true;
102
+ }
103
+ }
104
+ // Anything still unreached (a site inside a construct the walk cannot place) gets a
105
+ // terminal issue in the root region, so every step has a position.
106
+ for (const site of stepSites)
107
+ if (!issued.has(site.id))
108
+ issue(state, site.id, [root]);
109
+ return { controls, events, phases, regions, root };
110
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Type-aware transitive reduction over the happens-before relation. With one arrow
3
+ * style on screen, reduction carries the whole burden of keeping the picture readable —
4
+ * and it must stay TYPED even though rendering is not. A uniform reduction over the
5
+ * untyped relation deletes the wrong arrows: in `planner-reviewer`, `scan → judge` is
6
+ * the genuine data dependency and the incidental ordering path
7
+ * `scan → plan → review → judge` transitively implies it, so a uniform pass would keep
8
+ * the incidental chain and drop the meaningful edge.
9
+ *
10
+ * Precedence: `data` = `control` > `fifo` > `seq`.
11
+ *
12
+ * 修复记录
13
+ *
14
+ * 一、前向边的删边决策改为逐边对 SURVIVING 集判定。旧实现对 ORIGINAL 关系一次性批量
15
+ * 删边,再用单调恢复环节补回「见证路径自身被删掉」的边——恢复一条边会重新给其他被删边
16
+ * 提供见证,但没有任何一步再删它们,于是在带环输入上收敛到严重过度恢复的边集(真实症状:
17
+ * jsonl-db 优化循环的图 66 条前向边里 55 条被其余边蕴含)。phase 1 的「一站点一步」规则
18
+ * 让共享 helper(循环前后各调一次)产出双向前向边,环是常态而非异常,删边算法必须在环上
19
+ * 保持无冗余。逐边对存活集判定后天然不需要恢复环节:每条被删的边在删除当刻都有存活见证,
20
+ * 后删的边不会作废先前的删除——后删边自己的见证可以代入先前见证(kind 允许集沿
21
+ * seq ⊇ fifo ⊇ data=control 单调收缩,代入后强度只增不减)。DAG 上与唯一的类型化传递
22
+ * 归约逐边一致,只有带残环的图行为改变。
23
+ *
24
+ * 二、新增 carry 最小化(旧规则「carry 永不删」作废)。carry 边断言 A@k → B@k+1,而
25
+ * 「k 轮内前向路径 → 恰好一跳 carry → k+1 轮内前向路径」的组合断言完全相同的事实,故有
26
+ * 此见证的 carry 是纯冗余墨水(8 步循环体曾画出 19 条 back-edge,前向链 + 一条回边就说
27
+ * 尽了)。逐跳按类型判强弱:见证的每一跳(carry 跳按其底层 kind,即回边被改型前的原始
28
+ * kind)必须不弱于被删 carry 自己的底层 kind;恰好一跳 carry,两跳断言的是 k → k+2,
29
+ * 严格更弱。与前向阶段同样逐边对存活集判定,互为见证的两条回边不会同时消失——闭合过环
30
+ * 的循环仍然闭合。
31
+ */
32
+ export type OrderKind = "data" | "control" | "fifo" | "seq" | "carry";
33
+ /**
34
+ * Dedup precedence when several facts hold for one ordered pair — the same kind lattice
35
+ * {@link JUSTIFIED_BY} reads, in the shape a dedup needs. Lives here rather than beside
36
+ * either consumer because the step-level dedup and the phase quotient's must agree by
37
+ * construction.
38
+ */
39
+ export declare const KIND_RANK: Record<OrderKind, number>;
40
+ export interface ReducibleEdge {
41
+ from: string;
42
+ to: string;
43
+ kind: OrderKind;
44
+ /**
45
+ * `carry` 边的底层 kind:回边在改型成 carry 之前原本的前向 kind。carry 最小化按它
46
+ * 判断见证需要多强;缺席时按 hard(data)处理——宁多留一条回边,不误删数据事实。
47
+ */
48
+ carryOf?: Exclude<OrderKind, "carry">;
49
+ }
50
+ /**
51
+ * Drop edges a strong-enough path of surviving edges already implies — forward edges
52
+ * first (each decided against the surviving set, in input order), then `carry` edges
53
+ * against the surviving result (one forward leg, exactly one carry hop, one forward
54
+ * leg). Deterministic given input order; on a DAG the forward phase is the unique
55
+ * typed transitive reduction, and on residual cycles (one step issued from several
56
+ * call sites) both phases stay sound — every drop has a surviving witness — and
57
+ * irredundant.
58
+ */
59
+ export declare function reduceOrdering<E extends ReducibleEdge>(edges: readonly E[]): E[];
60
+ //# sourceMappingURL=causality-reduce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"causality-reduce.d.ts","sourceRoot":"","sources":["../../src/analysis/causality-reduce.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAM/C,CAAC;AAGF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;CACvC;AAkCD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAwGhF"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Type-aware transitive reduction over the happens-before relation. With one arrow
3
+ * style on screen, reduction carries the whole burden of keeping the picture readable —
4
+ * and it must stay TYPED even though rendering is not. A uniform reduction over the
5
+ * untyped relation deletes the wrong arrows: in `planner-reviewer`, `scan → judge` is
6
+ * the genuine data dependency and the incidental ordering path
7
+ * `scan → plan → review → judge` transitively implies it, so a uniform pass would keep
8
+ * the incidental chain and drop the meaningful edge.
9
+ *
10
+ * Precedence: `data` = `control` > `fifo` > `seq`.
11
+ *
12
+ * 修复记录
13
+ *
14
+ * 一、前向边的删边决策改为逐边对 SURVIVING 集判定。旧实现对 ORIGINAL 关系一次性批量
15
+ * 删边,再用单调恢复环节补回「见证路径自身被删掉」的边——恢复一条边会重新给其他被删边
16
+ * 提供见证,但没有任何一步再删它们,于是在带环输入上收敛到严重过度恢复的边集(真实症状:
17
+ * jsonl-db 优化循环的图 66 条前向边里 55 条被其余边蕴含)。phase 1 的「一站点一步」规则
18
+ * 让共享 helper(循环前后各调一次)产出双向前向边,环是常态而非异常,删边算法必须在环上
19
+ * 保持无冗余。逐边对存活集判定后天然不需要恢复环节:每条被删的边在删除当刻都有存活见证,
20
+ * 后删的边不会作废先前的删除——后删边自己的见证可以代入先前见证(kind 允许集沿
21
+ * seq ⊇ fifo ⊇ data=control 单调收缩,代入后强度只增不减)。DAG 上与唯一的类型化传递
22
+ * 归约逐边一致,只有带残环的图行为改变。
23
+ *
24
+ * 二、新增 carry 最小化(旧规则「carry 永不删」作废)。carry 边断言 A@k → B@k+1,而
25
+ * 「k 轮内前向路径 → 恰好一跳 carry → k+1 轮内前向路径」的组合断言完全相同的事实,故有
26
+ * 此见证的 carry 是纯冗余墨水(8 步循环体曾画出 19 条 back-edge,前向链 + 一条回边就说
27
+ * 尽了)。逐跳按类型判强弱:见证的每一跳(carry 跳按其底层 kind,即回边被改型前的原始
28
+ * kind)必须不弱于被删 carry 自己的底层 kind;恰好一跳 carry,两跳断言的是 k → k+2,
29
+ * 严格更弱。与前向阶段同样逐边对存活集判定,互为见证的两条回边不会同时消失——闭合过环
30
+ * 的循环仍然闭合。
31
+ */
32
+ /**
33
+ * Dedup precedence when several facts hold for one ordered pair — the same kind lattice
34
+ * {@link JUSTIFIED_BY} reads, in the shape a dedup needs. Lives here rather than beside
35
+ * either consumer because the step-level dedup and the phase quotient's must agree by
36
+ * construction.
37
+ */
38
+ export const KIND_RANK = {
39
+ carry: 0,
40
+ control: 4,
41
+ data: 3,
42
+ fifo: 2,
43
+ seq: 1,
44
+ };
45
+ /** Kinds a justifying path may consist of, per the kind of the edge under test. */
46
+ const JUSTIFIED_BY = {
47
+ // A hard dependency yields only to a path of hard dependencies. `data` and `control`
48
+ // are both non-removable — no refactoring can make a consumer precede its producer,
49
+ // or a guarded step precede its guard — so either one justifies either one. What this
50
+ // does NOT yield to is `seq`/`fifo`: those are incidental serialization the reader is
51
+ // meant to be able to delete mentally, and the constraint must survive that deletion.
52
+ // This is what kills the phantom producer→sink edges the actor projection emitted
53
+ // through relays, and what keeps `scan → judge` alive against the incidental
54
+ // `scan → plan → review → judge`.
55
+ //
56
+ // Bug: `data` originally yielded to `data` alone, which kept every data fact that a
57
+ // control edge already implied. In a refine-until-approved loop that is most of the
58
+ // picture — `initial plan → revision` reads as a second arrow on top of
59
+ // `initial plan → initial review → (guards) → revision`, saying nothing the chain
60
+ // did not. Ordering-redundant arrows are pure ink here, because the renderer draws
61
+ // every kind identically; a data edge earns its place only by asserting an order no
62
+ // hard path already asserts.
63
+ control: new Set(["data", "control"]),
64
+ data: new Set(["data", "control"]),
65
+ // FIFO yields to a real dependency or to another FIFO hop (a same-actor chain
66
+ // already implies its own transitive closure), but never to bare serialization.
67
+ // For example, `assess → refine → wrap up` already implies `assess → wrap up`.
68
+ fifo: new Set(["data", "control", "fifo"]),
69
+ // Pure serialization yields to any ordering at all.
70
+ seq: new Set(["data", "control", "fifo", "seq"]),
71
+ };
72
+ /** carry 边的底层 kind;缺席按 hard 处理(见 {@link ReducibleEdge.carryOf})。 */
73
+ const underlyingOf = (edge) => edge.carryOf ?? "data";
74
+ /**
75
+ * Drop edges a strong-enough path of surviving edges already implies — forward edges
76
+ * first (each decided against the surviving set, in input order), then `carry` edges
77
+ * against the surviving result (one forward leg, exactly one carry hop, one forward
78
+ * leg). Deterministic given input order; on a DAG the forward phase is the unique
79
+ * typed transitive reduction, and on residual cycles (one step issued from several
80
+ * call sites) both phases stay sound — every drop has a surviving witness — and
81
+ * irredundant.
82
+ */
83
+ export function reduceOrdering(edges) {
84
+ const dropped = new Set();
85
+ const forward = edges.filter((edge) => edge.kind !== "carry");
86
+ const carries = edges.filter((edge) => edge.kind === "carry");
87
+ const outgoing = new Map();
88
+ for (const edge of forward) {
89
+ const list = outgoing.get(edge.from);
90
+ if (list === undefined)
91
+ outgoing.set(edge.from, [edge]);
92
+ else
93
+ list.push(edge);
94
+ }
95
+ /**
96
+ * Is `to` reachable from `from` over surviving `allowed`-kind forward edges without
97
+ * using any direct `from → to` hop? Any such path has length ≥ 2, which is exactly
98
+ * the reduction condition. Cycle-safe: the visited set bounds the walk.
99
+ *
100
+ * Deliberately certainty-BLIND. A certainty-aware variant (an unconditional ordering
101
+ * may only yield to an unconditional path) is strictly sounder per-execution, and was
102
+ * tried: it restores an edge from every ancestor of the returned artifact in 30 corpus
103
+ * fixtures, because a path through any conditional step stops justifying anything.
104
+ * That is precisely the phantom producer→sink noise the design exists to remove, and
105
+ * the reader is not doing per-execution case analysis — they read a chain as a chain.
106
+ * Certainty stays a model-only property of the surviving edges.
107
+ */
108
+ const reaches = (from, to, allowed) => {
109
+ const seen = new Set([from]);
110
+ const stack = [];
111
+ for (const edge of outgoing.get(from) ?? []) {
112
+ if (edge.to === to || !allowed.has(edge.kind) || dropped.has(edge))
113
+ continue;
114
+ if (!seen.has(edge.to)) {
115
+ seen.add(edge.to);
116
+ stack.push(edge.to);
117
+ }
118
+ }
119
+ while (stack.length > 0) {
120
+ const node = stack.pop();
121
+ for (const edge of outgoing.get(node) ?? []) {
122
+ if (!allowed.has(edge.kind) || dropped.has(edge))
123
+ continue;
124
+ if (edge.to === to)
125
+ return true;
126
+ if (!seen.has(edge.to)) {
127
+ seen.add(edge.to);
128
+ stack.push(edge.to);
129
+ }
130
+ }
131
+ }
132
+ return false;
133
+ };
134
+ for (const edge of forward) {
135
+ const allowed = JUSTIFIED_BY[edge.kind];
136
+ if (allowed === undefined)
137
+ continue; // defensive: `carry` is already filtered out
138
+ if (edge.from === edge.to)
139
+ continue;
140
+ if (reaches(edge.from, edge.to, allowed))
141
+ dropped.add(edge);
142
+ }
143
+ const carryOutgoing = new Map();
144
+ for (const edge of carries) {
145
+ const list = carryOutgoing.get(edge.from);
146
+ if (list === undefined)
147
+ carryOutgoing.set(edge.from, [edge]);
148
+ else
149
+ list.push(edge);
150
+ }
151
+ /**
152
+ * Does a surviving composition `forward* → one carry hop → forward*` (every hop of
153
+ * an `allowed` kind, the carry hop judged by its underlying kind) connect `from` to
154
+ * `to` without using `candidate` itself? Two-state walk: state 1 is "the carry hop
155
+ * is spent". Parallel edges cannot occur (facts are deduped per ordered pair before
156
+ * back-edge typing), so any witness found here has length ≥ 2 by construction.
157
+ */
158
+ const carryWitness = (candidate, allowed) => {
159
+ const seen = new Set([`${candidate.from}0`]);
160
+ const stack = [[candidate.from, 0]];
161
+ while (stack.length > 0) {
162
+ const [node, spent] = stack.pop();
163
+ const push = (next, state) => {
164
+ if (state === 1 && next === candidate.to)
165
+ return true;
166
+ const key = `${next}${state}`;
167
+ if (!seen.has(key)) {
168
+ seen.add(key);
169
+ stack.push([next, state]);
170
+ }
171
+ return false;
172
+ };
173
+ for (const edge of outgoing.get(node) ?? []) {
174
+ if (!allowed.has(edge.kind) || dropped.has(edge))
175
+ continue;
176
+ if (push(edge.to, spent))
177
+ return true;
178
+ }
179
+ if (spent === 1)
180
+ continue;
181
+ for (const edge of carryOutgoing.get(node) ?? []) {
182
+ if (edge === candidate || dropped.has(edge) || !allowed.has(underlyingOf(edge)))
183
+ continue;
184
+ if (push(edge.to, 1))
185
+ return true;
186
+ }
187
+ }
188
+ return false;
189
+ };
190
+ for (const edge of carries) {
191
+ const allowed = JUSTIFIED_BY[underlyingOf(edge)];
192
+ if (allowed === undefined)
193
+ continue;
194
+ if (carryWitness(edge, allowed))
195
+ dropped.add(edge);
196
+ }
197
+ return edges.filter((edge) => !dropped.has(edge));
198
+ }
@@ -0,0 +1,47 @@
1
+ import ts from "typescript";
2
+ import { type AbstractValue } from "./domain.js";
3
+ import type { EvalContext, Evaluator } from "./taint.js";
4
+ /**
5
+ * Class modeling: one shared abstract instance per class, evaluated flow-insensitively.
6
+ * Split out of the core evaluator (taint.ts) like calls.ts / literals.ts — same
7
+ * `Evaluator` instance, free-function shape.
8
+ * Field/static initializers and static blocks evaluate with `this` bound to the instance;
9
+ * constructors, methods and accessors are tracked functions whose `this` resolves to it;
10
+ * `new C(args)` applies the constructor and returns a reference to the shared instance;
11
+ * `extends` weak-merges the base instance in. All instances of a class are conflated
12
+ * (weak): a write through any instance, through `this`, or through the class name is
13
+ * visible through every other.
14
+ */
15
+ /** Evaluate every class body once per fixpoint pass (driven from Evaluator.iterate). */
16
+ export declare function evalClasses(ev: Evaluator): void;
17
+ /**
18
+ * The class node an expression names (a class-name identifier, or a `this`/`super` that
19
+ * resolves to one), or undefined for a non-class expression. `new C()`, `super(...)` and
20
+ * every class-name read go through this so static and instance access conflate into the
21
+ * one shared instance.
22
+ */
23
+ export declare function resolveClassNode(ev: Evaluator, expr: ts.Expression): ts.Node | undefined;
24
+ /** The class node a symbol declares, following alias / field bindings to a class. */
25
+ export declare function classNodeOfSymbol(ev: Evaluator, sym: ts.Symbol, seen?: Set<ts.Symbol>): ts.Node | undefined;
26
+ /**
27
+ * The constructor to apply for `new C(...)`: C's own constructor (with a body), else the
28
+ * nearest inherited one up the `extends` chain (an implicit super forwards the arguments).
29
+ * Overload signatures without a body are skipped. Cycle-guarded.
30
+ */
31
+ export declare function classConstructor(ev: Evaluator, cls: ts.Node, seen?: Set<ts.Node>): ts.ConstructorDeclaration | undefined;
32
+ /** The shared instance of the class lexically enclosing `node`, or undefined. */
33
+ export declare function enclosingClassInstance(ev: Evaluator, node: ts.Node): AbstractValue | undefined;
34
+ /**
35
+ * The shared instance of the BASE class of the class lexically enclosing `node` — the value
36
+ * `super` denotes inside a derived method: `super.m()` dispatches to the base method summary
37
+ * and `super.x` reads the base field. Only the innermost enclosing class's (resolvable) base
38
+ * counts. Undefined outside a derived class or when the base is an unresolvable heritage.
39
+ */
40
+ export declare function enclosingBaseInstance(ev: Evaluator, node: ts.Node): AbstractValue | undefined;
41
+ /** True iff a class has an `extends` clause whose base cannot be resolved to a class node (a
42
+ * mixin CALL, `class D extends mix(Base)`). The inherited constructor is then unreachable, so
43
+ * `new D(args)` must over-approximate the argument flow (see applyMixinConstructor). */
44
+ export declare function hasUnresolvedHeritage(ev: Evaluator, cls: ts.Node): boolean;
45
+ /** Apply the base-class constructor for a `super(args)` call inside a derived ctor. */
46
+ export declare function applySuperCall(ev: Evaluator, node: ts.CallExpression, ctx: EvalContext): void;
47
+ //# sourceMappingURL=classes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/analysis/classes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAQL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;;;;;GAUG;AAEH,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAG/C;AAiGD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,GAAG,SAAS,CAGxF;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,iBAAuB,GAAG,EAAE,CAAC,IAAI,GAAG,SAAS,CAiBjH;AAcD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,EAAE,CAAC,IAAI,EACZ,IAAI,eAAqB,GACxB,EAAE,CAAC,sBAAsB,GAAG,SAAS,CAiBvC;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa,GAAG,SAAS,CAK9F;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa,GAAG,SAAS,CAa7F;AAED;;wFAEwF;AACxF,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAQ1E;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAkB7F"}