@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,195 @@
1
+ /**
2
+ * 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把用户面产物行(kind: "artifact"、artifactId 列、report 标签)的用例拆到本文件;
3
+ * 公开面仍从 journal-contract.ts 导出(`runJournalStoreContract` 按原顺序调用各主题的注册函数)。
4
+ *
5
+ * 注意:这里只登记 `it(...)`,不另开 describe——套件的分组与用例顺序必须与拆分前逐字相同。
6
+ */
7
+ import { expect, it } from "vitest";
8
+ import { baseRun } from "./journal-contract-helpers.js";
9
+ export function registerArtifactCases(factory) {
10
+ // ——— 用户面产物(docs/dynamic-workflow/authoring.md)———
11
+ // ⚠ 这里的 artifact 是脚本发布给用户看的交付物,不是 `RunSettlement.artifact`
12
+ // (脚本顶层返回值)。两义并存,见 spec 的「术语」表。
13
+ // 内容成员成功发布的落库形状:`kind: "artifact"`、`result` 即整条 ArtifactVersionRecord、
14
+ // `artifactId` 指向它发布的那个产物。两个实现都必须**逐字**回读——`uri` 是字节的唯一
15
+ // 去路(字节不进 journal),加工或丢弃它就等于把一个已发布的产物变成打不开的卡片。
16
+ it("round-trips a completed artifact node with its version record", () => {
17
+ const store = factory();
18
+ store.createRun(baseRun("r1"));
19
+ const record = {
20
+ id: "book",
21
+ kind: "file",
22
+ version: 2,
23
+ title: "注意力之书",
24
+ description: "59 页 typst 排版",
25
+ contentType: "application/pdf",
26
+ bytes: 1_234_567,
27
+ uri: "zcode-artifact://ses_parent/abc123",
28
+ sourcePath: "out/book.pdf",
29
+ publishedAt: 1_725_000_000_000,
30
+ primary: true,
31
+ };
32
+ const node = {
33
+ runId: "r1",
34
+ siteId: "artifact#1",
35
+ ordinal: 2,
36
+ kind: "artifact",
37
+ inputHash: "ah",
38
+ status: "completed",
39
+ result: record,
40
+ artifactId: "book",
41
+ };
42
+ store.putNode(node);
43
+ const stored = store.getNode("r1", "artifact#1", 2);
44
+ expect(stored).toEqual(node);
45
+ expect(stored?.result).toEqual(record);
46
+ });
47
+ // 预置声明的行:同一个 kind、同一列 artifactId,只是 result 里装的是 spec 而不是字节元数据。
48
+ // 看板本身不含数据(它的每个点是一行标签 report),所以这一行就是「这个看板存在过」的全部记录。
49
+ it("round-trips a preset declaration artifact node with its spec", () => {
50
+ const store = factory();
51
+ store.createRun(baseRun("r1"));
52
+ const record = {
53
+ id: "perf",
54
+ kind: "chart",
55
+ version: 1,
56
+ title: "查询延迟",
57
+ spec: { type: "line", x: { field: "round" }, y: [{ field: "queryMsAfter" }] },
58
+ };
59
+ const node = {
60
+ runId: "r1",
61
+ siteId: "artifact#2",
62
+ ordinal: 1,
63
+ kind: "artifact",
64
+ inputHash: "ph",
65
+ status: "completed",
66
+ result: record,
67
+ artifactId: "perf",
68
+ };
69
+ store.putNode(node);
70
+ expect(store.getNode("r1", "artifact#2", 1)).toEqual(node);
71
+ });
72
+ // 失败的发布必须**带着 artifactId 落库**:读面要能说出「这个 id 的这次发布没成功」。
73
+ // 失败行没有 result(字节从未写成),错误在 error 上——这与 settled failure 必须落库
74
+ // 是同一条重放健全性要求。
75
+ it("round-trips a failed artifact node with its error and artifact id", () => {
76
+ const store = factory();
77
+ store.createRun(baseRun("r1"));
78
+ const failed = {
79
+ runId: "r1",
80
+ siteId: "artifact#1",
81
+ ordinal: 3,
82
+ kind: "artifact",
83
+ inputHash: "ah3",
84
+ status: "failed",
85
+ error: { code: "ArtifactSourceMissing", message: "out/book.pdf 不存在" },
86
+ artifactId: "book",
87
+ };
88
+ store.putNode(failed);
89
+ const stored = store.getNode("r1", "artifact#1", 3);
90
+ expect(stored).toEqual(failed);
91
+ expect(stored !== undefined && "result" in stored).toBe(false);
92
+ });
93
+ // 内容成员走的是「准入 running → 结算」两次写,而 putNode 是整条替换的 upsert:
94
+ // 结算那一次若不再带上 artifactId,产物归属会被抹掉,那次发布就从「本 run 有哪些产物」
95
+ // 的读面上消失。引擎两次写都带着它,这条把该形状钉在存储层。
96
+ it("keeps the artifact id across the running → settled rewrite", () => {
97
+ const store = factory();
98
+ store.createRun(baseRun("r1"));
99
+ const running = {
100
+ runId: "r1",
101
+ siteId: "artifact#1",
102
+ ordinal: 1,
103
+ kind: "artifact",
104
+ inputHash: "ah",
105
+ status: "running",
106
+ artifactId: "book",
107
+ };
108
+ store.putNode(running);
109
+ expect(store.getNode("r1", "artifact#1", 1)).toEqual(running);
110
+ store.putNode({
111
+ ...running,
112
+ status: "completed",
113
+ result: { id: "book", kind: "file", version: 1 },
114
+ });
115
+ const settled = store.getNode("r1", "artifact#1", 1);
116
+ expect(settled.status).toBe("completed");
117
+ expect(settled.artifactId).toBe("book");
118
+ });
119
+ // 「看板是 journal 的投影」这条不变式的落点:一个看板的每个点都是一行
120
+ // `kind = "report"` ∧ `artifactId` 相符。标签因此必须与 item 同寿地落在 report 行上。
121
+ it("round-trips the artifact tag on a report node", () => {
122
+ const store = factory();
123
+ store.createRun(baseRun("r1"));
124
+ const tagged = {
125
+ runId: "r1",
126
+ siteId: "report#1",
127
+ ordinal: 3,
128
+ kind: "report",
129
+ inputHash: "rh",
130
+ status: "completed",
131
+ result: { round: 3, queryMsAfter: 12.5 },
132
+ artifactId: "perf",
133
+ };
134
+ store.putNode(tagged);
135
+ expect(store.getNode("r1", "report#1", 3)).toEqual(tagged);
136
+ });
137
+ // 未打标签的 report、ask、world-* 与 0029 之前的历史行都没有这一列:必须解成**缺席的键**
138
+ // 而不是一个值为 undefined 的键。看板取数按「artifactId 相符」筛行,多出来的键会让
139
+ // 整条 toEqual 失败,也会让「没有标签」与「标签是 undefined」在读面上不可分辨。
140
+ it("leaves artifactId absent on nodes that carry no artifact", () => {
141
+ const store = factory();
142
+ store.createRun(baseRun("r1"));
143
+ const plain = {
144
+ runId: "r1",
145
+ siteId: "report#2",
146
+ ordinal: 1,
147
+ kind: "report",
148
+ inputHash: "rh2",
149
+ status: "completed",
150
+ result: { finding: "untagged" },
151
+ };
152
+ store.putNode(plain);
153
+ const stored = store.getNode("r1", "report#2", 1);
154
+ expect("artifactId" in stored).toBe(false);
155
+ expect(stored).toEqual(plain);
156
+ });
157
+ // listNodes 是引擎恢复产物版本号的取数面(「该 id 已 completed 的行数 + 1」,同
158
+ // reportCount 的恢复法),所以标签必须在枚举读面上也在场——只在 getNode 上回读是不够的。
159
+ it("returns artifactId from listNodes as well as getNode", () => {
160
+ const store = factory();
161
+ store.createRun(baseRun("r1"));
162
+ store.putNode({
163
+ runId: "r1",
164
+ siteId: "artifact#1",
165
+ ordinal: 1,
166
+ kind: "artifact",
167
+ inputHash: "a1",
168
+ status: "completed",
169
+ result: { id: "book", kind: "file", version: 1 },
170
+ artifactId: "book",
171
+ });
172
+ store.putNode({
173
+ runId: "r1",
174
+ siteId: "report#1",
175
+ ordinal: 1,
176
+ kind: "report",
177
+ inputHash: "r1h",
178
+ status: "completed",
179
+ result: { round: 1 },
180
+ artifactId: "perf",
181
+ });
182
+ store.putNode({
183
+ runId: "r1",
184
+ siteId: "ask#1",
185
+ ordinal: 1,
186
+ kind: "ask",
187
+ inputHash: "k1",
188
+ status: "completed",
189
+ result: "plain",
190
+ });
191
+ const nodes = store.listNodes("r1", { kinds: "all", withResult: true });
192
+ expect(nodes.map((n) => n.artifactId)).toEqual(["book", "perf", undefined]);
193
+ expect("artifactId" in nodes[2]).toBe(false);
194
+ });
195
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把事件(追加序号、resume 续号、cursor 分页、按 run 隔离)的用例拆到本文件;
3
+ * 公开面仍从 journal-contract.ts 导出(`runJournalStoreContract` 按原顺序调用各主题的注册函数)。
4
+ *
5
+ * 注意:这里只登记 `it(...)`,不另开 describe——套件的分组与用例顺序必须与拆分前逐字相同。
6
+ */
7
+ import type { JournalStorePort } from "../engine/index.js";
8
+ export declare function registerEventCases(factory: () => JournalStorePort): void;
9
+ //# sourceMappingURL=journal-contract-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-contract-events.d.ts","sourceRoot":"","sources":["../../src/testing/journal-contract-events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,gBAAgB,GAAG,IAAI,CA+LxE"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把事件(追加序号、resume 续号、cursor 分页、按 run 隔离)的用例拆到本文件;
3
+ * 公开面仍从 journal-contract.ts 导出(`runJournalStoreContract` 按原顺序调用各主题的注册函数)。
4
+ *
5
+ * 注意:这里只登记 `it(...)`,不另开 describe——套件的分组与用例顺序必须与拆分前逐字相同。
6
+ */
7
+ import { expect, it } from "vitest";
8
+ import { baseRun, logs } from "./journal-contract-helpers.js";
9
+ export function registerEventCases(factory) {
10
+ it("appends events with monotonic sequence and lists them in order", () => {
11
+ const store = factory();
12
+ store.createRun(baseRun("r1"));
13
+ const a = store.appendEvent("r1", { type: "log", message: "one" });
14
+ const b = store.appendEvent("r1", { type: "log", message: "two" });
15
+ expect(a.sequence).toBe(0);
16
+ expect(b.sequence).toBe(1);
17
+ const events = store.listEvents("r1", { types: "all", reportItems: "all" });
18
+ expect(events.map((e) => e.sequence)).toEqual([0, 1]);
19
+ expect(events.map((e) => (e.event.type === "log" ? e.event.message : ""))).toEqual([
20
+ "one",
21
+ "two",
22
+ ]);
23
+ });
24
+ it("stamps timeCreated on append and gives the same instant back on read", () => {
25
+ // 事件日志里唯一的时钟(docs/execution-engine.md「The journal」):日志行的年龄、子代理上一次
26
+ // 动作的时刻都只能从它算。两个实现都必须填——让读者现取 Date.now() 兜底,会把一次冷重放里
27
+ // 一周前的整段历史全标成「刚刚」。追加路径与读回路径必须给同一个数,否则同一条事件两面不一。
28
+ const store = factory();
29
+ store.createRun(baseRun("r1"));
30
+ const before = Date.now();
31
+ const appended = store.appendEvent("r1", { type: "log", message: "one" });
32
+ const after = Date.now();
33
+ expect(appended.timeCreated).toBeTypeOf("number");
34
+ expect(appended.timeCreated).toBeGreaterThanOrEqual(before);
35
+ expect(appended.timeCreated).toBeLessThanOrEqual(after);
36
+ const [read] = store.listEvents("r1", { types: "all", reportItems: "all" });
37
+ expect(read?.timeCreated).toBe(appended.timeCreated);
38
+ });
39
+ it("throws when appending an event to an unknown run", () => {
40
+ // 孤儿事件写进去也永远读不回来(listEvents 按 runId 取),与 putActor/putNode 一样
41
+ // 属于契约破坏,必须当场大声失败。SQLite 侧由 dwf_event 的 FK 保证同一语义。
42
+ const store = factory();
43
+ expect(() => store.appendEvent("nope", { type: "log", message: "orphan" })).toThrow();
44
+ });
45
+ it("continues event sequence monotonically over a pre-populated store (resume case)", () => {
46
+ // resume 语义:新引擎接管一个已有事件的 store 时,appendEvent 必须从既有最大序号之后继续,
47
+ // 既不重置也不复用序号。内存实现天然满足;此断言逼迫阶段二的 SQLite 实现走同一 MAX(sequence)+1 语义。
48
+ const store = factory();
49
+ store.createRun(baseRun("r1"));
50
+ store.appendEvent("r1", { type: "log", message: "pre-0" });
51
+ store.appendEvent("r1", { type: "log", message: "pre-1" });
52
+ // 模拟 resume:同一 store 上继续追加(生产中是另一个引擎实例接管)。
53
+ const resumed = store.appendEvent("r1", { type: "log", message: "post" });
54
+ expect(resumed.sequence).toBe(2);
55
+ const sequences = store
56
+ .listEvents("r1", { types: "all", reportItems: "all" })
57
+ .map((e) => e.sequence);
58
+ expect(sequences).toEqual([0, 1, 2]);
59
+ // 序号唯一(无复用)且单调递增。
60
+ expect(new Set(sequences).size).toBe(sequences.length);
61
+ for (let i = 1; i < sequences.length; i++)
62
+ expect(sequences[i]).toBeGreaterThan(sequences[i - 1]);
63
+ });
64
+ it("pages events with afterSequence as a strictly-greater cursor", () => {
65
+ // cursor 是"已读到的最后一个 sequence",而不是偏移量:afterSequence: 0 必须跳过
66
+ // sequence 0(它已被读过),而不是从第 0 个开始。sequence 从 0 起,所以把 cursor
67
+ // 当偏移量的实现在这条断言上才会露馅——第一页会重复一条。
68
+ const store = factory();
69
+ store.createRun(baseRun("r1"));
70
+ for (const message of ["e0", "e1", "e2"])
71
+ store.appendEvent("r1", { type: "log", message });
72
+ expect(logs(store.listEvents("r1", { types: "all", reportItems: "all" }))).toEqual([
73
+ "e0",
74
+ "e1",
75
+ "e2",
76
+ ]);
77
+ expect(logs(store.listEvents("r1", { types: "all", reportItems: "all", afterSequence: 0 }))).toEqual(["e1", "e2"]);
78
+ expect(logs(store.listEvents("r1", { types: "all", reportItems: "all", afterSequence: 1 }))).toEqual(["e2"]);
79
+ expect(store.listEvents("r1", { types: "all", reportItems: "all", afterSequence: 2 })).toEqual([]);
80
+ });
81
+ it("returns an empty page for an out-of-range cursor instead of throwing", () => {
82
+ // 详情页在 lastEventSequence 抬升时重取;投影与 journal 之间存在竞态窗口,
83
+ // 客户端拿着一个尚未存在的 cursor 回来是正常时序,不是错误。
84
+ const store = factory();
85
+ store.createRun(baseRun("r1"));
86
+ store.appendEvent("r1", { type: "log", message: "only" });
87
+ expect(store.listEvents("r1", { types: "all", reportItems: "all", afterSequence: 99 })).toEqual([]);
88
+ // 未知 run 同样是空页:listEvents 全量形态今天就是这个语义,加 cursor 不改它。
89
+ expect(store.listEvents("nope", { types: "all", reportItems: "all", afterSequence: 0 })).toEqual([]);
90
+ });
91
+ it("caps a page at limit and keeps it anchored at the cursor", () => {
92
+ const store = factory();
93
+ store.createRun(baseRun("r1"));
94
+ for (let i = 0; i < 5; i++)
95
+ store.appendEvent("r1", { type: "log", message: `e${i}` });
96
+ expect(logs(store.listEvents("r1", { types: "all", reportItems: "all", limit: 2 }))).toEqual([
97
+ "e0",
98
+ "e1",
99
+ ]);
100
+ expect(logs(store.listEvents("r1", { types: "all", reportItems: "all", afterSequence: 1, limit: 2 }))).toEqual(["e2", "e3"]);
101
+ // limit 超过剩余条数时给出剩余全部,不补空位。
102
+ expect(logs(store.listEvents("r1", { types: "all", reportItems: "all", afterSequence: 3, limit: 10 }))).toEqual(["e4"]);
103
+ expect(store.listEvents("r1", { types: "all", reportItems: "all", limit: 0 })).toEqual([]);
104
+ });
105
+ it("walks every event exactly once when paging by cursor (no overlap, no gap)", () => {
106
+ // 分页的整体性质:逐页推进 cursor 走完整条 journal,结果必须与一次性全量读逐字相同。
107
+ // 「差一」错误(>= 而非 >、或 limit 与 cursor 相互干扰)只会在这条断言上暴露。
108
+ const store = factory();
109
+ store.createRun(baseRun("r1"));
110
+ const total = 7;
111
+ for (let i = 0; i < total; i++)
112
+ store.appendEvent("r1", { type: "log", message: `e${i}` });
113
+ const walked = [];
114
+ let cursor;
115
+ for (let guard = 0; guard <= total; guard++) {
116
+ const page = store.listEvents("r1", {
117
+ types: "all",
118
+ reportItems: "all",
119
+ afterSequence: cursor,
120
+ limit: 3,
121
+ });
122
+ if (page.length === 0)
123
+ break;
124
+ for (const stored of page)
125
+ walked.push(stored.sequence);
126
+ cursor = page[page.length - 1].sequence;
127
+ }
128
+ expect(walked).toEqual(store.listEvents("r1", { types: "all", reportItems: "all" }).map((e) => e.sequence));
129
+ expect(new Set(walked).size).toBe(total);
130
+ });
131
+ it("keeps the cursor valid across resume", () => {
132
+ // resume 后 sequence 从既有最大值之后继续,所以 run 之前记下的 cursor 依然只
133
+ // 取到新事件;若实现按"每 run 每次从 0 重编号"或按行 id 而非 sequence 排序,
134
+ // 客户端会重收旧事件或漏掉新事件。
135
+ const store = factory();
136
+ store.createRun(baseRun("r1"));
137
+ store.appendEvent("r1", { type: "log", message: "pre-0" });
138
+ store.appendEvent("r1", { type: "log", message: "pre-1" });
139
+ const cursor = store.listEvents("r1", { types: "all", reportItems: "all" }).at(-1).sequence;
140
+ // 模拟 resume:另一个引擎实例接管同一个 store 继续追加。
141
+ store.updateRunStatus("r1", "running");
142
+ store.appendEvent("r1", { type: "log", message: "post-0" });
143
+ store.appendEvent("r1", { type: "log", message: "post-1" });
144
+ const tail = store.listEvents("r1", {
145
+ types: "all",
146
+ reportItems: "all",
147
+ afterSequence: cursor,
148
+ });
149
+ expect(logs(tail)).toEqual(["post-0", "post-1"]);
150
+ expect(tail.map((e) => e.sequence)).toEqual([cursor + 1, cursor + 2]);
151
+ });
152
+ it("scopes event pages per runId", () => {
153
+ const store = factory();
154
+ store.createRun(baseRun("r1"));
155
+ store.createRun(baseRun("r2"));
156
+ store.appendEvent("r1", { type: "log", message: "r1-0" });
157
+ store.appendEvent("r2", { type: "log", message: "r2-0" });
158
+ store.appendEvent("r2", { type: "log", message: "r2-1" });
159
+ // 每个 run 的 sequence 各自从 0 起,因此 cursor 必须与 runId 一同过滤。
160
+ expect(logs(store.listEvents("r1", { types: "all", reportItems: "all", afterSequence: 0 }))).toEqual([]);
161
+ expect(logs(store.listEvents("r2", { types: "all", reportItems: "all", afterSequence: 0 }))).toEqual(["r2-1"]);
162
+ });
163
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把各主题模块共用的
3
+ * 夹具(CAPS / baseRun / logs)拆到本文件;公开面仍从 journal-contract.ts 导出。
4
+ */
5
+ import type { RunRecord, StoredEvent } from "../engine/index.js";
6
+ export declare function baseRun(runId: string): RunRecord;
7
+ /** 取出一页 log 事件的正文,用于逐页比对(事件种类无关的分页断言用它读得更直白)。 */
8
+ export declare function logs(events: StoredEvent[]): string[];
9
+ //# sourceMappingURL=journal-contract-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-contract-helpers.d.ts","sourceRoot":"","sources":["../../src/testing/journal-contract-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjE,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEhD;AAED,iDAAiD;AACjD,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAEpD"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把各主题模块共用的
3
+ * 夹具(CAPS / baseRun / logs)拆到本文件;公开面仍从 journal-contract.ts 导出。
4
+ */
5
+ const CAPS = { maxConcurrency: 4 };
6
+ export function baseRun(runId) {
7
+ return { runId, caps: CAPS, spentTokens: 0, status: "running" };
8
+ }
9
+ /** 取出一页 log 事件的正文,用于逐页比对(事件种类无关的分页断言用它读得更直白)。 */
10
+ export function logs(events) {
11
+ return events.map((e) => (e.event.type === "log" ? e.event.message : `<${e.event.type}>`));
12
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把存储边界隔离与按 runId 作用域的收尾用例拆到本文件;
3
+ * 公开面仍从 journal-contract.ts 导出(`runJournalStoreContract` 按原顺序调用各主题的注册函数)。
4
+ *
5
+ * 注意:这里只登记 `it(...)`,不另开 describe——套件的分组与用例顺序必须与拆分前逐字相同。
6
+ */
7
+ import type { JournalStorePort } from "../engine/index.js";
8
+ export declare function registerIsolationCases(factory: () => JournalStorePort): void;
9
+ //# sourceMappingURL=journal-contract-isolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-contract-isolation.d.ts","sourceRoot":"","sources":["../../src/testing/journal-contract-isolation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,oBAAoB,CAAC;AAGvE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAsC5E"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把存储边界隔离与按 runId 作用域的收尾用例拆到本文件;
3
+ * 公开面仍从 journal-contract.ts 导出(`runJournalStoreContract` 按原顺序调用各主题的注册函数)。
4
+ *
5
+ * 注意:这里只登记 `it(...)`,不另开 describe——套件的分组与用例顺序必须与拆分前逐字相同。
6
+ */
7
+ import { expect, it } from "vitest";
8
+ import { baseRun } from "./journal-contract-helpers.js";
9
+ export function registerIsolationCases(factory) {
10
+ it("isolates stored records from later mutation of the caller's object", () => {
11
+ const store = factory();
12
+ store.createRun(baseRun("r1"));
13
+ const node = {
14
+ runId: "r1",
15
+ siteId: "ask#1",
16
+ ordinal: 1,
17
+ kind: "ask",
18
+ inputHash: "abc",
19
+ status: "completed",
20
+ result: { nested: { value: 1 } },
21
+ };
22
+ store.putNode(node);
23
+ // 改动调用方持有的对象不应影响已存记录(存储边界隔离)。
24
+ node.result.nested.value = 999;
25
+ const stored = store.getNode("r1", "ask#1", 1);
26
+ expect(stored).toBeDefined();
27
+ const result = stored.result;
28
+ expect(result.nested.value).toBe(1);
29
+ });
30
+ it("scopes records per runId", () => {
31
+ const store = factory();
32
+ store.createRun(baseRun("r1"));
33
+ store.createRun(baseRun("r2"));
34
+ store.putNode({
35
+ runId: "r1",
36
+ siteId: "ask#1",
37
+ ordinal: 1,
38
+ kind: "ask",
39
+ inputHash: "h",
40
+ status: "completed",
41
+ });
42
+ expect(store.listNodes("r1", { kinds: "all", withResult: true })).toHaveLength(1);
43
+ expect(store.listNodes("r2", { kinds: "all", withResult: true })).toHaveLength(0);
44
+ expect(store.getNode("r2", "ask#1", 1)).toBeUndefined();
45
+ });
46
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把actor 记录与节点记录(ask / world / report 行、缺席键、messageBoundary 回填)的用例拆到本文件;
3
+ * 公开面仍从 journal-contract.ts 导出(`runJournalStoreContract` 按原顺序调用各主题的注册函数)。
4
+ *
5
+ * 注意:这里只登记 `it(...)`,不另开 describe——套件的分组与用例顺序必须与拆分前逐字相同。
6
+ */
7
+ import type { JournalStorePort } from "../engine/index.js";
8
+ export declare function registerNodeCases(factory: () => JournalStorePort): void;
9
+ //# sourceMappingURL=journal-contract-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-contract-nodes.d.ts","sourceRoot":"","sources":["../../src/testing/journal-contract-nodes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAe,gBAAgB,EAAc,MAAM,oBAAoB,CAAC;AAGpF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAgPvE"}