@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,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scope operations for workflow manipulation
|
|
3
|
+
*/
|
|
4
|
+
import { withoutValidation, assertNodeExists } from "../helpers.js";
|
|
5
|
+
/**
|
|
6
|
+
* Create a new scope
|
|
7
|
+
*
|
|
8
|
+
* @param ast - Workflow to modify
|
|
9
|
+
* @param scopeName - Name of scope
|
|
10
|
+
* @param nodeIds - Node IDs in scope
|
|
11
|
+
* @returns Modified workflow
|
|
12
|
+
* @throws {Error} If scope already exists
|
|
13
|
+
*/
|
|
14
|
+
export function createScope(ast, scopeName, nodeIds) {
|
|
15
|
+
// Validate scope doesn't exist
|
|
16
|
+
if (ast.scopes?.[scopeName]) {
|
|
17
|
+
throw new Error(`Scope "${scopeName}" already exists`);
|
|
18
|
+
}
|
|
19
|
+
// Verify all nodes exist before mutation to avoid type instantiation issues
|
|
20
|
+
nodeIds.forEach((nodeId) => assertNodeExists(ast, nodeId));
|
|
21
|
+
return withoutValidation(ast, (draft) => {
|
|
22
|
+
if (!draft.scopes) {
|
|
23
|
+
draft.scopes = {};
|
|
24
|
+
}
|
|
25
|
+
draft.scopes[scopeName] = nodeIds;
|
|
26
|
+
// Update node instances to reference scope
|
|
27
|
+
// scopeName format is "parentNodeId.scopeName"
|
|
28
|
+
const dotIndex = scopeName.indexOf('.');
|
|
29
|
+
const parentNodeName = dotIndex > 0 ? scopeName.substring(0, dotIndex) : scopeName;
|
|
30
|
+
const scope = dotIndex > 0 ? scopeName.substring(dotIndex + 1) : '';
|
|
31
|
+
nodeIds.forEach((nodeId) => {
|
|
32
|
+
const node = draft.instances.find((n) => n.id === nodeId);
|
|
33
|
+
node.parent = { id: parentNodeName, scope };
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Remove a scope.
|
|
39
|
+
* Uses no validation to allow deletion even when workflow has other errors.
|
|
40
|
+
*
|
|
41
|
+
* @param ast - Workflow to modify
|
|
42
|
+
* @param scopeName - Name of scope to remove
|
|
43
|
+
* @returns Modified workflow
|
|
44
|
+
*/
|
|
45
|
+
export function removeScope(ast, scopeName) {
|
|
46
|
+
// Verify scope exists
|
|
47
|
+
if (!ast.scopes?.[scopeName]) {
|
|
48
|
+
throw new Error(`Scope "${scopeName}" not found`);
|
|
49
|
+
}
|
|
50
|
+
return withoutValidation(ast, (draft) => {
|
|
51
|
+
const nodeIds = draft.scopes[scopeName];
|
|
52
|
+
// Remove parent from nodes
|
|
53
|
+
nodeIds.forEach((nodeId) => {
|
|
54
|
+
const node = draft.instances.find((n) => n.id === nodeId);
|
|
55
|
+
if (node) {
|
|
56
|
+
delete node.parent;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
delete draft.scopes[scopeName];
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Add node to existing scope
|
|
64
|
+
*
|
|
65
|
+
* @param ast - Workflow to modify
|
|
66
|
+
* @param scopeName - Name of scope
|
|
67
|
+
* @param nodeId - Node ID to add
|
|
68
|
+
* @returns Modified workflow
|
|
69
|
+
*/
|
|
70
|
+
export function addToScope(ast, scopeName, nodeId) {
|
|
71
|
+
// Validate before mutation to avoid type instantiation issues
|
|
72
|
+
if (!ast.scopes?.[scopeName]) {
|
|
73
|
+
throw new Error(`Scope "${scopeName}" not found`);
|
|
74
|
+
}
|
|
75
|
+
assertNodeExists(ast, nodeId);
|
|
76
|
+
return withoutValidation(ast, (draft) => {
|
|
77
|
+
if (!draft.scopes[scopeName].includes(nodeId)) {
|
|
78
|
+
draft.scopes[scopeName].push(nodeId);
|
|
79
|
+
}
|
|
80
|
+
const node = draft.instances.find((n) => n.id === nodeId);
|
|
81
|
+
if (!node)
|
|
82
|
+
return; // Already validated above
|
|
83
|
+
// scopeName format is "parentNodeId.scopeName"
|
|
84
|
+
const dotIndex = scopeName.indexOf('.');
|
|
85
|
+
const parentNodeName = dotIndex > 0 ? scopeName.substring(0, dotIndex) : scopeName;
|
|
86
|
+
const scope = dotIndex > 0 ? scopeName.substring(dotIndex + 1) : '';
|
|
87
|
+
node.parent = { id: parentNodeName, scope };
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Remove node from scope.
|
|
92
|
+
* Uses no validation to allow deletion even when workflow has other errors.
|
|
93
|
+
*
|
|
94
|
+
* @param ast - Workflow to modify
|
|
95
|
+
* @param scopeName - Name of scope
|
|
96
|
+
* @param nodeId - Node ID to remove
|
|
97
|
+
* @returns Modified workflow
|
|
98
|
+
*/
|
|
99
|
+
export function removeFromScope(ast, scopeName, nodeId) {
|
|
100
|
+
// Verify scope exists
|
|
101
|
+
if (!ast.scopes?.[scopeName]) {
|
|
102
|
+
throw new Error(`Scope "${scopeName}" not found`);
|
|
103
|
+
}
|
|
104
|
+
return withoutValidation(ast, (draft) => {
|
|
105
|
+
draft.scopes[scopeName] = draft.scopes[scopeName].filter((id) => id !== nodeId);
|
|
106
|
+
const node = draft.instances.find((n) => n.id === nodeId);
|
|
107
|
+
if (node && node.parent) {
|
|
108
|
+
// Match by parent id (simple scope) or full qualified path
|
|
109
|
+
const matchesScope = node.parent.id === scopeName ||
|
|
110
|
+
(node.parent.scope && `${node.parent.id}.${node.parent.scope}` === scopeName);
|
|
111
|
+
if (matchesScope) {
|
|
112
|
+
delete node.parent;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Move node to different scope
|
|
119
|
+
*
|
|
120
|
+
* @param ast - Workflow to modify
|
|
121
|
+
* @param nodeId - Node ID to move
|
|
122
|
+
* @param targetScope - Target scope name
|
|
123
|
+
* @returns Modified workflow
|
|
124
|
+
*/
|
|
125
|
+
export function moveToScope(ast, nodeId, targetScope) {
|
|
126
|
+
// Validate before mutation to avoid type instantiation issues
|
|
127
|
+
assertNodeExists(ast, nodeId);
|
|
128
|
+
if (!ast.scopes?.[targetScope]) {
|
|
129
|
+
throw new Error(`Target scope "${targetScope}" not found`);
|
|
130
|
+
}
|
|
131
|
+
return withoutValidation(ast, (draft) => {
|
|
132
|
+
const node = draft.instances.find((n) => n.id === nodeId);
|
|
133
|
+
if (!node || !draft.scopes)
|
|
134
|
+
return; // Already validated above
|
|
135
|
+
// Remove from current scope if any
|
|
136
|
+
if (node.parent) {
|
|
137
|
+
// Check for simple scope (just id) or full qualified path
|
|
138
|
+
const simpleScope = node.parent.id;
|
|
139
|
+
const fullScope = node.parent.scope ? `${node.parent.id}.${node.parent.scope}` : null;
|
|
140
|
+
const currentScope = draft.scopes[simpleScope] ? simpleScope : (fullScope && draft.scopes[fullScope] ? fullScope : null);
|
|
141
|
+
if (currentScope && draft.scopes[currentScope]) {
|
|
142
|
+
draft.scopes[currentScope] = draft.scopes[currentScope].filter((id) => id !== nodeId);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Add to target scope
|
|
146
|
+
if (!draft.scopes[targetScope].includes(nodeId)) {
|
|
147
|
+
draft.scopes[targetScope].push(nodeId);
|
|
148
|
+
}
|
|
149
|
+
// targetScope format is "parentNodeId.scopeName"
|
|
150
|
+
const dotIndex = targetScope.indexOf('.');
|
|
151
|
+
const parentNodeName = dotIndex > 0 ? targetScope.substring(0, dotIndex) : targetScope;
|
|
152
|
+
const scope = dotIndex > 0 ? targetScope.substring(dotIndex + 1) : '';
|
|
153
|
+
node.parent = { id: parentNodeName, scope };
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=scopes.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation wrappers for workflow manipulation operations
|
|
3
|
+
* Re-exports from helpers.ts for backward compatibility
|
|
4
|
+
*/
|
|
5
|
+
export { withoutValidation, type RemoveOptions, type NodeFilter, type OperationResult, validatePortReference, portReferencesEqual, formatPortReference, generateUniqueNodeId, assertNodeExists, assertNodeNotExists, } from "../helpers.js";
|
|
6
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation wrappers for workflow manipulation operations
|
|
3
|
+
* Re-exports from helpers.ts for backward compatibility
|
|
4
|
+
*/
|
|
5
|
+
export { withoutValidation, validatePortReference, portReferencesEqual, formatPortReference, generateUniqueNodeId, assertNodeExists, assertNodeNotExists, } from "../helpers.js";
|
|
6
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow-level operations for manipulation
|
|
3
|
+
*/
|
|
4
|
+
import type { TWorkflowAST, TWorkflowMetadata, TNodeTypePort } from "../../ast/types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Clone a workflow (creates deep copy via Immer)
|
|
7
|
+
*
|
|
8
|
+
* @param ast - Workflow to clone
|
|
9
|
+
* @returns New workflow instance
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const copy = cloneWorkflow(original);
|
|
14
|
+
* // copy !== original
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare function cloneWorkflow(ast: TWorkflowAST): TWorkflowAST;
|
|
18
|
+
/**
|
|
19
|
+
* Set workflow description
|
|
20
|
+
*
|
|
21
|
+
* @param ast - Workflow to modify
|
|
22
|
+
* @param description - New description
|
|
23
|
+
* @returns Modified workflow
|
|
24
|
+
*/
|
|
25
|
+
export declare function setWorkflowDescription(ast: TWorkflowAST, description: string): TWorkflowAST;
|
|
26
|
+
/**
|
|
27
|
+
* Set workflow metadata (forceAsync, etc.)
|
|
28
|
+
*
|
|
29
|
+
* @param ast - Workflow to modify
|
|
30
|
+
* @param metadata - Partial metadata to merge
|
|
31
|
+
* @returns Modified workflow
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const updated = setWorkflowMetadata(workflow, { forceAsync: true });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function setWorkflowMetadata(ast: TWorkflowAST, metadata: Partial<TWorkflowMetadata>): TWorkflowAST;
|
|
39
|
+
/**
|
|
40
|
+
* Set workflow output file type
|
|
41
|
+
*
|
|
42
|
+
* @param ast - Workflow to modify
|
|
43
|
+
* @param fileType - Target file extension
|
|
44
|
+
* @returns Modified workflow
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const updated = setOutputFileType(workflow, "tsx");
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function setOutputFileType(ast: TWorkflowAST, fileType: "js" | "ts" | "jsx" | "tsx"): TWorkflowAST;
|
|
52
|
+
/**
|
|
53
|
+
* Rename workflow export
|
|
54
|
+
*
|
|
55
|
+
* @param ast - Workflow to modify
|
|
56
|
+
* @param newName - New workflow export name
|
|
57
|
+
* @returns Modified workflow
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const updated = renameWorkflow(workflow, "myNewWorkflow");
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function renameWorkflow(ast: TWorkflowAST, newName: string): TWorkflowAST;
|
|
65
|
+
/**
|
|
66
|
+
* Set workflow export interface ports
|
|
67
|
+
*
|
|
68
|
+
* @param ast - Workflow to modify
|
|
69
|
+
* @param ports - New ports configuration
|
|
70
|
+
* @returns Modified workflow
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const updated = setWorkflowPorts(workflow, [
|
|
75
|
+
* { name: "input", type: "String", direction: "input" },
|
|
76
|
+
* { name: "result", type: "Number", direction: "output" }
|
|
77
|
+
* ]);
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function setWorkflowPorts(ast: TWorkflowAST, ports: TNodeTypePort[]): TWorkflowAST;
|
|
81
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow-level operations for manipulation
|
|
3
|
+
*/
|
|
4
|
+
import { produce } from "immer";
|
|
5
|
+
import { withoutValidation } from "../helpers.js";
|
|
6
|
+
/**
|
|
7
|
+
* Clone a workflow (creates deep copy via Immer)
|
|
8
|
+
*
|
|
9
|
+
* @param ast - Workflow to clone
|
|
10
|
+
* @returns New workflow instance
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const copy = cloneWorkflow(original);
|
|
15
|
+
* // copy !== original
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function cloneWorkflow(ast) {
|
|
19
|
+
// Force Immer to create a new object by making changes to nested structures
|
|
20
|
+
// Without this, Immer returns the same object (structural sharing)
|
|
21
|
+
return withoutValidation(ast, (draft) => {
|
|
22
|
+
// Touch nested arrays to force deep cloning
|
|
23
|
+
draft.nodeTypes = [...draft.nodeTypes];
|
|
24
|
+
draft.instances = [...draft.instances];
|
|
25
|
+
draft.connections = [...draft.connections];
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Set workflow description
|
|
30
|
+
*
|
|
31
|
+
* @param ast - Workflow to modify
|
|
32
|
+
* @param description - New description
|
|
33
|
+
* @returns Modified workflow
|
|
34
|
+
*/
|
|
35
|
+
export function setWorkflowDescription(ast, description) {
|
|
36
|
+
return withoutValidation(ast, (draft) => {
|
|
37
|
+
draft.description = description;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Set workflow metadata (forceAsync, etc.)
|
|
42
|
+
*
|
|
43
|
+
* @param ast - Workflow to modify
|
|
44
|
+
* @param metadata - Partial metadata to merge
|
|
45
|
+
* @returns Modified workflow
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const updated = setWorkflowMetadata(workflow, { forceAsync: true });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export function setWorkflowMetadata(ast, metadata) {
|
|
53
|
+
return withoutValidation(ast, (draft) => {
|
|
54
|
+
draft.metadata = { ...draft.metadata, ...metadata };
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Set workflow output file type
|
|
59
|
+
*
|
|
60
|
+
* @param ast - Workflow to modify
|
|
61
|
+
* @param fileType - Target file extension
|
|
62
|
+
* @returns Modified workflow
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const updated = setOutputFileType(workflow, "tsx");
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export function setOutputFileType(ast, fileType) {
|
|
70
|
+
return withoutValidation(ast, (draft) => {
|
|
71
|
+
const baseName = draft.sourceFile.replace(/\.(ts|js|tsx|jsx)$/, "");
|
|
72
|
+
draft.sourceFile = `${baseName}.${fileType}`;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Rename workflow export
|
|
77
|
+
*
|
|
78
|
+
* @param ast - Workflow to modify
|
|
79
|
+
* @param newName - New workflow export name
|
|
80
|
+
* @returns Modified workflow
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const updated = renameWorkflow(workflow, "myNewWorkflow");
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export function renameWorkflow(ast, newName) {
|
|
88
|
+
if (!newName || !/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(newName)) {
|
|
89
|
+
throw new Error(`Invalid workflow name: ${newName}`);
|
|
90
|
+
}
|
|
91
|
+
return withoutValidation(ast, (draft) => {
|
|
92
|
+
draft.functionName = newName;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Set workflow export interface ports
|
|
97
|
+
*
|
|
98
|
+
* @param ast - Workflow to modify
|
|
99
|
+
* @param ports - New ports configuration
|
|
100
|
+
* @returns Modified workflow
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const updated = setWorkflowPorts(workflow, [
|
|
105
|
+
* { name: "input", type: "String", direction: "input" },
|
|
106
|
+
* { name: "result", type: "Number", direction: "output" }
|
|
107
|
+
* ]);
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export function setWorkflowPorts(ast, ports) {
|
|
111
|
+
// Use produce directly with non-generic approach to avoid excessive type instantiation
|
|
112
|
+
return produce(ast, (draft) => {
|
|
113
|
+
draft.ports = ports;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=workflow.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manipulation API for programmatic workflow creation and modification
|
|
3
|
+
* All operations are immutable (return new AST) and validated
|
|
4
|
+
*
|
|
5
|
+
* This file re-exports all functions from the manipulation module for backward compatibility.
|
|
6
|
+
*/
|
|
7
|
+
export * from "./manipulation/index.js";
|
|
8
|
+
//# sourceMappingURL=manipulation.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manipulation API for programmatic workflow creation and modification
|
|
3
|
+
* All operations are immutable (return new AST) and validated
|
|
4
|
+
*
|
|
5
|
+
* This file re-exports all functions from the manipulation module for backward compatibility.
|
|
6
|
+
*/
|
|
7
|
+
export * from "./manipulation/index.js";
|
|
8
|
+
//# sourceMappingURL=manipulation.js.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { TParseOptions as ASTParseOptions, TWorkflowAST } from '../ast/types.js';
|
|
2
|
+
export interface ParseOptions extends Partial<ASTParseOptions> {
|
|
3
|
+
/**
|
|
4
|
+
* Name of the workflow to parse from the file.
|
|
5
|
+
* Required if the file contains multiple workflows.
|
|
6
|
+
*/
|
|
7
|
+
workflowName?: string;
|
|
8
|
+
/**
|
|
9
|
+
* When true, returns node types even if no workflows are found.
|
|
10
|
+
* Useful for files that only contain node type definitions.
|
|
11
|
+
*/
|
|
12
|
+
nodeTypesOnly?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface ParseResult {
|
|
15
|
+
ast: TWorkflowAST;
|
|
16
|
+
errors: string[];
|
|
17
|
+
warnings: string[];
|
|
18
|
+
/**
|
|
19
|
+
* All workflows found in the file (names only)
|
|
20
|
+
*/
|
|
21
|
+
availableWorkflows: string[];
|
|
22
|
+
/**
|
|
23
|
+
* All workflow ASTs found in the file (for local dependency generation)
|
|
24
|
+
*/
|
|
25
|
+
allWorkflows: TWorkflowAST[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Parse a workflow file and convert it to AST
|
|
29
|
+
*
|
|
30
|
+
* @param filePath - Path to the workflow file
|
|
31
|
+
* @param options - Parse options including workflow name
|
|
32
|
+
* @returns ParseResult with AST, errors, and warnings
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const result = await parseWorkflow('./my-workflow.ts', {
|
|
37
|
+
* workflowName: 'myWorkflow'
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* if (result.errors.length > 0) {
|
|
41
|
+
* console.error('Parse errors:', result.errors);
|
|
42
|
+
* } else {
|
|
43
|
+
* console.log('Parsed workflow:', result.ast.functionName);
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseWorkflow(filePath: string, options?: ParseOptions): Promise<ParseResult>;
|
|
48
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { parser } from '../parser.js';
|
|
2
|
+
import { getErrorMessage } from '../utils/error-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Parse a workflow file and convert it to AST
|
|
5
|
+
*
|
|
6
|
+
* @param filePath - Path to the workflow file
|
|
7
|
+
* @param options - Parse options including workflow name
|
|
8
|
+
* @returns ParseResult with AST, errors, and warnings
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const result = await parseWorkflow('./my-workflow.ts', {
|
|
13
|
+
* workflowName: 'myWorkflow'
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* if (result.errors.length > 0) {
|
|
17
|
+
* console.error('Parse errors:', result.errors);
|
|
18
|
+
* } else {
|
|
19
|
+
* console.log('Parsed workflow:', result.ast.functionName);
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export async function parseWorkflow(filePath, options) {
|
|
24
|
+
const errors = [];
|
|
25
|
+
const warnings = [];
|
|
26
|
+
let availableWorkflows = [];
|
|
27
|
+
try {
|
|
28
|
+
// Parse the file to extract nodes and workflows
|
|
29
|
+
const parsed = parser.parse(filePath);
|
|
30
|
+
warnings.push(...parsed.warnings);
|
|
31
|
+
// Get available workflow names
|
|
32
|
+
availableWorkflows = parsed.workflows.map((w) => w.functionName);
|
|
33
|
+
// Determine which workflow to use
|
|
34
|
+
let workflowName = options?.workflowName;
|
|
35
|
+
if (!workflowName) {
|
|
36
|
+
if (parsed.workflows.length === 0) {
|
|
37
|
+
// If nodeTypesOnly mode is enabled and we have node types, return them
|
|
38
|
+
if (options?.nodeTypesOnly && parsed.nodeTypes.length > 0) {
|
|
39
|
+
return {
|
|
40
|
+
ast: {
|
|
41
|
+
type: 'Workflow',
|
|
42
|
+
functionName: '',
|
|
43
|
+
name: '',
|
|
44
|
+
sourceFile: filePath,
|
|
45
|
+
nodeTypes: parsed.nodeTypes,
|
|
46
|
+
instances: [],
|
|
47
|
+
connections: [],
|
|
48
|
+
scopes: {},
|
|
49
|
+
startPorts: {},
|
|
50
|
+
exitPorts: {},
|
|
51
|
+
imports: [],
|
|
52
|
+
},
|
|
53
|
+
errors: [],
|
|
54
|
+
warnings,
|
|
55
|
+
availableWorkflows: [],
|
|
56
|
+
allWorkflows: [],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const nodeTypeCount = parsed.nodeTypes.length;
|
|
60
|
+
const nodeTypeHint = nodeTypeCount > 0
|
|
61
|
+
? ` (found ${nodeTypeCount} node type${nodeTypeCount === 1 ? '' : 's'}, but no workflow function)`
|
|
62
|
+
: '';
|
|
63
|
+
errors.push(`No workflows found in file${nodeTypeHint}. Add a /** @flowWeaver workflow */ annotation above an exported function to define a workflow. Ensure node type functions are annotated with /** @flowWeaver nodeType */ first.`);
|
|
64
|
+
throw new Error('No workflows found in file');
|
|
65
|
+
}
|
|
66
|
+
if (parsed.workflows.length > 1) {
|
|
67
|
+
errors.push(`[MULTIPLE_WORKFLOWS_FOUND] Multiple workflows found: ${availableWorkflows.join(', ')}. Please specify workflowName in options.`);
|
|
68
|
+
throw new Error('Multiple workflows found, workflowName required');
|
|
69
|
+
}
|
|
70
|
+
// Single workflow found, use it
|
|
71
|
+
workflowName = parsed.workflows[0].functionName;
|
|
72
|
+
}
|
|
73
|
+
// Find the workflow
|
|
74
|
+
const workflow = parsed.workflows.find((w) => w.functionName === workflowName);
|
|
75
|
+
if (!workflow) {
|
|
76
|
+
errors.push(`Workflow "${workflowName}" not found. Available: ${availableWorkflows.join(', ')}`);
|
|
77
|
+
throw new Error(`Workflow "${workflowName}" not found`);
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
ast: workflow,
|
|
81
|
+
errors: [],
|
|
82
|
+
warnings,
|
|
83
|
+
availableWorkflows,
|
|
84
|
+
allWorkflows: parsed.workflows,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
// If we already added errors, return with availableWorkflows
|
|
89
|
+
if (errors.length > 0) {
|
|
90
|
+
return {
|
|
91
|
+
ast: {}, // Return empty AST on error
|
|
92
|
+
errors,
|
|
93
|
+
warnings,
|
|
94
|
+
availableWorkflows, // Include available workflows even on error
|
|
95
|
+
allWorkflows: [],
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// Handle unexpected errors
|
|
99
|
+
const errorMessage = getErrorMessage(error);
|
|
100
|
+
errors.push(`Failed to parse workflow: ${errorMessage}`);
|
|
101
|
+
return {
|
|
102
|
+
ast: {},
|
|
103
|
+
errors,
|
|
104
|
+
warnings,
|
|
105
|
+
availableWorkflows,
|
|
106
|
+
allWorkflows: [],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure pattern API — no I/O, no console, no filesystem writes.
|
|
3
|
+
*
|
|
4
|
+
* Provides business logic for listing patterns, applying patterns to workflows,
|
|
5
|
+
* and generating node type code. CLI and MCP layers call these functions
|
|
6
|
+
* and handle their own I/O.
|
|
7
|
+
*/
|
|
8
|
+
import type { TPatternAST, TNodeTypeAST, TWorkflowAST } from '../ast/types.js';
|
|
9
|
+
export interface PatternInfo {
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
inputPorts: Array<{
|
|
13
|
+
name: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
}>;
|
|
16
|
+
outputPorts: Array<{
|
|
17
|
+
name: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
}>;
|
|
20
|
+
nodes: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface WorkflowFileInfo {
|
|
23
|
+
filePath: string;
|
|
24
|
+
workflows: Array<{
|
|
25
|
+
name: string;
|
|
26
|
+
functionName: string;
|
|
27
|
+
nodeCount: number;
|
|
28
|
+
connectionCount: number;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
export interface ExtractPatternOptions {
|
|
32
|
+
workflowAST: TWorkflowAST;
|
|
33
|
+
nodeTypes: TNodeTypeAST[];
|
|
34
|
+
nodeIds: string[];
|
|
35
|
+
name?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface ExtractPatternResult {
|
|
38
|
+
patternCode: string;
|
|
39
|
+
patternName: string;
|
|
40
|
+
nodes: string[];
|
|
41
|
+
inputPorts: string[];
|
|
42
|
+
outputPorts: string[];
|
|
43
|
+
internalConnectionCount: number;
|
|
44
|
+
}
|
|
45
|
+
export interface ApplyPatternOptions {
|
|
46
|
+
/** The pattern AST to apply */
|
|
47
|
+
patternAST: TPatternAST;
|
|
48
|
+
/** Raw text content of the target workflow file */
|
|
49
|
+
targetContent: string;
|
|
50
|
+
/** Node type names already present in the target workflow */
|
|
51
|
+
targetNodeTypes: Set<string>;
|
|
52
|
+
/** Optional prefix for node IDs to avoid conflicts */
|
|
53
|
+
prefix?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface ApplyPatternResult {
|
|
56
|
+
/** Modified file content with the pattern applied */
|
|
57
|
+
modifiedContent: string;
|
|
58
|
+
/** Number of node instances added */
|
|
59
|
+
nodesAdded: number;
|
|
60
|
+
/** Number of connections added */
|
|
61
|
+
connectionsAdded: number;
|
|
62
|
+
/** Names of node types added (those not already in the target) */
|
|
63
|
+
nodeTypesAdded: string[];
|
|
64
|
+
/** Node type names that conflict (exist in both pattern and target) */
|
|
65
|
+
conflicts: string[];
|
|
66
|
+
/** Human-readable instructions for wiring IN/OUT ports */
|
|
67
|
+
wiringInstructions: string[];
|
|
68
|
+
/** Structured fw_modify_batch operations for wiring IN/OUT ports */
|
|
69
|
+
wiringOperations: Array<{
|
|
70
|
+
operation: 'addConnection';
|
|
71
|
+
params: {
|
|
72
|
+
from: string;
|
|
73
|
+
to: string;
|
|
74
|
+
};
|
|
75
|
+
}>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Parse a file and return metadata for all patterns found.
|
|
79
|
+
*
|
|
80
|
+
* Pure: reads file via AnnotationParser, returns structured data.
|
|
81
|
+
*/
|
|
82
|
+
export declare function listPatterns(filePath: string): PatternInfo[];
|
|
83
|
+
/**
|
|
84
|
+
* Compute the result of applying a pattern to a workflow.
|
|
85
|
+
*
|
|
86
|
+
* Pure: takes AST + content + options, returns the modified content
|
|
87
|
+
* and structured metadata (conflicts, wiring instructions, etc.).
|
|
88
|
+
* Does **not** write to disk.
|
|
89
|
+
*/
|
|
90
|
+
export declare function applyPattern(options: ApplyPatternOptions): ApplyPatternResult;
|
|
91
|
+
/**
|
|
92
|
+
* Generate a TypeScript stub for a node type.
|
|
93
|
+
*
|
|
94
|
+
* Produces a JSDoc-annotated function with the correct ports.
|
|
95
|
+
*/
|
|
96
|
+
export declare function generateNodeTypeCode(nodeType: TNodeTypeAST): string;
|
|
97
|
+
/**
|
|
98
|
+
* Scan a directory for files containing @flowWeaver workflow annotations
|
|
99
|
+
* and return structured metadata for each.
|
|
100
|
+
*
|
|
101
|
+
* Pure: reads files via AnnotationParser, returns structured data.
|
|
102
|
+
* Skips files that fail to parse.
|
|
103
|
+
*/
|
|
104
|
+
export declare function findWorkflows(directory: string, pattern?: string): Promise<WorkflowFileInfo[]>;
|
|
105
|
+
/**
|
|
106
|
+
* Extract a reusable pattern from selected nodes in a workflow.
|
|
107
|
+
*
|
|
108
|
+
* Pure: takes AST + node IDs, returns pattern code and metadata.
|
|
109
|
+
* Does **not** write to disk.
|
|
110
|
+
*/
|
|
111
|
+
export declare function extractPattern(options: ExtractPatternOptions): ExtractPatternResult;
|
|
112
|
+
//# sourceMappingURL=patterns.d.ts.map
|