@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,218 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { join, basename } from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { parse, stringify } from "yaml";
5
+ import {
6
+ validateWorkflowName,
7
+ listDirOrEmpty,
8
+ readTextOrNull,
9
+ } from "./core.js";
10
+
11
+ // 与 MCode saved-workflows/frontmatter.ts 同一文件协议;保留正文逐字节。
12
+ export function decode(source) {
13
+ const match =
14
+ /^\s*\/\* (?:zcode|dsh)-workflow\s*\n([\s\S]*?)\n\*\/\r?\n?/.exec(source);
15
+ if (!match) {
16
+ if (/^\s*\/\* (?:zcode|dsh)-workflow/.test(source))
17
+ throw new Error("工作流元数据未闭合");
18
+ const description =
19
+ /@description\s+([^\n]+)/.exec(source)?.[1]?.trim() ?? "";
20
+ const args = Object.fromEntries(
21
+ [...source.matchAll(/@arg\s+([\w-]+)\s+([^\n]+)/g)].map((m) => [
22
+ m[1],
23
+ { type: "string", description: m[2].trim() },
24
+ ]),
25
+ );
26
+ return { meta: { description, args }, script: source, legacy: true };
27
+ }
28
+ const meta = parse(match[1], { maxAliasCount: 20 });
29
+ checkMeta(meta);
30
+ return { meta, script: source.slice(match[0].length), legacy: false };
31
+ }
32
+ export function checkMeta(meta) {
33
+ if (!meta || typeof meta.description !== "string")
34
+ throw new Error("description 必须是字符串");
35
+ if (
36
+ meta.args != null &&
37
+ (typeof meta.args !== "object" || Array.isArray(meta.args))
38
+ )
39
+ throw new Error("args 必须是参数声明对象");
40
+ for (const [key, spec] of Object.entries(meta.args ?? {})) {
41
+ if (!spec || !["string", "number", "boolean", "json"].includes(spec.type))
42
+ throw new Error(`参数 ${key} 的类型无效`);
43
+ if (spec.required !== undefined && typeof spec.required !== "boolean")
44
+ throw new Error(`参数 ${key} 的 required 必须是布尔值`);
45
+ if (spec.default !== undefined)
46
+ validateArgs({ [key]: spec }, { [key]: spec.default });
47
+ }
48
+ }
49
+ export function encode(meta, script) {
50
+ checkMeta(meta);
51
+ return `/* zcode-workflow\n${stringify({ description: meta.description, ...(meta.whenToUse ? { whenToUse: meta.whenToUse } : {}), args: meta.args ?? {} })}*/\n${script}`;
52
+ }
53
+ export function validateArgs(declared = {}, given = {}) {
54
+ if (!given || typeof given !== "object" || Array.isArray(given))
55
+ throw new Error("参数必须是对象");
56
+ const errors = [],
57
+ args = {};
58
+ for (const key of Object.keys(given))
59
+ if (!Object.hasOwn(declared, key)) errors.push(`未知参数:${key}`);
60
+ for (const [key, spec] of Object.entries(declared)) {
61
+ const value = given[key] === undefined ? spec.default : given[key];
62
+ if (value === undefined) {
63
+ if (spec.required) errors.push(`请填写必填参数:${key}`);
64
+ continue;
65
+ }
66
+ if (
67
+ spec.type !== "json" &&
68
+ (typeof value !== spec.type ||
69
+ (spec.type === "number" && !Number.isFinite(value)))
70
+ )
71
+ errors.push(`${key} 必须是 ${spec.type}`);
72
+ else args[key] = value;
73
+ }
74
+ if (errors.length) throw new Error(errors.join("\n"));
75
+ return args;
76
+ }
77
+ export class Registry {
78
+ constructor(root, projects = () => []) {
79
+ this.root = root;
80
+ this.projects = projects;
81
+ }
82
+ groups() {
83
+ return [
84
+ {
85
+ id: "global",
86
+ name: "全局",
87
+ scope: "global",
88
+ path: join(this.root, "saved"),
89
+ },
90
+ ...this.projects().map((p) => ({
91
+ id: p.id,
92
+ name: p.title || basename(p.path),
93
+ scope: "project",
94
+ workspacePath: p.path,
95
+ path: join(p.path, ".dsh", "workflows"),
96
+ })),
97
+ ];
98
+ }
99
+ group(id = "global") {
100
+ const g = this.groups().find((g) => g.id === id);
101
+ if (!g) throw new Error("项目已关闭或不存在");
102
+ return g;
103
+ }
104
+ path(name, groupId) {
105
+ return join(
106
+ this.group(groupId).path,
107
+ validateWorkflowName(name) + ".dwf.ts",
108
+ );
109
+ }
110
+ async get(name, groupId) {
111
+ const path = this.path(name, groupId),
112
+ source = await readTextOrNull(path);
113
+ if (source === null)
114
+ throw Object.assign(new Error("找不到工作流:" + name), {
115
+ code: "ENOENT",
116
+ });
117
+ const { meta, script, legacy } = decode(source);
118
+ return {
119
+ ...this.group(groupId),
120
+ ...meta,
121
+ name,
122
+ groupId: groupId ?? "global",
123
+ path,
124
+ source,
125
+ script,
126
+ legacy,
127
+ updatedAt: (await fs.stat(path)).mtimeMs,
128
+ id: `${groupId ?? "global"}:${name}`,
129
+ };
130
+ }
131
+ async list() {
132
+ return Promise.all(
133
+ this.groups().map(async (group) => {
134
+ const entries = [],
135
+ errors = [];
136
+ // 已有项目的 MCode 文件也可直接读取,迁移/修改时写到 dsh 的目录。
137
+ const dirs = [
138
+ group.path,
139
+ ...(group.workspacePath
140
+ ? [join(group.workspacePath, ".zcode", "workflows")]
141
+ : []),
142
+ ];
143
+ for (const dir of dirs)
144
+ for (const file of await listDirOrEmpty(dir)) {
145
+ if (
146
+ !file.endsWith(".dwf.ts") ||
147
+ entries.some((e) => e.name === file.slice(0, -7))
148
+ )
149
+ continue;
150
+ try {
151
+ const path = join(dir, file),
152
+ source = await fs.readFile(path, "utf8"),
153
+ { meta } = decode(source);
154
+ entries.push({
155
+ ...meta,
156
+ name: file.slice(0, -7),
157
+ groupId: group.id,
158
+ scope: group.scope,
159
+ workspacePath: group.workspacePath,
160
+ path,
161
+ updatedAt: (await fs.stat(path)).mtimeMs,
162
+ });
163
+ } catch (e) {
164
+ errors.push({ file, error: e.message });
165
+ }
166
+ }
167
+ return { ...group, entries, errors };
168
+ }),
169
+ );
170
+ }
171
+ async resolveEntry(name, groupId = "global") {
172
+ try {
173
+ return await this.get(name, groupId);
174
+ } catch (e) {
175
+ if (e.code !== "ENOENT" || !this.group(groupId).workspacePath) throw e;
176
+ const path = join(
177
+ this.group(groupId).workspacePath,
178
+ ".zcode",
179
+ "workflows",
180
+ validateWorkflowName(name) + ".dwf.ts",
181
+ );
182
+ const source = await readTextOrNull(path);
183
+ if (source === null) throw e;
184
+ return {
185
+ ...decode(source).meta,
186
+ script: decode(source).script,
187
+ source,
188
+ path,
189
+ name,
190
+ groupId,
191
+ workspacePath: this.group(groupId).workspacePath,
192
+ };
193
+ }
194
+ }
195
+ async save(name, source, groupId = "global", { overwrite = true } = {}) {
196
+ decode(source);
197
+ const path = this.path(name, groupId);
198
+ await fs.mkdir(this.group(groupId).path, { recursive: true });
199
+ if (!overwrite) await fs.writeFile(path, source, { flag: "wx" });
200
+ else {
201
+ const tmp = `${path}.${randomUUID()}.tmp`;
202
+ await fs.writeFile(tmp, source);
203
+ await fs.rename(tmp, path);
204
+ }
205
+ return this.get(name, groupId);
206
+ }
207
+ async move(name, from, to) {
208
+ if (from === to) return this.resolveEntry(name, from);
209
+ const entry = await this.resolveEntry(name, from);
210
+ const saved = await this.save(name, entry.source, to, { overwrite: false });
211
+ await fs.unlink(entry.path);
212
+ return saved;
213
+ }
214
+ async remove(name, groupId) {
215
+ const entry = await this.resolveEntry(name, groupId);
216
+ await fs.unlink(entry.path);
217
+ }
218
+ }
@@ -0,0 +1,54 @@
1
+ /** Plugin-owned UI anchors must remain replayable even without this plugin. */
2
+ export const WORKFLOW_RUN_RECORD = "plugin:dsh-workflow/run";
3
+
4
+ export function workflowSessionTitle(name, time = Date.now()) {
5
+ const parts = new Intl.DateTimeFormat("en-GB", {
6
+ timeZone: "Asia/Shanghai",
7
+ year: "numeric", month: "2-digit", day: "2-digit",
8
+ hour: "2-digit", minute: "2-digit", second: "2-digit", hourCycle: "h23",
9
+ }).formatToParts(new Date(time));
10
+ const values = Object.fromEntries(parts.map(({ type, value }) => [type, value]));
11
+ const stamp = ["year", "month", "day", "hour", "minute", "second"].map((key) => values[key]).join("");
12
+ const label = typeof name === "string" && name.trim() ? name.trim() : "工作流";
13
+ return `${label}-${stamp}`;
14
+ }
15
+
16
+ export function workflowRunId(event) {
17
+ if (event?.type !== WORKFLOW_RUN_RECORD && event?.type !== "dsh-workflow/run") return undefined;
18
+ return typeof event.data?.runId === "string" && event.data.runId.length > 0
19
+ ? event.data.runId : undefined;
20
+ }
21
+
22
+ /** Offline repair: retain every sequence/data payload; only repair our own record envelope. */
23
+ export function repairWorkflowSessionEvents(events, now = Date.now()) {
24
+ let changed = false;
25
+ const repaired = events.map((event) => {
26
+ if (!workflowRunId(event)) return event;
27
+ if (event.type === WORKFLOW_RUN_RECORD && event.ignorable === true) return event;
28
+ changed = true;
29
+ return { ...event, type: WORKFLOW_RUN_RECORD, ignorable: true };
30
+ });
31
+ const firstRun = repaired.find((event) => workflowRunId(event));
32
+ if (firstRun && !repaired.some((event) => event.type === "session/title")) {
33
+ repaired.push({
34
+ type: "session/title", seq: repaired.length, time: now,
35
+ data: { title: workflowSessionTitle(undefined, firstRun.time), messageSeqs: [], source: { kind: "user" } },
36
+ });
37
+ changed = true;
38
+ }
39
+ return { changed, events: repaired };
40
+ }
41
+
42
+ /** Resolve the host's module, not a bundled Session copy with different private fields. */
43
+ export async function prepareWorkflowSession(ctx, session) {
44
+ const loader = ctx.get("loader");
45
+ const titles = ctx.get("sessionTitle");
46
+ if (!loader || !titles) throw new Error("工作流会话需要宿主 loader 和 sessionTitle 服务");
47
+ const { appendPluginRecord } = await loader.import("@deepseek-ai/dsh-session");
48
+ if (typeof appendPluginRecord !== "function") throw new Error("宿主不支持可重放的插件会话记录");
49
+ return (runId, startedAt, runName) => {
50
+ appendPluginRecord(session, WORKFLOW_RUN_RECORD, { runId });
51
+ // Only name an untitled workflow session; preserve an existing user title.
52
+ if (!titles.get(session)?.title) titles.rename(session, workflowSessionTitle(runName, startedAt));
53
+ };
54
+ }
@@ -0,0 +1,34 @@
1
+ /** DSH can wrap tools in another transport. Commit only after every wrapper
2
+ * succeeds, using execution identity for staging and tokens for parent links. */
3
+ export function submissionCommit(commit, onError) {
4
+ const staged = new Map(),
5
+ parents = new Map();
6
+ return {
7
+ stage(exec, value) {
8
+ staged.set(exec, value);
9
+ },
10
+ result(exec, result) {
11
+ const values = [
12
+ ...(parents.get(exec.token) ?? []),
13
+ ...(staged.has(exec) ? [staged.get(exec)] : []),
14
+ ];
15
+ staged.delete(exec);
16
+ parents.delete(exec.token);
17
+ if (result.isError || !values.length) return;
18
+ if (exec.parent !== undefined)
19
+ parents.set(exec.parent, [
20
+ ...(parents.get(exec.parent) ?? []),
21
+ ...values,
22
+ ]);
23
+ else
24
+ for (const value of values)
25
+ Promise.resolve()
26
+ .then(() => commit(value))
27
+ .catch(onError);
28
+ },
29
+ clear() {
30
+ staged.clear();
31
+ parents.clear();
32
+ },
33
+ };
34
+ }
@@ -0,0 +1,275 @@
1
+ import { spawn } from "node:child_process";
2
+ import { promises as fs } from "node:fs";
3
+ import path from "node:path";
4
+ import { executeWorldRead } from "../vendor/mcode-host/workflow-world-read.js";
5
+
6
+ // MCode owns the operation schemas, Git parsing and result caps. This adapter
7
+ // supplies only filesystem/process I/O and cancels the entire process group.
8
+ export function createWorldDriver(cwd) {
9
+ const controller = new AbortController();
10
+ async function run({ command, timeoutMs = 300000, outputLimit = {} }) {
11
+ if (controller.signal.aborted) throw new Error("工作流已停止");
12
+ return new Promise((resolve) => {
13
+ const buffers = { stdout: [], stderr: [] },
14
+ sizes = { stdout: 0, stderr: 0 };
15
+ const cap = outputLimit.maxInlineBytes ?? 1024 * 1024;
16
+ let reason, error;
17
+ const child = spawn(command.file, command.args ?? [], {
18
+ cwd,
19
+ detached: process.platform !== "win32",
20
+ stdio: ["ignore", "pipe", "pipe"],
21
+ });
22
+ const kill = () => {
23
+ try {
24
+ process.platform === "win32"
25
+ ? child.kill("SIGKILL")
26
+ : process.kill(-child.pid, "SIGKILL");
27
+ } catch {}
28
+ };
29
+ const abort = () => {
30
+ reason = "cancelled";
31
+ kill();
32
+ };
33
+ controller.signal.addEventListener("abort", abort, { once: true });
34
+ const timer = setTimeout(() => {
35
+ reason = "timed_out";
36
+ kill();
37
+ }, timeoutMs);
38
+ for (const stream of ["stdout", "stderr"])
39
+ child[stream].on("data", (chunk) => {
40
+ const remaining = cap + 1 - sizes[stream];
41
+ if (remaining > 0) buffers[stream].push(chunk.subarray(0, remaining));
42
+ sizes[stream] += chunk.length;
43
+ if (sizes[stream] > cap) kill();
44
+ });
45
+ child.on("error", (e) => {
46
+ error = { message: e.message };
47
+ });
48
+ child.on("close", (code) => {
49
+ clearTimeout(timer);
50
+ controller.signal.removeEventListener("abort", abort);
51
+ const result = {
52
+ status:
53
+ reason ??
54
+ (error ? "spawn_error" : code === 0 ? "completed" : "failed"),
55
+ exitCode: code,
56
+ error,
57
+ };
58
+ for (const stream of ["stdout", "stderr"])
59
+ result[stream] = {
60
+ text: Buffer.concat(buffers[stream]).toString("utf8"),
61
+ bytes: sizes[stream],
62
+ truncated: sizes[stream] > cap,
63
+ };
64
+ resolve(result);
65
+ });
66
+ });
67
+ }
68
+ // Ripgrep may not be installed on the host. Probe once; when it is missing,
69
+ // fall back to a pure-Node walker that keeps the same result shape.
70
+ let rgAvailable;
71
+ const hasRg = async () => {
72
+ if (rgAvailable === undefined) {
73
+ const probe = await run({
74
+ command: { file: "rg", args: ["--version"] },
75
+ outputLimit: { maxInlineBytes: 4096 },
76
+ });
77
+ rgAvailable = probe.status === "completed";
78
+ }
79
+ return rgAvailable;
80
+ };
81
+ const rgArgs = [
82
+ "--hidden",
83
+ "-g",
84
+ "!.git",
85
+ "-g",
86
+ "!node_modules",
87
+ ];
88
+ const rg = async (args) => {
89
+ const result = await run({
90
+ command: { file: "rg", args },
91
+ outputLimit: { maxInlineBytes: 4 * 1024 * 1024 },
92
+ });
93
+ if (
94
+ !["completed", "failed"].includes(result.status) ||
95
+ (result.exitCode !== 0 && result.exitCode !== 1)
96
+ )
97
+ throw new Error(
98
+ result.stderr.text || result.error?.message || "文件搜索失败",
99
+ );
100
+ return result;
101
+ };
102
+ const GLOB_SKIP = new Set([".git", "node_modules"]);
103
+ const SCAN_FILE_CAP = 20000;
104
+ const SCAN_BYTES_PER_FILE = 8 * 1024 * 1024;
105
+ function globToRegExp(pattern) {
106
+ let re = "";
107
+ for (let i = 0; i < pattern.length; i++) {
108
+ const c = pattern[i];
109
+ if (c === "*") {
110
+ if (pattern[i + 1] === "*") {
111
+ i++;
112
+ if (pattern[i + 1] === "/") {
113
+ i++;
114
+ re += "(?:.*/)?";
115
+ } else re += ".*";
116
+ } else re += "[^/]*";
117
+ } else if (c === "?") re += "[^/]";
118
+ else re += c.replace(/[.+^${}()|[\]\\]/g, "\\$&");
119
+ }
120
+ return new RegExp(`^${re}$`);
121
+ }
122
+ function matchGlob(pattern, rel) {
123
+ const re = globToRegExp(pattern);
124
+ if (re.test(rel)) return true;
125
+ if (!pattern.includes("/")) {
126
+ const base = rel.split("/").pop();
127
+ if (base !== undefined && re.test(base)) return true;
128
+ }
129
+ return false;
130
+ }
131
+ async function* walk(dir, rel = "") {
132
+ let entries;
133
+ try {
134
+ entries = await fs.readdir(dir, { withFileTypes: true });
135
+ } catch {
136
+ return;
137
+ }
138
+ for (const entry of entries) {
139
+ if (GLOB_SKIP.has(entry.name)) continue;
140
+ const r = rel ? `${rel}/${entry.name}` : entry.name;
141
+ if (entry.isDirectory()) yield* walk(path.join(dir, entry.name), r);
142
+ else if (entry.isFile()) yield { abs: path.join(dir, entry.name), rel: r };
143
+ }
144
+ }
145
+ async function searchFilesNative({ pattern, maxResults }) {
146
+ const re = globToRegExp(pattern);
147
+ const files = [];
148
+ let scanned = 0;
149
+ let truncated = false;
150
+ for await (const f of walk(cwd)) {
151
+ if (matchGlob(pattern, f.rel)) {
152
+ files.push(path.resolve(cwd, f.rel));
153
+ if (files.length > maxResults) {
154
+ truncated = true;
155
+ break;
156
+ }
157
+ }
158
+ if (++scanned >= SCAN_FILE_CAP) {
159
+ truncated = true;
160
+ break;
161
+ }
162
+ }
163
+ return { files, truncated };
164
+ }
165
+ async function searchTextNative({ pattern, glob, headLimit }) {
166
+ let re;
167
+ try {
168
+ re = new RegExp(pattern);
169
+ } catch {
170
+ re = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
171
+ }
172
+ const entries = [];
173
+ let truncated = false;
174
+ let scanned = 0;
175
+ for await (const f of walk(cwd)) {
176
+ if (glob && !matchGlob(glob, f.rel)) continue;
177
+ if (++scanned >= SCAN_FILE_CAP) {
178
+ truncated = true;
179
+ break;
180
+ }
181
+ let content;
182
+ try {
183
+ const handle = await fs.open(f.abs, "r");
184
+ try {
185
+ const buffer = Buffer.alloc(SCAN_BYTES_PER_FILE);
186
+ const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
187
+ content = buffer.subarray(0, bytesRead).toString("utf8");
188
+ } finally {
189
+ await handle.close();
190
+ }
191
+ } catch {
192
+ continue;
193
+ }
194
+ const lines = content.split("\n");
195
+ if (lines.length > 1) lines.pop(); // trailing newline
196
+ for (let i = 0; i < lines.length; i++) {
197
+ if (re.test(lines[i])) {
198
+ entries.push({
199
+ path: path.resolve(cwd, f.rel),
200
+ lineNumber: i + 1,
201
+ text: lines[i],
202
+ });
203
+ if (entries.length > headLimit) {
204
+ return { entries, truncated: true };
205
+ }
206
+ }
207
+ }
208
+ }
209
+ return { entries, truncated };
210
+ }
211
+ const deps = {
212
+ cwd,
213
+ executionPort: { run },
214
+ fileSystemPort: {
215
+ async readTextFile({ path: file }) {
216
+ return { content: await fs.readFile(file, "utf8") };
217
+ },
218
+ async searchFiles({ pattern, maxResults }) {
219
+ if (!(await hasRg()))
220
+ return searchFilesNative({ pattern, maxResults });
221
+ const r = await rg([
222
+ "--files",
223
+ "--hidden",
224
+ "-g",
225
+ "!.git",
226
+ "-g",
227
+ pattern,
228
+ "-0",
229
+ ".",
230
+ ]);
231
+ const all = r.stdout.text.split("\0").filter(Boolean);
232
+ return {
233
+ files: all.slice(0, maxResults).map((p) => path.resolve(cwd, p)),
234
+ truncated: all.length > maxResults || r.stdout.truncated,
235
+ };
236
+ },
237
+ async searchText({ pattern, glob, headLimit }) {
238
+ if (!(await hasRg()))
239
+ return searchTextNative({ pattern, glob, headLimit });
240
+ const r = await rg([
241
+ "--json",
242
+ ...rgArgs,
243
+ ...(glob ? ["-g", glob] : []),
244
+ "--",
245
+ pattern,
246
+ ".",
247
+ ]);
248
+ const entries = [];
249
+ for (const line of r.stdout.text.split("\n")) {
250
+ if (!line) continue;
251
+ let event;
252
+ try {
253
+ event = JSON.parse(line);
254
+ } catch {
255
+ continue;
256
+ }
257
+ if (event.type === "match")
258
+ entries.push({
259
+ path: path.resolve(cwd, event.data.path.text),
260
+ lineNumber: event.data.line_number,
261
+ text: event.data.lines.text.replace(/\r?\n$/, ""),
262
+ });
263
+ }
264
+ return {
265
+ entries: entries.slice(0, headLimit),
266
+ truncated: entries.length > headLimit || r.stdout.truncated,
267
+ };
268
+ },
269
+ },
270
+ };
271
+ return {
272
+ execute: (op, args) => executeWorldRead(deps, op, args),
273
+ dispose: () => controller.abort(),
274
+ };
275
+ }
package/package.json CHANGED
@@ -1,6 +1,69 @@
1
1
  {
2
2
  "name": "@sunshaobei/dsh-workflow",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "description": "MCode workflow UI and runtime integration for DSH",
4
+ "version": "2.1.2",
5
+ "type": "module",
6
+ "main": "./lib/index.js",
7
+ "exports": {
8
+ ".": "./lib/index.js",
9
+ "./client": "./lib/client.js",
10
+ "./package.json": "./package.json"
11
+ },
12
+ "files": [
13
+ "lib",
14
+ "vendor",
15
+ "cordis.patch.yml",
16
+ "README.md"
17
+ ],
18
+ "dependencies": {
19
+ "react-markdown": "^10.1.0",
20
+ "remark-gfm": "^4.0.1",
21
+ "typescript": "^5.9.3",
22
+ "yaml": "^2.8.1"
23
+ },
24
+ "dsh": {
25
+ "bundle": {
26
+ "patch": "./cordis.patch.yml"
27
+ },
28
+ "client": {
29
+ "platform": "web",
30
+ "inject": [
31
+ "@deepseek-ai/dsh-client-ui-workspace",
32
+ "@deepseek-ai/dsh-client-ui-sidebar-right",
33
+ "@deepseek-ai/dsh-client-ui-tool",
34
+ "@deepseek-ai/dsh-client-ui-chat"
35
+ ],
36
+ "immediately": true
37
+ }
38
+ },
39
+ "keywords": [
40
+ "dsh",
41
+ "dsh-plugin",
42
+ "deepseek-harness",
43
+ "workflow",
44
+ "subagents",
45
+ "dynamic-workflow"
46
+ ],
47
+ "license": "MIT",
48
+ "peerDependencies": {
49
+ "@deepseek-ai/dsh-llm": "0.2.1-rc.2",
50
+ "@deepseek-ai/dsh-tools": "0.2.1-rc.2",
51
+ "@deepseek-ai/schemastery": "~3.18.5"
52
+ },
53
+ "scripts": {
54
+ "build": "node scripts/build.mjs",
55
+ "test": "node --test tests/*.test.mjs",
56
+ "preview": "node scripts/preview.mjs",
57
+ "test:engine": "node scripts/selftest.mjs"
58
+ },
59
+ "devDependencies": {
60
+ "esbuild": "^0.25.0",
61
+ "jsdom": "^26.1.0",
62
+ "prettier": "^3.9.10",
63
+ "react": "^19.3.1",
64
+ "react-dom": "^19.3.1"
65
+ },
66
+ "publishConfig": {
67
+ "access": "public"
68
+ }
69
+ }
@@ -0,0 +1,9 @@
1
+ # Source provenance
2
+
3
+ Reference checkout: `<本地 MCode 检出>`, inspected HEAD `434fd17661f14b9421b4acaf1a185616be275cfb`.
4
+
5
+ - `dynamic-workflow/`: compiled MCode compiler, analyzer, schema, facade and engine.
6
+ - `dynamic-workflow-runtime/`: transpiled runtime; relative imports, `.dsh` script directory, temporary prefix and Electron Node environment adapted.
7
+ - `mcode-host/`: bootstrap `workflow-world-read.ts`, `workflow-git-world-read.ts`, `dynamic-workflow-import.ts`; runtime imports adapted and terminal status set inlined.
8
+
9
+ DSH filesystem, process, storage and session adapters live in `lib/`. Vendor files are not reformatted with plugin sources.