@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,284 @@
|
|
|
1
|
+
import { RESERVED_NODE_NAMES, isStartNode, isExitNode, isSuccessPort, isFailurePort, } from '../constants.js';
|
|
2
|
+
export function buildControlFlowGraph(workflow, nodeTypes) {
|
|
3
|
+
const graph = new Map();
|
|
4
|
+
const inDegree = new Map();
|
|
5
|
+
graph.set(RESERVED_NODE_NAMES.START, []);
|
|
6
|
+
inDegree.set(RESERVED_NODE_NAMES.START, 0);
|
|
7
|
+
graph.set(RESERVED_NODE_NAMES.EXIT, []);
|
|
8
|
+
inDegree.set(RESERVED_NODE_NAMES.EXIT, 0);
|
|
9
|
+
// Initialize graph with instance IDs (exclude per-port scoped children)
|
|
10
|
+
workflow.instances.forEach((instance) => {
|
|
11
|
+
// Skip per-port scoped children - they execute in parent's scope function
|
|
12
|
+
if (isPerPortScopedChild(instance, workflow, nodeTypes)) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
graph.set(instance.id, []);
|
|
16
|
+
inDegree.set(instance.id, 0);
|
|
17
|
+
});
|
|
18
|
+
workflow.connections.forEach((conn) => {
|
|
19
|
+
const fromNode = conn.from.node;
|
|
20
|
+
const toNode = conn.to.node;
|
|
21
|
+
// Skip scoped connections - they're internal to scope, not main control flow
|
|
22
|
+
// A scoped connection has scope set on either the from or to port reference
|
|
23
|
+
if (conn.from.scope || conn.to.scope) {
|
|
24
|
+
return; // Skip this connection
|
|
25
|
+
}
|
|
26
|
+
// Skip connections involving per-port scoped children
|
|
27
|
+
const fromInstance = workflow.instances.find((i) => i.id === fromNode);
|
|
28
|
+
const toInstance = workflow.instances.find((i) => i.id === toNode);
|
|
29
|
+
if ((fromInstance && isPerPortScopedChild(fromInstance, workflow, nodeTypes)) ||
|
|
30
|
+
(toInstance && isPerPortScopedChild(toInstance, workflow, nodeTypes))) {
|
|
31
|
+
return; // Skip this connection
|
|
32
|
+
}
|
|
33
|
+
// Include both control-flow AND data-flow edges so the topological sort
|
|
34
|
+
// respects data dependencies (e.g., node A produces data consumed by node B).
|
|
35
|
+
// Self-loops (fromNode === toNode) are intentionally included so Kahn's
|
|
36
|
+
// algorithm detects them as cycles.
|
|
37
|
+
if (graph.has(fromNode) && graph.has(toNode)) {
|
|
38
|
+
const successors = graph.get(fromNode) || [];
|
|
39
|
+
if (!successors.includes(toNode)) {
|
|
40
|
+
successors.push(toNode);
|
|
41
|
+
graph.set(fromNode, successors);
|
|
42
|
+
inDegree.set(toNode, (inDegree.get(toNode) || 0) + 1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
// Connect instances with no incoming edges to Start
|
|
47
|
+
workflow.instances.forEach((instance) => {
|
|
48
|
+
// Skip per-port scoped children
|
|
49
|
+
if (isPerPortScopedChild(instance, workflow, nodeTypes)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if ((inDegree.get(instance.id) || 0) === 0) {
|
|
53
|
+
const startSuccessors = graph.get(RESERVED_NODE_NAMES.START) || [];
|
|
54
|
+
if (!startSuccessors.includes(instance.id)) {
|
|
55
|
+
startSuccessors.push(instance.id);
|
|
56
|
+
graph.set(RESERVED_NODE_NAMES.START, startSuccessors);
|
|
57
|
+
inDegree.set(instance.id, 1);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// Connect instances with no outgoing edges to Exit
|
|
62
|
+
workflow.instances.forEach((instance) => {
|
|
63
|
+
// Skip per-port scoped children
|
|
64
|
+
if (isPerPortScopedChild(instance, workflow, nodeTypes)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const successors = graph.get(instance.id) || [];
|
|
68
|
+
if (successors.length === 0) {
|
|
69
|
+
successors.push(RESERVED_NODE_NAMES.EXIT);
|
|
70
|
+
graph.set(instance.id, successors);
|
|
71
|
+
inDegree.set(RESERVED_NODE_NAMES.EXIT, (inDegree.get(RESERVED_NODE_NAMES.EXIT) || 0) + 1);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return { graph, inDegree };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Perform Kahn's topological sort algorithm on control flow graph
|
|
78
|
+
*
|
|
79
|
+
* Determines the execution order of nodes in the workflow, ensuring all
|
|
80
|
+
* dependencies execute before dependent nodes.
|
|
81
|
+
*
|
|
82
|
+
* Algorithm:
|
|
83
|
+
* 1. Start with nodes that have no dependencies (in-degree = 0)
|
|
84
|
+
* 2. Process each node, decreasing in-degree of successors
|
|
85
|
+
* 3. Add nodes with in-degree 0 to queue
|
|
86
|
+
* 4. Repeat until all nodes processed
|
|
87
|
+
*
|
|
88
|
+
* @param controlFlowGraph - Control flow graph with nodes and edges
|
|
89
|
+
* @returns Ordered array of node IDs in execution order
|
|
90
|
+
* @throws {Error} If circular dependency detected (cycle in graph)
|
|
91
|
+
*/
|
|
92
|
+
export function performKahnsTopologicalSort(controlFlowGraph) {
|
|
93
|
+
const executionOrder = [];
|
|
94
|
+
const inDegree = new Map(controlFlowGraph.inDegree);
|
|
95
|
+
const queue = [];
|
|
96
|
+
inDegree.forEach((degree, node) => {
|
|
97
|
+
if (degree === 0) {
|
|
98
|
+
queue.push(node);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
while (queue.length > 0) {
|
|
102
|
+
const node = queue.shift();
|
|
103
|
+
executionOrder.push(node);
|
|
104
|
+
const successors = controlFlowGraph.graph.get(node) || [];
|
|
105
|
+
successors.forEach((successor) => {
|
|
106
|
+
const newDegree = (inDegree.get(successor) || 0) - 1;
|
|
107
|
+
inDegree.set(successor, newDegree);
|
|
108
|
+
if (newDegree === 0) {
|
|
109
|
+
queue.push(successor);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (executionOrder.length !== controlFlowGraph.graph.size) {
|
|
114
|
+
// Circular dependency detected - collect nodes still in the cycle
|
|
115
|
+
const cycleNodes = [];
|
|
116
|
+
inDegree.forEach((degree, node) => {
|
|
117
|
+
if (degree > 0 && !executionOrder.includes(node)) {
|
|
118
|
+
cycleNodes.push(node);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
throw new Error(`Circular dependency detected in workflow. Nodes in cycle: ${cycleNodes.join(', ')}`);
|
|
122
|
+
}
|
|
123
|
+
return executionOrder;
|
|
124
|
+
}
|
|
125
|
+
export function findAllBranchingNodes(workflow, nodeTypes) {
|
|
126
|
+
const branchingNodes = new Set();
|
|
127
|
+
workflow.connections.forEach((conn) => {
|
|
128
|
+
const nodeName = conn.from.node;
|
|
129
|
+
const portName = conn.from.port;
|
|
130
|
+
if (isSuccessPort(portName) || isFailurePort(portName)) {
|
|
131
|
+
// Skip per-port scoped children - their branches shouldn't affect main control flow
|
|
132
|
+
const instance = workflow.instances.find((i) => i.id === nodeName);
|
|
133
|
+
if (instance && isPerPortScopedChild(instance, workflow, nodeTypes)) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
branchingNodes.add(nodeName);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
return branchingNodes;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Check if an instance is a per-port scoped child.
|
|
143
|
+
*
|
|
144
|
+
* Per-port scoped children:
|
|
145
|
+
* - Have a parent reference (instance.parent)
|
|
146
|
+
* - Parent has ports with matching scope name (scope declared via @scope tag or callback param)
|
|
147
|
+
* - Execute inside parent's scope function, NOT in main control flow
|
|
148
|
+
*
|
|
149
|
+
* Node-level scoped children:
|
|
150
|
+
* - Have a parent reference (instance.parent)
|
|
151
|
+
* - Parent does NOT have ports with matching scope
|
|
152
|
+
* - Execute in parent's scope block within main control flow
|
|
153
|
+
*/
|
|
154
|
+
export function isPerPortScopedChild(instance, workflow, nodeTypes) {
|
|
155
|
+
if (!instance.parent)
|
|
156
|
+
return false;
|
|
157
|
+
const parentInstance = workflow.instances.find((i) => i.id === instance.parent.id);
|
|
158
|
+
if (!parentInstance)
|
|
159
|
+
return false;
|
|
160
|
+
const parentNodeType = nodeTypes.find((nt) => nt.name === parentInstance.nodeType || nt.functionName === parentInstance.nodeType);
|
|
161
|
+
if (!parentNodeType)
|
|
162
|
+
return false;
|
|
163
|
+
// Check if parent has any port (input or output) with the matching scope name.
|
|
164
|
+
// A scope is valid if declared via @scope tag or inferred from callback parameter.
|
|
165
|
+
// If scoped ports exist, they indicate a valid scope function.
|
|
166
|
+
const scopeName = instance.parent.scope;
|
|
167
|
+
const hasOutputWithScope = Object.values(parentNodeType.outputs).some((port) => port.scope === scopeName);
|
|
168
|
+
const hasInputWithScope = Object.values(parentNodeType.inputs).some((port) => port.scope === scopeName);
|
|
169
|
+
return hasOutputWithScope || hasInputWithScope;
|
|
170
|
+
}
|
|
171
|
+
export function findNodesInBranch(branchNode, branchPort, workflow, allNodes, stopAtBranchingNodes, _allParsedNodeTypes) {
|
|
172
|
+
const reachable = new Set();
|
|
173
|
+
const visited = new Set();
|
|
174
|
+
const queue = [];
|
|
175
|
+
workflow.connections.forEach((conn) => {
|
|
176
|
+
const fromNode = conn.from.node;
|
|
177
|
+
const fromPort = conn.from.port;
|
|
178
|
+
const toNode = conn.to.node;
|
|
179
|
+
if (fromNode === branchNode && fromPort === branchPort) {
|
|
180
|
+
queue.push(toNode);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
while (queue.length > 0) {
|
|
184
|
+
const current = queue.shift();
|
|
185
|
+
if (visited.has(current) || isExitNode(current) || isStartNode(current)) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
visited.add(current);
|
|
189
|
+
if (stopAtBranchingNodes.has(current) && current !== branchNode) {
|
|
190
|
+
reachable.add(current);
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
if (allNodes.has(current)) {
|
|
194
|
+
reachable.add(current);
|
|
195
|
+
workflow.connections.forEach((conn) => {
|
|
196
|
+
const fromNode = conn.from.node;
|
|
197
|
+
const fromPort = conn.from.port;
|
|
198
|
+
const toNode = conn.to.node;
|
|
199
|
+
if (fromNode === current && !isSuccessPort(fromPort) && !isFailurePort(fromPort)) {
|
|
200
|
+
if (!visited.has(toNode)) {
|
|
201
|
+
queue.push(toNode);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return reachable;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Detect sequential chains of branching nodes where flattening can reduce nesting.
|
|
211
|
+
*
|
|
212
|
+
* A chain link exists when a branching node has exactly one branching child in one
|
|
213
|
+
* direction (success or failure) and zero in the other. Chains must be >= 2 nodes.
|
|
214
|
+
*
|
|
215
|
+
* @returns Map from chain head ID to ordered array of chain node IDs
|
|
216
|
+
*/
|
|
217
|
+
export function detectBranchingChains(branchingNodes, branchRegions) {
|
|
218
|
+
// Build chain successor links: nodeId -> next branching node in chain
|
|
219
|
+
const chainSuccessor = new Map();
|
|
220
|
+
for (const nodeId of branchingNodes) {
|
|
221
|
+
const region = branchRegions.get(nodeId);
|
|
222
|
+
if (!region)
|
|
223
|
+
continue;
|
|
224
|
+
const successBranching = [...region.successNodes].filter((n) => branchingNodes.has(n));
|
|
225
|
+
const failureBranching = [...region.failureNodes].filter((n) => branchingNodes.has(n));
|
|
226
|
+
// Chain link: exactly one direction has one branching child, other has zero
|
|
227
|
+
let nextNode = null;
|
|
228
|
+
if (successBranching.length === 1 && failureBranching.length === 0) {
|
|
229
|
+
nextNode = successBranching[0];
|
|
230
|
+
}
|
|
231
|
+
else if (failureBranching.length === 1 && successBranching.length === 0) {
|
|
232
|
+
nextNode = failureBranching[0];
|
|
233
|
+
}
|
|
234
|
+
if (nextNode) {
|
|
235
|
+
chainSuccessor.set(nodeId, nextNode);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// Find nodes that have a chain predecessor
|
|
239
|
+
const hasChainPredecessor = new Set(chainSuccessor.values());
|
|
240
|
+
// Build chains starting from head nodes (nodes with successor but no predecessor)
|
|
241
|
+
const chains = new Map();
|
|
242
|
+
for (const nodeId of branchingNodes) {
|
|
243
|
+
if (hasChainPredecessor.has(nodeId))
|
|
244
|
+
continue; // not a head
|
|
245
|
+
if (!chainSuccessor.has(nodeId))
|
|
246
|
+
continue; // no successor = no chain
|
|
247
|
+
const chain = [nodeId];
|
|
248
|
+
let current = nodeId;
|
|
249
|
+
while (chainSuccessor.has(current)) {
|
|
250
|
+
const next = chainSuccessor.get(current);
|
|
251
|
+
chain.push(next);
|
|
252
|
+
current = next;
|
|
253
|
+
}
|
|
254
|
+
if (chain.length >= 2) {
|
|
255
|
+
chains.set(nodeId, chain);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return chains;
|
|
259
|
+
}
|
|
260
|
+
export function determineExecutionOrder(workflow, nodes) {
|
|
261
|
+
const nodeMap = new Map();
|
|
262
|
+
nodes.forEach((node) => nodeMap.set(node.functionName, node));
|
|
263
|
+
const executionOrder = [];
|
|
264
|
+
const visited = new Set();
|
|
265
|
+
function visit(nodeName) {
|
|
266
|
+
if (visited.has(nodeName))
|
|
267
|
+
return;
|
|
268
|
+
visited.add(nodeName);
|
|
269
|
+
const outgoingConnections = workflow.connections.filter((conn) => conn.from.node === nodeName && !isExitNode(conn.to.node));
|
|
270
|
+
outgoingConnections.forEach((conn) => {
|
|
271
|
+
const targetNode = conn.to.node;
|
|
272
|
+
if (!isExitNode(targetNode)) {
|
|
273
|
+
visit(targetNode);
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
executionOrder.unshift(nodeName);
|
|
277
|
+
}
|
|
278
|
+
const startConnections = workflow.connections.filter((conn) => isStartNode(conn.from.node) && !isExitNode(conn.to.node));
|
|
279
|
+
startConnections.forEach((conn) => {
|
|
280
|
+
visit(conn.to.node);
|
|
281
|
+
});
|
|
282
|
+
return executionOrder;
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=control-flow.js.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inngest Deep Code Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates Inngest function code with per-node `step.run()` wrapping,
|
|
5
|
+
* giving each node individual durability, retries, and checkpointing.
|
|
6
|
+
*
|
|
7
|
+
* This is a standalone generator alongside unified.ts — it shares the
|
|
8
|
+
* control-flow analysis layer but produces fundamentally different output:
|
|
9
|
+
* - Local `const` variables instead of `ctx.setVariable()/getVariable()`
|
|
10
|
+
* - `step.run()` per non-expression node for durability
|
|
11
|
+
* - `Promise.all()` for parallel independent nodes
|
|
12
|
+
* - Indexed `step.run()` for forEach/scoped iteration
|
|
13
|
+
* - Branching chain flattening for multi-way routing
|
|
14
|
+
*
|
|
15
|
+
* @module generator/inngest
|
|
16
|
+
*/
|
|
17
|
+
import type { TNodeTypeAST, TWorkflowAST } from '../ast/types.js';
|
|
18
|
+
export interface InngestGenerationOptions {
|
|
19
|
+
/** Omit debug instrumentation for smaller output */
|
|
20
|
+
production?: boolean;
|
|
21
|
+
/** Inngest client ID (default: derived from workflow name) */
|
|
22
|
+
serviceName?: string;
|
|
23
|
+
/** Custom trigger event name (default: 'fw/<kebab-workflow>.execute') */
|
|
24
|
+
triggerEvent?: string;
|
|
25
|
+
/** Number of retries per function (default: 3) */
|
|
26
|
+
retries?: number;
|
|
27
|
+
/** Extra function config merged into createFunction() first arg */
|
|
28
|
+
functionConfig?: Record<string, unknown>;
|
|
29
|
+
/** When true, emit Zod schema from @param annotations */
|
|
30
|
+
typedEvents?: boolean;
|
|
31
|
+
/** Framework adapter for serve handler */
|
|
32
|
+
framework?: 'next' | 'express' | 'hono' | 'fastify' | 'remix';
|
|
33
|
+
/** When true, append serve() handler export */
|
|
34
|
+
serveHandler?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Generate an Inngest function from a workflow AST.
|
|
38
|
+
*
|
|
39
|
+
* Produces a complete TypeScript module with:
|
|
40
|
+
* - Import statements (Inngest SDK + node type functions)
|
|
41
|
+
* - `inngest.createFunction()` with per-node `step.run()` calls
|
|
42
|
+
* - Parallel execution via `Promise.all` where safe
|
|
43
|
+
* - Branching via if/else for onSuccess/onFailure
|
|
44
|
+
* - Chain flattening for sequential branching (3-way routing)
|
|
45
|
+
* - Indexed `step.run()` for forEach iteration
|
|
46
|
+
*
|
|
47
|
+
* @param workflow - The workflow AST to generate from
|
|
48
|
+
* @param nodeTypes - All available node type definitions
|
|
49
|
+
* @param options - Generation options (service name, trigger, retries, etc.)
|
|
50
|
+
* @returns Complete TypeScript source code string
|
|
51
|
+
*/
|
|
52
|
+
export declare function generateInngestFunction(workflow: TWorkflowAST, nodeTypes: TNodeTypeAST[], options?: InngestGenerationOptions): string;
|
|
53
|
+
//# sourceMappingURL=inngest.d.ts.map
|