@synergenius/flow-weaver 0.2.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/LICENSE +122 -0
- package/README.md +315 -0
- package/dist/annotation-generator.d.ts +45 -0
- package/dist/annotation-generator.js +557 -0
- package/dist/api/builder.d.ts +223 -0
- package/dist/api/builder.js +345 -0
- package/dist/api/compile.d.ts +92 -0
- package/dist/api/compile.js +149 -0
- package/dist/api/extract-types.d.ts +29 -0
- package/dist/api/extract-types.js +57 -0
- package/dist/api/generate-in-place.d.ts +73 -0
- package/dist/api/generate-in-place.js +1353 -0
- package/dist/api/generate.d.ts +83 -0
- package/dist/api/generate.js +510 -0
- package/dist/api/helpers.d.ts +248 -0
- package/dist/api/helpers.js +285 -0
- package/dist/api/index.d.ts +46 -0
- package/dist/api/index.js +45 -0
- package/dist/api/inline-runtime.d.ts +27 -0
- package/dist/api/inline-runtime.js +551 -0
- package/dist/api/manipulation/connections.d.ts +79 -0
- package/dist/api/manipulation/connections.js +151 -0
- package/dist/api/manipulation/index.d.ts +34 -0
- package/dist/api/manipulation/index.js +41 -0
- package/dist/api/manipulation/node-types.d.ts +123 -0
- package/dist/api/manipulation/node-types.js +200 -0
- package/dist/api/manipulation/nodes.d.ts +144 -0
- package/dist/api/manipulation/nodes.js +333 -0
- package/dist/api/manipulation/ports.d.ts +59 -0
- package/dist/api/manipulation/ports.js +228 -0
- package/dist/api/manipulation/scopes.d.ts +52 -0
- package/dist/api/manipulation/scopes.js +156 -0
- package/dist/api/manipulation/validation.d.ts +6 -0
- package/dist/api/manipulation/validation.js +6 -0
- package/dist/api/manipulation/workflow.d.ts +81 -0
- package/dist/api/manipulation/workflow.js +116 -0
- package/dist/api/manipulation.d.ts +8 -0
- package/dist/api/manipulation.js +8 -0
- package/dist/api/parse.d.ts +48 -0
- package/dist/api/parse.js +110 -0
- package/dist/api/patterns.d.ts +112 -0
- package/dist/api/patterns.js +306 -0
- package/dist/api/query.d.ts +429 -0
- package/dist/api/query.js +816 -0
- package/dist/api/templates.d.ts +98 -0
- package/dist/api/templates.js +117 -0
- package/dist/api/transform.d.ts +31 -0
- package/dist/api/transform.js +40 -0
- package/dist/api/validate.d.ts +25 -0
- package/dist/api/validate.js +39 -0
- package/dist/api/workflow-file-operations.d.ts +29 -0
- package/dist/api/workflow-file-operations.js +180 -0
- package/dist/ast/builder.d.ts +210 -0
- package/dist/ast/builder.js +395 -0
- package/dist/ast/index.d.ts +5 -0
- package/dist/ast/index.js +5 -0
- package/dist/ast/serialization-node.d.ts +6 -0
- package/dist/ast/serialization-node.js +30 -0
- package/dist/ast/serialization.d.ts +43 -0
- package/dist/ast/serialization.js +134 -0
- package/dist/ast/types.d.ts +852 -0
- package/dist/ast/types.js +2 -0
- package/dist/ast/workflow-utils.d.ts +54 -0
- package/dist/ast/workflow-utils.js +114 -0
- package/dist/body-generator.d.ts +31 -0
- package/dist/body-generator.js +35 -0
- package/dist/built-in-nodes/delay.d.ts +11 -0
- package/dist/built-in-nodes/delay.js +29 -0
- package/dist/built-in-nodes/index.d.ts +5 -0
- package/dist/built-in-nodes/index.js +4 -0
- package/dist/built-in-nodes/invoke-workflow.d.ts +13 -0
- package/dist/built-in-nodes/invoke-workflow.js +25 -0
- package/dist/built-in-nodes/mock-types.d.ts +18 -0
- package/dist/built-in-nodes/mock-types.js +12 -0
- package/dist/built-in-nodes/wait-for-event.d.ts +13 -0
- package/dist/built-in-nodes/wait-for-event.js +25 -0
- package/dist/chevrotain-parser/connect-parser.d.ts +24 -0
- package/dist/chevrotain-parser/connect-parser.js +98 -0
- package/dist/chevrotain-parser/grammar-diagrams.d.ts +29 -0
- package/dist/chevrotain-parser/grammar-diagrams.js +264 -0
- package/dist/chevrotain-parser/index.d.ts +25 -0
- package/dist/chevrotain-parser/index.js +27 -0
- package/dist/chevrotain-parser/map-parser.d.ts +33 -0
- package/dist/chevrotain-parser/map-parser.js +130 -0
- package/dist/chevrotain-parser/node-parser.d.ts +36 -0
- package/dist/chevrotain-parser/node-parser.js +466 -0
- package/dist/chevrotain-parser/path-parser.d.ts +28 -0
- package/dist/chevrotain-parser/path-parser.js +118 -0
- package/dist/chevrotain-parser/port-parser.d.ts +36 -0
- package/dist/chevrotain-parser/port-parser.js +442 -0
- package/dist/chevrotain-parser/position-parser.d.ts +20 -0
- package/dist/chevrotain-parser/position-parser.js +83 -0
- package/dist/chevrotain-parser/scope-parser.d.ts +19 -0
- package/dist/chevrotain-parser/scope-parser.js +104 -0
- package/dist/chevrotain-parser/tokens.d.ts +78 -0
- package/dist/chevrotain-parser/tokens.js +384 -0
- package/dist/chevrotain-parser/trigger-cancel-parser.d.ts +50 -0
- package/dist/chevrotain-parser/trigger-cancel-parser.js +282 -0
- package/dist/cli/commands/changelog.d.ts +13 -0
- package/dist/cli/commands/changelog.js +135 -0
- package/dist/cli/commands/compile.d.ts +64 -0
- package/dist/cli/commands/compile.js +278 -0
- package/dist/cli/commands/create.d.ts +33 -0
- package/dist/cli/commands/create.js +147 -0
- package/dist/cli/commands/describe.d.ts +68 -0
- package/dist/cli/commands/describe.js +377 -0
- package/dist/cli/commands/dev.d.ts +32 -0
- package/dist/cli/commands/dev.js +384 -0
- package/dist/cli/commands/diagram.d.ts +13 -0
- package/dist/cli/commands/diagram.js +33 -0
- package/dist/cli/commands/diff.d.ts +11 -0
- package/dist/cli/commands/diff.js +59 -0
- package/dist/cli/commands/doctor.d.ts +57 -0
- package/dist/cli/commands/doctor.js +719 -0
- package/dist/cli/commands/export.d.ts +57 -0
- package/dist/cli/commands/export.js +163 -0
- package/dist/cli/commands/grammar.d.ts +9 -0
- package/dist/cli/commands/grammar.js +39 -0
- package/dist/cli/commands/init.d.ts +59 -0
- package/dist/cli/commands/init.js +435 -0
- package/dist/cli/commands/listen.d.ts +16 -0
- package/dist/cli/commands/listen.js +39 -0
- package/dist/cli/commands/market.d.ts +52 -0
- package/dist/cli/commands/market.js +436 -0
- package/dist/cli/commands/migrate.d.ts +13 -0
- package/dist/cli/commands/migrate.js +89 -0
- package/dist/cli/commands/openapi.d.ts +37 -0
- package/dist/cli/commands/openapi.js +67 -0
- package/dist/cli/commands/pattern.d.ts +34 -0
- package/dist/cli/commands/pattern.js +185 -0
- package/dist/cli/commands/plugin.d.ts +16 -0
- package/dist/cli/commands/plugin.js +176 -0
- package/dist/cli/commands/run.d.ts +49 -0
- package/dist/cli/commands/run.js +191 -0
- package/dist/cli/commands/serve.d.ts +45 -0
- package/dist/cli/commands/serve.js +81 -0
- package/dist/cli/commands/templates.d.ts +8 -0
- package/dist/cli/commands/templates.js +54 -0
- package/dist/cli/commands/ui.d.ts +16 -0
- package/dist/cli/commands/ui.js +130 -0
- package/dist/cli/commands/validate.d.ts +12 -0
- package/dist/cli/commands/validate.js +247 -0
- package/dist/cli/commands/watch.d.ts +9 -0
- package/dist/cli/commands/watch.js +70 -0
- package/dist/cli/flow-weaver.mjs +92924 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.js +742 -0
- package/dist/cli/templates/ai/mock-provider.d.ts +7 -0
- package/dist/cli/templates/ai/mock-provider.js +64 -0
- package/dist/cli/templates/ai/types.d.ts +47 -0
- package/dist/cli/templates/ai/types.js +5 -0
- package/dist/cli/templates/approvals/index.d.ts +15 -0
- package/dist/cli/templates/approvals/index.js +241 -0
- package/dist/cli/templates/index.d.ts +102 -0
- package/dist/cli/templates/index.js +101 -0
- package/dist/cli/templates/nodes/agent-router.d.ts +3 -0
- package/dist/cli/templates/nodes/agent-router.js +114 -0
- package/dist/cli/templates/nodes/aggregator.d.ts +7 -0
- package/dist/cli/templates/nodes/aggregator.js +63 -0
- package/dist/cli/templates/nodes/conversation-memory.d.ts +3 -0
- package/dist/cli/templates/nodes/conversation-memory.js +85 -0
- package/dist/cli/templates/nodes/http.d.ts +7 -0
- package/dist/cli/templates/nodes/http.js +80 -0
- package/dist/cli/templates/nodes/human-approval.d.ts +3 -0
- package/dist/cli/templates/nodes/human-approval.js +110 -0
- package/dist/cli/templates/nodes/json-extractor.d.ts +3 -0
- package/dist/cli/templates/nodes/json-extractor.js +119 -0
- package/dist/cli/templates/nodes/llm-call.d.ts +3 -0
- package/dist/cli/templates/nodes/llm-call.js +106 -0
- package/dist/cli/templates/nodes/prompt-template.d.ts +3 -0
- package/dist/cli/templates/nodes/prompt-template.js +52 -0
- package/dist/cli/templates/nodes/rag-retriever.d.ts +3 -0
- package/dist/cli/templates/nodes/rag-retriever.js +128 -0
- package/dist/cli/templates/nodes/tool-executor.d.ts +3 -0
- package/dist/cli/templates/nodes/tool-executor.js +108 -0
- package/dist/cli/templates/nodes/transformer.d.ts +7 -0
- package/dist/cli/templates/nodes/transformer.js +68 -0
- package/dist/cli/templates/nodes/validator.d.ts +7 -0
- package/dist/cli/templates/nodes/validator.js +62 -0
- package/dist/cli/templates/providers/index.d.ts +14 -0
- package/dist/cli/templates/providers/index.js +239 -0
- package/dist/cli/templates/shared/approval-types.d.ts +9 -0
- package/dist/cli/templates/shared/approval-types.js +31 -0
- package/dist/cli/templates/shared/llm-types.d.ts +15 -0
- package/dist/cli/templates/shared/llm-types.js +104 -0
- package/dist/cli/templates/workflows/aggregator.d.ts +7 -0
- package/dist/cli/templates/workflows/aggregator.js +104 -0
- package/dist/cli/templates/workflows/ai-agent-durable.d.ts +8 -0
- package/dist/cli/templates/workflows/ai-agent-durable.js +338 -0
- package/dist/cli/templates/workflows/ai-agent.d.ts +31 -0
- package/dist/cli/templates/workflows/ai-agent.js +326 -0
- package/dist/cli/templates/workflows/ai-chat.d.ts +7 -0
- package/dist/cli/templates/workflows/ai-chat.js +169 -0
- package/dist/cli/templates/workflows/ai-pipeline-durable.d.ts +8 -0
- package/dist/cli/templates/workflows/ai-pipeline-durable.js +330 -0
- package/dist/cli/templates/workflows/ai-rag.d.ts +7 -0
- package/dist/cli/templates/workflows/ai-rag.js +186 -0
- package/dist/cli/templates/workflows/ai-react.d.ts +7 -0
- package/dist/cli/templates/workflows/ai-react.js +294 -0
- package/dist/cli/templates/workflows/conditional.d.ts +12 -0
- package/dist/cli/templates/workflows/conditional.js +142 -0
- package/dist/cli/templates/workflows/error-handler.d.ts +7 -0
- package/dist/cli/templates/workflows/error-handler.js +147 -0
- package/dist/cli/templates/workflows/foreach.d.ts +7 -0
- package/dist/cli/templates/workflows/foreach.js +143 -0
- package/dist/cli/templates/workflows/sequential.d.ts +7 -0
- package/dist/cli/templates/workflows/sequential.js +198 -0
- package/dist/cli/templates/workflows/webhook.d.ts +7 -0
- package/dist/cli/templates/workflows/webhook.js +161 -0
- package/dist/cli/utils/logger.d.ts +15 -0
- package/dist/cli/utils/logger.js +46 -0
- package/dist/constants.d.ts +100 -0
- package/dist/constants.js +125 -0
- package/dist/defaults.d.ts +3 -0
- package/dist/defaults.js +3 -0
- package/dist/deployment/config/defaults.d.ts +29 -0
- package/dist/deployment/config/defaults.js +98 -0
- package/dist/deployment/config/loader.d.ts +24 -0
- package/dist/deployment/config/loader.js +236 -0
- package/dist/deployment/config/types.d.ts +117 -0
- package/dist/deployment/config/types.js +5 -0
- package/dist/deployment/core/adapters.d.ts +90 -0
- package/dist/deployment/core/adapters.js +251 -0
- package/dist/deployment/core/executor.d.ts +62 -0
- package/dist/deployment/core/executor.js +197 -0
- package/dist/deployment/core/formatters.d.ts +57 -0
- package/dist/deployment/core/formatters.js +170 -0
- package/dist/deployment/index.d.ts +31 -0
- package/dist/deployment/index.js +48 -0
- package/dist/deployment/openapi/generator.d.ts +146 -0
- package/dist/deployment/openapi/generator.js +347 -0
- package/dist/deployment/openapi/schema-converter.d.ts +49 -0
- package/dist/deployment/openapi/schema-converter.js +192 -0
- package/dist/deployment/targets/base.d.ts +316 -0
- package/dist/deployment/targets/base.js +823 -0
- package/dist/deployment/targets/cloudflare.d.ts +23 -0
- package/dist/deployment/targets/cloudflare.js +1125 -0
- package/dist/deployment/targets/inngest.d.ts +38 -0
- package/dist/deployment/targets/inngest.js +926 -0
- package/dist/deployment/targets/lambda.d.ts +23 -0
- package/dist/deployment/targets/lambda.js +1289 -0
- package/dist/deployment/targets/vercel.d.ts +23 -0
- package/dist/deployment/targets/vercel.js +886 -0
- package/dist/deployment/types.d.ts +183 -0
- package/dist/deployment/types.js +8 -0
- package/dist/diagram/geometry.d.ts +26 -0
- package/dist/diagram/geometry.js +850 -0
- package/dist/diagram/index.d.ts +16 -0
- package/dist/diagram/index.js +42 -0
- package/dist/diagram/layout.d.ts +11 -0
- package/dist/diagram/layout.js +143 -0
- package/dist/diagram/orthogonal-router.d.ts +79 -0
- package/dist/diagram/orthogonal-router.js +568 -0
- package/dist/diagram/renderer.d.ts +3 -0
- package/dist/diagram/renderer.js +207 -0
- package/dist/diagram/theme.d.ts +20 -0
- package/dist/diagram/theme.js +189 -0
- package/dist/diagram/types.d.ts +70 -0
- package/dist/diagram/types.js +2 -0
- package/dist/diff/WorkflowDiffer.d.ts +13 -0
- package/dist/diff/WorkflowDiffer.js +429 -0
- package/dist/diff/formatDiff.d.ts +10 -0
- package/dist/diff/formatDiff.js +220 -0
- package/dist/diff/impact.d.ts +29 -0
- package/dist/diff/impact.js +119 -0
- package/dist/diff/index.d.ts +10 -0
- package/dist/diff/index.js +9 -0
- package/dist/diff/types.d.ts +138 -0
- package/dist/diff/types.js +35 -0
- package/dist/doc-metadata/extractors/annotations.d.ts +56 -0
- package/dist/doc-metadata/extractors/annotations.js +337 -0
- package/dist/doc-metadata/extractors/cli-commands.d.ts +17 -0
- package/dist/doc-metadata/extractors/cli-commands.js +355 -0
- package/dist/doc-metadata/extractors/mcp-tools.d.ts +16 -0
- package/dist/doc-metadata/extractors/mcp-tools.js +689 -0
- package/dist/doc-metadata/extractors/plugin-api.d.ts +19 -0
- package/dist/doc-metadata/extractors/plugin-api.js +279 -0
- package/dist/doc-metadata/index.d.ts +5 -0
- package/dist/doc-metadata/index.js +4 -0
- package/dist/doc-metadata/types.d.ts +120 -0
- package/dist/doc-metadata/types.js +5 -0
- package/dist/editor-completions/annotationValues.d.ts +12 -0
- package/dist/editor-completions/annotationValues.js +138 -0
- package/dist/editor-completions/contextParser.d.ts +40 -0
- package/dist/editor-completions/contextParser.js +410 -0
- package/dist/editor-completions/dataTypes.d.ts +16 -0
- package/dist/editor-completions/dataTypes.js +95 -0
- package/dist/editor-completions/goToDefinition.d.ts +27 -0
- package/dist/editor-completions/goToDefinition.js +112 -0
- package/dist/editor-completions/index.d.ts +39 -0
- package/dist/editor-completions/index.js +181 -0
- package/dist/editor-completions/jsDocAnnotations.d.ts +29 -0
- package/dist/editor-completions/jsDocAnnotations.js +357 -0
- package/dist/editor-completions/modifierCompletions.d.ts +17 -0
- package/dist/editor-completions/modifierCompletions.js +197 -0
- package/dist/editor-completions/types.d.ts +119 -0
- package/dist/editor-completions/types.js +8 -0
- package/dist/export/index.d.ts +68 -0
- package/dist/export/index.js +1074 -0
- package/dist/export/templates.d.ts +24 -0
- package/dist/export/templates.js +186 -0
- package/dist/friendly-errors.d.ts +35 -0
- package/dist/friendly-errors.js +375 -0
- package/dist/function-like.d.ts +38 -0
- package/dist/function-like.js +83 -0
- package/dist/generated-branding.d.ts +16 -0
- package/dist/generated-branding.js +22 -0
- package/dist/generator/async-detection.d.ts +27 -0
- package/dist/generator/async-detection.js +56 -0
- package/dist/generator/code-utils.d.ts +76 -0
- package/dist/generator/code-utils.js +410 -0
- package/dist/generator/control-flow.d.ts +54 -0
- package/dist/generator/control-flow.js +284 -0
- package/dist/generator/inngest.d.ts +53 -0
- package/dist/generator/inngest.js +1126 -0
- package/dist/generator/scope-function-generator.d.ts +78 -0
- package/dist/generator/scope-function-generator.js +360 -0
- package/dist/generator/unified.d.ts +42 -0
- package/dist/generator/unified.js +1504 -0
- package/dist/generator.d.ts +54 -0
- package/dist/generator.js +100 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.js +89 -0
- package/dist/jsdoc-parser.d.ts +308 -0
- package/dist/jsdoc-parser.js +923 -0
- package/dist/jsdoc-port-sync/constants.d.ts +41 -0
- package/dist/jsdoc-port-sync/constants.js +103 -0
- package/dist/jsdoc-port-sync/diff.d.ts +76 -0
- package/dist/jsdoc-port-sync/diff.js +319 -0
- package/dist/jsdoc-port-sync/index.d.ts +42 -0
- package/dist/jsdoc-port-sync/index.js +45 -0
- package/dist/jsdoc-port-sync/port-parser.d.ts +68 -0
- package/dist/jsdoc-port-sync/port-parser.js +579 -0
- package/dist/jsdoc-port-sync/rename.d.ts +21 -0
- package/dist/jsdoc-port-sync/rename.js +256 -0
- package/dist/jsdoc-port-sync/signature-parser.d.ts +104 -0
- package/dist/jsdoc-port-sync/signature-parser.js +559 -0
- package/dist/jsdoc-port-sync/sync.d.ts +36 -0
- package/dist/jsdoc-port-sync/sync.js +644 -0
- package/dist/jsdoc-port-sync.d.ts +10 -0
- package/dist/jsdoc-port-sync.js +10 -0
- package/dist/marketplace/index.d.ts +11 -0
- package/dist/marketplace/index.js +10 -0
- package/dist/marketplace/manifest.d.ts +32 -0
- package/dist/marketplace/manifest.js +176 -0
- package/dist/marketplace/registry.d.ts +30 -0
- package/dist/marketplace/registry.js +100 -0
- package/dist/marketplace/types.d.ts +154 -0
- package/dist/marketplace/types.js +9 -0
- package/dist/marketplace/validator.d.ts +13 -0
- package/dist/marketplace/validator.js +131 -0
- package/dist/mcp/auto-registration.d.ts +3 -0
- package/dist/mcp/auto-registration.js +62 -0
- package/dist/mcp/editor-connection.d.ts +50 -0
- package/dist/mcp/editor-connection.js +125 -0
- package/dist/mcp/event-buffer.d.ts +62 -0
- package/dist/mcp/event-buffer.js +150 -0
- package/dist/mcp/index.d.ts +12 -0
- package/dist/mcp/index.js +11 -0
- package/dist/mcp/resources.d.ts +14 -0
- package/dist/mcp/resources.js +55 -0
- package/dist/mcp/response-utils.d.ts +63 -0
- package/dist/mcp/response-utils.js +89 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.js +99 -0
- package/dist/mcp/tools-diagram.d.ts +8 -0
- package/dist/mcp/tools-diagram.js +53 -0
- package/dist/mcp/tools-editor.d.ts +5 -0
- package/dist/mcp/tools-editor.js +190 -0
- package/dist/mcp/tools-export.d.ts +9 -0
- package/dist/mcp/tools-export.js +180 -0
- package/dist/mcp/tools-marketplace.d.ts +9 -0
- package/dist/mcp/tools-marketplace.js +132 -0
- package/dist/mcp/tools-pattern.d.ts +3 -0
- package/dist/mcp/tools-pattern.js +783 -0
- package/dist/mcp/tools-query.d.ts +3 -0
- package/dist/mcp/tools-query.js +364 -0
- package/dist/mcp/tools-template.d.ts +10 -0
- package/dist/mcp/tools-template.js +119 -0
- package/dist/mcp/types.d.ts +70 -0
- package/dist/mcp/types.js +8 -0
- package/dist/mcp/workflow-executor.d.ts +47 -0
- package/dist/mcp/workflow-executor.js +133 -0
- package/dist/migration/registry.d.ts +30 -0
- package/dist/migration/registry.js +29 -0
- package/dist/node-types-generator.d.ts +49 -0
- package/dist/node-types-generator.js +139 -0
- package/dist/npm-packages.d.ts +56 -0
- package/dist/npm-packages.js +255 -0
- package/dist/parser.d.ts +204 -0
- package/dist/parser.js +2100 -0
- package/dist/plugin/PluginPanel.d.ts +12 -0
- package/dist/plugin/PluginPanel.js +5 -0
- package/dist/plugin/index.d.ts +13 -0
- package/dist/plugin/index.js +14 -0
- package/dist/plugin/types.d.ts +75 -0
- package/dist/plugin/types.js +8 -0
- package/dist/resolve-package-types.d.ts +17 -0
- package/dist/resolve-package-types.js +123 -0
- package/dist/runtime/CancellationError.d.ts +11 -0
- package/dist/runtime/CancellationError.js +20 -0
- package/dist/runtime/ExecutionContext.d.ts +146 -0
- package/dist/runtime/ExecutionContext.js +235 -0
- package/dist/runtime/builtin-functions.d.ts +8 -0
- package/dist/runtime/builtin-functions.js +549 -0
- package/dist/runtime/events.d.ts +50 -0
- package/dist/runtime/events.js +2 -0
- package/dist/runtime/function-registry.d.ts +59 -0
- package/dist/runtime/function-registry.js +66 -0
- package/dist/runtime/index.d.ts +7 -0
- package/dist/runtime/index.js +7 -0
- package/dist/runtime/parameter-resolver.d.ts +62 -0
- package/dist/runtime/parameter-resolver.js +113 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.js +6 -0
- package/dist/server/types.d.ts +93 -0
- package/dist/server/types.js +5 -0
- package/dist/server/webhook-server.d.ts +50 -0
- package/dist/server/webhook-server.js +269 -0
- package/dist/server/workflow-registry.d.ts +61 -0
- package/dist/server/workflow-registry.js +202 -0
- package/dist/shared-project.d.ts +9 -0
- package/dist/shared-project.js +28 -0
- package/dist/sugar-optimizer.d.ts +40 -0
- package/dist/sugar-optimizer.js +387 -0
- package/dist/testing/assertions.d.ts +51 -0
- package/dist/testing/assertions.js +127 -0
- package/dist/testing/index.d.ts +30 -0
- package/dist/testing/index.js +24 -0
- package/dist/testing/mock-approval.d.ts +81 -0
- package/dist/testing/mock-approval.js +98 -0
- package/dist/testing/mock-llm.d.ts +124 -0
- package/dist/testing/mock-llm.js +119 -0
- package/dist/testing/recorder.d.ts +72 -0
- package/dist/testing/recorder.js +70 -0
- package/dist/testing/replayer.d.ts +56 -0
- package/dist/testing/replayer.js +143 -0
- package/dist/testing/token-tracker.d.ts +71 -0
- package/dist/testing/token-tracker.js +94 -0
- package/dist/type-checker.d.ts +42 -0
- package/dist/type-checker.js +190 -0
- package/dist/type-mappings.d.ts +29 -0
- package/dist/type-mappings.js +125 -0
- package/dist/types/branded-ports.d.ts +151 -0
- package/dist/types/branded-ports.js +121 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +5 -0
- package/dist/types.d.ts +139 -0
- package/dist/types.js +15 -0
- package/dist/utils/error-utils.d.ts +15 -0
- package/dist/utils/error-utils.js +27 -0
- package/dist/utils/lru-cache.d.ts +15 -0
- package/dist/utils/lru-cache.js +40 -0
- package/dist/utils/port-ordering.d.ts +26 -0
- package/dist/utils/port-ordering.js +88 -0
- package/dist/utils/port-tag-utils.d.ts +23 -0
- package/dist/utils/port-tag-utils.js +41 -0
- package/dist/utils/string-distance.d.ts +14 -0
- package/dist/utils/string-distance.js +56 -0
- package/dist/validation/agent-detection.d.ts +33 -0
- package/dist/validation/agent-detection.js +115 -0
- package/dist/validation/agent-rules.d.ts +48 -0
- package/dist/validation/agent-rules.js +262 -0
- package/dist/validator.d.ts +92 -0
- package/dist/validator.js +970 -0
- package/package.json +109 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builder API for fluent workflow construction
|
|
3
|
+
* Provides chainable methods for creating workflows programmatically
|
|
4
|
+
*/
|
|
5
|
+
import type { TWorkflowAST, TNodeTypeAST, TNodeInstanceAST, TPortDefinition, TPortReference } from "../ast/types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Fluent builder for constructing workflows programmatically
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const workflow = new WorkflowBuilder('myWorkflow')
|
|
12
|
+
* .addStartPort('input', { dataType: 'NUMBER' })
|
|
13
|
+
* .addExitPort('output', { dataType: 'NUMBER' })
|
|
14
|
+
* .addNodeType({
|
|
15
|
+
* type: 'NodeType',
|
|
16
|
+
* name: 'double',
|
|
17
|
+
* functionName: 'double',
|
|
18
|
+
* inputs: { x: { dataType: 'NUMBER' } },
|
|
19
|
+
* outputs: { result: { dataType: 'NUMBER' } },
|
|
20
|
+
* hasSuccessPort: true,
|
|
21
|
+
* hasFailurePort: true,
|
|
22
|
+
* executeWhen: 'CONJUNCTION'
|
|
23
|
+
* })
|
|
24
|
+
* .addNode('doubler', 'double')
|
|
25
|
+
* .connect('Start.input', 'doubler.x')
|
|
26
|
+
* .connect('doubler.result', 'Exit.output')
|
|
27
|
+
* .build();
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare class WorkflowBuilder {
|
|
31
|
+
private ast;
|
|
32
|
+
/**
|
|
33
|
+
* Create a new workflow builder
|
|
34
|
+
*
|
|
35
|
+
* @param name - Workflow name (also used as functionName)
|
|
36
|
+
* @param sourceFile - Optional source file path
|
|
37
|
+
*/
|
|
38
|
+
constructor(name: string, sourceFile?: string);
|
|
39
|
+
/**
|
|
40
|
+
* Add a Start port to the workflow
|
|
41
|
+
*
|
|
42
|
+
* @param name - Port name
|
|
43
|
+
* @param definition - Port definition
|
|
44
|
+
* @returns This builder for chaining
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* builder.addStartPort('userId', { dataType: 'STRING' });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
addStartPort(name: string, definition: TPortDefinition): this;
|
|
52
|
+
/**
|
|
53
|
+
* Add an Exit port to the workflow
|
|
54
|
+
*
|
|
55
|
+
* @param name - Port name
|
|
56
|
+
* @param definition - Port definition
|
|
57
|
+
* @returns This builder for chaining
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* builder.addExitPort('result', { dataType: 'NUMBER' });
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
addExitPort(name: string, definition: TPortDefinition): this;
|
|
65
|
+
/**
|
|
66
|
+
* Add a node type definition
|
|
67
|
+
*
|
|
68
|
+
* @param nodeType - Complete node type definition
|
|
69
|
+
* @returns This builder for chaining
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* builder.addNodeType({
|
|
74
|
+
* type: 'NodeType',
|
|
75
|
+
* name: 'processor',
|
|
76
|
+
* functionName: 'process',
|
|
77
|
+
* inputs: { data: { dataType: 'ANY' } },
|
|
78
|
+
* outputs: { result: { dataType: 'ANY' } },
|
|
79
|
+
* hasSuccessPort: true,
|
|
80
|
+
* hasFailurePort: true,
|
|
81
|
+
* executeWhen: 'CONJUNCTION'
|
|
82
|
+
* });
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
addNodeType(nodeType: TNodeTypeAST): this;
|
|
86
|
+
/**
|
|
87
|
+
* Add a node instance
|
|
88
|
+
*
|
|
89
|
+
* @param id - Node instance ID
|
|
90
|
+
* @param nodeType - Node type (functionName)
|
|
91
|
+
* @param config - Optional node configuration
|
|
92
|
+
* @returns This builder for chaining
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* builder.addNode('processor1', 'process');
|
|
97
|
+
* builder.addNode('processor2', 'process', { x: 100, y: 200, label: 'Main' });
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
addNode(id: string, nodeType: string, config?: TNodeInstanceAST["config"]): this;
|
|
101
|
+
/**
|
|
102
|
+
* Connect two ports
|
|
103
|
+
*
|
|
104
|
+
* Supports multiple formats:
|
|
105
|
+
* - String format: "node1.port1", "node2.port2"
|
|
106
|
+
* - Object format: { node: "node1", port: "port1" }
|
|
107
|
+
*
|
|
108
|
+
* @param from - Source port reference
|
|
109
|
+
* @param to - Target port reference
|
|
110
|
+
* @returns This builder for chaining
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* builder.connect('Start.input', 'processor1.data');
|
|
115
|
+
* builder.connect({ node: 'processor1', port: 'result' }, 'Exit.output');
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
connect(from: string | TPortReference, to: string | TPortReference): this;
|
|
119
|
+
/**
|
|
120
|
+
* Create a scope and add nodes to it
|
|
121
|
+
*
|
|
122
|
+
* @param scopeName - Name of the scope
|
|
123
|
+
* @param nodeIds - Array of node IDs to include
|
|
124
|
+
* @returns This builder for chaining
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* builder.createScope('mainLoop', ['processor1', 'processor2']);
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
createScope(scopeName: string, nodeIds: string[]): this;
|
|
132
|
+
/**
|
|
133
|
+
* Set workflow description
|
|
134
|
+
*
|
|
135
|
+
* @param description - Workflow description
|
|
136
|
+
* @returns This builder for chaining
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* builder.setDescription('Processes user data and generates reports');
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
setDescription(description: string): this;
|
|
144
|
+
/**
|
|
145
|
+
* Validate the current workflow state
|
|
146
|
+
*
|
|
147
|
+
* @returns Validation result
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* const validation = builder.validate();
|
|
152
|
+
* if (!validation.valid) {
|
|
153
|
+
* console.error('Errors:', validation.errors);
|
|
154
|
+
* }
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
validate(): import("./validate.js").ValidationResult;
|
|
158
|
+
/**
|
|
159
|
+
* Build and return the final workflow
|
|
160
|
+
*
|
|
161
|
+
* Validates the workflow before returning. Throws if invalid.
|
|
162
|
+
*
|
|
163
|
+
* @returns Complete workflow AST
|
|
164
|
+
* @throws {Error} If workflow validation fails
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* const workflow = builder.build();
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
build(): TWorkflowAST;
|
|
172
|
+
/**
|
|
173
|
+
* Get the current workflow state without validation
|
|
174
|
+
*
|
|
175
|
+
* Use this to inspect the workflow during construction.
|
|
176
|
+
*
|
|
177
|
+
* @returns Current workflow AST
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* const current = builder.getWorkflow();
|
|
182
|
+
* console.log(`Nodes: ${current.instances.length}`);
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
getWorkflow(): TWorkflowAST;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Create a new workflow builder
|
|
189
|
+
*
|
|
190
|
+
* Convenience function for creating a builder instance.
|
|
191
|
+
*
|
|
192
|
+
* @param name - Workflow name
|
|
193
|
+
* @param sourceFile - Optional source file path
|
|
194
|
+
* @returns New WorkflowBuilder instance
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```typescript
|
|
198
|
+
* const workflow = createWorkflow('myWorkflow')
|
|
199
|
+
* .addStartPort('input', { dataType: 'NUMBER' })
|
|
200
|
+
* .addExitPort('output', { dataType: 'NUMBER' })
|
|
201
|
+
* .build();
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
export declare function createWorkflow(name: string, sourceFile?: string): WorkflowBuilder;
|
|
205
|
+
/**
|
|
206
|
+
* Create a builder from an existing workflow AST
|
|
207
|
+
*
|
|
208
|
+
* Allows modifying existing workflows using the builder API.
|
|
209
|
+
*
|
|
210
|
+
* @param ast - Existing workflow AST
|
|
211
|
+
* @returns WorkflowBuilder initialized with the AST
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```typescript
|
|
215
|
+
* const existingWorkflow = parseWorkflow(source);
|
|
216
|
+
* const modified = fromAST(existingWorkflow)
|
|
217
|
+
* .addNode('newNode', 'process')
|
|
218
|
+
* .connect('Start.input', 'newNode.data')
|
|
219
|
+
* .build();
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
export declare function fromAST(ast: TWorkflowAST): WorkflowBuilder;
|
|
223
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builder API for fluent workflow construction
|
|
3
|
+
* Provides chainable methods for creating workflows programmatically
|
|
4
|
+
*/
|
|
5
|
+
import { produce } from "immer";
|
|
6
|
+
import { validateWorkflow } from "./validate.js";
|
|
7
|
+
import { validatePortReference } from "./helpers.js";
|
|
8
|
+
/**
|
|
9
|
+
* Fluent builder for constructing workflows programmatically
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const workflow = new WorkflowBuilder('myWorkflow')
|
|
14
|
+
* .addStartPort('input', { dataType: 'NUMBER' })
|
|
15
|
+
* .addExitPort('output', { dataType: 'NUMBER' })
|
|
16
|
+
* .addNodeType({
|
|
17
|
+
* type: 'NodeType',
|
|
18
|
+
* name: 'double',
|
|
19
|
+
* functionName: 'double',
|
|
20
|
+
* inputs: { x: { dataType: 'NUMBER' } },
|
|
21
|
+
* outputs: { result: { dataType: 'NUMBER' } },
|
|
22
|
+
* hasSuccessPort: true,
|
|
23
|
+
* hasFailurePort: true,
|
|
24
|
+
* executeWhen: 'CONJUNCTION'
|
|
25
|
+
* })
|
|
26
|
+
* .addNode('doubler', 'double')
|
|
27
|
+
* .connect('Start.input', 'doubler.x')
|
|
28
|
+
* .connect('doubler.result', 'Exit.output')
|
|
29
|
+
* .build();
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export class WorkflowBuilder {
|
|
33
|
+
ast;
|
|
34
|
+
/**
|
|
35
|
+
* Create a new workflow builder
|
|
36
|
+
*
|
|
37
|
+
* @param name - Workflow name (also used as functionName)
|
|
38
|
+
* @param sourceFile - Optional source file path
|
|
39
|
+
*/
|
|
40
|
+
constructor(name, sourceFile = `${name}.ts`) {
|
|
41
|
+
this.ast = {
|
|
42
|
+
type: "Workflow",
|
|
43
|
+
name,
|
|
44
|
+
functionName: name,
|
|
45
|
+
sourceFile,
|
|
46
|
+
nodeTypes: [],
|
|
47
|
+
instances: [],
|
|
48
|
+
connections: [],
|
|
49
|
+
scopes: {},
|
|
50
|
+
startPorts: {},
|
|
51
|
+
exitPorts: {},
|
|
52
|
+
imports: [],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Add a Start port to the workflow
|
|
57
|
+
*
|
|
58
|
+
* @param name - Port name
|
|
59
|
+
* @param definition - Port definition
|
|
60
|
+
* @returns This builder for chaining
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* builder.addStartPort('userId', { dataType: 'STRING' });
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
addStartPort(name, definition) {
|
|
68
|
+
// Use simplified type to avoid excessive type instantiation
|
|
69
|
+
this.ast = produce(this.ast, (draft) => {
|
|
70
|
+
draft.startPorts[name] = definition;
|
|
71
|
+
});
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Add an Exit port to the workflow
|
|
76
|
+
*
|
|
77
|
+
* @param name - Port name
|
|
78
|
+
* @param definition - Port definition
|
|
79
|
+
* @returns This builder for chaining
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* builder.addExitPort('result', { dataType: 'NUMBER' });
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
addExitPort(name, definition) {
|
|
87
|
+
// Use simplified type to avoid excessive type instantiation
|
|
88
|
+
this.ast = produce(this.ast, (draft) => {
|
|
89
|
+
draft.exitPorts[name] = definition;
|
|
90
|
+
});
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Add a node type definition
|
|
95
|
+
*
|
|
96
|
+
* @param nodeType - Complete node type definition
|
|
97
|
+
* @returns This builder for chaining
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* builder.addNodeType({
|
|
102
|
+
* type: 'NodeType',
|
|
103
|
+
* name: 'processor',
|
|
104
|
+
* functionName: 'process',
|
|
105
|
+
* inputs: { data: { dataType: 'ANY' } },
|
|
106
|
+
* outputs: { result: { dataType: 'ANY' } },
|
|
107
|
+
* hasSuccessPort: true,
|
|
108
|
+
* hasFailurePort: true,
|
|
109
|
+
* executeWhen: 'CONJUNCTION'
|
|
110
|
+
* });
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
addNodeType(nodeType) {
|
|
114
|
+
// Validate before produce to avoid type instantiation issues
|
|
115
|
+
if (this.ast.nodeTypes.some((nt) => nt.name === nodeType.name)) {
|
|
116
|
+
throw new Error(`Node type "${nodeType.name}" already exists`);
|
|
117
|
+
}
|
|
118
|
+
// Use simplified type to avoid excessive type instantiation
|
|
119
|
+
this.ast = produce(this.ast, (draft) => {
|
|
120
|
+
draft.nodeTypes.push(nodeType);
|
|
121
|
+
});
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Add a node instance
|
|
126
|
+
*
|
|
127
|
+
* @param id - Node instance ID
|
|
128
|
+
* @param nodeType - Node type (functionName)
|
|
129
|
+
* @param config - Optional node configuration
|
|
130
|
+
* @returns This builder for chaining
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* builder.addNode('processor1', 'process');
|
|
135
|
+
* builder.addNode('processor2', 'process', { x: 100, y: 200, label: 'Main' });
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
addNode(id, nodeType, config) {
|
|
139
|
+
// Validate before produce to avoid type instantiation issues
|
|
140
|
+
if (this.ast.instances.some((n) => n.id === id)) {
|
|
141
|
+
throw new Error(`Node "${id}" already exists`);
|
|
142
|
+
}
|
|
143
|
+
if (!this.ast.nodeTypes.some((nt) => nt.name === nodeType || nt.functionName === nodeType)) {
|
|
144
|
+
throw new Error(`Node type "${nodeType}" not found. Available types: ${this.ast.nodeTypes.map((nt) => nt.name || nt.functionName).join(", ")}`);
|
|
145
|
+
}
|
|
146
|
+
const node = {
|
|
147
|
+
type: "NodeInstance",
|
|
148
|
+
id,
|
|
149
|
+
nodeType,
|
|
150
|
+
};
|
|
151
|
+
if (config) {
|
|
152
|
+
node.config = config;
|
|
153
|
+
}
|
|
154
|
+
// Use simplified type to avoid excessive type instantiation
|
|
155
|
+
this.ast = produce(this.ast, (draft) => {
|
|
156
|
+
draft.instances.push(node);
|
|
157
|
+
});
|
|
158
|
+
return this;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Connect two ports
|
|
162
|
+
*
|
|
163
|
+
* Supports multiple formats:
|
|
164
|
+
* - String format: "node1.port1", "node2.port2"
|
|
165
|
+
* - Object format: { node: "node1", port: "port1" }
|
|
166
|
+
*
|
|
167
|
+
* @param from - Source port reference
|
|
168
|
+
* @param to - Target port reference
|
|
169
|
+
* @returns This builder for chaining
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* builder.connect('Start.input', 'processor1.data');
|
|
174
|
+
* builder.connect({ node: 'processor1', port: 'result' }, 'Exit.output');
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
connect(from, to) {
|
|
178
|
+
const fromRef = validatePortReference(from);
|
|
179
|
+
const toRef = validatePortReference(to);
|
|
180
|
+
const connection = {
|
|
181
|
+
type: "Connection",
|
|
182
|
+
from: fromRef,
|
|
183
|
+
to: toRef,
|
|
184
|
+
};
|
|
185
|
+
// Use simplified type to avoid excessive type instantiation
|
|
186
|
+
this.ast = produce(this.ast, (draft) => {
|
|
187
|
+
draft.connections.push(connection);
|
|
188
|
+
});
|
|
189
|
+
return this;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Create a scope and add nodes to it
|
|
193
|
+
*
|
|
194
|
+
* @param scopeName - Name of the scope
|
|
195
|
+
* @param nodeIds - Array of node IDs to include
|
|
196
|
+
* @returns This builder for chaining
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```typescript
|
|
200
|
+
* builder.createScope('mainLoop', ['processor1', 'processor2']);
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
createScope(scopeName, nodeIds) {
|
|
204
|
+
// Validate before produce
|
|
205
|
+
if (this.ast.scopes && this.ast.scopes[scopeName]) {
|
|
206
|
+
throw new Error(`Scope "${scopeName}" already exists`);
|
|
207
|
+
}
|
|
208
|
+
// scopeName format is "parentNodeId.scopeName"
|
|
209
|
+
const dotIndex = scopeName.indexOf('.');
|
|
210
|
+
const parentNodeName = dotIndex > 0 ? scopeName.substring(0, dotIndex) : scopeName;
|
|
211
|
+
const scope = dotIndex > 0 ? scopeName.substring(dotIndex + 1) : '';
|
|
212
|
+
// Use simplified type to avoid excessive type instantiation
|
|
213
|
+
this.ast = produce(this.ast, (draft) => {
|
|
214
|
+
if (!draft.scopes) {
|
|
215
|
+
draft.scopes = {};
|
|
216
|
+
}
|
|
217
|
+
draft.scopes[scopeName] = nodeIds;
|
|
218
|
+
nodeIds.forEach((nodeId) => {
|
|
219
|
+
const node = draft.instances.find((n) => n.id === nodeId);
|
|
220
|
+
if (node) {
|
|
221
|
+
node.parent = { id: parentNodeName, scope };
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
return this;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Set workflow description
|
|
229
|
+
*
|
|
230
|
+
* @param description - Workflow description
|
|
231
|
+
* @returns This builder for chaining
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```typescript
|
|
235
|
+
* builder.setDescription('Processes user data and generates reports');
|
|
236
|
+
* ```
|
|
237
|
+
*/
|
|
238
|
+
setDescription(description) {
|
|
239
|
+
// Use simplified type to avoid excessive type instantiation
|
|
240
|
+
this.ast = produce(this.ast, (draft) => {
|
|
241
|
+
draft.description = description;
|
|
242
|
+
});
|
|
243
|
+
return this;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Validate the current workflow state
|
|
247
|
+
*
|
|
248
|
+
* @returns Validation result
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```typescript
|
|
252
|
+
* const validation = builder.validate();
|
|
253
|
+
* if (!validation.valid) {
|
|
254
|
+
* console.error('Errors:', validation.errors);
|
|
255
|
+
* }
|
|
256
|
+
* ```
|
|
257
|
+
*/
|
|
258
|
+
validate() {
|
|
259
|
+
return validateWorkflow(this.ast);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Build and return the final workflow
|
|
263
|
+
*
|
|
264
|
+
* Validates the workflow before returning. Throws if invalid.
|
|
265
|
+
*
|
|
266
|
+
* @returns Complete workflow AST
|
|
267
|
+
* @throws {Error} If workflow validation fails
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* ```typescript
|
|
271
|
+
* const workflow = builder.build();
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
build() {
|
|
275
|
+
const validation = this.validate();
|
|
276
|
+
if (!validation.valid) {
|
|
277
|
+
const errorDetails = validation.errors
|
|
278
|
+
.slice(0, 3)
|
|
279
|
+
.map((e) => ` - ${e.message}`)
|
|
280
|
+
.join("\n");
|
|
281
|
+
throw new Error(`Cannot build workflow: validation failed\n${errorDetails}${validation.errors.length > 3 ? `\n ... and ${validation.errors.length - 3} more errors` : ""}`);
|
|
282
|
+
}
|
|
283
|
+
return this.ast;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get the current workflow state without validation
|
|
287
|
+
*
|
|
288
|
+
* Use this to inspect the workflow during construction.
|
|
289
|
+
*
|
|
290
|
+
* @returns Current workflow AST
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* const current = builder.getWorkflow();
|
|
295
|
+
* console.log(`Nodes: ${current.instances.length}`);
|
|
296
|
+
* ```
|
|
297
|
+
*/
|
|
298
|
+
getWorkflow() {
|
|
299
|
+
return this.ast;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Create a new workflow builder
|
|
304
|
+
*
|
|
305
|
+
* Convenience function for creating a builder instance.
|
|
306
|
+
*
|
|
307
|
+
* @param name - Workflow name
|
|
308
|
+
* @param sourceFile - Optional source file path
|
|
309
|
+
* @returns New WorkflowBuilder instance
|
|
310
|
+
*
|
|
311
|
+
* @example
|
|
312
|
+
* ```typescript
|
|
313
|
+
* const workflow = createWorkflow('myWorkflow')
|
|
314
|
+
* .addStartPort('input', { dataType: 'NUMBER' })
|
|
315
|
+
* .addExitPort('output', { dataType: 'NUMBER' })
|
|
316
|
+
* .build();
|
|
317
|
+
* ```
|
|
318
|
+
*/
|
|
319
|
+
export function createWorkflow(name, sourceFile) {
|
|
320
|
+
return new WorkflowBuilder(name, sourceFile);
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Create a builder from an existing workflow AST
|
|
324
|
+
*
|
|
325
|
+
* Allows modifying existing workflows using the builder API.
|
|
326
|
+
*
|
|
327
|
+
* @param ast - Existing workflow AST
|
|
328
|
+
* @returns WorkflowBuilder initialized with the AST
|
|
329
|
+
*
|
|
330
|
+
* @example
|
|
331
|
+
* ```typescript
|
|
332
|
+
* const existingWorkflow = parseWorkflow(source);
|
|
333
|
+
* const modified = fromAST(existingWorkflow)
|
|
334
|
+
* .addNode('newNode', 'process')
|
|
335
|
+
* .connect('Start.input', 'newNode.data')
|
|
336
|
+
* .build();
|
|
337
|
+
* ```
|
|
338
|
+
*/
|
|
339
|
+
export function fromAST(ast) {
|
|
340
|
+
const builder = new WorkflowBuilder(ast.name, ast.sourceFile);
|
|
341
|
+
// Access private field through bracket notation to avoid exposing internal state
|
|
342
|
+
builder.ast = ast;
|
|
343
|
+
return builder;
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { TCompileResult as ASTCompileResult } from '../ast/types.js';
|
|
2
|
+
import { type GenerateOptions } from './generate.js';
|
|
3
|
+
import { type InPlaceGenerateOptions } from './generate-in-place.js';
|
|
4
|
+
import { type ParseOptions } from './parse.js';
|
|
5
|
+
/**
|
|
6
|
+
* Options for compiling a workflow file
|
|
7
|
+
*/
|
|
8
|
+
export interface CompileOptions {
|
|
9
|
+
/** Options for parsing the source file */
|
|
10
|
+
parse?: ParseOptions;
|
|
11
|
+
/** Options for code generation */
|
|
12
|
+
generate?: GenerateOptions & InPlaceGenerateOptions;
|
|
13
|
+
/**
|
|
14
|
+
* Compile in-place (modifies source file, default: true)
|
|
15
|
+
* When false, generates to a separate file
|
|
16
|
+
*/
|
|
17
|
+
inPlace?: boolean;
|
|
18
|
+
/** Custom output file path (only used when inPlace=false) */
|
|
19
|
+
outputFile?: string;
|
|
20
|
+
/** Whether to write the compiled code to disk (default: true) */
|
|
21
|
+
write?: boolean;
|
|
22
|
+
/** Whether to save AST alongside the generated file (default: false) */
|
|
23
|
+
saveAST?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Result of workflow compilation
|
|
27
|
+
*/
|
|
28
|
+
export type CompileResult = ASTCompileResult;
|
|
29
|
+
/**
|
|
30
|
+
* Compile a workflow file from TypeScript annotations to executable code.
|
|
31
|
+
*
|
|
32
|
+
* By default, compiles in-place (updates the source file with generated code).
|
|
33
|
+
* Set inPlace=false to generate to a separate file.
|
|
34
|
+
*
|
|
35
|
+
* @param filePath - Path to the workflow file
|
|
36
|
+
* @param options - Compilation options
|
|
37
|
+
* @returns CompileResult with code, AST, and metadata
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* // Compile in-place (default)
|
|
42
|
+
* const result = await compileWorkflow('./workflow.ts');
|
|
43
|
+
*
|
|
44
|
+
* // Generate to separate file for production
|
|
45
|
+
* const result = await compileWorkflow('./workflow.ts', {
|
|
46
|
+
* inPlace: false,
|
|
47
|
+
* outputFile: './dist/workflow.ts',
|
|
48
|
+
* generate: { production: true }
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @throws {Error} If parsing fails or workflow contains errors
|
|
53
|
+
*/
|
|
54
|
+
export declare function compileWorkflow(filePath: string, options?: CompileOptions): Promise<CompileResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Compile multiple workflow files in parallel
|
|
57
|
+
*
|
|
58
|
+
* @param filePaths - Array of workflow file paths to compile
|
|
59
|
+
* @param options - Compilation options applied to all files
|
|
60
|
+
* @returns Array of CompileResults for each file
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const results = await compileWorkflows([
|
|
65
|
+
* './workflow-1.ts',
|
|
66
|
+
* './workflow-2.ts'
|
|
67
|
+
* ]);
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function compileWorkflows(filePaths: string[], options?: CompileOptions): Promise<CompileResult[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Compile all workflow files matching a glob pattern
|
|
73
|
+
*
|
|
74
|
+
* Uses the glob library to find matching files and compiles them in parallel.
|
|
75
|
+
*
|
|
76
|
+
* @param pattern - Glob pattern (e.g., "src/**\/*.ts")
|
|
77
|
+
* @param options - Compilation options applied to all files
|
|
78
|
+
* @returns Array of CompileResults for each matched file
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* // Compile all workflow files in src directory
|
|
83
|
+
* const results = await compilePattern('src/**\/*.ts');
|
|
84
|
+
*
|
|
85
|
+
* // Compile with custom options
|
|
86
|
+
* const results = await compilePattern('workflows/**\/*.ts', {
|
|
87
|
+
* generate: { production: true }
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function compilePattern(pattern: string, options?: CompileOptions): Promise<CompileResult[]>;
|
|
92
|
+
//# sourceMappingURL=compile.d.ts.map
|