@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,264 @@
1
+ import ts from "typescript";
2
+ import { addPlaceholder, cloneValue, emptyValue, liveField, mergeInto, peelPlace, staticIndexKey, } from "./domain.js";
3
+ import { applyConstructor } from "./promise-ops.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 function evalClasses(ev) {
17
+ const ctx = { onReturn: () => { }, regionStack: ["top"] };
18
+ for (const cls of ev.s.classes)
19
+ evalClassBody(ev, cls, ctx);
20
+ }
21
+ function evalClassBody(ev, cls, ctx) {
22
+ const instance = ev.s.instanceOf(cls);
23
+ // `extends`: cheap sound approximation — weak-merge the base class's shared instance
24
+ // into the derived one each pass, so inherited fields carry taint and inherited
25
+ // methods/accessors dispatch through the derived instance. Deliberately conflates the
26
+ // two class instances (weak); per-instance/per-class precision is out of scope.
27
+ for (const clause of cls.heritageClauses ?? []) {
28
+ if (clause.token !== ts.SyntaxKind.ExtendsKeyword)
29
+ continue;
30
+ for (const type of clause.types) {
31
+ const base = resolveClassNode(ev, type.expression);
32
+ if (base !== undefined && mergeInto(instance, ev.s.instanceOf(base)))
33
+ ev.s.changed = true;
34
+ }
35
+ }
36
+ for (const member of cls.members) {
37
+ if (ts.isPropertyDeclaration(member)) {
38
+ const key = staticMemberKey(ev, member.name);
39
+ if (key === undefined || member.initializer === undefined)
40
+ continue;
41
+ // Field/static initializer: `this` in the initializer resolves to the instance
42
+ // (ThisExpression parent-walks to this class). Weak-merge its value into the field.
43
+ mergeInstanceField(ev, instance, key, ev.evalExpr(member.initializer, ctx));
44
+ }
45
+ else if (ts.isClassStaticBlockDeclaration(member)) {
46
+ for (const stmt of member.body.statements)
47
+ ev.visit(stmt, ctx);
48
+ }
49
+ else if (ts.isMethodDeclaration(member)) {
50
+ // A method is a function-valued field, callable through it (`inst.run(x)`). A computed
51
+ // name that is a static string/number literal (`["run"]`) registers under that name;
52
+ // a genuinely-dynamic name registers in the instance's top-level fns (see registerMember).
53
+ registerMember(ev, instance, staticMemberKey(ev, member.name), member);
54
+ }
55
+ else if (ts.isGetAccessorDeclaration(member)) {
56
+ // Getter: the field's read value IS the getter's return summary (re-read each pass;
57
+ // the fixpoint converges), mirroring object-literal getters in literals.ts.
58
+ const id = ev.s.fnId.get(member);
59
+ if (id === undefined)
60
+ continue;
61
+ const key = staticMemberKey(ev, member.name);
62
+ const summary = cloneValue(ev.s.summaryOf(id));
63
+ // A genuinely-dynamic getter name can only be read through a dynamic-key access, which
64
+ // collapses the instance — smear its value (inexact) into the container so a `w[k]` read
65
+ // still surfaces it (a sound over-approximation, never a drop).
66
+ if (key === undefined)
67
+ mergeInstanceField(ev, instance, undefined, summary);
68
+ else
69
+ mergeInstanceField(ev, instance, key, summary);
70
+ }
71
+ else if (ts.isConstructorDeclaration(member)) {
72
+ applyParameterProperties(ev, instance, member);
73
+ }
74
+ // SetAccessorDeclaration: writes are handled globally by settersByProp (collected in
75
+ // TaintState). ConstructorDeclaration body: applied at `new C(...)` / `super(...)`.
76
+ }
77
+ }
78
+ /**
79
+ * The static field key a class member is registered / dispatched under: the member name for a
80
+ * plain name, or the static string/number literal of a computed name (`["run"]`). Returns
81
+ * undefined for a genuinely-dynamic computed name (`[expr]`) — such a member cannot be
82
+ * dispatched by name, so it degrades to the sound catch-all (top-level fns / container smear).
83
+ */
84
+ function staticMemberKey(ev, name) {
85
+ if (ts.isComputedPropertyName(name))
86
+ return staticIndexKey(name.expression);
87
+ return name.getText(ev.s.scriptFile);
88
+ }
89
+ /**
90
+ * Synthesize the implicit `this.x = x` a TS parameter property performs: a constructor
91
+ * parameter carrying an accessibility / `readonly` modifier declares AND initializes an
92
+ * instance field from the argument. Model it by merging the ctor's param placeholder into
93
+ * the named instance field (resolved to the `new`'s actual at emission). Parameter
94
+ * properties are Parameters, not PropertyDeclarations; their implicit field writes are not
95
+ * explicit statements in the constructor body and must be modeled here.
96
+ */
97
+ function applyParameterProperties(ev, instance, ctor) {
98
+ const id = ev.s.fnId.get(ctor);
99
+ if (id === undefined)
100
+ return;
101
+ ctor.parameters.forEach((param, index) => {
102
+ if (!ts.isParameterPropertyDeclaration(param, ctor) || !ts.isIdentifier(param.name))
103
+ return;
104
+ const val = emptyValue();
105
+ addPlaceholder(val, { fnId: id, param: index });
106
+ mergeInstanceField(ev, instance, param.name.text, val);
107
+ });
108
+ }
109
+ function mergeInstanceField(ev, instance, key, value) {
110
+ // A dynamic (undefined) key smears into the container itself (collapse surfaces it).
111
+ const field = key === undefined ? instance : liveField(instance, key);
112
+ if (field !== value && mergeInto(field, value))
113
+ ev.s.changed = true;
114
+ }
115
+ function registerMember(ev, instance, key, fn) {
116
+ // A static-named method lives in a named field (`inst.run` dispatches via readField); a
117
+ // dynamically-named one lives in the instance's TOP-LEVEL fns, reachable only through the
118
+ // collapse a dynamic-key call (`inst[k]()`) performs — never picked up by a named field read,
119
+ // so it adds no false static-name dispatch while keeping the callee sound (never dropped).
120
+ const target = key === undefined ? instance : liveField(instance, key);
121
+ if (!target.fns.has(fn)) {
122
+ target.fns.add(fn);
123
+ ev.s.changed = true;
124
+ }
125
+ }
126
+ /**
127
+ * The class node an expression names (a class-name identifier, or a `this`/`super` that
128
+ * resolves to one), or undefined for a non-class expression. `new C()`, `super(...)` and
129
+ * every class-name read go through this so static and instance access conflate into the
130
+ * one shared instance.
131
+ */
132
+ export function resolveClassNode(ev, expr) {
133
+ const sym = ev.checker.getSymbolAtLocation(expr);
134
+ return sym === undefined ? undefined : classNodeOfSymbol(ev, sym);
135
+ }
136
+ /** The class node a symbol declares, following alias / field bindings to a class. */
137
+ export function classNodeOfSymbol(ev, sym, seen = new Set()) {
138
+ if (seen.has(sym))
139
+ return undefined;
140
+ seen.add(sym);
141
+ for (const decl of sym.declarations ?? []) {
142
+ if ((ts.isClassDeclaration(decl) || ts.isClassExpression(decl)) && ev.s.classInstances.has(decl))
143
+ return decl;
144
+ // A class bound through a variable alias (`const Alias = Cfg`) or stored in an
145
+ // object-literal field (`{ C: class {} }`): resolve the initializer to the class node so
146
+ // `new Alias(...)` / `new box.C()` applies the constructor and returns that class's shared
147
+ // instance. Otherwise only the class's own symbol and a directly class-expression-initialized
148
+ // variable would be recognized, and an alias / field binding would escape to emptyValue.
149
+ const init = ts.isVariableDeclaration(decl) || ts.isPropertyAssignment(decl) ? decl.initializer : undefined;
150
+ if (init !== undefined) {
151
+ const via = classNodeFromExpr(ev, init, seen);
152
+ if (via !== undefined)
153
+ return via;
154
+ }
155
+ }
156
+ return undefined;
157
+ }
158
+ /** The class node an initializer expression denotes: a class expression, or an identifier /
159
+ * property access aliasing another class binding (cycle-guarded through `seen`). */
160
+ function classNodeFromExpr(ev, expr, seen) {
161
+ const e = peelPlace(expr);
162
+ if (ts.isClassExpression(e) && ev.s.classInstances.has(e))
163
+ return e;
164
+ if (ts.isIdentifier(e) || ts.isPropertyAccessExpression(e)) {
165
+ const sym = ev.checker.getSymbolAtLocation(e);
166
+ if (sym !== undefined)
167
+ return classNodeOfSymbol(ev, sym, seen);
168
+ }
169
+ return undefined;
170
+ }
171
+ /**
172
+ * The constructor to apply for `new C(...)`: C's own constructor (with a body), else the
173
+ * nearest inherited one up the `extends` chain (an implicit super forwards the arguments).
174
+ * Overload signatures without a body are skipped. Cycle-guarded.
175
+ */
176
+ export function classConstructor(ev, cls, seen = new Set()) {
177
+ if (seen.has(cls))
178
+ return undefined;
179
+ seen.add(cls);
180
+ for (const member of cls.members) {
181
+ if (ts.isConstructorDeclaration(member) && member.body !== undefined)
182
+ return member;
183
+ }
184
+ for (const clause of cls.heritageClauses ?? []) {
185
+ if (clause.token !== ts.SyntaxKind.ExtendsKeyword)
186
+ continue;
187
+ for (const type of clause.types) {
188
+ const base = resolveClassNode(ev, type.expression);
189
+ if (base !== undefined) {
190
+ const inherited = classConstructor(ev, base, seen);
191
+ if (inherited !== undefined)
192
+ return inherited;
193
+ }
194
+ }
195
+ }
196
+ return undefined;
197
+ }
198
+ /** The shared instance of the class lexically enclosing `node`, or undefined. */
199
+ export function enclosingClassInstance(ev, node) {
200
+ for (let cur = node.parent; cur !== undefined; cur = cur.parent) {
201
+ if (ts.isClassLike(cur))
202
+ return ev.s.instanceOf(cur);
203
+ }
204
+ return undefined;
205
+ }
206
+ /**
207
+ * The shared instance of the BASE class of the class lexically enclosing `node` — the value
208
+ * `super` denotes inside a derived method: `super.m()` dispatches to the base method summary
209
+ * and `super.x` reads the base field. Only the innermost enclosing class's (resolvable) base
210
+ * counts. Undefined outside a derived class or when the base is an unresolvable heritage.
211
+ */
212
+ export function enclosingBaseInstance(ev, node) {
213
+ for (let cur = node.parent; cur !== undefined; cur = cur.parent) {
214
+ if (!ts.isClassLike(cur))
215
+ continue;
216
+ for (const clause of cur.heritageClauses ?? []) {
217
+ if (clause.token !== ts.SyntaxKind.ExtendsKeyword)
218
+ continue;
219
+ for (const type of clause.types) {
220
+ const base = resolveClassNode(ev, type.expression);
221
+ if (base !== undefined)
222
+ return ev.s.instanceOf(base);
223
+ }
224
+ }
225
+ return undefined; // innermost enclosing class only
226
+ }
227
+ return undefined;
228
+ }
229
+ /** True iff a class has an `extends` clause whose base cannot be resolved to a class node (a
230
+ * mixin CALL, `class D extends mix(Base)`). The inherited constructor is then unreachable, so
231
+ * `new D(args)` must over-approximate the argument flow (see applyMixinConstructor). */
232
+ export function hasUnresolvedHeritage(ev, cls) {
233
+ for (const clause of cls.heritageClauses ?? []) {
234
+ if (clause.token !== ts.SyntaxKind.ExtendsKeyword)
235
+ continue;
236
+ for (const type of clause.types) {
237
+ if (resolveClassNode(ev, type.expression) === undefined)
238
+ return true;
239
+ }
240
+ }
241
+ return false;
242
+ }
243
+ /** Apply the base-class constructor for a `super(args)` call inside a derived ctor. */
244
+ export function applySuperCall(ev, node, ctx) {
245
+ for (let cur = node.parent; cur !== undefined; cur = cur.parent) {
246
+ if (!ts.isClassLike(cur))
247
+ continue;
248
+ for (const clause of cur.heritageClauses ?? []) {
249
+ if (clause.token !== ts.SyntaxKind.ExtendsKeyword)
250
+ continue;
251
+ for (const type of clause.types) {
252
+ const base = resolveClassNode(ev, type.expression);
253
+ const ctor = base === undefined ? undefined : classConstructor(ev, base);
254
+ const id = ctor === undefined ? undefined : ev.s.fnId.get(ctor);
255
+ if (id !== undefined) {
256
+ const argVals = node.arguments.map((arg) => ev.evalExpr(arg, ctx));
257
+ const argPlaces = node.arguments.map((arg) => ev.resolvePlace(arg));
258
+ applyConstructor(ev, id, ctx, argVals, argPlaces, node);
259
+ }
260
+ }
261
+ }
262
+ return; // only the innermost enclosing class's base is the super target
263
+ }
264
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * 追踪词汇:区域种类、跳转种类与兜底阶段 id。它们原本住在 causality-order.ts,但那个文件
3
+ * 在运行时 import `typescript`(走 AST 的 walk 本身),而只读 core 的纯投影(causality-graph /
4
+ * flow-phase / phase-graph)只需要这几个值。把它们放进一个零依赖的小文件,投影模块就不再
5
+ * 把 `typescript` 拖进运行时闭包——这是作品集浏览器包(
6
+ * `@zcode/dynamic-workflow/projections`)能成立的前提。causality-order.ts 原样再导出,
7
+ * 所有既有引用位置与行为不变。
8
+ */
9
+ /**
10
+ * Region kinds. The analyzer emits `seq` (the root), `loop`,
11
+ * `fanout` and `branch`. `parallel` stays derived — incomparability in the ordering
12
+ * already defines concurrency, and storing it would be a second source of truth.
13
+ * `shared` is reserved for the future specialization cap.
14
+ */
15
+ export type RegionKind = "seq" | "parallel" | "loop" | "fanout" | "branch" | "shared";
16
+ /**
17
+ * STRUCTURAL region kinds: the tree nodes
18
+ * the walk always saw but did not record before the control-flow projection needed them.
19
+ * The causality projection looks THROUGH every one of them (its "transparency rule"), which
20
+ * is what keeps the three older views byte-identical while the trace grows.
21
+ *
22
+ * - `choice`: one if / ternary / switch / short-circuit; its arms are `branch` children
23
+ * - `call`: one inlined helper body (a `return` target)
24
+ * - `try` / `attempt` / `catch` / `finally`: one try statement and its three parts
25
+ */
26
+ export type StructuralRegionKind = "choice" | "call" | "try" | "attempt" | "catch" | "finally";
27
+ /** Every kind the trace can hold. The public causality `RegionKind` stays the narrow union. */
28
+ export type TraceRegionKind = RegionKind | StructuralRegionKind;
29
+ export declare function isStructuralRegionKind(kind: TraceRegionKind): kind is StructuralRegionKind;
30
+ /** The reserved fallback phase: the root block's initial current phase, and where every
31
+ * step issued before the script's first marker lands. It has no `name` — the UI shows a
32
+ * localized word, exactly as it does for the `workspace` / `unknown` lanes. */
33
+ export declare const UNPHASED_ID = "unphased";
34
+ export type JumpKind = "continue" | "break" | "return" | "throw" | "recur";
35
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/analysis/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtF;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/F,+FAA+F;AAC/F,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,oBAAoB,CAAC;AAWhE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,IAAI,oBAAoB,CAE1F;AAED;;+EAE+E;AAC/E,eAAO,MAAM,WAAW,aAAa,CAAC;AAEtC,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 追踪词汇:区域种类、跳转种类与兜底阶段 id。它们原本住在 causality-order.ts,但那个文件
3
+ * 在运行时 import `typescript`(走 AST 的 walk 本身),而只读 core 的纯投影(causality-graph /
4
+ * flow-phase / phase-graph)只需要这几个值。把它们放进一个零依赖的小文件,投影模块就不再
5
+ * 把 `typescript` 拖进运行时闭包——这是作品集浏览器包(
6
+ * `@zcode/dynamic-workflow/projections`)能成立的前提。causality-order.ts 原样再导出,
7
+ * 所有既有引用位置与行为不变。
8
+ */
9
+ const STRUCTURAL_REGION_KINDS = new Set([
10
+ "choice",
11
+ "call",
12
+ "try",
13
+ "attempt",
14
+ "catch",
15
+ "finally",
16
+ ]);
17
+ export function isStructuralRegionKind(kind) {
18
+ return STRUCTURAL_REGION_KINDS.has(kind);
19
+ }
20
+ /** The reserved fallback phase: the root block's initial current phase, and where every
21
+ * step issued before the script's first marker lands. It has no `name` — the UI shows a
22
+ * localized word, exactly as it does for the `workspace` / `unknown` lanes. */
23
+ export const UNPHASED_ID = "unphased";
@@ -0,0 +1,26 @@
1
+ import ts from "typescript";
2
+ import type { EvalContext, Evaluator } from "./taint.js";
3
+ /**
4
+ * Loop / iteration statement handlers: `for`, `for-of`, and `for-in`. Split out of the core
5
+ * evaluator (taint.ts) like the call/relay rules in calls.ts and the assignment rules in
6
+ * assign.ts — same `Evaluator` instance, free-function shape. The `visit` dispatcher in
7
+ * taint.ts routes the three loop statement kinds here. Plain `while`/`do` carry no binding, so
8
+ * they stay inline in `visit`. Gen-only weak updates over-approximate every iteration order at once,
9
+ * so a loop body is evaluated exactly like straight-line code.
10
+ */
11
+ /** `for (init; cond; incr) body`: evaluate every clause for effect, then the body. */
12
+ export declare function visitForStatement(ev: Evaluator, node: ts.ForStatement, ctx: EvalContext): void;
13
+ /**
14
+ * `for (x of xs) body`: the element value is the collapsed iterable (+ a fan-out label when the
15
+ * loop is a promoted iteration candidate), bound through the same machinery as any other loop
16
+ * variable. Derived, not a place, so binding keeps value semantics.
17
+ */
18
+ export declare function handleForOf(ev: Evaluator, node: ts.ForOfStatement, ctx: EvalContext): void;
19
+ /**
20
+ * `for (k in obj) body`: for-in enumerates the object's KEYS; each key string is derived from
21
+ * that object ("strings launder nothing"), so the loop variable carries its collapsed taint.
22
+ * For-in used to share the while/do arm (which binds nothing), so key-derived flow
23
+ * (`keys += k`) was dropped for both the declaration and assignment initializer forms.
24
+ */
25
+ export declare function handleForIn(ev: Evaluator, node: ts.ForInStatement, ctx: EvalContext): void;
26
+ //# sourceMappingURL=control-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-flow.d.ts","sourceRoot":"","sources":["../../src/analysis/control-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;;GAOG;AAEH,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAW9F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAqD1F;AAgCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAG1F"}
@@ -0,0 +1,132 @@
1
+ import ts from "typescript";
2
+ import { addOcc, cloneValue, collapse, mergeInto, provisionalFanoutId } from "./domain.js";
3
+ import { bindForInitializer } from "./assign.js";
4
+ /**
5
+ * Loop / iteration statement handlers: `for`, `for-of`, and `for-in`. Split out of the core
6
+ * evaluator (taint.ts) like the call/relay rules in calls.ts and the assignment rules in
7
+ * assign.ts — same `Evaluator` instance, free-function shape. The `visit` dispatcher in
8
+ * taint.ts routes the three loop statement kinds here. Plain `while`/`do` carry no binding, so
9
+ * they stay inline in `visit`. Gen-only weak updates over-approximate every iteration order at once,
10
+ * so a loop body is evaluated exactly like straight-line code.
11
+ */
12
+ /** `for (init; cond; incr) body`: evaluate every clause for effect, then the body. */
13
+ export function visitForStatement(ev, node, ctx) {
14
+ if (node.initializer !== undefined) {
15
+ if (ts.isVariableDeclarationList(node.initializer)) {
16
+ for (const decl of node.initializer.declarations)
17
+ ev.handleDeclaration(decl, ctx);
18
+ }
19
+ else {
20
+ ev.evalExpr(node.initializer, ctx);
21
+ }
22
+ }
23
+ if (node.condition !== undefined)
24
+ ev.recordGuard(node.condition, ev.evalExpr(node.condition, ctx));
25
+ if (node.incrementor !== undefined)
26
+ ev.evalExpr(node.incrementor, ctx);
27
+ ev.visit(node.statement, ctx);
28
+ }
29
+ /**
30
+ * `for (x of xs) body`: the element value is the collapsed iterable (+ a fan-out label when the
31
+ * loop is a promoted iteration candidate), bound through the same machinery as any other loop
32
+ * variable. Derived, not a place, so binding keeps value semantics.
33
+ */
34
+ export function handleForOf(ev, node, ctx) {
35
+ const cand = ev.s.candByForOf.get(node);
36
+ const iterated = collapse(ev.evalExpr(node.expression, ctx));
37
+ // `for await (… of …)` awaits every element, so the ITERATED expression is the settle
38
+ // oracle for the loop's per-iteration barrier — and the ordering walk puts that barrier
39
+ // at exactly this expression's position, which is the key it looks the oracle up under.
40
+ if (node.awaitModifier !== undefined) {
41
+ ev.s.mergeSink(ev.s.awaitVal, node.expression.getStart(ev.s.scriptFile), iterated);
42
+ }
43
+ const element = cloneValue(iterated);
44
+ let regionStack = ctx.regionStack;
45
+ if (cand !== undefined) {
46
+ const fanoutId = provisionalFanoutId(cand.order);
47
+ if (ev.s.promotedOrders.has(cand.order)) {
48
+ ev.s.mergeSink(ev.s.fanoutInVal, fanoutId, iterated);
49
+ addOcc(element, { exact: true, site: fanoutId });
50
+ }
51
+ regionStack = [...ctx.regionStack, `cand@${cand.order}`];
52
+ }
53
+ // The element value is derived (collapsed iterable + fan-out label), not a place, so for-of
54
+ // binding keeps value semantics. Only the declaration form used to be bound; an
55
+ // assignment-form initializer (`for (cur of xs)`, or a destructuring target) bound nothing,
56
+ // dropping the element's taint into every read of the loop variable.
57
+ bindForInitializer(ev, node.initializer, element, ctx);
58
+ ev.visit(node.statement, { onReturn: ctx.onReturn, regionStack });
59
+ // Element-mutation write-back: the loop variable may-aliases the iterable's elements, so a
60
+ // field written through it (`for (const y of b) y.note = t`) reaches the collection. Weak-
61
+ // merge the element's FIELD effects (collapsed) into the collection place — a later
62
+ // `b[k].note` read smears them out. Mirrors the array-method fan-out write-back. Without
63
+ // this write-back, for-of element writes would be invisible to the collection.
64
+ //
65
+ // The write-back used to scan only THIS pass's fresh `element` clone, but
66
+ // body writes land on the loop variable's persistent env slot — bindSymbol ADOPTS the pass-1
67
+ // object and later passes merely merge the fresh clone INTO it. A clone of the collapsed
68
+ // iterable has no fields, so element-field taint first arriving on pass >= 2 (exactly the
69
+ // loop-carried flows) was never written back, and a DESTRUCTURED loop variable
70
+ // (`for (const { doc } of items) doc.note = t`), whose sub-bindings hold their own slots,
71
+ // never populated `element.fields` at all. Write back from the slots the body actually
72
+ // wrote through: every binding of the initializer, plus `element` itself (which still
73
+ // carries pass-1 writes for the identifier form).
74
+ const collectionPlace = ev.resolvePlace(node.expression);
75
+ if (collectionPlace !== undefined) {
76
+ const writeBackFields = (holder) => {
77
+ for (const field of holder.fields.values()) {
78
+ if (mergeInto(collectionPlace, collapse(field)))
79
+ ev.s.changed = true;
80
+ }
81
+ };
82
+ writeBackFields(element);
83
+ for (const sym of boundSymbolsOfForInitializer(ev, node.initializer)) {
84
+ const slot = ev.s.env.get(sym);
85
+ if (slot !== undefined && slot !== collectionPlace)
86
+ writeBackFields(slot);
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * The symbols a for-of initializer binds — the slots its body writes element mutations
92
+ * through. Declaration form walks the (possibly destructuring) binding name; assignment
93
+ * form covers the plain-identifier target (destructuring assignment targets write through
94
+ * the heap paths of assign.ts, which need no loop write-back).
95
+ */
96
+ function boundSymbolsOfForInitializer(ev, initializer) {
97
+ const out = [];
98
+ const addName = (name) => {
99
+ if (ts.isIdentifier(name)) {
100
+ const sym = ev.checker.getSymbolAtLocation(name);
101
+ if (sym !== undefined)
102
+ out.push(sym);
103
+ return;
104
+ }
105
+ for (const el of name.elements) {
106
+ if (ts.isBindingElement(el))
107
+ addName(el.name);
108
+ }
109
+ };
110
+ if (ts.isVariableDeclarationList(initializer)) {
111
+ const decl = initializer.declarations[0];
112
+ if (decl !== undefined)
113
+ addName(decl.name);
114
+ return out;
115
+ }
116
+ if (ts.isIdentifier(initializer)) {
117
+ const sym = ev.checker.getSymbolAtLocation(initializer);
118
+ if (sym !== undefined)
119
+ out.push(sym);
120
+ }
121
+ return out;
122
+ }
123
+ /**
124
+ * `for (k in obj) body`: for-in enumerates the object's KEYS; each key string is derived from
125
+ * that object ("strings launder nothing"), so the loop variable carries its collapsed taint.
126
+ * For-in used to share the while/do arm (which binds nothing), so key-derived flow
127
+ * (`keys += k`) was dropped for both the declaration and assignment initializer forms.
128
+ */
129
+ export function handleForIn(ev, node, ctx) {
130
+ bindForInitializer(ev, node.initializer, collapse(ev.evalExpr(node.expression, ctx)), ctx);
131
+ ev.visit(node.statement, ctx);
132
+ }
@@ -0,0 +1,45 @@
1
+ import type { OrderTrace } from "./causality-order.js";
2
+ import type { AnalysisCore, CoreSites } from "./core.js";
3
+ import type { TaintOcc } from "./domain.js";
4
+ /**
5
+ * `AnalysisCore` 的 JSON 编解码。
6
+ *
7
+ * core 本身已是无位置依赖的纯数据,唯一挡住 `JSON.stringify` 的是 `facts.*` 与 `types.*`
8
+ * 里的 `Map`——它们会被序列化成 `{}`。这里把每个 Map 换成**有序** `[key, value][]`:
9
+ * 数组保住插入序,解码用 `new Map(entries)` 原样还回去,于是 `serializeCore(decode(encode(c)))`
10
+ * 与 `serializeCore(c)` 逐字节相同,投影在冻结工件上算出的图与导出当刻一致。
11
+ *
12
+ * `sites` 与 `trace` 只含普通对象、数组与可选字段,原样穿过:`JSON.stringify` 丢掉值为
13
+ * `undefined` 的属性,解码器**不**把它们补回来——投影全部按「字段缺席」而非「字段为
14
+ * undefined」判定,两种形状等价。唯一的例外是 `joinPortTypes` 的值:`(string | undefined)[]`
15
+ * 里的 `undefined` 落进数组会被 JSON 写成 `null`,所以编码时显式写 `null`,解码时换回
16
+ * `undefined`,让「该端口类型不可知」的洞在往返后仍是 `undefined` 而不是 `null`。
17
+ */
18
+ /** 有序的 Map 条目:数组序即 Map 的插入序。 */
19
+ export type MapEntries<V> = [string, V][];
20
+ export interface AnalysisCoreJson {
21
+ /** 格式版本;解码器只认识它认得的版本,其余抛错而不是猜。 */
22
+ version: 1;
23
+ sites: CoreSites;
24
+ facts: {
25
+ askData: MapEntries<TaintOcc[]>;
26
+ askActor: MapEntries<TaintOcc[]>;
27
+ worldReadData: MapEntries<TaintOcc[]>;
28
+ joinIn: MapEntries<TaintOcc[]>;
29
+ fanoutIn: MapEntries<TaintOcc[]>;
30
+ /** 留白提示的 sink(2026-09-28 加入);早于它冻结的样例包没有这个键,解码按空表补。 */
31
+ holeData?: MapEntries<TaintOcc[]>;
32
+ returnData: TaintOcc[];
33
+ };
34
+ trace: OrderTrace;
35
+ types: {
36
+ siteType: MapEntries<string>;
37
+ /** 端口类型的洞(`undefined`)在这里是 `null`——JSON 数组里没有 `undefined`。 */
38
+ joinPortTypes: MapEntries<(string | null)[]>;
39
+ };
40
+ }
41
+ /** 把 core 变成可直接 `JSON.stringify` 的纯对象;`sites` 与 `trace` 共享原引用。 */
42
+ export declare function encodeAnalysisCore(core: AnalysisCore): AnalysisCoreJson;
43
+ /** 从 JSON 形态重建 core(Map 保持原插入序)。未知版本抛普通 `Error`。 */
44
+ export declare function decodeAnalysisCore(json: AnalysisCoreJson): AnalysisCore;
45
+ //# sourceMappingURL=core-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-json.d.ts","sourceRoot":"","sources":["../../src/analysis/core-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;;;;;GAaG;AAEH,gCAAgC;AAChC,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE;QACL,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/B,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,uDAAuD;QACvD,QAAQ,CAAC,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,UAAU,EAAE,QAAQ,EAAE,CAAC;KACxB,CAAC;IACF,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE;QACL,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7B,8DAA8D;QAC9D,aAAa,EAAE,UAAU,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;KAC9C,CAAC;CACH;AAID,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAsBvE;AAED,oDAAoD;AACpD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAwBvE"}
@@ -0,0 +1,49 @@
1
+ const VERSION = 1;
2
+ /** 把 core 变成可直接 `JSON.stringify` 的纯对象;`sites` 与 `trace` 共享原引用。 */
3
+ export function encodeAnalysisCore(core) {
4
+ return {
5
+ facts: {
6
+ askActor: [...core.facts.askActor],
7
+ askData: [...core.facts.askData],
8
+ fanoutIn: [...core.facts.fanoutIn],
9
+ holeData: [...core.facts.holeData],
10
+ joinIn: [...core.facts.joinIn],
11
+ returnData: core.facts.returnData,
12
+ worldReadData: [...core.facts.worldReadData],
13
+ },
14
+ sites: core.sites,
15
+ trace: core.trace,
16
+ types: {
17
+ joinPortTypes: [...core.types.joinPortTypes].map(([id, ports]) => [
18
+ id,
19
+ ports.map((port) => (port === undefined ? null : port)),
20
+ ]),
21
+ siteType: [...core.types.siteType],
22
+ },
23
+ version: VERSION,
24
+ };
25
+ }
26
+ /** 从 JSON 形态重建 core(Map 保持原插入序)。未知版本抛普通 `Error`。 */
27
+ export function decodeAnalysisCore(json) {
28
+ if (json.version !== VERSION) {
29
+ throw new Error(`unsupported AnalysisCoreJson version ${String(json.version)} (expected ${VERSION})`);
30
+ }
31
+ return {
32
+ facts: {
33
+ askActor: new Map(json.facts.askActor),
34
+ askData: new Map(json.facts.askData),
35
+ fanoutIn: new Map(json.facts.fanoutIn),
36
+ holeData: new Map(json.facts.holeData ?? []),
37
+ joinIn: new Map(json.facts.joinIn),
38
+ returnData: json.facts.returnData,
39
+ worldReadData: new Map(json.facts.worldReadData),
40
+ },
41
+ // 留白站点表同样是后加的键:老样例包按「没有留白」解码。
42
+ sites: { ...json.sites, holes: json.sites.holes ?? [] },
43
+ trace: json.trace,
44
+ types: {
45
+ joinPortTypes: new Map(json.types.joinPortTypes.map(([id, ports]) => [id, ports.map((port) => (port === null ? undefined : port))])),
46
+ siteType: new Map(json.types.siteType),
47
+ },
48
+ };
49
+ }