@sunshaobei/dsh-workflow 0.0.0-stage → 2.1.2

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 +67 -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,154 @@
1
+ import ts from "typescript";
2
+ import { isGlobalLibValue } from "./callbacks.js";
3
+ import { boundIdentifiers } from "./causality-order-functions.js";
4
+ /** The frame a fresh settle lands in: the innermost open one. */
5
+ export function currentFrame(state) {
6
+ return state.frames[state.frames.length - 1];
7
+ }
8
+ /** True iff some frame on the stack has settled `step` — the freshness test. */
9
+ export function isVisiblySettled(state, step) {
10
+ return state.frames.some((frame) => frame.settled.has(step));
11
+ }
12
+ /** The strand an `issue` belongs to: the innermost one still being walked. */
13
+ export function innermostOpenStrand(state) {
14
+ for (let i = state.strands.length - 1; i >= 0; i -= 1) {
15
+ const record = state.strands[i];
16
+ if (!record.closed)
17
+ return record;
18
+ }
19
+ return undefined;
20
+ }
21
+ /** Spawn a strand on `region`: record it and push its frame. */
22
+ export function openStrand(state, region) {
23
+ const record = {
24
+ at: state.strands.length,
25
+ closed: false,
26
+ issued: new Set(),
27
+ region,
28
+ summary: new Set(),
29
+ };
30
+ state.strands.push(record);
31
+ state.frames.push({ region, settled: new Set() });
32
+ return record;
33
+ }
34
+ /** Close a strand: pop its frame and keep what it awaited as the strand's summary. */
35
+ export function closeStrand(state, record) {
36
+ const frame = state.frames.pop();
37
+ record.summary = frame?.settled ?? new Set();
38
+ record.closed = true;
39
+ }
40
+ /** The walk's strand counter: the mark a caller takes before evaluating an expression. */
41
+ export function strandMark(state) {
42
+ return state.strands.length;
43
+ }
44
+ /** Strand regions spawned at or after `mark`, in spawn order. */
45
+ export function strandsSince(state, mark) {
46
+ return state.strands.filter((record) => record.at >= mark).map((record) => record.region);
47
+ }
48
+ /**
49
+ * Bind strand regions to the identifiers a declaration or assignment introduces — the
50
+ * syntactic half of the join, the exact shape `bindSteps` gives steps and for the same
51
+ * reason: `const work = ids.map(async …)` issues nothing at the declaration, so only the
52
+ * binding can tell a later `await Promise.all(work)` which strands `work` stands for.
53
+ */
54
+ export function bindStrands(state, name, regions) {
55
+ if (regions.length === 0)
56
+ return;
57
+ for (const identifier of boundIdentifiers(name)) {
58
+ const symbol = state.checker.getSymbolAtLocation(identifier);
59
+ if (symbol === undefined)
60
+ continue;
61
+ const set = state.strandsBySymbol.get(symbol) ?? new Set();
62
+ for (const region of regions)
63
+ set.add(region);
64
+ state.strandsBySymbol.set(symbol, set);
65
+ }
66
+ }
67
+ /** True iff the applied function carries the `async` modifier — what makes a body a strand. */
68
+ export function isAsyncFunction(decl) {
69
+ const { modifiers } = decl;
70
+ return modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.AsyncKeyword) ?? false;
71
+ }
72
+ /** The promise combinators that adopt each argument, so each argument is an awaited position. */
73
+ const COMBINATORS = new Set(["all", "allSettled", "race", "any"]);
74
+ function isPromiseCombinator(state, node) {
75
+ const callee = node.expression;
76
+ if (!ts.isPropertyAccessExpression(callee) || !COMBINATORS.has(callee.name.text))
77
+ return false;
78
+ return isGlobalLibValue(callee.expression, "Promise", state.checker, state.program);
79
+ }
80
+ /**
81
+ * The identifiers in an AWAITED POSITION of an awaited expression: the operand itself,
82
+ * each argument of `Promise.all` / `allSettled` / `race` / `any`, each element of an array
83
+ * literal, a spread's operand, and through parentheses and type assertions. Every other
84
+ * expression is OPAQUE — this mirrors how the runtime adopts promises, and it is what
85
+ * keeps `await f(aWork.length)` from joining the strands `aWork` holds.
86
+ */
87
+ function awaitedIdentifiers(state, operand) {
88
+ const out = [];
89
+ const scan = (node) => {
90
+ if (ts.isParenthesizedExpression(node) ||
91
+ ts.isAsExpression(node) ||
92
+ ts.isSatisfiesExpression(node) ||
93
+ ts.isNonNullExpression(node) ||
94
+ ts.isSpreadElement(node)) {
95
+ scan(node.expression);
96
+ return;
97
+ }
98
+ if (ts.isIdentifier(node)) {
99
+ out.push(node);
100
+ return;
101
+ }
102
+ if (ts.isArrayLiteralExpression(node)) {
103
+ for (const element of node.elements)
104
+ scan(element);
105
+ return;
106
+ }
107
+ if (ts.isCallExpression(node) && isPromiseCombinator(state, node)) {
108
+ for (const argument of node.arguments)
109
+ scan(argument);
110
+ }
111
+ };
112
+ scan(operand);
113
+ return out;
114
+ }
115
+ /**
116
+ * The strands a barrier waits for, split by the certainty each one's summary settles with,
117
+ * and MARKED JOINED so a second await of the same promise adds nothing (exactly as a
118
+ * second settle of one step already does).
119
+ *
120
+ * Two ways in. SYNTACTIC — spawned while the operand was evaluated, or bound to an
121
+ * identifier in an awaited position of it — settles the summary certainly: the await
122
+ * provably waits for that activation. LIFTED — a closed, not-yet-joined strand one of whose
123
+ * issued steps this barrier claims — settles it with the certainty the claim came in with:
124
+ * the promise reached the await through a container or a helper, and all we know is that
125
+ * something the strand issued has settled.
126
+ */
127
+ export function joinStrands(state, certain, maybe, awaited) {
128
+ const joins = { certain: [], maybe: [] };
129
+ const take = (region, side) => {
130
+ if (state.joined.has(region))
131
+ return;
132
+ state.joined.add(region);
133
+ side.push(region);
134
+ };
135
+ if (awaited !== undefined) {
136
+ for (const region of strandsSince(state, awaited.mark))
137
+ take(region, joins.certain);
138
+ for (const identifier of awaitedIdentifiers(state, awaited.operand)) {
139
+ const symbol = state.checker.getSymbolAtLocation(identifier);
140
+ const bound = symbol === undefined ? undefined : state.strandsBySymbol.get(symbol);
141
+ for (const region of bound ?? [])
142
+ take(region, joins.certain);
143
+ }
144
+ }
145
+ for (const record of state.strands) {
146
+ if (!record.closed || state.joined.has(record.region))
147
+ continue;
148
+ if (certain.some((step) => record.issued.has(step)))
149
+ take(record.region, joins.certain);
150
+ else if (maybe.some((step) => record.issued.has(step)))
151
+ take(record.region, joins.maybe);
152
+ }
153
+ return joins;
154
+ }
@@ -0,0 +1,174 @@
1
+ import type ts from "typescript";
2
+ import type { ScriptLoc } from "../compiler/compile.js";
3
+ import type { TaintOcc } from "./domain.js";
4
+ import type { ApplicationVia } from "./state.js";
5
+ import type { JumpKind, TraceRegionKind } from "./constants.js";
6
+ /**
7
+ * The taint facts this walk reads, narrowed to the two members it actually uses so the
8
+ * ordering pass does not depend on the whole emission surface. Produced by
9
+ * `TaintState.emitOracle` off the CONVERGED interpreter state (interpret.ts).
10
+ * Both maps are keyed by `node.getStart(scriptFile)`.
11
+ */
12
+ export interface OrderOracle {
13
+ /** Step occurrences the operand of each `await` carries. */
14
+ awaitSettles: Map<number, TaintOcc[]>;
15
+ /** Step occurrences each guard expression reads. */
16
+ guardReads: Map<number, TaintOcc[]>;
17
+ /**
18
+ * The call oracle: per call / `new` / tagged-template node, the script functions the
19
+ * interpreter applied there and how (`TaintState.applications`). The walk inlines exactly
20
+ * these bodies at exactly these sites.
21
+ */
22
+ applications: ReadonlyMap<ts.Node, ReadonlyMap<ts.Node, ApplicationVia>>;
23
+ }
24
+ export interface OrderRegion {
25
+ id: string;
26
+ kind: TraceRegionKind;
27
+ parent?: string;
28
+ loc?: ScriptLoc;
29
+ /** Derivable literal round count of a `for` loop; model-only (never displayed). */
30
+ bound?: number;
31
+ /** fanout: the iterated expression; loop: the recursive helper's name; call: the helper's name. */
32
+ label?: string;
33
+ /**
34
+ * True iff running the parent provably runs this region's body at least once: a
35
+ * `do…while` body, a `for` whose literal bound is positive, or an inlined call.
36
+ * Drives the certainty carve-out.
37
+ */
38
+ entered: boolean;
39
+ /** choice: one arm MUST run (if/else, ternary, switch with default). Absent = skippable. */
40
+ exhaustive?: boolean;
41
+ /**
42
+ * loop: a recursion SCC folded into a loop, not a loop statement. Only re-entrant calls
43
+ * (`recur` jumps) close it; its body completing normally is the helper returning.
44
+ */
45
+ recursive?: boolean;
46
+ /** choice: an arm completing normally continues into the next arm (switch). */
47
+ fallthrough?: boolean;
48
+ /**
49
+ * branch: a never-called function body the end-of-walk sweep placed here. It runs at
50
+ * an unknown point, if at all; its position in the stream is an artifact of the sweep.
51
+ */
52
+ detached?: boolean;
53
+ /**
54
+ * `call` / `fanout` only: this region is a STRAND — one asynchronous activation that
55
+ * runs alongside the body that spawned it (an inlined `async` body, or a deferred
56
+ * callback). Its `await`s suspend the strand, never the spawner, so the walk gives it a
57
+ * settled set of its own and the spawner learns of its completion only by awaiting its
58
+ * promise ({@link SettleEvent.joins}).
59
+ */
60
+ strand?: true;
61
+ }
62
+ /** A phase the walk reached: `phase#N` numbered by FIRST REACH of a new name. */
63
+ export interface PhaseInfo {
64
+ id: string;
65
+ /** The author's verbatim word. Always present — a nameless marker never mints a phase. */
66
+ name: string;
67
+ /** The first marker that minted this phase; later same-name markers do not move it. */
68
+ loc: ScriptLoc;
69
+ /**
70
+ * The filled hole whose body wrote this phase (docs/analysis.md「Sites」): a marker or a hole
71
+ * (open or filled) inside a body carries the innermost enclosing filled hole's id. Absent
72
+ * outside every fill — a top-level hole's own phase has none.
73
+ */
74
+ fill?: string;
75
+ }
76
+ /** A step's request was sent (the facade call expression was evaluated). */
77
+ export interface IssueEvent {
78
+ at: "issue";
79
+ step: string;
80
+ regions: readonly string[];
81
+ /**
82
+ * The phase current where the call was evaluated — {@link UNPHASED_ID} outside every
83
+ * marker's extent. Issue is the step's identity moment, so this is the whole of phase
84
+ * membership.
85
+ */
86
+ phase: string;
87
+ }
88
+ /** An `await` barrier: these steps' promises are known to have settled here. */
89
+ export interface SettleEvent {
90
+ at: "settle";
91
+ /**
92
+ * EMPTY when the barrier only joined strands: awaiting a strand whose summary is
93
+ * already settled (or empty) settles nothing new, but the join itself is a control-flow
94
+ * fact — it is where the strand's parked exits reconnect — so the event is still
95
+ * recorded. Readers iterate `steps` and see nothing; readers of {@link joins} see the
96
+ * join. `maybe` is meaningless on such an event and is written `false`.
97
+ */
98
+ steps: readonly string[];
99
+ /**
100
+ * True when this settle is a MAY-claim rather than a certainty. Two sources: the
101
+ * barrier widened (nothing resolvable settled here, so everything in flight is assumed
102
+ * to have), or the oracle's witness set was ambiguous — several witnesses, of which
103
+ * exactly one settles at runtime, or a single inexact one smeared through a container.
104
+ */
105
+ maybe: boolean;
106
+ /** Region chain the barrier sits in — a loop's carry edge needs to know. */
107
+ regions: readonly string[];
108
+ /**
109
+ * The STRAND regions this barrier waits for, in join order: the strands whose promises
110
+ * the awaited expression names (spawned while it was evaluated, or bound to an
111
+ * identifier in an awaited position) plus the ones lifted because a settled step was
112
+ * issued inside them. A strand joins once — a second await of the same promise lists
113
+ * nothing. Absent when the barrier joins no strand.
114
+ */
115
+ joins?: string[];
116
+ }
117
+ /** An `agent()` call was evaluated — the lane's creation point, for family depth. */
118
+ export interface ActorEvent {
119
+ at: "actor";
120
+ actor: string;
121
+ regions: readonly string[];
122
+ /**
123
+ * The phase current where the call was evaluated, as on {@link IssueEvent}: a lane's birth
124
+ * phase for the engine's lexical stamp (`collectSitePhases`). Not rendered in the core's
125
+ * text form — the `spawn` line predates it and the site-phase table has its own tests.
126
+ */
127
+ phase: string;
128
+ }
129
+ /** A `phase("…")` marker statement was evaluated: the current phase switched to `phase`. */
130
+ export interface MarkEvent {
131
+ at: "mark";
132
+ /** The phase current from here to the end of the enclosing statement list. */
133
+ phase: string;
134
+ regions: readonly string[];
135
+ }
136
+ /**
137
+ * An unstructured transfer of control, with its target already resolved to a region id so
138
+ * projections never touch the AST: `continue`/`break` name the `loop` (or, for a `break`
139
+ * inside a switch, the `choice`); `return` names the enclosing `call` / `fanout` /
140
+ * detached body, else the root; `throw` names the enclosing `attempt`, else the root
141
+ * (uncaught); `recur` is a recursive call cut at re-entry, naming the SCC's `loop`.
142
+ */
143
+ export interface JumpEvent {
144
+ at: "jump";
145
+ kind: JumpKind;
146
+ target: string;
147
+ regions: readonly string[];
148
+ /** The phase current where the jump was evaluated (a phase CFG edge leaves from here). */
149
+ phase: string;
150
+ }
151
+ export type OrderEvent = IssueEvent | SettleEvent | ActorEvent | MarkEvent | JumpEvent;
152
+ /** `controllers`' answers decide whether the steps inside `region` are issued. */
153
+ export interface ControlFact {
154
+ /** Controllers the analysis is sure of: a syntactic witness, or a singleton-exact one. */
155
+ controllers: readonly string[];
156
+ /** Controllers only the ambiguous half of the oracle claims; disjoint from the above. */
157
+ maybeControllers: readonly string[];
158
+ region: string;
159
+ }
160
+ export interface OrderTrace {
161
+ events: OrderEvent[];
162
+ regions: OrderRegion[];
163
+ controls: ControlFact[];
164
+ /** The root `seq` region id; every other region descends from it. */
165
+ root: string;
166
+ /**
167
+ * Phases the walk reached, in first-reach order. Empty for a script with no markers,
168
+ * which is what makes the whole phase vocabulary absent downstream. {@link UNPHASED_ID}
169
+ * is NOT listed here — it is synthetic, and the projection adds it only if it has
170
+ * members.
171
+ */
172
+ phases: PhaseInfo[];
173
+ }
174
+ //# sourceMappingURL=causality-order-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"causality-order-types.d.ts","sourceRoot":"","sources":["../../src/analysis/causality-order-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import ts from "typescript";
2
+ import { type TraceState } from "./causality-order-state.js";
3
+ /**
4
+ * Walk a statement list in order, threading the current phase with REST-OF-BLOCK
5
+ * extent: a marker statement re-points the local, every later statement in the list
6
+ * (and everything nested under it, inlined helper bodies included) inherits it, and the
7
+ * list's end restores what was current on entry. There is no other phase mechanism —
8
+ * every construct that holds a statement list routes through here.
9
+ *
10
+ * A marker NOT in a statement list (`if (x) phase("a");` without braces) is therefore
11
+ * inert: it has no rest-of-list to claim, which is the same "no effect, no diagnostic"
12
+ * status assigned to a marker at the tail of its block.
13
+ */
14
+ export declare function walkStatements(state: TraceState, statements: readonly ts.Statement[], chain: readonly string[]): void;
15
+ /** The node visitor: one evaluation-order step over `node`. Bound as `state.walk`. */
16
+ export declare function walkNode(state: TraceState, node: ts.Node, chain: readonly string[]): void;
17
+ //# sourceMappingURL=causality-order-walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"causality-order-walk.d.ts","sourceRoot":"","sources":["../../src/analysis/causality-order-walk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AA+CpC;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,EACnC,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,IAAI,CAiBN;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CA0NzF"}
@@ -0,0 +1,282 @@
1
+ import ts from "typescript";
2
+ import { isFunctionLike } from "./sites.js";
3
+ import { applyAt, walkCall } from "./causality-order-calls.js";
4
+ import { walkLoop } from "./causality-order-loops.js";
5
+ import { innermost, issuesSince, jump, locOf, openRegion, phaseIdOf, } from "./causality-order-state.js";
6
+ import { barrier, bindSteps, recordControl, settlesAt } from "./causality-order-settle.js";
7
+ import { bindStrands, strandMark, strandsSince } from "./causality-order-strands.js";
8
+ // causality-order.ts 顶到 oxlint max-lines 上限(400 行),把节点访问器本体
9
+ // (语句表走查、await / 赋值 / 短路 / 分支 / switch / try / 跳转的分支)拆到本文件;循环与
10
+ // 调用两组各在同名兄弟模块。公开面仍从 causality-order.ts 导出。if 链的判定顺序与原文件
11
+ // 逐字一致:`walkLoop` 占原来四个循环分支的位置,之后才落到 forEachChild 兜底。
12
+ /** Open a guarded `branch` region and record its control dependence, if any. */
13
+ function guarded(state, guard, node, chain) {
14
+ const id = openRegion(state, "branch", innermost(state, chain), {
15
+ entered: false,
16
+ loc: locOf(state, node),
17
+ });
18
+ if (guard !== undefined)
19
+ recordControl(state, guard, id);
20
+ return [...chain, id];
21
+ }
22
+ /**
23
+ * The region a `break` / `continue` transfers to. Labeled: the labeled statement's own
24
+ * region (a label on a plain block has none — such a jump is dropped, which reads as
25
+ * fall-through; no corpus fixture does this). Unlabeled: the nearest enclosing loop, or
26
+ * for `break` the nearest loop OR switch. Never crosses a function boundary — the
27
+ * language does not let it either.
28
+ */
29
+ function jumpTargetOf(state, node) {
30
+ const { regionByStatement } = state;
31
+ const isBreak = ts.isBreakStatement(node);
32
+ for (let cur = node.parent; cur !== undefined && !isFunctionLike(cur); cur = cur.parent) {
33
+ if (node.label !== undefined) {
34
+ if (ts.isLabeledStatement(cur) && cur.label.text === node.label.text) {
35
+ return regionByStatement.get(cur.statement);
36
+ }
37
+ continue;
38
+ }
39
+ if (ts.isIterationStatement(cur, false))
40
+ return regionByStatement.get(cur);
41
+ if (isBreak && ts.isSwitchStatement(cur))
42
+ return regionByStatement.get(cur);
43
+ }
44
+ return undefined;
45
+ }
46
+ /**
47
+ * Walk a statement list in order, threading the current phase with REST-OF-BLOCK
48
+ * extent: a marker statement re-points the local, every later statement in the list
49
+ * (and everything nested under it, inlined helper bodies included) inherits it, and the
50
+ * list's end restores what was current on entry. There is no other phase mechanism —
51
+ * every construct that holds a statement list routes through here.
52
+ *
53
+ * A marker NOT in a statement list (`if (x) phase("a");` without braces) is therefore
54
+ * inert: it has no rest-of-list to claim, which is the same "no effect, no diagnostic"
55
+ * status assigned to a marker at the tail of its block.
56
+ */
57
+ export function walkStatements(state, statements, chain) {
58
+ const outer = state.currentPhase;
59
+ for (const statement of statements) {
60
+ const marker = state.markerByStatement.get(statement);
61
+ if (marker !== undefined) {
62
+ const id = phaseIdOf(state, marker);
63
+ if (id !== undefined) {
64
+ state.currentPhase = id;
65
+ // The marker is a leaf of its own: a phase with no step is still a position
66
+ // control passes through (control-flow projection); phase MEMBERSHIP stays on
67
+ // issue events and does not read this.
68
+ state.events.push({ at: "mark", phase: id, regions: chain });
69
+ }
70
+ }
71
+ state.walk(statement, chain);
72
+ }
73
+ state.currentPhase = outer;
74
+ }
75
+ /** The node visitor: one evaluation-order step over `node`. Bound as `state.walk`. */
76
+ export function walkNode(state, node, chain) {
77
+ const { events, regionByStatement, returnTargets, root, scriptFile, throwTargets, walk } = state;
78
+ // A function body runs when it is called, not where it is written; call sites
79
+ // inline it (see `applyAt` / `inlineBody`), and never-called bodies are swept up at the end.
80
+ if (isFunctionLike(node)) {
81
+ // Bug: the body is deferred, but a COMPUTED MEMBER NAME is not — `{ [await
82
+ // agent(..).ask(..)]() {} }` evaluates the key where it is written, at object
83
+ // construction. Bailing on the whole node left that ask unreached by the walk, so
84
+ // it fell through to the terminal synthetic issue and got a position at the very
85
+ // END of the script. A real forward edge out of it then looked like a back edge
86
+ // and was retyped `carry` (see emission-graph-computed-method-name-obj).
87
+ const { name } = node;
88
+ if (name !== undefined && ts.isComputedPropertyName(name))
89
+ walk(name.expression, chain);
90
+ return;
91
+ }
92
+ if (ts.isBlock(node)) {
93
+ // Ordering-wise identical to the `forEachChild` fallthrough; routed here so a
94
+ // marker's extent ends with the block (function bodies included).
95
+ walkStatements(state, node.statements, chain);
96
+ return;
97
+ }
98
+ if (ts.isAwaitExpression(node)) {
99
+ const mark = events.length;
100
+ const spawned = strandMark(state);
101
+ walk(node.expression, chain);
102
+ // The syntactic half (steps issued while evaluating the operand) is certain; the
103
+ // oracle adds whatever labels the awaited VALUE carries. The operand goes to the
104
+ // barrier as well: it is where the STRANDS this await joins are named.
105
+ const claim = settlesAt(state, node, node.getStart(scriptFile));
106
+ barrier(state, [...issuesSince(state, mark), ...claim.certain], claim.maybe, chain, {
107
+ mark: spawned,
108
+ operand: node.expression,
109
+ });
110
+ return;
111
+ }
112
+ if (ts.isCallExpression(node)) {
113
+ walkCall(state, node, chain);
114
+ return;
115
+ }
116
+ // `new C(args)` applies C's constructor (a script class) or a library constructor's
117
+ // callbacks (`new Promise(executor)`); a tagged template is the call `tag(strings, …)`.
118
+ // Both evaluate their operands first, then apply whatever the oracle recorded there.
119
+ if (ts.isNewExpression(node)) {
120
+ walk(node.expression, chain);
121
+ for (const argument of node.arguments ?? [])
122
+ walk(argument, chain);
123
+ applyAt(state, node, chain);
124
+ return;
125
+ }
126
+ if (ts.isTaggedTemplateExpression(node)) {
127
+ walk(node.tag, chain);
128
+ walk(node.template, chain);
129
+ applyAt(state, node, chain);
130
+ return;
131
+ }
132
+ if (ts.isVariableDeclaration(node)) {
133
+ if (node.initializer !== undefined) {
134
+ const mark = events.length;
135
+ const spawned = strandMark(state);
136
+ walk(node.initializer, chain);
137
+ bindSteps(state, node.name, issuesSince(state, mark));
138
+ bindStrands(state, node.name, strandsSince(state, spawned));
139
+ }
140
+ return;
141
+ }
142
+ if (ts.isBinaryExpression(node)) {
143
+ const operator = node.operatorToken.kind;
144
+ if (operator === ts.SyntaxKind.AmpersandAmpersandToken ||
145
+ operator === ts.SyntaxKind.BarBarToken ||
146
+ operator === ts.SyntaxKind.QuestionQuestionToken) {
147
+ // Short-circuit: the right operand is guarded by the left — a one-arm, skippable
148
+ // choice.
149
+ walk(node.left, chain);
150
+ const choice = [
151
+ ...chain,
152
+ openRegion(state, "choice", innermost(state, chain), {
153
+ entered: true,
154
+ loc: locOf(state, node),
155
+ }),
156
+ ];
157
+ walk(node.right, guarded(state, node.left, node.right, choice));
158
+ return;
159
+ }
160
+ if (operator === ts.SyntaxKind.EqualsToken) {
161
+ const mark = events.length;
162
+ const spawned = strandMark(state);
163
+ walk(node.right, chain);
164
+ if (ts.isIdentifier(node.left)) {
165
+ bindSteps(state, node.left, issuesSince(state, mark));
166
+ bindStrands(state, node.left, strandsSince(state, spawned));
167
+ }
168
+ walk(node.left, chain);
169
+ return;
170
+ }
171
+ walk(node.left, chain);
172
+ walk(node.right, chain);
173
+ return;
174
+ }
175
+ // Branching constructs open a `choice` group whose arms are the guarded `branch`
176
+ // regions. The group records what the arms alone cannot: whether one of them MUST run
177
+ // (`exhaustive`) and whether an arm falls into the next (`fallthrough`, switch only).
178
+ if (ts.isConditionalExpression(node)) {
179
+ walk(node.condition, chain);
180
+ const choice = [
181
+ ...chain,
182
+ openRegion(state, "choice", innermost(state, chain), {
183
+ entered: true,
184
+ exhaustive: true,
185
+ loc: locOf(state, node),
186
+ }),
187
+ ];
188
+ walk(node.whenTrue, guarded(state, node.condition, node.whenTrue, choice));
189
+ walk(node.whenFalse, guarded(state, node.condition, node.whenFalse, choice));
190
+ return;
191
+ }
192
+ if (ts.isIfStatement(node)) {
193
+ walk(node.expression, chain);
194
+ const choice = [
195
+ ...chain,
196
+ openRegion(state, "choice", innermost(state, chain), {
197
+ entered: true,
198
+ loc: locOf(state, node),
199
+ ...(node.elseStatement === undefined ? {} : { exhaustive: true }),
200
+ }),
201
+ ];
202
+ walk(node.thenStatement, guarded(state, node.expression, node.thenStatement, choice));
203
+ if (node.elseStatement !== undefined) {
204
+ walk(node.elseStatement, guarded(state, node.expression, node.elseStatement, choice));
205
+ }
206
+ return;
207
+ }
208
+ if (ts.isSwitchStatement(node)) {
209
+ walk(node.expression, chain);
210
+ const clauses = node.caseBlock.clauses;
211
+ const id = openRegion(state, "choice", innermost(state, chain), {
212
+ entered: true,
213
+ fallthrough: true,
214
+ loc: locOf(state, node),
215
+ ...(clauses.some((clause) => ts.isDefaultClause(clause)) ? { exhaustive: true } : {}),
216
+ });
217
+ const choice = [...chain, id];
218
+ regionByStatement.set(node, id); // `break` inside a clause exits the switch
219
+ for (const clause of clauses) {
220
+ if (ts.isCaseClause(clause))
221
+ walk(clause.expression, choice);
222
+ const inside = guarded(state, node.expression, clause, choice);
223
+ walkStatements(state, clause.statements, inside);
224
+ }
225
+ regionByStatement.delete(node);
226
+ return;
227
+ }
228
+ // Unstructured transfers: evaluate the operand first (`throw new Error(await x.ask())`
229
+ // issues a step), then record the jump with its target already resolved to a region.
230
+ if (ts.isReturnStatement(node)) {
231
+ if (node.expression !== undefined)
232
+ walk(node.expression, chain);
233
+ jump(state, "return", returnTargets[returnTargets.length - 1] ?? root, chain);
234
+ return;
235
+ }
236
+ if (ts.isThrowStatement(node)) {
237
+ walk(node.expression, chain);
238
+ jump(state, "throw", throwTargets[throwTargets.length - 1] ?? root, chain);
239
+ return;
240
+ }
241
+ if (ts.isBreakOrContinueStatement(node)) {
242
+ const target = jumpTargetOf(state, node);
243
+ if (target !== undefined)
244
+ jump(state, ts.isBreakStatement(node) ? "break" : "continue", target, chain);
245
+ return;
246
+ }
247
+ if (ts.isTryStatement(node)) {
248
+ const group = openRegion(state, "try", innermost(state, chain), {
249
+ entered: true,
250
+ loc: locOf(state, node),
251
+ });
252
+ const inGroup = [...chain, group];
253
+ const attempt = openRegion(state, "attempt", group, {
254
+ entered: true,
255
+ loc: locOf(state, node.tryBlock),
256
+ });
257
+ throwTargets.push(attempt);
258
+ walk(node.tryBlock, [...inGroup, attempt]);
259
+ throwTargets.pop();
260
+ if (node.catchClause !== undefined) {
261
+ // The clause's binding (`catch (e)`) declares nothing that issues; only the block
262
+ // is walked. A `throw` inside it resolves to the OUTER attempt — catch is a sibling
263
+ // of attempt, not a child.
264
+ const id = openRegion(state, "catch", group, {
265
+ entered: false,
266
+ loc: locOf(state, node.catchClause),
267
+ });
268
+ walk(node.catchClause.block, [...inGroup, id]);
269
+ }
270
+ if (node.finallyBlock !== undefined) {
271
+ const id = openRegion(state, "finally", group, {
272
+ entered: true,
273
+ loc: locOf(state, node.finallyBlock),
274
+ });
275
+ walk(node.finallyBlock, [...inGroup, id]);
276
+ }
277
+ return;
278
+ }
279
+ if (walkLoop(state, node, chain))
280
+ return;
281
+ ts.forEachChild(node, (child) => walk(child, chain));
282
+ }