@sunshaobei/dsh-workflow 0.0.0-stage → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -2
- package/cordis.patch.yml +17 -0
- package/lib/client.js +14708 -0
- package/lib/core.js +137 -0
- package/lib/engine-adapter.js +1387 -0
- package/lib/host-driver.js +298 -0
- package/lib/index.js +536 -0
- package/lib/projection.js +159 -0
- package/lib/registry.js +218 -0
- package/lib/session-records.js +54 -0
- package/lib/submission-commit.js +34 -0
- package/lib/world-driver.js +275 -0
- package/package.json +64 -4
- package/vendor/PROVENANCE.md +9 -0
- package/vendor/dynamic-workflow/analysis/actor-graph.d.ts +47 -0
- package/vendor/dynamic-workflow/analysis/actor-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/actor-graph.js +95 -0
- package/vendor/dynamic-workflow/analysis/actor-models.d.ts +60 -0
- package/vendor/dynamic-workflow/analysis/actor-models.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/actor-models.js +208 -0
- package/vendor/dynamic-workflow/analysis/actor-names.d.ts +56 -0
- package/vendor/dynamic-workflow/analysis/actor-names.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/actor-names.js +155 -0
- package/vendor/dynamic-workflow/analysis/analyze.d.ts +63 -0
- package/vendor/dynamic-workflow/analysis/analyze.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/analyze.js +92 -0
- package/vendor/dynamic-workflow/analysis/array-methods.d.ts +21 -0
- package/vendor/dynamic-workflow/analysis/array-methods.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/array-methods.js +132 -0
- package/vendor/dynamic-workflow/analysis/artifact-types.d.ts +39 -0
- package/vendor/dynamic-workflow/analysis/artifact-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/artifact-types.js +114 -0
- package/vendor/dynamic-workflow/analysis/artifacts.d.ts +67 -0
- package/vendor/dynamic-workflow/analysis/artifacts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/artifacts.js +263 -0
- package/vendor/dynamic-workflow/analysis/assign.d.ts +42 -0
- package/vendor/dynamic-workflow/analysis/assign.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/assign.js +287 -0
- package/vendor/dynamic-workflow/analysis/callbacks.d.ts +71 -0
- package/vendor/dynamic-workflow/analysis/callbacks.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/callbacks.js +133 -0
- package/vendor/dynamic-workflow/analysis/calls.d.ts +40 -0
- package/vendor/dynamic-workflow/analysis/calls.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/calls.js +495 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-lanes.d.ts +25 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-lanes.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-lanes.js +161 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-types.d.ts +163 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-types.js +8 -0
- package/vendor/dynamic-workflow/analysis/causality-graph.d.ts +39 -0
- package/vendor/dynamic-workflow/analysis/causality-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-graph.js +530 -0
- package/vendor/dynamic-workflow/analysis/causality-order-calls.d.ts +29 -0
- package/vendor/dynamic-workflow/analysis/causality-order-calls.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-calls.js +266 -0
- package/vendor/dynamic-workflow/analysis/causality-order-functions.d.ts +26 -0
- package/vendor/dynamic-workflow/analysis/causality-order-functions.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-functions.js +116 -0
- package/vendor/dynamic-workflow/analysis/causality-order-loops.d.ts +5 -0
- package/vendor/dynamic-workflow/analysis/causality-order-loops.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-loops.js +148 -0
- package/vendor/dynamic-workflow/analysis/causality-order-settle.d.ts +39 -0
- package/vendor/dynamic-workflow/analysis/causality-order-settle.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-settle.js +263 -0
- package/vendor/dynamic-workflow/analysis/causality-order-state.d.ts +110 -0
- package/vendor/dynamic-workflow/analysis/causality-order-state.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-state.js +162 -0
- package/vendor/dynamic-workflow/analysis/causality-order-strands.d.ts +79 -0
- package/vendor/dynamic-workflow/analysis/causality-order-strands.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-strands.js +154 -0
- package/vendor/dynamic-workflow/analysis/causality-order-types.d.ts +174 -0
- package/vendor/dynamic-workflow/analysis/causality-order-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-types.js +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-walk.d.ts +17 -0
- package/vendor/dynamic-workflow/analysis/causality-order-walk.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-walk.js +282 -0
- package/vendor/dynamic-workflow/analysis/causality-order.d.ts +60 -0
- package/vendor/dynamic-workflow/analysis/causality-order.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order.js +110 -0
- package/vendor/dynamic-workflow/analysis/causality-reduce.d.ts +60 -0
- package/vendor/dynamic-workflow/analysis/causality-reduce.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-reduce.js +198 -0
- package/vendor/dynamic-workflow/analysis/classes.d.ts +47 -0
- package/vendor/dynamic-workflow/analysis/classes.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/classes.js +264 -0
- package/vendor/dynamic-workflow/analysis/constants.d.ts +35 -0
- package/vendor/dynamic-workflow/analysis/constants.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/constants.js +23 -0
- package/vendor/dynamic-workflow/analysis/control-flow.d.ts +26 -0
- package/vendor/dynamic-workflow/analysis/control-flow.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/control-flow.js +132 -0
- package/vendor/dynamic-workflow/analysis/core-json.d.ts +45 -0
- package/vendor/dynamic-workflow/analysis/core-json.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/core-json.js +49 -0
- package/vendor/dynamic-workflow/analysis/core.d.ts +194 -0
- package/vendor/dynamic-workflow/analysis/core.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/core.js +204 -0
- package/vendor/dynamic-workflow/analysis/domain.d.ts +269 -0
- package/vendor/dynamic-workflow/analysis/domain.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/domain.js +523 -0
- package/vendor/dynamic-workflow/analysis/facade-misuse.d.ts +56 -0
- package/vendor/dynamic-workflow/analysis/facade-misuse.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/facade-misuse.js +350 -0
- package/vendor/dynamic-workflow/analysis/fanout-cardinality.d.ts +11 -0
- package/vendor/dynamic-workflow/analysis/fanout-cardinality.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/fanout-cardinality.js +121 -0
- package/vendor/dynamic-workflow/analysis/flow-graph.d.ts +113 -0
- package/vendor/dynamic-workflow/analysis/flow-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/flow-graph.js +411 -0
- package/vendor/dynamic-workflow/analysis/flow-phase.d.ts +28 -0
- package/vendor/dynamic-workflow/analysis/flow-phase.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/flow-phase.js +104 -0
- package/vendor/dynamic-workflow/analysis/flow-strands.d.ts +39 -0
- package/vendor/dynamic-workflow/analysis/flow-strands.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/flow-strands.js +47 -0
- package/vendor/dynamic-workflow/analysis/flow-tree.d.ts +35 -0
- package/vendor/dynamic-workflow/analysis/flow-tree.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/flow-tree.js +33 -0
- package/vendor/dynamic-workflow/analysis/graph.d.ts +5 -0
- package/vendor/dynamic-workflow/analysis/graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/graph.js +199 -0
- package/vendor/dynamic-workflow/analysis/handoff-graph.d.ts +48 -0
- package/vendor/dynamic-workflow/analysis/handoff-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/handoff-graph.js +0 -0
- package/vendor/dynamic-workflow/analysis/heap-ops.d.ts +14 -0
- package/vendor/dynamic-workflow/analysis/heap-ops.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/heap-ops.js +70 -0
- package/vendor/dynamic-workflow/analysis/hole-id.d.ts +28 -0
- package/vendor/dynamic-workflow/analysis/hole-id.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/hole-id.js +41 -0
- package/vendor/dynamic-workflow/analysis/hole-sites.d.ts +32 -0
- package/vendor/dynamic-workflow/analysis/hole-sites.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/hole-sites.js +215 -0
- package/vendor/dynamic-workflow/analysis/hole-splice.d.ts +45 -0
- package/vendor/dynamic-workflow/analysis/hole-splice.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/hole-splice.js +100 -0
- package/vendor/dynamic-workflow/analysis/interpret.d.ts +26 -0
- package/vendor/dynamic-workflow/analysis/interpret.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/interpret.js +200 -0
- package/vendor/dynamic-workflow/analysis/literals.d.ts +18 -0
- package/vendor/dynamic-workflow/analysis/literals.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/literals.js +125 -0
- package/vendor/dynamic-workflow/analysis/mermaid.d.ts +60 -0
- package/vendor/dynamic-workflow/analysis/mermaid.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/mermaid.js +477 -0
- package/vendor/dynamic-workflow/analysis/patterns.d.ts +31 -0
- package/vendor/dynamic-workflow/analysis/patterns.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/patterns.js +94 -0
- package/vendor/dynamic-workflow/analysis/phase-graph.d.ts +47 -0
- package/vendor/dynamic-workflow/analysis/phase-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/phase-graph.js +334 -0
- package/vendor/dynamic-workflow/analysis/phases.d.ts +24 -0
- package/vendor/dynamic-workflow/analysis/phases.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/phases.js +54 -0
- package/vendor/dynamic-workflow/analysis/promise-ops.d.ts +52 -0
- package/vendor/dynamic-workflow/analysis/promise-ops.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/promise-ops.js +123 -0
- package/vendor/dynamic-workflow/analysis/relays.d.ts +12 -0
- package/vendor/dynamic-workflow/analysis/relays.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/relays.js +78 -0
- package/vendor/dynamic-workflow/analysis/serialize.d.ts +125 -0
- package/vendor/dynamic-workflow/analysis/serialize.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/serialize.js +321 -0
- package/vendor/dynamic-workflow/analysis/site-phases.d.ts +32 -0
- package/vendor/dynamic-workflow/analysis/site-phases.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/site-phases.js +69 -0
- package/vendor/dynamic-workflow/analysis/sites-labels.d.ts +71 -0
- package/vendor/dynamic-workflow/analysis/sites-labels.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/sites-labels.js +189 -0
- package/vendor/dynamic-workflow/analysis/sites.d.ts +267 -0
- package/vendor/dynamic-workflow/analysis/sites.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/sites.js +225 -0
- package/vendor/dynamic-workflow/analysis/state.d.ts +254 -0
- package/vendor/dynamic-workflow/analysis/state.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/state.js +569 -0
- package/vendor/dynamic-workflow/analysis/taint.d.ts +97 -0
- package/vendor/dynamic-workflow/analysis/taint.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/taint.js +649 -0
- package/vendor/dynamic-workflow/analysis/types.d.ts +100 -0
- package/vendor/dynamic-workflow/analysis/types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/types.js +1 -0
- package/vendor/dynamic-workflow/analysis/world-run.d.ts +27 -0
- package/vendor/dynamic-workflow/analysis/world-run.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/world-run.js +44 -0
- package/vendor/dynamic-workflow/compiler/compile.d.ts +59 -0
- package/vendor/dynamic-workflow/compiler/compile.d.ts.map +1 -0
- package/vendor/dynamic-workflow/compiler/compile.js +159 -0
- package/vendor/dynamic-workflow/compiler/libs.generated.d.ts +3 -0
- package/vendor/dynamic-workflow/compiler/libs.generated.d.ts.map +1 -0
- package/vendor/dynamic-workflow/compiler/libs.generated.js +64 -0
- package/vendor/dynamic-workflow/engine/artifact-spec.d.ts +26 -0
- package/vendor/dynamic-workflow/engine/artifact-spec.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/artifact-spec.js +173 -0
- package/vendor/dynamic-workflow/engine/ask-observation-types.d.ts +54 -0
- package/vendor/dynamic-workflow/engine/ask-observation-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/ask-observation-types.js +19 -0
- package/vendor/dynamic-workflow/engine/cached-ask-facts.d.ts +28 -0
- package/vendor/dynamic-workflow/engine/cached-ask-facts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/cached-ask-facts.js +35 -0
- package/vendor/dynamic-workflow/engine/concurrency.d.ts +151 -0
- package/vendor/dynamic-workflow/engine/concurrency.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/concurrency.js +282 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts-primary.d.ts +17 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts-primary.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts-primary.js +29 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts.d.ts +55 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts.js +367 -0
- package/vendor/dynamic-workflow/engine/engine-config.d.ts +90 -0
- package/vendor/dynamic-workflow/engine/engine-config.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-config.js +6 -0
- package/vendor/dynamic-workflow/engine/engine-holes.d.ts +116 -0
- package/vendor/dynamic-workflow/engine/engine-holes.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-holes.js +142 -0
- package/vendor/dynamic-workflow/engine/engine-launch.d.ts +34 -0
- package/vendor/dynamic-workflow/engine/engine-launch.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-launch.js +26 -0
- package/vendor/dynamic-workflow/engine/engine-phase-stamp.d.ts +35 -0
- package/vendor/dynamic-workflow/engine/engine-phase-stamp.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-phase-stamp.js +74 -0
- package/vendor/dynamic-workflow/engine/engine-report.d.ts +27 -0
- package/vendor/dynamic-workflow/engine/engine-report.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-report.js +151 -0
- package/vendor/dynamic-workflow/engine/engine-resume.d.ts +18 -0
- package/vendor/dynamic-workflow/engine/engine-resume.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-resume.js +38 -0
- package/vendor/dynamic-workflow/engine/engine-settlement.d.ts +30 -0
- package/vendor/dynamic-workflow/engine/engine-settlement.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-settlement.js +79 -0
- package/vendor/dynamic-workflow/engine/engine-state.d.ts +99 -0
- package/vendor/dynamic-workflow/engine/engine-state.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-state.js +13 -0
- package/vendor/dynamic-workflow/engine/engine-world.d.ts +36 -0
- package/vendor/dynamic-workflow/engine/engine-world.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-world.js +189 -0
- package/vendor/dynamic-workflow/engine/engine.d.ts +263 -0
- package/vendor/dynamic-workflow/engine/engine.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine.js +602 -0
- package/vendor/dynamic-workflow/engine/errors.d.ts +87 -0
- package/vendor/dynamic-workflow/engine/errors.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/errors.js +56 -0
- package/vendor/dynamic-workflow/engine/hash-mismatch.d.ts +10 -0
- package/vendor/dynamic-workflow/engine/hash-mismatch.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/hash-mismatch.js +15 -0
- package/vendor/dynamic-workflow/engine/hash.d.ts +16 -0
- package/vendor/dynamic-workflow/engine/hash.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/hash.js +48 -0
- package/vendor/dynamic-workflow/engine/imported-cache-types.d.ts +96 -0
- package/vendor/dynamic-workflow/engine/imported-cache-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/imported-cache-types.js +6 -0
- package/vendor/dynamic-workflow/engine/imported-cache.d.ts +127 -0
- package/vendor/dynamic-workflow/engine/imported-cache.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/imported-cache.js +244 -0
- package/vendor/dynamic-workflow/engine/index.d.ts +11 -0
- package/vendor/dynamic-workflow/engine/index.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/index.js +10 -0
- package/vendor/dynamic-workflow/engine/journal-memory.d.ts +32 -0
- package/vendor/dynamic-workflow/engine/journal-memory.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/journal-memory.js +243 -0
- package/vendor/dynamic-workflow/engine/journal-read-types.d.ts +72 -0
- package/vendor/dynamic-workflow/engine/journal-read-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/journal-read-types.js +28 -0
- package/vendor/dynamic-workflow/engine/persona.d.ts +20 -0
- package/vendor/dynamic-workflow/engine/persona.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/persona.js +43 -0
- package/vendor/dynamic-workflow/engine/replay-order.d.ts +96 -0
- package/vendor/dynamic-workflow/engine/replay-order.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/replay-order.js +229 -0
- package/vendor/dynamic-workflow/engine/run-terminal.d.ts +35 -0
- package/vendor/dynamic-workflow/engine/run-terminal.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/run-terminal.js +7 -0
- package/vendor/dynamic-workflow/engine/scheduler-submit.d.ts +22 -0
- package/vendor/dynamic-workflow/engine/scheduler-submit.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/scheduler-submit.js +84 -0
- package/vendor/dynamic-workflow/engine/scheduler-types.d.ts +105 -0
- package/vendor/dynamic-workflow/engine/scheduler-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/scheduler-types.js +17 -0
- package/vendor/dynamic-workflow/engine/scheduler.d.ts +113 -0
- package/vendor/dynamic-workflow/engine/scheduler.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/scheduler.js +484 -0
- package/vendor/dynamic-workflow/engine/types.d.ts +979 -0
- package/vendor/dynamic-workflow/engine/types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/types.js +26 -0
- package/vendor/dynamic-workflow/engine/world-read-input.d.ts +10 -0
- package/vendor/dynamic-workflow/engine/world-read-input.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/world-read-input.js +55 -0
- package/vendor/dynamic-workflow/facade/artifact-caps.d.ts +48 -0
- package/vendor/dynamic-workflow/facade/artifact-caps.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/artifact-caps.js +47 -0
- package/vendor/dynamic-workflow/facade/dts-hole.d.ts +16 -0
- package/vendor/dynamic-workflow/facade/dts-hole.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/dts-hole.js +26 -0
- package/vendor/dynamic-workflow/facade/dts-model.d.ts +11 -0
- package/vendor/dynamic-workflow/facade/dts-model.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/dts-model.js +18 -0
- package/vendor/dynamic-workflow/facade/dts-stream.d.ts +15 -0
- package/vendor/dynamic-workflow/facade/dts-stream.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/dts-stream.js +41 -0
- package/vendor/dynamic-workflow/facade/dts.d.ts +29 -0
- package/vendor/dynamic-workflow/facade/dts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/dts.js +324 -0
- package/vendor/dynamic-workflow/facade/registry.d.ts +218 -0
- package/vendor/dynamic-workflow/facade/registry.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/registry.js +203 -0
- package/vendor/dynamic-workflow/facade/report-caps.d.ts +40 -0
- package/vendor/dynamic-workflow/facade/report-caps.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/report-caps.js +39 -0
- package/vendor/dynamic-workflow/facade/world-read-caps.d.ts +37 -0
- package/vendor/dynamic-workflow/facade/world-read-caps.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/world-read-caps.js +36 -0
- package/vendor/dynamic-workflow/index.d.ts +41 -0
- package/vendor/dynamic-workflow/index.d.ts.map +1 -0
- package/vendor/dynamic-workflow/index.js +51 -0
- package/vendor/dynamic-workflow/lowering/index.d.ts +2 -0
- package/vendor/dynamic-workflow/lowering/index.d.ts.map +1 -0
- package/vendor/dynamic-workflow/lowering/index.js +1 -0
- package/vendor/dynamic-workflow/lowering/lower-hole.d.ts +16 -0
- package/vendor/dynamic-workflow/lowering/lower-hole.d.ts.map +1 -0
- package/vendor/dynamic-workflow/lowering/lower-hole.js +63 -0
- package/vendor/dynamic-workflow/lowering/lower.d.ts +82 -0
- package/vendor/dynamic-workflow/lowering/lower.d.ts.map +1 -0
- package/vendor/dynamic-workflow/lowering/lower.js +333 -0
- package/vendor/dynamic-workflow/projections.d.ts +26 -0
- package/vendor/dynamic-workflow/projections.d.ts.map +1 -0
- package/vendor/dynamic-workflow/projections.js +23 -0
- package/vendor/dynamic-workflow/schema/actor-submit-profiles.d.ts +49 -0
- package/vendor/dynamic-workflow/schema/actor-submit-profiles.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/actor-submit-profiles.js +69 -0
- package/vendor/dynamic-workflow/schema/emit.d.ts +55 -0
- package/vendor/dynamic-workflow/schema/emit.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/emit.js +325 -0
- package/vendor/dynamic-workflow/schema/jsdoc.d.ts +10 -0
- package/vendor/dynamic-workflow/schema/jsdoc.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/jsdoc.js +83 -0
- package/vendor/dynamic-workflow/schema/serialize.d.ts +8 -0
- package/vendor/dynamic-workflow/schema/serialize.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/serialize.js +20 -0
- package/vendor/dynamic-workflow/schema/synthesize.d.ts +48 -0
- package/vendor/dynamic-workflow/schema/synthesize.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/synthesize.js +138 -0
- package/vendor/dynamic-workflow/schema/types.d.ts +67 -0
- package/vendor/dynamic-workflow/schema/types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/types.js +18 -0
- package/vendor/dynamic-workflow/schema/validate.d.ts +15 -0
- package/vendor/dynamic-workflow/schema/validate.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/validate.js +213 -0
- package/vendor/dynamic-workflow/testing/index.d.ts +6 -0
- package/vendor/dynamic-workflow/testing/index.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/index.js +5 -0
- package/vendor/dynamic-workflow/testing/journal-contract-artifacts.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-artifacts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-artifacts.js +195 -0
- package/vendor/dynamic-workflow/testing/journal-contract-events.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-events.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-events.js +163 -0
- package/vendor/dynamic-workflow/testing/journal-contract-helpers.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-helpers.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-helpers.js +12 -0
- package/vendor/dynamic-workflow/testing/journal-contract-isolation.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-isolation.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-isolation.js +46 -0
- package/vendor/dynamic-workflow/testing/journal-contract-nodes.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-nodes.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-nodes.js +234 -0
- package/vendor/dynamic-workflow/testing/journal-contract-reads.d.ts +11 -0
- package/vendor/dynamic-workflow/testing/journal-contract-reads.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-reads.js +281 -0
- package/vendor/dynamic-workflow/testing/journal-contract-runs.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-runs.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-runs.js +396 -0
- package/vendor/dynamic-workflow/testing/journal-contract-script.d.ts +12 -0
- package/vendor/dynamic-workflow/testing/journal-contract-script.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-script.js +82 -0
- package/vendor/dynamic-workflow/testing/journal-contract.d.ts +15 -0
- package/vendor/dynamic-workflow/testing/journal-contract.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract.js +31 -0
- package/vendor/dynamic-workflow-runtime/child-cell-streams.js +128 -0
- package/vendor/dynamic-workflow-runtime/child-entry-file.js +43 -0
- package/vendor/dynamic-workflow-runtime/child-source.js +299 -0
- package/vendor/dynamic-workflow-runtime/harness.js +302 -0
- package/vendor/dynamic-workflow-runtime/index.js +4 -0
- package/vendor/dynamic-workflow-runtime/protocol.js +2 -0
- package/vendor/mcode-host/dynamic-workflow-import.js +269 -0
- package/vendor/mcode-host/workflow-git-world-read.js +183 -0
- package/vendor/mcode-host/workflow-world-read.js +282 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* engine.ts 顶到 oxlint max-lines 上限(400 行),把 run 的三条终态路径
|
|
3
|
+
* (completed / stopped / errored)与它们共用的 finishRun
|
|
4
|
+
* 拆到本文件;公开面仍从 engine.ts 导出。
|
|
5
|
+
*
|
|
6
|
+
* 自由函数经 {@link EngineState} 接缝读写引擎状态;WorkflowEngine 的 complete / stop /
|
|
7
|
+
* failRun 只是薄委托。first-wins 由 `isRunSettled()` 守在每条路径的第一行。
|
|
8
|
+
*/
|
|
9
|
+
import { WorkflowError } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* 沙箱脚本成功返回顶层 artifact,结算为 completed。
|
|
12
|
+
*
|
|
13
|
+
* 脚本返回时仍可能有在飞 ask(`Promise.race` 的输家、没有 `await` 的 ask)。它们与 cancel
|
|
14
|
+
* 路径同款中止:driver 侧 cancelAsk、deferred 以 Cancelled reject、补发 node-settled(cancelled)。
|
|
15
|
+
* 不中止的后果是三重的:scheduler 的 liveNodes 永远握着节点、driver 侧 turn 继续烧 token、
|
|
16
|
+
* 事件日志里一个 node-dispatched 永远等不到它的 node-settled。
|
|
17
|
+
*/
|
|
18
|
+
export function settleCompleted(state, artifact) {
|
|
19
|
+
if (state.isRunSettled())
|
|
20
|
+
return;
|
|
21
|
+
state.markSettled();
|
|
22
|
+
state.abortInFlight(new WorkflowError("Cancelled", "Run completed; in-flight subagent tasks were abandoned."), true);
|
|
23
|
+
// 产物随终态一笔落库。分两笔写会造出「completed 但产物丢失」的崩溃窗口,而 journal
|
|
24
|
+
// 行是产物唯一的持久化家(`run-settled` 事件刻意不加宽)。
|
|
25
|
+
finishRun(state, "completed", { result: artifact });
|
|
26
|
+
state.resolveSettled({ status: "completed", artifact });
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 外部停止:中止在飞 ask(deferred 以 Cancelled reject、补发 node-settled(cancelled)),run
|
|
30
|
+
* 结算 `stopped(reason)`;已完结的 journal 条目保留(可 resume)。四个 reason 走同一条路:
|
|
31
|
+
* `user` / `model`(cancel 入口传进来的 initiator)、`interrupted`(harness 的沙箱故障)、
|
|
32
|
+
* `provider`(driver 经 `stopRun` 报上来的确定性模型侧错误)。`error` 只对后两者在场。
|
|
33
|
+
*/
|
|
34
|
+
export function settleStopped(state, reason, error, supersededBy) {
|
|
35
|
+
if (state.isRunSettled())
|
|
36
|
+
return;
|
|
37
|
+
state.markSettled();
|
|
38
|
+
state.abortInFlight(new WorkflowError("Cancelled", "Run stopped."), true);
|
|
39
|
+
// `superseded` 的后继 id 与原因**同一笔**落库:
|
|
40
|
+
// stopped 信封整体重写,分两笔写就有一个「已 superseded 却不知道被谁替代」的窗口。
|
|
41
|
+
finishRun(state, "stopped", {
|
|
42
|
+
stopReason: reason,
|
|
43
|
+
...(supersededBy === undefined ? {} : { supersededBy }),
|
|
44
|
+
...(error === undefined ? {} : { failure: error.toJSON() }),
|
|
45
|
+
});
|
|
46
|
+
state.resolveSettled({
|
|
47
|
+
status: "stopped",
|
|
48
|
+
reason,
|
|
49
|
+
...(supersededBy === undefined ? {} : { supersededBy }),
|
|
50
|
+
...(error === undefined ? {} : { error }),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/** run 级失败(脚本之错):中止在飞 ask(以 run 错误 reject),run 结算 errored。 */
|
|
54
|
+
export function settleFailed(state, error) {
|
|
55
|
+
if (state.isRunSettled())
|
|
56
|
+
return;
|
|
57
|
+
state.markSettled(error);
|
|
58
|
+
state.abortInFlight(error, false);
|
|
59
|
+
finishRun(state, "errored", { failure: error.toJSON() });
|
|
60
|
+
state.resolveSettled({ status: "errored", error });
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* `run-settled` 事件只带 {status, stopReason?, error?}:产物不上高频进度管线,只落 journal。
|
|
64
|
+
*
|
|
65
|
+
* 三条终态路径都经这里,所以 driver 的 dispose 恰好一次、first-wins 自然成立。放在
|
|
66
|
+
* `run-settled` **之后**:dispose 是结算之后的资源释放(actor runtime 的关闭链),不是结算
|
|
67
|
+
* 的一部分,事件日志不因它多一条。
|
|
68
|
+
*/
|
|
69
|
+
function finishRun(state, status, settlement) {
|
|
70
|
+
state.journal.updateRunStatus(state.runId, status, settlement);
|
|
71
|
+
state.record({
|
|
72
|
+
type: "run-settled",
|
|
73
|
+
status,
|
|
74
|
+
...(settlement?.stopReason === undefined ? {} : { stopReason: settlement.stopReason }),
|
|
75
|
+
...(settlement?.supersededBy === undefined ? {} : { supersededBy: settlement.supersededBy }),
|
|
76
|
+
...(settlement?.failure === undefined ? {} : { error: settlement.failure }),
|
|
77
|
+
});
|
|
78
|
+
state.driver.dispose?.();
|
|
79
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* engine.ts 顶到 oxlint max-lines 上限(400 行),把引擎私有状态的显式接缝拆到本文件;
|
|
3
|
+
* 公开面仍从 engine.ts 导出。
|
|
4
|
+
*
|
|
5
|
+
* WorkflowEngine 的几组方法(用户面产物、report、world 节点与导入缓存、run 结算)被拆成兄弟
|
|
6
|
+
* 模块里的自由函数(engine-artifacts.ts / engine-report.ts / engine-world.ts / engine-settlement.ts)。
|
|
7
|
+
* 它们不各自持有状态,而是经这张接缝读写引擎的私有字段:接缝由引擎在构造函数里用箭头闭包
|
|
8
|
+
* 装配,字段本身仍是 private,所以引擎的公开面零变化;类上只留薄薄一层委托方法。
|
|
9
|
+
*
|
|
10
|
+
* 可变标量(报告计数、导入门)以「读方法 + 单向写方法」暴露,而不是 getter/setter——写法只有
|
|
11
|
+
* 一种(计数只增、门只关),接缝面上就说清了这一点。
|
|
12
|
+
*/
|
|
13
|
+
import type { ImportedWorldQueue } from "./imported-cache.js";
|
|
14
|
+
import type { ArtifactOp } from "../facade/registry.js";
|
|
15
|
+
import type { ImportedRunCache, InstanceRef, JournalStorePort, RunEvent, RunStopReason, WorkflowDriver, WorkflowError } from "./types.js";
|
|
16
|
+
/**
|
|
17
|
+
* run 的最终结算:`completed`(脚本 return)/
|
|
18
|
+
* `errored`(脚本之错,不可 resume)/ `stopped`(被停下,一律可 resume;`error` 只对
|
|
19
|
+
* `provider` / `interrupted` 在场)。
|
|
20
|
+
*/
|
|
21
|
+
export type RunSettlement = {
|
|
22
|
+
status: "completed";
|
|
23
|
+
artifact: unknown;
|
|
24
|
+
} | {
|
|
25
|
+
status: "errored";
|
|
26
|
+
error: WorkflowError;
|
|
27
|
+
} | {
|
|
28
|
+
status: "stopped";
|
|
29
|
+
reason: RunStopReason;
|
|
30
|
+
supersededBy?: string;
|
|
31
|
+
error?: WorkflowError;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* 一个用户面产物 id 在本 run 内的状态:它属于哪个成员种类、已成功几版、(预置才有)它的
|
|
35
|
+
* 规范化 spec。三样都从 journal 行派生,所以 resume 重建与 live 记账得到同一份表。
|
|
36
|
+
*/
|
|
37
|
+
export interface ArtifactIdState {
|
|
38
|
+
kind: ArtifactOp;
|
|
39
|
+
/** 已成功的版本数(内容成员每成功一次 +1;预置声明恒为 1)。 */
|
|
40
|
+
versions: number;
|
|
41
|
+
/** 预置 spec 的 canonicalJson(重复声明的幂等判定按它比对)。内容成员缺席。 */
|
|
42
|
+
spec?: string;
|
|
43
|
+
/** 这个 id 是 run 的交付物(primary)。全 run 至多一个 id 带它;从 completed 行重建。 */
|
|
44
|
+
primary?: true;
|
|
45
|
+
}
|
|
46
|
+
/** 引擎私有状态的接缝:兄弟模块里的自由函数经它读写 WorkflowEngine 的私有字段。 */
|
|
47
|
+
/**
|
|
48
|
+
* run 级的报告计数:条数与 item 的 UTF-8 序列化字节数之和(`JSON.stringify(item)`,与
|
|
49
|
+
* `result_json` 落库的字节同一把尺,所以 resume 时 `sumResultBytes` 能把它原样恢复)。
|
|
50
|
+
*/
|
|
51
|
+
export interface ReportTally {
|
|
52
|
+
count: number;
|
|
53
|
+
bytes: number;
|
|
54
|
+
}
|
|
55
|
+
export interface EngineState {
|
|
56
|
+
readonly runId: string;
|
|
57
|
+
readonly driver: WorkflowDriver;
|
|
58
|
+
readonly journal: JournalStorePort;
|
|
59
|
+
/**
|
|
60
|
+
* 本 run 每个**用户面产物** id 的状态。resume 时从 journal
|
|
61
|
+
* 的 `kind: "artifact"` 行重建,此后在内存里维护——上限与版本号都是 run 级事实,跨 resume 连续。
|
|
62
|
+
*
|
|
63
|
+
* ⚠ 术语:artifact = 用户面产物,不是 `RunSettlement.artifact`(顶层返回值)。
|
|
64
|
+
*/
|
|
65
|
+
readonly artifacts: Map<string, ArtifactIdState>;
|
|
66
|
+
/** amend-resume 的导入缓存(纯数据,缺席即本次不是修订续跑)。 */
|
|
67
|
+
readonly importedCache: ImportedRunCache | undefined;
|
|
68
|
+
/** world 导入队列的消费游标(第 n 次出现对第 n 条)。 */
|
|
69
|
+
readonly importedWorld: ImportedWorldQueue;
|
|
70
|
+
isRunSettled(): boolean;
|
|
71
|
+
/** run 已结算时用于 reject / throw 的错误。 */
|
|
72
|
+
runError(): WorkflowError;
|
|
73
|
+
/** run 级失败(first-wins;见 engine-settlement.ts 的 settleFailed)。 */
|
|
74
|
+
failRun(error: WorkflowError): void;
|
|
75
|
+
/** 事件既落 journal 又扇出(Boundary C);出生阶段在引擎的漏斗里补上。 */
|
|
76
|
+
record(event: RunEvent): void;
|
|
77
|
+
/** 站点序号的唯一铸造点。 */
|
|
78
|
+
nextOrdinal(siteId: string): number;
|
|
79
|
+
/**
|
|
80
|
+
* 受 replay 结算次序约束地释放一次命中(docs/execution-engine.md「Replaying the settle order」)。
|
|
81
|
+
* 非 resume、或次序表里没有这个实例时立即执行 `release`。
|
|
82
|
+
*/
|
|
83
|
+
holdForReplay(instance: InstanceRef, release: () => void): void;
|
|
84
|
+
/** 本 run 已发布的报告条数与 item 字节数(REPORT_CAPS 两个 run 级上限的计数器,跨 resume 连续)。 */
|
|
85
|
+
reportTally(): ReportTally;
|
|
86
|
+
/** 一条报告过了上限检查、即将落库:条数 +1,字节数加上这条 item 的序列化字节数。 */
|
|
87
|
+
countReport(bytes: number): void;
|
|
88
|
+
/** 导入缓存是否已关闭。 */
|
|
89
|
+
importClosed(): boolean;
|
|
90
|
+
/** 关门(永不重开)。 */
|
|
91
|
+
closeImport(): void;
|
|
92
|
+
/** 置 run 为已结算;带 failure 时同时记下 run 级失败原因(供 runError 复用)。 */
|
|
93
|
+
markSettled(failure?: WorkflowError): void;
|
|
94
|
+
/** 中止所有在飞 ask(委托调度器)。 */
|
|
95
|
+
abortInFlight(error: WorkflowError, emitCancelled: boolean): void;
|
|
96
|
+
/** 兑现 `engine.settled`。 */
|
|
97
|
+
resolveSettled(settlement: RunSettlement): void;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=engine-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-state.d.ts","sourceRoot":"","sources":["../../src/engine/engine-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC3C;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAE/F;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,qDAAqD;AACrD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACjD,2CAA2C;IAC3C,QAAQ,CAAC,aAAa,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACrD,sCAAsC;IACtC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAE3C,YAAY,IAAI,OAAO,CAAC;IACxB,qCAAqC;IACrC,QAAQ,IAAI,aAAa,CAAC;IAC1B,iEAAiE;IACjE,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,kDAAkD;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,kBAAkB;IAClB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAEhE,wEAAwE;IACxE,WAAW,IAAI,WAAW,CAAC;IAC3B,kDAAkD;IAClD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,iBAAiB;IACjB,YAAY,IAAI,OAAO,CAAC;IACxB,gBAAgB;IAChB,WAAW,IAAI,IAAI,CAAC;IAEpB,2DAA2D;IAC3D,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3C,yBAAyB;IACzB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAClE,2BAA2B;IAC3B,cAAc,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,CAAC;CACjD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* engine.ts 顶到 oxlint max-lines 上限(400 行),把引擎私有状态的显式接缝拆到本文件;
|
|
3
|
+
* 公开面仍从 engine.ts 导出。
|
|
4
|
+
*
|
|
5
|
+
* WorkflowEngine 的几组方法(用户面产物、report、world 节点与导入缓存、run 结算)被拆成兄弟
|
|
6
|
+
* 模块里的自由函数(engine-artifacts.ts / engine-report.ts / engine-world.ts / engine-settlement.ts)。
|
|
7
|
+
* 它们不各自持有状态,而是经这张接缝读写引擎的私有字段:接缝由引擎在构造函数里用箭头闭包
|
|
8
|
+
* 装配,字段本身仍是 private,所以引擎的公开面零变化;类上只留薄薄一层委托方法。
|
|
9
|
+
*
|
|
10
|
+
* 可变标量(报告计数、导入门)以「读方法 + 单向写方法」暴露,而不是 getter/setter——写法只有
|
|
11
|
+
* 一种(计数只增、门只关),接缝面上就说清了这一点。
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* engine.ts 顶到 oxlint max-lines 上限(400 行),把 world 节点(world-read / world-run)
|
|
3
|
+
* 的准入-结算路径与 amend-resume 导入缓存的关门 / 恢复接缝拆到本文件;公开面仍从 engine.ts 导出。
|
|
4
|
+
*
|
|
5
|
+
* 自由函数经 {@link EngineState} 接缝读写引擎状态;WorkflowEngine.worldRead 只是薄委托,
|
|
6
|
+
* 关门由调度器经 SchedulerHost 触发,恢复在引擎构造函数的 resume 分支里调用。
|
|
7
|
+
*/
|
|
8
|
+
import type { EngineState } from "./engine-state.js";
|
|
9
|
+
import type { InstanceRef, JournalStorePort, WorldReadOp } from "./types.js";
|
|
10
|
+
export declare function readWorld(state: EngineState, siteId: string, op: WorldReadOp, args: unknown[]): Promise<unknown>;
|
|
11
|
+
/**
|
|
12
|
+
* 关闭导入缓存(幂等)。两个触发点,都是**第一笔写入之前**:
|
|
13
|
+
* driver 上报某个 live 子代理即将执行改写工具(`mutating-tool`),或一条 `world.run` 要 live 执行
|
|
14
|
+
* (`world-run`)。只在本次真是修订 run 时发 `import-cache-closed` 事件——它是 resume 时恢复
|
|
15
|
+
* 「门已关」的唯一事实来源;非修订 run 没有表可关,标志位无害但不发事件。
|
|
16
|
+
*/
|
|
17
|
+
export declare function closeImportCache(state: EngineState, instance: InstanceRef, cause: "mutating-tool" | "world-run", actorName?: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* resume 时恢复关门判定、「曾 live 的 ask 实例」集合,以及「关门之前就已准入的 ask 实例」集合。
|
|
20
|
+
*
|
|
21
|
+
* 事实来源是本 run 自己的事件:live 节点在准入时发 `node-queued`(ask 的带 actor ref),缓存
|
|
22
|
+
* 命中只发 `node-settled cached:true`,所以「哪些 ask 曾 live」是精确集合。门是否已关则由
|
|
23
|
+
* `import-cache-closed` 事件决定——ask 转 live 不再意味着关门(它可能一个文件都没碰),只有
|
|
24
|
+
* 写入才关,而写入这件事只有这条事件记着。零 schema 变更。
|
|
25
|
+
*
|
|
26
|
+
* `queuedBeforeClose` 同样零 schema 变更,靠的是**事件次序**:续跑在飞 ask 的判定与该 ask 的
|
|
27
|
+
* `node-queued` 落在准入的同一个同步片里(见 scheduler 的 admitAsk → tryImportedSettle →
|
|
28
|
+
* admitLive),所以「准入那一刻门开着」⇔「这条 node-queued 早于第一条 import-cache-closed」。
|
|
29
|
+
* 没有关门事件时全体都算在内。
|
|
30
|
+
*/
|
|
31
|
+
export declare function recoverImportClosure(journal: JournalStorePort, runId: string): {
|
|
32
|
+
live: ReadonlySet<string>;
|
|
33
|
+
queuedBeforeClose: ReadonlySet<string>;
|
|
34
|
+
closed: boolean;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=engine-world.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-world.d.ts","sourceRoot":"","sources":["../../src/engine/engine-world.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAIhB,WAAW,EACZ,MAAM,YAAY,CAAC;AAGpB,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,OAAO,EAAE,GACd,OAAO,CAAC,OAAO,CAAC,CAwGlB;AAkCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,eAAe,GAAG,WAAW,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAUN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAiBxF"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* engine.ts 顶到 oxlint max-lines 上限(400 行),把 world 节点(world-read / world-run)
|
|
3
|
+
* 的准入-结算路径与 amend-resume 导入缓存的关门 / 恢复接缝拆到本文件;公开面仍从 engine.ts 导出。
|
|
4
|
+
*
|
|
5
|
+
* 自由函数经 {@link EngineState} 接缝读写引擎状态;WorkflowEngine.worldRead 只是薄委托,
|
|
6
|
+
* 关门由调度器经 SchedulerHost 触发,恢复在引擎构造函数的 resume 分支里调用。
|
|
7
|
+
*/
|
|
8
|
+
import { canonicalJson, inputHash } from "./hash.js";
|
|
9
|
+
import { heldResolution } from "./replay-order.js";
|
|
10
|
+
import { boundWorldReadInput } from "./world-read-input.js";
|
|
11
|
+
import { hashMismatch } from "./hash-mismatch.js";
|
|
12
|
+
import { refToString, WorkflowError } from "./types.js";
|
|
13
|
+
export function readWorld(state, siteId, op, args) {
|
|
14
|
+
if (state.isRunSettled())
|
|
15
|
+
return Promise.reject(state.runError());
|
|
16
|
+
const ordinal = state.nextOrdinal(siteId);
|
|
17
|
+
const instance = { siteId, ordinal };
|
|
18
|
+
// inputHash 覆盖 `{op, args}`(而非单实参的 `{op, arg}`)。这是**有意的载荷形变**:
|
|
19
|
+
// 旧 journal(多参 world-read 之前写下的)里,每个 world-read 命中都会 inputHash 不符而让 run 以
|
|
20
|
+
// InputHashMismatch 大声失败。可接受——v1 的 resume 本就要求脚本文本逐字节相同
|
|
21
|
+
// (script_hash),facade 表面早于多参 world-read 的脚本不会是要被 resume 的那个脚本。
|
|
22
|
+
// 写在这里是因为故障点在 resume,离这一行很远。
|
|
23
|
+
const hash = inputHash({ op, args });
|
|
24
|
+
// 有界的 `{op, args}`:与 hash 同一次准入写下,
|
|
25
|
+
// 并在结算的 upsert 里原样带过去——putNode 是整条替换,漏一处就把它抹回 NULL。
|
|
26
|
+
const input = boundWorldReadInput(op, args);
|
|
27
|
+
const recorded = state.journal.getNode(state.runId, siteId, ordinal);
|
|
28
|
+
if (recorded !== undefined) {
|
|
29
|
+
if (recorded.inputHash !== hash) {
|
|
30
|
+
const err = hashMismatch(instance, recorded.inputHash, hash);
|
|
31
|
+
state.failRun(err);
|
|
32
|
+
return Promise.reject(err);
|
|
33
|
+
}
|
|
34
|
+
// 完结命中短路(journal 化世界读取使 resume 免疫于 run 与 resume 之间的磁盘变化)。
|
|
35
|
+
// 释放点过 replay 次序闸:一条扇出分支里的 world 读取同样是别人的续体在等的东西,
|
|
36
|
+
// 按准入顺序放会把 join 之后的序号错位(docs/execution-engine.md「Replaying the settle order」)。
|
|
37
|
+
if (recorded.status === "completed") {
|
|
38
|
+
return heldResolution(state.holdForReplay, instance, () => {
|
|
39
|
+
state.record({ type: "node-settled", instance, outcome: "ok", cached: true });
|
|
40
|
+
return recorded.result;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (recorded.status === "failed") {
|
|
44
|
+
return heldResolution(state.holdForReplay, instance, () => {
|
|
45
|
+
state.record({
|
|
46
|
+
type: "node-settled",
|
|
47
|
+
instance,
|
|
48
|
+
outcome: "failed",
|
|
49
|
+
cached: true,
|
|
50
|
+
error: recorded.error,
|
|
51
|
+
});
|
|
52
|
+
throw WorkflowError.fromJSON(recorded.error);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
// status === "running":崩溃于执行中,落到下面重新 live 执行。
|
|
56
|
+
}
|
|
57
|
+
// op "run" 是效应而不是读,journal 单列一种(world-run):机制同构,审计面诚实。其余 op 保持 world-read。
|
|
58
|
+
const kind = op === "run" ? "world-run" : "world-read";
|
|
59
|
+
// amend-resume:本 run 的 journal 里没有这一行,才轮到导入缓存(journal replay 永远优先——
|
|
60
|
+
// 修订 run 自己崩溃后 resume 时,已消费的命中早已是真行,重放它们不能再动游标)。
|
|
61
|
+
// 命中即写一行与 settleWorldRead 同形的 completed 记录 + 发 node-settled(cached),
|
|
62
|
+
// **不调 driver**:world-run 的效应绝不静默重放。
|
|
63
|
+
// 缓存关闭后不再问表(也不推进游标):命令文本没变,但它读到的世界可能已被某个 live 子代理
|
|
64
|
+
// 改写。
|
|
65
|
+
const imported = state.importClosed() ? undefined : state.importedWorld.take(hash);
|
|
66
|
+
if (imported !== undefined) {
|
|
67
|
+
state.journal.putNode({
|
|
68
|
+
runId: state.runId,
|
|
69
|
+
siteId,
|
|
70
|
+
ordinal,
|
|
71
|
+
kind,
|
|
72
|
+
inputHash: hash,
|
|
73
|
+
input,
|
|
74
|
+
status: "completed",
|
|
75
|
+
result: imported.result,
|
|
76
|
+
});
|
|
77
|
+
state.record({ type: "node-settled", instance, outcome: "ok", cached: true });
|
|
78
|
+
return Promise.resolve(imported.result);
|
|
79
|
+
}
|
|
80
|
+
// live world-read:不受 actor FIFO / 并发上限约束(harness IO)。
|
|
81
|
+
if (state.isRunSettled())
|
|
82
|
+
return Promise.reject(state.runError());
|
|
83
|
+
// live 的 world.run 是一笔写入(效应,不是读):它一旦执行,工作区就与前驱留下的不同,所以在
|
|
84
|
+
// 派发**之前**关导入缓存——与子代理的改写工具同一条规则、同一个时刻(动手前)。world-read 不关:
|
|
85
|
+
// 读不改变世界。
|
|
86
|
+
if (kind === "world-run")
|
|
87
|
+
closeImportCache(state, instance, "world-run");
|
|
88
|
+
// 准入即落 running:崩溃于执行中的世界读取 resume 可据此重新执行。
|
|
89
|
+
state.journal.putNode({
|
|
90
|
+
runId: state.runId,
|
|
91
|
+
siteId,
|
|
92
|
+
ordinal,
|
|
93
|
+
kind,
|
|
94
|
+
inputHash: hash,
|
|
95
|
+
input,
|
|
96
|
+
status: "running",
|
|
97
|
+
});
|
|
98
|
+
state.record({ type: "node-queued", instance, kind });
|
|
99
|
+
state.record({ type: "node-dispatched", instance });
|
|
100
|
+
return state.driver.executeWorldRead(op, args).then((value) => settleWorldRead(state, instance, kind, hash, input, { status: "completed", result: value }), (cause) => {
|
|
101
|
+
const err = cause instanceof WorkflowError
|
|
102
|
+
? cause
|
|
103
|
+
: new WorkflowError("DriverError", `World read failed: ${op} ${canonicalJson(args)}.`, {
|
|
104
|
+
cause,
|
|
105
|
+
});
|
|
106
|
+
return settleWorldRead(state, instance, kind, hash, input, {
|
|
107
|
+
status: "failed",
|
|
108
|
+
error: err.toJSON(),
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function settleWorldRead(state, instance,
|
|
113
|
+
// putNode 是 upsert(整条替换),settle 若写死 world-read 会把准入时的 world-run
|
|
114
|
+
// 悄悄改回去——kind 必须与准入同源。
|
|
115
|
+
kind, hash,
|
|
116
|
+
// 同一条理由:准入写下的有界输入必须随结算的整条替换回来。
|
|
117
|
+
input, outcome) {
|
|
118
|
+
if (state.isRunSettled())
|
|
119
|
+
throw state.runError();
|
|
120
|
+
state.journal.putNode({
|
|
121
|
+
runId: state.runId,
|
|
122
|
+
siteId: instance.siteId,
|
|
123
|
+
ordinal: instance.ordinal,
|
|
124
|
+
kind,
|
|
125
|
+
inputHash: hash,
|
|
126
|
+
input,
|
|
127
|
+
status: outcome.status,
|
|
128
|
+
...(outcome.status === "completed" ? { result: outcome.result } : { error: outcome.error }),
|
|
129
|
+
});
|
|
130
|
+
if (outcome.status === "completed") {
|
|
131
|
+
state.record({ type: "node-settled", instance, outcome: "ok" });
|
|
132
|
+
return outcome.result;
|
|
133
|
+
}
|
|
134
|
+
state.record({ type: "node-settled", instance, outcome: "failed", error: outcome.error });
|
|
135
|
+
throw WorkflowError.fromJSON(outcome.error);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 关闭导入缓存(幂等)。两个触发点,都是**第一笔写入之前**:
|
|
139
|
+
* driver 上报某个 live 子代理即将执行改写工具(`mutating-tool`),或一条 `world.run` 要 live 执行
|
|
140
|
+
* (`world-run`)。只在本次真是修订 run 时发 `import-cache-closed` 事件——它是 resume 时恢复
|
|
141
|
+
* 「门已关」的唯一事实来源;非修订 run 没有表可关,标志位无害但不发事件。
|
|
142
|
+
*/
|
|
143
|
+
export function closeImportCache(state, instance, cause, actorName) {
|
|
144
|
+
if (state.importClosed())
|
|
145
|
+
return;
|
|
146
|
+
state.closeImport();
|
|
147
|
+
if (state.importedCache === undefined)
|
|
148
|
+
return;
|
|
149
|
+
state.record({
|
|
150
|
+
type: "import-cache-closed",
|
|
151
|
+
instance,
|
|
152
|
+
cause,
|
|
153
|
+
...(actorName === undefined || actorName === "" ? {} : { actorName }),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* resume 时恢复关门判定、「曾 live 的 ask 实例」集合,以及「关门之前就已准入的 ask 实例」集合。
|
|
158
|
+
*
|
|
159
|
+
* 事实来源是本 run 自己的事件:live 节点在准入时发 `node-queued`(ask 的带 actor ref),缓存
|
|
160
|
+
* 命中只发 `node-settled cached:true`,所以「哪些 ask 曾 live」是精确集合。门是否已关则由
|
|
161
|
+
* `import-cache-closed` 事件决定——ask 转 live 不再意味着关门(它可能一个文件都没碰),只有
|
|
162
|
+
* 写入才关,而写入这件事只有这条事件记着。零 schema 变更。
|
|
163
|
+
*
|
|
164
|
+
* `queuedBeforeClose` 同样零 schema 变更,靠的是**事件次序**:续跑在飞 ask 的判定与该 ask 的
|
|
165
|
+
* `node-queued` 落在准入的同一个同步片里(见 scheduler 的 admitAsk → tryImportedSettle →
|
|
166
|
+
* admitLive),所以「准入那一刻门开着」⇔「这条 node-queued 早于第一条 import-cache-closed」。
|
|
167
|
+
* 没有关门事件时全体都算在内。
|
|
168
|
+
*/
|
|
169
|
+
export function recoverImportClosure(journal, runId) {
|
|
170
|
+
const live = new Set();
|
|
171
|
+
const queuedBeforeClose = new Set();
|
|
172
|
+
let closed = false;
|
|
173
|
+
// 只读判定要的两种事件(docs/execution-engine.md「Reading the journal」);类型过滤保序,
|
|
174
|
+
// 所以「node-queued 早于第一条 import-cache-closed」在过滤后的序列上照样成立。
|
|
175
|
+
for (const { event } of journal.listEvents(runId, {
|
|
176
|
+
types: ["node-queued", "import-cache-closed"],
|
|
177
|
+
reportItems: { limit: 0 },
|
|
178
|
+
})) {
|
|
179
|
+
if (event.type === "import-cache-closed")
|
|
180
|
+
closed = true;
|
|
181
|
+
if (event.type !== "node-queued" || event.kind !== "ask")
|
|
182
|
+
continue;
|
|
183
|
+
const key = refToString(event.instance);
|
|
184
|
+
live.add(key);
|
|
185
|
+
if (!closed)
|
|
186
|
+
queuedBeforeClose.add(key);
|
|
187
|
+
}
|
|
188
|
+
return { live, queuedBeforeClose, closed };
|
|
189
|
+
}
|