@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,244 @@
1
+ /**
2
+ * amend-resume 导入缓存的**消费态**。
3
+ *
4
+ * 注入的 {@link ImportedRunCache} 是调用方构建的只读数据——run service 读前驱 journal 得到它,
5
+ * 崩溃后 resume 用同一个纯函数重建同一张表。所以「消费到哪了」不能就地写回那张表,必须是引擎
6
+ * 自己的状态:本模块就是这份状态,以及围绕它的全部判定(命中 / 分歧 / 种子)。
7
+ *
8
+ * 从 scheduler.ts 与 engine.ts 拆出来,理由同当初 scheduler 从 engine 拆出来:三个文件各自
9
+ * 聚焦、可读,且满足单文件行数上限。
10
+ */
11
+ import { canonicalJson } from "./hash.js";
12
+ import { personaIdentity } from "./persona.js";
13
+ /**
14
+ * 一个已附着候选的 actor 的导入消费态:消费游标 + 分歧标志。
15
+ *
16
+ * **分歧单调**:`diverged` 一旦为真永不回头查缓存,导入后缀弃置不可复活。
17
+ */
18
+ export class ImportedActorState {
19
+ candidate;
20
+ /** 已消费的导入条目数 = 下一个可命中的 actorSeq(也是转录截断边界的下标 + 1)。 */
21
+ consumed = 0;
22
+ diverged = false;
23
+ /**
24
+ * 「续跑前驱在飞 ask」的那个 seq(没有续跑即缺席)。至多一个:续跑本身就是分歧,
25
+ * 分歧单调,所以第二次不会再有。
26
+ */
27
+ carriedSeq;
28
+ constructor(candidate) {
29
+ this.candidate = candidate;
30
+ }
31
+ /**
32
+ * fresh ask 在 seq 上问缓存:命中返回条目(并推进游标),否则置分歧并返回 undefined。
33
+ *
34
+ * 两种不命中同等处理:哈希不符(指令变了)与 `seq >= entries.length`(新脚本在此 actor 上
35
+ * 扩了新 ask)。分歧的**级联**是免费且动态的——上游 ask 转 live 拿到新结果,下游用它插值出的
36
+ * 指令哈希必变,于是下游自动分歧,不需要任何显式传播。
37
+ *
38
+ * 本方法只在导入缓存**开着**时被调用(关门后走 {@link takeIfPure}),所以未命中时可以谈续跑。
39
+ */
40
+ take(seq, hash) {
41
+ if (this.diverged)
42
+ return undefined;
43
+ const entry = this.candidate.entries[seq];
44
+ if (entry === undefined || entry.inputHash !== hash) {
45
+ this.diverge(seq, hash, true);
46
+ return undefined;
47
+ }
48
+ this.consumed = seq + 1;
49
+ return entry;
50
+ }
51
+ /**
52
+ * 缓存关闭后的问法:只有**纯**条目(前驱记下 `worldToolCalls === 0`)还能命中。纯 ask 只依赖指令与
53
+ * 转录前缀——两者都在哈希链里——与工作区无关,所以关门不影响它的答案。碰过外部世界的条目即便同哈希
54
+ * 也不给:它读过的工作区可能已被改写;这个 ask 转 live,actor 从此分歧(转录不再与前驱一致,
55
+ * 后缀条目不可复活)。没有 stats、或 stats 里没有这个键的老条目按「碰过」处理(保守)。
56
+ *
57
+ * 关门后同样不续跑在飞 ask:那半场转录里全是前驱对**旧工作区**的观察,与带工具的条目同理。
58
+ */
59
+ takeIfPure(seq, hash) {
60
+ if (this.diverged)
61
+ return undefined;
62
+ const entry = this.candidate.entries[seq];
63
+ if (entry === undefined || entry.inputHash !== hash || entry.stats?.worldToolCalls !== 0) {
64
+ this.diverge(seq, hash, false);
65
+ return undefined;
66
+ }
67
+ this.consumed = seq + 1;
68
+ return entry;
69
+ }
70
+ /**
71
+ * 该 seq 的 ask 的答案是否**读自前驱的转录**:是则返回持有它的会话,否则 undefined。
72
+ *
73
+ * 成立当且仅当此刻仍未分歧、且游标已越过该 seq——分歧单调、准入按 seq 升序,所以这恰好是
74
+ * 「这一条被导入消费了」。两条路径各在判定之后立刻问:fresh ask 在 {@link take} 命中之后,
75
+ * 修订 run 的 resume 在 {@link reconcileRecorded} 之后(结算次序闸可能把事件推迟到同一个
76
+ * actor 更后的行已经置了分歧的时候,那时再问就会把一条导入行说成本 run 自己跑的)。
77
+ */
78
+ sourceSessionAt(seq) {
79
+ return !this.diverged && seq < this.consumed
80
+ ? this.candidate.transcriptSourceSessionId
81
+ : undefined;
82
+ }
83
+ /** 该 seq 的 ask 是否续跑了前驱的在飞 ask(调度器据此决定 stats 记不记 worldToolCalls)。 */
84
+ carriedAt(seq) {
85
+ return this.carriedSeq === seq;
86
+ }
87
+ /**
88
+ * 据一行**已记录**的 ask 重推分歧状态(修订 run 崩溃后 resume 时用)。
89
+ *
90
+ * 分歧状态不落库,而修订 run 的 resume 会把导入缓存整表重建。若不据 journal 行重推分歧点,
91
+ * 一个在原次执行中已于 seq k 分歧的 actor,其 seq k+n 的 fresh ask 可能恰好撞上导入条目的
92
+ * 哈希而被**错误导入**——那等于把一段与本 run 实际转录无关的历史塞回来。逐 seq 拿记录行的
93
+ * inputHash 与导入条目比对,恰好重建了原次执行当时的判定(准入按 seq 升序,hold 规则保证
94
+ * 这一点),因此这个重推是精确的,不是保守近似。`wasLive` 补上哈希看不见的那一种 live
95
+ * (缓存关闭后带工具的 ask,见 scheduler 的 tryImportedSettle)。
96
+ *
97
+ * `queuedBeforeClose` 是续跑判定的那一半事实:续跑与该 ask 的 `node-queued` 在准入的同一个
98
+ * 同步片里发生,所以「当时门开着」等价于「这条 node-queued 早于第一条 import-cache-closed」
99
+ * (见 engine-world.ts 的 recoverImportClosure)。必须精确——错判成续跑会让 seedActorTranscript
100
+ * 往一个**已经分歧**的会话里多抄一段前驱消息(driver 的幂等判据只看目标够不够长)。
101
+ */
102
+ reconcileRecorded(seq, recordedHash, wasLive, queuedBeforeClose) {
103
+ if (this.diverged)
104
+ return;
105
+ // 缓存关闭之后,一个带工具 actor 的 ask 即便与导入
106
+ // 条目同哈希也是 live 跑的——按哈希算成「已消费」会让种子边界取自前驱条目,而本会话的
107
+ // 真实转录在那个位置根本不是那些消息。live 与否是事件里的事实(node-queued),不是哈希
108
+ // 能推出来的。
109
+ if (wasLive) {
110
+ this.diverge(seq, recordedHash, queuedBeforeClose);
111
+ return;
112
+ }
113
+ const entry = this.candidate.entries[seq];
114
+ if (entry === undefined || entry.inputHash !== recordedHash) {
115
+ // 没 live 过的行不可能是续跑(续跑的 ask 一定被派发过,一定有 node-queued)。
116
+ this.diverged = true;
117
+ return;
118
+ }
119
+ this.consumed = Math.max(this.consumed, seq + 1);
120
+ }
121
+ /**
122
+ * 分歧 actor 的会话种子:源会话 + 复制多少条消息 + 承袭的模型 pin。
123
+ *
124
+ * 边界取**最后一条被消费**的导入条目的记账值:在 seq k 分歧意味着 0..k-1 的问答都已按缓存
125
+ * 结算,新会话要接着的正是那 k 次完整交换之后的位置(含它们的 repair / nudge 轮)。
126
+ * 一条也没消费就没有种子——全新会话、全新模型解析、不带 pin:pin 是为「转录接续下不静默
127
+ * 换模型」存在的,没有接续就没有它的用武之地。
128
+ *
129
+ * **续跑是例外**:边界改取 `inFlight.messageBoundary`(前驱整个会话),因此一条都没消费也有
130
+ * 种子——那正是「扇出第一轮在飞时被修订」的形状。
131
+ */
132
+ seed() {
133
+ const inFlight = this.candidate.inFlight;
134
+ if (this.carriedSeq !== undefined && inFlight !== undefined) {
135
+ return this.seedAt(inFlight.messageBoundary);
136
+ }
137
+ if (this.consumed === 0)
138
+ return undefined;
139
+ const last = this.candidate.entries[this.consumed - 1];
140
+ if (last === undefined)
141
+ return undefined;
142
+ return this.seedAt(last.messageBoundary);
143
+ }
144
+ /**
145
+ * 置分歧,并在此顺带判定这次未命中是不是**续跑前驱的在飞 ask**。
146
+ *
147
+ * 续跑的四个条件缺一不可:此前未分歧(否则本 actor 的转录早已不是前驱那条)、`seq` 恰在
148
+ * 前缀之后(在飞 ask 的位置)、整个前缀都已消费、指令哈希与在飞 ask 相符。`cacheOpen`
149
+ * 是第五个:关门之后那半场转录只是对旧工作区的观察,不比缓存的 world 读取更可信。
150
+ */
151
+ diverge(seq, hash, cacheOpen) {
152
+ const inFlight = this.candidate.inFlight;
153
+ if (cacheOpen &&
154
+ inFlight !== undefined &&
155
+ seq === this.candidate.entries.length &&
156
+ this.consumed === seq &&
157
+ inFlight.inputHash === hash) {
158
+ this.carriedSeq = seq;
159
+ }
160
+ this.diverged = true;
161
+ }
162
+ seedAt(messageCount) {
163
+ const seed = {
164
+ sourceSessionId: this.candidate.transcriptSourceSessionId,
165
+ messageCount,
166
+ };
167
+ if (this.candidate.resolvedModel !== undefined)
168
+ seed.resolvedModel = this.candidate.resolvedModel;
169
+ return seed;
170
+ }
171
+ }
172
+ /**
173
+ * world 节点的导入队列消费态:每个内容哈希一个游标(第 n 次出现对第 n 条记录)。
174
+ * 与 {@link ImportedActorState} 同理,游标是引擎的状态,注入的队列保持只读。
175
+ */
176
+ export class ImportedWorldQueue {
177
+ world;
178
+ cursors = new Map();
179
+ constructor(world) {
180
+ this.world = world;
181
+ }
182
+ /** 取该内容哈希的下一条记录,耗尽或从未记录即 undefined(调用方转 live)。 */
183
+ take(hash) {
184
+ const queue = this.world.get(hash);
185
+ if (queue === undefined)
186
+ return undefined;
187
+ const cursor = this.cursors.get(hash) ?? 0;
188
+ const entry = queue[cursor];
189
+ if (entry === undefined)
190
+ return undefined;
191
+ this.cursors.set(hash, cursor + 1);
192
+ return entry;
193
+ }
194
+ }
195
+ /**
196
+ * 为一个刚建出的 actor 找导入候选:按**有效名**查表,规范化 persona 一致才收。
197
+ *
198
+ * persona 比对用 `canonicalJson`——它跳过 undefined 成员、对象键排序,恰好就是要的规范化
199
+ * (`{name:"a"}` 与 `{name:"a", system: undefined}` 同值)。不一致即**弃整个候选**,该 actor
200
+ * 全新重跑:全保真转录下这是双重正确的——旧 system prompt 产的转录接新 persona 是身份错乱,
201
+ * 而「我把 persona 修好了」这个意图本来就是要重跑。
202
+ *
203
+ * 匿名 actor 永不附着:名字是缓存身份键,没有名字就没有可比对的坐标(代价已裁决)。
204
+ * 比对之所以在**运行期**而不是提交时静态比对两份脚本:名字与 persona 都是运行期值
205
+ * (`agent()` 的实参可以是动态表达式),静态比对是第二份真相,恰是本包处处要防的。
206
+ */
207
+ export function matchImportedActor(cache, spec) {
208
+ if (cache === undefined)
209
+ return undefined;
210
+ const name = spec.name;
211
+ if (name === undefined || name === "")
212
+ return undefined;
213
+ const candidate = cache.actors.get(name);
214
+ if (candidate === undefined)
215
+ return undefined;
216
+ if (canonicalJson(personaIdentity(spec)) !== canonicalJson(personaIdentity(candidate.persona))) {
217
+ return undefined;
218
+ }
219
+ return new ImportedActorState(candidate);
220
+ }
221
+ /**
222
+ * 一次 ask 缓存命中要落的**真** dwf_node 行(新 siteId、拷贝 result / stats / 边界)。
223
+ *
224
+ * 边界值必须一起拷过去,否则**这个** run 自己就不能再被修订——链式修订靠的正是 count offset
225
+ * 跨前缀复制不变。
226
+ */
227
+ export function importedAskRecord(runId, instance, actor, seq, hash, entry) {
228
+ const record = {
229
+ runId,
230
+ siteId: instance.siteId,
231
+ ordinal: instance.ordinal,
232
+ kind: "ask",
233
+ actorSiteId: actor.siteId,
234
+ actorOrdinal: actor.ordinal,
235
+ actorSeq: seq,
236
+ inputHash: hash,
237
+ status: "completed",
238
+ result: entry.result,
239
+ messageBoundary: entry.messageBoundary,
240
+ };
241
+ if (entry.stats !== undefined)
242
+ record.stats = entry.stats;
243
+ return record;
244
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @zcode/dynamic-workflow 执行引擎核心的模块导出。
3
+ */
4
+ export { WorkflowEngine, type EngineConfig, type RunSettlement } from "./engine.js";
5
+ export { InMemoryJournalStore } from "./journal-memory.js";
6
+ export { HOLE_PROMPT_MAX_CHARS, type FilledHole, type FillHoleResult, type HoleFill, type OpenHole, } from "./engine-holes.js";
7
+ export { ALL_EVENTS, NODE_KINDS, NON_REPORT_NODE_KINDS, type GetNodeOptions, type ListActorsOptions, type ListNodesOptions, type RunEventType, } from "./journal-read-types.js";
8
+ export { ConcurrencyController, CONCURRENCY_DECREASE_FACTOR, CONCURRENCY_FLOOR, CONCURRENCY_IDLE_RESET_MS, CONCURRENCY_INCREASE_AFTER_SUCCESSES, CONCURRENCY_INCREASE_STEP, type ConcurrencyControllerSnapshot, type ConcurrencyThrottleReason, } from "./concurrency.js";
9
+ export { canonicalJson, fnv1a, inputHash } from "./hash.js";
10
+ export { WorkflowError, INSTRUCTIONS_HEAD_MAX_CHARS, LAST_TOOL_NAME_MAX_CHARS, LAST_TOOL_TARGET_MAX_CHARS, NUDGE_ATTEMPTS, REPAIR_ATTEMPTS, refToString, type ActorId, type ActorRecord, type ActorRef, type ActorSessionSeed, type ArtifactPublishRequest, type ArtifactRef, type ArtifactVersionRecord, type AskMessage, type AskLastTool, type AskProgress, type AskSpec, type AskStats, type AskWaitInfo, type ConcurrencyChange, type ConcurrencyChangeReason, type Caps, type InstanceRef, type JournalStorePort, type ImportedActorCandidate, type ImportedAskEntry, type ImportedInFlightAsk, type ImportedRunCache, type ImportedWorldEntry, type ListEventsOptions, type NodeKind, type NodeOutcome, type NodeRecord, type NodeRecordStatus, type WorldReadInput, WORLD_READ_INPUT_MAX_BYTES, type PersonaSpec, type RunEvent, type RunRecord, type RunSettlementRecord, type RunStallInfo, type RunStatus, type RunStopReason, type SessionRef, type StoredEvent, type SubmitVerdict, type ValidateFn, type WorkflowDriver, type WorkflowErrorCode, type WorkflowErrorJson, type ProviderStopDetails, type WorkflowErrorMismatch, type WorkflowHostApi, type WorkflowReportSink, type WorldReadOp, } from "./types.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,QAAQ,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,yBAAyB,EACzB,oCAAoC,EACpC,yBAAyB,EACzB,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,cAAc,EACd,eAAe,EACf,WAAW,EACX,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,0BAA0B,EAC1B,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @zcode/dynamic-workflow 执行引擎核心的模块导出。
3
+ */
4
+ export { WorkflowEngine } from "./engine.js";
5
+ export { InMemoryJournalStore } from "./journal-memory.js";
6
+ export { HOLE_PROMPT_MAX_CHARS, } from "./engine-holes.js";
7
+ export { ALL_EVENTS, NODE_KINDS, NON_REPORT_NODE_KINDS, } from "./journal-read-types.js";
8
+ export { ConcurrencyController, CONCURRENCY_DECREASE_FACTOR, CONCURRENCY_FLOOR, CONCURRENCY_IDLE_RESET_MS, CONCURRENCY_INCREASE_AFTER_SUCCESSES, CONCURRENCY_INCREASE_STEP, } from "./concurrency.js";
9
+ export { canonicalJson, fnv1a, inputHash } from "./hash.js";
10
+ export { WorkflowError, INSTRUCTIONS_HEAD_MAX_CHARS, LAST_TOOL_NAME_MAX_CHARS, LAST_TOOL_TARGET_MAX_CHARS, NUDGE_ATTEMPTS, REPAIR_ATTEMPTS, refToString, WORLD_READ_INPUT_MAX_BYTES, } from "./types.js";
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 内存版 {@link JournalStorePort}:阶段一用于 fake-driver 测试与 replay/resume。
3
+ * 纯内存、同步;深拷贝进出以杜绝调用方持有的引用被后续写入意外改动(模拟存储边界)。
4
+ * 生产实现落在 zcode session store 的 node:sqlite(DatabaseSync,同步)之上,共用 JournalStorePort;
5
+ * 事务性不在端口面上,由 driver 组合 journal+session 写入。
6
+ */
7
+ import type { ActorRecord, Caps, GetNodeOptions, JournalStorePort, ListActorsOptions, ListEventsOptions, ListNodesOptions, NodeKind, NodeRecord, RunEvent, RunRecord, RunSettlementRecord, RunStatus, StoredEvent } from "./types.js";
8
+ export declare class InMemoryJournalStore implements JournalStorePort {
9
+ private readonly runs;
10
+ private readonly actors;
11
+ private readonly nodes;
12
+ private readonly events;
13
+ createRun(record: RunRecord): void;
14
+ getRun(runId: string): RunRecord | undefined;
15
+ updateRunStatus(runId: string, status: RunStatus, settlement?: RunSettlementRecord): void;
16
+ updateRunUsage(runId: string, spentTokens: number): void;
17
+ updateRunCaps(runId: string, caps: Caps): void;
18
+ updateRunScript(runId: string, scriptText: string, scriptHash: string): void;
19
+ putActor(record: ActorRecord): void;
20
+ getActor(runId: string, siteId: string, ordinal: number): ActorRecord | undefined;
21
+ listActors(runId: string, opts: ListActorsOptions): ActorRecord[];
22
+ putNode(record: NodeRecord): void;
23
+ getNode(runId: string, siteId: string, ordinal: number, opts?: GetNodeOptions): NodeRecord | undefined;
24
+ listNodes(runId: string, opts: ListNodesOptions): NodeRecord[];
25
+ countNodes(runId: string, kind: NodeKind): number;
26
+ sumResultBytes(runId: string, kind: NodeKind): number;
27
+ appendEvent(runId: string, event: RunEvent): StoredEvent;
28
+ listEvents(runId: string, opts: ListEventsOptions): StoredEvent[];
29
+ private requireActorBucket;
30
+ private requireNodeBucket;
31
+ }
32
+ //# sourceMappingURL=journal-memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-memory.d.ts","sourceRoot":"","sources":["../../src/engine/journal-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EACJ,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AAmBpB,qBAAa,oBAAqB,YAAW,gBAAgB;IAE3D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAE3D,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAUlC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAK5C,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,mBAAmB,GAAG,IAAI;IA6BzF,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAMxD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAQ9C,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ5E,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKnC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAKjF,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,WAAW,EAAE;IAajE,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKjC,OAAO,CACL,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,cAAc,GACpB,UAAU,GAAG,SAAS;IAKzB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,UAAU,EAAE;IAe9D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM;IAQjD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM;IAQrD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,WAAW;IAgBxD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,WAAW,EAAE;IAkCjE,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,iBAAiB;CAK1B"}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * 内存版 {@link JournalStorePort}:阶段一用于 fake-driver 测试与 replay/resume。
3
+ * 纯内存、同步;深拷贝进出以杜绝调用方持有的引用被后续写入意外改动(模拟存储边界)。
4
+ * 生产实现落在 zcode session store 的 node:sqlite(DatabaseSync,同步)之上,共用 JournalStorePort;
5
+ * 事务性不在端口面上,由 driver 组合 journal+session 写入。
6
+ */
7
+ /** 结构化深拷贝:隔离存储边界两侧的引用。值均为 JSON 兼容或 PersonaSpec 等纯数据。 */
8
+ function clone(value) {
9
+ return structuredClone(value);
10
+ }
11
+ /** 节点行的出库副本;`withResult: false` 与 SQLite 侧不 select `result_json` 同语义(键缺席)。 */
12
+ function nodeCopy(node, withResult) {
13
+ const copy = clone(node);
14
+ if (!withResult)
15
+ delete copy.result;
16
+ return copy;
17
+ }
18
+ /** actor / node 的复合键。 */
19
+ function key(siteId, ordinal) {
20
+ return `${siteId}@${ordinal}`;
21
+ }
22
+ export class InMemoryJournalStore {
23
+ // 以 runId 分桶,贴合"一个 store 可承载多个 run"的存储语义。
24
+ runs = new Map();
25
+ actors = new Map();
26
+ nodes = new Map();
27
+ events = new Map();
28
+ createRun(record) {
29
+ if (this.runs.has(record.runId)) {
30
+ throw new Error(`journal: run ${record.runId} already exists`);
31
+ }
32
+ this.runs.set(record.runId, clone(record));
33
+ this.actors.set(record.runId, new Map());
34
+ this.nodes.set(record.runId, new Map());
35
+ this.events.set(record.runId, []);
36
+ }
37
+ getRun(runId) {
38
+ const r = this.runs.get(runId);
39
+ return r === undefined ? undefined : clone(r);
40
+ }
41
+ updateRunStatus(runId, status, settlement) {
42
+ const r = this.runs.get(runId);
43
+ if (r === undefined)
44
+ throw new Error(`journal: unknown run ${runId}`);
45
+ r.status = status;
46
+ if (status === "pending" || status === "running") {
47
+ // 非终态 = 无 settlement:resume 把 run 翻回 running 时必须清掉上一世的残留,否则
48
+ // 孤儿收敛写下的 failure_json 会与 running 并存(journal 快照读面同时报「在跑」与
49
+ // 「已失败」)。矛盾的结算袋(非终态却携带 failure/result)同样按清空处理。
50
+ delete r.failure;
51
+ delete r.result;
52
+ delete r.stopReason;
53
+ delete r.supersededBy;
54
+ return;
55
+ }
56
+ // 失败三件套(failure / stopReason / supersededBy)**整体改写**:结算袋是这一刻失败的
57
+ // 全部真相,缺席即没有失败。旧的「缺席 = 不触碰」语义下,外部写入的 failed + Interrupted
58
+ // 会在随后的 completed 结算里幸存,行同时说「完成了」和「被打断了」
59
+ // (SQLite 侧是同一条 coalesce,两实现同语义)。
60
+ if (settlement?.stopReason === undefined)
61
+ delete r.stopReason;
62
+ else
63
+ r.stopReason = settlement.stopReason;
64
+ if (settlement?.supersededBy === undefined)
65
+ delete r.supersededBy;
66
+ else
67
+ r.supersededBy = settlement.supersededBy;
68
+ if (settlement?.failure === undefined)
69
+ delete r.failure;
70
+ else
71
+ r.failure = clone(settlement.failure);
72
+ // 产物相反:缺席的键表示「不触碰」,一次不带产物的重复结算不会抹掉已结算的产物。
73
+ // `result: null` 是合法产物,只有 undefined 才算缺席。
74
+ if (settlement?.result !== undefined)
75
+ r.result = clone(settlement.result);
76
+ }
77
+ updateRunUsage(runId, spentTokens) {
78
+ const r = this.runs.get(runId);
79
+ if (r === undefined)
80
+ throw new Error(`journal: unknown run ${runId}`);
81
+ r.spentTokens = spentTokens;
82
+ }
83
+ updateRunCaps(runId, caps) {
84
+ const r = this.runs.get(runId);
85
+ if (r === undefined)
86
+ throw new Error(`journal: unknown run ${runId}`);
87
+ // 深拷贝与其余写入同规(存储边界两侧不共享引用):调用方手里的那份 caps 随后被换掉,
88
+ // 不该顺手改动已落库的行。
89
+ r.caps = clone(caps);
90
+ }
91
+ updateRunScript(runId, scriptText, scriptHash) {
92
+ const r = this.runs.get(runId);
93
+ if (r === undefined)
94
+ throw new Error(`journal: unknown run ${runId}`);
95
+ // 两列同一笔写(resume 拿哈希对文本),行上其余一切不碰(与 updateRunUsage 同族)。
96
+ r.scriptText = scriptText;
97
+ r.scriptHash = scriptHash;
98
+ }
99
+ putActor(record) {
100
+ const bucket = this.requireActorBucket(record.runId);
101
+ bucket.set(key(record.siteId, record.ordinal), clone(record));
102
+ }
103
+ getActor(runId, siteId, ordinal) {
104
+ const a = this.actors.get(runId)?.get(key(siteId, ordinal));
105
+ return a === undefined ? undefined : clone(a);
106
+ }
107
+ listActors(runId, opts) {
108
+ const bucket = this.actors.get(runId);
109
+ if (bucket === undefined)
110
+ return [];
111
+ const matched = [...bucket.values()].filter((actor) => opts.name === undefined || actor.name === opts.name);
112
+ return matched.map((actor) => {
113
+ const copy = clone(actor);
114
+ if (!opts.withPersona)
115
+ delete copy.persona;
116
+ return copy;
117
+ });
118
+ }
119
+ putNode(record) {
120
+ const bucket = this.requireNodeBucket(record.runId);
121
+ bucket.set(key(record.siteId, record.ordinal), clone(record));
122
+ }
123
+ getNode(runId, siteId, ordinal, opts) {
124
+ const n = this.nodes.get(runId)?.get(key(siteId, ordinal));
125
+ return n === undefined ? undefined : nodeCopy(n, opts?.withResult ?? true);
126
+ }
127
+ listNodes(runId, opts) {
128
+ const bucket = this.nodes.get(runId);
129
+ if (bucket === undefined)
130
+ return [];
131
+ // Map 的迭代序 = 首次插入序,与 SQLite 侧的 `order by id` 同语义(upsert 不改 id,也不改
132
+ // Map 里的位置)。
133
+ const kinds = opts.kinds;
134
+ const matched = [...bucket.values()].filter((node) => kinds === "all" || kinds.includes(node.kind));
135
+ const limited = opts.limit === undefined ? matched : matched.slice(0, Math.max(0, opts.limit));
136
+ const budgeted = opts.maxResultBytes === undefined ? limited : withinBytes(limited, opts.maxResultBytes);
137
+ return budgeted.map((node) => nodeCopy(node, opts.withResult));
138
+ }
139
+ countNodes(runId, kind) {
140
+ const bucket = this.nodes.get(runId);
141
+ if (bucket === undefined)
142
+ return 0;
143
+ let count = 0;
144
+ for (const node of bucket.values())
145
+ if (node.kind === kind)
146
+ count += 1;
147
+ return count;
148
+ }
149
+ sumResultBytes(runId, kind) {
150
+ const bucket = this.nodes.get(runId);
151
+ if (bucket === undefined)
152
+ return 0;
153
+ let bytes = 0;
154
+ for (const node of bucket.values())
155
+ if (node.kind === kind)
156
+ bytes += resultBytes(node);
157
+ return bytes;
158
+ }
159
+ appendEvent(runId, event) {
160
+ // 孤儿事件(run 尚未 createRun)与 putActor/putNode 一样是契约破坏:静默建桶
161
+ // 会写出一批永远归属不到任何 run 的事件;SQLite 侧有 FK 兜底,内存侧靠这句。
162
+ const list = this.events.get(runId);
163
+ if (list === undefined)
164
+ throw new Error(`journal: unknown run ${runId}`);
165
+ // 追加时刻与 SQLite 侧的 `dwf_event.time_created` 同语义(两实现共用一份契约测):事件日志里
166
+ // 一切「多久以前」只能从它算,让读者现取 Date.now() 会把冷重放的整段历史全标成「刚刚」。
167
+ const stored = {
168
+ sequence: list.length,
169
+ event: clone(event),
170
+ timeCreated: Date.now(),
171
+ };
172
+ list.push(stored);
173
+ return clone(stored);
174
+ }
175
+ listEvents(runId, opts) {
176
+ const list = this.events.get(runId);
177
+ if (list === undefined)
178
+ return [];
179
+ // report 的排名按**全 run** 计(与 types / cursor / limit 无关),所以先在未过滤的序列上
180
+ // 给每条 report 事件定名次,再过滤——SQLite 侧的 row_number() 也开在过滤之前。
181
+ const reportLimit = opts.reportItems === "all" ? undefined : opts.reportItems.limit;
182
+ const stripped = new Set();
183
+ if (reportLimit !== undefined) {
184
+ let rank = 0;
185
+ for (const stored of list) {
186
+ if (stored.event.type !== "report")
187
+ continue;
188
+ rank += 1;
189
+ if (rank > reportLimit)
190
+ stripped.add(stored.sequence);
191
+ }
192
+ }
193
+ // sequence 与数组下标在内存实现里恒等(appendEvent 用 list.length 分配),但这里仍按
194
+ // sequence 比较而不是按下标偏移:cursor 的语义是"严格大于该 sequence",SQLite 侧也是
195
+ // `where sequence > ?`。两侧共用同一份契约测,语义必须逐字相同。
196
+ const types = opts.types;
197
+ const after = opts.afterSequence;
198
+ const filtered = list.filter((e) => (types === "all" || types.includes(e.event.type)) &&
199
+ (after === undefined || e.sequence > after));
200
+ const limited = opts.limit === undefined ? filtered : filtered.slice(0, Math.max(0, opts.limit));
201
+ return limited.map((stored) => {
202
+ const copy = clone(stored);
203
+ if (stripped.has(stored.sequence))
204
+ delete copy.event.item;
205
+ return copy;
206
+ });
207
+ }
208
+ requireActorBucket(runId) {
209
+ const bucket = this.actors.get(runId);
210
+ if (bucket === undefined)
211
+ throw new Error(`journal: unknown run ${runId}`);
212
+ return bucket;
213
+ }
214
+ requireNodeBucket(runId) {
215
+ const bucket = this.nodes.get(runId);
216
+ if (bucket === undefined)
217
+ throw new Error(`journal: unknown run ${runId}`);
218
+ return bucket;
219
+ }
220
+ }
221
+ /**
222
+ * 一行 `result` 的 UTF-8 序列化字节数,与 SQLite 侧 `octet_length(result_json)` 同一把尺
223
+ * (`result_json` 就是 `JSON.stringify(result)`)。无结果的行计 0。
224
+ */
225
+ function resultBytes(node) {
226
+ if (node.result === undefined)
227
+ return 0;
228
+ const text = JSON.stringify(node.result);
229
+ return text === undefined ? 0 : new TextEncoder().encode(text).length;
230
+ }
231
+ /** `maxResultBytes` 的前缀规则:再加一行就超界时收尾,第一行总是带上(同 SQLite 侧)。 */
232
+ function withinBytes(nodes, maxResultBytes) {
233
+ const kept = [];
234
+ let total = 0;
235
+ for (const node of nodes) {
236
+ const bytes = resultBytes(node);
237
+ if (kept.length > 0 && total + bytes > maxResultBytes)
238
+ break;
239
+ kept.push(node);
240
+ total += bytes;
241
+ }
242
+ return kept;
243
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * journal 读面的选项词汇表(docs/execution-engine.md「Reading the journal」)。
3
+ *
4
+ * 一条 run 的表随它做过的一切增长:每次调用一行节点,ask 的回答与 world read 的结果在
5
+ * `result_json`,每条 report item 更是存了两份(节点行 + `report` 事件的载荷)。所以没有读者
6
+ * 可以「整表读进内存再过滤」:每次读都说清自己要什么,过滤、计数、分组都在存储层做。
7
+ *
8
+ * 选项是**必填**的而不是带缺省:一次整表读必须在调用点写出 `"all"`,于是它在代码评审与
9
+ * grep 里都看得见,不会借一个缺省参数悄悄回来。
10
+ *
11
+ * 独立成模块:types.ts 顶在 oxlint max-lines 上限(400 行)。
12
+ */
13
+ import type { NodeKind, RunEvent } from "./types.js";
14
+ /** 事件类型词(`dwf_event.type` 列)。 */
15
+ export type RunEventType = RunEvent["type"];
16
+ export declare const NODE_KINDS: readonly NodeKind[];
17
+ /** 除 `report` 之外的全部 kind:读「这条 run 做过的事」而不碰报告条目的读者用它。 */
18
+ export declare const NON_REPORT_NODE_KINDS: readonly NodeKind[];
19
+ /** 节点列表读。行按 `id`(插入顺序)升序,`limit` 作用在过滤之后。 */
20
+ export interface ListNodesOptions {
21
+ /** 只返回这些 kind 的行(`kind in (…)`);`"all"` = 不过滤。空数组得到空列表。 */
22
+ kinds: readonly NodeKind[] | "all";
23
+ /** false = 不读 `result_json`,返回的行上 `result` 缺席(其余列照常)。 */
24
+ withResult: boolean;
25
+ /** 最多返回的行数;缺省不限。 */
26
+ limit?: number;
27
+ /**
28
+ * 结果字节的上界:按行序取行,再加一行就会让已取各行 `result` 的序列化字节数之和超过它时
29
+ * 收尾;第一行总是带上。只在 `withResult: true` 时有意义。终态快照用它把「前 256 条报告」
30
+ * 同时限在 8 MiB 之内——条数上界单独管不住字节。
31
+ */
32
+ maxResultBytes?: number;
33
+ }
34
+ /** 单行节点读。缺省读整行:点查不是整表读,只有只比对哈希的读者才需要省掉结果。 */
35
+ export interface GetNodeOptions {
36
+ /** false = 不读 `result_json`,返回的行上 `result` 缺席。 */
37
+ withResult: boolean;
38
+ }
39
+ /** 子代理列表读。行按 `id`(插入顺序)升序。 */
40
+ export interface ListActorsOptions {
41
+ /** 只返回这个名字的行(`name = ?`);缺省不过滤。 */
42
+ name?: string;
43
+ /** false = 不读 `persona_json`,返回的行上 `persona` 缺席。 */
44
+ withPersona: boolean;
45
+ }
46
+ /**
47
+ * 事件列表读(cursor = journal sequence)。事件按 sequence 升序;`types` 过滤先于 cursor 与
48
+ * `limit` 生效,于是分页在过滤后的序列上进行。
49
+ */
50
+ export interface ListEventsOptions {
51
+ /** 只返回这些类型的事件(`type in (…)`);`"all"` = 不过滤。空数组得到空列表。 */
52
+ types: readonly RunEventType[] | "all";
53
+ /**
54
+ * `report` 事件的 `item` 读到哪里为止。`{limit: N}`:本 run 按 sequence 的**第 N 条之后**的
55
+ * 每条 `report` 事件照样返回,但不带 `item`——实例、`artifactId`、出生阶段字段与时间都保留。
56
+ * 剥离发生在存储层(SQLite 的 `json_remove`),被剥掉的 item 从不进入 JS 堆。`item` 缺席只
57
+ * 可能是被剥掉的:`report(undefined)` 在引擎里就被拒绝了。
58
+ *
59
+ * 排名按**本 run 全部 report 事件**的 sequence 计,与 `types` / cursor / `limit` 无关——
60
+ * 「第几条报告」是 run 的事实,不随一页从哪里开始而变。
61
+ */
62
+ reportItems: "all" | {
63
+ limit: number;
64
+ };
65
+ /** 只返回 sequence **严格大于**该值的事件。cursor 是"已读到的最后一个 sequence",不是偏移量。 */
66
+ afterSequence?: number;
67
+ /** 单页最多返回的条数;缺省不限。 */
68
+ limit?: number;
69
+ }
70
+ /** 整条事件日志、report item 不剥:只给真要逐字节重放全部事件的读者(与测试)。 */
71
+ export declare const ALL_EVENTS: ListEventsOptions;
72
+ //# sourceMappingURL=journal-read-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-read-types.d.ts","sourceRoot":"","sources":["../../src/engine/journal-read-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAErD,iCAAiC;AACjC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAc5C,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAA6C,CAAC;AAExF,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,EAAE,SAAS,QAAQ,EAEpD,CAAC;AAEF,6CAA6C;AAC7C,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,KAAK,CAAC;IACnC,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;IACpB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,8BAA8B;AAC9B,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,KAAK,CAAC;IACvC;;;;;;;;OAQG;IACH,WAAW,EAAE,KAAK,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mDAAmD;AACnD,eAAO,MAAM,UAAU,EAAE,iBAAwD,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * journal 读面的选项词汇表(docs/execution-engine.md「Reading the journal」)。
3
+ *
4
+ * 一条 run 的表随它做过的一切增长:每次调用一行节点,ask 的回答与 world read 的结果在
5
+ * `result_json`,每条 report item 更是存了两份(节点行 + `report` 事件的载荷)。所以没有读者
6
+ * 可以「整表读进内存再过滤」:每次读都说清自己要什么,过滤、计数、分组都在存储层做。
7
+ *
8
+ * 选项是**必填**的而不是带缺省:一次整表读必须在调用点写出 `"all"`,于是它在代码评审与
9
+ * grep 里都看得见,不会借一个缺省参数悄悄回来。
10
+ *
11
+ * 独立成模块:types.ts 顶在 oxlint max-lines 上限(400 行)。
12
+ */
13
+ /**
14
+ * 全部节点 kind。`Record<NodeKind, true>` 让新增的 kind 在这里编译失败,而不是被一份手写
15
+ * 列表悄悄漏掉——{@link NON_REPORT_NODE_KINDS} 这类「除了某种之外」的集合都从它派生。
16
+ */
17
+ const NODE_KIND_SET = {
18
+ ask: true,
19
+ "world-read": true,
20
+ "world-run": true,
21
+ report: true,
22
+ artifact: true,
23
+ };
24
+ export const NODE_KINDS = Object.keys(NODE_KIND_SET);
25
+ /** 除 `report` 之外的全部 kind:读「这条 run 做过的事」而不碰报告条目的读者用它。 */
26
+ export const NON_REPORT_NODE_KINDS = NODE_KINDS.filter((kind) => kind !== "report");
27
+ /** 整条事件日志、report item 不剥:只给真要逐字节重放全部事件的读者(与测试)。 */
28
+ export const ALL_EVENTS = { types: "all", reportItems: "all" };