@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,31 @@
1
+ import ts from "typescript";
2
+ import { type AbstractValue } from "./domain.js";
3
+ import type { EvalContext, Evaluator } from "./taint.js";
4
+ /**
5
+ * Destructuring / aliasing bind machinery, split out of the core evaluator (taint.ts) like
6
+ * the call/relay rules in calls.ts and the assignment rules in assign.ts — same `Evaluator`
7
+ * instance, free-function shape. Declarations, for-of/for-in initializers and callback
8
+ * parameters all route through {@link bindPattern}.
9
+ */
10
+ /**
11
+ * Bind a destructuring pattern (or a single name). When `sourcePlace` is a LIVE place,
12
+ * pattern elements selecting a statically-known field ALIAS to that live field (the
13
+ * extracted binding and the container share one object), so `const { o } = wrap; o.f = t`
14
+ * is visible through `wrap.o`. See {@link extractField} for the seed-on-absent handling
15
+ * that preserves opaque containers' collapse-fallback flow. Rest elements and non-place
16
+ * sources keep value semantics (a folded / field-selected clone).
17
+ */
18
+ export declare function bindPattern(ev: Evaluator, name: ts.BindingName, value: AbstractValue, ctx: EvalContext, sourcePlace?: AbstractValue): void;
19
+ /**
20
+ * The live field at `key` of a place, for destructuring aliasing. An existing field is
21
+ * returned as-is (a real sub-object). An ABSENT field is created and SEEDED with the
22
+ * container's own occurrences + placeholders (occs-only) — exactly what a read of the
23
+ * field would collapse to on an opaque container (`const { feedback } = review`), so the
24
+ * extraction never drops taint; and because it is now a shared field, a later write
25
+ * through the extracted binding lands where the container sees it too. Never re-seeds an
26
+ * existing field (that would over-smear a precise sub-object).
27
+ */
28
+ export declare function extractField(ev: Evaluator, container: AbstractValue, key: string): AbstractValue;
29
+ /** Read a statically-known field with smear-on-read, else collapse (exact preserved). */
30
+ export declare function selectField(value: AbstractValue, key: string): AbstractValue;
31
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/analysis/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAQL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,EAAE,CAAC,WAAW,EACpB,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,WAAW,EAChB,WAAW,CAAC,EAAE,aAAa,GAC1B,IAAI,CAsCN;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAShG;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAE5E"}
@@ -0,0 +1,94 @@
1
+ import ts from "typescript";
2
+ import { addOcc, addPlaceholder, bindingPropertyKey, collapse, emptyValue, mergeInto, readField, } from "./domain.js";
3
+ /**
4
+ * Destructuring / aliasing bind machinery, split out of the core evaluator (taint.ts) like
5
+ * the call/relay rules in calls.ts and the assignment rules in assign.ts — same `Evaluator`
6
+ * instance, free-function shape. Declarations, for-of/for-in initializers and callback
7
+ * parameters all route through {@link bindPattern}.
8
+ */
9
+ /**
10
+ * Bind a destructuring pattern (or a single name). When `sourcePlace` is a LIVE place,
11
+ * pattern elements selecting a statically-known field ALIAS to that live field (the
12
+ * extracted binding and the container share one object), so `const { o } = wrap; o.f = t`
13
+ * is visible through `wrap.o`. See {@link extractField} for the seed-on-absent handling
14
+ * that preserves opaque containers' collapse-fallback flow. Rest elements and non-place
15
+ * sources keep value semantics (a folded / field-selected clone).
16
+ */
17
+ export function bindPattern(ev, name, value, ctx, sourcePlace) {
18
+ if (ts.isIdentifier(name)) {
19
+ const sym = ev.checker.getSymbolAtLocation(name);
20
+ if (sym !== undefined)
21
+ ev.s.bindSymbol(sym, value);
22
+ return;
23
+ }
24
+ if (ts.isObjectBindingPattern(name)) {
25
+ for (const element of name.elements) {
26
+ if (element.dotDotDotToken !== undefined) {
27
+ bindPattern(ev, element.name, collapse(value), ctx); // rest: fold, exact preserved (value semantics)
28
+ continue;
29
+ }
30
+ const key = bindingPropertyKey(element);
31
+ if (sourcePlace !== undefined && key !== undefined) {
32
+ bindPatternElement(ev, element.name, extractField(ev, sourcePlace, key), element.initializer, ctx);
33
+ }
34
+ else {
35
+ bindPattern(ev, element.name, key === undefined ? collapse(value) : selectField(value, key), ctx);
36
+ }
37
+ }
38
+ return;
39
+ }
40
+ let index = 0;
41
+ for (const element of name.elements) {
42
+ if (ts.isOmittedExpression(element)) {
43
+ index += 1;
44
+ continue;
45
+ }
46
+ if (element.dotDotDotToken !== undefined) {
47
+ bindPattern(ev, element.name, collapse(value), ctx); // rest: value semantics
48
+ continue;
49
+ }
50
+ if (sourcePlace !== undefined) {
51
+ bindPatternElement(ev, element.name, extractField(ev, sourcePlace, String(index)), element.initializer, ctx);
52
+ }
53
+ else {
54
+ bindPattern(ev, element.name, selectField(value, String(index)), ctx);
55
+ }
56
+ index += 1;
57
+ }
58
+ }
59
+ /**
60
+ * Bind one destructuring element to a LIVE field: a default initializer weak-merges into
61
+ * the field (runtime may bind either the field or the default — a sound over-approx), and
62
+ * the field is passed as both value and source so nested patterns keep aliasing.
63
+ */
64
+ function bindPatternElement(ev, name, field, initializer, ctx) {
65
+ if (initializer !== undefined && mergeInto(field, ev.evalExpr(initializer, ctx)))
66
+ ev.s.changed = true;
67
+ bindPattern(ev, name, field, ctx, field);
68
+ }
69
+ /**
70
+ * The live field at `key` of a place, for destructuring aliasing. An existing field is
71
+ * returned as-is (a real sub-object). An ABSENT field is created and SEEDED with the
72
+ * container's own occurrences + placeholders (occs-only) — exactly what a read of the
73
+ * field would collapse to on an opaque container (`const { feedback } = review`), so the
74
+ * extraction never drops taint; and because it is now a shared field, a later write
75
+ * through the extracted binding lands where the container sees it too. Never re-seeds an
76
+ * existing field (that would over-smear a precise sub-object).
77
+ */
78
+ export function extractField(ev, container, key) {
79
+ const existing = container.fields.get(key);
80
+ if (existing !== undefined)
81
+ return existing;
82
+ const field = emptyValue();
83
+ for (const occ of container.occs.values())
84
+ addOcc(field, occ);
85
+ for (const ph of container.phs.values())
86
+ addPlaceholder(field, ph);
87
+ container.fields.set(key, field);
88
+ ev.s.changed = true;
89
+ return field;
90
+ }
91
+ /** Read a statically-known field with smear-on-read, else collapse (exact preserved). */
92
+ export function selectField(value, key) {
93
+ return readField(value, key);
94
+ }
@@ -0,0 +1,47 @@
1
+ import type { OrderEvent, PhaseInfo } from "./causality-order.js";
2
+ import { type OrderKind } from "./causality-reduce.js";
3
+ import type { CausalityGraph, Certainty } from "./causality-graph.js";
4
+ /** 认领关系:谁属于哪个阶段,以及该认领有多确定。全部按**站点 id** 键。 */
5
+ interface PhaseClaims {
6
+ /** 站点 -> 认领它的阶段,按 issue 顺序去重。 */
7
+ bySite: Map<string, string[]>;
8
+ /** `${site}|${phase}` -> 该阶段内部的认领 certainty。 */
9
+ certainty: Map<string, Certainty>;
10
+ /** 阶段 -> 首个成员 issue 的时钟位置;商图事实的排序键。 */
11
+ position: Map<string, number>;
12
+ /** `${site}|${phase}` -> 该站点在该阶段的首次 / 末次 issue 位置(时间可行性判定)。 */
13
+ firstIssue: Map<string, number>;
14
+ lastIssue: Map<string, number>;
15
+ }
16
+ /** 商图的输入:归约后的 step 边(sink 边已剔除),certainty 已按端点继承过。 */
17
+ export interface PhaseSourceFact {
18
+ from: string;
19
+ to: string;
20
+ kind: OrderKind;
21
+ certainty: Certainty;
22
+ /** carry 边改型前的底层 kind;carry 最小化按它判见证强度。 */
23
+ carryOf?: Exclude<OrderKind, "carry">;
24
+ /**
25
+ * 见证这条事实的 issue 事件所在的阶段集(只有 await 屏障产生的 seq 事实带它;见
26
+ * causality-graph.ts 的 `Fact.toPhases`)。头端收窄按 {@link headPhasesOf}。
27
+ */
28
+ toPhases?: ReadonlySet<string>;
29
+ }
30
+ /**
31
+ * 从 issue 事件读出认领关系。issue 是 step 的身份时刻,所以这一趟就是全部的归属逻辑。
32
+ *
33
+ * 每个 (站点, 阶段) 的 certainty 单独推导:该阶段内**存在**一次区域链确定的 issue,且该
34
+ * step 不是 control 边的目标。逐字对应 causality-graph.ts 的 `certaintyOf`,只是把「所有
35
+ * issue」换成「该阶段的 issue」——共享 helper 在 preflight(顶层)与 gate(循环+分支内)
36
+ * 各一份拷贝时,两份的 certainty 因此可以不同,这正是拷贝要单独推导的理由。
37
+ */
38
+ export declare function collectPhaseClaims(events: readonly OrderEvent[], steps: ReadonlySet<string>, certainChain: (chain: readonly string[]) => boolean, controlled: ReadonlySet<string>): PhaseClaims;
39
+ /**
40
+ * 把阶段词汇表加到完成的因果图上:拷贝、`Step.phase`、阶段表、阶段边。
41
+ *
42
+ * 在 `expandMaySetLanes` **之后**运行(对车道拷贝逐份认领),且与它同为「对成品图的机械
43
+ * 改写」:步骤集、车道、region、step 边的既有内容都不重算。
44
+ */
45
+ export declare function projectPhaseGraph(graph: CausalityGraph, phases: readonly PhaseInfo[], claims: PhaseClaims, facts: readonly PhaseSourceFact[], sharesIteration: (a: string, b: string) => boolean): CausalityGraph;
46
+ export {};
47
+ //# sourceMappingURL=phase-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-graph.d.ts","sourceRoot":"","sources":["../../src/analysis/phase-graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAA0B,MAAM,sBAAsB,CAAC;AAuB9F,6CAA6C;AAC7C,UAAU,WAAW;IACnB,iCAAiC;IACjC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9B,gDAAgD;IAChD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,uCAAuC;IACvC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,+DAA+D;IAC/D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAChC;AAiBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,EACnD,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAC9B,WAAW,CA+Bb;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,GACjD,cAAc,CAoOhB"}
@@ -0,0 +1,334 @@
1
+ import { UNPHASED_ID } from "./constants.js";
2
+ import { KIND_RANK, reduceOrdering } from "./causality-reduce.js";
3
+ /**
4
+ * 阶段视图:作者用 `phase("名字")` 标记施加的分组,以及它在因果图上的**商图**
5
+ *
6
+ * 因果图本体一字不动——这里只做两件事,都是对已完成的图的机械改写:
7
+ *
8
+ * - **跨阶段拷贝**:被 k>1 个阶段认领的 step 变成 k 份拷贝(`~` 后缀 id + `source` 联
9
+ * key,与 may-set 车道拷贝同机制、同分隔符),使「每个 step 恰有一个 phase」的全划分
10
+ * 成立;
11
+ * - **商图**:归约后的 step 边按认领关系投影到阶段对上,去重后跑同一个
12
+ * {@link reduceOrdering}。
13
+ *
14
+ * 零标记脚本这里整体是恒等函数:三个字段全部缺席,既有快照逐字节不动。这不是优化,是
15
+ * 契约——UI 的视图切换条件就是「阶段词汇表在场与否」。
16
+ *
17
+ * 单独一个模块而不是塞进 causality-graph.ts:那份文件已经在 max-lines 上,而阶段是它
18
+ * 上面的一层视图,正如因果图是站点图上面的一层视图。
19
+ */
20
+ /** 拷贝 id 分隔符:与 may-set 车道拷贝同一个(两种展开叠加时形如 `ask#2~actor#1~phase#2`)。 */
21
+ const COPY_SEPARATOR = "~";
22
+ /**
23
+ * 一条边的头端应落在哪些阶段上:**有来源信息就取交集,没有就全展开**。
24
+ *
25
+ * 拷贝改写与商图投影必须用同一条规则,否则 `phaseEdges` 和下钻里的 step 边会讲两个不同的
26
+ * 故事——这是把两个消费者绑在一个函数上的全部理由。
27
+ *
28
+ * 交集在实践中等于 `toPhases` 自己(屏障事实的见证阶段必然是头站点的认领阶段),交集写出来
29
+ * 是为了让「阶段被丢弃/收窄」这类上游变化不会把边挂到不存在的阶段上。
30
+ */
31
+ function headPhasesOf(claiming, toPhases) {
32
+ if (toPhases === undefined)
33
+ return [...claiming];
34
+ const narrowed = claiming.filter((phase) => toPhases.has(phase));
35
+ return narrowed.length > 0 ? narrowed : [...claiming];
36
+ }
37
+ /**
38
+ * 从 issue 事件读出认领关系。issue 是 step 的身份时刻,所以这一趟就是全部的归属逻辑。
39
+ *
40
+ * 每个 (站点, 阶段) 的 certainty 单独推导:该阶段内**存在**一次区域链确定的 issue,且该
41
+ * step 不是 control 边的目标。逐字对应 causality-graph.ts 的 `certaintyOf`,只是把「所有
42
+ * issue」换成「该阶段的 issue」——共享 helper 在 preflight(顶层)与 gate(循环+分支内)
43
+ * 各一份拷贝时,两份的 certainty 因此可以不同,这正是拷贝要单独推导的理由。
44
+ */
45
+ export function collectPhaseClaims(events, steps, certainChain, controlled) {
46
+ const bySite = new Map();
47
+ const position = new Map();
48
+ const firstIssue = new Map();
49
+ const lastIssue = new Map();
50
+ const certainSeen = new Set();
51
+ // 与 causality-graph.ts 同一个时钟:每个 issue 事件走一格,不论它是否落在图里的 step 上。
52
+ let clock = 0;
53
+ for (const event of events) {
54
+ if (event.at !== "issue")
55
+ continue;
56
+ const at = clock;
57
+ clock += 1;
58
+ if (!steps.has(event.step))
59
+ continue;
60
+ const claiming = bySite.get(event.step);
61
+ if (claiming === undefined)
62
+ bySite.set(event.step, [event.phase]);
63
+ else if (!claiming.includes(event.phase))
64
+ claiming.push(event.phase);
65
+ if (!position.has(event.phase))
66
+ position.set(event.phase, at);
67
+ const key = `${event.step}|${event.phase}`;
68
+ if (!firstIssue.has(key))
69
+ firstIssue.set(key, at);
70
+ lastIssue.set(key, at);
71
+ if (certainChain(event.regions))
72
+ certainSeen.add(key);
73
+ }
74
+ const certainty = new Map();
75
+ for (const [site, claiming] of bySite) {
76
+ for (const phase of claiming) {
77
+ const key = `${site}|${phase}`;
78
+ certainty.set(key, certainSeen.has(key) && !controlled.has(site) ? "always" : "maybe");
79
+ }
80
+ }
81
+ return { bySite, certainty, firstIssue, lastIssue, position };
82
+ }
83
+ /**
84
+ * 把阶段词汇表加到完成的因果图上:拷贝、`Step.phase`、阶段表、阶段边。
85
+ *
86
+ * 在 `expandMaySetLanes` **之后**运行(对车道拷贝逐份认领),且与它同为「对成品图的机械
87
+ * 改写」:步骤集、车道、region、step 边的既有内容都不重算。
88
+ */
89
+ export function projectPhaseGraph(graph, phases, claims, facts, sharesIteration) {
90
+ if (phases.length === 0)
91
+ return graph; // 零标记 → 零词汇表,图逐字节不动
92
+ const claimsOf = (siteId) => claims.bySite.get(siteId) ?? [UNPHASED_ID];
93
+ const certaintyOfClaim = (siteId, phase) => claims.certainty.get(`${siteId}|${phase}`) ?? "maybe";
94
+ /**
95
+ * 时间可行性:一条 a→b 的边能不能落在拷贝对 (a@P, b@Q) 上。
96
+ *
97
+ * 每份阶段拷贝**占据一个时间位置**,这是它与 may-set 车道拷贝的根本差别——车道拷贝同 rank
98
+ * 并排,全展开不会断言任何顺序;阶段拷贝全展开会断言假的顺序(「gate 的 bench settle 在
99
+ * preflight 的 bench issue 之前」)。而这里的信息 walk 是有的:每个 (站点, 阶段) 的 issue
100
+ * 位置。多序是被许可的方向,错序不是。
101
+ *
102
+ * 两条通道,或关系:
103
+ * - **位置**:b 在 Q 里至少有一次 issue 落在 a 在 P 里首次 issue 之后;
104
+ * - **重复**:两个站点共享一个封闭迭代区域。这条**不是可选项**——第 k 轮的生产者喂第
105
+ * k+1 轮的拷贝,位置上是「在前」而实际可实现(reduce-accumulator 的教训)。去掉它,
106
+ * 跨阶段的循环携带数据会整片消失,而那是凭空造出并发,唯一被禁止的方向。
107
+ *
108
+ * 与 causality-graph.ts 的 `realizableCarry` 共用同一个 `sharesIteration`:同一个关系上的
109
+ * 同一个问题,两处不能各答一次。
110
+ */
111
+ const admits = (from, fromPhase, to, toPhase) => {
112
+ const firstFrom = claims.firstIssue.get(`${from}|${fromPhase}`);
113
+ const lastTo = claims.lastIssue.get(`${to}|${toPhase}`);
114
+ if (firstFrom === undefined || lastTo === undefined)
115
+ return true; // 无位置可判:不拦
116
+ return lastTo > firstFrom || sharesIteration(from, to);
117
+ };
118
+ /**
119
+ * 受时间可行性约束的 kind。`carry` 不在内:它自己的可实现性在 `realizableCarry` 已经判过,
120
+ * 而且 carry 断言的就是「下一轮」,位置比较对它无意义。`fifo` 不在内:车道规则已经决定了
121
+ * 它,且同站点的两份拷贝共享车道、确实彼此 FIFO 排序。
122
+ */
123
+ const ADMITTED_KINDS = new Set(["data", "control", "seq"]);
124
+ // --- 1. 跨阶段拷贝 ---------------------------------------------------------------
125
+ // 拷贝是 **both-run,不是候选**——不要顺手按 may-set 拷贝的类比改成 maybe。站点真的从
126
+ // 两个调用方各自发出(共享 helper 在 preflight 与 gate 各跑一次),两份都会执行;每份的
127
+ // certainty 只反映**它自己那个阶段**的认领有多确定,不表示「二者之一」。
128
+ //
129
+ // `region` 与 `repeat` 是**站点级事实**(取自站点首次 issue),故意不按阶段重算:拷贝是
130
+ // 对成品图的机械改写,重算区域归属要的是每阶段一份的 region 树,那是另一个决定。所以
131
+ // gate 那份 bench 拷贝带着 preflight 首个 issue 的 `region` 和 `stack`——不要在没有决定
132
+ // 的情况下把它「修好」。
133
+ const copiesOf = new Map();
134
+ for (const step of graph.steps) {
135
+ const siteId = step.source ?? step.id;
136
+ const claiming = claimsOf(siteId);
137
+ if (claiming.length < 2)
138
+ continue;
139
+ copiesOf.set(step.id, claiming.map((phase) => ({
140
+ ...step,
141
+ certainty: weakest([step.certainty, certaintyOfClaim(siteId, phase)]),
142
+ id: `${step.id}${COPY_SEPARATOR}${phase}`,
143
+ phase,
144
+ // `source` 是运行时实际上报的站点 id,**只设一次**:车道拷贝已经带上了,沿用。
145
+ source: siteId,
146
+ })));
147
+ }
148
+ const steps = graph.steps.flatMap((step) => {
149
+ const copies = copiesOf.get(step.id);
150
+ if (copies !== undefined)
151
+ return copies;
152
+ // k = 1:认领唯一,所以该阶段的 certainty 与 step 自己的逐字相等(全部 issue 都在
153
+ // 这个阶段里),不必覆盖。
154
+ return [{ ...step, phase: claimsOf(step.source ?? step.id)[0] }];
155
+ });
156
+ // --- 2. 边改写:镜像 expandMaySetLanes 的机制 --------------------------------------
157
+ const stepById = new Map(graph.steps.map((step) => [step.id, step]));
158
+ const siteOf = (id) => {
159
+ const step = stepById.get(id);
160
+ return step === undefined ? id : (step.source ?? step.id);
161
+ };
162
+ // 事实的来源信息按**站点对**索引(事实先于两种拷贝存在,且每个有序对只有一条),所以
163
+ // 车道拷贝的边先折算回站点对再查。
164
+ const provenance = new Map();
165
+ for (const fact of facts) {
166
+ if (fact.toPhases !== undefined)
167
+ provenance.set(`${fact.from}|${fact.to}`, fact.toPhases);
168
+ }
169
+ const endpointsOf = (id, toPhases) => {
170
+ const copies = copiesOf.get(id);
171
+ if (copies !== undefined) {
172
+ const heads = new Set(headPhasesOf(claimsOf(siteOf(id)), toPhases));
173
+ return copies
174
+ .filter((copy) => heads.has(copy.phase))
175
+ .map((copy) => ({
176
+ certainty: copy.certainty,
177
+ id: copy.id,
178
+ lane: copy.lane,
179
+ phase: copy.phase,
180
+ }));
181
+ }
182
+ const step = stepById.get(id);
183
+ return [
184
+ {
185
+ certainty: step?.certainty ?? "maybe",
186
+ id,
187
+ lane: step?.lane,
188
+ phase: claimsOf(siteOf(id))[0],
189
+ },
190
+ ];
191
+ };
192
+ const edges = [];
193
+ for (const edge of graph.edges) {
194
+ // 两端都不是拷贝 → 原样保留。这条早退也是「零标记逐字节不变」的构造性保证:单端点对
195
+ // 从不经过下面任何一条规则。
196
+ if (!copiesOf.has(edge.from) && !copiesOf.has(edge.to)) {
197
+ edges.push(edge);
198
+ continue;
199
+ }
200
+ const fromSite = siteOf(edge.from);
201
+ const toSite = siteOf(edge.to);
202
+ // 尾端不按 provenance 收窄(settle 事件不带阶段),但**尾端同样受时间可行性约束**——
203
+ // 这就是那条尾侧伪边(拷贝排在产出它自己实参的那个 ask 之前)的归宿。
204
+ const pairs = [];
205
+ const admitted = [];
206
+ for (const tail of endpointsOf(edge.from)) {
207
+ for (const head of endpointsOf(edge.to, provenance.get(`${fromSite}|${toSite}`))) {
208
+ // fifo 按车道匹配,与车道展开同一条规则。同站点的阶段拷贝共享车道,所以它们之间的
209
+ // fifo 边幸存——这是对的:一个站点的两次发出确实彼此 FIFO 排序。
210
+ if (edge.kind === "fifo" && tail.lane !== head.lane)
211
+ continue;
212
+ // 同一份拷贝到自己:只有原边本来就是自边时才成立(不同站点的拷贝 id 不可能相等),
213
+ // 所以这是把不变量写下来,不是语料里到达过的分支。
214
+ if (tail.id === head.id && edge.from !== edge.to)
215
+ continue;
216
+ const pair = {
217
+ certainty: weakest([edge.certainty, tail.certainty, head.certainty]),
218
+ from: tail.id,
219
+ to: head.id,
220
+ };
221
+ pairs.push(pair);
222
+ if (!ADMITTED_KINDS.has(edge.kind) || admits(fromSite, tail.phase, toSite, head.phase)) {
223
+ admitted.push(pair);
224
+ }
225
+ }
226
+ }
227
+ // 全被拦下 → 退回全展开,与 {@link headPhasesOf} 同一个姿态:一条真实的序在哪儿都不
228
+ // 可实现,说明位置判断误导了我们,而静默删掉一条真实的序就是凭空造出并发。
229
+ for (const pair of admitted.length > 0 ? admitted : pairs) {
230
+ edges.push({ ...edge, ...pair });
231
+ }
232
+ }
233
+ // --- 3. 阶段表:有成员的阶段,unphased 排最前 -------------------------------------
234
+ const members = new Set(steps.map((step) => step.phase));
235
+ const phaseList = [];
236
+ if (members.has(UNPHASED_ID))
237
+ phaseList.push({ id: UNPHASED_ID });
238
+ for (const phase of phases) {
239
+ // 成员为零的阶段丢掉(may-set 收窄可能把某阶段的全部 step 拿走)——空节点没有家可指。
240
+ if (!members.has(phase.id))
241
+ continue;
242
+ phaseList.push({
243
+ id: phase.id,
244
+ loc: phase.loc,
245
+ name: phase.name,
246
+ ...(phase.fill === undefined ? {} : { fill: phase.fill }),
247
+ });
248
+ }
249
+ const live = new Set(phaseList.map((phase) => phase.id));
250
+ // --- 4. 商图:在认领关系上算,不依赖拷贝的物化 ------------------------------------
251
+ const quotient = [];
252
+ for (const fact of facts) {
253
+ // 与拷贝改写逐条同规则:头端收窄({@link headPhasesOf})+ 时间可行性({@link admits}),
254
+ // 且同样只在至少一端被拷贝时生效。两个消费者不能各讲一个故事——`phaseEdges` 与下钻里的
255
+ // step 边讲的必须是同一件事。
256
+ const tails = claimsOf(fact.from);
257
+ const heads = headPhasesOf(claimsOf(fact.to), fact.toPhases);
258
+ const copied = tails.length > 1 || claimsOf(fact.to).length > 1;
259
+ const gated = copied && ADMITTED_KINDS.has(fact.kind);
260
+ const pairs = [];
261
+ const admitted = [];
262
+ for (const from of tails) {
263
+ for (const to of heads) {
264
+ pairs.push({ from, to });
265
+ if (!gated || admits(fact.from, from, fact.to, to))
266
+ admitted.push({ from, to });
267
+ }
268
+ }
269
+ for (const { from, to } of admitted.length > 0 ? admitted : pairs) {
270
+ if (!live.has(from) || !live.has(to))
271
+ continue;
272
+ // 阶段内序不出图;阶段内的 carry 是「循环整个住在一个阶段里」的画法,留成自环。
273
+ if (from === to && fact.kind !== "carry")
274
+ continue;
275
+ quotient.push({
276
+ certainty: fact.certainty,
277
+ from,
278
+ kind: fact.kind,
279
+ to,
280
+ ...(fact.carryOf === undefined ? {} : { carryOf: fact.carryOf }),
281
+ });
282
+ }
283
+ }
284
+ const position = (id) => claims.position.get(id) ?? 0;
285
+ const deduped = dedupePhaseFacts(quotient).sort((a, b) => position(a.from) - position(b.from) ||
286
+ position(a.to) - position(b.to) ||
287
+ a.kind.localeCompare(b.kind));
288
+ // 阶段边不携带 `exact`:那是 data 边的 taint 见证位,在商上无定义。
289
+ const phaseEdges = reduceOrdering(deduped).map((fact) => ({
290
+ certainty: fact.certainty,
291
+ from: fact.from,
292
+ kind: fact.kind,
293
+ to: fact.to,
294
+ }));
295
+ const sink = graph.sink;
296
+ return {
297
+ edges,
298
+ lanes: graph.lanes,
299
+ phaseEdges,
300
+ phases: phaseList,
301
+ regions: graph.regions,
302
+ steps,
303
+ // 阶段级 sink 边不出图(UI 由 fedBy step 的 phase 推导),但 fedBy 自己要跟着拷贝走。
304
+ ...(sink === undefined
305
+ ? {}
306
+ : { sink: { fedBy: sink.fedBy.flatMap((id) => endpointsOf(id).map((end) => end.id)) } }),
307
+ };
308
+ }
309
+ /**
310
+ * 每个有序阶段对留一条事实:kind 取最强({@link KIND_RANK})、certainty maybe-wins——
311
+ * **逐字镜像 step 级 `dedupeFacts`**,一致性优先(「任一 always 见证即 always」在商上
312
+ * 语义更准)。
313
+ */
314
+ function dedupePhaseFacts(facts) {
315
+ const byPair = new Map();
316
+ for (const fact of facts) {
317
+ const key = `${fact.from}|${fact.to}`;
318
+ const existing = byPair.get(key);
319
+ if (existing === undefined) {
320
+ byPair.set(key, { ...fact });
321
+ continue;
322
+ }
323
+ if (KIND_RANK[fact.kind] > KIND_RANK[existing.kind])
324
+ existing.kind = fact.kind;
325
+ if (existing.carryOf === undefined && fact.carryOf !== undefined)
326
+ existing.carryOf = fact.carryOf;
327
+ if (fact.certainty === "maybe")
328
+ existing.certainty = "maybe";
329
+ }
330
+ return [...byPair.values()];
331
+ }
332
+ function weakest(values) {
333
+ return values.includes("maybe") ? "maybe" : "always";
334
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `phase("…")` 标记的编译期校验。
3
+ *
4
+ * 两条规则,同一个理由——**标记必须在提交前就说清楚它指的是什么**。名字是编译期字面量,
5
+ * 因为阶段集在确认窗上被展示(与 `world.run` 的 cmd 同姿态:运行期才成形的名字没有可展示
6
+ * 的对象);调用必须是独立语句,因为标记的意义就是「从这里到块尾」,一个待在初始化器/
7
+ * 实参/三元臂里的标记没有可指的范围。两条都是**定位诊断**而不是运行期兜底:教改写发生在
8
+ * 便宜的那一侧。
9
+ *
10
+ * 别名逃逸(`const p = phase`)不在这里——`phase` 是 facade 函数声明,facade-misuse 的
11
+ * pass 1 已经拒绝任何非直接调用位置的引用。
12
+ */
13
+ import type { CompileDiagnostic, WorkflowProgram } from "../compiler/compile.js";
14
+ import type { SiteTable } from "./sites.js";
15
+ /** phase 标记的诊断码(9001 = facade-siting、9002 = schema、9003 = world-run,顺延)。 */
16
+ export declare const PHASE_MARKER_CODE = 9004;
17
+ /**
18
+ * 校验收集到的 phase 标记。非空即脚本不可提交(`analyzeWorkflowScript` 与 misuse /
19
+ * world.run 同席处理)。
20
+ *
21
+ * 一个标记可以同时犯两条(`const x = phase(bad)`),两条都报:作者一次就能看全要改什么。
22
+ */
23
+ export declare function collectPhaseMarkerDiagnostics(workflow: WorkflowProgram, table: SiteTable): CompileDiagnostic[];
24
+ //# sourceMappingURL=phases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../src/analysis/phases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAa,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAmBtC;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,SAAS,GACf,iBAAiB,EAAE,CAsBrB"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * `phase("…")` 标记的编译期校验。
3
+ *
4
+ * 两条规则,同一个理由——**标记必须在提交前就说清楚它指的是什么**。名字是编译期字面量,
5
+ * 因为阶段集在确认窗上被展示(与 `world.run` 的 cmd 同姿态:运行期才成形的名字没有可展示
6
+ * 的对象);调用必须是独立语句,因为标记的意义就是「从这里到块尾」,一个待在初始化器/
7
+ * 实参/三元臂里的标记没有可指的范围。两条都是**定位诊断**而不是运行期兜底:教改写发生在
8
+ * 便宜的那一侧。
9
+ *
10
+ * 别名逃逸(`const p = phase`)不在这里——`phase` 是 facade 函数声明,facade-misuse 的
11
+ * pass 1 已经拒绝任何非直接调用位置的引用。
12
+ */
13
+ import ts from "typescript";
14
+ /** phase 标记的诊断码(9001 = facade-siting、9002 = schema、9003 = world-run,顺延)。 */
15
+ export const PHASE_MARKER_CODE = 9004;
16
+ const LITERAL_MESSAGE = 'phase()\'s argument must be a compile-time string literal ("gate" or a no-substitution ' +
17
+ "template): the script's phase names are fixed when it is submitted, because they label " +
18
+ "the graph the user confirms before anything runs. Write the name inline — a name that " +
19
+ "only exists at run time cannot be drawn.";
20
+ const EMPTY_MESSAGE = 'phase("") has no name to show: the phase label is what the confirmation graph draws. ' +
21
+ 'Give the group a word ("preflight", "gate", "wrap-up"), or drop the marker — a script ' +
22
+ "with no markers is perfectly legal and is drawn step by step.";
23
+ const STATEMENT_MESSAGE = 'phase("…") must stand alone as its own statement. The marker claims the rest of the block ' +
24
+ "it stands in, so one in expression position (a variable initializer, an argument, a " +
25
+ "ternary arm) has no rest-of-block to claim. Put the call on its own line at the head of " +
26
+ "the steps it names.";
27
+ /**
28
+ * 校验收集到的 phase 标记。非空即脚本不可提交(`analyzeWorkflowScript` 与 misuse /
29
+ * world.run 同席处理)。
30
+ *
31
+ * 一个标记可以同时犯两条(`const x = phase(bad)`),两条都报:作者一次就能看全要改什么。
32
+ */
33
+ export function collectPhaseMarkerDiagnostics(workflow, table) {
34
+ const diagnostics = [];
35
+ const push = (loc, message) => {
36
+ diagnostics.push({ code: PHASE_MARKER_CODE, column: loc.column, line: loc.line, message });
37
+ };
38
+ for (const marker of table.phases) {
39
+ // 名字的诊断落在**出问题的那个表达式**上(缺席时退回调用位置):作者要改的是那一处。
40
+ const nameLoc = marker.nameExpr === undefined
41
+ ? marker.loc
42
+ : workflow.toScriptLoc(marker.nameExpr.getStart(workflow.scriptFile));
43
+ if (marker.name === undefined) {
44
+ push(nameLoc, LITERAL_MESSAGE);
45
+ }
46
+ else if (marker.name.trim() === "") {
47
+ push(nameLoc, EMPTY_MESSAGE);
48
+ }
49
+ if (!ts.isExpressionStatement(marker.call.parent)) {
50
+ push(marker.loc, STATEMENT_MESSAGE);
51
+ }
52
+ }
53
+ return diagnostics;
54
+ }
@@ -0,0 +1,52 @@
1
+ import ts from "typescript";
2
+ import { type AbstractValue } from "./domain.js";
3
+ import type { EvalContext, Evaluator } from "./taint.js";
4
+ /**
5
+ * `new UnknownThing(args)` (a non-class callee: `new Promise(exec)`, `new Set([x])`): the
6
+ * union of the argument collapses (exact preserved, "strings launder nothing"), PLUS the
7
+ * unknown-call keystone — function-valued args are pessimistically applied (their return
8
+ * summary joins the result) — PLUS the promise-executor rule: whatever a function arg feeds
9
+ * to invocations of its OWN parameters joins the result (`new Promise((resolve) =>
10
+ * resolve(draft))` resolves to `draft`; a `reject(x)` arg lands in the pot too, an
11
+ * over-approximation of the rejection path). Generic: `new X(fn)` may invoke fn and capture
12
+ * what fn's params receive — never special-cased by name.
13
+ */
14
+ export declare function handleNewUnknown(ev: Evaluator, node: ts.NewExpression, ctx: EvalContext): AbstractValue;
15
+ /**
16
+ * `await e`: model awaiting a thenable = invoking its `then`. When the awaited value carries
17
+ * a tracked `then` method, the promise resolves to whatever that method feeds its continuation
18
+ * callback (`appliedCallbackTaint`): a custom thenable whose `then(onOk)` calls
19
+ * `draft.then(onOk)` resolves to `draft`. When no `then` fn is visible (a plain settled value,
20
+ * or a thenable collapsed past field-sensitivity), the operand's own taint already flows
21
+ * through unchanged — the await is a passthrough, as before.
22
+ *
23
+ * Both exits also RECORD the returned value as the settle oracle for this await. Recording only; the value returned to
24
+ * the evaluator is untouched, so no transfer rule changes.
25
+ */
26
+ export declare function evalAwait(ev: Evaluator, node: ts.AwaitExpression, ctx: EvalContext): AbstractValue;
27
+ /** `Promise.reject(x)` — a rejected promise. Await unwraps it as a THROW, so feed collapse(x)
28
+ * into the global thrown set (read by every catch binding). Returns collapse(x) as before
29
+ * (the unknown-call result), so nothing on the resolved path regresses. */
30
+ export declare function handlePromiseReject(ev: Evaluator, node: ts.CallExpression, ctx: EvalContext): AbstractValue;
31
+ /** `Promise.reject` on the global Promise (textual match, mirroring {@link isJsonStringify}). */
32
+ export declare function isPromiseReject(access: ts.PropertyAccessExpression): boolean;
33
+ /**
34
+ * Apply a script-local constructor `id` for a `new C(args)` (or a `super(args)` in a
35
+ * derived ctor): record the actuals as the constructor's parameter placeholders and
36
+ * write parameter mutations back into place actuals, exactly like an ordinary direct
37
+ * call. The constructor's OWN body (which writes `this.x = param`) is evaluated in the
38
+ * function pass, so the shared instance picks up the placeholder there; here we only
39
+ * seed the actuals. The instance itself is returned by the caller (NewExpression), never
40
+ * this call's result. A direct `new`/`super` keeps exactness (no clearing).
41
+ */
42
+ export declare function applyConstructor(ev: Evaluator, id: number, ctx: EvalContext, argVals: AbstractValue[], argPlaces?: (AbstractValue | undefined)[], site?: ts.Node): void;
43
+ /**
44
+ * Apply an UNRESOLVABLE-heritage constructor (`new D()` where `class D extends mix(Base)`):
45
+ * the base class is produced by a mixin CALL we cannot resolve statically, so the inherited
46
+ * constructor is unreachable. Sound over-approximation: the ctor may store any argument in any
47
+ * field, so smear the collapsed (INEXACT) args into the instance's container-level taint —
48
+ * surfaced by every field read via smear-on-read — and pessimistically apply function-valued
49
+ * args (the keystone: the base ctor may invoke them). Never a drop.
50
+ */
51
+ export declare function applyMixinConstructor(ev: Evaluator, ctx: EvalContext, instance: AbstractValue, argVals: AbstractValue[]): void;
52
+ //# sourceMappingURL=promise-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise-ops.d.ts","sourceRoot":"","sources":["../../src/analysis/promise-ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAuBzD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE,WAAW,GAAG,aAAa,CAevG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,aAAa,CAgBlG;AAED;;2EAE2E;AAC3E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,aAAa,CAK3G;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,wBAAwB,GAAG,OAAO,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,SAAS,EACb,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,aAAa,EAAE,EACxB,SAAS,CAAC,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,EACzC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,GACb,IAAI,CAEN;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EAAE,GACvB,IAAI,CAMN"}