@executioncontrolprotocol/core 0.10.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 +42 -0
- package/dist/bindings/extension.d.ts +19 -0
- package/dist/bindings/extension.d.ts.map +1 -0
- package/dist/bindings/extension.js +32 -0
- package/dist/bindings/extension.js.map +1 -0
- package/dist/bindings/harness.d.ts +24 -0
- package/dist/bindings/harness.d.ts.map +1 -0
- package/dist/bindings/harness.js +44 -0
- package/dist/bindings/harness.js.map +1 -0
- package/dist/bindings/policy.d.ts +19 -0
- package/dist/bindings/policy.d.ts.map +1 -0
- package/dist/bindings/policy.js +32 -0
- package/dist/bindings/policy.js.map +1 -0
- package/dist/bindings/runtime.d.ts +19 -0
- package/dist/bindings/runtime.d.ts.map +1 -0
- package/dist/bindings/runtime.js +32 -0
- package/dist/bindings/runtime.js.map +1 -0
- package/dist/bindings/step.d.ts +34 -0
- package/dist/bindings/step.d.ts.map +1 -0
- package/dist/bindings/step.js +59 -0
- package/dist/bindings/step.js.map +1 -0
- package/dist/browser-runtime-entry.d.ts +52 -0
- package/dist/browser-runtime-entry.d.ts.map +1 -0
- package/dist/browser-runtime-entry.js +45 -0
- package/dist/browser-runtime-entry.js.map +1 -0
- package/dist/browser.d.ts +20 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +20 -0
- package/dist/browser.js.map +1 -0
- package/dist/compile/compile-harness-artifact.d.ts +30 -0
- package/dist/compile/compile-harness-artifact.d.ts.map +1 -0
- package/dist/compile/compile-harness-artifact.js +43 -0
- package/dist/compile/compile-harness-artifact.js.map +1 -0
- package/dist/compile/entry.d.ts +3 -0
- package/dist/compile/entry.d.ts.map +1 -0
- package/dist/compile/entry.js +3 -0
- package/dist/compile/entry.js.map +1 -0
- package/dist/compile/evaluate-browser.d.ts +5 -0
- package/dist/compile/evaluate-browser.d.ts.map +1 -0
- package/dist/compile/evaluate-browser.js +15 -0
- package/dist/compile/evaluate-browser.js.map +1 -0
- package/dist/compile/evaluate-harness-artifact.d.ts +3 -0
- package/dist/compile/evaluate-harness-artifact.d.ts.map +1 -0
- package/dist/compile/evaluate-harness-artifact.js +17 -0
- package/dist/compile/evaluate-harness-artifact.js.map +1 -0
- package/dist/compile/evaluate.d.ts +5 -0
- package/dist/compile/evaluate.d.ts.map +1 -0
- package/dist/compile/evaluate.js +20 -0
- package/dist/compile/evaluate.js.map +1 -0
- package/dist/compile/extract-harness-artifact.d.ts +9 -0
- package/dist/compile/extract-harness-artifact.d.ts.map +1 -0
- package/dist/compile/extract-harness-artifact.js +33 -0
- package/dist/compile/extract-harness-artifact.js.map +1 -0
- package/dist/compile/extract-workflow-module.d.ts +4 -0
- package/dist/compile/extract-workflow-module.d.ts.map +1 -0
- package/dist/compile/extract-workflow-module.js +20 -0
- package/dist/compile/extract-workflow-module.js.map +1 -0
- package/dist/compile/index.browser.d.ts +18 -0
- package/dist/compile/index.browser.d.ts.map +1 -0
- package/dist/compile/index.browser.js +50 -0
- package/dist/compile/index.browser.js.map +1 -0
- package/dist/compile/index.d.ts +17 -0
- package/dist/compile/index.d.ts.map +1 -0
- package/dist/compile/index.js +49 -0
- package/dist/compile/index.js.map +1 -0
- package/dist/compile/prepare-browser-source.d.ts +3 -0
- package/dist/compile/prepare-browser-source.d.ts.map +1 -0
- package/dist/compile/prepare-browser-source.js +21 -0
- package/dist/compile/prepare-browser-source.js.map +1 -0
- package/dist/compile/transpile-browser.d.ts +21 -0
- package/dist/compile/transpile-browser.d.ts.map +1 -0
- package/dist/compile/transpile-browser.js +93 -0
- package/dist/compile/transpile-browser.js.map +1 -0
- package/dist/compile/transpile.d.ts +10 -0
- package/dist/compile/transpile.d.ts.map +1 -0
- package/dist/compile/transpile.js +85 -0
- package/dist/compile/transpile.js.map +1 -0
- package/dist/compile/types.d.ts +24 -0
- package/dist/compile/types.d.ts.map +1 -0
- package/dist/compile/types.js +2 -0
- package/dist/compile/types.js.map +1 -0
- package/dist/config-schema/index.d.ts +4 -0
- package/dist/config-schema/index.d.ts.map +1 -0
- package/dist/config-schema/index.js +2 -0
- package/dist/config-schema/index.js.map +1 -0
- package/dist/definitions/capability.d.ts +26 -0
- package/dist/definitions/capability.d.ts.map +1 -0
- package/dist/definitions/capability.js +49 -0
- package/dist/definitions/capability.js.map +1 -0
- package/dist/definitions/extension.d.ts +30 -0
- package/dist/definitions/extension.d.ts.map +1 -0
- package/dist/definitions/extension.js +64 -0
- package/dist/definitions/extension.js.map +1 -0
- package/dist/definitions/hook.d.ts +11 -0
- package/dist/definitions/hook.d.ts.map +1 -0
- package/dist/definitions/hook.js +13 -0
- package/dist/definitions/hook.js.map +1 -0
- package/dist/definitions/index.d.ts +7 -0
- package/dist/definitions/index.d.ts.map +1 -0
- package/dist/definitions/index.js +6 -0
- package/dist/definitions/index.js.map +1 -0
- package/dist/definitions/policy.d.ts +23 -0
- package/dist/definitions/policy.d.ts.map +1 -0
- package/dist/definitions/policy.js +50 -0
- package/dist/definitions/policy.js.map +1 -0
- package/dist/definitions/runtime.d.ts +22 -0
- package/dist/definitions/runtime.d.ts.map +1 -0
- package/dist/definitions/runtime.js +48 -0
- package/dist/definitions/runtime.js.map +1 -0
- package/dist/definitions/types.d.ts +50 -0
- package/dist/definitions/types.d.ts.map +1 -0
- package/dist/definitions/types.js +2 -0
- package/dist/definitions/types.js.map +1 -0
- package/dist/encoding/contracts.d.ts +17 -0
- package/dist/encoding/contracts.d.ts.map +1 -0
- package/dist/encoding/contracts.js +41 -0
- package/dist/encoding/contracts.js.map +1 -0
- package/dist/encoding/decode-builder.d.ts +17 -0
- package/dist/encoding/decode-builder.d.ts.map +1 -0
- package/dist/encoding/decode-builder.js +98 -0
- package/dist/encoding/decode-builder.js.map +1 -0
- package/dist/encoding/encode-builder.d.ts +19 -0
- package/dist/encoding/encode-builder.d.ts.map +1 -0
- package/dist/encoding/encode-builder.js +76 -0
- package/dist/encoding/encode-builder.js.map +1 -0
- package/dist/encoding/errors.d.ts +25 -0
- package/dist/encoding/errors.d.ts.map +1 -0
- package/dist/encoding/errors.js +20 -0
- package/dist/encoding/errors.js.map +1 -0
- package/dist/encoding/index.d.ts +10 -0
- package/dist/encoding/index.d.ts.map +1 -0
- package/dist/encoding/index.js +10 -0
- package/dist/encoding/index.js.map +1 -0
- package/dist/encoding/invoke-utility.d.ts +14 -0
- package/dist/encoding/invoke-utility.d.ts.map +1 -0
- package/dist/encoding/invoke-utility.js +50 -0
- package/dist/encoding/invoke-utility.js.map +1 -0
- package/dist/encoding/json-codec.d.ts +38 -0
- package/dist/encoding/json-codec.d.ts.map +1 -0
- package/dist/encoding/json-codec.js +108 -0
- package/dist/encoding/json-codec.js.map +1 -0
- package/dist/encoding/normalize-workflow.d.ts +7 -0
- package/dist/encoding/normalize-workflow.d.ts.map +1 -0
- package/dist/encoding/normalize-workflow.js +109 -0
- package/dist/encoding/normalize-workflow.js.map +1 -0
- package/dist/encoding/resolve.d.ts +13 -0
- package/dist/encoding/resolve.d.ts.map +1 -0
- package/dist/encoding/resolve.js +48 -0
- package/dist/encoding/resolve.js.map +1 -0
- package/dist/encoding/schemas.d.ts +398 -0
- package/dist/encoding/schemas.d.ts.map +1 -0
- package/dist/encoding/schemas.js +74 -0
- package/dist/encoding/schemas.js.map +1 -0
- package/dist/encoding/strip-harness-typescript-output.d.ts +7 -0
- package/dist/encoding/strip-harness-typescript-output.d.ts.map +1 -0
- package/dist/encoding/strip-harness-typescript-output.js +40 -0
- package/dist/encoding/strip-harness-typescript-output.js.map +1 -0
- package/dist/encoding/strip-markdown-fences.d.ts +6 -0
- package/dist/encoding/strip-markdown-fences.d.ts.map +1 -0
- package/dist/encoding/strip-markdown-fences.js +23 -0
- package/dist/encoding/strip-markdown-fences.js.map +1 -0
- package/dist/encoding/utility-context.d.ts +29 -0
- package/dist/encoding/utility-context.d.ts.map +1 -0
- package/dist/encoding/utility-context.js +33 -0
- package/dist/encoding/utility-context.js.map +1 -0
- package/dist/environment/bindings.d.ts +69 -0
- package/dist/environment/bindings.d.ts.map +1 -0
- package/dist/environment/bindings.js +39 -0
- package/dist/environment/bindings.js.map +1 -0
- package/dist/environment/config-resolver.d.ts +33 -0
- package/dist/environment/config-resolver.d.ts.map +1 -0
- package/dist/environment/config-resolver.js +100 -0
- package/dist/environment/config-resolver.js.map +1 -0
- package/dist/environment/describe.d.ts +6 -0
- package/dist/environment/describe.d.ts.map +1 -0
- package/dist/environment/describe.js +132 -0
- package/dist/environment/describe.js.map +1 -0
- package/dist/environment/ecp.d.ts +58 -0
- package/dist/environment/ecp.d.ts.map +1 -0
- package/dist/environment/ecp.js +49 -0
- package/dist/environment/ecp.js.map +1 -0
- package/dist/environment/encoding-host.d.ts +17 -0
- package/dist/environment/encoding-host.d.ts.map +1 -0
- package/dist/environment/encoding-host.js +2 -0
- package/dist/environment/encoding-host.js.map +1 -0
- package/dist/environment/environment.d.ts +94 -0
- package/dist/environment/environment.d.ts.map +1 -0
- package/dist/environment/environment.js +370 -0
- package/dist/environment/environment.js.map +1 -0
- package/dist/environment/search.d.ts +4 -0
- package/dist/environment/search.d.ts.map +1 -0
- package/dist/environment/search.js +80 -0
- package/dist/environment/search.js.map +1 -0
- package/dist/feedback/collect.d.ts +32 -0
- package/dist/feedback/collect.d.ts.map +1 -0
- package/dist/feedback/collect.js +97 -0
- package/dist/feedback/collect.js.map +1 -0
- package/dist/feedback/index.d.ts +2 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +2 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/fluent/encode-fluent.d.ts +10 -0
- package/dist/fluent/encode-fluent.d.ts.map +1 -0
- package/dist/fluent/encode-fluent.js +58 -0
- package/dist/fluent/encode-fluent.js.map +1 -0
- package/dist/fluent/index.d.ts +3 -0
- package/dist/fluent/index.d.ts.map +1 -0
- package/dist/fluent/index.js +3 -0
- package/dist/fluent/index.js.map +1 -0
- package/dist/fluent/render-expr.d.ts +7 -0
- package/dist/fluent/render-expr.d.ts.map +1 -0
- package/dist/fluent/render-expr.js +14 -0
- package/dist/fluent/render-expr.js.map +1 -0
- package/dist/fluent/render-node.d.ts +6 -0
- package/dist/fluent/render-node.d.ts.map +1 -0
- package/dist/fluent/render-node.js +92 -0
- package/dist/fluent/render-node.js.map +1 -0
- package/dist/fluent/render-value.d.ts +22 -0
- package/dist/fluent/render-value.d.ts.map +1 -0
- package/dist/fluent/render-value.js +47 -0
- package/dist/fluent/render-value.js.map +1 -0
- package/dist/fluent/render-workflow.d.ts +16 -0
- package/dist/fluent/render-workflow.d.ts.map +1 -0
- package/dist/fluent/render-workflow.js +41 -0
- package/dist/fluent/render-workflow.js.map +1 -0
- package/dist/formats/format-fluent.d.ts +3 -0
- package/dist/formats/format-fluent.d.ts.map +1 -0
- package/dist/formats/format-fluent.js +17 -0
- package/dist/formats/format-fluent.js.map +1 -0
- package/dist/formats/format-json.d.ts +3 -0
- package/dist/formats/format-json.d.ts.map +1 -0
- package/dist/formats/format-json.js +73 -0
- package/dist/formats/format-json.js.map +1 -0
- package/dist/formats/register-core-formats.d.ts +7 -0
- package/dist/formats/register-core-formats.d.ts.map +1 -0
- package/dist/formats/register-core-formats.js +20 -0
- package/dist/formats/register-core-formats.js.map +1 -0
- package/dist/harness/authoring/classified-intent.d.ts +46 -0
- package/dist/harness/authoring/classified-intent.d.ts.map +1 -0
- package/dist/harness/authoring/classified-intent.js +229 -0
- package/dist/harness/authoring/classified-intent.js.map +1 -0
- package/dist/harness/authoring/context-policy.d.ts +45 -0
- package/dist/harness/authoring/context-policy.d.ts.map +1 -0
- package/dist/harness/authoring/context-policy.js +132 -0
- package/dist/harness/authoring/context-policy.js.map +1 -0
- package/dist/harness/authoring/encode-prompt-text.d.ts +7 -0
- package/dist/harness/authoring/encode-prompt-text.d.ts.map +1 -0
- package/dist/harness/authoring/encode-prompt-text.js +13 -0
- package/dist/harness/authoring/encode-prompt-text.js.map +1 -0
- package/dist/harness/authoring/environment-question.d.ts +6 -0
- package/dist/harness/authoring/environment-question.d.ts.map +1 -0
- package/dist/harness/authoring/environment-question.js +11 -0
- package/dist/harness/authoring/environment-question.js.map +1 -0
- package/dist/harness/authoring/index.d.ts +18 -0
- package/dist/harness/authoring/index.d.ts.map +1 -0
- package/dist/harness/authoring/index.js +17 -0
- package/dist/harness/authoring/index.js.map +1 -0
- package/dist/harness/authoring/normalize-create-eql-output.d.ts +27 -0
- package/dist/harness/authoring/normalize-create-eql-output.d.ts.map +1 -0
- package/dist/harness/authoring/normalize-create-eql-output.js +284 -0
- package/dist/harness/authoring/normalize-create-eql-output.js.map +1 -0
- package/dist/harness/authoring/normalize-intent-eql-output.d.ts +7 -0
- package/dist/harness/authoring/normalize-intent-eql-output.d.ts.map +1 -0
- package/dist/harness/authoring/normalize-intent-eql-output.js +59 -0
- package/dist/harness/authoring/normalize-intent-eql-output.js.map +1 -0
- package/dist/harness/authoring/normalize-patch-eql-output.d.ts +28 -0
- package/dist/harness/authoring/normalize-patch-eql-output.d.ts.map +1 -0
- package/dist/harness/authoring/normalize-patch-eql-output.js +200 -0
- package/dist/harness/authoring/normalize-patch-eql-output.js.map +1 -0
- package/dist/harness/authoring/normalize-workflow-output.d.ts +6 -0
- package/dist/harness/authoring/normalize-workflow-output.d.ts.map +1 -0
- package/dist/harness/authoring/normalize-workflow-output.js +51 -0
- package/dist/harness/authoring/normalize-workflow-output.js.map +1 -0
- package/dist/harness/authoring/presentation.d.ts +51 -0
- package/dist/harness/authoring/presentation.d.ts.map +1 -0
- package/dist/harness/authoring/presentation.js +131 -0
- package/dist/harness/authoring/presentation.js.map +1 -0
- package/dist/harness/authoring/recover-structured-patch.d.ts +21 -0
- package/dist/harness/authoring/recover-structured-patch.d.ts.map +1 -0
- package/dist/harness/authoring/recover-structured-patch.js +197 -0
- package/dist/harness/authoring/recover-structured-patch.js.map +1 -0
- package/dist/harness/authoring/repair-workflow-json.d.ts +16 -0
- package/dist/harness/authoring/repair-workflow-json.d.ts.map +1 -0
- package/dist/harness/authoring/repair-workflow-json.js +183 -0
- package/dist/harness/authoring/repair-workflow-json.js.map +1 -0
- package/dist/harness/authoring/safe-reply.d.ts +44 -0
- package/dist/harness/authoring/safe-reply.d.ts.map +1 -0
- package/dist/harness/authoring/safe-reply.js +187 -0
- package/dist/harness/authoring/safe-reply.js.map +1 -0
- package/dist/harness/authoring/summarize-capability-schema.d.ts +20 -0
- package/dist/harness/authoring/summarize-capability-schema.d.ts.map +1 -0
- package/dist/harness/authoring/summarize-capability-schema.js +137 -0
- package/dist/harness/authoring/summarize-capability-schema.js.map +1 -0
- package/dist/harness/authoring/summarize-environment.d.ts +43 -0
- package/dist/harness/authoring/summarize-environment.d.ts.map +1 -0
- package/dist/harness/authoring/summarize-environment.js +164 -0
- package/dist/harness/authoring/summarize-environment.js.map +1 -0
- package/dist/harness/authoring/summarize-run-context.d.ts +28 -0
- package/dist/harness/authoring/summarize-run-context.d.ts.map +1 -0
- package/dist/harness/authoring/summarize-run-context.js +40 -0
- package/dist/harness/authoring/summarize-run-context.js.map +1 -0
- package/dist/harness/authoring/summarize-workflow.d.ts +35 -0
- package/dist/harness/authoring/summarize-workflow.d.ts.map +1 -0
- package/dist/harness/authoring/summarize-workflow.js +109 -0
- package/dist/harness/authoring/summarize-workflow.js.map +1 -0
- package/dist/harness/call-model.d.ts +15 -0
- package/dist/harness/call-model.d.ts.map +1 -0
- package/dist/harness/call-model.js +59 -0
- package/dist/harness/call-model.js.map +1 -0
- package/dist/harness/context.d.ts +28 -0
- package/dist/harness/context.d.ts.map +1 -0
- package/dist/harness/context.js +19 -0
- package/dist/harness/context.js.map +1 -0
- package/dist/harness/define-harness.d.ts +37 -0
- package/dist/harness/define-harness.d.ts.map +1 -0
- package/dist/harness/define-harness.js +88 -0
- package/dist/harness/define-harness.js.map +1 -0
- package/dist/harness/definitions/test-minimal-harness.d.ts +13 -0
- package/dist/harness/definitions/test-minimal-harness.d.ts.map +1 -0
- package/dist/harness/definitions/test-minimal-harness.js +45 -0
- package/dist/harness/definitions/test-minimal-harness.js.map +1 -0
- package/dist/harness/execute-harness.d.ts +9 -0
- package/dist/harness/execute-harness.d.ts.map +1 -0
- package/dist/harness/execute-harness.js +138 -0
- package/dist/harness/execute-harness.js.map +1 -0
- package/dist/harness/format-resolve.d.ts +26 -0
- package/dist/harness/format-resolve.d.ts.map +1 -0
- package/dist/harness/format-resolve.js +50 -0
- package/dist/harness/format-resolve.js.map +1 -0
- package/dist/harness/harness-catalog.d.ts +41 -0
- package/dist/harness/harness-catalog.d.ts.map +1 -0
- package/dist/harness/harness-catalog.js +66 -0
- package/dist/harness/harness-catalog.js.map +1 -0
- package/dist/harness/index.d.ts +11 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +9 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/prompts/build-repair-hint.d.ts +7 -0
- package/dist/harness/prompts/build-repair-hint.d.ts.map +1 -0
- package/dist/harness/prompts/build-repair-hint.js +24 -0
- package/dist/harness/prompts/build-repair-hint.js.map +1 -0
- package/dist/harness/prompts/build-system-prompt.d.ts +7 -0
- package/dist/harness/prompts/build-system-prompt.d.ts.map +1 -0
- package/dist/harness/prompts/build-system-prompt.js +97 -0
- package/dist/harness/prompts/build-system-prompt.js.map +1 -0
- package/dist/harness/prompts/eql-primer.d.ts +13 -0
- package/dist/harness/prompts/eql-primer.d.ts.map +1 -0
- package/dist/harness/prompts/eql-primer.js +171 -0
- package/dist/harness/prompts/eql-primer.js.map +1 -0
- package/dist/harness/prompts/fixtures-root.d.ts +5 -0
- package/dist/harness/prompts/fixtures-root.d.ts.map +1 -0
- package/dist/harness/prompts/fixtures-root.js +7 -0
- package/dist/harness/prompts/fixtures-root.js.map +1 -0
- package/dist/harness/prompts/harness-prompt-fixture-schema.d.ts +95 -0
- package/dist/harness/prompts/harness-prompt-fixture-schema.d.ts.map +1 -0
- package/dist/harness/prompts/harness-prompt-fixture-schema.js +28 -0
- package/dist/harness/prompts/harness-prompt-fixture-schema.js.map +1 -0
- package/dist/harness/prompts/identity-primer.d.ts +6 -0
- package/dist/harness/prompts/identity-primer.d.ts.map +1 -0
- package/dist/harness/prompts/identity-primer.js +9 -0
- package/dist/harness/prompts/identity-primer.js.map +1 -0
- package/dist/harness/prompts/index.d.ts +7 -0
- package/dist/harness/prompts/index.d.ts.map +1 -0
- package/dist/harness/prompts/index.js +7 -0
- package/dist/harness/prompts/index.js.map +1 -0
- package/dist/harness/prompts/load-schema-example.browser.d.ts +11 -0
- package/dist/harness/prompts/load-schema-example.browser.d.ts.map +1 -0
- package/dist/harness/prompts/load-schema-example.browser.js +70 -0
- package/dist/harness/prompts/load-schema-example.browser.js.map +1 -0
- package/dist/harness/prompts/load-schema-example.d.ts +11 -0
- package/dist/harness/prompts/load-schema-example.d.ts.map +1 -0
- package/dist/harness/prompts/load-schema-example.js +22 -0
- package/dist/harness/prompts/load-schema-example.js.map +1 -0
- package/dist/harness/prompts/load-schema-example.node.d.ts +7 -0
- package/dist/harness/prompts/load-schema-example.node.d.ts.map +1 -0
- package/dist/harness/prompts/load-schema-example.node.js +38 -0
- package/dist/harness/prompts/load-schema-example.node.js.map +1 -0
- package/dist/harness/prompts/schema-example-files.d.ts +7 -0
- package/dist/harness/prompts/schema-example-files.d.ts.map +1 -0
- package/dist/harness/prompts/schema-example-files.js +12 -0
- package/dist/harness/prompts/schema-example-files.js.map +1 -0
- package/dist/harness/prompts/typescript-primer.d.ts +11 -0
- package/dist/harness/prompts/typescript-primer.d.ts.map +1 -0
- package/dist/harness/prompts/typescript-primer.js +55 -0
- package/dist/harness/prompts/typescript-primer.js.map +1 -0
- package/dist/harness/repair-loop-timing.d.ts +17 -0
- package/dist/harness/repair-loop-timing.d.ts.map +1 -0
- package/dist/harness/repair-loop-timing.js +89 -0
- package/dist/harness/repair-loop-timing.js.map +1 -0
- package/dist/harness/resolve-harness-binding.d.ts +10 -0
- package/dist/harness/resolve-harness-binding.d.ts.map +1 -0
- package/dist/harness/resolve-harness-binding.js +14 -0
- package/dist/harness/resolve-harness-binding.js.map +1 -0
- package/dist/harness/run-model-repair-loop.d.ts +45 -0
- package/dist/harness/run-model-repair-loop.d.ts.map +1 -0
- package/dist/harness/run-model-repair-loop.js +57 -0
- package/dist/harness/run-model-repair-loop.js.map +1 -0
- package/dist/harness/types.d.ts +34 -0
- package/dist/harness/types.d.ts.map +1 -0
- package/dist/harness/types.js +2 -0
- package/dist/harness/types.js.map +1 -0
- package/dist/helpers/browser.d.ts +12 -0
- package/dist/helpers/browser.d.ts.map +1 -0
- package/dist/helpers/browser.js +12 -0
- package/dist/helpers/browser.js.map +1 -0
- package/dist/helpers/env.d.ts +12 -0
- package/dist/helpers/env.d.ts.map +1 -0
- package/dist/helpers/env.js +12 -0
- package/dist/helpers/env.js.map +1 -0
- package/dist/helpers/expr.d.ts +12 -0
- package/dist/helpers/expr.d.ts.map +1 -0
- package/dist/helpers/expr.js +15 -0
- package/dist/helpers/expr.js.map +1 -0
- package/dist/helpers/ref.d.ts +12 -0
- package/dist/helpers/ref.d.ts.map +1 -0
- package/dist/helpers/ref.js +13 -0
- package/dist/helpers/ref.js.map +1 -0
- package/dist/helpers/secrets.d.ts +12 -0
- package/dist/helpers/secrets.d.ts.map +1 -0
- package/dist/helpers/secrets.js +12 -0
- package/dist/helpers/secrets.js.map +1 -0
- package/dist/helpers/state.d.ts +12 -0
- package/dist/helpers/state.d.ts.map +1 -0
- package/dist/helpers/state.js +15 -0
- package/dist/helpers/state.js.map +1 -0
- package/dist/image/image-ref.d.ts +28 -0
- package/dist/image/image-ref.d.ts.map +1 -0
- package/dist/image/image-ref.js +75 -0
- package/dist/image/image-ref.js.map +1 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/invoke/execute-invoke.d.ts +9 -0
- package/dist/invoke/execute-invoke.d.ts.map +1 -0
- package/dist/invoke/execute-invoke.js +137 -0
- package/dist/invoke/execute-invoke.js.map +1 -0
- package/dist/invoke/index.d.ts +3 -0
- package/dist/invoke/index.d.ts.map +1 -0
- package/dist/invoke/index.js +3 -0
- package/dist/invoke/index.js.map +1 -0
- package/dist/invoke/invoke-builder.d.ts +17 -0
- package/dist/invoke/invoke-builder.d.ts.map +1 -0
- package/dist/invoke/invoke-builder.js +24 -0
- package/dist/invoke/invoke-builder.js.map +1 -0
- package/dist/loaders/files.d.ts +13 -0
- package/dist/loaders/files.d.ts.map +1 -0
- package/dist/loaders/files.js +64 -0
- package/dist/loaders/files.js.map +1 -0
- package/dist/loaders/index.d.ts +2 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +2 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/node.d.ts +8 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +8 -0
- package/dist/node.js.map +1 -0
- package/dist/patch/apply-patch.d.ts +8 -0
- package/dist/patch/apply-patch.d.ts.map +1 -0
- package/dist/patch/apply-patch.js +286 -0
- package/dist/patch/apply-patch.js.map +1 -0
- package/dist/patch/index.d.ts +7 -0
- package/dist/patch/index.d.ts.map +1 -0
- package/dist/patch/index.js +7 -0
- package/dist/patch/index.js.map +1 -0
- package/dist/patch/normalize-input.d.ts +15 -0
- package/dist/patch/normalize-input.d.ts.map +1 -0
- package/dist/patch/normalize-input.js +68 -0
- package/dist/patch/normalize-input.js.map +1 -0
- package/dist/patch/patch-builder.d.ts +14 -0
- package/dist/patch/patch-builder.d.ts.map +1 -0
- package/dist/patch/patch-builder.js +22 -0
- package/dist/patch/patch-builder.js.map +1 -0
- package/dist/patch/patch-document.d.ts +61 -0
- package/dist/patch/patch-document.d.ts.map +1 -0
- package/dist/patch/patch-document.js +16 -0
- package/dist/patch/patch-document.js.map +1 -0
- package/dist/patch/resolve-path.d.ts +21 -0
- package/dist/patch/resolve-path.d.ts.map +1 -0
- package/dist/patch/resolve-path.js +45 -0
- package/dist/patch/resolve-path.js.map +1 -0
- package/dist/patch/step-index.d.ts +14 -0
- package/dist/patch/step-index.d.ts.map +1 -0
- package/dist/patch/step-index.js +44 -0
- package/dist/patch/step-index.js.map +1 -0
- package/dist/registry/ensure-bound-extensions.d.ts +9 -0
- package/dist/registry/ensure-bound-extensions.d.ts.map +1 -0
- package/dist/registry/ensure-bound-extensions.js +31 -0
- package/dist/registry/ensure-bound-extensions.js.map +1 -0
- package/dist/registry/errors.d.ts +13 -0
- package/dist/registry/errors.d.ts.map +1 -0
- package/dist/registry/errors.js +19 -0
- package/dist/registry/errors.js.map +1 -0
- package/dist/registry/extension-catalog.d.ts +31 -0
- package/dist/registry/extension-catalog.d.ts.map +1 -0
- package/dist/registry/extension-catalog.js +50 -0
- package/dist/registry/extension-catalog.js.map +1 -0
- package/dist/registry/namespace.d.ts +11 -0
- package/dist/registry/namespace.d.ts.map +1 -0
- package/dist/registry/namespace.js +19 -0
- package/dist/registry/namespace.js.map +1 -0
- package/dist/registry/registry.d.ts +45 -0
- package/dist/registry/registry.d.ts.map +1 -0
- package/dist/registry/registry.js +95 -0
- package/dist/registry/registry.js.map +1 -0
- package/dist/runtime/commit.d.ts +11 -0
- package/dist/runtime/commit.d.ts.map +1 -0
- package/dist/runtime/commit.js +44 -0
- package/dist/runtime/commit.js.map +1 -0
- package/dist/runtime/context.d.ts +91 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/context.js +32 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/executor.d.ts +17 -0
- package/dist/runtime/executor.d.ts.map +1 -0
- package/dist/runtime/executor.js +2 -0
- package/dist/runtime/executor.js.map +1 -0
- package/dist/runtime/in-memory-executor.d.ts +10 -0
- package/dist/runtime/in-memory-executor.d.ts.map +1 -0
- package/dist/runtime/in-memory-executor.js +328 -0
- package/dist/runtime/in-memory-executor.js.map +1 -0
- package/dist/runtime/lifecycle.d.ts +6 -0
- package/dist/runtime/lifecycle.d.ts.map +1 -0
- package/dist/runtime/lifecycle.js +10 -0
- package/dist/runtime/lifecycle.js.map +1 -0
- package/dist/runtime/mutation-records.d.ts +4 -0
- package/dist/runtime/mutation-records.d.ts.map +1 -0
- package/dist/runtime/mutation-records.js +28 -0
- package/dist/runtime/mutation-records.js.map +1 -0
- package/dist/runtime/policy-engine.d.ts +13 -0
- package/dist/runtime/policy-engine.d.ts.map +1 -0
- package/dist/runtime/policy-engine.js +46 -0
- package/dist/runtime/policy-engine.js.map +1 -0
- package/dist/runtime/resolve-input.d.ts +4 -0
- package/dist/runtime/resolve-input.d.ts.map +1 -0
- package/dist/runtime/resolve-input.js +46 -0
- package/dist/runtime/resolve-input.js.map +1 -0
- package/dist/runtime/store.d.ts +38 -0
- package/dist/runtime/store.d.ts.map +1 -0
- package/dist/runtime/store.js +97 -0
- package/dist/runtime/store.js.map +1 -0
- package/dist/testing/index.d.ts +7 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +7 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/test-extension.d.ts +5 -0
- package/dist/testing/test-extension.d.ts.map +1 -0
- package/dist/testing/test-extension.js +52 -0
- package/dist/testing/test-extension.js.map +1 -0
- package/dist/testing/test-lifecycle-extension.d.ts +12 -0
- package/dist/testing/test-lifecycle-extension.d.ts.map +1 -0
- package/dist/testing/test-lifecycle-extension.js +65 -0
- package/dist/testing/test-lifecycle-extension.js.map +1 -0
- package/dist/testing/test-model-generate.d.ts +15 -0
- package/dist/testing/test-model-generate.d.ts.map +1 -0
- package/dist/testing/test-model-generate.js +71 -0
- package/dist/testing/test-model-generate.js.map +1 -0
- package/dist/util/path.d.ts +16 -0
- package/dist/util/path.d.ts.map +1 -0
- package/dist/util/path.js +116 -0
- package/dist/util/path.js.map +1 -0
- package/dist/util/slug.d.ts +3 -0
- package/dist/util/slug.d.ts.map +1 -0
- package/dist/util/slug.js +9 -0
- package/dist/util/slug.js.map +1 -0
- package/dist/validate/environment.d.ts +5 -0
- package/dist/validate/environment.d.ts.map +1 -0
- package/dist/validate/environment.js +30 -0
- package/dist/validate/environment.js.map +1 -0
- package/dist/validate/harness.d.ts +11 -0
- package/dist/validate/harness.d.ts.map +1 -0
- package/dist/validate/harness.js +72 -0
- package/dist/validate/harness.js.map +1 -0
- package/dist/validate/workflow-schema.d.ts +350 -0
- package/dist/validate/workflow-schema.d.ts.map +1 -0
- package/dist/validate/workflow-schema.js +152 -0
- package/dist/validate/workflow-schema.js.map +1 -0
- package/dist/validate/workflow.d.ts +7 -0
- package/dist/validate/workflow.d.ts.map +1 -0
- package/dist/validate/workflow.js +139 -0
- package/dist/validate/workflow.js.map +1 -0
- package/dist/validate/zod-mapper.d.ts +5 -0
- package/dist/validate/zod-mapper.d.ts.map +1 -0
- package/dist/validate/zod-mapper.js +10 -0
- package/dist/validate/zod-mapper.js.map +1 -0
- package/dist/workflow/assign-unique-step-ids.d.ts +7 -0
- package/dist/workflow/assign-unique-step-ids.d.ts.map +1 -0
- package/dist/workflow/assign-unique-step-ids.js +58 -0
- package/dist/workflow/assign-unique-step-ids.js.map +1 -0
- package/dist/workflow/builder.d.ts +35 -0
- package/dist/workflow/builder.d.ts.map +1 -0
- package/dist/workflow/builder.js +63 -0
- package/dist/workflow/builder.js.map +1 -0
- package/dist/workflow/flow.d.ts +36 -0
- package/dist/workflow/flow.d.ts.map +1 -0
- package/dist/workflow/flow.js +51 -0
- package/dist/workflow/flow.js.map +1 -0
- package/fixtures/schema-examples/harness-reply.output.eql +3 -0
- package/fixtures/schema-examples/harness-reply.output.json +11 -0
- package/fixtures/schema-examples/intent.output.eql +1 -0
- package/fixtures/schema-examples/intent.output.json +4 -0
- package/fixtures/schema-examples/patch.output.eql +4 -0
- package/fixtures/schema-examples/patch.output.json +12 -0
- package/fixtures/schema-examples/patch.repair-neutral.eql +4 -0
- package/fixtures/schema-examples/workflow.output.eql +5 -0
- package/fixtures/schema-examples/workflow.output.json +18 -0
- package/package.json +115 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { ECP_PATCH_ERROR_CODES } from "@executioncontrolprotocol/types";
|
|
2
|
+
import { isHarnessCapabilityId } from "../harness/harness-catalog.js";
|
|
3
|
+
import { buildStepIndex } from "../patch/step-index.js";
|
|
4
|
+
import { emptyValidationResult, workflowManifestSchema } from "./workflow-schema.js";
|
|
5
|
+
import { zodIssuesToValidationIssues } from "./zod-mapper.js";
|
|
6
|
+
function collectStepCommits(nodes, commits) {
|
|
7
|
+
for (const node of nodes) {
|
|
8
|
+
if (!node.type || node.type === "step") {
|
|
9
|
+
const step = node;
|
|
10
|
+
if (step.as) {
|
|
11
|
+
if (commits.has(step.as)) {
|
|
12
|
+
commits.set(step.as, "duplicate");
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
commits.set(step.as, step.id);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
else if (node.type === "parallel") {
|
|
20
|
+
for (const branch of node.branches)
|
|
21
|
+
collectStepCommits(branch, commits);
|
|
22
|
+
}
|
|
23
|
+
else if (node.type === "branch") {
|
|
24
|
+
for (const b of node.branches)
|
|
25
|
+
collectStepCommits(b.steps, commits);
|
|
26
|
+
}
|
|
27
|
+
else if (node.type === "loop") {
|
|
28
|
+
collectStepCommits(node.steps, commits);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate workflow manifest structure.
|
|
34
|
+
* @category Validation
|
|
35
|
+
*/
|
|
36
|
+
export function validateWorkflow(manifest, descriptor) {
|
|
37
|
+
const result = emptyValidationResult(true);
|
|
38
|
+
const parsed = workflowManifestSchema.safeParse(manifest);
|
|
39
|
+
if (!parsed.success) {
|
|
40
|
+
result.valid = false;
|
|
41
|
+
result.errors.push(...zodIssuesToValidationIssues(parsed.error.issues));
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
const stepIndex = buildStepIndex(manifest);
|
|
45
|
+
for (const id of stepIndex.duplicates) {
|
|
46
|
+
result.valid = false;
|
|
47
|
+
result.errors.push({
|
|
48
|
+
code: ECP_PATCH_ERROR_CODES.DUPLICATE_STEP_ID,
|
|
49
|
+
message: `Duplicate step id: ${id}`,
|
|
50
|
+
path: `workflow.steps.${id}`,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const commits = new Map();
|
|
54
|
+
collectStepCommits(manifest.steps, commits);
|
|
55
|
+
for (const [key, val] of commits) {
|
|
56
|
+
if (val === "duplicate") {
|
|
57
|
+
result.valid = false;
|
|
58
|
+
result.errors.push({
|
|
59
|
+
code: "DUPLICATE_COMMIT_AS",
|
|
60
|
+
message: `Duplicate as key '${key}'`,
|
|
61
|
+
path: `workflow.as.${key}`,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (descriptor) {
|
|
66
|
+
for (const node of manifest.steps) {
|
|
67
|
+
validateNodeAgainstDescriptor(node, descriptor, result);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
let usesState = false;
|
|
71
|
+
function scanState(v) {
|
|
72
|
+
if (v && typeof v === "object" && "$state" in v)
|
|
73
|
+
usesState = true;
|
|
74
|
+
if (v && typeof v === "object") {
|
|
75
|
+
for (const c of Object.values(v))
|
|
76
|
+
scanState(c);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const node of manifest.steps) {
|
|
80
|
+
if ("input" in node && node.input)
|
|
81
|
+
scanState(node.input);
|
|
82
|
+
}
|
|
83
|
+
if (usesState) {
|
|
84
|
+
const hasStateControl = descriptor?.policies.some((p) => p.id.includes("state-control"));
|
|
85
|
+
if (!hasStateControl) {
|
|
86
|
+
result.warnings.push({
|
|
87
|
+
code: "MISSING_STATE_CONTROL_POLICY",
|
|
88
|
+
message: "Workflow uses state() handles but environment has no @executioncontrolprotocol/state-control policy.",
|
|
89
|
+
severity: "warning",
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
result.valid = result.errors.length === 0;
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
function validateNodeAgainstDescriptor(node, descriptor, result) {
|
|
97
|
+
if (!node.type || node.type === "step") {
|
|
98
|
+
const step = node;
|
|
99
|
+
if (isHarnessCapabilityId(step.uses)) {
|
|
100
|
+
result.valid = false;
|
|
101
|
+
result.errors.push({
|
|
102
|
+
code: "HARNESS_CAPABILITY_NOT_A_STEP",
|
|
103
|
+
message: `Harness evaluate capability ${step.uses} is invoke-only and cannot be used as a workflow step.`,
|
|
104
|
+
path: `steps.${step.id}.uses`,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
const found = descriptor.capabilities.some((c) => c.id === step.uses);
|
|
108
|
+
if (!found) {
|
|
109
|
+
result.valid = false;
|
|
110
|
+
result.errors.push({
|
|
111
|
+
code: "UNKNOWN_CAPABILITY",
|
|
112
|
+
message: `Capability ${step.uses} is not registered.`,
|
|
113
|
+
path: `steps.${step.id}.uses`,
|
|
114
|
+
suggestions: descriptor.capabilities
|
|
115
|
+
.filter((c) => c.id.includes(String(step.uses).split(".")[1] ?? ""))
|
|
116
|
+
.map((c) => c.id)
|
|
117
|
+
.slice(0, 3),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (node.type === "parallel") {
|
|
123
|
+
for (const b of node.branches) {
|
|
124
|
+
for (const n of b)
|
|
125
|
+
validateNodeAgainstDescriptor(n, descriptor, result);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else if (node.type === "branch") {
|
|
129
|
+
for (const b of node.branches) {
|
|
130
|
+
for (const n of b.steps)
|
|
131
|
+
validateNodeAgainstDescriptor(n, descriptor, result);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else if (node.type === "loop") {
|
|
135
|
+
for (const n of node.steps)
|
|
136
|
+
validateNodeAgainstDescriptor(n, descriptor, result);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/validate/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ValidationIssue } from "@executioncontrolprotocol/types";
|
|
2
|
+
import type { ZodIssue } from "zod";
|
|
3
|
+
/** Map Zod issues to ECP validation issues. @category Validation */
|
|
4
|
+
export declare function zodIssuesToValidationIssues(issues: ZodIssue[]): ValidationIssue[];
|
|
5
|
+
//# sourceMappingURL=zod-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-mapper.d.ts","sourceRoot":"","sources":["../../src/validate/zod-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAEnC,oEAAoE;AACpE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAOjF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Map Zod issues to ECP validation issues. @category Validation */
|
|
2
|
+
export function zodIssuesToValidationIssues(issues) {
|
|
3
|
+
return issues.map((issue) => ({
|
|
4
|
+
code: issue.code.toUpperCase(),
|
|
5
|
+
message: issue.message,
|
|
6
|
+
path: issue.path.length > 0 ? issue.path.join(".") : undefined,
|
|
7
|
+
severity: "error",
|
|
8
|
+
}));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=zod-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-mapper.js","sourceRoot":"","sources":["../../src/validate/zod-mapper.ts"],"names":[],"mappings":"AAGA,oEAAoE;AACpE,MAAM,UAAU,2BAA2B,CAAC,MAAkB;IAC5D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9D,QAAQ,EAAE,OAAgB;KAC3B,CAAC,CAAC,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { WorkflowManifest } from "@executioncontrolprotocol/types";
|
|
2
|
+
/**
|
|
3
|
+
* Ensure every step in the workflow graph has a globally unique id.
|
|
4
|
+
* @category Workflow
|
|
5
|
+
*/
|
|
6
|
+
export declare function assignUniqueStepIds(manifest: WorkflowManifest): WorkflowManifest;
|
|
7
|
+
//# sourceMappingURL=assign-unique-step-ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assign-unique-step-ids.d.ts","sourceRoot":"","sources":["../../src/workflow/assign-unique-step-ids.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,gBAAgB,EAAgB,MAAM,iCAAiC,CAAA;AAwD/F;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,CAKhF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { slugify } from "../util/slug.js";
|
|
2
|
+
function ensureUniqueId(base, used) {
|
|
3
|
+
let id = base;
|
|
4
|
+
let suffix = 2;
|
|
5
|
+
while (used.has(id)) {
|
|
6
|
+
id = `${base}-${suffix}`;
|
|
7
|
+
suffix++;
|
|
8
|
+
}
|
|
9
|
+
used.add(id);
|
|
10
|
+
return id;
|
|
11
|
+
}
|
|
12
|
+
function assignIdsToNodes(nodes, used) {
|
|
13
|
+
return nodes.map((node) => {
|
|
14
|
+
if (!node.type || node.type === "step") {
|
|
15
|
+
const step = { ...node };
|
|
16
|
+
const base = step.id || slugify(step.label ?? String(step.uses));
|
|
17
|
+
step.id = ensureUniqueId(base, used);
|
|
18
|
+
return step;
|
|
19
|
+
}
|
|
20
|
+
if (node.type === "parallel") {
|
|
21
|
+
return {
|
|
22
|
+
...node,
|
|
23
|
+
branches: node.branches.map((branch) => assignIdsToNodes(branch, used)),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if (node.type === "branch") {
|
|
27
|
+
return {
|
|
28
|
+
...node,
|
|
29
|
+
branches: node.branches.map((b) => ({
|
|
30
|
+
...b,
|
|
31
|
+
steps: assignIdsToNodes(b.steps, used),
|
|
32
|
+
})),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (node.type === "loop") {
|
|
36
|
+
return {
|
|
37
|
+
...node,
|
|
38
|
+
steps: assignIdsToNodes(node.steps, used),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return node;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/** Deep-clone a workflow manifest (JSON-safe portable document). */
|
|
45
|
+
function cloneManifest(manifest) {
|
|
46
|
+
return JSON.parse(JSON.stringify(manifest));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Ensure every step in the workflow graph has a globally unique id.
|
|
50
|
+
* @category Workflow
|
|
51
|
+
*/
|
|
52
|
+
export function assignUniqueStepIds(manifest) {
|
|
53
|
+
const next = cloneManifest(manifest);
|
|
54
|
+
const used = new Set();
|
|
55
|
+
next.steps = assignIdsToNodes(next.steps, used);
|
|
56
|
+
return next;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=assign-unique-step-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assign-unique-step-ids.js","sourceRoot":"","sources":["../../src/workflow/assign-unique-step-ids.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,SAAS,cAAc,CAAC,IAAY,EAAE,IAAiB;IACrD,IAAI,EAAE,GAAG,IAAI,CAAA;IACb,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAA;QACxB,MAAM,EAAE,CAAA;IACV,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACZ,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAqB,EAAE,IAAiB;IAChE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,EAAc,CAAA;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAChE,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACpC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO;gBACL,GAAG,IAAI;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;aACxE,CAAA;QACH,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO;gBACL,GAAG,IAAI;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,GAAG,CAAC;oBACJ,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;iBACvC,CAAC,CAAC;aACJ,CAAA;QACH,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO;gBACL,GAAG,IAAI;gBACP,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;aAC1C,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,oEAAoE;AACpE,SAAS,aAAa,CAAC,QAA0B;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAqB,CAAA;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAA0B;IAC5D,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC/C,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { EnvironmentDescriptor, ValidationResult, WorkflowManifest, WorkflowNode } from "@executioncontrolprotocol/types";
|
|
2
|
+
import type { StepBuilder } from "../bindings/step.js";
|
|
3
|
+
import { type RenderWorkflowToFluentOptions } from "../fluent/render-workflow.js";
|
|
4
|
+
type NodeInput = StepBuilder | WorkflowNode;
|
|
5
|
+
/** Fluent workflow builder. @category Workflow */
|
|
6
|
+
export declare class WorkflowBuilder {
|
|
7
|
+
private readonly label;
|
|
8
|
+
private nodes;
|
|
9
|
+
private workflowId?;
|
|
10
|
+
constructor(label: string);
|
|
11
|
+
/** Add sequential steps or flow nodes. */
|
|
12
|
+
run(nodes: NodeInput[]): this;
|
|
13
|
+
/** Set workflow id override. */
|
|
14
|
+
id(id: string): this;
|
|
15
|
+
/** Build manifest without validation. */
|
|
16
|
+
compile(): WorkflowManifest;
|
|
17
|
+
/** Alias for compile(). */
|
|
18
|
+
toManifest(): WorkflowManifest;
|
|
19
|
+
/** Render this workflow as Fluent API TypeScript source. */
|
|
20
|
+
toFluentSource(options?: RenderWorkflowToFluentOptions): string;
|
|
21
|
+
/** Validate against optional environment descriptor. */
|
|
22
|
+
validate(descriptor?: EnvironmentDescriptor): ValidationResult;
|
|
23
|
+
/** Graph representation for visualization. */
|
|
24
|
+
toGraph(): {
|
|
25
|
+
nodes: WorkflowNode[];
|
|
26
|
+
label: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Define a workflow.
|
|
31
|
+
* @category Workflow
|
|
32
|
+
*/
|
|
33
|
+
export declare function workflow(label: string): WorkflowBuilder;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/workflow/builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGtD,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,8BAA8B,CAAA;AAErC,KAAK,SAAS,GAAG,WAAW,GAAG,YAAY,CAAA;AAM3C,kDAAkD;AAClD,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,UAAU,CAAC,CAAQ;gBAEE,KAAK,EAAE,MAAM;IAE1C,0CAA0C;IAC1C,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;IAK7B,gCAAgC;IAChC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKpB,yCAAyC;IACzC,OAAO,IAAI,gBAAgB;IAI3B,2BAA2B;IAC3B,UAAU,IAAI,gBAAgB;IAY9B,4DAA4D;IAC5D,cAAc,CAAC,OAAO,CAAC,EAAE,6BAA6B,GAAG,MAAM;IAI/D,wDAAwD;IACxD,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,GAAG,gBAAgB;IAI9D,8CAA8C;IAC9C,OAAO,IAAI;QAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAGpD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAEvD"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { LATEST_ECP_VERSION } from "@executioncontrolprotocol/types";
|
|
2
|
+
import { slugify } from "../util/slug.js";
|
|
3
|
+
import { validateWorkflow } from "../validate/workflow.js";
|
|
4
|
+
import { assignUniqueStepIds } from "./assign-unique-step-ids.js";
|
|
5
|
+
import { renderWorkflowToFluent, } from "../fluent/render-workflow.js";
|
|
6
|
+
function toNode(n) {
|
|
7
|
+
return "toNode" in n ? n.toNode() : n;
|
|
8
|
+
}
|
|
9
|
+
/** Fluent workflow builder. @category Workflow */
|
|
10
|
+
export class WorkflowBuilder {
|
|
11
|
+
label;
|
|
12
|
+
nodes = [];
|
|
13
|
+
workflowId;
|
|
14
|
+
constructor(label) {
|
|
15
|
+
this.label = label;
|
|
16
|
+
}
|
|
17
|
+
/** Add sequential steps or flow nodes. */
|
|
18
|
+
run(nodes) {
|
|
19
|
+
this.nodes.push(...nodes.map(toNode));
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
/** Set workflow id override. */
|
|
23
|
+
id(id) {
|
|
24
|
+
this.workflowId = id;
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
/** Build manifest without validation. */
|
|
28
|
+
compile() {
|
|
29
|
+
return this.toManifest();
|
|
30
|
+
}
|
|
31
|
+
/** Alias for compile(). */
|
|
32
|
+
toManifest() {
|
|
33
|
+
return assignUniqueStepIds({
|
|
34
|
+
schema: "@executioncontrolprotocol.workflow",
|
|
35
|
+
version: LATEST_ECP_VERSION,
|
|
36
|
+
workflow: {
|
|
37
|
+
id: this.workflowId ?? slugify(this.label),
|
|
38
|
+
label: this.label,
|
|
39
|
+
},
|
|
40
|
+
steps: this.nodes,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** Render this workflow as Fluent API TypeScript source. */
|
|
44
|
+
toFluentSource(options) {
|
|
45
|
+
return renderWorkflowToFluent(this.toManifest(), options);
|
|
46
|
+
}
|
|
47
|
+
/** Validate against optional environment descriptor. */
|
|
48
|
+
validate(descriptor) {
|
|
49
|
+
return validateWorkflow(this.toManifest(), descriptor);
|
|
50
|
+
}
|
|
51
|
+
/** Graph representation for visualization. */
|
|
52
|
+
toGraph() {
|
|
53
|
+
return { nodes: this.nodes, label: this.label };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Define a workflow.
|
|
58
|
+
* @category Workflow
|
|
59
|
+
*/
|
|
60
|
+
export function workflow(label) {
|
|
61
|
+
return new WorkflowBuilder(label);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/workflow/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EACL,sBAAsB,GAEvB,MAAM,8BAA8B,CAAA;AAIrC,SAAS,MAAM,CAAC,CAAY;IAC1B,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AACvC,CAAC;AAED,kDAAkD;AAClD,MAAM,OAAO,eAAe;IAIG;IAHrB,KAAK,GAAmB,EAAE,CAAA;IAC1B,UAAU,CAAS;IAE3B,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9C,0CAA0C;IAC1C,GAAG,CAAC,KAAkB;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACrC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,gCAAgC;IAChC,EAAE,CAAC,EAAU;QACX,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,yCAAyC;IACzC,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;IAC1B,CAAC;IAED,2BAA2B;IAC3B,UAAU;QACR,OAAO,mBAAmB,CAAC;YACzB,MAAM,EAAE,oCAAoC;YAC5C,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE;gBACR,EAAE,EAAE,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;YACD,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,4DAA4D;IAC5D,cAAc,CAAC,OAAuC;QACpD,OAAO,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,wDAAwD;IACxD,QAAQ,CAAC,UAAkC;QACzC,OAAO,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,CAAA;IACxD,CAAC;IAED,8CAA8C;IAC9C,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IACjD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { BranchNode, LoopNode, ParallelNode, WorkflowNode } from "@executioncontrolprotocol/types";
|
|
2
|
+
import type { ExprValue } from "@executioncontrolprotocol/types";
|
|
3
|
+
import type { StepBuilder } from "../bindings/step.js";
|
|
4
|
+
type NodeInput = StepBuilder | WorkflowNode;
|
|
5
|
+
/**
|
|
6
|
+
* Parallel branches.
|
|
7
|
+
* @category Workflow
|
|
8
|
+
*/
|
|
9
|
+
export declare function parallel(branches: NodeInput[][], options?: {
|
|
10
|
+
id?: string;
|
|
11
|
+
label?: string;
|
|
12
|
+
}): ParallelNode;
|
|
13
|
+
/**
|
|
14
|
+
* Conditional branch.
|
|
15
|
+
* @category Workflow
|
|
16
|
+
*/
|
|
17
|
+
export declare function branch(steps: Array<StepBuilder & {
|
|
18
|
+
when?: ExprValue;
|
|
19
|
+
}>, options?: {
|
|
20
|
+
id?: string;
|
|
21
|
+
label?: string;
|
|
22
|
+
}): BranchNode;
|
|
23
|
+
/** Loop options. */
|
|
24
|
+
export interface LoopOptions {
|
|
25
|
+
label?: string;
|
|
26
|
+
until?: ExprValue;
|
|
27
|
+
maxRounds?: number;
|
|
28
|
+
id?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Loop until condition.
|
|
32
|
+
* @category Workflow
|
|
33
|
+
*/
|
|
34
|
+
export declare function loop(options: LoopOptions, steps: NodeInput[]): LoopNode;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/workflow/flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACvG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,KAAK,SAAS,GAAG,WAAW,GAAG,YAAY,CAAA;AAM3C;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,SAAS,EAAE,EAAE,EACvB,OAAO,CAAC,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,YAAY,CAOd;AAED;;;GAGG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,KAAK,CAAC,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,EAChD,OAAO,CAAC,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,UAAU,CAeZ;AAED,oBAAoB;AACpB,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAClB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,SAAS,EAAE,GACjB,QAAQ,CASV"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { slugify } from "../util/slug.js";
|
|
2
|
+
function toNode(n) {
|
|
3
|
+
return "toNode" in n ? n.toNode() : n;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Parallel branches.
|
|
7
|
+
* @category Workflow
|
|
8
|
+
*/
|
|
9
|
+
export function parallel(branches, options) {
|
|
10
|
+
return {
|
|
11
|
+
type: "parallel",
|
|
12
|
+
id: options?.id ?? "parallel-1",
|
|
13
|
+
...(options?.label ? { label: options.label } : {}),
|
|
14
|
+
branches: branches.map((b) => b.map(toNode)),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Conditional branch.
|
|
19
|
+
* @category Workflow
|
|
20
|
+
*/
|
|
21
|
+
export function branch(steps, options) {
|
|
22
|
+
return {
|
|
23
|
+
type: "branch",
|
|
24
|
+
id: options?.id ?? "branch-1",
|
|
25
|
+
...(options?.label ? { label: options.label } : {}),
|
|
26
|
+
branches: steps.map((s) => {
|
|
27
|
+
const node = toNode(s);
|
|
28
|
+
const stepNode = node.type === "step" || !node.type ? node : undefined;
|
|
29
|
+
return {
|
|
30
|
+
...(s.label ? { label: s.label } : {}),
|
|
31
|
+
when: stepNode?.when ?? { eq: ["", true] },
|
|
32
|
+
steps: [node],
|
|
33
|
+
};
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Loop until condition.
|
|
39
|
+
* @category Workflow
|
|
40
|
+
*/
|
|
41
|
+
export function loop(options, steps) {
|
|
42
|
+
return {
|
|
43
|
+
type: "loop",
|
|
44
|
+
id: options.id ?? slugify(options.label ?? "loop"),
|
|
45
|
+
...(options.label ? { label: options.label } : {}),
|
|
46
|
+
...(options.until ? { until: options.until } : {}),
|
|
47
|
+
...(options.maxRounds !== undefined ? { maxRounds: options.maxRounds } : {}),
|
|
48
|
+
steps: steps.map(toNode),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/workflow/flow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAKzC,SAAS,MAAM,CAAC,CAAY;IAC1B,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,QAAuB,EACvB,OAAyC;IAEzC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,YAAY;QAC/B,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC7C,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CACpB,KAAgD,EAChD,OAAyC;IAEzC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,UAAU;QAC7B,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;YACtE,OAAO;gBACL,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;gBAC1C,KAAK,EAAE,CAAC,IAAI,CAAC;aACd,CAAA;QACH,CAAC,CAAC;KACH,CAAA;AACH,CAAC;AAUD;;;GAGG;AACH,MAAM,UAAU,IAAI,CAClB,OAAoB,EACpB,KAAkB;IAElB,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;KACzB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
INTENT workflow-create
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "@executioncontrolprotocol.workflow",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"workflow": {
|
|
5
|
+
"id": "minimal-echo",
|
|
6
|
+
"label": "Minimal Echo"
|
|
7
|
+
},
|
|
8
|
+
"steps": [
|
|
9
|
+
{
|
|
10
|
+
"type": "step",
|
|
11
|
+
"id": "echo",
|
|
12
|
+
"label": "Echo",
|
|
13
|
+
"uses": "@executioncontrolprotocol/test.echo",
|
|
14
|
+
"input": { "value": "hello" },
|
|
15
|
+
"as": "echo"
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@executioncontrolprotocol/core",
|
|
3
|
+
"version": "0.10.0",
|
|
4
|
+
"description": "ECP fluent API, environment, registry, and local runtime",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./browser": {
|
|
15
|
+
"types": "./dist/browser.d.ts",
|
|
16
|
+
"import": "./dist/browser.js"
|
|
17
|
+
},
|
|
18
|
+
"./environment": {
|
|
19
|
+
"types": "./dist/environment/environment.d.ts",
|
|
20
|
+
"import": "./dist/environment/environment.js"
|
|
21
|
+
},
|
|
22
|
+
"./environment/config-resolver": {
|
|
23
|
+
"types": "./dist/environment/config-resolver.d.ts",
|
|
24
|
+
"import": "./dist/environment/config-resolver.js"
|
|
25
|
+
},
|
|
26
|
+
"./definitions/types": {
|
|
27
|
+
"types": "./dist/definitions/types.d.ts",
|
|
28
|
+
"import": "./dist/definitions/types.js"
|
|
29
|
+
},
|
|
30
|
+
"./registry": {
|
|
31
|
+
"types": "./dist/registry/registry.d.ts",
|
|
32
|
+
"import": "./dist/registry/registry.js"
|
|
33
|
+
},
|
|
34
|
+
"./bindings/extension": {
|
|
35
|
+
"types": "./dist/bindings/extension.d.ts",
|
|
36
|
+
"import": "./dist/bindings/extension.js"
|
|
37
|
+
},
|
|
38
|
+
"./bindings/runtime": {
|
|
39
|
+
"types": "./dist/bindings/runtime.d.ts",
|
|
40
|
+
"import": "./dist/bindings/runtime.js"
|
|
41
|
+
},
|
|
42
|
+
"./bindings/policy": {
|
|
43
|
+
"types": "./dist/bindings/policy.d.ts",
|
|
44
|
+
"import": "./dist/bindings/policy.js"
|
|
45
|
+
},
|
|
46
|
+
"./config-schema": {
|
|
47
|
+
"types": "./dist/config-schema/index.d.ts",
|
|
48
|
+
"import": "./dist/config-schema/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./runtime/context": {
|
|
51
|
+
"types": "./dist/runtime/context.d.ts",
|
|
52
|
+
"import": "./dist/runtime/context.js"
|
|
53
|
+
},
|
|
54
|
+
"./runtime/store": {
|
|
55
|
+
"types": "./dist/runtime/store.d.ts",
|
|
56
|
+
"import": "./dist/runtime/store.js"
|
|
57
|
+
},
|
|
58
|
+
"./registry/errors": {
|
|
59
|
+
"types": "./dist/registry/errors.d.ts",
|
|
60
|
+
"import": "./dist/registry/errors.js"
|
|
61
|
+
},
|
|
62
|
+
"./runtime/in-memory-executor": {
|
|
63
|
+
"types": "./dist/runtime/in-memory-executor.d.ts",
|
|
64
|
+
"import": "./dist/runtime/in-memory-executor.js"
|
|
65
|
+
},
|
|
66
|
+
"./runtime/executor": {
|
|
67
|
+
"types": "./dist/runtime/executor.d.ts",
|
|
68
|
+
"import": "./dist/runtime/executor.js"
|
|
69
|
+
},
|
|
70
|
+
"./testing": {
|
|
71
|
+
"types": "./dist/testing/index.d.ts",
|
|
72
|
+
"import": "./dist/testing/index.js"
|
|
73
|
+
},
|
|
74
|
+
"./loaders": {
|
|
75
|
+
"types": "./dist/loaders/index.d.ts",
|
|
76
|
+
"import": "./dist/loaders/index.js"
|
|
77
|
+
},
|
|
78
|
+
"./compile": {
|
|
79
|
+
"types": "./dist/compile/entry.d.ts",
|
|
80
|
+
"import": "./dist/compile/entry.js"
|
|
81
|
+
},
|
|
82
|
+
"./node": {
|
|
83
|
+
"types": "./dist/node.d.ts",
|
|
84
|
+
"import": "./dist/node.js"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"files": [
|
|
88
|
+
"dist",
|
|
89
|
+
"fixtures",
|
|
90
|
+
"README.md"
|
|
91
|
+
],
|
|
92
|
+
"scripts": {
|
|
93
|
+
"build": "tsc -b"
|
|
94
|
+
},
|
|
95
|
+
"dependencies": {
|
|
96
|
+
"@executioncontrolprotocol/types": "0.10.0"
|
|
97
|
+
},
|
|
98
|
+
"peerDependencies": {
|
|
99
|
+
"@executioncontrolprotocol/types": "^0.10.0",
|
|
100
|
+
"zod": "^3.24.0"
|
|
101
|
+
},
|
|
102
|
+
"optionalDependencies": {
|
|
103
|
+
"esbuild": "^0.25.0",
|
|
104
|
+
"esbuild-wasm": "^0.25.0"
|
|
105
|
+
},
|
|
106
|
+
"devDependencies": {
|
|
107
|
+
"@executioncontrolprotocol/browser-secrets": "0.10.0",
|
|
108
|
+
"@executioncontrolprotocol/node": "0.10.0",
|
|
109
|
+
"@executioncontrolprotocol/policies": "0.10.0",
|
|
110
|
+
"esbuild": "^0.25.0",
|
|
111
|
+
"esbuild-wasm": "^0.25.0",
|
|
112
|
+
"typescript": "^5.7.0",
|
|
113
|
+
"zod": "^3.24.0"
|
|
114
|
+
}
|
|
115
|
+
}
|