@auto-engineer/narrative 0.11.11
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/.turbo/turbo-build.log +9 -0
- package/.turbo/turbo-format.log +4 -0
- package/.turbo/turbo-lint.log +4 -0
- package/.turbo/turbo-test.log +14 -0
- package/.turbo/turbo-type-check.log +4 -0
- package/CHANGELOG.md +691 -0
- package/DEBUG.md +136 -0
- package/LICENSE +10 -0
- package/README.md +141 -0
- package/dist/scripts/build.d.ts +3 -0
- package/dist/scripts/build.d.ts.map +1 -0
- package/dist/scripts/build.js +71 -0
- package/dist/scripts/build.js.map +1 -0
- package/dist/scripts/convert-flow-exec.d.ts +3 -0
- package/dist/scripts/convert-flow-exec.d.ts.map +1 -0
- package/dist/scripts/convert-flow-exec.js +17 -0
- package/dist/scripts/convert-flow-exec.js.map +1 -0
- package/dist/scripts/convert-flow-helper.d.ts +3 -0
- package/dist/scripts/convert-flow-helper.d.ts.map +1 -0
- package/dist/scripts/convert-flow-helper.js +85 -0
- package/dist/scripts/convert-flow-helper.js.map +1 -0
- package/dist/scripts/convert-flow.d.ts +3 -0
- package/dist/scripts/convert-flow.d.ts.map +1 -0
- package/dist/scripts/convert-flow.js +108 -0
- package/dist/scripts/convert-flow.js.map +1 -0
- package/dist/scripts/print-schema.d.ts +2 -0
- package/dist/scripts/print-schema.d.ts.map +1 -0
- package/dist/scripts/print-schema.js +20 -0
- package/dist/scripts/print-schema.js.map +1 -0
- package/dist/src/commands/export-schema-helper.d.ts +2 -0
- package/dist/src/commands/export-schema-helper.d.ts.map +1 -0
- package/dist/src/commands/export-schema-helper.js +48 -0
- package/dist/src/commands/export-schema-helper.js.map +1 -0
- package/dist/src/commands/export-schema-runner.d.ts +3 -0
- package/dist/src/commands/export-schema-runner.d.ts.map +1 -0
- package/dist/src/commands/export-schema-runner.js +53 -0
- package/dist/src/commands/export-schema-runner.js.map +1 -0
- package/dist/src/commands/export-schema.d.ts +23 -0
- package/dist/src/commands/export-schema.d.ts.map +1 -0
- package/dist/src/commands/export-schema.js +124 -0
- package/dist/src/commands/export-schema.js.map +1 -0
- package/dist/src/commands/filestore.node.d.ts +3 -0
- package/dist/src/commands/filestore.node.d.ts.map +1 -0
- package/dist/src/commands/filestore.node.js +11 -0
- package/dist/src/commands/filestore.node.js.map +1 -0
- package/dist/src/data-flow-builders.d.ts +71 -0
- package/dist/src/data-flow-builders.d.ts.map +1 -0
- package/dist/src/data-flow-builders.js +326 -0
- package/dist/src/data-flow-builders.js.map +1 -0
- package/dist/src/data-narrative-builders.d.ts +71 -0
- package/dist/src/data-narrative-builders.d.ts.map +1 -0
- package/dist/src/data-narrative-builders.js +326 -0
- package/dist/src/data-narrative-builders.js.map +1 -0
- package/dist/src/flow-context.d.ts +25 -0
- package/dist/src/flow-context.d.ts.map +1 -0
- package/dist/src/flow-context.js +579 -0
- package/dist/src/flow-context.js.map +1 -0
- package/dist/src/flow-context.specs.d.ts +2 -0
- package/dist/src/flow-context.specs.d.ts.map +1 -0
- package/dist/src/flow-context.specs.js +185 -0
- package/dist/src/flow-context.specs.js.map +1 -0
- package/dist/src/flow-registry.d.ts +12 -0
- package/dist/src/flow-registry.d.ts.map +1 -0
- package/dist/src/flow-registry.js +46 -0
- package/dist/src/flow-registry.js.map +1 -0
- package/dist/src/flow.d.ts +49 -0
- package/dist/src/flow.d.ts.map +1 -0
- package/dist/src/flow.js +146 -0
- package/dist/src/flow.js.map +1 -0
- package/dist/src/fluent-builder.d.ts +35 -0
- package/dist/src/fluent-builder.d.ts.map +1 -0
- package/dist/src/fluent-builder.js +287 -0
- package/dist/src/fluent-builder.js.map +1 -0
- package/dist/src/fluent-builder.specs.d.ts +2 -0
- package/dist/src/fluent-builder.specs.d.ts.map +1 -0
- package/dist/src/fluent-builder.specs.js +28 -0
- package/dist/src/fluent-builder.specs.js.map +1 -0
- package/dist/src/getFlows.cache.specs.d.ts +2 -0
- package/dist/src/getFlows.cache.specs.d.ts.map +1 -0
- package/dist/src/getFlows.cache.specs.js +234 -0
- package/dist/src/getFlows.cache.specs.js.map +1 -0
- package/dist/src/getFlows.d.ts +21 -0
- package/dist/src/getFlows.d.ts.map +1 -0
- package/dist/src/getFlows.js +119 -0
- package/dist/src/getFlows.js.map +1 -0
- package/dist/src/getFlows.specs.d.ts +2 -0
- package/dist/src/getFlows.specs.d.ts.map +1 -0
- package/dist/src/getFlows.specs.js +1080 -0
- package/dist/src/getFlows.specs.js.map +1 -0
- package/dist/src/getNarratives.d.ts +21 -0
- package/dist/src/getNarratives.d.ts.map +1 -0
- package/dist/src/getNarratives.js +119 -0
- package/dist/src/getNarratives.js.map +1 -0
- package/dist/src/id/addAutoIds.d.ts +3 -0
- package/dist/src/id/addAutoIds.d.ts.map +1 -0
- package/dist/src/id/addAutoIds.js +47 -0
- package/dist/src/id/addAutoIds.js.map +1 -0
- package/dist/src/id/addAutoIds.specs.d.ts +2 -0
- package/dist/src/id/addAutoIds.specs.d.ts.map +1 -0
- package/dist/src/id/addAutoIds.specs.js +265 -0
- package/dist/src/id/addAutoIds.specs.js.map +1 -0
- package/dist/src/id/generators.d.ts +2 -0
- package/dist/src/id/generators.d.ts.map +1 -0
- package/dist/src/id/generators.js +5 -0
- package/dist/src/id/generators.js.map +1 -0
- package/dist/src/id/hasAllIds.d.ts +3 -0
- package/dist/src/id/hasAllIds.d.ts.map +1 -0
- package/dist/src/id/hasAllIds.js +19 -0
- package/dist/src/id/hasAllIds.js.map +1 -0
- package/dist/src/id/hasAllIds.specs.d.ts +2 -0
- package/dist/src/id/hasAllIds.specs.d.ts.map +1 -0
- package/dist/src/id/hasAllIds.specs.js +231 -0
- package/dist/src/id/hasAllIds.specs.js.map +1 -0
- package/dist/src/id/index.d.ts +3 -0
- package/dist/src/id/index.d.ts.map +1 -0
- package/dist/src/id/index.js +3 -0
- package/dist/src/id/index.js.map +1 -0
- package/dist/src/index.d.ts +45 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +31 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/integration-export-registry.d.ts +42 -0
- package/dist/src/integration-export-registry.d.ts.map +1 -0
- package/dist/src/integration-export-registry.js +74 -0
- package/dist/src/integration-export-registry.js.map +1 -0
- package/dist/src/integration-registry.d.ts +12 -0
- package/dist/src/integration-registry.d.ts.map +1 -0
- package/dist/src/integration-registry.js +42 -0
- package/dist/src/integration-registry.js.map +1 -0
- package/dist/src/loader/fs-path.d.ts +6 -0
- package/dist/src/loader/fs-path.d.ts.map +1 -0
- package/dist/src/loader/fs-path.js +28 -0
- package/dist/src/loader/fs-path.js.map +1 -0
- package/dist/src/loader/graph.d.ts +15 -0
- package/dist/src/loader/graph.d.ts.map +1 -0
- package/dist/src/loader/graph.js +292 -0
- package/dist/src/loader/graph.js.map +1 -0
- package/dist/src/loader/importmap.d.ts +2 -0
- package/dist/src/loader/importmap.d.ts.map +1 -0
- package/dist/src/loader/importmap.js +55 -0
- package/dist/src/loader/importmap.js.map +1 -0
- package/dist/src/loader/index.d.ts +9 -0
- package/dist/src/loader/index.d.ts.map +1 -0
- package/dist/src/loader/index.js +55 -0
- package/dist/src/loader/index.js.map +1 -0
- package/dist/src/loader/resolver.d.ts +4 -0
- package/dist/src/loader/resolver.d.ts.map +1 -0
- package/dist/src/loader/resolver.js +18 -0
- package/dist/src/loader/resolver.js.map +1 -0
- package/dist/src/loader/runtime-cjs.d.ts +3 -0
- package/dist/src/loader/runtime-cjs.d.ts.map +1 -0
- package/dist/src/loader/runtime-cjs.js +131 -0
- package/dist/src/loader/runtime-cjs.js.map +1 -0
- package/dist/src/loader/ts-utils.d.ts +39 -0
- package/dist/src/loader/ts-utils.d.ts.map +1 -0
- package/dist/src/loader/ts-utils.js +563 -0
- package/dist/src/loader/ts-utils.js.map +1 -0
- package/dist/src/loader/types.d.ts +23 -0
- package/dist/src/loader/types.d.ts.map +1 -0
- package/dist/src/loader/types.js +2 -0
- package/dist/src/loader/types.js.map +1 -0
- package/dist/src/loader/vfs-compiler-host.d.ts +5 -0
- package/dist/src/loader/vfs-compiler-host.d.ts.map +1 -0
- package/dist/src/loader/vfs-compiler-host.js +47 -0
- package/dist/src/loader/vfs-compiler-host.js.map +1 -0
- package/dist/src/model-to-flow.specs.d.ts +2 -0
- package/dist/src/model-to-flow.specs.d.ts.map +1 -0
- package/dist/src/model-to-flow.specs.js +1786 -0
- package/dist/src/model-to-flow.specs.js.map +1 -0
- package/dist/src/narrative-context.d.ts +25 -0
- package/dist/src/narrative-context.d.ts.map +1 -0
- package/dist/src/narrative-context.js +579 -0
- package/dist/src/narrative-context.js.map +1 -0
- package/dist/src/narrative-context.specs.d.ts +2 -0
- package/dist/src/narrative-context.specs.d.ts.map +1 -0
- package/dist/src/narrative-context.specs.js +185 -0
- package/dist/src/narrative-context.specs.js.map +1 -0
- package/dist/src/narrative-registry.d.ts +12 -0
- package/dist/src/narrative-registry.d.ts.map +1 -0
- package/dist/src/narrative-registry.js +46 -0
- package/dist/src/narrative-registry.js.map +1 -0
- package/dist/src/narrative.d.ts +49 -0
- package/dist/src/narrative.d.ts.map +1 -0
- package/dist/src/narrative.js +147 -0
- package/dist/src/narrative.js.map +1 -0
- package/dist/src/samples/items.flow.d.ts +2 -0
- package/dist/src/samples/items.flow.d.ts.map +1 -0
- package/dist/src/samples/items.flow.js +63 -0
- package/dist/src/samples/items.flow.js.map +1 -0
- package/dist/src/samples/mixed-given-types.flow.d.ts +2 -0
- package/dist/src/samples/mixed-given-types.flow.d.ts.map +1 -0
- package/dist/src/samples/mixed-given-types.flow.js +36 -0
- package/dist/src/samples/mixed-given-types.flow.js.map +1 -0
- package/dist/src/samples/place-order.flow.d.ts +25 -0
- package/dist/src/samples/place-order.flow.d.ts.map +1 -0
- package/dist/src/samples/place-order.flow.js +30 -0
- package/dist/src/samples/place-order.flow.js.map +1 -0
- package/dist/src/samples/questionnaires.flow.d.ts +2 -0
- package/dist/src/samples/questionnaires.flow.d.ts.map +1 -0
- package/dist/src/samples/questionnaires.flow.js +259 -0
- package/dist/src/samples/questionnaires.flow.js.map +1 -0
- package/dist/src/samples/seasonal-assistant.schema.json +737 -0
- package/dist/src/samples/test-with-ids.flow.d.ts +2 -0
- package/dist/src/samples/test-with-ids.flow.d.ts.map +1 -0
- package/dist/src/samples/test-with-ids.flow.js +80 -0
- package/dist/src/samples/test-with-ids.flow.js.map +1 -0
- package/dist/src/schema-test.d.ts +2 -0
- package/dist/src/schema-test.d.ts.map +1 -0
- package/dist/src/schema-test.js +57 -0
- package/dist/src/schema-test.js.map +1 -0
- package/dist/src/schema.d.ts +19393 -0
- package/dist/src/schema.d.ts.map +1 -0
- package/dist/src/schema.js +342 -0
- package/dist/src/schema.js.map +1 -0
- package/dist/src/slice-builder.d.ts +16 -0
- package/dist/src/slice-builder.d.ts.map +1 -0
- package/dist/src/slice-builder.js +72 -0
- package/dist/src/slice-builder.js.map +1 -0
- package/dist/src/testing.d.ts +32 -0
- package/dist/src/testing.d.ts.map +1 -0
- package/dist/src/testing.js +36 -0
- package/dist/src/testing.js.map +1 -0
- package/dist/src/transformers/flow-to-model/assemble.d.ts +3 -0
- package/dist/src/transformers/flow-to-model/assemble.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/assemble.js +9 -0
- package/dist/src/transformers/flow-to-model/assemble.js.map +1 -0
- package/dist/src/transformers/flow-to-model/debug.d.ts +3 -0
- package/dist/src/transformers/flow-to-model/debug.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/debug.js +6 -0
- package/dist/src/transformers/flow-to-model/debug.js.map +1 -0
- package/dist/src/transformers/flow-to-model/example-shapes.d.ts +6 -0
- package/dist/src/transformers/flow-to-model/example-shapes.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/example-shapes.js +60 -0
- package/dist/src/transformers/flow-to-model/example-shapes.js.map +1 -0
- package/dist/src/transformers/flow-to-model/guards.d.ts +15 -0
- package/dist/src/transformers/flow-to-model/guards.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/guards.js +18 -0
- package/dist/src/transformers/flow-to-model/guards.js.map +1 -0
- package/dist/src/transformers/flow-to-model/index.d.ts +4 -0
- package/dist/src/transformers/flow-to-model/index.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/index.js +193 -0
- package/dist/src/transformers/flow-to-model/index.js.map +1 -0
- package/dist/src/transformers/flow-to-model/inlining.d.ts +4 -0
- package/dist/src/transformers/flow-to-model/inlining.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/inlining.js +95 -0
- package/dist/src/transformers/flow-to-model/inlining.js.map +1 -0
- package/dist/src/transformers/flow-to-model/integrations.d.ts +36 -0
- package/dist/src/transformers/flow-to-model/integrations.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/integrations.js +147 -0
- package/dist/src/transformers/flow-to-model/integrations.js.map +1 -0
- package/dist/src/transformers/flow-to-model/messages.d.ts +5 -0
- package/dist/src/transformers/flow-to-model/messages.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/messages.js +88 -0
- package/dist/src/transformers/flow-to-model/messages.js.map +1 -0
- package/dist/src/transformers/flow-to-model/normalize.d.ts +3 -0
- package/dist/src/transformers/flow-to-model/normalize.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/normalize.js +23 -0
- package/dist/src/transformers/flow-to-model/normalize.js.map +1 -0
- package/dist/src/transformers/flow-to-model/spec-processors.d.ts +34 -0
- package/dist/src/transformers/flow-to-model/spec-processors.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/spec-processors.js +395 -0
- package/dist/src/transformers/flow-to-model/spec-processors.js.map +1 -0
- package/dist/src/transformers/flow-to-model/strings.d.ts +2 -0
- package/dist/src/transformers/flow-to-model/strings.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/strings.js +11 -0
- package/dist/src/transformers/flow-to-model/strings.js.map +1 -0
- package/dist/src/transformers/flow-to-model/type-inference.d.ts +3 -0
- package/dist/src/transformers/flow-to-model/type-inference.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/type-inference.js +92 -0
- package/dist/src/transformers/flow-to-model/type-inference.js.map +1 -0
- package/dist/src/transformers/flow-to-model/type-inference.specs.d.ts +2 -0
- package/dist/src/transformers/flow-to-model/type-inference.specs.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/type-inference.specs.js +167 -0
- package/dist/src/transformers/flow-to-model/type-inference.specs.js.map +1 -0
- package/dist/src/transformers/flow-to-model/zod-adapter.d.ts +6 -0
- package/dist/src/transformers/flow-to-model/zod-adapter.d.ts.map +1 -0
- package/dist/src/transformers/flow-to-model/zod-adapter.js +101 -0
- package/dist/src/transformers/flow-to-model/zod-adapter.js.map +1 -0
- package/dist/src/transformers/model-to-flow/analysis/extract-flow.d.ts +2 -0
- package/dist/src/transformers/model-to-flow/analysis/extract-flow.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/analysis/extract-flow.js +22 -0
- package/dist/src/transformers/model-to-flow/analysis/extract-flow.js.map +1 -0
- package/dist/src/transformers/model-to-flow/analysis/lint-helpers.d.ts +18 -0
- package/dist/src/transformers/model-to-flow/analysis/lint-helpers.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/analysis/lint-helpers.js +78 -0
- package/dist/src/transformers/model-to-flow/analysis/lint-helpers.js.map +1 -0
- package/dist/src/transformers/model-to-flow/analysis/type-decls.d.ts +7 -0
- package/dist/src/transformers/model-to-flow/analysis/type-decls.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/analysis/type-decls.js +74 -0
- package/dist/src/transformers/model-to-flow/analysis/type-decls.js.map +1 -0
- package/dist/src/transformers/model-to-flow/analysis/usage.d.ts +9 -0
- package/dist/src/transformers/model-to-flow/analysis/usage.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/analysis/usage.js +90 -0
- package/dist/src/transformers/model-to-flow/analysis/usage.js.map +1 -0
- package/dist/src/transformers/model-to-flow/ast/emit-helpers.d.ts +18 -0
- package/dist/src/transformers/model-to-flow/ast/emit-helpers.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/ast/emit-helpers.js +159 -0
- package/dist/src/transformers/model-to-flow/ast/emit-helpers.js.map +1 -0
- package/dist/src/transformers/model-to-flow/formatting/prettier.d.ts +2 -0
- package/dist/src/transformers/model-to-flow/formatting/prettier.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/formatting/prettier.js +26 -0
- package/dist/src/transformers/model-to-flow/formatting/prettier.js.map +1 -0
- package/dist/src/transformers/model-to-flow/formatting/sort-types.d.ts +6 -0
- package/dist/src/transformers/model-to-flow/formatting/sort-types.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/formatting/sort-types.js +17 -0
- package/dist/src/transformers/model-to-flow/formatting/sort-types.js.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/compose.d.ts +6 -0
- package/dist/src/transformers/model-to-flow/generators/compose.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/compose.js +79 -0
- package/dist/src/transformers/model-to-flow/generators/compose.js.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/flow.d.ts +15 -0
- package/dist/src/transformers/model-to-flow/generators/flow.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/flow.js +316 -0
- package/dist/src/transformers/model-to-flow/generators/flow.js.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/gwt.d.ts +57 -0
- package/dist/src/transformers/model-to-flow/generators/gwt.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/gwt.js +186 -0
- package/dist/src/transformers/model-to-flow/generators/gwt.js.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/imports.d.ts +16 -0
- package/dist/src/transformers/model-to-flow/generators/imports.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/imports.js +57 -0
- package/dist/src/transformers/model-to-flow/generators/imports.js.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/types.d.ts +13 -0
- package/dist/src/transformers/model-to-flow/generators/types.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/generators/types.js +22 -0
- package/dist/src/transformers/model-to-flow/generators/types.js.map +1 -0
- package/dist/src/transformers/model-to-flow/index.d.ts +13 -0
- package/dist/src/transformers/model-to-flow/index.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/index.js +25 -0
- package/dist/src/transformers/model-to-flow/index.js.map +1 -0
- package/dist/src/transformers/model-to-flow/utils/integration-extractor.d.ts +12 -0
- package/dist/src/transformers/model-to-flow/utils/integration-extractor.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/utils/integration-extractor.js +64 -0
- package/dist/src/transformers/model-to-flow/utils/integration-extractor.js.map +1 -0
- package/dist/src/transformers/model-to-flow/utils/strings.d.ts +9 -0
- package/dist/src/transformers/model-to-flow/utils/strings.d.ts.map +1 -0
- package/dist/src/transformers/model-to-flow/utils/strings.js +11 -0
- package/dist/src/transformers/model-to-flow/utils/strings.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/analysis/extract-flow.d.ts +2 -0
- package/dist/src/transformers/model-to-narrative/analysis/extract-flow.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/analysis/extract-flow.js +22 -0
- package/dist/src/transformers/model-to-narrative/analysis/extract-flow.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.d.ts +18 -0
- package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.js +78 -0
- package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/analysis/type-decls.d.ts +7 -0
- package/dist/src/transformers/model-to-narrative/analysis/type-decls.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/analysis/type-decls.js +74 -0
- package/dist/src/transformers/model-to-narrative/analysis/type-decls.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/analysis/usage.d.ts +9 -0
- package/dist/src/transformers/model-to-narrative/analysis/usage.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/analysis/usage.js +90 -0
- package/dist/src/transformers/model-to-narrative/analysis/usage.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/ast/emit-helpers.d.ts +18 -0
- package/dist/src/transformers/model-to-narrative/ast/emit-helpers.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/ast/emit-helpers.js +159 -0
- package/dist/src/transformers/model-to-narrative/ast/emit-helpers.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/formatting/prettier.d.ts +2 -0
- package/dist/src/transformers/model-to-narrative/formatting/prettier.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/formatting/prettier.js +26 -0
- package/dist/src/transformers/model-to-narrative/formatting/prettier.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/formatting/sort-types.d.ts +6 -0
- package/dist/src/transformers/model-to-narrative/formatting/sort-types.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/formatting/sort-types.js +17 -0
- package/dist/src/transformers/model-to-narrative/formatting/sort-types.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/compose.d.ts +6 -0
- package/dist/src/transformers/model-to-narrative/generators/compose.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/compose.js +79 -0
- package/dist/src/transformers/model-to-narrative/generators/compose.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/flow.d.ts +15 -0
- package/dist/src/transformers/model-to-narrative/generators/flow.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/flow.js +316 -0
- package/dist/src/transformers/model-to-narrative/generators/flow.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/gwt.d.ts +57 -0
- package/dist/src/transformers/model-to-narrative/generators/gwt.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/gwt.js +186 -0
- package/dist/src/transformers/model-to-narrative/generators/gwt.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/imports.d.ts +16 -0
- package/dist/src/transformers/model-to-narrative/generators/imports.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/imports.js +57 -0
- package/dist/src/transformers/model-to-narrative/generators/imports.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/types.d.ts +13 -0
- package/dist/src/transformers/model-to-narrative/generators/types.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/generators/types.js +22 -0
- package/dist/src/transformers/model-to-narrative/generators/types.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/index.d.ts +13 -0
- package/dist/src/transformers/model-to-narrative/index.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/index.js +25 -0
- package/dist/src/transformers/model-to-narrative/index.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/utils/integration-extractor.d.ts +12 -0
- package/dist/src/transformers/model-to-narrative/utils/integration-extractor.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/utils/integration-extractor.js +64 -0
- package/dist/src/transformers/model-to-narrative/utils/integration-extractor.js.map +1 -0
- package/dist/src/transformers/model-to-narrative/utils/strings.d.ts +9 -0
- package/dist/src/transformers/model-to-narrative/utils/strings.d.ts.map +1 -0
- package/dist/src/transformers/model-to-narrative/utils/strings.js +11 -0
- package/dist/src/transformers/model-to-narrative/utils/strings.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/assemble.d.ts +3 -0
- package/dist/src/transformers/narrative-to-model/assemble.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/assemble.js +9 -0
- package/dist/src/transformers/narrative-to-model/assemble.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/debug.d.ts +3 -0
- package/dist/src/transformers/narrative-to-model/debug.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/debug.js +6 -0
- package/dist/src/transformers/narrative-to-model/debug.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/example-shapes.d.ts +6 -0
- package/dist/src/transformers/narrative-to-model/example-shapes.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/example-shapes.js +60 -0
- package/dist/src/transformers/narrative-to-model/example-shapes.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/guards.d.ts +15 -0
- package/dist/src/transformers/narrative-to-model/guards.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/guards.js +18 -0
- package/dist/src/transformers/narrative-to-model/guards.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/index.d.ts +4 -0
- package/dist/src/transformers/narrative-to-model/index.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/index.js +193 -0
- package/dist/src/transformers/narrative-to-model/index.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/inlining.d.ts +4 -0
- package/dist/src/transformers/narrative-to-model/inlining.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/inlining.js +95 -0
- package/dist/src/transformers/narrative-to-model/inlining.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/integrations.d.ts +36 -0
- package/dist/src/transformers/narrative-to-model/integrations.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/integrations.js +147 -0
- package/dist/src/transformers/narrative-to-model/integrations.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/messages.d.ts +5 -0
- package/dist/src/transformers/narrative-to-model/messages.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/messages.js +88 -0
- package/dist/src/transformers/narrative-to-model/messages.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/normalize.d.ts +3 -0
- package/dist/src/transformers/narrative-to-model/normalize.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/normalize.js +23 -0
- package/dist/src/transformers/narrative-to-model/normalize.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/spec-processors.d.ts +34 -0
- package/dist/src/transformers/narrative-to-model/spec-processors.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/spec-processors.js +395 -0
- package/dist/src/transformers/narrative-to-model/spec-processors.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/strings.d.ts +2 -0
- package/dist/src/transformers/narrative-to-model/strings.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/strings.js +11 -0
- package/dist/src/transformers/narrative-to-model/strings.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/type-inference.d.ts +3 -0
- package/dist/src/transformers/narrative-to-model/type-inference.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/type-inference.js +92 -0
- package/dist/src/transformers/narrative-to-model/type-inference.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/type-inference.specs.d.ts +2 -0
- package/dist/src/transformers/narrative-to-model/type-inference.specs.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/type-inference.specs.js +167 -0
- package/dist/src/transformers/narrative-to-model/type-inference.specs.js.map +1 -0
- package/dist/src/transformers/narrative-to-model/zod-adapter.d.ts +6 -0
- package/dist/src/transformers/narrative-to-model/zod-adapter.d.ts.map +1 -0
- package/dist/src/transformers/narrative-to-model/zod-adapter.js +101 -0
- package/dist/src/transformers/narrative-to-model/zod-adapter.js.map +1 -0
- package/dist/src/types.d.ts +143 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +36 -0
- package/dist/src/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/eslint.config.ts +12 -0
- package/package.json +50 -0
- package/scripts/build.ts +84 -0
- package/scripts/convert-flow-exec.ts +17 -0
- package/scripts/convert-flow-helper.ts +93 -0
- package/scripts/convert-flow.ts +128 -0
- package/scripts/print-schema.ts +30 -0
- package/src/commands/export-schema-helper.ts +76 -0
- package/src/commands/export-schema-runner.ts +72 -0
- package/src/commands/export-schema.ts +157 -0
- package/src/commands/filestore.node.ts +12 -0
- package/src/data-narrative-builders.ts +418 -0
- package/src/fluent-builder.specs.ts +36 -0
- package/src/fluent-builder.ts +382 -0
- package/src/getFlows.cache.specs.ts +287 -0
- package/src/getFlows.specs.ts +1246 -0
- package/src/getNarratives.ts +186 -0
- package/src/id/addAutoIds.specs.ts +296 -0
- package/src/id/addAutoIds.ts +53 -0
- package/src/id/generators.ts +5 -0
- package/src/id/hasAllIds.specs.ts +267 -0
- package/src/id/hasAllIds.ts +23 -0
- package/src/id/index.ts +2 -0
- package/src/index.ts +131 -0
- package/src/integration-export-registry.ts +83 -0
- package/src/integration-registry.ts +53 -0
- package/src/loader/fs-path.ts +29 -0
- package/src/loader/graph.ts +379 -0
- package/src/loader/importmap.ts +68 -0
- package/src/loader/index.ts +81 -0
- package/src/loader/resolver.ts +22 -0
- package/src/loader/runtime-cjs.ts +151 -0
- package/src/loader/ts-utils.ts +770 -0
- package/src/loader/types.ts +20 -0
- package/src/loader/vfs-compiler-host.ts +51 -0
- package/src/model-to-flow.specs.ts +1822 -0
- package/src/narrative-context.specs.ts +226 -0
- package/src/narrative-context.ts +708 -0
- package/src/narrative-registry.ts +65 -0
- package/src/narrative.ts +236 -0
- package/src/samples/items.flow.ts +90 -0
- package/src/samples/mixed-given-types.flow.ts +70 -0
- package/src/samples/place-order.flow.ts +57 -0
- package/src/samples/questionnaires.flow.ts +359 -0
- package/src/samples/seasonal-assistant.schema.json +737 -0
- package/src/samples/test-with-ids.flow.ts +109 -0
- package/src/schema-test.ts +67 -0
- package/src/schema.ts +398 -0
- package/src/slice-builder.ts +100 -0
- package/src/testing.ts +40 -0
- package/src/transformers/model-to-narrative/analysis/extract-flow.ts +26 -0
- package/src/transformers/model-to-narrative/analysis/lint-helpers.ts +98 -0
- package/src/transformers/model-to-narrative/analysis/type-decls.ts +94 -0
- package/src/transformers/model-to-narrative/analysis/usage.ts +111 -0
- package/src/transformers/model-to-narrative/ast/emit-helpers.ts +199 -0
- package/src/transformers/model-to-narrative/formatting/prettier.ts +30 -0
- package/src/transformers/model-to-narrative/formatting/sort-types.ts +19 -0
- package/src/transformers/model-to-narrative/generators/compose.ts +124 -0
- package/src/transformers/model-to-narrative/generators/flow.ts +570 -0
- package/src/transformers/model-to-narrative/generators/gwt.ts +335 -0
- package/src/transformers/model-to-narrative/generators/imports.ts +110 -0
- package/src/transformers/model-to-narrative/generators/types.ts +48 -0
- package/src/transformers/model-to-narrative/index.ts +27 -0
- package/src/transformers/model-to-narrative/utils/integration-extractor.ts +67 -0
- package/src/transformers/model-to-narrative/utils/strings.ts +10 -0
- package/src/transformers/narrative-to-model/assemble.ts +10 -0
- package/src/transformers/narrative-to-model/debug.ts +6 -0
- package/src/transformers/narrative-to-model/example-shapes.ts +66 -0
- package/src/transformers/narrative-to-model/guards.ts +24 -0
- package/src/transformers/narrative-to-model/index.ts +274 -0
- package/src/transformers/narrative-to-model/inlining.ts +106 -0
- package/src/transformers/narrative-to-model/integrations.ts +201 -0
- package/src/transformers/narrative-to-model/messages.ts +104 -0
- package/src/transformers/narrative-to-model/normalize.ts +27 -0
- package/src/transformers/narrative-to-model/spec-processors.ts +648 -0
- package/src/transformers/narrative-to-model/strings.ts +11 -0
- package/src/transformers/narrative-to-model/type-inference.specs.ts +176 -0
- package/src/transformers/narrative-to-model/type-inference.ts +127 -0
- package/src/transformers/narrative-to-model/zod-adapter.ts +110 -0
- package/src/types.ts +226 -0
- package/tsconfig.json +11 -0
- package/tsconfig.test.json +9 -0
package/DEBUG.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Debug Logging - Flow
|
|
2
|
+
|
|
3
|
+
This package uses the [debug](https://www.npmjs.com/package/debug) library for conditional logging.
|
|
4
|
+
|
|
5
|
+
## Available Debug Namespaces
|
|
6
|
+
|
|
7
|
+
### Core Flow Operations
|
|
8
|
+
|
|
9
|
+
- `flow:flow` - Flow creation and management
|
|
10
|
+
- `flow:context` - Flow context operations
|
|
11
|
+
- `flow:slice` - Slice operations
|
|
12
|
+
- `flow:registry` - Registry operations (flow, message, integration)
|
|
13
|
+
|
|
14
|
+
### Fluent Builder Operations
|
|
15
|
+
|
|
16
|
+
- `flow:fluent-builder` - General builder operations
|
|
17
|
+
- `flow:fluent-builder:command` - Command slice building
|
|
18
|
+
- `flow:fluent-builder:query` - Query slice building
|
|
19
|
+
- `flow:fluent-builder:react` - Reaction slice building
|
|
20
|
+
|
|
21
|
+
## Enabling Debug Output
|
|
22
|
+
|
|
23
|
+
Set the `DEBUG` environment variable to enable logging:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Enable all flow logging
|
|
27
|
+
DEBUG=flow:* pnpm dev
|
|
28
|
+
|
|
29
|
+
# Enable specific namespace
|
|
30
|
+
DEBUG=flow:flow pnpm dev
|
|
31
|
+
|
|
32
|
+
# Enable all builder operations
|
|
33
|
+
DEBUG=flow:fluent-builder:* pnpm dev
|
|
34
|
+
|
|
35
|
+
# Enable multiple specific namespaces
|
|
36
|
+
DEBUG=flow:flow,flow:context pnpm dev
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
|
|
41
|
+
### Debug Flow Creation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
DEBUG=flow:flow pnpm test
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Output example:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
flow:flow Creating new flow: ShoppingAssistant
|
|
51
|
+
flow:flow Flow created with 0 slices
|
|
52
|
+
flow:flow Registering flow: ShoppingAssistant
|
|
53
|
+
flow:flow Flow registered successfully
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Debug Slice Building
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
DEBUG=flow:fluent-builder:* pnpm dev
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Output example:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
flow:fluent-builder Creating command slice via factory: CreateOrder
|
|
66
|
+
flow:fluent-builder:command Creating command slice: CreateOrder
|
|
67
|
+
flow:fluent-builder:command Command slice added to flow: CreateOrder
|
|
68
|
+
flow:fluent-builder:command Adding client block to slice CreateOrder, description: "Order form"
|
|
69
|
+
flow:fluent-builder:command Starting client block execution
|
|
70
|
+
flow:fluent-builder:command Client block execution completed
|
|
71
|
+
flow:fluent-builder:command Setting request for slice CreateOrder
|
|
72
|
+
flow:fluent-builder:command Request is GraphQL AST Document, converting to SDL
|
|
73
|
+
flow:fluent-builder:command Converted SDL length: 245
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Debug Context Operations
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
DEBUG=flow:context pnpm dev
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Output example:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
flow:context Starting new flow: ShoppingAssistant
|
|
86
|
+
flow:context Current flow set: ShoppingAssistant
|
|
87
|
+
flow:context Adding slice to current flow: CreateOrder (type: command)
|
|
88
|
+
flow:context Slice added, total slices in flow: 1
|
|
89
|
+
flow:context Starting client block for slice: CreateOrder
|
|
90
|
+
flow:context Description: Order form interface
|
|
91
|
+
flow:context Client block ended for slice: CreateOrder
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Debug Registry Operations
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
DEBUG=flow:registry pnpm dev
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Output example:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
flow:registry Registering flow: ShoppingAssistant
|
|
104
|
+
flow:registry Total registered flows: 1
|
|
105
|
+
flow:registry Registering message: CreateOrderCommand
|
|
106
|
+
flow:registry Message registered with schema: { name, items, total }
|
|
107
|
+
flow:registry Registering integration: ProductCatalog
|
|
108
|
+
flow:registry Integration registered successfully
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Common Use Cases
|
|
112
|
+
|
|
113
|
+
### Debugging Flow Export
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
DEBUG=flow:flow,flow:context pnpm export:schema
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Debugging Slice Processing
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
DEBUG=flow:slice,flow:fluent-builder:* pnpm build
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Full Flow Creation Trace
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
DEBUG=flow:* pnpm dev
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Tips
|
|
132
|
+
|
|
133
|
+
- Use wildcards to see related logs: `DEBUG=flow:fluent-builder:*`
|
|
134
|
+
- Combine with other packages: `DEBUG=flow:*,emmett:*`
|
|
135
|
+
- Filter by operation type: `DEBUG=*:command` (all command-related logs)
|
|
136
|
+
- Save to file: `DEBUG=flow:* pnpm dev 2> flow-debug.log`
|
package/LICENSE
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Elastic License 2.0
|
|
2
|
+
|
|
3
|
+
Copyright 2024 Sam Hatoum
|
|
4
|
+
|
|
5
|
+
This software and associated documentation files (the "Software") are licensed under the Elastic License 2.0 (the "License"). You may not use this file except in compliance with the License.
|
|
6
|
+
|
|
7
|
+
You may obtain a copy of the License at:
|
|
8
|
+
https://www.elastic.co/licensing/elastic-license
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# @auto-engineer/flow
|
|
2
|
+
|
|
3
|
+
Domain-specific language for building event-driven applications with type-safe schemas and GraphQL API generation. Plugin for the Auto Engineer CLI that enables defining business flows, data transformations, and integrations using TypeScript-based syntax.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
This is a plugin for the Auto Engineer CLI. Install both the CLI and this plugin:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @auto-engineer/cli
|
|
11
|
+
npm install @auto-engineer/flow
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Configuration
|
|
15
|
+
|
|
16
|
+
Add this plugin to your `auto.config.ts`:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
export default {
|
|
20
|
+
plugins: [
|
|
21
|
+
'@auto-engineer/flow',
|
|
22
|
+
// ... other plugins
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Commands
|
|
28
|
+
|
|
29
|
+
This plugin provides the following commands:
|
|
30
|
+
|
|
31
|
+
- `create:example` - Create an example project with Flow
|
|
32
|
+
- `export:schema` - Export flow schema to JSON
|
|
33
|
+
|
|
34
|
+
## What is Flow?
|
|
35
|
+
|
|
36
|
+
Flow is a declarative language for describing business processes, data flows, and system integrations. It combines:
|
|
37
|
+
|
|
38
|
+
- Type Safety: Full TypeScript integration with compile-time validation
|
|
39
|
+
- Event-Driven Architecture: Built on top of the Emmett event sourcing framework
|
|
40
|
+
- GraphQL Integration: Schema generation and resolver creation
|
|
41
|
+
- Message Bus Support: Support for inter-service communication
|
|
42
|
+
- Flow Orchestration: Define workflows with branching logic and error handling
|
|
43
|
+
|
|
44
|
+
## Key Features
|
|
45
|
+
|
|
46
|
+
### Fluent API Design
|
|
47
|
+
|
|
48
|
+
Define business flows using chainable API:
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { flow } from '@auto-engineer/flow';
|
|
52
|
+
|
|
53
|
+
const orderFlow = flow('place-order')
|
|
54
|
+
.input<PlaceOrderCommand>()
|
|
55
|
+
.validate(command => /* validation logic */)
|
|
56
|
+
.process(async (command, ctx) => {
|
|
57
|
+
// Business logic here
|
|
58
|
+
return { orderId: generateId(), status: 'confirmed' };
|
|
59
|
+
})
|
|
60
|
+
.emit<OrderPlaced>()
|
|
61
|
+
.build();
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Schema Generation
|
|
65
|
+
|
|
66
|
+
Generate GraphQL schemas from flow definitions:
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
// Flows are converted to GraphQL mutations and queries
|
|
70
|
+
// Input types become GraphQL input types
|
|
71
|
+
// Output events become GraphQL object types
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Integration Support
|
|
75
|
+
|
|
76
|
+
Support for external service integrations:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
const flow = flow('payment-processing')
|
|
80
|
+
.integration('stripe', StripePaymentGateway)
|
|
81
|
+
.integration('email', EmailService)
|
|
82
|
+
.process(async (command, ctx) => {
|
|
83
|
+
const payment = await ctx.integrations.stripe.charge(command.amount);
|
|
84
|
+
await ctx.integrations.email.sendReceipt(command.email, payment);
|
|
85
|
+
return payment;
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Testing Support
|
|
90
|
+
|
|
91
|
+
Testing utilities for flow validation:
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
import { testFlow } from '@auto-engineer/flow/testing';
|
|
95
|
+
|
|
96
|
+
describe('order flow', () => {
|
|
97
|
+
it('should process valid orders', async () => {
|
|
98
|
+
const result = await testFlow(orderFlow)
|
|
99
|
+
.withInput({ productId: '123', quantity: 2 })
|
|
100
|
+
.expectEvent<OrderPlaced>()
|
|
101
|
+
.run();
|
|
102
|
+
|
|
103
|
+
expect(result.orderId).toBeDefined();
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Architecture
|
|
109
|
+
|
|
110
|
+
Flow builds on several core concepts:
|
|
111
|
+
|
|
112
|
+
- Flows: The main building blocks that define business processes
|
|
113
|
+
- Messages: Strongly-typed data structures for communication
|
|
114
|
+
- Integrations: External service connectors with retry and error handling
|
|
115
|
+
- Context: Runtime environment providing access to integrations and utilities
|
|
116
|
+
- Registry: Central repository for flow definitions and metadata
|
|
117
|
+
|
|
118
|
+
## Getting Started
|
|
119
|
+
|
|
120
|
+
1. Install the plugin (see Installation above)
|
|
121
|
+
2. Create your first flow project:
|
|
122
|
+
```bash
|
|
123
|
+
auto create:example
|
|
124
|
+
```
|
|
125
|
+
3. Explore the generated example flows in the `flows/` directory
|
|
126
|
+
4. Define your own business flows using the Flow API
|
|
127
|
+
5. Export your schema for GraphQL integration:
|
|
128
|
+
```bash
|
|
129
|
+
auto export:schema
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Integration with Auto Engineer
|
|
133
|
+
|
|
134
|
+
Flow works with other Auto Engineer plugins:
|
|
135
|
+
|
|
136
|
+
- **@auto-engineer/server-generator-apollo-emmett**: Generates server infrastructure from Flow schemas
|
|
137
|
+
- **@auto-engineer/frontend-generator-react-graphql**: Creates React components from flow-generated GraphQL schemas
|
|
138
|
+
- **@auto-engineer/server-implementer**: Implements flow handlers with AI assistance
|
|
139
|
+
- **@auto-engineer/information-architect**: Generates information architecture from flow definitions
|
|
140
|
+
|
|
141
|
+
This plugin-based approach allows building applications from high-level flow definitions to production code.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../scripts/build.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
import { execSync } from 'node:child_process';
|
|
3
|
+
import * as fs from 'node:fs';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
const packageRoot = path.resolve(__dirname, '..');
|
|
9
|
+
function run(command) {
|
|
10
|
+
console.log(`Running: ${command}`);
|
|
11
|
+
execSync(command, { stdio: 'inherit', cwd: packageRoot });
|
|
12
|
+
}
|
|
13
|
+
function copyRecursive(src, dest) {
|
|
14
|
+
const srcPath = path.resolve(packageRoot, src);
|
|
15
|
+
const destPath = path.resolve(packageRoot, dest);
|
|
16
|
+
if (!fs.existsSync(srcPath)) {
|
|
17
|
+
console.log(`Source path does not exist: ${srcPath}`);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Create destination directory if it doesn't exist
|
|
21
|
+
fs.mkdirSync(destPath, { recursive: true });
|
|
22
|
+
// Copy recursively
|
|
23
|
+
const entries = fs.readdirSync(srcPath, { withFileTypes: true });
|
|
24
|
+
for (const entry of entries) {
|
|
25
|
+
const srcFile = path.join(srcPath, entry.name);
|
|
26
|
+
const destFile = path.join(destPath, entry.name);
|
|
27
|
+
if (entry.isDirectory()) {
|
|
28
|
+
copyRecursive(path.relative(packageRoot, srcFile), path.relative(packageRoot, destFile));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
fs.copyFileSync(srcFile, destFile);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function removeDir(dir) {
|
|
36
|
+
const dirPath = path.resolve(packageRoot, dir);
|
|
37
|
+
if (fs.existsSync(dirPath)) {
|
|
38
|
+
fs.rmSync(dirPath, { recursive: true, force: true });
|
|
39
|
+
console.log(`Removed: ${dir}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async function main() {
|
|
43
|
+
try {
|
|
44
|
+
// Step 1: Run TypeScript compiler
|
|
45
|
+
run('tsc');
|
|
46
|
+
// Step 2: Fix ESM imports
|
|
47
|
+
run('tsx ../../scripts/fix-esm-imports.ts');
|
|
48
|
+
// Step 3: Remove existing dist/templates if it exists
|
|
49
|
+
removeDir('dist/templates');
|
|
50
|
+
// Step 4: Copy src/templates to dist/templates
|
|
51
|
+
if (fs.existsSync(path.resolve(packageRoot, 'src/templates'))) {
|
|
52
|
+
console.log('Copying src/templates to dist/templates');
|
|
53
|
+
copyRecursive('src/templates', 'dist/templates');
|
|
54
|
+
// Step 5: Create dist/src/templates directory
|
|
55
|
+
fs.mkdirSync(path.resolve(packageRoot, 'dist/src/templates'), { recursive: true });
|
|
56
|
+
// Step 6: Copy dist/templates/* to dist/src/templates/
|
|
57
|
+
console.log('Copying dist/templates to dist/src/templates');
|
|
58
|
+
copyRecursive('dist/templates', 'dist/src/templates');
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.log('No templates directory found, skipping template copying');
|
|
62
|
+
}
|
|
63
|
+
console.log('Build completed successfully');
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error('Build failed:', error);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
void main();
|
|
71
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../scripts/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-flow-exec.d.ts","sourceRoot":"","sources":["../../scripts/convert-flow-exec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { getNarratives } from '../src/index.js';
|
|
3
|
+
import { NodeFileStore } from '@auto-engineer/file-store';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
const main = async () => {
|
|
6
|
+
try {
|
|
7
|
+
const result = await getNarratives({ vfs: new NodeFileStore(), root: path.resolve(__dirname) });
|
|
8
|
+
const schema = result.toModel();
|
|
9
|
+
console.log(JSON.stringify(schema, null, 2));
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
console.error('Error:', error);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
main().catch(console.error);
|
|
17
|
+
//# sourceMappingURL=convert-flow-exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-flow-exec.js","sourceRoot":"","sources":["../../scripts/convert-flow-exec.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-flow-helper.d.ts","sourceRoot":"","sources":["../../scripts/convert-flow-helper.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawn } from 'child_process';
|
|
3
|
+
import { resolve, dirname } from 'path';
|
|
4
|
+
import { writeFileSync, unlinkSync } from 'fs';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
const main = async () => {
|
|
7
|
+
const flowPath = process.argv[2];
|
|
8
|
+
if (!flowPath) {
|
|
9
|
+
console.error('Usage: tsx convert-flow-helper.ts <flow-file>');
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
const absolutePath = resolve(flowPath);
|
|
14
|
+
const flowDir = dirname(absolutePath);
|
|
15
|
+
// Create a temporary wrapper script file in the same directory as the flow file
|
|
16
|
+
const tempScript = join(flowDir, `.convert-flow-wrapper-${Date.now()}.mjs`);
|
|
17
|
+
const wrapperScript = `
|
|
18
|
+
import { convertFlowToJson } from '@auto-engineer/narrative';
|
|
19
|
+
|
|
20
|
+
const run = async () => {
|
|
21
|
+
try {
|
|
22
|
+
const json = await convertFlowToJson('${absolutePath}');
|
|
23
|
+
console.log('__JSON_START__');
|
|
24
|
+
console.log(json);
|
|
25
|
+
console.log('__JSON_END__');
|
|
26
|
+
} catch (error) {
|
|
27
|
+
console.error('Error in wrapper:', error);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
run();
|
|
33
|
+
`;
|
|
34
|
+
writeFileSync(tempScript, wrapperScript);
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const child = spawn('npx', ['tsx', tempScript], {
|
|
37
|
+
stdio: ['inherit', 'pipe', 'pipe'],
|
|
38
|
+
cwd: flowDir, // Set working directory to the flow file's directory
|
|
39
|
+
});
|
|
40
|
+
let stdout = '';
|
|
41
|
+
let stderr = '';
|
|
42
|
+
child.stdout.on('data', (data) => {
|
|
43
|
+
stdout += data.toString();
|
|
44
|
+
});
|
|
45
|
+
child.stderr.on('data', (data) => {
|
|
46
|
+
stderr += data.toString();
|
|
47
|
+
});
|
|
48
|
+
child.on('close', (code) => {
|
|
49
|
+
// Clean up temp file
|
|
50
|
+
try {
|
|
51
|
+
unlinkSync(tempScript);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Ignore cleanup errors
|
|
55
|
+
}
|
|
56
|
+
if (stderr) {
|
|
57
|
+
console.error(stderr.trim());
|
|
58
|
+
}
|
|
59
|
+
if (code === 0) {
|
|
60
|
+
// Extract JSON between markers
|
|
61
|
+
const jsonStart = stdout.indexOf('__JSON_START__');
|
|
62
|
+
const jsonEnd = stdout.indexOf('__JSON_END__');
|
|
63
|
+
if (jsonStart !== -1 && jsonEnd !== -1) {
|
|
64
|
+
const jsonContent = stdout.substring(jsonStart + '__JSON_START__\n'.length, jsonEnd).trim();
|
|
65
|
+
console.log(jsonContent);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
console.error('Error: Could not find JSON markers in output');
|
|
69
|
+
console.log(stdout.trim());
|
|
70
|
+
}
|
|
71
|
+
resolve(undefined);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
reject(new Error(`Process failed with code ${code}`));
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.error('Error:', error);
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
void main();
|
|
85
|
+
//# sourceMappingURL=convert-flow-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-flow-helper.js","sourceRoot":"","sources":["../../scripts/convert-flow-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-flow.d.ts","sourceRoot":"","sources":["../../scripts/convert-flow.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { resolve, dirname, relative, join } from 'path';
|
|
3
|
+
import { existsSync, writeFileSync, statSync } from 'fs';
|
|
4
|
+
import { spawn } from 'child_process';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
const runInContext = (flowPath, projectRoot) => {
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const helperScript = join(__dirname, 'convert-flow-helper.ts');
|
|
10
|
+
const child = spawn('npx', ['tsx', helperScript, flowPath], {
|
|
11
|
+
cwd: projectRoot,
|
|
12
|
+
stdio: ['inherit', 'pipe', 'pipe'],
|
|
13
|
+
});
|
|
14
|
+
let stdout = '';
|
|
15
|
+
let stderr = '';
|
|
16
|
+
child.stdout.on('data', (data) => {
|
|
17
|
+
stdout += data.toString();
|
|
18
|
+
});
|
|
19
|
+
child.stderr.on('data', (data) => {
|
|
20
|
+
stderr += data.toString();
|
|
21
|
+
});
|
|
22
|
+
child.on('close', (code) => {
|
|
23
|
+
if (code === 0) {
|
|
24
|
+
resolve(stdout.trim());
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
reject(new Error(`Process failed with code ${code}: ${stderr}`));
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
const validateArgs = (args) => {
|
|
33
|
+
if (args.length === 0) {
|
|
34
|
+
console.error('Usage: pnpm convert-flow <input-file.flow.ts> [output-file-or-dir]');
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const validateInputFile = (inputFile) => {
|
|
39
|
+
if (!inputFile.endsWith('.flow.ts') && !inputFile.endsWith('.flow.js')) {
|
|
40
|
+
console.error('Error: Input file must be a .flow.ts or .flow.js file');
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const validateInputPath = (inputPath) => {
|
|
45
|
+
if (!existsSync(inputPath)) {
|
|
46
|
+
console.error(`Error: File not found: ${inputPath}`);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const resolveOutputPath = (outputFile) => {
|
|
51
|
+
if (outputFile === undefined || outputFile === '') {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const resolved = resolve(outputFile);
|
|
55
|
+
if (existsSync(resolved) && statSync(resolved).isDirectory()) {
|
|
56
|
+
return join(resolved, 'schema.json');
|
|
57
|
+
}
|
|
58
|
+
return resolved;
|
|
59
|
+
};
|
|
60
|
+
const findProjectRoot = (startDir) => {
|
|
61
|
+
let projectRoot = startDir;
|
|
62
|
+
while (projectRoot !== '/' && !existsSync(`${projectRoot}/package.json`)) {
|
|
63
|
+
projectRoot = dirname(projectRoot);
|
|
64
|
+
}
|
|
65
|
+
if (!existsSync(`${projectRoot}/package.json`)) {
|
|
66
|
+
console.error('Error: Could not find package.json in flow directory or its parents');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
return projectRoot;
|
|
70
|
+
};
|
|
71
|
+
const writeOutput = (outputPath, json) => {
|
|
72
|
+
if (outputPath !== undefined && outputPath !== '') {
|
|
73
|
+
writeFileSync(outputPath, json);
|
|
74
|
+
console.log(`✓ Flow converted successfully to: ${outputPath}`);
|
|
75
|
+
console.log('📋 Schema validation performed during conversion');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.log(json);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const main = async () => {
|
|
82
|
+
const args = process.argv.slice(2);
|
|
83
|
+
validateArgs(args);
|
|
84
|
+
const inputFile = args[0];
|
|
85
|
+
const outputFile = args[1];
|
|
86
|
+
validateInputFile(inputFile);
|
|
87
|
+
try {
|
|
88
|
+
const inputPath = resolve(inputFile);
|
|
89
|
+
validateInputPath(inputPath);
|
|
90
|
+
const outputPath = resolveOutputPath(outputFile);
|
|
91
|
+
console.log(`Converting flow: ${inputPath}`);
|
|
92
|
+
const flowDir = dirname(inputPath);
|
|
93
|
+
const projectRoot = findProjectRoot(flowDir);
|
|
94
|
+
const relativeFlowPath = relative(projectRoot, inputPath);
|
|
95
|
+
const json = await runInContext(relativeFlowPath, projectRoot);
|
|
96
|
+
writeOutput(outputPath, json);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
100
|
+
console.error(`Error converting flow: ${message}`);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
main().catch((error) => {
|
|
105
|
+
console.error('Fatal error:', error);
|
|
106
|
+
process.exit(1);
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=convert-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-flow.js","sourceRoot":"","sources":["../../scripts/convert-flow.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,WAAmB,EAAmB,EAAE;IAC9E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE;YAC1D,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAAc,EAAQ,EAAE;IAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAQ,EAAE;IACpD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAQ,EAAE;IACpD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,UAA8B,EAAsB,EAAE;IAC/E,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAU,EAAE;IACnD,IAAI,WAAW,GAAG,QAAQ,CAAC;IAC3B,OAAO,WAAW,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW,eAAe,CAAC,EAAE,CAAC;QACzE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW,eAAe,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,UAA8B,EAAE,IAAY,EAAQ,EAAE;IACzE,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QAClD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,YAAY,CAAC,IAAI,CAAC,CAAC;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3B,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAC/D,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-schema.d.ts","sourceRoot":"","sources":["../../scripts/print-schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CommandSliceSchema, NarrativeSchema, IntegrationSchema, MessageSchema, QuerySliceSchema, ReactSliceSchema, } from '../src/index.js';
|
|
2
|
+
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
3
|
+
const schemas = Object.fromEntries(Object.entries({
|
|
4
|
+
narrative: NarrativeSchema,
|
|
5
|
+
message: MessageSchema,
|
|
6
|
+
integration: IntegrationSchema,
|
|
7
|
+
commandSlice: CommandSliceSchema,
|
|
8
|
+
querySlice: QuerySliceSchema,
|
|
9
|
+
reactSlice: ReactSliceSchema,
|
|
10
|
+
}).map(([k, v]) => [
|
|
11
|
+
k,
|
|
12
|
+
zodToJsonSchema(v, {
|
|
13
|
+
$refStrategy: 'root',
|
|
14
|
+
target: 'jsonSchema7',
|
|
15
|
+
definitionPath: 'definitions',
|
|
16
|
+
name: k[0].toUpperCase() + k.slice(1),
|
|
17
|
+
}),
|
|
18
|
+
]));
|
|
19
|
+
console.log(JSON.stringify(schemas, null, 2));
|
|
20
|
+
//# sourceMappingURL=print-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-schema.js","sourceRoot":"","sources":["../../scripts/print-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC;IACb,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,iBAAiB;IAC9B,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,gBAAgB;CAC7B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACjB,CAAC;IACD,eAAe,CAAC,CAAC,EAAE;QACjB,YAAY,EAAE,MAAM;QACpB,MAAM,EAAE,aAAa;QACrB,cAAc,EAAE,aAAa;QAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KACtC,CAAC;CACH,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC"}
|