@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,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public Template API
|
|
3
|
+
*
|
|
4
|
+
* Provides access to workflow and node templates for creating new flows.
|
|
5
|
+
* Templates are starters that can be customized for specific use cases.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { type WorkflowTemplate, type NodeTemplate, type WorkflowTemplateOptions } from "../cli/templates/index.js";
|
|
10
|
+
export type { WorkflowTemplate, NodeTemplate, WorkflowTemplateOptions };
|
|
11
|
+
/**
|
|
12
|
+
* List all available workflow templates
|
|
13
|
+
*
|
|
14
|
+
* @returns Array of workflow template definitions
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const templates = listWorkflowTemplates();
|
|
19
|
+
* templates.forEach(t => console.log(`${t.id}: ${t.description}`));
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function listWorkflowTemplates(): WorkflowTemplate[];
|
|
23
|
+
/**
|
|
24
|
+
* List all available node templates
|
|
25
|
+
*
|
|
26
|
+
* @returns Array of node template definitions
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const templates = listNodeTemplates();
|
|
31
|
+
* templates.forEach(t => console.log(`${t.id}: ${t.description}`));
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function listNodeTemplates(): NodeTemplate[];
|
|
35
|
+
/**
|
|
36
|
+
* Get a workflow template by ID
|
|
37
|
+
*
|
|
38
|
+
* @param id - Template identifier (e.g., "sequential", "foreach", "ai-agent")
|
|
39
|
+
* @returns Template definition or undefined if not found
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const template = getWorkflowTemplate("sequential");
|
|
44
|
+
* if (template) {
|
|
45
|
+
* console.log(template.description);
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function getWorkflowTemplate(id: string): WorkflowTemplate | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Get a node template by ID
|
|
52
|
+
*
|
|
53
|
+
* @param id - Template identifier (e.g., "validator", "transformer", "llm-call")
|
|
54
|
+
* @returns Template definition or undefined if not found
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const template = getNodeTemplate("validator");
|
|
59
|
+
* if (template) {
|
|
60
|
+
* console.log(template.description);
|
|
61
|
+
* }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function getNodeTemplate(id: string): NodeTemplate | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Generate workflow code from a template
|
|
67
|
+
*
|
|
68
|
+
* @param templateId - Template identifier
|
|
69
|
+
* @param options - Generation options including workflow name
|
|
70
|
+
* @returns Generated TypeScript code
|
|
71
|
+
* @throws Error if template not found
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const code = generateWorkflowFromTemplate("sequential", {
|
|
76
|
+
* workflowName: "processOrder",
|
|
77
|
+
* async: true,
|
|
78
|
+
* });
|
|
79
|
+
* fs.writeFileSync("processOrder.ts", code);
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function generateWorkflowFromTemplate(templateId: string, options: WorkflowTemplateOptions): string;
|
|
83
|
+
/**
|
|
84
|
+
* Generate node type code from a template
|
|
85
|
+
*
|
|
86
|
+
* @param templateId - Template identifier
|
|
87
|
+
* @param name - Name for the generated node function
|
|
88
|
+
* @returns Generated TypeScript code
|
|
89
|
+
* @throws Error if template not found
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const code = generateNodeFromTemplate("validator", "validateInput");
|
|
94
|
+
* // Insert into existing file or create new one
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function generateNodeFromTemplate(templateId: string, name: string, config?: Record<string, unknown>): string;
|
|
98
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public Template API
|
|
3
|
+
*
|
|
4
|
+
* Provides access to workflow and node templates for creating new flows.
|
|
5
|
+
* Templates are starters that can be customized for specific use cases.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { workflowTemplates, nodeTemplates, getWorkflowTemplate as getWorkflowTemplateById, getNodeTemplate as getNodeTemplateById, } from "../cli/templates/index.js";
|
|
10
|
+
/**
|
|
11
|
+
* List all available workflow templates
|
|
12
|
+
*
|
|
13
|
+
* @returns Array of workflow template definitions
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const templates = listWorkflowTemplates();
|
|
18
|
+
* templates.forEach(t => console.log(`${t.id}: ${t.description}`));
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function listWorkflowTemplates() {
|
|
22
|
+
return workflowTemplates;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* List all available node templates
|
|
26
|
+
*
|
|
27
|
+
* @returns Array of node template definitions
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const templates = listNodeTemplates();
|
|
32
|
+
* templates.forEach(t => console.log(`${t.id}: ${t.description}`));
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function listNodeTemplates() {
|
|
36
|
+
return nodeTemplates;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get a workflow template by ID
|
|
40
|
+
*
|
|
41
|
+
* @param id - Template identifier (e.g., "sequential", "foreach", "ai-agent")
|
|
42
|
+
* @returns Template definition or undefined if not found
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const template = getWorkflowTemplate("sequential");
|
|
47
|
+
* if (template) {
|
|
48
|
+
* console.log(template.description);
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export function getWorkflowTemplate(id) {
|
|
53
|
+
return getWorkflowTemplateById(id);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get a node template by ID
|
|
57
|
+
*
|
|
58
|
+
* @param id - Template identifier (e.g., "validator", "transformer", "llm-call")
|
|
59
|
+
* @returns Template definition or undefined if not found
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* const template = getNodeTemplate("validator");
|
|
64
|
+
* if (template) {
|
|
65
|
+
* console.log(template.description);
|
|
66
|
+
* }
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export function getNodeTemplate(id) {
|
|
70
|
+
return getNodeTemplateById(id);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate workflow code from a template
|
|
74
|
+
*
|
|
75
|
+
* @param templateId - Template identifier
|
|
76
|
+
* @param options - Generation options including workflow name
|
|
77
|
+
* @returns Generated TypeScript code
|
|
78
|
+
* @throws Error if template not found
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const code = generateWorkflowFromTemplate("sequential", {
|
|
83
|
+
* workflowName: "processOrder",
|
|
84
|
+
* async: true,
|
|
85
|
+
* });
|
|
86
|
+
* fs.writeFileSync("processOrder.ts", code);
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export function generateWorkflowFromTemplate(templateId, options) {
|
|
90
|
+
const template = getWorkflowTemplateById(templateId);
|
|
91
|
+
if (!template) {
|
|
92
|
+
throw new Error(`Workflow template "${templateId}" not found`);
|
|
93
|
+
}
|
|
94
|
+
return template.generate(options);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Generate node type code from a template
|
|
98
|
+
*
|
|
99
|
+
* @param templateId - Template identifier
|
|
100
|
+
* @param name - Name for the generated node function
|
|
101
|
+
* @returns Generated TypeScript code
|
|
102
|
+
* @throws Error if template not found
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const code = generateNodeFromTemplate("validator", "validateInput");
|
|
107
|
+
* // Insert into existing file or create new one
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export function generateNodeFromTemplate(templateId, name, config) {
|
|
111
|
+
const template = getNodeTemplateById(templateId);
|
|
112
|
+
if (!template) {
|
|
113
|
+
throw new Error(`Node template "${templateId}" not found`);
|
|
114
|
+
}
|
|
115
|
+
return template.generate(name, config);
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { TASTTransformer, TWorkflowAST } from "../ast/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Applies a single transformer to a workflow AST.
|
|
4
|
+
* The AST is deep-cloned before transformation to avoid mutating the original.
|
|
5
|
+
*
|
|
6
|
+
* @param ast - The workflow AST to transform.
|
|
7
|
+
* @param transformer - The transformer to apply.
|
|
8
|
+
* @returns A new, transformed workflow AST.
|
|
9
|
+
*/
|
|
10
|
+
export declare function transformWorkflow(ast: TWorkflowAST, transformer: TASTTransformer): TWorkflowAST;
|
|
11
|
+
/**
|
|
12
|
+
* Applies an ordered sequence of transformers to a workflow AST.
|
|
13
|
+
* Each transformer receives the output of the previous one, and each step
|
|
14
|
+
* deep-clones its input via {@link transformWorkflow}.
|
|
15
|
+
*
|
|
16
|
+
* @param ast - The initial workflow AST.
|
|
17
|
+
* @param transformers - An ordered array of transformers to apply sequentially.
|
|
18
|
+
* @returns The final transformed workflow AST.
|
|
19
|
+
*/
|
|
20
|
+
export declare function applyTransformations(ast: TWorkflowAST, transformers: TASTTransformer[]): TWorkflowAST;
|
|
21
|
+
/**
|
|
22
|
+
* Composes multiple transformers into a single transformer.
|
|
23
|
+
* The resulting transformer's name is a comma-separated list of the constituent names
|
|
24
|
+
* wrapped in "composed(...)". When invoked, it applies all transformers in order
|
|
25
|
+
* via {@link applyTransformations}.
|
|
26
|
+
*
|
|
27
|
+
* @param transformers - The transformers to compose.
|
|
28
|
+
* @returns A single composite transformer.
|
|
29
|
+
*/
|
|
30
|
+
export declare function composeTransformers(transformers: TASTTransformer[]): TASTTransformer;
|
|
31
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applies a single transformer to a workflow AST.
|
|
3
|
+
* The AST is deep-cloned before transformation to avoid mutating the original.
|
|
4
|
+
*
|
|
5
|
+
* @param ast - The workflow AST to transform.
|
|
6
|
+
* @param transformer - The transformer to apply.
|
|
7
|
+
* @returns A new, transformed workflow AST.
|
|
8
|
+
*/
|
|
9
|
+
export function transformWorkflow(ast, transformer) {
|
|
10
|
+
const cloned = JSON.parse(JSON.stringify(ast));
|
|
11
|
+
return transformer.transform(cloned);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Applies an ordered sequence of transformers to a workflow AST.
|
|
15
|
+
* Each transformer receives the output of the previous one, and each step
|
|
16
|
+
* deep-clones its input via {@link transformWorkflow}.
|
|
17
|
+
*
|
|
18
|
+
* @param ast - The initial workflow AST.
|
|
19
|
+
* @param transformers - An ordered array of transformers to apply sequentially.
|
|
20
|
+
* @returns The final transformed workflow AST.
|
|
21
|
+
*/
|
|
22
|
+
export function applyTransformations(ast, transformers) {
|
|
23
|
+
return transformers.reduce((currentAST, transformer) => transformWorkflow(currentAST, transformer), ast);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Composes multiple transformers into a single transformer.
|
|
27
|
+
* The resulting transformer's name is a comma-separated list of the constituent names
|
|
28
|
+
* wrapped in "composed(...)". When invoked, it applies all transformers in order
|
|
29
|
+
* via {@link applyTransformations}.
|
|
30
|
+
*
|
|
31
|
+
* @param transformers - The transformers to compose.
|
|
32
|
+
* @returns A single composite transformer.
|
|
33
|
+
*/
|
|
34
|
+
export function composeTransformers(transformers) {
|
|
35
|
+
return {
|
|
36
|
+
name: `composed(${transformers.map((t) => t.name).join(", ")})`,
|
|
37
|
+
transform: (ast) => applyTransformations(ast, transformers),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API wrapper for workflow validation
|
|
3
|
+
*
|
|
4
|
+
* This module provides a simplified validation interface that uses
|
|
5
|
+
* the consolidated WorkflowValidator internally.
|
|
6
|
+
*/
|
|
7
|
+
import type { TValidationRule, TWorkflowAST } from "../ast/index.js";
|
|
8
|
+
import { type TValidationError } from "../validator.js";
|
|
9
|
+
export interface ValidationResult {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
errors: TValidationError[];
|
|
12
|
+
warnings: TValidationError[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validates a workflow AST
|
|
16
|
+
*
|
|
17
|
+
* Runs the built-in validator, then agent-specific rules, then any custom rules.
|
|
18
|
+
* Agent rules are always applied automatically.
|
|
19
|
+
*
|
|
20
|
+
* @param ast - The workflow AST to validate
|
|
21
|
+
* @param customRules - Optional array of additional custom validation rules
|
|
22
|
+
* @returns ValidationResult with errors and warnings
|
|
23
|
+
*/
|
|
24
|
+
export declare function validateWorkflow(ast: TWorkflowAST, customRules?: TValidationRule[]): ValidationResult;
|
|
25
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API wrapper for workflow validation
|
|
3
|
+
*
|
|
4
|
+
* This module provides a simplified validation interface that uses
|
|
5
|
+
* the consolidated WorkflowValidator internally.
|
|
6
|
+
*/
|
|
7
|
+
import { validator } from "../validator.js";
|
|
8
|
+
import { getAgentValidationRules } from "../validation/agent-rules.js";
|
|
9
|
+
/**
|
|
10
|
+
* Validates a workflow AST
|
|
11
|
+
*
|
|
12
|
+
* Runs the built-in validator, then agent-specific rules, then any custom rules.
|
|
13
|
+
* Agent rules are always applied automatically.
|
|
14
|
+
*
|
|
15
|
+
* @param ast - The workflow AST to validate
|
|
16
|
+
* @param customRules - Optional array of additional custom validation rules
|
|
17
|
+
* @returns ValidationResult with errors and warnings
|
|
18
|
+
*/
|
|
19
|
+
export function validateWorkflow(ast, customRules) {
|
|
20
|
+
// Use the consolidated validator
|
|
21
|
+
const result = validator.validate(ast);
|
|
22
|
+
// Apply agent-specific rules + any custom rules
|
|
23
|
+
const allRules = [...getAgentValidationRules(), ...(customRules || [])];
|
|
24
|
+
for (const rule of allRules) {
|
|
25
|
+
const ruleResults = rule.validate(ast);
|
|
26
|
+
for (const err of ruleResults) {
|
|
27
|
+
if (err.type === 'warning') {
|
|
28
|
+
result.warnings.push(err);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
result.errors.push(err);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Re-evaluate validity
|
|
36
|
+
result.valid = result.errors.length === 0;
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow File Operations
|
|
3
|
+
* Functions for adding, removing, and managing workflows in source files
|
|
4
|
+
*/
|
|
5
|
+
export interface WorkflowInfo {
|
|
6
|
+
name: string;
|
|
7
|
+
functionName: string;
|
|
8
|
+
isExported: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface AddWorkflowOptions {
|
|
11
|
+
exported?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Add a new workflow function to the source code
|
|
15
|
+
*/
|
|
16
|
+
export declare function addWorkflowToSource(source: string, workflowName: string, options?: AddWorkflowOptions): string;
|
|
17
|
+
/**
|
|
18
|
+
* Remove a workflow function from the source code
|
|
19
|
+
*/
|
|
20
|
+
export declare function removeWorkflowFromSource(source: string, workflowName: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Toggle the export status of a workflow
|
|
23
|
+
*/
|
|
24
|
+
export declare function toggleWorkflowExport(source: string, workflowName: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Get all available workflows from source code
|
|
27
|
+
*/
|
|
28
|
+
export declare function getAvailableWorkflows(source: string): WorkflowInfo[];
|
|
29
|
+
//# sourceMappingURL=workflow-file-operations.d.ts.map
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow File Operations
|
|
3
|
+
* Functions for adding, removing, and managing workflows in source files
|
|
4
|
+
*/
|
|
5
|
+
import * as ts from "typescript";
|
|
6
|
+
// Marker for runtime section
|
|
7
|
+
const RUNTIME_END_MARKER = "// @flow-weaver-runtime-end";
|
|
8
|
+
/**
|
|
9
|
+
* Parse source and find all workflow functions
|
|
10
|
+
*/
|
|
11
|
+
function findWorkflowFunctions(source) {
|
|
12
|
+
const sourceFile = ts.createSourceFile("temp.ts", source, ts.ScriptTarget.Latest, true);
|
|
13
|
+
const workflows = [];
|
|
14
|
+
ts.forEachChild(sourceFile, (node) => {
|
|
15
|
+
if (ts.isFunctionDeclaration(node) && node.name) {
|
|
16
|
+
const functionName = node.name.text;
|
|
17
|
+
const functionStart = node.getFullStart();
|
|
18
|
+
const leadingComments = ts.getLeadingCommentRanges(source, functionStart);
|
|
19
|
+
if (!leadingComments)
|
|
20
|
+
return;
|
|
21
|
+
// Check for @flowWeaver workflow JSDoc
|
|
22
|
+
for (const comment of leadingComments) {
|
|
23
|
+
if (comment.kind === ts.SyntaxKind.MultiLineCommentTrivia) {
|
|
24
|
+
const commentText = source.slice(comment.pos, comment.end);
|
|
25
|
+
if (commentText.includes("@flowWeaver workflow")) {
|
|
26
|
+
// Check for @name tag
|
|
27
|
+
const nameMatch = commentText.match(/@name\s+(\S+)/);
|
|
28
|
+
const name = nameMatch ? nameMatch[1] : functionName;
|
|
29
|
+
const isExported = node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) ?? false;
|
|
30
|
+
workflows.push({
|
|
31
|
+
node,
|
|
32
|
+
name,
|
|
33
|
+
functionName,
|
|
34
|
+
isExported,
|
|
35
|
+
jsdocStart: comment.pos,
|
|
36
|
+
jsdocEnd: comment.end,
|
|
37
|
+
});
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return workflows;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Generate a new workflow function scaffold
|
|
48
|
+
*/
|
|
49
|
+
function generateWorkflowScaffold(workflowName, exported) {
|
|
50
|
+
const exportKeyword = exported ? "export " : "";
|
|
51
|
+
return `/**
|
|
52
|
+
* @flowWeaver workflow
|
|
53
|
+
*/
|
|
54
|
+
${exportKeyword}function ${workflowName}(execute: boolean, data: {}): { onSuccess: boolean; onFailure: boolean } {
|
|
55
|
+
throw new Error("Not implemented");
|
|
56
|
+
}`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Add a new workflow function to the source code
|
|
60
|
+
*/
|
|
61
|
+
export function addWorkflowToSource(source, workflowName, options = {}) {
|
|
62
|
+
const { exported = true } = options;
|
|
63
|
+
// Check if workflow already exists
|
|
64
|
+
const existingWorkflows = findWorkflowFunctions(source);
|
|
65
|
+
const exists = existingWorkflows.some((w) => w.name === workflowName || w.functionName === workflowName);
|
|
66
|
+
if (exists) {
|
|
67
|
+
throw new Error(`Workflow "${workflowName}" already exists`);
|
|
68
|
+
}
|
|
69
|
+
// Generate the new workflow
|
|
70
|
+
const newWorkflow = generateWorkflowScaffold(workflowName, exported);
|
|
71
|
+
// Find insertion point
|
|
72
|
+
let insertPosition;
|
|
73
|
+
// Try to insert after runtime section
|
|
74
|
+
const runtimeEndPos = source.indexOf(RUNTIME_END_MARKER);
|
|
75
|
+
if (runtimeEndPos !== -1) {
|
|
76
|
+
const afterMarker = source.indexOf("\n", runtimeEndPos);
|
|
77
|
+
insertPosition = afterMarker !== -1 ? afterMarker + 1 : runtimeEndPos + RUNTIME_END_MARKER.length;
|
|
78
|
+
}
|
|
79
|
+
else if (existingWorkflows.length > 0) {
|
|
80
|
+
// Insert before the first existing workflow
|
|
81
|
+
insertPosition = existingWorkflows[0].jsdocStart;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// Insert at the end
|
|
85
|
+
insertPosition = source.length;
|
|
86
|
+
}
|
|
87
|
+
// Insert the new workflow
|
|
88
|
+
const before = source.slice(0, insertPosition);
|
|
89
|
+
const after = source.slice(insertPosition);
|
|
90
|
+
// Add proper spacing
|
|
91
|
+
const needsLeadingNewline = before.length > 0 && !before.endsWith("\n\n");
|
|
92
|
+
const needsTrailingNewline = after.length > 0 && !after.startsWith("\n");
|
|
93
|
+
return (before +
|
|
94
|
+
(needsLeadingNewline ? "\n\n" : "") +
|
|
95
|
+
newWorkflow +
|
|
96
|
+
(needsTrailingNewline ? "\n\n" : "") +
|
|
97
|
+
after);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Remove a workflow function from the source code
|
|
101
|
+
*/
|
|
102
|
+
export function removeWorkflowFromSource(source, workflowName) {
|
|
103
|
+
const workflows = findWorkflowFunctions(source);
|
|
104
|
+
// Find the workflow to remove
|
|
105
|
+
const workflowToRemove = workflows.find((w) => w.name === workflowName || w.functionName === workflowName);
|
|
106
|
+
if (!workflowToRemove) {
|
|
107
|
+
throw new Error(`Workflow "${workflowName}" not found`);
|
|
108
|
+
}
|
|
109
|
+
// Check if it's the last workflow
|
|
110
|
+
if (workflows.length === 1) {
|
|
111
|
+
throw new Error(`Cannot remove the last workflow from file`);
|
|
112
|
+
}
|
|
113
|
+
// Calculate the range to remove (including JSDoc and trailing newlines)
|
|
114
|
+
const startPos = workflowToRemove.jsdocStart;
|
|
115
|
+
let endPos = workflowToRemove.node.end;
|
|
116
|
+
// Include trailing newlines
|
|
117
|
+
while (endPos < source.length && (source[endPos] === '\n' || source[endPos] === '\r')) {
|
|
118
|
+
endPos++;
|
|
119
|
+
}
|
|
120
|
+
// Remove the workflow
|
|
121
|
+
const before = source.slice(0, startPos);
|
|
122
|
+
const after = source.slice(endPos);
|
|
123
|
+
return before + after;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Toggle the export status of a workflow
|
|
127
|
+
*/
|
|
128
|
+
export function toggleWorkflowExport(source, workflowName) {
|
|
129
|
+
const workflows = findWorkflowFunctions(source);
|
|
130
|
+
// Find the workflow to toggle
|
|
131
|
+
const workflow = workflows.find((w) => w.name === workflowName || w.functionName === workflowName);
|
|
132
|
+
if (!workflow) {
|
|
133
|
+
throw new Error(`Workflow "${workflowName}" not found`);
|
|
134
|
+
}
|
|
135
|
+
// Find the function keyword position
|
|
136
|
+
let functionKeywordPos = -1;
|
|
137
|
+
// Find the 'function' keyword
|
|
138
|
+
for (let i = workflow.jsdocEnd; i < source.length - 7; i++) {
|
|
139
|
+
if (source.slice(i, i + 8) === "function") {
|
|
140
|
+
functionKeywordPos = i;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
if (source.slice(i, i + 15) === "export function") {
|
|
144
|
+
functionKeywordPos = i;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (functionKeywordPos === -1) {
|
|
149
|
+
throw new Error(`Could not find function declaration for "${workflowName}"`);
|
|
150
|
+
}
|
|
151
|
+
if (workflow.isExported) {
|
|
152
|
+
// Remove 'export ' keyword
|
|
153
|
+
const exportPos = source.lastIndexOf("export", functionKeywordPos);
|
|
154
|
+
if (exportPos !== -1 && exportPos >= workflow.jsdocEnd) {
|
|
155
|
+
// Find the space after export
|
|
156
|
+
let spaceEnd = exportPos + 6;
|
|
157
|
+
while (spaceEnd < source.length && (source[spaceEnd] === ' ' || source[spaceEnd] === '\t')) {
|
|
158
|
+
spaceEnd++;
|
|
159
|
+
}
|
|
160
|
+
return source.slice(0, exportPos) + source.slice(spaceEnd);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// Add 'export ' keyword before 'function'
|
|
165
|
+
return source.slice(0, functionKeywordPos) + "export " + source.slice(functionKeywordPos);
|
|
166
|
+
}
|
|
167
|
+
return source;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get all available workflows from source code
|
|
171
|
+
*/
|
|
172
|
+
export function getAvailableWorkflows(source) {
|
|
173
|
+
const workflows = findWorkflowFunctions(source);
|
|
174
|
+
return workflows.map((w) => ({
|
|
175
|
+
name: w.name,
|
|
176
|
+
functionName: w.functionName,
|
|
177
|
+
isExported: w.isExported,
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=workflow-file-operations.js.map
|