@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,234 @@
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 { expect, it } from "vitest";
8
+ import { baseRun } from "./journal-contract-helpers.js";
9
+ export function registerNodeCases(factory) {
10
+ it("puts, gets and lists actors keyed by (siteId, ordinal)", () => {
11
+ const store = factory();
12
+ store.createRun(baseRun("r1"));
13
+ store.putActor({ runId: "r1", siteId: "actor#1", ordinal: 1, name: "planner" });
14
+ store.putActor({ runId: "r1", siteId: "actor#1", ordinal: 2, name: "planner" });
15
+ expect(store.getActor("r1", "actor#1", 1)?.name).toBe("planner");
16
+ expect(store.getActor("r1", "actor#1", 3)).toBeUndefined();
17
+ expect(store.listActors("r1", { withPersona: true })).toHaveLength(2);
18
+ // 幂等覆盖:同键再写更新 sessionId。
19
+ store.putActor({
20
+ runId: "r1",
21
+ siteId: "actor#1",
22
+ ordinal: 1,
23
+ name: "planner",
24
+ sessionId: "s1",
25
+ });
26
+ expect(store.getActor("r1", "actor#1", 1)?.sessionId).toBe("s1");
27
+ expect(store.listActors("r1", { withPersona: true })).toHaveLength(2);
28
+ });
29
+ it("round-trips the frozen persona and the driver-resolved model on an actor", () => {
30
+ // persona 是冻结身份,resolvedModel 是宿主事实(子代理实际跑在哪个模型上)。两者分列存放:
31
+ // persona 是引擎在 createActor 时同步写下的,那一刻宿主还没造出会话、也就没有模型可记。
32
+ const store = factory();
33
+ store.createRun(baseRun("r1"));
34
+ const record = {
35
+ runId: "r1",
36
+ siteId: "actor#1",
37
+ ordinal: 1,
38
+ name: "judge",
39
+ persona: { name: "judge", system: "You judge." },
40
+ sessionId: "s1",
41
+ resolvedModel: "provider/small-model",
42
+ };
43
+ store.putActor(record);
44
+ expect(store.getActor("r1", "actor#1", 1)).toEqual(record);
45
+ });
46
+ it("keeps an absent resolvedModel absent (not a null / undefined key)", () => {
47
+ // 0021 之前的历史行与「宿主还没解析过」的行都走这条路径:缺席必须解成缺席的键,
48
+ // 否则对整条记录做 toEqual 的调用方(与上一条用例)在升级后全线失败。
49
+ const store = factory();
50
+ store.createRun(baseRun("r1"));
51
+ store.putActor({ runId: "r1", siteId: "actor#1", ordinal: 1, name: "judge" });
52
+ const record = store.getActor("r1", "actor#1", 1);
53
+ expect(record.resolvedModel).toBeUndefined();
54
+ expect(record).toEqual({ runId: "r1", siteId: "actor#1", ordinal: 1, name: "judge" });
55
+ });
56
+ it("puts, gets and lists nodes", () => {
57
+ const store = factory();
58
+ store.createRun(baseRun("r1"));
59
+ const node = {
60
+ runId: "r1",
61
+ siteId: "ask#1",
62
+ ordinal: 1,
63
+ kind: "ask",
64
+ actorSiteId: "actor#1",
65
+ actorOrdinal: 1,
66
+ actorSeq: 0,
67
+ inputHash: "abc",
68
+ status: "completed",
69
+ result: { ok: true },
70
+ };
71
+ store.putNode(node);
72
+ expect(store.getNode("r1", "ask#1", 1)).toEqual(node);
73
+ expect(store.getNode("r1", "ask#1", 2)).toBeUndefined();
74
+ expect(store.listNodes("r1", { kinds: "all", withResult: true })).toHaveLength(1);
75
+ });
76
+ it("round-trips a world-read node's bounded input and keeps it absent elsewhere", () => {
77
+ // 工作区 transcript 要说 *what ran*(docs/dynamic-workflow/transcript-and-notifications.md):
78
+ // `{op, args}` 与 inputHash 同一次准入写下,结算的整条替换必须原样带回;ask 行没有它,
79
+ // 而且是**缺席的键**(不是 undefined 值),否则 toEqual 与读面的 `"input" in row` 都会说谎。
80
+ const store = factory();
81
+ store.createRun(baseRun("r1"));
82
+ const node = {
83
+ runId: "r1",
84
+ siteId: "world-read#1",
85
+ ordinal: 1,
86
+ kind: "world-run",
87
+ inputHash: "wh",
88
+ input: { op: "run", args: ["pnpm", ["vitest", "run"], { timeoutMs: 60_000 }] },
89
+ status: "running",
90
+ };
91
+ store.putNode(node);
92
+ expect(store.getNode("r1", "world-read#1", 1)).toEqual(node);
93
+ const settled = {
94
+ ...node,
95
+ status: "completed",
96
+ result: { exitCode: 1, stdout: "", stderr: "boom" },
97
+ };
98
+ store.putNode(settled);
99
+ expect(store.getNode("r1", "world-read#1", 1)).toEqual(settled);
100
+ const truncated = {
101
+ ...node,
102
+ siteId: "world-read#2",
103
+ input: { op: "run", args: ["node", "-e …"], truncated: true },
104
+ };
105
+ store.putNode(truncated);
106
+ expect(store.getNode("r1", "world-read#2", 1)?.input).toEqual(truncated.input);
107
+ const ask = store.getNode("r1", "ask#1", 1);
108
+ expect(ask === undefined || !("input" in ask)).toBe(true);
109
+ });
110
+ it("stores a report node: one write, already completed, no actor coordinates", () => {
111
+ // report 节点是「准入 running → 结算」两次写规则唯一的例外(准入与结算之间没有 driver
112
+ // 调用)。落库形状因此是可断言的:单次 putNode、status 恒 completed、actor 三列缺席、
113
+ // result 即被报告的 item。两个实现都必须原样回读,否则 Results 面板与完成通知
114
+ // 会显示存储层的加工品。
115
+ const store = factory();
116
+ store.createRun(baseRun("r1"));
117
+ const report = {
118
+ runId: "r1",
119
+ siteId: "report#1",
120
+ ordinal: 2,
121
+ kind: "report",
122
+ inputHash: "rh",
123
+ status: "completed",
124
+ result: { finding: "duplicate impl", paths: ["a.ts", "b.ts"] },
125
+ };
126
+ store.putNode(report);
127
+ const stored = store.getNode("r1", "report#1", 2);
128
+ expect(stored).toEqual(report);
129
+ expect(stored !== undefined && "actorSeq" in stored).toBe(false);
130
+ expect(stored !== undefined && "actorSiteId" in stored).toBe(false);
131
+ expect(store.listNodes("r1", { kinds: "all", withResult: true }).filter((n) => n.kind === "report")).toHaveLength(1);
132
+ });
133
+ it("keeps a null node result distinguishable from an absent one", () => {
134
+ // result 的类型是 unknown:`ask<T | null>` 返回的 null 是真结果,不是"还没有结果"。
135
+ // 落库实现若把 undefined 和 null 一起压成 SQL NULL,这个区别会在 round-trip 里消失。
136
+ const store = factory();
137
+ store.createRun(baseRun("r1"));
138
+ const nulled = {
139
+ runId: "r1",
140
+ siteId: "ask#1",
141
+ ordinal: 1,
142
+ kind: "ask",
143
+ inputHash: "h",
144
+ status: "completed",
145
+ result: null,
146
+ };
147
+ const absent = {
148
+ runId: "r1",
149
+ siteId: "ask#2",
150
+ ordinal: 1,
151
+ kind: "ask",
152
+ inputHash: "h",
153
+ status: "running",
154
+ };
155
+ store.putNode(nulled);
156
+ store.putNode(absent);
157
+ expect(store.getNode("r1", "ask#1", 1)).toEqual(nulled);
158
+ const stored = store.getNode("r1", "ask#2", 1);
159
+ expect(stored).toEqual(absent);
160
+ // 缺席的可选字段要原样缺席地回来(而不是变成 result: null / result: undefined)。
161
+ expect(stored !== undefined && "result" in stored).toBe(false);
162
+ });
163
+ // messageBoundary 是 ask 结算后 actor 会话消息 log 的长度(count offset),driver 在
164
+ // settle 之后补写(docs/execution-engine.md「Amend-resume」)。属于契约:
165
+ // 它是修订续跑做全保真转录截断时唯一的截断依据,SQLite 若漏写这一列,前驱就成了
166
+ // 「无 marker 前驱」——整个 amend 被结构化拒绝。
167
+ it("round-trips an ask node's messageBoundary and keeps it absent when unrecorded", () => {
168
+ const store = factory();
169
+ store.createRun(baseRun("r1"));
170
+ const bounded = {
171
+ runId: "r1",
172
+ siteId: "ask#1",
173
+ ordinal: 1,
174
+ kind: "ask",
175
+ actorSiteId: "actor#1",
176
+ actorOrdinal: 1,
177
+ actorSeq: 0,
178
+ inputHash: "h1",
179
+ status: "completed",
180
+ result: "done",
181
+ stats: { tokens: 120, toolCalls: 2, turns: 3 },
182
+ messageBoundary: 9,
183
+ };
184
+ // 0 是合法边界(复制零条消息),必须与「没记过边界」可分辨——这正是缺席键语义
185
+ // 在这一列上的实际用处。
186
+ const zero = {
187
+ ...bounded,
188
+ siteId: "ask#2",
189
+ actorSeq: 1,
190
+ inputHash: "h2",
191
+ messageBoundary: 0,
192
+ };
193
+ const unrecorded = {
194
+ runId: "r1",
195
+ siteId: "ask#3",
196
+ ordinal: 1,
197
+ kind: "ask",
198
+ inputHash: "h3",
199
+ status: "running",
200
+ };
201
+ store.putNode(bounded);
202
+ store.putNode(zero);
203
+ store.putNode(unrecorded);
204
+ expect(store.getNode("r1", "ask#1", 1)).toEqual(bounded);
205
+ expect(store.getNode("r1", "ask#2", 1)?.messageBoundary).toBe(0);
206
+ const bare = store.getNode("r1", "ask#3", 1);
207
+ expect(bare).toEqual(unrecorded);
208
+ expect(bare !== undefined && "messageBoundary" in bare).toBe(false);
209
+ });
210
+ // driver 的补写形状:getNode 读回引擎刚落的结算行,原样铺开再补边界列。与 stats 回填
211
+ // 同族,所以同一条风险——putNode 是整条替换,实现若在 round-trip 里丢掉任何一列
212
+ // (result / stats / actor 三列 / inputHash),这次补写就会把它抹掉。
213
+ it("preserves every other field when backfilling messageBoundary read-modify-write", () => {
214
+ const store = factory();
215
+ store.createRun(baseRun("r1"));
216
+ const settled = {
217
+ runId: "r1",
218
+ siteId: "ask#1",
219
+ ordinal: 2,
220
+ kind: "ask",
221
+ actorSiteId: "actor#3",
222
+ actorOrdinal: 1,
223
+ actorSeq: 4,
224
+ inputHash: "abc",
225
+ status: "completed",
226
+ result: { verdict: "ship it", notes: [1, 2, 3] },
227
+ stats: { tokens: 512, toolCalls: 7, turns: 5 },
228
+ };
229
+ store.putNode(settled);
230
+ const recorded = store.getNode("r1", "ask#1", 2);
231
+ store.putNode({ ...recorded, messageBoundary: 14 });
232
+ expect(store.getNode("r1", "ask#1", 2)).toEqual({ ...settled, messageBoundary: 14 });
233
+ });
234
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 读面选项的契约用例(docs/execution-engine.md「Reading the journal」):kinds / withResult /
3
+ * limit / maxResultBytes / countNodes / sumResultBytes / types / reportItems / 按名取子代理。两个实现(内存、SQLite)必须逐字同
4
+ * 语义——读者按这些选项把过滤下推到存储层,任何一侧偷偷退回「读全表」或给出不同的顺序,
5
+ * 冷回放与 GetWorkflowRun 就会在两种部署上归约出不同的状态。
6
+ *
7
+ * 注意:这里只登记 `it(...)`,不另开 describe(与兄弟模块同规)。
8
+ */
9
+ import type { JournalStorePort } from "../engine/index.js";
10
+ export declare function registerReadCases(factory: () => JournalStorePort): void;
11
+ //# sourceMappingURL=journal-contract-reads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-contract-reads.d.ts","sourceRoot":"","sources":["../../src/testing/journal-contract-reads.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,oBAAoB,CAAC;AA6CjF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAsQvE"}
@@ -0,0 +1,281 @@
1
+ /**
2
+ * 读面选项的契约用例(docs/execution-engine.md「Reading the journal」):kinds / withResult /
3
+ * limit / maxResultBytes / countNodes / sumResultBytes / types / reportItems / 按名取子代理。两个实现(内存、SQLite)必须逐字同
4
+ * 语义——读者按这些选项把过滤下推到存储层,任何一侧偷偷退回「读全表」或给出不同的顺序,
5
+ * 冷回放与 GetWorkflowRun 就会在两种部署上归约出不同的状态。
6
+ *
7
+ * 注意:这里只登记 `it(...)`,不另开 describe(与兄弟模块同规)。
8
+ */
9
+ import { expect, it } from "vitest";
10
+ import { baseRun } from "./journal-contract-helpers.js";
11
+ function node(siteId, kind, extra = {}) {
12
+ return {
13
+ runId: "r1",
14
+ siteId,
15
+ ordinal: 1,
16
+ kind,
17
+ inputHash: `h-${siteId}`,
18
+ status: "completed",
19
+ result: { of: siteId },
20
+ ...extra,
21
+ };
22
+ }
23
+ /** 一条 run:ask、report×3(第二条带标签)、world-read、artifact,按这个顺序落库。 */
24
+ function seedNodes(store) {
25
+ store.createRun(baseRun("r1"));
26
+ store.putNode(node("ask#1", "ask", { actorSiteId: "actor#1", actorOrdinal: 1, actorSeq: 0 }));
27
+ store.putNode(node("report#1", "report"));
28
+ store.putNode(node("report#2", "report", { artifactId: "chart" }));
29
+ store.putNode(node("files.grep#1", "world-read", { input: { op: "grep", args: ["x"] } }));
30
+ store.putNode(node("report#3", "report"));
31
+ store.putNode(node("artifact#1", "artifact", { artifactId: "chart" }));
32
+ }
33
+ function report(siteId, item, artifactId) {
34
+ return {
35
+ type: "report",
36
+ instance: { siteId, ordinal: 1 },
37
+ item,
38
+ ...(artifactId === undefined ? {} : { artifactId }),
39
+ };
40
+ }
41
+ function reportItemOf(event) {
42
+ if (event.type !== "report")
43
+ throw new Error(`not a report: ${event.type}`);
44
+ return "item" in event ? { has: true, item: event.item } : { has: false };
45
+ }
46
+ export function registerReadCases(factory) {
47
+ it('filters nodes by kind in insertion order, and "all" / [] mean everything / nothing', () => {
48
+ const store = factory();
49
+ seedNodes(store);
50
+ const sites = (rows) => rows.map((row) => row.siteId);
51
+ expect(sites(store.listNodes("r1", { kinds: ["report"], withResult: true }))).toEqual([
52
+ "report#1",
53
+ "report#2",
54
+ "report#3",
55
+ ]);
56
+ expect(sites(store.listNodes("r1", { kinds: ["ask", "world-read"], withResult: true }))).toEqual(["ask#1", "files.grep#1"]);
57
+ expect(sites(store.listNodes("r1", { kinds: "all", withResult: true }))).toEqual([
58
+ "ask#1",
59
+ "report#1",
60
+ "report#2",
61
+ "files.grep#1",
62
+ "report#3",
63
+ "artifact#1",
64
+ ]);
65
+ expect(store.listNodes("r1", { kinds: [], withResult: true })).toEqual([]);
66
+ expect(store.listNodes("nope", { kinds: "all", withResult: true })).toEqual([]);
67
+ });
68
+ it("keeps a row's place when it is upserted again", () => {
69
+ // 准入 running → 结算 completed 是同一条 upsert:行的顺序(id)不能因为第二次写而挪到末尾,
70
+ // 否则「按插入顺序」对每个结算过的节点都是假话。
71
+ const store = factory();
72
+ seedNodes(store);
73
+ store.putNode(node("ask#1", "ask", { status: "failed", actorSiteId: "actor#1", actorOrdinal: 1 }));
74
+ const rows = store.listNodes("r1", { kinds: "all", withResult: false });
75
+ expect(rows[0]?.siteId).toBe("ask#1");
76
+ expect(rows[0]?.status).toBe("failed");
77
+ });
78
+ it("leaves result out without touching any other column when withResult is false", () => {
79
+ const store = factory();
80
+ store.createRun(baseRun("r1"));
81
+ const full = {
82
+ runId: "r1",
83
+ siteId: "ask#1",
84
+ ordinal: 1,
85
+ kind: "ask",
86
+ actorSiteId: "actor#1",
87
+ actorOrdinal: 1,
88
+ actorSeq: 0,
89
+ inputHash: "h",
90
+ status: "completed",
91
+ result: { big: "x".repeat(100) },
92
+ stats: { tokens: 12, toolCalls: 3, turns: 2 },
93
+ messageBoundary: 4,
94
+ };
95
+ store.putNode(full);
96
+ const { result: _result, ...rest } = full;
97
+ void _result;
98
+ const [slim] = store.listNodes("r1", { kinds: "all", withResult: false });
99
+ expect(slim).toEqual(rest);
100
+ expect(slim).not.toHaveProperty("result");
101
+ expect(store.getNode("r1", "ask#1", 1, { withResult: false })).toEqual(rest);
102
+ // 点查缺省读整行。
103
+ expect(store.getNode("r1", "ask#1", 1)).toEqual(full);
104
+ expect(store.getNode("r1", "ask#1", 1, { withResult: true })).toEqual(full);
105
+ });
106
+ it("keeps a null result as null when results are read", () => {
107
+ const store = factory();
108
+ store.createRun(baseRun("r1"));
109
+ store.putNode(node("report#1", "report", { result: null }));
110
+ const [row] = store.listNodes("r1", { kinds: ["report"], withResult: true });
111
+ expect(row).toHaveProperty("result", null);
112
+ });
113
+ it("pages nodes with limit after the kind filter, in insertion order", () => {
114
+ const store = factory();
115
+ seedNodes(store);
116
+ const rows = store.listNodes("r1", { kinds: ["report"], withResult: true, limit: 2 });
117
+ expect(rows.map((row) => row.siteId)).toEqual(["report#1", "report#2"]);
118
+ expect(rows[1]?.result).toEqual({ of: "report#2" });
119
+ expect(store.listNodes("r1", { kinds: ["report"], withResult: true, limit: 0 })).toEqual([]);
120
+ });
121
+ it("counts nodes of one kind without listing them", () => {
122
+ const store = factory();
123
+ seedNodes(store);
124
+ expect(store.countNodes("r1", "report")).toBe(3);
125
+ expect(store.countNodes("r1", "ask")).toBe(1);
126
+ expect(store.countNodes("r1", "world-run")).toBe(0);
127
+ expect(store.countNodes("nope", "report")).toBe(0);
128
+ });
129
+ it("sums the UTF-8 bytes of one kind's results without listing them", () => {
130
+ // resume 靠它恢复报告的 run 级字节计数:两个实现必须用同一把尺——`JSON.stringify(result)`
131
+ // 的 UTF-8 字节(SQLite 侧就是 result_json 的长度),多字节字符按字节算,没有结果的行计 0。
132
+ const store = factory();
133
+ store.createRun(baseRun("r1"));
134
+ const bytes = (value) => new TextEncoder().encode(JSON.stringify(value)).length;
135
+ store.putNode(node("report#1", "report", { result: { text: "abc" } }));
136
+ store.putNode(node("report#2", "report", { result: "中文" }));
137
+ store.putNode(node("report#3", "report", { result: null }));
138
+ store.putNode(node("ask#1", "ask", { status: "running", result: undefined }));
139
+ expect(store.sumResultBytes("r1", "report")).toBe(bytes({ text: "abc" }) + bytes("中文") + bytes(null));
140
+ expect(store.sumResultBytes("r1", "ask")).toBe(0);
141
+ expect(store.sumResultBytes("r1", "world-run")).toBe(0);
142
+ expect(store.sumResultBytes("nope", "report")).toBe(0);
143
+ });
144
+ it("stops a node read before the row that would pass maxResultBytes, but always keeps the first", () => {
145
+ const store = factory();
146
+ store.createRun(baseRun("r1"));
147
+ const pad = "x".repeat(100);
148
+ for (let index = 1; index <= 4; index += 1) {
149
+ store.putNode(node(`report#${index}`, "report", { result: { index, pad } }));
150
+ }
151
+ const one = new TextEncoder().encode(JSON.stringify({ index: 1, pad })).length;
152
+ const sites = (maxResultBytes, limit) => store
153
+ .listNodes("r1", {
154
+ kinds: ["report"],
155
+ withResult: true,
156
+ maxResultBytes,
157
+ ...(limit === undefined ? {} : { limit }),
158
+ })
159
+ .map((row) => row.siteId);
160
+ // 两行半的预算放得下两行。
161
+ expect(sites(one * 2 + one / 2)).toEqual(["report#1", "report#2"]);
162
+ // 恰好两行也放得下(超过才收尾,等于不收)。
163
+ expect(sites(one * 2)).toEqual(["report#1", "report#2"]);
164
+ // 一行都放不下时第一行照样在:快照不会因为一条大报告而一条都不带。
165
+ expect(sites(1)).toEqual(["report#1"]);
166
+ // limit 与字节界同时生效,先到先停。
167
+ expect(sites(one * 10, 3)).toEqual(["report#1", "report#2", "report#3"]);
168
+ expect(store
169
+ .listNodes("r1", { kinds: ["report"], withResult: true, maxResultBytes: one * 2 })
170
+ .map((row) => row.result)).toEqual([
171
+ { index: 1, pad },
172
+ { index: 2, pad },
173
+ ]);
174
+ });
175
+ it("filters actors by name and leaves the persona out when asked", () => {
176
+ const store = factory();
177
+ store.createRun(baseRun("r1"));
178
+ const persona = { name: "judge", system: "You judge." };
179
+ store.putActor({
180
+ runId: "r1",
181
+ siteId: "actor#1",
182
+ ordinal: 1,
183
+ name: "judge",
184
+ persona,
185
+ sessionId: "s1",
186
+ });
187
+ store.putActor({ runId: "r1", siteId: "actor#2", ordinal: 1, name: "scout", persona });
188
+ store.putActor({ runId: "r1", siteId: "actor#1", ordinal: 2, name: "judge", persona });
189
+ const judges = store.listActors("r1", { name: "judge", withPersona: false });
190
+ expect(judges.map((actor) => `${actor.siteId}@${actor.ordinal}`)).toEqual([
191
+ "actor#1@1",
192
+ "actor#1@2",
193
+ ]);
194
+ expect(judges[0]).toEqual({
195
+ runId: "r1",
196
+ siteId: "actor#1",
197
+ ordinal: 1,
198
+ name: "judge",
199
+ sessionId: "s1",
200
+ });
201
+ expect(judges[0]).not.toHaveProperty("persona");
202
+ expect(store.listActors("r1", { name: "nobody", withPersona: true })).toEqual([]);
203
+ const all = store.listActors("r1", { withPersona: true });
204
+ expect(all).toHaveLength(3);
205
+ expect(all[1]?.persona).toEqual(persona);
206
+ });
207
+ it("filters events by type in sequence order, before the cursor and the limit", () => {
208
+ const store = factory();
209
+ store.createRun(baseRun("r1"));
210
+ store.appendEvent("r1", { type: "log", message: "a" }); // 0
211
+ store.appendEvent("r1", { type: "usage-updated", spentTokens: 1 }); // 1
212
+ store.appendEvent("r1", { type: "log", message: "b" }); // 2
213
+ store.appendEvent("r1", {
214
+ type: "import-cache-closed",
215
+ instance: { siteId: "ask#1", ordinal: 1 },
216
+ cause: "world-run",
217
+ }); // 3
218
+ store.appendEvent("r1", { type: "log", message: "c" }); // 4
219
+ const seqs = (opts) => store.listEvents("r1", opts).map((stored) => stored.sequence);
220
+ expect(seqs({ types: ["log"], reportItems: "all" })).toEqual([0, 2, 4]);
221
+ expect(seqs({ types: ["import-cache-closed", "log"], reportItems: "all" })).toEqual([
222
+ 0, 2, 3, 4,
223
+ ]);
224
+ // limit 作用在过滤之后:前两条 log,而不是「前两条事件里的 log」。
225
+ expect(seqs({ types: ["log"], reportItems: "all", limit: 2 })).toEqual([0, 2]);
226
+ expect(seqs({ types: ["log"], reportItems: "all", afterSequence: 0, limit: 1 })).toEqual([2]);
227
+ expect(seqs({ types: [], reportItems: "all" })).toEqual([]);
228
+ expect(seqs({ types: "all", reportItems: "all" })).toEqual([0, 1, 2, 3, 4]);
229
+ });
230
+ it("strips the item from every report event after the Nth, keeping every other field", () => {
231
+ const store = factory();
232
+ store.createRun(baseRun("r1"));
233
+ store.appendEvent("r1", report("report#1", { n: 1 })); // 0: rank 1
234
+ store.appendEvent("r1", { type: "log", message: "between" }); // 1
235
+ store.appendEvent("r1", report("report#1", null)); // 2: rank 2 — null 是合法 item
236
+ store.appendEvent("r1", report("report#2", { n: 3 }, "chart")); // 3: rank 3
237
+ store.appendEvent("r1", report("report#1", "four")); // 4: rank 4
238
+ const events = store.listEvents("r1", { types: "all", reportItems: { limit: 2 } });
239
+ expect(events.map((stored) => stored.sequence)).toEqual([0, 1, 2, 3, 4]);
240
+ expect(reportItemOf(events[0].event)).toEqual({ has: true, item: { n: 1 } });
241
+ expect(events[1].event).toEqual({ type: "log", message: "between" });
242
+ expect(reportItemOf(events[2].event)).toEqual({ has: true, item: null });
243
+ expect(reportItemOf(events[3].event)).toEqual({ has: false });
244
+ expect(events[3].event).toEqual({
245
+ type: "report",
246
+ instance: { siteId: "report#2", ordinal: 1 },
247
+ artifactId: "chart",
248
+ });
249
+ expect(reportItemOf(events[4].event)).toEqual({ has: false });
250
+ expect(events[4].timeCreated).toBeTypeOf("number");
251
+ const none = store.listEvents("r1", { types: ["report"], reportItems: { limit: 0 } });
252
+ expect(none.map((stored) => reportItemOf(stored.event).has)).toEqual([
253
+ false,
254
+ false,
255
+ false,
256
+ false,
257
+ ]);
258
+ const every = store.listEvents("r1", { types: ["report"], reportItems: "all" });
259
+ expect(every.map((stored) => reportItemOf(stored.event).has)).toEqual([true, true, true, true]);
260
+ });
261
+ it("ranks report events over the whole run, not over the page being read", () => {
262
+ // 「第几条报告」是 run 的事实:从 cursor 3 开始读,第 3 条报告仍然是第 3 条,
263
+ // 不会因为它是这一页的第一条就把 item 带回来。
264
+ const store = factory();
265
+ store.createRun(baseRun("r1"));
266
+ store.appendEvent("r1", report("report#1", 1)); // 0
267
+ store.appendEvent("r1", report("report#1", 2)); // 1
268
+ store.appendEvent("r1", { type: "log", message: "x" }); // 2
269
+ store.appendEvent("r1", report("report#1", 3)); // 3
270
+ store.appendEvent("r1", report("report#1", 4)); // 4
271
+ const page = store.listEvents("r1", {
272
+ types: ["report"],
273
+ reportItems: { limit: 2 },
274
+ afterSequence: 1,
275
+ });
276
+ expect(page.map((stored) => stored.sequence)).toEqual([3, 4]);
277
+ expect(page.map((stored) => reportItemOf(stored.event).has)).toEqual([false, false]);
278
+ const head = store.listEvents("r1", { types: ["report"], reportItems: { limit: 3 }, limit: 1 });
279
+ expect(head.map((stored) => reportItemOf(stored.event))).toEqual([{ has: true, item: 1 }]);
280
+ });
281
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把run 记录(建 run / 结算袋 / 元数据列 / 用量)的用例拆到本文件;
3
+ * 公开面仍从 journal-contract.ts 导出(`runJournalStoreContract` 按原顺序调用各主题的注册函数)。
4
+ *
5
+ * 注意:这里只登记 `it(...)`,不另开 describe——套件的分组与用例顺序必须与拆分前逐字相同。
6
+ */
7
+ import type { JournalStorePort } from "../engine/index.js";
8
+ export declare function registerRunCases(factory: () => JournalStorePort): void;
9
+ //# sourceMappingURL=journal-contract-runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-contract-runs.d.ts","sourceRoot":"","sources":["../../src/testing/journal-contract-runs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAyatE"}