@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.
- 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 +67 -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,138 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { collectSites } from "../analysis/sites.js";
|
|
3
|
+
import { createWorkflowProgram, collectDiagnostics } from "../compiler/compile.js";
|
|
4
|
+
import { SchemaEmitter, SchemaRejection } from "./emit.js";
|
|
5
|
+
import { harvestConstraints, mergeConstraints } from "./jsdoc.js";
|
|
6
|
+
import { SCHEMA_DIAGNOSTIC_CODE } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* ask 站点的结果类型 T,若为「无类型」ask 则返回 undefined。这是 typed-ask 判定的
|
|
9
|
+
* 唯一真源:站点表(analysis/sites.ts)只保留 `call: ts.CallExpression`,不带 typed 标记,
|
|
10
|
+
* 故在此从 checker 解析。无类型 = T 解析为原始 `string`(`ask()` 的默认实参与显式
|
|
11
|
+
* `ask<string>()` 都属此列;`type A = string; ask<A>()` 也会被 checker 解析为原始 string)。
|
|
12
|
+
*
|
|
13
|
+
* 保持模块内私有:下游(lowering/引擎/驱动)不需要独立谓词——一次成功启动的 run 必然零
|
|
14
|
+
* 诊断,故 `siteId in schemas` 就是 typed-ask 的判定式。但**不要**据此就用 schemas 的键去
|
|
15
|
+
* 构造引擎的 askSpecs:那样 untyped 站点会整个缺席,而引擎把缺席当接线错误硬失败。
|
|
16
|
+
* 构造 askSpecs 一律走 {@link buildAskSpecs}(按站点表遍历)。
|
|
17
|
+
*/
|
|
18
|
+
function askResultType(checker, call) {
|
|
19
|
+
const typeNode = call.typeArguments?.[0];
|
|
20
|
+
if (typeNode === undefined)
|
|
21
|
+
return undefined;
|
|
22
|
+
const type = checker.getTypeFromTypeNode(typeNode);
|
|
23
|
+
return (type.flags & ts.TypeFlags.String) !== 0 ? undefined : type;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 核心入口:在构建站点表的同一 checker 上,为每个有类型 ask 发射 schema。与
|
|
27
|
+
* docs 中 `synthesizeAskSchemas(program, siteTable)` 对应,这里取 {@link WorkflowProgram}
|
|
28
|
+
* 以便拿到 `toScriptLoc` 做定位诊断。
|
|
29
|
+
*/
|
|
30
|
+
export function synthesizeAskSchemas(workflow, table) {
|
|
31
|
+
const checker = workflow.program.getTypeChecker();
|
|
32
|
+
const schemas = {};
|
|
33
|
+
const diagnostics = [];
|
|
34
|
+
for (const site of table.asks) {
|
|
35
|
+
const type = askResultType(checker, site.call);
|
|
36
|
+
if (type === undefined)
|
|
37
|
+
continue; // 无类型 ask:结果即最终文本,不发射 schema
|
|
38
|
+
try {
|
|
39
|
+
const typeNode = site.call.typeArguments[0];
|
|
40
|
+
const emitter = new SchemaEmitter(checker, typeNode);
|
|
41
|
+
schemas[site.id] = attachTopDoc(emitter.emitTop(type), type, checker);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (!(error instanceof SchemaRejection))
|
|
45
|
+
throw error;
|
|
46
|
+
diagnostics.push({
|
|
47
|
+
code: SCHEMA_DIAGNOSTIC_CODE,
|
|
48
|
+
column: site.loc.column,
|
|
49
|
+
line: site.loc.line,
|
|
50
|
+
message: rejectionMessage(error, "ask result type"),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
for (const site of table.reports)
|
|
55
|
+
diagnostics.push(...reportItemDiagnostics(checker, site));
|
|
56
|
+
return { diagnostics, schemas };
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* `report(item)` 的实参可序列化性检查。
|
|
60
|
+
*
|
|
61
|
+
* 为什么与 ask 的 schema 合成走**同一趟 checker walk、同一个发射器、同一条诊断通道**:
|
|
62
|
+
* 被 report 的 item 与一个 artifact 因为完全相同的理由跨越 journal 与协议边界,所以判定
|
|
63
|
+
* "什么算可序列化"必须是同一个答案。另建一个平行的检查器,等于开始维护第二份真相——
|
|
64
|
+
* 而两份真相分歧的那天,只会在某个 run 的 Results 面板上显示成一个 `{}`。
|
|
65
|
+
*
|
|
66
|
+
* 与 ask 的两点差别:
|
|
67
|
+
* 1. **不产出 schema**。report 没有校验对象——没有模型要按它提交什么,item 是脚本自己
|
|
68
|
+
* 算出来的值。这里只要"能不能序列化"这个是非判断,发射出的 schema 直接丢掉。
|
|
69
|
+
* 2. 类型取自**实参表达式**而非类型实参。facade 把参数声明成 `unknown`(`unknown` 在
|
|
70
|
+
* 发射器里是合法的 any-JSON),所以问的是"你实际递进来的那个值是什么类型"。
|
|
71
|
+
* `report(x)` 中 x 若是 `unknown` 或普通 JSON 形状则通过,是 `Date`/函数/类实例
|
|
72
|
+
* /Promise 则在调用点被定位拒绝。
|
|
73
|
+
*/
|
|
74
|
+
function reportItemDiagnostics(checker, site) {
|
|
75
|
+
// 实参缺席由 typecheck 负责报错(facade 的 `item` 是必填参数),这里无事可做。
|
|
76
|
+
if (site.item === undefined)
|
|
77
|
+
return [];
|
|
78
|
+
try {
|
|
79
|
+
new SchemaEmitter(checker, site.item).emitTop(checker.getTypeAtLocation(site.item));
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (!(error instanceof SchemaRejection))
|
|
84
|
+
throw error;
|
|
85
|
+
return [
|
|
86
|
+
{
|
|
87
|
+
code: SCHEMA_DIAGNOSTIC_CODE,
|
|
88
|
+
column: site.loc.column,
|
|
89
|
+
line: site.loc.line,
|
|
90
|
+
message: rejectionMessage(error, "report item type"),
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 便捷入口:从脚本文本一站式合成(typecheck → 站点表 → 合成)。给包内/引擎侧一个不必
|
|
97
|
+
* 自己拼装 program+table 的调用点;analyzeWorkflowScript 归 analysis 域所有,这里不触碰。
|
|
98
|
+
* 若脚本本身 typecheck 不通过,返回其编译诊断且不合成。
|
|
99
|
+
*/
|
|
100
|
+
export function synthesizeWorkflowSchemas(scriptText) {
|
|
101
|
+
const workflow = createWorkflowProgram(scriptText);
|
|
102
|
+
const compileDiagnostics = collectDiagnostics(workflow.program);
|
|
103
|
+
if (compileDiagnostics.length > 0)
|
|
104
|
+
return { diagnostics: compileDiagnostics, schemas: {} };
|
|
105
|
+
return synthesizeAskSchemas(workflow, collectSites(workflow));
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 把站点表与合成出的 schemas 组装成引擎的 `askSpecs`。
|
|
109
|
+
*
|
|
110
|
+
* **为什么按 `table.asks` 遍历而不是按 `schemas` 的键**:schemas 只为 typed 站点发射
|
|
111
|
+
* (untyped ask 的结果就是末轮文本,不发射 schema),而引擎要求 askSpecs 覆盖**每一个**
|
|
112
|
+
* ask 站点——站点缺席被当作接线错误硬失败(`MissingAskSpec`),因为站点表与 schema 合成
|
|
113
|
+
* 出自同一次编译,缺席只可能是两份产物被拼在了一起。所以 untyped 站点必须显式记为
|
|
114
|
+
* `{ typed: false }`,而不是靠"查不到就当 untyped"的兜底:那条兜底会把 typed ask 静默
|
|
115
|
+
* 降级——不注册 submit_result、拿末轮文本当结果、schema 校验整个消失。
|
|
116
|
+
*
|
|
117
|
+
* 这个构造是正确性关键且只有一种写法,因此收在这里一处:调用方(run service、测试装配)
|
|
118
|
+
* 一律用它,不要各自实现。站点表是身份的唯一真源——schemas 里对不上任何站点的键被忽略。
|
|
119
|
+
*/
|
|
120
|
+
export function buildAskSpecs(table, schemas) {
|
|
121
|
+
const specs = new Map();
|
|
122
|
+
for (const site of table.asks) {
|
|
123
|
+
const schema = schemas[site.id];
|
|
124
|
+
specs.set(site.id, schema === undefined ? { typed: false } : { typed: true, schema });
|
|
125
|
+
}
|
|
126
|
+
return specs;
|
|
127
|
+
}
|
|
128
|
+
/** 顶层类型的 description/约束:源自其别名或符号(具名 interface/type alias)。 */
|
|
129
|
+
function attachTopDoc(schema, type, checker) {
|
|
130
|
+
const symbol = type.aliasSymbol ?? type.getSymbol();
|
|
131
|
+
if (symbol === undefined)
|
|
132
|
+
return schema;
|
|
133
|
+
return mergeConstraints(schema, harvestConstraints(symbol, checker));
|
|
134
|
+
}
|
|
135
|
+
function rejectionMessage(error, subject) {
|
|
136
|
+
const where = error.path !== "$" && error.path.length > 0 ? ` (at ${error.path})` : "";
|
|
137
|
+
return `unsupported ${subject}: ${error.reason}${where}`;
|
|
138
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* schema 子系统的共享词汇:我们「发射(emit)」的 JSON Schema 子集类型,以及校验器
|
|
3
|
+
* 产出的违规(violation)模型。这里的 {@link JsonSchema} 不是通用 JSON Schema —— 它
|
|
4
|
+
* 精确对应 {@link synthesizeAskSchemas} 会产出的关键字集合,校验器也只理解这一子集。
|
|
5
|
+
*/
|
|
6
|
+
/** 任意合法 JSON 值。const/enum/default 里出现的字面量都用它表达。 */
|
|
7
|
+
export type JsonValue = string | number | boolean | null | JsonValue[] | {
|
|
8
|
+
[key: string]: JsonValue;
|
|
9
|
+
};
|
|
10
|
+
/** 我们会发射的 JSON Schema 基础类型标签。`integer` 校验器支持但合成侧不会主动产出。 */
|
|
11
|
+
export type JsonSchemaType = "string" | "number" | "integer" | "boolean" | "null" | "array" | "object";
|
|
12
|
+
/**
|
|
13
|
+
* 我们发射的 JSON Schema 子集。字段是可选关键字的并集:一个具体 schema 只会用到其中
|
|
14
|
+
* 与其形状相关的少数几个(例如 object schema 用 properties/required/additionalProperties,
|
|
15
|
+
* 而 union 用 enum 或 anyOf)。校验器只处理这里出现的关键字。
|
|
16
|
+
*/
|
|
17
|
+
export interface JsonSchema {
|
|
18
|
+
type?: JsonSchemaType | JsonSchemaType[];
|
|
19
|
+
const?: JsonValue;
|
|
20
|
+
enum?: JsonValue[];
|
|
21
|
+
anyOf?: JsonSchema[];
|
|
22
|
+
properties?: Record<string, JsonSchema>;
|
|
23
|
+
required?: string[];
|
|
24
|
+
additionalProperties?: boolean | JsonSchema;
|
|
25
|
+
items?: JsonSchema;
|
|
26
|
+
prefixItems?: JsonSchema[];
|
|
27
|
+
minItems?: number;
|
|
28
|
+
maxItems?: number;
|
|
29
|
+
minLength?: number;
|
|
30
|
+
maxLength?: number;
|
|
31
|
+
pattern?: string;
|
|
32
|
+
format?: string;
|
|
33
|
+
minimum?: number;
|
|
34
|
+
maximum?: number;
|
|
35
|
+
exclusiveMinimum?: number;
|
|
36
|
+
exclusiveMaximum?: number;
|
|
37
|
+
description?: string;
|
|
38
|
+
default?: JsonValue;
|
|
39
|
+
$ref?: string;
|
|
40
|
+
$defs?: Record<string, JsonSchema>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 校验器产出的单条违规,设计成可直接进入修复用的 tool_result:一行一条,包含
|
|
44
|
+
* JSON 路径、期望(expected)与实得(got)。
|
|
45
|
+
*/
|
|
46
|
+
export interface Violation {
|
|
47
|
+
/** 违规所在位置的 JSON 路径,形如 `$`、`$.foo`、`$.items[0]`。 */
|
|
48
|
+
path: string;
|
|
49
|
+
/** 期望的形状/取值的简短描述。 */
|
|
50
|
+
expected: string;
|
|
51
|
+
/** 实际取到的值的简短描述。 */
|
|
52
|
+
got: string;
|
|
53
|
+
}
|
|
54
|
+
/** 合成侧诊断码。9001 已被 facade-siting 规则占用(见 analysis/sites.ts)。 */
|
|
55
|
+
export declare const SCHEMA_DIAGNOSTIC_CODE = 9002;
|
|
56
|
+
/**
|
|
57
|
+
* union 成员数量上限。超过即视为“病态宽 union”并在 ask 站点报诊断。
|
|
58
|
+
*
|
|
59
|
+
* 取 100:既能容纳合理的枚举(状态码、国家码等常见枚举都远低于此),又能挡住
|
|
60
|
+
* 明显是失控类型的情况。同时作用于字面量 union(→ enum)与一般 union(→ anyOf)的成员数。
|
|
61
|
+
*
|
|
62
|
+
* 现实中触发它的通常不是手写的巨型 union,而是 checker 展开模板字面量类型(template
|
|
63
|
+
* literal type)后产生的笛卡尔积——例如 `` `${Dir}-${Size}` `` 会被展开成所有组合的
|
|
64
|
+
* 字面量 union,几个维度一交叉就会爆炸。
|
|
65
|
+
*/
|
|
66
|
+
export declare const MAX_UNION_MEMBERS = 100;
|
|
67
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mDAAmD;AACnD,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEjC,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,MAAM,GACN,OAAO,GACP,QAAQ,CAAC;AAEb;;;;GAIG;AACH,MAAM,WAAW,UAAU;IAEzB,IAAI,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAE5C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* schema 子系统的共享词汇:我们「发射(emit)」的 JSON Schema 子集类型,以及校验器
|
|
3
|
+
* 产出的违规(violation)模型。这里的 {@link JsonSchema} 不是通用 JSON Schema —— 它
|
|
4
|
+
* 精确对应 {@link synthesizeAskSchemas} 会产出的关键字集合,校验器也只理解这一子集。
|
|
5
|
+
*/
|
|
6
|
+
/** 合成侧诊断码。9001 已被 facade-siting 规则占用(见 analysis/sites.ts)。 */
|
|
7
|
+
export const SCHEMA_DIAGNOSTIC_CODE = 9002;
|
|
8
|
+
/**
|
|
9
|
+
* union 成员数量上限。超过即视为“病态宽 union”并在 ask 站点报诊断。
|
|
10
|
+
*
|
|
11
|
+
* 取 100:既能容纳合理的枚举(状态码、国家码等常见枚举都远低于此),又能挡住
|
|
12
|
+
* 明显是失控类型的情况。同时作用于字面量 union(→ enum)与一般 union(→ anyOf)的成员数。
|
|
13
|
+
*
|
|
14
|
+
* 现实中触发它的通常不是手写的巨型 union,而是 checker 展开模板字面量类型(template
|
|
15
|
+
* literal type)后产生的笛卡尔积——例如 `` `${Dir}-${Size}` `` 会被展开成所有组合的
|
|
16
|
+
* 字面量 union,几个维度一交叉就会爆炸。
|
|
17
|
+
*/
|
|
18
|
+
export const MAX_UNION_MEMBERS = 100;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { JsonSchema, Violation } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* 纯校验器,覆盖范围恰好是 {@link synthesizeAskSchemas} 会发射的 JSON Schema 子集
|
|
4
|
+
* (不是通用 JSON Schema)。产出违规列表,每条设计成可直接进修复用 tool_result:
|
|
5
|
+
* 一行 JSON 路径 + 期望 + 实得。
|
|
6
|
+
*
|
|
7
|
+
* 空 schema `{}`(unknown 的许可式 schema)匹配任意合法 JSON。`$ref` 在传入的根 schema
|
|
8
|
+
* 的 `$defs` 内解析。
|
|
9
|
+
*/
|
|
10
|
+
export declare function validate(schema: JsonSchema, value: unknown): Violation[];
|
|
11
|
+
/** 把一条违规格式化为单行:`<path>: expected <expected>, got <got>`。 */
|
|
12
|
+
export declare function formatViolation(violation: Violation): string;
|
|
13
|
+
/** 把违规列表格式化为多行文本(每行一条)。 */
|
|
14
|
+
export declare function formatViolations(violations: readonly Violation[]): string;
|
|
15
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/schema/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkB,SAAS,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;GAOG;AAEH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,CAIxE;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAE5D;AAED,2BAA2B;AAC3B,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAEzE"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 纯校验器,覆盖范围恰好是 {@link synthesizeAskSchemas} 会发射的 JSON Schema 子集
|
|
3
|
+
* (不是通用 JSON Schema)。产出违规列表,每条设计成可直接进修复用 tool_result:
|
|
4
|
+
* 一行 JSON 路径 + 期望 + 实得。
|
|
5
|
+
*
|
|
6
|
+
* 空 schema `{}`(unknown 的许可式 schema)匹配任意合法 JSON。`$ref` 在传入的根 schema
|
|
7
|
+
* 的 `$defs` 内解析。
|
|
8
|
+
*/
|
|
9
|
+
export function validate(schema, value) {
|
|
10
|
+
const violations = [];
|
|
11
|
+
check(schema, value, "$", schema, violations);
|
|
12
|
+
return violations;
|
|
13
|
+
}
|
|
14
|
+
/** 把一条违规格式化为单行:`<path>: expected <expected>, got <got>`。 */
|
|
15
|
+
export function formatViolation(violation) {
|
|
16
|
+
return `${violation.path}: expected ${violation.expected}, got ${violation.got}`;
|
|
17
|
+
}
|
|
18
|
+
/** 把违规列表格式化为多行文本(每行一条)。 */
|
|
19
|
+
export function formatViolations(violations) {
|
|
20
|
+
return violations.map(formatViolation).join("\n");
|
|
21
|
+
}
|
|
22
|
+
function check(schema, value, path, root, out) {
|
|
23
|
+
if (schema.$ref !== undefined) {
|
|
24
|
+
const resolved = resolveRef(root, schema.$ref);
|
|
25
|
+
if (resolved === undefined) {
|
|
26
|
+
out.push({ expected: `schema ${schema.$ref}`, got: "unresolved $ref", path });
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
check(resolved, value, path, root, out);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if ("const" in schema) {
|
|
33
|
+
if (!deepEqual(value, schema.const)) {
|
|
34
|
+
out.push({ expected: describeValue(schema.const), got: describeValue(value), path });
|
|
35
|
+
}
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (schema.enum !== undefined) {
|
|
39
|
+
if (!schema.enum.some((candidate) => deepEqual(value, candidate))) {
|
|
40
|
+
out.push({ expected: `one of ${schema.enum.map((v) => describeValue(v)).join(", ")}`, got: describeValue(value), path });
|
|
41
|
+
}
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (schema.anyOf !== undefined) {
|
|
45
|
+
const matched = schema.anyOf.some((branch) => {
|
|
46
|
+
const trial = [];
|
|
47
|
+
check(branch, value, path, root, trial);
|
|
48
|
+
return trial.length === 0;
|
|
49
|
+
});
|
|
50
|
+
if (!matched) {
|
|
51
|
+
out.push({ expected: `one of ${schema.anyOf.length} variants`, got: describeValue(value), path });
|
|
52
|
+
}
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (schema.type !== undefined && !typeMatches(schema.type, value)) {
|
|
56
|
+
out.push({ expected: typeName(schema.type), got: describeValue(value), path });
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (schema.type === "object")
|
|
60
|
+
checkObject(schema, value, path, root, out);
|
|
61
|
+
if (schema.type === "array")
|
|
62
|
+
checkArray(schema, value, path, root, out);
|
|
63
|
+
if (typeof value === "string")
|
|
64
|
+
checkString(schema, value, path, out);
|
|
65
|
+
if (typeof value === "number")
|
|
66
|
+
checkNumber(schema, value, path, out);
|
|
67
|
+
}
|
|
68
|
+
function checkObject(schema, value, path, root, out) {
|
|
69
|
+
for (const key of schema.required ?? []) {
|
|
70
|
+
if (!Object.prototype.hasOwnProperty.call(value, key)) {
|
|
71
|
+
out.push({ expected: "present", got: "missing", path: `${path}.${key}` });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const properties = schema.properties ?? {};
|
|
75
|
+
for (const [key, propValue] of Object.entries(value)) {
|
|
76
|
+
const propSchema = properties[key];
|
|
77
|
+
if (propSchema !== undefined) {
|
|
78
|
+
check(propSchema, propValue, `${path}.${key}`, root, out);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const additional = schema.additionalProperties;
|
|
82
|
+
if (additional === false) {
|
|
83
|
+
out.push({ expected: "no additional property", got: describeValue(propValue), path: `${path}.${key}` });
|
|
84
|
+
}
|
|
85
|
+
else if (additional !== undefined && additional !== true) {
|
|
86
|
+
check(additional, propValue, `${path}.${key}`, root, out);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function checkArray(schema, value, path, root, out) {
|
|
91
|
+
if (schema.minItems !== undefined && value.length < schema.minItems) {
|
|
92
|
+
out.push({ expected: `at least ${schema.minItems} items`, got: `array(${value.length})`, path });
|
|
93
|
+
}
|
|
94
|
+
if (schema.maxItems !== undefined && value.length > schema.maxItems) {
|
|
95
|
+
out.push({ expected: `at most ${schema.maxItems} items`, got: `array(${value.length})`, path });
|
|
96
|
+
}
|
|
97
|
+
if (schema.prefixItems !== undefined) {
|
|
98
|
+
schema.prefixItems.forEach((itemSchema, index) => {
|
|
99
|
+
if (index < value.length)
|
|
100
|
+
check(itemSchema, value[index], `${path}[${index}]`, root, out);
|
|
101
|
+
});
|
|
102
|
+
if (schema.items !== undefined) {
|
|
103
|
+
for (let index = schema.prefixItems.length; index < value.length; index += 1) {
|
|
104
|
+
check(schema.items, value[index], `${path}[${index}]`, root, out);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (schema.items !== undefined) {
|
|
110
|
+
value.forEach((item, index) => check(schema.items, item, `${path}[${index}]`, root, out));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function checkString(schema, value, path, out) {
|
|
114
|
+
if (schema.minLength !== undefined && value.length < schema.minLength) {
|
|
115
|
+
out.push({ expected: `string length >= ${schema.minLength}`, got: `length ${value.length}`, path });
|
|
116
|
+
}
|
|
117
|
+
if (schema.maxLength !== undefined && value.length > schema.maxLength) {
|
|
118
|
+
out.push({ expected: `string length <= ${schema.maxLength}`, got: `length ${value.length}`, path });
|
|
119
|
+
}
|
|
120
|
+
if (schema.pattern !== undefined && !new RegExp(schema.pattern).test(value)) {
|
|
121
|
+
out.push({ expected: `match /${schema.pattern}/`, got: describeValue(value), path });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function checkNumber(schema, value, path, out) {
|
|
125
|
+
if (schema.type === "integer" && !Number.isInteger(value)) {
|
|
126
|
+
out.push({ expected: "integer", got: `number ${value}`, path });
|
|
127
|
+
}
|
|
128
|
+
if (schema.minimum !== undefined && value < schema.minimum) {
|
|
129
|
+
out.push({ expected: `>= ${schema.minimum}`, got: `number ${value}`, path });
|
|
130
|
+
}
|
|
131
|
+
if (schema.maximum !== undefined && value > schema.maximum) {
|
|
132
|
+
out.push({ expected: `<= ${schema.maximum}`, got: `number ${value}`, path });
|
|
133
|
+
}
|
|
134
|
+
if (schema.exclusiveMinimum !== undefined && value <= schema.exclusiveMinimum) {
|
|
135
|
+
out.push({ expected: `> ${schema.exclusiveMinimum}`, got: `number ${value}`, path });
|
|
136
|
+
}
|
|
137
|
+
if (schema.exclusiveMaximum !== undefined && value >= schema.exclusiveMaximum) {
|
|
138
|
+
out.push({ expected: `< ${schema.exclusiveMaximum}`, got: `number ${value}`, path });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function typeMatches(type, value) {
|
|
142
|
+
const types = Array.isArray(type) ? type : [type];
|
|
143
|
+
return types.some((candidate) => matchesOne(candidate, value));
|
|
144
|
+
}
|
|
145
|
+
function matchesOne(type, value) {
|
|
146
|
+
switch (type) {
|
|
147
|
+
case "string":
|
|
148
|
+
return typeof value === "string";
|
|
149
|
+
case "number":
|
|
150
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
151
|
+
case "integer":
|
|
152
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
153
|
+
case "boolean":
|
|
154
|
+
return typeof value === "boolean";
|
|
155
|
+
case "null":
|
|
156
|
+
return value === null;
|
|
157
|
+
case "array":
|
|
158
|
+
return Array.isArray(value);
|
|
159
|
+
case "object":
|
|
160
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function typeName(type) {
|
|
164
|
+
return Array.isArray(type) ? type.join(" | ") : type;
|
|
165
|
+
}
|
|
166
|
+
function resolveRef(root, ref) {
|
|
167
|
+
const match = /^#\/\$defs\/(.+)$/.exec(ref);
|
|
168
|
+
if (match === null)
|
|
169
|
+
return undefined;
|
|
170
|
+
return root.$defs?.[match[1]];
|
|
171
|
+
}
|
|
172
|
+
/** JSON 深相等:基础值、数组、纯对象。用于 const/enum 比较。 */
|
|
173
|
+
function deepEqual(a, b) {
|
|
174
|
+
if (a === b)
|
|
175
|
+
return true;
|
|
176
|
+
if (a === null || b === null)
|
|
177
|
+
return false;
|
|
178
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
179
|
+
return a.length === b.length && a.every((item, index) => deepEqual(item, b[index]));
|
|
180
|
+
}
|
|
181
|
+
if (typeof a === "object" && typeof b === "object") {
|
|
182
|
+
const aKeys = Object.keys(a);
|
|
183
|
+
const bKeys = Object.keys(b);
|
|
184
|
+
if (aKeys.length !== bKeys.length)
|
|
185
|
+
return false;
|
|
186
|
+
return aKeys.every((key) => Object.prototype.hasOwnProperty.call(b, key) &&
|
|
187
|
+
deepEqual(a[key], b[key]));
|
|
188
|
+
}
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
/** 值的简短描述,用于 got/expected:类型 + 精简取值。 */
|
|
192
|
+
function describeValue(value) {
|
|
193
|
+
if (value === null)
|
|
194
|
+
return "null";
|
|
195
|
+
if (Array.isArray(value))
|
|
196
|
+
return `array(${value.length})`;
|
|
197
|
+
switch (typeof value) {
|
|
198
|
+
case "string": {
|
|
199
|
+
const shown = value.length > 20 ? `${value.slice(0, 20)}…` : value;
|
|
200
|
+
return `string ${JSON.stringify(shown)}`;
|
|
201
|
+
}
|
|
202
|
+
case "number":
|
|
203
|
+
return `number ${value}`;
|
|
204
|
+
case "boolean":
|
|
205
|
+
return `boolean ${value}`;
|
|
206
|
+
case "object":
|
|
207
|
+
return "object";
|
|
208
|
+
case "undefined":
|
|
209
|
+
return "undefined";
|
|
210
|
+
default:
|
|
211
|
+
return typeof value;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 修复原因:journal-contract.ts 顶到 oxlint max-lines 上限(400 行),把用户面产物行(kind: "artifact"、artifactId 列、report 标签)的用例拆到本文件;
|
|
3
|
+
* 公开面仍从 journal-contract.ts 导出(`runJournalStoreContract` 按原顺序调用各主题的注册函数)。
|
|
4
|
+
*
|
|
5
|
+
* 注意:这里只登记 `it(...)`,不另开 describe——套件的分组与用例顺序必须与拆分前逐字相同。
|
|
6
|
+
*/
|
|
7
|
+
import type { JournalStorePort } from "../engine/index.js";
|
|
8
|
+
export declare function registerArtifactCases(factory: () => JournalStorePort): void;
|
|
9
|
+
//# sourceMappingURL=journal-contract-artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal-contract-artifacts.d.ts","sourceRoot":"","sources":["../../src/testing/journal-contract-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAyB,gBAAgB,EAAc,MAAM,oBAAoB,CAAC;AAG9F,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAsM3E"}
|