@sunshaobei/dsh-workflow 0.0.0-stage → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/README.md +43 -2
  2. package/cordis.patch.yml +17 -0
  3. package/lib/client.js +14708 -0
  4. package/lib/core.js +137 -0
  5. package/lib/engine-adapter.js +1387 -0
  6. package/lib/host-driver.js +298 -0
  7. package/lib/index.js +536 -0
  8. package/lib/projection.js +159 -0
  9. package/lib/registry.js +218 -0
  10. package/lib/session-records.js +54 -0
  11. package/lib/submission-commit.js +34 -0
  12. package/lib/world-driver.js +275 -0
  13. package/package.json +64 -4
  14. package/vendor/PROVENANCE.md +9 -0
  15. package/vendor/dynamic-workflow/analysis/actor-graph.d.ts +47 -0
  16. package/vendor/dynamic-workflow/analysis/actor-graph.d.ts.map +1 -0
  17. package/vendor/dynamic-workflow/analysis/actor-graph.js +95 -0
  18. package/vendor/dynamic-workflow/analysis/actor-models.d.ts +60 -0
  19. package/vendor/dynamic-workflow/analysis/actor-models.d.ts.map +1 -0
  20. package/vendor/dynamic-workflow/analysis/actor-models.js +208 -0
  21. package/vendor/dynamic-workflow/analysis/actor-names.d.ts +56 -0
  22. package/vendor/dynamic-workflow/analysis/actor-names.d.ts.map +1 -0
  23. package/vendor/dynamic-workflow/analysis/actor-names.js +155 -0
  24. package/vendor/dynamic-workflow/analysis/analyze.d.ts +63 -0
  25. package/vendor/dynamic-workflow/analysis/analyze.d.ts.map +1 -0
  26. package/vendor/dynamic-workflow/analysis/analyze.js +92 -0
  27. package/vendor/dynamic-workflow/analysis/array-methods.d.ts +21 -0
  28. package/vendor/dynamic-workflow/analysis/array-methods.d.ts.map +1 -0
  29. package/vendor/dynamic-workflow/analysis/array-methods.js +132 -0
  30. package/vendor/dynamic-workflow/analysis/artifact-types.d.ts +39 -0
  31. package/vendor/dynamic-workflow/analysis/artifact-types.d.ts.map +1 -0
  32. package/vendor/dynamic-workflow/analysis/artifact-types.js +114 -0
  33. package/vendor/dynamic-workflow/analysis/artifacts.d.ts +67 -0
  34. package/vendor/dynamic-workflow/analysis/artifacts.d.ts.map +1 -0
  35. package/vendor/dynamic-workflow/analysis/artifacts.js +263 -0
  36. package/vendor/dynamic-workflow/analysis/assign.d.ts +42 -0
  37. package/vendor/dynamic-workflow/analysis/assign.d.ts.map +1 -0
  38. package/vendor/dynamic-workflow/analysis/assign.js +287 -0
  39. package/vendor/dynamic-workflow/analysis/callbacks.d.ts +71 -0
  40. package/vendor/dynamic-workflow/analysis/callbacks.d.ts.map +1 -0
  41. package/vendor/dynamic-workflow/analysis/callbacks.js +133 -0
  42. package/vendor/dynamic-workflow/analysis/calls.d.ts +40 -0
  43. package/vendor/dynamic-workflow/analysis/calls.d.ts.map +1 -0
  44. package/vendor/dynamic-workflow/analysis/calls.js +495 -0
  45. package/vendor/dynamic-workflow/analysis/causality-graph-lanes.d.ts +25 -0
  46. package/vendor/dynamic-workflow/analysis/causality-graph-lanes.d.ts.map +1 -0
  47. package/vendor/dynamic-workflow/analysis/causality-graph-lanes.js +161 -0
  48. package/vendor/dynamic-workflow/analysis/causality-graph-types.d.ts +163 -0
  49. package/vendor/dynamic-workflow/analysis/causality-graph-types.d.ts.map +1 -0
  50. package/vendor/dynamic-workflow/analysis/causality-graph-types.js +8 -0
  51. package/vendor/dynamic-workflow/analysis/causality-graph.d.ts +39 -0
  52. package/vendor/dynamic-workflow/analysis/causality-graph.d.ts.map +1 -0
  53. package/vendor/dynamic-workflow/analysis/causality-graph.js +530 -0
  54. package/vendor/dynamic-workflow/analysis/causality-order-calls.d.ts +29 -0
  55. package/vendor/dynamic-workflow/analysis/causality-order-calls.d.ts.map +1 -0
  56. package/vendor/dynamic-workflow/analysis/causality-order-calls.js +266 -0
  57. package/vendor/dynamic-workflow/analysis/causality-order-functions.d.ts +26 -0
  58. package/vendor/dynamic-workflow/analysis/causality-order-functions.d.ts.map +1 -0
  59. package/vendor/dynamic-workflow/analysis/causality-order-functions.js +116 -0
  60. package/vendor/dynamic-workflow/analysis/causality-order-loops.d.ts +5 -0
  61. package/vendor/dynamic-workflow/analysis/causality-order-loops.d.ts.map +1 -0
  62. package/vendor/dynamic-workflow/analysis/causality-order-loops.js +148 -0
  63. package/vendor/dynamic-workflow/analysis/causality-order-settle.d.ts +39 -0
  64. package/vendor/dynamic-workflow/analysis/causality-order-settle.d.ts.map +1 -0
  65. package/vendor/dynamic-workflow/analysis/causality-order-settle.js +263 -0
  66. package/vendor/dynamic-workflow/analysis/causality-order-state.d.ts +110 -0
  67. package/vendor/dynamic-workflow/analysis/causality-order-state.d.ts.map +1 -0
  68. package/vendor/dynamic-workflow/analysis/causality-order-state.js +162 -0
  69. package/vendor/dynamic-workflow/analysis/causality-order-strands.d.ts +79 -0
  70. package/vendor/dynamic-workflow/analysis/causality-order-strands.d.ts.map +1 -0
  71. package/vendor/dynamic-workflow/analysis/causality-order-strands.js +154 -0
  72. package/vendor/dynamic-workflow/analysis/causality-order-types.d.ts +174 -0
  73. package/vendor/dynamic-workflow/analysis/causality-order-types.d.ts.map +1 -0
  74. package/vendor/dynamic-workflow/analysis/causality-order-types.js +1 -0
  75. package/vendor/dynamic-workflow/analysis/causality-order-walk.d.ts +17 -0
  76. package/vendor/dynamic-workflow/analysis/causality-order-walk.d.ts.map +1 -0
  77. package/vendor/dynamic-workflow/analysis/causality-order-walk.js +282 -0
  78. package/vendor/dynamic-workflow/analysis/causality-order.d.ts +60 -0
  79. package/vendor/dynamic-workflow/analysis/causality-order.d.ts.map +1 -0
  80. package/vendor/dynamic-workflow/analysis/causality-order.js +110 -0
  81. package/vendor/dynamic-workflow/analysis/causality-reduce.d.ts +60 -0
  82. package/vendor/dynamic-workflow/analysis/causality-reduce.d.ts.map +1 -0
  83. package/vendor/dynamic-workflow/analysis/causality-reduce.js +198 -0
  84. package/vendor/dynamic-workflow/analysis/classes.d.ts +47 -0
  85. package/vendor/dynamic-workflow/analysis/classes.d.ts.map +1 -0
  86. package/vendor/dynamic-workflow/analysis/classes.js +264 -0
  87. package/vendor/dynamic-workflow/analysis/constants.d.ts +35 -0
  88. package/vendor/dynamic-workflow/analysis/constants.d.ts.map +1 -0
  89. package/vendor/dynamic-workflow/analysis/constants.js +23 -0
  90. package/vendor/dynamic-workflow/analysis/control-flow.d.ts +26 -0
  91. package/vendor/dynamic-workflow/analysis/control-flow.d.ts.map +1 -0
  92. package/vendor/dynamic-workflow/analysis/control-flow.js +132 -0
  93. package/vendor/dynamic-workflow/analysis/core-json.d.ts +45 -0
  94. package/vendor/dynamic-workflow/analysis/core-json.d.ts.map +1 -0
  95. package/vendor/dynamic-workflow/analysis/core-json.js +49 -0
  96. package/vendor/dynamic-workflow/analysis/core.d.ts +194 -0
  97. package/vendor/dynamic-workflow/analysis/core.d.ts.map +1 -0
  98. package/vendor/dynamic-workflow/analysis/core.js +204 -0
  99. package/vendor/dynamic-workflow/analysis/domain.d.ts +269 -0
  100. package/vendor/dynamic-workflow/analysis/domain.d.ts.map +1 -0
  101. package/vendor/dynamic-workflow/analysis/domain.js +523 -0
  102. package/vendor/dynamic-workflow/analysis/facade-misuse.d.ts +56 -0
  103. package/vendor/dynamic-workflow/analysis/facade-misuse.d.ts.map +1 -0
  104. package/vendor/dynamic-workflow/analysis/facade-misuse.js +350 -0
  105. package/vendor/dynamic-workflow/analysis/fanout-cardinality.d.ts +11 -0
  106. package/vendor/dynamic-workflow/analysis/fanout-cardinality.d.ts.map +1 -0
  107. package/vendor/dynamic-workflow/analysis/fanout-cardinality.js +121 -0
  108. package/vendor/dynamic-workflow/analysis/flow-graph.d.ts +113 -0
  109. package/vendor/dynamic-workflow/analysis/flow-graph.d.ts.map +1 -0
  110. package/vendor/dynamic-workflow/analysis/flow-graph.js +411 -0
  111. package/vendor/dynamic-workflow/analysis/flow-phase.d.ts +28 -0
  112. package/vendor/dynamic-workflow/analysis/flow-phase.d.ts.map +1 -0
  113. package/vendor/dynamic-workflow/analysis/flow-phase.js +104 -0
  114. package/vendor/dynamic-workflow/analysis/flow-strands.d.ts +39 -0
  115. package/vendor/dynamic-workflow/analysis/flow-strands.d.ts.map +1 -0
  116. package/vendor/dynamic-workflow/analysis/flow-strands.js +47 -0
  117. package/vendor/dynamic-workflow/analysis/flow-tree.d.ts +35 -0
  118. package/vendor/dynamic-workflow/analysis/flow-tree.d.ts.map +1 -0
  119. package/vendor/dynamic-workflow/analysis/flow-tree.js +33 -0
  120. package/vendor/dynamic-workflow/analysis/graph.d.ts +5 -0
  121. package/vendor/dynamic-workflow/analysis/graph.d.ts.map +1 -0
  122. package/vendor/dynamic-workflow/analysis/graph.js +199 -0
  123. package/vendor/dynamic-workflow/analysis/handoff-graph.d.ts +48 -0
  124. package/vendor/dynamic-workflow/analysis/handoff-graph.d.ts.map +1 -0
  125. package/vendor/dynamic-workflow/analysis/handoff-graph.js +0 -0
  126. package/vendor/dynamic-workflow/analysis/heap-ops.d.ts +14 -0
  127. package/vendor/dynamic-workflow/analysis/heap-ops.d.ts.map +1 -0
  128. package/vendor/dynamic-workflow/analysis/heap-ops.js +70 -0
  129. package/vendor/dynamic-workflow/analysis/hole-id.d.ts +28 -0
  130. package/vendor/dynamic-workflow/analysis/hole-id.d.ts.map +1 -0
  131. package/vendor/dynamic-workflow/analysis/hole-id.js +41 -0
  132. package/vendor/dynamic-workflow/analysis/hole-sites.d.ts +32 -0
  133. package/vendor/dynamic-workflow/analysis/hole-sites.d.ts.map +1 -0
  134. package/vendor/dynamic-workflow/analysis/hole-sites.js +215 -0
  135. package/vendor/dynamic-workflow/analysis/hole-splice.d.ts +45 -0
  136. package/vendor/dynamic-workflow/analysis/hole-splice.d.ts.map +1 -0
  137. package/vendor/dynamic-workflow/analysis/hole-splice.js +100 -0
  138. package/vendor/dynamic-workflow/analysis/interpret.d.ts +26 -0
  139. package/vendor/dynamic-workflow/analysis/interpret.d.ts.map +1 -0
  140. package/vendor/dynamic-workflow/analysis/interpret.js +200 -0
  141. package/vendor/dynamic-workflow/analysis/literals.d.ts +18 -0
  142. package/vendor/dynamic-workflow/analysis/literals.d.ts.map +1 -0
  143. package/vendor/dynamic-workflow/analysis/literals.js +125 -0
  144. package/vendor/dynamic-workflow/analysis/mermaid.d.ts +60 -0
  145. package/vendor/dynamic-workflow/analysis/mermaid.d.ts.map +1 -0
  146. package/vendor/dynamic-workflow/analysis/mermaid.js +477 -0
  147. package/vendor/dynamic-workflow/analysis/patterns.d.ts +31 -0
  148. package/vendor/dynamic-workflow/analysis/patterns.d.ts.map +1 -0
  149. package/vendor/dynamic-workflow/analysis/patterns.js +94 -0
  150. package/vendor/dynamic-workflow/analysis/phase-graph.d.ts +47 -0
  151. package/vendor/dynamic-workflow/analysis/phase-graph.d.ts.map +1 -0
  152. package/vendor/dynamic-workflow/analysis/phase-graph.js +334 -0
  153. package/vendor/dynamic-workflow/analysis/phases.d.ts +24 -0
  154. package/vendor/dynamic-workflow/analysis/phases.d.ts.map +1 -0
  155. package/vendor/dynamic-workflow/analysis/phases.js +54 -0
  156. package/vendor/dynamic-workflow/analysis/promise-ops.d.ts +52 -0
  157. package/vendor/dynamic-workflow/analysis/promise-ops.d.ts.map +1 -0
  158. package/vendor/dynamic-workflow/analysis/promise-ops.js +123 -0
  159. package/vendor/dynamic-workflow/analysis/relays.d.ts +12 -0
  160. package/vendor/dynamic-workflow/analysis/relays.d.ts.map +1 -0
  161. package/vendor/dynamic-workflow/analysis/relays.js +78 -0
  162. package/vendor/dynamic-workflow/analysis/serialize.d.ts +125 -0
  163. package/vendor/dynamic-workflow/analysis/serialize.d.ts.map +1 -0
  164. package/vendor/dynamic-workflow/analysis/serialize.js +321 -0
  165. package/vendor/dynamic-workflow/analysis/site-phases.d.ts +32 -0
  166. package/vendor/dynamic-workflow/analysis/site-phases.d.ts.map +1 -0
  167. package/vendor/dynamic-workflow/analysis/site-phases.js +69 -0
  168. package/vendor/dynamic-workflow/analysis/sites-labels.d.ts +71 -0
  169. package/vendor/dynamic-workflow/analysis/sites-labels.d.ts.map +1 -0
  170. package/vendor/dynamic-workflow/analysis/sites-labels.js +189 -0
  171. package/vendor/dynamic-workflow/analysis/sites.d.ts +267 -0
  172. package/vendor/dynamic-workflow/analysis/sites.d.ts.map +1 -0
  173. package/vendor/dynamic-workflow/analysis/sites.js +225 -0
  174. package/vendor/dynamic-workflow/analysis/state.d.ts +254 -0
  175. package/vendor/dynamic-workflow/analysis/state.d.ts.map +1 -0
  176. package/vendor/dynamic-workflow/analysis/state.js +569 -0
  177. package/vendor/dynamic-workflow/analysis/taint.d.ts +97 -0
  178. package/vendor/dynamic-workflow/analysis/taint.d.ts.map +1 -0
  179. package/vendor/dynamic-workflow/analysis/taint.js +649 -0
  180. package/vendor/dynamic-workflow/analysis/types.d.ts +100 -0
  181. package/vendor/dynamic-workflow/analysis/types.d.ts.map +1 -0
  182. package/vendor/dynamic-workflow/analysis/types.js +1 -0
  183. package/vendor/dynamic-workflow/analysis/world-run.d.ts +27 -0
  184. package/vendor/dynamic-workflow/analysis/world-run.d.ts.map +1 -0
  185. package/vendor/dynamic-workflow/analysis/world-run.js +44 -0
  186. package/vendor/dynamic-workflow/compiler/compile.d.ts +59 -0
  187. package/vendor/dynamic-workflow/compiler/compile.d.ts.map +1 -0
  188. package/vendor/dynamic-workflow/compiler/compile.js +159 -0
  189. package/vendor/dynamic-workflow/compiler/libs.generated.d.ts +3 -0
  190. package/vendor/dynamic-workflow/compiler/libs.generated.d.ts.map +1 -0
  191. package/vendor/dynamic-workflow/compiler/libs.generated.js +64 -0
  192. package/vendor/dynamic-workflow/engine/artifact-spec.d.ts +26 -0
  193. package/vendor/dynamic-workflow/engine/artifact-spec.d.ts.map +1 -0
  194. package/vendor/dynamic-workflow/engine/artifact-spec.js +173 -0
  195. package/vendor/dynamic-workflow/engine/ask-observation-types.d.ts +54 -0
  196. package/vendor/dynamic-workflow/engine/ask-observation-types.d.ts.map +1 -0
  197. package/vendor/dynamic-workflow/engine/ask-observation-types.js +19 -0
  198. package/vendor/dynamic-workflow/engine/cached-ask-facts.d.ts +28 -0
  199. package/vendor/dynamic-workflow/engine/cached-ask-facts.d.ts.map +1 -0
  200. package/vendor/dynamic-workflow/engine/cached-ask-facts.js +35 -0
  201. package/vendor/dynamic-workflow/engine/concurrency.d.ts +151 -0
  202. package/vendor/dynamic-workflow/engine/concurrency.d.ts.map +1 -0
  203. package/vendor/dynamic-workflow/engine/concurrency.js +282 -0
  204. package/vendor/dynamic-workflow/engine/engine-artifacts-primary.d.ts +17 -0
  205. package/vendor/dynamic-workflow/engine/engine-artifacts-primary.d.ts.map +1 -0
  206. package/vendor/dynamic-workflow/engine/engine-artifacts-primary.js +29 -0
  207. package/vendor/dynamic-workflow/engine/engine-artifacts.d.ts +55 -0
  208. package/vendor/dynamic-workflow/engine/engine-artifacts.d.ts.map +1 -0
  209. package/vendor/dynamic-workflow/engine/engine-artifacts.js +367 -0
  210. package/vendor/dynamic-workflow/engine/engine-config.d.ts +90 -0
  211. package/vendor/dynamic-workflow/engine/engine-config.d.ts.map +1 -0
  212. package/vendor/dynamic-workflow/engine/engine-config.js +6 -0
  213. package/vendor/dynamic-workflow/engine/engine-holes.d.ts +116 -0
  214. package/vendor/dynamic-workflow/engine/engine-holes.d.ts.map +1 -0
  215. package/vendor/dynamic-workflow/engine/engine-holes.js +142 -0
  216. package/vendor/dynamic-workflow/engine/engine-launch.d.ts +34 -0
  217. package/vendor/dynamic-workflow/engine/engine-launch.d.ts.map +1 -0
  218. package/vendor/dynamic-workflow/engine/engine-launch.js +26 -0
  219. package/vendor/dynamic-workflow/engine/engine-phase-stamp.d.ts +35 -0
  220. package/vendor/dynamic-workflow/engine/engine-phase-stamp.d.ts.map +1 -0
  221. package/vendor/dynamic-workflow/engine/engine-phase-stamp.js +74 -0
  222. package/vendor/dynamic-workflow/engine/engine-report.d.ts +27 -0
  223. package/vendor/dynamic-workflow/engine/engine-report.d.ts.map +1 -0
  224. package/vendor/dynamic-workflow/engine/engine-report.js +151 -0
  225. package/vendor/dynamic-workflow/engine/engine-resume.d.ts +18 -0
  226. package/vendor/dynamic-workflow/engine/engine-resume.d.ts.map +1 -0
  227. package/vendor/dynamic-workflow/engine/engine-resume.js +38 -0
  228. package/vendor/dynamic-workflow/engine/engine-settlement.d.ts +30 -0
  229. package/vendor/dynamic-workflow/engine/engine-settlement.d.ts.map +1 -0
  230. package/vendor/dynamic-workflow/engine/engine-settlement.js +79 -0
  231. package/vendor/dynamic-workflow/engine/engine-state.d.ts +99 -0
  232. package/vendor/dynamic-workflow/engine/engine-state.d.ts.map +1 -0
  233. package/vendor/dynamic-workflow/engine/engine-state.js +13 -0
  234. package/vendor/dynamic-workflow/engine/engine-world.d.ts +36 -0
  235. package/vendor/dynamic-workflow/engine/engine-world.d.ts.map +1 -0
  236. package/vendor/dynamic-workflow/engine/engine-world.js +189 -0
  237. package/vendor/dynamic-workflow/engine/engine.d.ts +263 -0
  238. package/vendor/dynamic-workflow/engine/engine.d.ts.map +1 -0
  239. package/vendor/dynamic-workflow/engine/engine.js +602 -0
  240. package/vendor/dynamic-workflow/engine/errors.d.ts +87 -0
  241. package/vendor/dynamic-workflow/engine/errors.d.ts.map +1 -0
  242. package/vendor/dynamic-workflow/engine/errors.js +56 -0
  243. package/vendor/dynamic-workflow/engine/hash-mismatch.d.ts +10 -0
  244. package/vendor/dynamic-workflow/engine/hash-mismatch.d.ts.map +1 -0
  245. package/vendor/dynamic-workflow/engine/hash-mismatch.js +15 -0
  246. package/vendor/dynamic-workflow/engine/hash.d.ts +16 -0
  247. package/vendor/dynamic-workflow/engine/hash.d.ts.map +1 -0
  248. package/vendor/dynamic-workflow/engine/hash.js +48 -0
  249. package/vendor/dynamic-workflow/engine/imported-cache-types.d.ts +96 -0
  250. package/vendor/dynamic-workflow/engine/imported-cache-types.d.ts.map +1 -0
  251. package/vendor/dynamic-workflow/engine/imported-cache-types.js +6 -0
  252. package/vendor/dynamic-workflow/engine/imported-cache.d.ts +127 -0
  253. package/vendor/dynamic-workflow/engine/imported-cache.d.ts.map +1 -0
  254. package/vendor/dynamic-workflow/engine/imported-cache.js +244 -0
  255. package/vendor/dynamic-workflow/engine/index.d.ts +11 -0
  256. package/vendor/dynamic-workflow/engine/index.d.ts.map +1 -0
  257. package/vendor/dynamic-workflow/engine/index.js +10 -0
  258. package/vendor/dynamic-workflow/engine/journal-memory.d.ts +32 -0
  259. package/vendor/dynamic-workflow/engine/journal-memory.d.ts.map +1 -0
  260. package/vendor/dynamic-workflow/engine/journal-memory.js +243 -0
  261. package/vendor/dynamic-workflow/engine/journal-read-types.d.ts +72 -0
  262. package/vendor/dynamic-workflow/engine/journal-read-types.d.ts.map +1 -0
  263. package/vendor/dynamic-workflow/engine/journal-read-types.js +28 -0
  264. package/vendor/dynamic-workflow/engine/persona.d.ts +20 -0
  265. package/vendor/dynamic-workflow/engine/persona.d.ts.map +1 -0
  266. package/vendor/dynamic-workflow/engine/persona.js +43 -0
  267. package/vendor/dynamic-workflow/engine/replay-order.d.ts +96 -0
  268. package/vendor/dynamic-workflow/engine/replay-order.d.ts.map +1 -0
  269. package/vendor/dynamic-workflow/engine/replay-order.js +229 -0
  270. package/vendor/dynamic-workflow/engine/run-terminal.d.ts +35 -0
  271. package/vendor/dynamic-workflow/engine/run-terminal.d.ts.map +1 -0
  272. package/vendor/dynamic-workflow/engine/run-terminal.js +7 -0
  273. package/vendor/dynamic-workflow/engine/scheduler-submit.d.ts +22 -0
  274. package/vendor/dynamic-workflow/engine/scheduler-submit.d.ts.map +1 -0
  275. package/vendor/dynamic-workflow/engine/scheduler-submit.js +84 -0
  276. package/vendor/dynamic-workflow/engine/scheduler-types.d.ts +105 -0
  277. package/vendor/dynamic-workflow/engine/scheduler-types.d.ts.map +1 -0
  278. package/vendor/dynamic-workflow/engine/scheduler-types.js +17 -0
  279. package/vendor/dynamic-workflow/engine/scheduler.d.ts +113 -0
  280. package/vendor/dynamic-workflow/engine/scheduler.d.ts.map +1 -0
  281. package/vendor/dynamic-workflow/engine/scheduler.js +484 -0
  282. package/vendor/dynamic-workflow/engine/types.d.ts +979 -0
  283. package/vendor/dynamic-workflow/engine/types.d.ts.map +1 -0
  284. package/vendor/dynamic-workflow/engine/types.js +26 -0
  285. package/vendor/dynamic-workflow/engine/world-read-input.d.ts +10 -0
  286. package/vendor/dynamic-workflow/engine/world-read-input.d.ts.map +1 -0
  287. package/vendor/dynamic-workflow/engine/world-read-input.js +55 -0
  288. package/vendor/dynamic-workflow/facade/artifact-caps.d.ts +48 -0
  289. package/vendor/dynamic-workflow/facade/artifact-caps.d.ts.map +1 -0
  290. package/vendor/dynamic-workflow/facade/artifact-caps.js +47 -0
  291. package/vendor/dynamic-workflow/facade/dts-hole.d.ts +16 -0
  292. package/vendor/dynamic-workflow/facade/dts-hole.d.ts.map +1 -0
  293. package/vendor/dynamic-workflow/facade/dts-hole.js +26 -0
  294. package/vendor/dynamic-workflow/facade/dts-model.d.ts +11 -0
  295. package/vendor/dynamic-workflow/facade/dts-model.d.ts.map +1 -0
  296. package/vendor/dynamic-workflow/facade/dts-model.js +18 -0
  297. package/vendor/dynamic-workflow/facade/dts-stream.d.ts +15 -0
  298. package/vendor/dynamic-workflow/facade/dts-stream.d.ts.map +1 -0
  299. package/vendor/dynamic-workflow/facade/dts-stream.js +41 -0
  300. package/vendor/dynamic-workflow/facade/dts.d.ts +29 -0
  301. package/vendor/dynamic-workflow/facade/dts.d.ts.map +1 -0
  302. package/vendor/dynamic-workflow/facade/dts.js +324 -0
  303. package/vendor/dynamic-workflow/facade/registry.d.ts +218 -0
  304. package/vendor/dynamic-workflow/facade/registry.d.ts.map +1 -0
  305. package/vendor/dynamic-workflow/facade/registry.js +203 -0
  306. package/vendor/dynamic-workflow/facade/report-caps.d.ts +40 -0
  307. package/vendor/dynamic-workflow/facade/report-caps.d.ts.map +1 -0
  308. package/vendor/dynamic-workflow/facade/report-caps.js +39 -0
  309. package/vendor/dynamic-workflow/facade/world-read-caps.d.ts +37 -0
  310. package/vendor/dynamic-workflow/facade/world-read-caps.d.ts.map +1 -0
  311. package/vendor/dynamic-workflow/facade/world-read-caps.js +36 -0
  312. package/vendor/dynamic-workflow/index.d.ts +41 -0
  313. package/vendor/dynamic-workflow/index.d.ts.map +1 -0
  314. package/vendor/dynamic-workflow/index.js +51 -0
  315. package/vendor/dynamic-workflow/lowering/index.d.ts +2 -0
  316. package/vendor/dynamic-workflow/lowering/index.d.ts.map +1 -0
  317. package/vendor/dynamic-workflow/lowering/index.js +1 -0
  318. package/vendor/dynamic-workflow/lowering/lower-hole.d.ts +16 -0
  319. package/vendor/dynamic-workflow/lowering/lower-hole.d.ts.map +1 -0
  320. package/vendor/dynamic-workflow/lowering/lower-hole.js +63 -0
  321. package/vendor/dynamic-workflow/lowering/lower.d.ts +82 -0
  322. package/vendor/dynamic-workflow/lowering/lower.d.ts.map +1 -0
  323. package/vendor/dynamic-workflow/lowering/lower.js +333 -0
  324. package/vendor/dynamic-workflow/projections.d.ts +26 -0
  325. package/vendor/dynamic-workflow/projections.d.ts.map +1 -0
  326. package/vendor/dynamic-workflow/projections.js +23 -0
  327. package/vendor/dynamic-workflow/schema/actor-submit-profiles.d.ts +49 -0
  328. package/vendor/dynamic-workflow/schema/actor-submit-profiles.d.ts.map +1 -0
  329. package/vendor/dynamic-workflow/schema/actor-submit-profiles.js +69 -0
  330. package/vendor/dynamic-workflow/schema/emit.d.ts +55 -0
  331. package/vendor/dynamic-workflow/schema/emit.d.ts.map +1 -0
  332. package/vendor/dynamic-workflow/schema/emit.js +325 -0
  333. package/vendor/dynamic-workflow/schema/jsdoc.d.ts +10 -0
  334. package/vendor/dynamic-workflow/schema/jsdoc.d.ts.map +1 -0
  335. package/vendor/dynamic-workflow/schema/jsdoc.js +83 -0
  336. package/vendor/dynamic-workflow/schema/serialize.d.ts +8 -0
  337. package/vendor/dynamic-workflow/schema/serialize.d.ts.map +1 -0
  338. package/vendor/dynamic-workflow/schema/serialize.js +20 -0
  339. package/vendor/dynamic-workflow/schema/synthesize.d.ts +48 -0
  340. package/vendor/dynamic-workflow/schema/synthesize.d.ts.map +1 -0
  341. package/vendor/dynamic-workflow/schema/synthesize.js +138 -0
  342. package/vendor/dynamic-workflow/schema/types.d.ts +67 -0
  343. package/vendor/dynamic-workflow/schema/types.d.ts.map +1 -0
  344. package/vendor/dynamic-workflow/schema/types.js +18 -0
  345. package/vendor/dynamic-workflow/schema/validate.d.ts +15 -0
  346. package/vendor/dynamic-workflow/schema/validate.d.ts.map +1 -0
  347. package/vendor/dynamic-workflow/schema/validate.js +213 -0
  348. package/vendor/dynamic-workflow/testing/index.d.ts +6 -0
  349. package/vendor/dynamic-workflow/testing/index.d.ts.map +1 -0
  350. package/vendor/dynamic-workflow/testing/index.js +5 -0
  351. package/vendor/dynamic-workflow/testing/journal-contract-artifacts.d.ts +9 -0
  352. package/vendor/dynamic-workflow/testing/journal-contract-artifacts.d.ts.map +1 -0
  353. package/vendor/dynamic-workflow/testing/journal-contract-artifacts.js +195 -0
  354. package/vendor/dynamic-workflow/testing/journal-contract-events.d.ts +9 -0
  355. package/vendor/dynamic-workflow/testing/journal-contract-events.d.ts.map +1 -0
  356. package/vendor/dynamic-workflow/testing/journal-contract-events.js +163 -0
  357. package/vendor/dynamic-workflow/testing/journal-contract-helpers.d.ts +9 -0
  358. package/vendor/dynamic-workflow/testing/journal-contract-helpers.d.ts.map +1 -0
  359. package/vendor/dynamic-workflow/testing/journal-contract-helpers.js +12 -0
  360. package/vendor/dynamic-workflow/testing/journal-contract-isolation.d.ts +9 -0
  361. package/vendor/dynamic-workflow/testing/journal-contract-isolation.d.ts.map +1 -0
  362. package/vendor/dynamic-workflow/testing/journal-contract-isolation.js +46 -0
  363. package/vendor/dynamic-workflow/testing/journal-contract-nodes.d.ts +9 -0
  364. package/vendor/dynamic-workflow/testing/journal-contract-nodes.d.ts.map +1 -0
  365. package/vendor/dynamic-workflow/testing/journal-contract-nodes.js +234 -0
  366. package/vendor/dynamic-workflow/testing/journal-contract-reads.d.ts +11 -0
  367. package/vendor/dynamic-workflow/testing/journal-contract-reads.d.ts.map +1 -0
  368. package/vendor/dynamic-workflow/testing/journal-contract-reads.js +281 -0
  369. package/vendor/dynamic-workflow/testing/journal-contract-runs.d.ts +9 -0
  370. package/vendor/dynamic-workflow/testing/journal-contract-runs.d.ts.map +1 -0
  371. package/vendor/dynamic-workflow/testing/journal-contract-runs.js +396 -0
  372. package/vendor/dynamic-workflow/testing/journal-contract-script.d.ts +12 -0
  373. package/vendor/dynamic-workflow/testing/journal-contract-script.d.ts.map +1 -0
  374. package/vendor/dynamic-workflow/testing/journal-contract-script.js +82 -0
  375. package/vendor/dynamic-workflow/testing/journal-contract.d.ts +15 -0
  376. package/vendor/dynamic-workflow/testing/journal-contract.d.ts.map +1 -0
  377. package/vendor/dynamic-workflow/testing/journal-contract.js +31 -0
  378. package/vendor/dynamic-workflow-runtime/child-cell-streams.js +128 -0
  379. package/vendor/dynamic-workflow-runtime/child-entry-file.js +43 -0
  380. package/vendor/dynamic-workflow-runtime/child-source.js +299 -0
  381. package/vendor/dynamic-workflow-runtime/harness.js +302 -0
  382. package/vendor/dynamic-workflow-runtime/index.js +4 -0
  383. package/vendor/dynamic-workflow-runtime/protocol.js +2 -0
  384. package/vendor/mcode-host/dynamic-workflow-import.js +269 -0
  385. package/vendor/mcode-host/workflow-git-world-read.js +183 -0
  386. package/vendor/mcode-host/workflow-world-read.js +282 -0
@@ -0,0 +1,367 @@
1
+ /**
2
+ * engine.ts 顶到 oxlint max-lines 上限(400 行),把**用户面产物**(`artifact.*`)的
3
+ * 发布 / 声明 / 准入 / 结算 / resume 恢复拆到本文件;公开面仍从 engine.ts 导出。
4
+ *
5
+ * ⚠ 术语:以下一律指**用户面产物**(脚本发布给用户看的产出),不是 RunSettlement.artifact。
6
+ * 自由函数经 {@link EngineState} 接缝读写引擎状态;WorkflowEngine 上的同名方法只是薄委托。
7
+ */
8
+ import { canonicalJson, inputHash } from "./hash.js";
9
+ import { ARTIFACT_CAPS } from "../facade/artifact-caps.js";
10
+ import { isArtifactPresetOp, } from "../facade/registry.js";
11
+ import { heldResolution } from "./replay-order.js";
12
+ import { primaryArtifactId, primaryConflict, primaryConflictMessage, } from "./engine-artifacts-primary.js";
13
+ import { validateArtifactSpec } from "./artifact-spec.js";
14
+ import { hashMismatch } from "./hash-mismatch.js";
15
+ import { refToString, WorkflowError } from "./types.js";
16
+ /**
17
+ * 发布一个**内容产物**(`artifact.file` / `artifact.markdown`)。效应族:经 driver 拷字节进
18
+ * store,成功兑现 {@link ArtifactRef},失败**可 catch 地拒绝**——脚本的门控习语是
19
+ * `try { await artifact.file(...) } catch { …让子代理补写… }`。
20
+ *
21
+ * 顺序:
22
+ * 1. `nextOrdinal` → journal 命中?命中即短路:比 inputHash,成功记录返回它的 ArtifactRef,
23
+ * **失败记录按记录重新拒绝**(resume 是崩溃恢复,不是复验:一次失败的发布在恢复后仍然
24
+ * 是那次失败,重跑它会让脚本的 catch 分支走两次不同的路)。命中一律**不重发事件**(同 report)。
25
+ * 2. 未命中:种类归属 → id 数上限 → 版本数上限,三条都是节点级拒绝(有 promise 可拒)。
26
+ * 3. 版本号在 dispatch **之前**算好并传给 driver(store 的 toolCallId 里要带它,每版一份字节)。
27
+ * 4. `putNode(running)` → driver → 成功 `putNode(completed)` + `artifact-published`;
28
+ * 失败 `putNode(failed)` + `artifact-failed` → reject。
29
+ *
30
+ * 两条路都**不发任何节点生命周期事件**(node-queued / dispatched / settled):产物站点在两张
31
+ * 图里都不是节点,一条 node-settled 落在这样的站点上会被投影归约进 `nodes[]`,在 run 面板里
32
+ * 变成一个无从解释的未知节点。
33
+ */
34
+ export function publishContentArtifact(state, siteId, op, args) {
35
+ if (state.isRunSettled())
36
+ return Promise.reject(state.runError());
37
+ const ordinal = state.nextOrdinal(siteId);
38
+ const instance = { siteId, ordinal };
39
+ const id = args[0];
40
+ const payload = args[1];
41
+ // 实参形状的运行期护栏(编译期的字面量 id 诊断与 facade 类型是正门):走到这里的非字符串
42
+ // 只可能是有东西绕过了编译。用 DriverError 而不是某个 Artifact* 码——让那些码只表示它们
43
+ // 各自的那件事(同 probeReportItem 对「item 不是 JSON」的取码论证)。
44
+ //
45
+ // 这两条**不落 journal 行、不发事件**,与下面所有失败路径不同。理由是它们是**确定性**的:
46
+ // 结论只由 args 决定,没有 driver 往返,resume 重跑同一个调用必然得到同一个拒绝,所以
47
+ // 不需要一行记录把它钉住(「settled failure 落库」那条要求针对的是 driver 执行过的、
48
+ // 下次未必再失败的那种)。何况这里根本没有 id 可写进 `artifact_id` 或事件——编一个出来
49
+ // 只会让读者以为真有那么一个产物。
50
+ if (typeof id !== "string" || id === "") {
51
+ return Promise.reject(new WorkflowError("DriverError", `artifact.${op}: id must be a non-empty string (at ${refToString(instance)}).`));
52
+ }
53
+ if (typeof payload !== "string") {
54
+ return Promise.reject(new WorkflowError("DriverError", op === "file"
55
+ ? `artifact.file: path must be a string (at ${refToString(instance)}).`
56
+ : `artifact.markdown: content must be a string (at ${refToString(instance)}).`));
57
+ }
58
+ // `opts.primary` 由**引擎**读:driver 对不认识的
59
+ // opts 键一律放行,而「全 run 至多一个 primary」是 run 级事实,只有引擎知道。非布尔值与上面
60
+ // 两条同属确定性护栏——不落行、不发事件。
61
+ const primaryOption = args[2]?.primary;
62
+ if (primaryOption !== undefined && typeof primaryOption !== "boolean") {
63
+ return Promise.reject(new WorkflowError("DriverError", `artifact.${op}: opts.primary must be a boolean (at ${refToString(instance)}).`));
64
+ }
65
+ const hash = inputHash({ args, id, op });
66
+ const recorded = state.journal.getNode(state.runId, siteId, ordinal);
67
+ if (recorded !== undefined) {
68
+ if (recorded.inputHash !== hash) {
69
+ const err = hashMismatch(instance, recorded.inputHash, hash);
70
+ state.failRun(err);
71
+ return Promise.reject(err);
72
+ }
73
+ // 与 ask / world 命中同规:释放点过 replay 次序闸(docs/execution-engine.md
74
+ // 「Replaying the settle order」)。发布是效应、脚本要 await 它,所以它也是一个能决定
75
+ // 后续续体次序的释放点;预置声明是同步 void,从不走这条路,也就从不占闸。
76
+ if (recorded.status === "completed") {
77
+ const record = recorded.result;
78
+ return heldResolution(state.holdForReplay, instance, () => ({
79
+ id: record.id,
80
+ version: record.version,
81
+ }));
82
+ }
83
+ if (recorded.status === "failed") {
84
+ return heldResolution(state.holdForReplay, instance, () => {
85
+ throw WorkflowError.fromJSON(recorded.error);
86
+ });
87
+ }
88
+ // status === "running":崩溃于执行中,落到下面重新 live 执行(字节的拷贝是幂等的,
89
+ // 而版本号从**已 completed 的行数**派生,所以重跑不会跳号)。
90
+ }
91
+ // 粘着:这个 id 已经是 primary,则这一版也是,不管本次有没有再写 `primary`。
92
+ const idState = state.artifacts.get(id);
93
+ const primary = primaryOption === true || idState?.primary === true;
94
+ const admission = admitArtifact(state, id, op, primary);
95
+ if (admission !== undefined) {
96
+ return Promise.reject(settleArtifactFailure(state, instance, hash, { id, op }, admission));
97
+ }
98
+ const version = (idState?.versions ?? 0) + 1;
99
+ const publish = state.driver.executeArtifactPublish;
100
+ if (publish === undefined) {
101
+ // 装配没有 driver 侧的发布能力(纯 replay / 没接 store 的 fake)。**大声的一条命名失败**,
102
+ // 不是静默降级成「发布了一个空产物」——脚本看得见、节点以 failed 落库。
103
+ return Promise.reject(settleArtifactFailure(state, instance, hash, { id, op }, new WorkflowError("ArtifactStoreUnavailable", `Cannot publish "${id}": this host has no artifact store (at ${refToString(instance)}).`)));
104
+ }
105
+ state.journal.putNode({
106
+ runId: state.runId,
107
+ siteId,
108
+ ordinal,
109
+ kind: "artifact",
110
+ inputHash: hash,
111
+ status: "running",
112
+ artifactId: id,
113
+ });
114
+ const request = {
115
+ runId: state.runId,
116
+ siteId,
117
+ ordinal,
118
+ op,
119
+ id,
120
+ version,
121
+ ...(op === "file" ? { path: payload } : { content: payload }),
122
+ ...(args[2] === undefined ? {} : { opts: args[2] }),
123
+ };
124
+ return publish.call(state.driver, request).then((record) => settleArtifactPublish(state, instance, hash, { id, op, version, primary }, record), (cause) => {
125
+ const err = cause instanceof WorkflowError
126
+ ? cause
127
+ : new WorkflowError("DriverError", `Artifact publish failed: ${op} "${id}".`, {
128
+ cause,
129
+ });
130
+ throw settleArtifactFailure(state, instance, hash, { id, op }, err);
131
+ });
132
+ }
133
+ /**
134
+ * 声明一个**预置产物**(`artifact.chart` / `table` / `metrics` / `board`)。声明族:同步、
135
+ * 无返回值、**不经 driver**——一个声明没有可等的东西。
136
+ *
137
+ * 顺序:`nextOrdinal` → 命中即返回 → spec 形状校验
138
+ * → 同 id 既有声明?相同 canonical ⇒ 幂等 no-op(不落新行、不发事件);不同 ⇒ failRun
139
+ * → 上限 → `putNode(completed)` + `artifact-published`。
140
+ *
141
+ * 三种失败(spec 非法 / 同 id 异 spec / 超上限)全是 failRun 而不是拒绝:void 返回没有拒绝
142
+ * 通道,与 `report` 的两个上限同一条论证。
143
+ */
144
+ export function declarePresetArtifact(state, siteId, op, args) {
145
+ if (state.isRunSettled())
146
+ return; // 与 report / log 同
147
+ const ordinal = state.nextOrdinal(siteId);
148
+ const instance = { siteId, ordinal };
149
+ const id = args[0];
150
+ if (typeof id !== "string" || id === "") {
151
+ state.failRun(new WorkflowError("DriverError", `artifact.${op}: id must be a non-empty string (at ${refToString(instance)}).`));
152
+ return;
153
+ }
154
+ const spec = args[1];
155
+ const hash = inputHash({ args, id, op });
156
+ const recorded = state.journal.getNode(state.runId, siteId, ordinal);
157
+ if (recorded !== undefined) {
158
+ if (recorded.inputHash !== hash) {
159
+ state.failRun(hashMismatch(instance, recorded.inputHash, hash));
160
+ return;
161
+ }
162
+ return; // replay 去重:静默跳过(同 report)
163
+ }
164
+ const problem = validateArtifactSpec(op, spec);
165
+ if (problem !== undefined) {
166
+ state.failRun(new WorkflowError("ArtifactSpecInvalid", `Artifact "${id}" has an invalid spec (at ${refToString(instance)}): ${problem}`));
167
+ return;
168
+ }
169
+ const canonical = canonicalJson(spec);
170
+ const idState = state.artifacts.get(id);
171
+ if (idState !== undefined) {
172
+ if (idState.kind !== op) {
173
+ state.failRun(new WorkflowError("ArtifactKindMismatch", `Artifact id "${id}" is already a ${idState.kind} and cannot be declared as a ${op} ` +
174
+ `(at ${refToString(instance)}). An id belongs to one artifact kind for the whole run; ` +
175
+ `use a different id.`));
176
+ return;
177
+ }
178
+ if (idState.spec === canonical)
179
+ return; // 幂等 no-op:不落新行、不发事件
180
+ state.failRun(new WorkflowError("ArtifactRedeclared", `Artifact "${id}" was already declared with a different spec (at ${refToString(instance)}). ` +
181
+ `The spec for one id must stay identical (an identical re-declaration is a no-op); ` +
182
+ `declare it once at the top of the script.`));
183
+ return;
184
+ }
185
+ // `primary` 进 canonical spec,所以同 id 改旗子是 ArtifactRedeclared(上面已经拒了);这里只剩
186
+ // **新** id 想当 primary 而别的 id 已经是——预置族没有拒绝通道,failRun。
187
+ const wantsPrimary = spec.primary === true;
188
+ const holder = wantsPrimary ? primaryArtifactId(state) : undefined;
189
+ if (holder !== undefined && holder !== id) {
190
+ state.failRun(new WorkflowError("ArtifactPrimaryConflict", primaryConflictMessage(id, holder, `declare "${id}" without primary`, instance)));
191
+ return;
192
+ }
193
+ if (state.artifacts.size >= ARTIFACT_CAPS.maxArtifactsPerRun) {
194
+ state.failRun(new WorkflowError("ArtifactCapExceeded", `Cannot declare "${id}": this run already has ${ARTIFACT_CAPS.maxArtifactsPerRun} artifact ` +
195
+ `ids, the maximum. Reuse an existing id or publish fewer artifacts.`));
196
+ return;
197
+ }
198
+ // 声明是**一次写**(同 report):准入与结算之间没有 driver 调用,没有什么能在中间失败。
199
+ const record = presetRecord(id, op, spec);
200
+ state.artifacts.set(id, {
201
+ kind: op,
202
+ spec: canonical,
203
+ versions: 1,
204
+ ...(wantsPrimary ? { primary: true } : {}),
205
+ });
206
+ state.journal.putNode({
207
+ runId: state.runId,
208
+ siteId,
209
+ ordinal,
210
+ kind: "artifact",
211
+ inputHash: hash,
212
+ status: "completed",
213
+ result: record,
214
+ artifactId: id,
215
+ });
216
+ state.record({ type: "artifact-published", instance, artifact: record });
217
+ }
218
+ /**
219
+ * 内容产物的准入:种类归属 → id 数上限 → 版本数上限。返回拒绝理由,`undefined` 即放行。
220
+ *
221
+ * 三条全是**节点级**拒绝(内容成员有 promise 可拒),与预置族里同名的三条形成对照——
222
+ * 那一族只能 failRun。同一个事实、两个通道,差别在返回类型而不是严重程度。
223
+ */
224
+ function admitArtifact(state, id, op, primary) {
225
+ const idState = state.artifacts.get(id);
226
+ if (idState !== undefined && idState.kind !== op) {
227
+ return new WorkflowError("ArtifactKindMismatch", `Artifact id "${id}" is already a ${idState.kind} and cannot be published as a ${op}. An id ` +
228
+ `belongs to one artifact kind for the whole run (publishing the same id again creates a ` +
229
+ `new version, and a version cannot change what it is); use a different id.`);
230
+ }
231
+ // primary 冲突排在上限之前:一个想当交付物的 id 被拒,理由该是「已经有交付物了」,不是「满了」。
232
+ const holder = primaryConflict(state, id, primary);
233
+ if (holder !== undefined) {
234
+ return new WorkflowError("ArtifactPrimaryConflict", primaryConflictMessage(id, holder, `publish "${id}" without primary`, undefined));
235
+ }
236
+ if (idState === undefined && state.artifacts.size >= ARTIFACT_CAPS.maxArtifactsPerRun) {
237
+ return new WorkflowError("ArtifactCapExceeded", `Cannot publish "${id}": this run already has ${ARTIFACT_CAPS.maxArtifactsPerRun} artifact ` +
238
+ `ids, the maximum. Publish a new version of an existing id instead.`);
239
+ }
240
+ if (idState !== undefined && idState.versions >= ARTIFACT_CAPS.maxVersionsPerArtifact) {
241
+ return new WorkflowError("ArtifactVersionCapExceeded", `Artifact "${id}" already has ${idState.versions} versions, the maximum of ` +
242
+ `${ARTIFACT_CAPS.maxVersionsPerArtifact}. Publish the final content in fewer versions.`);
243
+ }
244
+ return undefined;
245
+ }
246
+ /**
247
+ * 内容产物发布成功:落 completed 行 + 记账 + 发 `artifact-published`,返回脚本要的 ref。
248
+ *
249
+ * 身份(id / 种类 / 版本号)一律取**引擎自己算的那份**(`issued`),而不是 driver 回来的
250
+ * 记录里的同名字段:版本号是引擎按 journal 派生并下发的,让它绕 driver 走一圈再读回来,
251
+ * 只会多出一个可以不一致的地方。driver 的记录负责它真正拥有的东西——uri / bytes /
252
+ * contentType / sourcePath——那些整条原样落 journal。
253
+ */
254
+ function settleArtifactPublish(state, instance, hash, issued, record) {
255
+ if (state.isRunSettled())
256
+ throw state.runError();
257
+ // 准入与结算之间隔着一次 driver 往返:两个并发的 primary 发布都能过准入。结算时再查一次,
258
+ // 输的那个走失败路径——failed 行不认领旗子,所以 journal 里永远不会有两个 completed 的 primary。
259
+ const holder = primaryConflict(state, issued.id, issued.primary);
260
+ if (holder !== undefined) {
261
+ throw settleArtifactFailure(state, instance, hash, issued, new WorkflowError("ArtifactPrimaryConflict", primaryConflictMessage(issued.id, holder, `publish "${issued.id}" without primary`, instance)));
262
+ }
263
+ // 旗子由引擎盖章:driver 的记录只负责它真正拥有的东西(uri / bytes / contentType / sourcePath)。
264
+ const stored = issued.primary ? { ...record, primary: true } : record;
265
+ state.journal.putNode({
266
+ runId: state.runId,
267
+ siteId: instance.siteId,
268
+ ordinal: instance.ordinal,
269
+ kind: "artifact",
270
+ inputHash: hash,
271
+ status: "completed",
272
+ result: stored,
273
+ artifactId: issued.id,
274
+ });
275
+ state.artifacts.set(issued.id, {
276
+ kind: issued.op,
277
+ versions: issued.version,
278
+ ...(issued.primary ? { primary: true } : {}),
279
+ });
280
+ state.record({ type: "artifact-published", instance, artifact: stored });
281
+ return { id: issued.id, version: issued.version };
282
+ }
283
+ /**
284
+ * 内容产物发布失败:落 failed 行 + 发 `artifact-failed`,返回要抛出的错误。
285
+ *
286
+ * 落库是重放健全性的既有要求(settled failure 必须在 journal 里),否则 resume 会把一次
287
+ * 已经被脚本 catch 过的失败重跑一遍——那正是「resume 是崩溃恢复不是复验」要防的。
288
+ *
289
+ * node-settled 的读者
290
+ * 会把它归约进 `nodes[]` 并按 site id 去图里找对应节点,而产物站点不进任何图——那会在 run
291
+ * 面板上变成一个无从解释的未知节点。`artifact-failed` 带着渲染一张失败卡需要的东西
292
+ * (id / 种类 / 结构化错误),不冒充一步工作。成功那侧同理只发 `artifact-published`。
293
+ */
294
+ function settleArtifactFailure(state, instance, hash, issued, error) {
295
+ const json = error.toJSON();
296
+ state.journal.putNode({
297
+ runId: state.runId,
298
+ siteId: instance.siteId,
299
+ ordinal: instance.ordinal,
300
+ kind: "artifact",
301
+ inputHash: hash,
302
+ status: "failed",
303
+ error: json,
304
+ artifactId: issued.id,
305
+ });
306
+ state.record({
307
+ type: "artifact-failed",
308
+ instance,
309
+ id: issued.id,
310
+ op: issued.op,
311
+ error: json,
312
+ });
313
+ return error;
314
+ }
315
+ /**
316
+ * resume 恢复:把 journal 里一行**已完成**的产物记录并进内存状态。
317
+ *
318
+ * **只有 completed 行才认领 id**:失败的发布不占 id、不占种类、不占版本。这不只是图简洁——
319
+ * 失败行的 `result` 是空的,种类无从恢复,若让 live 那一侧认领而 resume 那一侧认领不了,
320
+ * 同一个脚本在崩溃前后就会得到两套上限账。种类冲突另有编译期诊断把守,运行期这条
321
+ * (`ArtifactKindMismatch`)管的是真正发布成功过的那些 id。
322
+ */
323
+ export function rememberArtifactRow(state, id, result) {
324
+ if (id === undefined || id === "")
325
+ return;
326
+ const record = (result ?? undefined);
327
+ if (record?.kind === undefined)
328
+ return;
329
+ const existing = state.artifacts.get(id);
330
+ const spec = record.spec === undefined ? existing?.spec : canonicalJson(record.spec);
331
+ const primary = record.primary === true || existing?.primary === true;
332
+ state.artifacts.set(id, {
333
+ kind: record.kind,
334
+ ...(spec === undefined ? {} : { spec }),
335
+ versions: (existing?.versions ?? 0) + 1,
336
+ ...(primary ? { primary: true } : {}),
337
+ });
338
+ }
339
+ /** 该 id 是否已被声明为**预置**产物(`report` 标签的合法目标)。 */
340
+ export function isDeclaredPreset(state, id) {
341
+ const idState = state.artifacts.get(id);
342
+ return idState !== undefined && isArtifactPresetOp(idState.kind);
343
+ }
344
+ /** 已声明的预置 id(字典序)——只用于把 `ArtifactUndeclared` 的消息写得能照做。 */
345
+ export function declaredPresetIds(state) {
346
+ return [...state.artifacts.entries()]
347
+ .filter(([, idState]) => isArtifactPresetOp(idState.kind))
348
+ .map(([id]) => id)
349
+ .sort();
350
+ }
351
+ /**
352
+ * 预置声明的落库记录。`title` / `description` 从 spec 里**提上来**:卡片的读者(run 侧板、
353
+ * 通知、中枢)只拿到这条记录,不该为了显示一个标题去解 spec;spec 仍原样保留,渲染器要
354
+ * 完整形状。版本恒为 1——声明没有版本,它只有一次。
355
+ */
356
+ function presetRecord(id, op, spec) {
357
+ const options = (spec ?? {});
358
+ return {
359
+ id,
360
+ kind: op,
361
+ version: 1,
362
+ ...(typeof options.title === "string" ? { title: options.title } : {}),
363
+ ...(typeof options.description === "string" ? { description: options.description } : {}),
364
+ spec,
365
+ ...(options.primary === true ? { primary: true } : {}),
366
+ };
367
+ }
@@ -0,0 +1,90 @@
1
+ /**
2
+ * 引擎构造配置({@link EngineConfig})。定义从 engine.ts 迁到本文件:那个文件顶到 oxlint
3
+ * max-lines 上限(400 行),而这份配置是纯类型、只被构造函数读一遍。公开面不变——engine.ts
4
+ * 原地再导出它,src/index.ts 与 harness 的引用路径逐字不动。
5
+ */
6
+ import type { RunLaunchConfig } from "./engine-launch.js";
7
+ import type { AskSpec, Caps, ImportedRunCache, ValidateFn, WorkflowDriver } from "./types.js";
8
+ /** 引擎构造配置。 */
9
+ export interface EngineConfig {
10
+ runId: string;
11
+ driver: WorkflowDriver;
12
+ caps: Caps;
13
+ /**
14
+ * 每 ask 站点的静态规格(typed + schema)。**必须覆盖脚本里的每一个 ask 站点**——
15
+ * 站点表与 schema 合成来自同一次编译,因此缺席只可能是接线错误,引擎按硬错误处理
16
+ * (MissingAskSpec)。untyped 站点要显式记为 `{ typed: false }`。
17
+ */
18
+ askSpecs: ReadonlyMap<string, AskSpec>;
19
+ /** 注入的 schema 校验器(核心不 import schema 实现)。 */
20
+ validate: ValidateFn;
21
+ /**
22
+ * 站点 → 出生阶段名的编译期表(`collectSitePhases`,docs/execution-engine.md「Identity: sites,
23
+ * ordinals, phases」)。铸造实例时**词法优先**:站点在表里就戳表里的阶段,不在表里(被两处调用的
24
+ * helper、首个标记之前的调用、老编译产物)才退回脚本最近经过的标记。缺席等于空表。
25
+ */
26
+ sitePhases?: ReadonlyMap<string, string>;
27
+ /** run 元数据(落 dwf_run,仅在本次 createRun 时写入;resume 时不覆写记录)。 */
28
+ scriptText?: string;
29
+ /**
30
+ * run 的展示名(`CreateWorkflow` 的可选 `input.name`)。引擎不读它,只在建 run 时随
31
+ * `scriptText` 一起落库——宿主的枚举面据它给 run 起标签。见 {@link RunRecord.name}。
32
+ */
33
+ name?: string;
34
+ /**
35
+ * 脚本文本的哈希。resume 时与 journal 记录里的值比对:两侧都有且不同即拒绝本次 resume
36
+ * (V1 的 resume 只对逐字节相同的脚本有效)。
37
+ */
38
+ scriptHash?: string;
39
+ /**
40
+ * 本次 run 的实参(已校验回填)。引擎不读它,只在建 run 时随 `scriptText` 一起落库;
41
+ * 沙箱侧的注入走 harness 的 spawn payload,不经引擎。见 {@link RunRecord.args}。
42
+ */
43
+ args?: Record<string, unknown>;
44
+ parentSessionId?: string;
45
+ cwd?: string;
46
+ /**
47
+ * 发起 run 的 CreateWorkflow 工具调用 id(见 {@link RunRecord.toolCallId})。
48
+ * 引擎不读它,只随其余元数据在 createRun 时落库。
49
+ */
50
+ toolCallId?: string;
51
+ /**
52
+ * 本次 run 修订自哪个前驱 run(见 {@link RunRecord.resumedFrom})。引擎不读它,
53
+ * 只随其余元数据在 createRun 时落库——导入缓存的构建在 run service,不在核心。
54
+ */
55
+ resumedFrom?: string;
56
+ /**
57
+ * 发起 run 那一轮的锚点。引擎不读它,只在建 run 那一世
58
+ * 紧跟首条 `run-started` 记一条 `run-launched`;resume 命中既有行时不再记(锚点跨生命周期唯一)。
59
+ * `phaseNames` 随锚点同车:脚本声明的阶段表,引擎同样不读,只落 journal。`phaseAlongside`
60
+ * 与它按位置对齐(下标指向同一张表),同车同规。
61
+ * `subagentModel` 也同车:本 run 子代理的选型(规范 picker 串),引擎同样不读——模型面整个
62
+ * 在宿主侧(bootstrap 的 workflow-actor-model.ts),宿主从这条事件读回它,零 SQL。
63
+ * `scriptPath` 同车同规:本 run 的脚本来自哪个文件(绝对路径),引擎不读,宿主从这条事件
64
+ * 读回它交给模型面。
65
+ */
66
+ launch?: RunLaunchConfig;
67
+ /**
68
+ * 建 run 时的用量起点:前驱 run 的 `spentTokens`。amend 路径给出,全新 submit 缺席(= 从零起账),
69
+ * resume 路径给了也无用——命中既有行时用量从行里恢复。
70
+ *
71
+ * 语义是「本 run 报的是整条 lineage 的花费」:每个前驱的数字本身已是累计值,所以链式修订
72
+ * 按构造求和,没人需要走 `resumed_from` 链。命中缓存不再加钱(那笔账就在这个继承值里),
73
+ * 只有本次现跑的 live turn 往上加。
74
+ */
75
+ inheritedTokens?: number;
76
+ /**
77
+ * amend-resume 的导入缓存({@link ImportedRunCache})。**纯数据注入**——核心因此仍是
78
+ * 零 I/O 的确定性状态机:读前驱 journal、走 `resumed_from` 链、解析转录源,全部发生在
79
+ * run service,引擎只拿到一张构建好的表并按运行期身份(actor 名 + persona、
80
+ * `{op,args}` 内容 + 出现序)比对。缺席即本次不是修订续跑。
81
+ */
82
+ importedCache?: ImportedRunCache;
83
+ /**
84
+ * 时钟注入。核心本身不读时钟;唯一的读者是留白(docs/execution-engine.md「Holes」)——停驻时刻
85
+ * `since` 与补全时刻 `filledAt` 是给读者算「等了多久」用的观察值,不进任何决策、不进
86
+ * inputHash、replay 不比对它。缺省 `Date.now`;测试注入定值。
87
+ */
88
+ now?: () => number;
89
+ }
90
+ //# sourceMappingURL=engine-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-config.d.ts","sourceRoot":"","sources":["../../src/engine/engine-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9F,cAAc;AACd,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;IACX;;;;OAIG;IACH,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,4CAA4C;IAC5C,QAAQ,EAAE,UAAU,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 引擎构造配置({@link EngineConfig})。定义从 engine.ts 迁到本文件:那个文件顶到 oxlint
3
+ * max-lines 上限(400 行),而这份配置是纯类型、只被构造函数读一遍。公开面不变——engine.ts
4
+ * 原地再导出它,src/index.ts 与 harness 的引用路径逐字不动。
5
+ */
6
+ export {};
@@ -0,0 +1,116 @@
1
+ /**
2
+ * 留白(docs/execution-engine.md「Holes」):脚本向主代理要一段代码,run 停在那一处等它。
3
+ *
4
+ * 与 escalation 不同——那个活在 driver 执行一次 ask 的内部,引擎核心看不见——留白是 Boundary A
5
+ * 的调用:脚本自己在等它,所以引擎像拥有一次 ask 那样拥有它,少一个 driver。与 ask 又有一处
6
+ * 根本不同:**没有 journal 行**。留白不是会自己结算出一个结果的节点,补全产出的东西已经以
7
+ * 有效脚本的身份写在 run 行上(`updateRunScript`),resume 重放有效脚本时体内联执行、shim 不过
8
+ * 线、`hole-reached` 不再出现。
9
+ *
10
+ * 本模块持有引擎的留白状态(停驻表 + 本世已补全的代码表),方法体是自由函数,经
11
+ * {@link EngineState} 接缝读写引擎的其余私有状态;WorkflowEngine 上只留薄委托(拆分原因:
12
+ * engine.ts 顶到 oxlint max-lines 上限 400 行)。
13
+ */
14
+ import type { EngineState } from "./engine-state.js";
15
+ import type { AskSpec, InstanceRef, WorkflowError } from "./types.js";
16
+ /**
17
+ * `hole-reached` 与通知上 prompt 的上限(字符):与 escalation 通知的 question / context 同一
18
+ * 把尺(docs/dynamic-workflow/transcript-and-notifications.md)。超出的截断并以 `…` 收尾。
19
+ */
20
+ export declare const HOLE_PROMPT_MAX_CHARS = 4000;
21
+ /**
22
+ * 一次补全(docs/execution-engine.md「The engine's part」)。`code` 不是主代理写的、也不是
23
+ * harness 拼的:它是**有效脚本**自己 lowering 出的 `holeBodies[siteId]`,与脚本其余部分走同样
24
+ * 的两遍(按节点身份改写站点、再 transpile),所以现补与日后重放执行的是逐字节相同的文本。
25
+ * 规格表与阶段表是有效脚本的:原表的超集,新站点都是这次补全写下的(run service 已校验)。
26
+ * 引擎不解析站点 id:留白 id 是名字键,对引擎只是一个串。
27
+ */
28
+ export interface HoleFill {
29
+ siteId: string;
30
+ /** 有效脚本的 `holeBodies[siteId]`:`(async () => { … })` 的文本。 */
31
+ code: string;
32
+ /** 有效脚本(两列同一笔写回 run 行)。 */
33
+ script: {
34
+ text: string;
35
+ hash: string;
36
+ };
37
+ /** 有效脚本的 ask 规格表(原表的超集)。 */
38
+ askSpecs: ReadonlyMap<string, AskSpec>;
39
+ /** 有效脚本的站点 → 词法出生阶段表。 */
40
+ sitePhases: ReadonlyMap<string, string>;
41
+ /** 有效脚本的阶段表,留白按名字占位(`hole-filled` 原样携带)。 */
42
+ phaseNames: string[];
43
+ /** `phaseNames` 里仍未补全的留白下标。 */
44
+ holes?: number[];
45
+ /** 补全它的会话。 */
46
+ filledBy?: string;
47
+ /** 这次补全为没有草稿的 run 铸下的草稿路径(原样进 `hole-filled`,见事件字段注释)。 */
48
+ scriptPath?: string;
49
+ }
50
+ /**
51
+ * `fillHole` 的结果。两条 no-op 都**不写不发**:`not_waiting`——这个站点没有停驻的分支、本世也
52
+ * 没记住过它的代码;`settled`——run 已结算。
53
+ */
54
+ export type FillHoleResult = {
55
+ ok: true;
56
+ } | {
57
+ ok: false;
58
+ reason: "not_waiting" | "settled";
59
+ };
60
+ /** 一处仍在等的留白(快照投影用,docs/execution-engine.md「The run snapshot」)。 */
61
+ export interface OpenHole {
62
+ siteId: string;
63
+ ordinal: number;
64
+ name: string;
65
+ /** 停驻时刻(epoch 毫秒),读者据它算「等了多久」。 */
66
+ since: number;
67
+ }
68
+ /** 一处本世已补全的留白。 */
69
+ export interface FilledHole {
70
+ siteId: string;
71
+ filledAt: number;
72
+ filledBy?: string;
73
+ }
74
+ /** 引擎的留白状态:按站点的停驻表与本世的补全记忆。纯内存、随引擎实例而生,resume 从空表起。 */
75
+ export declare class HoleRegistry {
76
+ private readonly now;
77
+ /** 站点 → 停在它下面的分支(一个站点可以同时停着好几个序号)。 */
78
+ private readonly parked;
79
+ /** 站点 → 本世记住的补全(后到的 `hole` 直接作答、不停驻)。 */
80
+ private readonly filled;
81
+ constructor(now: () => number);
82
+ /** 站点已补全时返回记住的代码,否则 undefined。 */
83
+ remembered(siteId: string): string | undefined;
84
+ /** 把一个分支停在站点下,返回它的 promise。 */
85
+ park(instance: InstanceRef, name: string): Promise<{
86
+ code: string;
87
+ }>;
88
+ /** 这个站点是否有停驻的分支或已记住的补全(`fillHole` 的 not_waiting 判据的反面)。 */
89
+ isWaitingOrFilled(siteId: string): boolean;
90
+ /** 现在的时刻(epoch 毫秒):`hole-filled` 的 `filledAt` 与记忆里的同一个瞬间。 */
91
+ clock(): number;
92
+ /** 记住补全并放行站点下的每一个分支。 */
93
+ release(siteId: string, code: string, filledAt: number, filledBy: string | undefined): void;
94
+ /** run 结算:停驻的分支一律以结算错误拒绝(与 ask 的取消同姿态);补全记忆保留。 */
95
+ rejectAll(error: WorkflowError): void;
96
+ open(): OpenHole[];
97
+ filledList(): FilledHole[];
98
+ }
99
+ /** 记录前把 prompt 截到上限(超出的以 `…` 收尾,截后总长恰为上限)。 */
100
+ export declare function boundHolePrompt(prompt: string): string;
101
+ /**
102
+ * Boundary A 的 `hole`:铸序号(`nextOrdinal` 同时盖出生阶段)、停驻、记 `hole-reached`。
103
+ * **先停驻再记事件**:事件经 driver.emit 同步扇出,一个在 emit 里同步补全的监听者必须能命中
104
+ * 停驻表,否则它拿到的是 `not_waiting`。已补全的站点以记住的代码立刻作答,不停驻、不记事件
105
+ * ——resume 重放有效脚本时 shim 本就不过线,这里只是引擎侧的同一条规则。
106
+ */
107
+ export declare function reachHole(state: EngineState, holes: HoleRegistry, siteId: string, name: string, prompt: string | undefined): Promise<{
108
+ code: string;
109
+ }>;
110
+ /**
111
+ * `fillHole` 的方法体(docs/execution-engine.md「The engine's part」):一个同步步骤里——换规格表
112
+ * 与阶段表(调用方负责,见 `swapTables`)、写有效脚本、记 `hole-filled`、记住代码、放行停驻的
113
+ * 每一个分支。两条 no-op 不写不发。
114
+ */
115
+ export declare function fillHole(state: EngineState, holes: HoleRegistry, fill: HoleFill, swapTables: (askSpecs: ReadonlyMap<string, AskSpec>, sitePhases: ReadonlyMap<string, string>) => void): FillHoleResult;
116
+ //# sourceMappingURL=engine-holes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-holes.d.ts","sourceRoot":"","sources":["../../src/engine/engine-holes.ts"],"names":[],"mappings":"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"}