@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,210 @@
|
|
|
1
|
+
import type { TBranchingStrategy, TConnectionAST, TDataType, TExecuteWhen, TImportDeclaration, TImportSpecifier, TNodeTypeAST, TNodeInstanceAST, TPortDefinition, TPortReference, TSerializableValue, TWorkflowAST } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Fluent builder for constructing TWorkflowAST programmatically
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const workflow = new WorkflowBuilder('myWorkflow', 'myWorkflow', './workflow.ts')
|
|
8
|
+
* .description('My workflow description')
|
|
9
|
+
* .addNodeType(nodeType)
|
|
10
|
+
* .addNodeInstance(instance)
|
|
11
|
+
* .addConnection(connection)
|
|
12
|
+
* .build();
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare class WorkflowBuilder {
|
|
16
|
+
private ast;
|
|
17
|
+
/**
|
|
18
|
+
* Create a new workflow builder
|
|
19
|
+
* @param name - Internal workflow name
|
|
20
|
+
* @param functionName - Exported function name
|
|
21
|
+
* @param sourceFile - Source file path
|
|
22
|
+
*/
|
|
23
|
+
constructor(name: string, functionName: string, sourceFile: string);
|
|
24
|
+
description(desc: string): this;
|
|
25
|
+
generatedFile(path: string): this;
|
|
26
|
+
addNodeType(nodeType: TNodeTypeAST): this;
|
|
27
|
+
addNodeInstance(instance: TNodeInstanceAST): this;
|
|
28
|
+
addConnection(connection: TConnectionAST): this;
|
|
29
|
+
addScope(scopeName: string, instanceIds: string[]): this;
|
|
30
|
+
addImport(importDecl: TImportDeclaration): this;
|
|
31
|
+
metadata(key: string, value: unknown): this;
|
|
32
|
+
/** Build and return the final TWorkflowAST */
|
|
33
|
+
build(): TWorkflowAST;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Fluent builder for constructing TNodeTypeAST programmatically
|
|
37
|
+
*
|
|
38
|
+
* NodeTypes are templates that can be instantiated multiple times in a workflow.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const addNode = new NodeTypeBuilder('Add', 'add')
|
|
43
|
+
* .label('Add Numbers')
|
|
44
|
+
* .input('a', { dataType: 'NUMBER' })
|
|
45
|
+
* .input('b', { dataType: 'NUMBER' })
|
|
46
|
+
* .output('sum', { dataType: 'NUMBER' })
|
|
47
|
+
* .successPort(true)
|
|
48
|
+
* .build();
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare class NodeTypeBuilder {
|
|
52
|
+
private nodeType;
|
|
53
|
+
/**
|
|
54
|
+
* Create a new node type builder
|
|
55
|
+
* @param name - Unique node type name
|
|
56
|
+
* @param functionName - Name of the implementing function
|
|
57
|
+
*/
|
|
58
|
+
constructor(name: string, functionName: string);
|
|
59
|
+
label(label: string): this;
|
|
60
|
+
description(desc: string): this;
|
|
61
|
+
scope(scopeName: string): this;
|
|
62
|
+
input(name: string, definition: TPortDefinition): this;
|
|
63
|
+
output(name: string, definition: TPortDefinition): this;
|
|
64
|
+
successPort(enabled?: boolean): this;
|
|
65
|
+
failurePort(enabled?: boolean): this;
|
|
66
|
+
executeWhen(when: TExecuteWhen): this;
|
|
67
|
+
branchingStrategy(strategy: TBranchingStrategy, field?: string): this;
|
|
68
|
+
defaultConfig(config: import("./types.js").TNodeTypeDefaultConfig): this;
|
|
69
|
+
metadata(key: string, value: unknown): this;
|
|
70
|
+
/** Build and return the final TNodeTypeAST */
|
|
71
|
+
build(): TNodeTypeAST;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Fluent builder for constructing TNodeInstanceAST programmatically
|
|
75
|
+
*
|
|
76
|
+
* NodeInstances are the actual nodes placed in a workflow, referencing a NodeType template.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const adder1 = new NodeInstanceBuilder('adder1', 'Add')
|
|
81
|
+
* .config({ pullExecution: true })
|
|
82
|
+
* .build();
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare class NodeInstanceBuilder {
|
|
86
|
+
private instance;
|
|
87
|
+
/**
|
|
88
|
+
* Create a new node instance builder
|
|
89
|
+
* @param id - Unique instance ID within the workflow
|
|
90
|
+
* @param nodeType - Name of the NodeType this instance references
|
|
91
|
+
*/
|
|
92
|
+
constructor(id: string, nodeType: string);
|
|
93
|
+
config(configData: import("./types.js").TNodeInstanceConfig): this;
|
|
94
|
+
parentScope(scope: string): this;
|
|
95
|
+
metadata(key: string, value: unknown): this;
|
|
96
|
+
/** Build and return the final TNodeInstanceAST */
|
|
97
|
+
build(): TNodeInstanceAST;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Fluent builder for constructing TConnectionAST programmatically
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const conn = new ConnectionBuilder(
|
|
105
|
+
* { node: 'Start', port: 'x' },
|
|
106
|
+
* { node: 'adder1', port: 'a' }
|
|
107
|
+
* )
|
|
108
|
+
* .dataFlow(true)
|
|
109
|
+
* .build();
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare class ConnectionBuilder {
|
|
113
|
+
private connection;
|
|
114
|
+
/**
|
|
115
|
+
* Create a new connection builder
|
|
116
|
+
* @param from - Source port reference
|
|
117
|
+
* @param to - Target port reference
|
|
118
|
+
*/
|
|
119
|
+
constructor(from: TPortReference, to: TPortReference);
|
|
120
|
+
controlFlow(isControlFlow?: boolean): this;
|
|
121
|
+
dataFlow(isDataFlow?: boolean): this;
|
|
122
|
+
metadata(key: string, value: unknown): this;
|
|
123
|
+
/** Build and return the final TConnectionAST */
|
|
124
|
+
build(): TConnectionAST;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Helper function to create a PortReference
|
|
128
|
+
* @param node - Node ID
|
|
129
|
+
* @param port - Port name
|
|
130
|
+
* @returns TPortReference object
|
|
131
|
+
*/
|
|
132
|
+
export declare function portRef(node: string, port: string): TPortReference;
|
|
133
|
+
/**
|
|
134
|
+
* Helper function to create a PortDefinition
|
|
135
|
+
* @param dataType - The data type of the port
|
|
136
|
+
* @param options - Optional port configuration
|
|
137
|
+
* @returns TPortDefinition object
|
|
138
|
+
*/
|
|
139
|
+
export declare function port(dataType: TDataType, options?: {
|
|
140
|
+
optional?: boolean;
|
|
141
|
+
default?: TSerializableValue;
|
|
142
|
+
label?: string;
|
|
143
|
+
description?: string;
|
|
144
|
+
}): TPortDefinition;
|
|
145
|
+
/**
|
|
146
|
+
* Helper function to create an ImportDeclaration
|
|
147
|
+
* @param specifiers - Import specifiers (named, default, or namespace)
|
|
148
|
+
* @param source - Module path to import from
|
|
149
|
+
* @param importKind - Whether this is a value or type import
|
|
150
|
+
* @returns TImportDeclaration object
|
|
151
|
+
*/
|
|
152
|
+
export declare function importDecl(specifiers: TImportSpecifier[], source: string, importKind?: "value" | "type"): TImportDeclaration;
|
|
153
|
+
/**
|
|
154
|
+
* Helper function to create a named import specifier
|
|
155
|
+
* @param name - Name of the imported symbol
|
|
156
|
+
* @param alias - Optional local alias
|
|
157
|
+
* @returns TImportSpecifier for named import
|
|
158
|
+
*/
|
|
159
|
+
export declare function namedImport(name: string, alias?: string): TImportSpecifier;
|
|
160
|
+
/**
|
|
161
|
+
* Helper function to create a default import specifier
|
|
162
|
+
* @param name - Local name for the default import
|
|
163
|
+
* @returns TImportSpecifier for default import
|
|
164
|
+
*/
|
|
165
|
+
export declare function defaultImport(name: string): TImportSpecifier;
|
|
166
|
+
/**
|
|
167
|
+
* Helper function to create a namespace import specifier
|
|
168
|
+
* @param name - Local name for the namespace
|
|
169
|
+
* @returns TImportSpecifier for namespace import
|
|
170
|
+
*/
|
|
171
|
+
export declare function namespaceImport(name: string): TImportSpecifier;
|
|
172
|
+
/**
|
|
173
|
+
* Helper function to create a WorkflowBuilder
|
|
174
|
+
* @param name - Internal workflow name
|
|
175
|
+
* @param functionName - Exported function name
|
|
176
|
+
* @param sourceFile - Source file path
|
|
177
|
+
* @returns New WorkflowBuilder instance
|
|
178
|
+
*/
|
|
179
|
+
export declare function workflow(name: string, functionName: string, sourceFile: string): WorkflowBuilder;
|
|
180
|
+
/**
|
|
181
|
+
* Helper function to create a NodeTypeBuilder
|
|
182
|
+
* @param name - Node type name
|
|
183
|
+
* @param functionName - Implementing function name
|
|
184
|
+
* @returns New NodeTypeBuilder instance
|
|
185
|
+
*/
|
|
186
|
+
export declare function nodeType(name: string, functionName: string): NodeTypeBuilder;
|
|
187
|
+
/**
|
|
188
|
+
* Helper function to create a NodeInstanceBuilder
|
|
189
|
+
* @param id - Unique instance ID
|
|
190
|
+
* @param nodeTypeName - Name of the NodeType to instantiate
|
|
191
|
+
* @returns New NodeInstanceBuilder instance
|
|
192
|
+
*/
|
|
193
|
+
export declare function nodeInstance(id: string, nodeTypeName: string): NodeInstanceBuilder;
|
|
194
|
+
/**
|
|
195
|
+
* Helper function to create a ConnectionBuilder
|
|
196
|
+
* @param from - Source port reference
|
|
197
|
+
* @param to - Target port reference
|
|
198
|
+
* @returns New ConnectionBuilder instance
|
|
199
|
+
*/
|
|
200
|
+
export declare function connection(from: TPortReference, to: TPortReference): ConnectionBuilder;
|
|
201
|
+
/**
|
|
202
|
+
* Convenience function to create a TConnectionAST directly
|
|
203
|
+
* @param fromNode - Source node ID
|
|
204
|
+
* @param fromPort - Source port name
|
|
205
|
+
* @param toNode - Target node ID
|
|
206
|
+
* @param toPort - Target port name
|
|
207
|
+
* @returns Built ConnectionAST
|
|
208
|
+
*/
|
|
209
|
+
export declare function connect(fromNode: string, fromPort: string, toNode: string, toPort: string): TConnectionAST;
|
|
210
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
import { EXECUTION_STRATEGIES } from "../constants.js";
|
|
2
|
+
/**
|
|
3
|
+
* Fluent builder for constructing TWorkflowAST programmatically
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const workflow = new WorkflowBuilder('myWorkflow', 'myWorkflow', './workflow.ts')
|
|
8
|
+
* .description('My workflow description')
|
|
9
|
+
* .addNodeType(nodeType)
|
|
10
|
+
* .addNodeInstance(instance)
|
|
11
|
+
* .addConnection(connection)
|
|
12
|
+
* .build();
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export class WorkflowBuilder {
|
|
16
|
+
ast;
|
|
17
|
+
/**
|
|
18
|
+
* Create a new workflow builder
|
|
19
|
+
* @param name - Internal workflow name
|
|
20
|
+
* @param functionName - Exported function name
|
|
21
|
+
* @param sourceFile - Source file path
|
|
22
|
+
*/
|
|
23
|
+
constructor(name, functionName, sourceFile) {
|
|
24
|
+
this.ast = {
|
|
25
|
+
type: "Workflow",
|
|
26
|
+
sourceFile,
|
|
27
|
+
name,
|
|
28
|
+
functionName,
|
|
29
|
+
nodeTypes: [],
|
|
30
|
+
instances: [],
|
|
31
|
+
connections: [],
|
|
32
|
+
startPorts: {},
|
|
33
|
+
exitPorts: {},
|
|
34
|
+
imports: [],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
description(desc) {
|
|
38
|
+
this.ast.description = desc;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
generatedFile(path) {
|
|
42
|
+
this.ast.generatedFile = path;
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
addNodeType(nodeType) {
|
|
46
|
+
this.ast.nodeTypes.push(nodeType);
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
addNodeInstance(instance) {
|
|
50
|
+
this.ast.instances.push(instance);
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
addConnection(connection) {
|
|
54
|
+
this.ast.connections.push(connection);
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
addScope(scopeName, instanceIds) {
|
|
58
|
+
if (!this.ast.scopes) {
|
|
59
|
+
this.ast.scopes = {};
|
|
60
|
+
}
|
|
61
|
+
this.ast.scopes[scopeName] = instanceIds;
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
addImport(importDecl) {
|
|
65
|
+
this.ast.imports.push(importDecl);
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
metadata(key, value) {
|
|
69
|
+
if (!this.ast.metadata) {
|
|
70
|
+
this.ast.metadata = {};
|
|
71
|
+
}
|
|
72
|
+
this.ast.metadata[key] = value;
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
/** Build and return the final TWorkflowAST */
|
|
76
|
+
build() {
|
|
77
|
+
return this.ast;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Fluent builder for constructing TNodeTypeAST programmatically
|
|
82
|
+
*
|
|
83
|
+
* NodeTypes are templates that can be instantiated multiple times in a workflow.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const addNode = new NodeTypeBuilder('Add', 'add')
|
|
88
|
+
* .label('Add Numbers')
|
|
89
|
+
* .input('a', { dataType: 'NUMBER' })
|
|
90
|
+
* .input('b', { dataType: 'NUMBER' })
|
|
91
|
+
* .output('sum', { dataType: 'NUMBER' })
|
|
92
|
+
* .successPort(true)
|
|
93
|
+
* .build();
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export class NodeTypeBuilder {
|
|
97
|
+
nodeType;
|
|
98
|
+
/**
|
|
99
|
+
* Create a new node type builder
|
|
100
|
+
* @param name - Unique node type name
|
|
101
|
+
* @param functionName - Name of the implementing function
|
|
102
|
+
*/
|
|
103
|
+
constructor(name, functionName) {
|
|
104
|
+
this.nodeType = {
|
|
105
|
+
type: "NodeType",
|
|
106
|
+
name,
|
|
107
|
+
functionName,
|
|
108
|
+
inputs: {},
|
|
109
|
+
outputs: {},
|
|
110
|
+
hasSuccessPort: false,
|
|
111
|
+
hasFailurePort: false,
|
|
112
|
+
executeWhen: EXECUTION_STRATEGIES.CONJUNCTION,
|
|
113
|
+
isAsync: false,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
label(label) {
|
|
117
|
+
this.nodeType.label = label;
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
description(desc) {
|
|
121
|
+
this.nodeType.description = desc;
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
scope(scopeName) {
|
|
125
|
+
this.nodeType.scope = scopeName;
|
|
126
|
+
return this;
|
|
127
|
+
}
|
|
128
|
+
input(name, definition) {
|
|
129
|
+
this.nodeType.inputs[name] = definition;
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
output(name, definition) {
|
|
133
|
+
this.nodeType.outputs[name] = definition;
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
successPort(enabled = true) {
|
|
137
|
+
this.nodeType.hasSuccessPort = enabled;
|
|
138
|
+
return this;
|
|
139
|
+
}
|
|
140
|
+
failurePort(enabled = true) {
|
|
141
|
+
this.nodeType.hasFailurePort = enabled;
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
executeWhen(when) {
|
|
145
|
+
this.nodeType.executeWhen = when;
|
|
146
|
+
return this;
|
|
147
|
+
}
|
|
148
|
+
branchingStrategy(strategy, field) {
|
|
149
|
+
this.nodeType.branchingStrategy = strategy;
|
|
150
|
+
if (field) {
|
|
151
|
+
this.nodeType.branchField = field;
|
|
152
|
+
}
|
|
153
|
+
return this;
|
|
154
|
+
}
|
|
155
|
+
defaultConfig(config) {
|
|
156
|
+
this.nodeType.defaultConfig = config;
|
|
157
|
+
return this;
|
|
158
|
+
}
|
|
159
|
+
metadata(key, value) {
|
|
160
|
+
if (!this.nodeType.metadata) {
|
|
161
|
+
this.nodeType.metadata = {};
|
|
162
|
+
}
|
|
163
|
+
this.nodeType.metadata[key] = value;
|
|
164
|
+
return this;
|
|
165
|
+
}
|
|
166
|
+
/** Build and return the final TNodeTypeAST */
|
|
167
|
+
build() {
|
|
168
|
+
return this.nodeType;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Fluent builder for constructing TNodeInstanceAST programmatically
|
|
173
|
+
*
|
|
174
|
+
* NodeInstances are the actual nodes placed in a workflow, referencing a NodeType template.
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* const adder1 = new NodeInstanceBuilder('adder1', 'Add')
|
|
179
|
+
* .config({ pullExecution: true })
|
|
180
|
+
* .build();
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
export class NodeInstanceBuilder {
|
|
184
|
+
instance;
|
|
185
|
+
/**
|
|
186
|
+
* Create a new node instance builder
|
|
187
|
+
* @param id - Unique instance ID within the workflow
|
|
188
|
+
* @param nodeType - Name of the NodeType this instance references
|
|
189
|
+
*/
|
|
190
|
+
constructor(id, nodeType) {
|
|
191
|
+
this.instance = {
|
|
192
|
+
type: "NodeInstance",
|
|
193
|
+
id,
|
|
194
|
+
nodeType,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
config(configData) {
|
|
198
|
+
this.instance.config = configData;
|
|
199
|
+
return this;
|
|
200
|
+
}
|
|
201
|
+
parentScope(scope) {
|
|
202
|
+
// scope format is "parentNodeId.scopeName"
|
|
203
|
+
const dotIndex = scope.indexOf('.');
|
|
204
|
+
const parentNodeName = dotIndex > 0 ? scope.substring(0, dotIndex) : scope;
|
|
205
|
+
const scopeName = dotIndex > 0 ? scope.substring(dotIndex + 1) : '';
|
|
206
|
+
this.instance.parent = { id: parentNodeName, scope: scopeName };
|
|
207
|
+
return this;
|
|
208
|
+
}
|
|
209
|
+
metadata(key, value) {
|
|
210
|
+
if (!this.instance.metadata) {
|
|
211
|
+
this.instance.metadata = {};
|
|
212
|
+
}
|
|
213
|
+
this.instance.metadata[key] = value;
|
|
214
|
+
return this;
|
|
215
|
+
}
|
|
216
|
+
/** Build and return the final TNodeInstanceAST */
|
|
217
|
+
build() {
|
|
218
|
+
return this.instance;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Fluent builder for constructing TConnectionAST programmatically
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
* ```typescript
|
|
226
|
+
* const conn = new ConnectionBuilder(
|
|
227
|
+
* { node: 'Start', port: 'x' },
|
|
228
|
+
* { node: 'adder1', port: 'a' }
|
|
229
|
+
* )
|
|
230
|
+
* .dataFlow(true)
|
|
231
|
+
* .build();
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
export class ConnectionBuilder {
|
|
235
|
+
connection;
|
|
236
|
+
/**
|
|
237
|
+
* Create a new connection builder
|
|
238
|
+
* @param from - Source port reference
|
|
239
|
+
* @param to - Target port reference
|
|
240
|
+
*/
|
|
241
|
+
constructor(from, to) {
|
|
242
|
+
this.connection = {
|
|
243
|
+
type: "Connection",
|
|
244
|
+
from,
|
|
245
|
+
to,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
controlFlow(isControlFlow = true) {
|
|
249
|
+
if (!this.connection.metadata) {
|
|
250
|
+
this.connection.metadata = {};
|
|
251
|
+
}
|
|
252
|
+
this.connection.metadata.isControlFlow = isControlFlow;
|
|
253
|
+
return this;
|
|
254
|
+
}
|
|
255
|
+
dataFlow(isDataFlow = true) {
|
|
256
|
+
if (!this.connection.metadata) {
|
|
257
|
+
this.connection.metadata = {};
|
|
258
|
+
}
|
|
259
|
+
this.connection.metadata.isDataFlow = isDataFlow;
|
|
260
|
+
return this;
|
|
261
|
+
}
|
|
262
|
+
metadata(key, value) {
|
|
263
|
+
if (!this.connection.metadata) {
|
|
264
|
+
this.connection.metadata = {};
|
|
265
|
+
}
|
|
266
|
+
this.connection.metadata[key] = value;
|
|
267
|
+
return this;
|
|
268
|
+
}
|
|
269
|
+
/** Build and return the final TConnectionAST */
|
|
270
|
+
build() {
|
|
271
|
+
return this.connection;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Helper function to create a PortReference
|
|
276
|
+
* @param node - Node ID
|
|
277
|
+
* @param port - Port name
|
|
278
|
+
* @returns TPortReference object
|
|
279
|
+
*/
|
|
280
|
+
export function portRef(node, port) {
|
|
281
|
+
return { node, port };
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Helper function to create a PortDefinition
|
|
285
|
+
* @param dataType - The data type of the port
|
|
286
|
+
* @param options - Optional port configuration
|
|
287
|
+
* @returns TPortDefinition object
|
|
288
|
+
*/
|
|
289
|
+
export function port(dataType, options) {
|
|
290
|
+
return {
|
|
291
|
+
dataType,
|
|
292
|
+
...options,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Helper function to create an ImportDeclaration
|
|
297
|
+
* @param specifiers - Import specifiers (named, default, or namespace)
|
|
298
|
+
* @param source - Module path to import from
|
|
299
|
+
* @param importKind - Whether this is a value or type import
|
|
300
|
+
* @returns TImportDeclaration object
|
|
301
|
+
*/
|
|
302
|
+
export function importDecl(specifiers, source, importKind = "value") {
|
|
303
|
+
return {
|
|
304
|
+
type: "Import",
|
|
305
|
+
specifiers,
|
|
306
|
+
source,
|
|
307
|
+
importKind,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Helper function to create a named import specifier
|
|
312
|
+
* @param name - Name of the imported symbol
|
|
313
|
+
* @param alias - Optional local alias
|
|
314
|
+
* @returns TImportSpecifier for named import
|
|
315
|
+
*/
|
|
316
|
+
export function namedImport(name, alias) {
|
|
317
|
+
return {
|
|
318
|
+
imported: name,
|
|
319
|
+
local: alias || name,
|
|
320
|
+
kind: "named",
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Helper function to create a default import specifier
|
|
325
|
+
* @param name - Local name for the default import
|
|
326
|
+
* @returns TImportSpecifier for default import
|
|
327
|
+
*/
|
|
328
|
+
export function defaultImport(name) {
|
|
329
|
+
return {
|
|
330
|
+
imported: "default",
|
|
331
|
+
local: name,
|
|
332
|
+
kind: "default",
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Helper function to create a namespace import specifier
|
|
337
|
+
* @param name - Local name for the namespace
|
|
338
|
+
* @returns TImportSpecifier for namespace import
|
|
339
|
+
*/
|
|
340
|
+
export function namespaceImport(name) {
|
|
341
|
+
return {
|
|
342
|
+
imported: "*",
|
|
343
|
+
local: name,
|
|
344
|
+
kind: "namespace",
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Helper function to create a WorkflowBuilder
|
|
349
|
+
* @param name - Internal workflow name
|
|
350
|
+
* @param functionName - Exported function name
|
|
351
|
+
* @param sourceFile - Source file path
|
|
352
|
+
* @returns New WorkflowBuilder instance
|
|
353
|
+
*/
|
|
354
|
+
export function workflow(name, functionName, sourceFile) {
|
|
355
|
+
return new WorkflowBuilder(name, functionName, sourceFile);
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Helper function to create a NodeTypeBuilder
|
|
359
|
+
* @param name - Node type name
|
|
360
|
+
* @param functionName - Implementing function name
|
|
361
|
+
* @returns New NodeTypeBuilder instance
|
|
362
|
+
*/
|
|
363
|
+
export function nodeType(name, functionName) {
|
|
364
|
+
return new NodeTypeBuilder(name, functionName);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Helper function to create a NodeInstanceBuilder
|
|
368
|
+
* @param id - Unique instance ID
|
|
369
|
+
* @param nodeTypeName - Name of the NodeType to instantiate
|
|
370
|
+
* @returns New NodeInstanceBuilder instance
|
|
371
|
+
*/
|
|
372
|
+
export function nodeInstance(id, nodeTypeName) {
|
|
373
|
+
return new NodeInstanceBuilder(id, nodeTypeName);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Helper function to create a ConnectionBuilder
|
|
377
|
+
* @param from - Source port reference
|
|
378
|
+
* @param to - Target port reference
|
|
379
|
+
* @returns New ConnectionBuilder instance
|
|
380
|
+
*/
|
|
381
|
+
export function connection(from, to) {
|
|
382
|
+
return new ConnectionBuilder(from, to);
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Convenience function to create a TConnectionAST directly
|
|
386
|
+
* @param fromNode - Source node ID
|
|
387
|
+
* @param fromPort - Source port name
|
|
388
|
+
* @param toNode - Target node ID
|
|
389
|
+
* @param toPort - Target port name
|
|
390
|
+
* @returns Built ConnectionAST
|
|
391
|
+
*/
|
|
392
|
+
export function connect(fromNode, fromPort, toNode, toPort) {
|
|
393
|
+
return connection(portRef(fromNode, fromPort), portRef(toNode, toPort)).build();
|
|
394
|
+
}
|
|
395
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TWorkflowAST } from "./types.js";
|
|
2
|
+
export declare function saveAST(ast: TWorkflowAST, filePath: string): Promise<void>;
|
|
3
|
+
export declare function loadAST(filePath: string): Promise<TWorkflowAST>;
|
|
4
|
+
export declare function saveASTAlongside(ast: TWorkflowAST): Promise<string>;
|
|
5
|
+
export declare function loadASTAlongside(sourceFile: string): Promise<TWorkflowAST>;
|
|
6
|
+
//# sourceMappingURL=serialization-node.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js-only AST file I/O functions.
|
|
3
|
+
* NOT exported from /ast - use direct import if needed.
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from "node:fs/promises";
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
import { serializeAST, deserializeAST } from "./serialization.js";
|
|
8
|
+
export async function saveAST(ast, filePath) {
|
|
9
|
+
const json = serializeAST(ast, true);
|
|
10
|
+
await fs.writeFile(filePath, json, "utf-8");
|
|
11
|
+
}
|
|
12
|
+
export async function loadAST(filePath) {
|
|
13
|
+
const json = await fs.readFile(filePath, "utf-8");
|
|
14
|
+
return deserializeAST(json);
|
|
15
|
+
}
|
|
16
|
+
export async function saveASTAlongside(ast) {
|
|
17
|
+
const sourceFile = ast.sourceFile;
|
|
18
|
+
const dir = path.dirname(sourceFile);
|
|
19
|
+
const basename = path.basename(sourceFile, path.extname(sourceFile));
|
|
20
|
+
const astFile = path.join(dir, `${basename}.ast.json`);
|
|
21
|
+
await saveAST(ast, astFile);
|
|
22
|
+
return astFile;
|
|
23
|
+
}
|
|
24
|
+
export async function loadASTAlongside(sourceFile) {
|
|
25
|
+
const dir = path.dirname(sourceFile);
|
|
26
|
+
const basename = path.basename(sourceFile, path.extname(sourceFile));
|
|
27
|
+
const astFile = path.join(dir, `${basename}.ast.json`);
|
|
28
|
+
return loadAST(astFile);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=serialization-node.js.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { TWorkflowAST } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Serializes a workflow AST to a JSON string.
|
|
4
|
+
*
|
|
5
|
+
* @param ast - The workflow AST to serialize.
|
|
6
|
+
* @param pretty - If true, formats the JSON with 2-space indentation. Defaults to true.
|
|
7
|
+
* @returns The JSON string representation of the AST.
|
|
8
|
+
*/
|
|
9
|
+
export declare function serializeAST(ast: TWorkflowAST, pretty?: boolean): string;
|
|
10
|
+
/**
|
|
11
|
+
* Deserializes a JSON string into a workflow AST.
|
|
12
|
+
* Validates that the root node type is "Workflow" before returning.
|
|
13
|
+
*
|
|
14
|
+
* @param json - The JSON string to parse.
|
|
15
|
+
* @returns The parsed workflow AST.
|
|
16
|
+
* @throws {Error} If the parsed object's type is not "Workflow".
|
|
17
|
+
*/
|
|
18
|
+
export declare function deserializeAST(json: string): TWorkflowAST;
|
|
19
|
+
/**
|
|
20
|
+
* Converts a workflow AST into a human-readable text summary.
|
|
21
|
+
* Includes workflow metadata, imports, node types with their port counts
|
|
22
|
+
* and control flow ports, and all connections.
|
|
23
|
+
*
|
|
24
|
+
* @param ast - The workflow AST to convert.
|
|
25
|
+
* @returns A multi-line string describing the workflow structure.
|
|
26
|
+
*/
|
|
27
|
+
export declare function astToString(ast: TWorkflowAST): string;
|
|
28
|
+
interface ASTValidationResult {
|
|
29
|
+
valid: boolean;
|
|
30
|
+
errors: string[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validates the structural integrity of a workflow AST object.
|
|
34
|
+
* Checks that the root is a "Workflow" type with required fields (name, functionName,
|
|
35
|
+
* sourceFile, instances, connections, imports), and validates each node and connection
|
|
36
|
+
* within the AST.
|
|
37
|
+
*
|
|
38
|
+
* @param ast - The unknown value to validate as a workflow AST.
|
|
39
|
+
* @returns A validation result containing a `valid` boolean and an array of error messages.
|
|
40
|
+
*/
|
|
41
|
+
export declare function validateASTStructure(ast: unknown): ASTValidationResult;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=serialization.d.ts.map
|