@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,106 @@
|
|
|
1
|
+
export const llmCallNodeTemplate = {
|
|
2
|
+
id: 'llm-call',
|
|
3
|
+
name: 'LLM Call',
|
|
4
|
+
description: 'Provider-agnostic LLM API call with tool support',
|
|
5
|
+
category: 'ai',
|
|
6
|
+
generate: (name) => {
|
|
7
|
+
const funcName = name || 'llmCall';
|
|
8
|
+
return `
|
|
9
|
+
// LLM Types
|
|
10
|
+
interface LLMMessage { role: 'system' | 'user' | 'assistant' | 'tool'; content: string; toolCallId?: string; }
|
|
11
|
+
interface LLMTool { name: string; description: string; parameters: { type: 'object'; properties: Record<string, { type: string; description?: string }>; required?: string[] }; }
|
|
12
|
+
interface LLMToolCall { id: string; name: string; arguments: Record<string, unknown>; }
|
|
13
|
+
interface LLMResponse { content: string | null; toolCalls: LLMToolCall[]; finishReason: string; }
|
|
14
|
+
interface LLMProvider { chat(messages: LLMMessage[], options?: { tools?: LLMTool[]; temperature?: number }): Promise<LLMResponse>; }
|
|
15
|
+
|
|
16
|
+
// Mock provider - replace with real provider (OpenAI, Anthropic, etc.)
|
|
17
|
+
const createMockProvider = (): LLMProvider => ({
|
|
18
|
+
async chat(messages, options) {
|
|
19
|
+
const lastMsg = messages[messages.length - 1];
|
|
20
|
+
if (options?.tools?.length && lastMsg.content.toLowerCase().includes('search')) {
|
|
21
|
+
return { content: null, toolCalls: [{ id: \`call_\${Date.now()}\`, name: 'search', arguments: { query: lastMsg.content } }], finishReason: 'tool_calls' };
|
|
22
|
+
}
|
|
23
|
+
return { content: \`[Mock: \${lastMsg.content.slice(0, 40)}...]\`, toolCalls: [], finishReason: 'stop' };
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const llmProvider: LLMProvider = (globalThis as unknown as { __fw_llm_provider__?: LLMProvider }).__fw_llm_provider__ ?? createMockProvider();
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Calls an LLM with messages and optional tools
|
|
31
|
+
*
|
|
32
|
+
* @flowWeaver nodeType
|
|
33
|
+
* @label ${funcName}
|
|
34
|
+
* @color purple
|
|
35
|
+
* @icon psychology
|
|
36
|
+
* @input messages [order:1] - Conversation messages
|
|
37
|
+
* @input tools [order:2] - Available tools/functions (optional)
|
|
38
|
+
* @input systemPrompt [order:3] - System prompt (optional)
|
|
39
|
+
* @input temperature [order:4] - Temperature 0-1 (optional)
|
|
40
|
+
* @input execute [order:0] - Execute
|
|
41
|
+
* @output content [order:2] - Text response (null if tool call)
|
|
42
|
+
* @output toolCalls [order:3] - Tool calls requested by LLM
|
|
43
|
+
* @output hasToolCalls [order:4] - Whether LLM wants to call tools
|
|
44
|
+
* @output finishReason [order:5] - Why generation stopped
|
|
45
|
+
* @output onSuccess [order:0] - On Success
|
|
46
|
+
* @output onFailure [order:1] - On Failure
|
|
47
|
+
*/
|
|
48
|
+
async function ${funcName}(
|
|
49
|
+
execute: boolean,
|
|
50
|
+
messages: LLMMessage[],
|
|
51
|
+
tools?: LLMTool[],
|
|
52
|
+
systemPrompt?: string,
|
|
53
|
+
temperature?: number
|
|
54
|
+
): Promise<{
|
|
55
|
+
onSuccess: boolean;
|
|
56
|
+
onFailure: boolean;
|
|
57
|
+
content: string | null;
|
|
58
|
+
toolCalls: LLMToolCall[];
|
|
59
|
+
hasToolCalls: boolean;
|
|
60
|
+
finishReason: string;
|
|
61
|
+
}> {
|
|
62
|
+
if (!execute) {
|
|
63
|
+
return {
|
|
64
|
+
onSuccess: false,
|
|
65
|
+
onFailure: false,
|
|
66
|
+
content: null,
|
|
67
|
+
toolCalls: [],
|
|
68
|
+
hasToolCalls: false,
|
|
69
|
+
finishReason: 'skipped'
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
try {
|
|
74
|
+
const allMessages: LLMMessage[] = systemPrompt
|
|
75
|
+
? [{ role: 'system', content: systemPrompt }, ...messages]
|
|
76
|
+
: messages;
|
|
77
|
+
|
|
78
|
+
const response = await llmProvider.chat(allMessages, {
|
|
79
|
+
tools,
|
|
80
|
+
temperature,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
onSuccess: true,
|
|
85
|
+
onFailure: false,
|
|
86
|
+
content: response.content,
|
|
87
|
+
toolCalls: response.toolCalls,
|
|
88
|
+
hasToolCalls: response.toolCalls.length > 0,
|
|
89
|
+
finishReason: response.finishReason
|
|
90
|
+
};
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.error('LLM call failed:', error);
|
|
93
|
+
return {
|
|
94
|
+
onSuccess: false,
|
|
95
|
+
onFailure: true,
|
|
96
|
+
content: null,
|
|
97
|
+
toolCalls: [],
|
|
98
|
+
hasToolCalls: false,
|
|
99
|
+
finishReason: 'error'
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
`.trim();
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=llm-call.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { toPascalCase } from '../index.js';
|
|
2
|
+
export const promptTemplateNodeTemplate = {
|
|
3
|
+
id: 'prompt-template',
|
|
4
|
+
name: 'Prompt Template',
|
|
5
|
+
description: 'Interpolate variables into a prompt template string',
|
|
6
|
+
category: 'ai',
|
|
7
|
+
generate: (name) => {
|
|
8
|
+
const funcName = name || 'promptTemplate';
|
|
9
|
+
const label = toPascalCase(funcName);
|
|
10
|
+
return `
|
|
11
|
+
/**
|
|
12
|
+
* Interpolate variables into a prompt template string.
|
|
13
|
+
* Uses {{variableName}} syntax for placeholders.
|
|
14
|
+
*
|
|
15
|
+
* Example:
|
|
16
|
+
* template: "Hello {{name}}, your order {{orderId}} is ready."
|
|
17
|
+
* variables: { name: "Alice", orderId: "12345" }
|
|
18
|
+
* → prompt: "Hello Alice, your order 12345 is ready."
|
|
19
|
+
*
|
|
20
|
+
* @flowWeaver nodeType
|
|
21
|
+
* @expression
|
|
22
|
+
* @label ${label}
|
|
23
|
+
* @color pink
|
|
24
|
+
* @icon textSnippet
|
|
25
|
+
* @input template [order:0] - Template string with {{variable}} placeholders
|
|
26
|
+
* @input variables [order:1] - Key-value pairs to interpolate
|
|
27
|
+
* @output prompt [order:0] - Rendered prompt string
|
|
28
|
+
* @output unresolvedCount [order:1] - Number of unresolved placeholders
|
|
29
|
+
*/
|
|
30
|
+
function ${funcName}(
|
|
31
|
+
template: string,
|
|
32
|
+
variables: Record<string, string>
|
|
33
|
+
): {
|
|
34
|
+
prompt: string;
|
|
35
|
+
unresolvedCount: number;
|
|
36
|
+
} {
|
|
37
|
+
let unresolved = 0;
|
|
38
|
+
|
|
39
|
+
const prompt = template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {
|
|
40
|
+
if (key in variables) {
|
|
41
|
+
return variables[key];
|
|
42
|
+
}
|
|
43
|
+
unresolved++;
|
|
44
|
+
return match; // Leave unresolved placeholders as-is
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return { prompt, unresolvedCount: unresolved };
|
|
48
|
+
}
|
|
49
|
+
`.trim();
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=prompt-template.js.map
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { toPascalCase } from '../index.js';
|
|
2
|
+
export const ragRetrieverNodeTemplate = {
|
|
3
|
+
id: 'rag-retriever',
|
|
4
|
+
name: 'RAG Retriever',
|
|
5
|
+
description: 'Retrieve relevant documents via vector similarity search',
|
|
6
|
+
category: 'ai',
|
|
7
|
+
generate: (name) => {
|
|
8
|
+
const funcName = name || 'ragRetriever';
|
|
9
|
+
const label = toPascalCase(funcName);
|
|
10
|
+
return `
|
|
11
|
+
// ============================================================
|
|
12
|
+
// VECTOR STORE
|
|
13
|
+
// ============================================================
|
|
14
|
+
//
|
|
15
|
+
// Replace mockRetrieve() with your vector store:
|
|
16
|
+
//
|
|
17
|
+
// Pinecone: const results = await index.query({ vector: embedding, topK });
|
|
18
|
+
// pgvector: const results = await db.query(
|
|
19
|
+
// 'SELECT text, metadata, 1 - (embedding <=> $1) AS score FROM docs ORDER BY score DESC LIMIT $2',
|
|
20
|
+
// [embedding, topK]
|
|
21
|
+
// );
|
|
22
|
+
// Weaviate: const results = await client.graphql.get()
|
|
23
|
+
// .withClassName('Document')
|
|
24
|
+
// .withNearText({ concepts: [query] })
|
|
25
|
+
// .withLimit(topK)
|
|
26
|
+
// .do();
|
|
27
|
+
// ChromaDB: const results = await collection.query({ queryTexts: [query], nResults: topK });
|
|
28
|
+
|
|
29
|
+
interface RetrievedDocument {
|
|
30
|
+
text: string;
|
|
31
|
+
score: number;
|
|
32
|
+
metadata?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Mock document store — replace with real vector database
|
|
36
|
+
const MOCK_DOCUMENTS: Record<string, RetrievedDocument[]> = {
|
|
37
|
+
default: [
|
|
38
|
+
{ text: 'Flow Weaver compiles workflows to standalone TypeScript functions.', score: 0.95, metadata: { source: 'docs/overview.md' } },
|
|
39
|
+
{ text: 'The compiler validates connections at compile time, catching errors before runtime.', score: 0.88, metadata: { source: 'docs/compiler.md' } },
|
|
40
|
+
{ text: 'Workflows are standard TypeScript files with JSDoc annotations.', score: 0.82, metadata: { source: 'docs/authoring.md' } },
|
|
41
|
+
{ text: 'Deploy compiled workflows to Lambda, Vercel, Cloudflare, or Inngest.', score: 0.75, metadata: { source: 'docs/deployment.md' } },
|
|
42
|
+
{ text: 'The visual editor provides bidirectional editing — code changes update the canvas and vice versa.', score: 0.71, metadata: { source: 'docs/editor.md' } },
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
async function mockRetrieve(query: string, collection: string, topK: number): Promise<RetrievedDocument[]> {
|
|
47
|
+
const docs = MOCK_DOCUMENTS[collection] || MOCK_DOCUMENTS['default'] || [];
|
|
48
|
+
|
|
49
|
+
// Simple keyword overlap scoring (mock — real stores use vector similarity)
|
|
50
|
+
const queryWords = new Set(query.toLowerCase().split(/\\s+/));
|
|
51
|
+
const scored = docs.map((doc) => {
|
|
52
|
+
const docWords = doc.text.toLowerCase().split(/\\s+/);
|
|
53
|
+
const overlap = docWords.filter((w) => queryWords.has(w)).length;
|
|
54
|
+
const score = Math.min(0.99, overlap / Math.max(queryWords.size, 1) * 0.5 + doc.score * 0.5);
|
|
55
|
+
return { ...doc, score };
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
return scored
|
|
59
|
+
.sort((a, b) => b.score - a.score)
|
|
60
|
+
.slice(0, topK);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Retrieve relevant documents via vector similarity search.
|
|
65
|
+
* Returns scored documents and a concatenated context string ready for LLM input.
|
|
66
|
+
*
|
|
67
|
+
* @flowWeaver nodeType
|
|
68
|
+
* @label ${label}
|
|
69
|
+
* @color green
|
|
70
|
+
* @icon search
|
|
71
|
+
* @input execute [order:0] - Execute
|
|
72
|
+
* @input query [order:1] - Search query text
|
|
73
|
+
* @input collection [order:2] - Collection/index name
|
|
74
|
+
* @input topK [order:3] - Number of results (optional, default 5)
|
|
75
|
+
* @output onSuccess [order:0] - On Success
|
|
76
|
+
* @output onFailure [order:1] - On Failure
|
|
77
|
+
* @output documents [order:2] - Retrieved documents with relevance scores
|
|
78
|
+
* @output context [order:3] - Concatenated document text for LLM context
|
|
79
|
+
*/
|
|
80
|
+
async function ${funcName}(
|
|
81
|
+
execute: boolean,
|
|
82
|
+
query: string,
|
|
83
|
+
collection: string,
|
|
84
|
+
topK?: number
|
|
85
|
+
): Promise<{
|
|
86
|
+
onSuccess: boolean;
|
|
87
|
+
onFailure: boolean;
|
|
88
|
+
documents: RetrievedDocument[];
|
|
89
|
+
context: string;
|
|
90
|
+
}> {
|
|
91
|
+
if (!execute) {
|
|
92
|
+
return {
|
|
93
|
+
onSuccess: false,
|
|
94
|
+
onFailure: false,
|
|
95
|
+
documents: [],
|
|
96
|
+
context: '',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
try {
|
|
101
|
+
const limit = topK ?? 5;
|
|
102
|
+
const documents = await mockRetrieve(query, collection, limit);
|
|
103
|
+
|
|
104
|
+
// Concatenate document texts for easy LLM context injection
|
|
105
|
+
const context = documents
|
|
106
|
+
.map((doc, i) => \`[Document \${i + 1} (score: \${doc.score.toFixed(2)})]\n\${doc.text}\`)
|
|
107
|
+
.join('\\n\\n');
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
onSuccess: true,
|
|
111
|
+
onFailure: false,
|
|
112
|
+
documents,
|
|
113
|
+
context,
|
|
114
|
+
};
|
|
115
|
+
} catch (error) {
|
|
116
|
+
console.error('RAG retrieval failed:', error);
|
|
117
|
+
return {
|
|
118
|
+
onSuccess: false,
|
|
119
|
+
onFailure: true,
|
|
120
|
+
documents: [],
|
|
121
|
+
context: '',
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
`.trim();
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=rag-retriever.js.map
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export const toolExecutorNodeTemplate = {
|
|
2
|
+
id: 'tool-executor',
|
|
3
|
+
name: 'Tool Executor',
|
|
4
|
+
description: 'Executes tool calls from LLM response',
|
|
5
|
+
category: 'ai',
|
|
6
|
+
generate: (name) => {
|
|
7
|
+
const funcName = name || 'executeTool';
|
|
8
|
+
return `
|
|
9
|
+
// LLM Types
|
|
10
|
+
interface LLMToolCall { id: string; name: string; arguments: Record<string, unknown>; }
|
|
11
|
+
interface LLMMessage { role: 'system' | 'user' | 'assistant' | 'tool'; content: string; toolCallId?: string; }
|
|
12
|
+
|
|
13
|
+
// Register your tools here
|
|
14
|
+
type ToolFunction = (args: Record<string, unknown>) => Promise<unknown>;
|
|
15
|
+
const toolRegistry: Record<string, ToolFunction> = {
|
|
16
|
+
// Example tools:
|
|
17
|
+
// 'search': async (args) => {
|
|
18
|
+
// const query = String(args.query || '');
|
|
19
|
+
// return await searchDatabase(query);
|
|
20
|
+
// },
|
|
21
|
+
// 'get_weather': async (args) => {
|
|
22
|
+
// const city = String(args.city || '');
|
|
23
|
+
// const response = await fetch(\`https://api.weather.example/v1/\${encodeURIComponent(city)}\`);
|
|
24
|
+
// return response.json();
|
|
25
|
+
// },
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Executes a single tool call and returns result as message
|
|
30
|
+
*
|
|
31
|
+
* @flowWeaver nodeType
|
|
32
|
+
* @label ${funcName}
|
|
33
|
+
* @color cyan
|
|
34
|
+
* @icon build
|
|
35
|
+
* @input toolCall [order:1] - Tool call to execute
|
|
36
|
+
* @input execute [order:0] - Execute
|
|
37
|
+
* @output result [order:2] - Tool execution result
|
|
38
|
+
* @output resultMessage [order:3] - Result formatted as LLM message
|
|
39
|
+
* @output toolName [order:4] - Name of executed tool
|
|
40
|
+
* @output onSuccess [order:0] - On Success
|
|
41
|
+
* @output onFailure [order:1] - On Failure
|
|
42
|
+
*/
|
|
43
|
+
async function ${funcName}(
|
|
44
|
+
execute: boolean,
|
|
45
|
+
toolCall: LLMToolCall
|
|
46
|
+
): Promise<{
|
|
47
|
+
onSuccess: boolean;
|
|
48
|
+
onFailure: boolean;
|
|
49
|
+
result: unknown;
|
|
50
|
+
resultMessage: LLMMessage;
|
|
51
|
+
toolName: string;
|
|
52
|
+
}> {
|
|
53
|
+
if (!execute) {
|
|
54
|
+
return {
|
|
55
|
+
onSuccess: false,
|
|
56
|
+
onFailure: false,
|
|
57
|
+
result: null,
|
|
58
|
+
resultMessage: { role: 'tool', content: '', toolCallId: '' },
|
|
59
|
+
toolName: ''
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const tool = toolRegistry[toolCall.name];
|
|
64
|
+
if (!tool) {
|
|
65
|
+
return {
|
|
66
|
+
onSuccess: false,
|
|
67
|
+
onFailure: true,
|
|
68
|
+
result: null,
|
|
69
|
+
resultMessage: {
|
|
70
|
+
role: 'tool',
|
|
71
|
+
content: JSON.stringify({ error: \`Unknown tool: \${toolCall.name}\` }),
|
|
72
|
+
toolCallId: toolCall.id
|
|
73
|
+
},
|
|
74
|
+
toolName: toolCall.name
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
try {
|
|
79
|
+
const result = await tool(toolCall.arguments);
|
|
80
|
+
return {
|
|
81
|
+
onSuccess: true,
|
|
82
|
+
onFailure: false,
|
|
83
|
+
result,
|
|
84
|
+
resultMessage: {
|
|
85
|
+
role: 'tool',
|
|
86
|
+
content: JSON.stringify(result),
|
|
87
|
+
toolCallId: toolCall.id
|
|
88
|
+
},
|
|
89
|
+
toolName: toolCall.name
|
|
90
|
+
};
|
|
91
|
+
} catch (error) {
|
|
92
|
+
return {
|
|
93
|
+
onSuccess: false,
|
|
94
|
+
onFailure: true,
|
|
95
|
+
result: null,
|
|
96
|
+
resultMessage: {
|
|
97
|
+
role: 'tool',
|
|
98
|
+
content: JSON.stringify({ error: String(error) }),
|
|
99
|
+
toolCallId: toolCall.id
|
|
100
|
+
},
|
|
101
|
+
toolName: toolCall.name
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
`.trim();
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=tool-executor.js.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer Node Template
|
|
3
|
+
* Data transformation and mapping
|
|
4
|
+
*/
|
|
5
|
+
import { toPascalCase } from "../index.js";
|
|
6
|
+
export const transformerNodeTemplate = {
|
|
7
|
+
id: "transformer",
|
|
8
|
+
name: "Transformer",
|
|
9
|
+
description: "Data transformation and mapping",
|
|
10
|
+
category: "data",
|
|
11
|
+
generate: (name) => {
|
|
12
|
+
const pascalName = toPascalCase(name);
|
|
13
|
+
return `
|
|
14
|
+
/**
|
|
15
|
+
* Transforms input data into a new shape
|
|
16
|
+
*
|
|
17
|
+
* @flowWeaver nodeType
|
|
18
|
+
* @label ${pascalName}
|
|
19
|
+
* @color pink
|
|
20
|
+
* @icon changeCircle
|
|
21
|
+
* @input data [order:1] - Input data to transform
|
|
22
|
+
* @input execute [order:0] - Execute
|
|
23
|
+
* @output result [order:2] - Transformed data
|
|
24
|
+
* @output onSuccess [order:0] - On Success
|
|
25
|
+
* @output onFailure [order:1] - On Failure
|
|
26
|
+
*/
|
|
27
|
+
function ${name}(
|
|
28
|
+
execute: boolean,
|
|
29
|
+
data: any
|
|
30
|
+
): { onSuccess: boolean; onFailure: boolean; result: any } {
|
|
31
|
+
if (!execute) {
|
|
32
|
+
return { onSuccess: false, onFailure: false, result: null };
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
// TODO: Implement your transformation logic
|
|
37
|
+
// Examples:
|
|
38
|
+
|
|
39
|
+
// Map array items
|
|
40
|
+
// const result = data.map(item => ({ ...item, processed: true }));
|
|
41
|
+
|
|
42
|
+
// Reshape object
|
|
43
|
+
// const result = {
|
|
44
|
+
// id: data.userId,
|
|
45
|
+
// fullName: \`\${data.firstName} \${data.lastName}\`,
|
|
46
|
+
// email: data.contactEmail
|
|
47
|
+
// };
|
|
48
|
+
|
|
49
|
+
// Filter and transform
|
|
50
|
+
// const result = data
|
|
51
|
+
// .filter(item => item.active)
|
|
52
|
+
// .map(item => item.name);
|
|
53
|
+
|
|
54
|
+
const result = {
|
|
55
|
+
...data,
|
|
56
|
+
transformedAt: new Date().toISOString()
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
return { onSuccess: true, onFailure: false, result };
|
|
60
|
+
} catch (err) {
|
|
61
|
+
console.error("[${pascalName}] Transform error:", err);
|
|
62
|
+
return { onSuccess: false, onFailure: true, result: null };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
`.trim();
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=transformer.js.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validator Node Template
|
|
3
|
+
* Input validation with success/failure routing
|
|
4
|
+
*/
|
|
5
|
+
import { toPascalCase } from "../index.js";
|
|
6
|
+
export const validatorNodeTemplate = {
|
|
7
|
+
id: "validator",
|
|
8
|
+
name: "Validator",
|
|
9
|
+
description: "Input validation with success/failure routing",
|
|
10
|
+
category: "validation",
|
|
11
|
+
generate: (name) => {
|
|
12
|
+
const pascalName = toPascalCase(name);
|
|
13
|
+
return `
|
|
14
|
+
/**
|
|
15
|
+
* Validates input data against rules
|
|
16
|
+
*
|
|
17
|
+
* @flowWeaver nodeType
|
|
18
|
+
* @label ${pascalName}
|
|
19
|
+
* @color green
|
|
20
|
+
* @icon rule
|
|
21
|
+
* @input data [order:1] - Data to validate
|
|
22
|
+
* @input execute [order:0] - Execute
|
|
23
|
+
* @output isValid [order:2] - Whether data is valid
|
|
24
|
+
* @output validData [order:3] - Validated data (if valid)
|
|
25
|
+
* @output errors [order:4] - Validation errors (if invalid)
|
|
26
|
+
* @output onSuccess [order:0] - Validation passed
|
|
27
|
+
* @output onFailure [order:1] - Validation failed
|
|
28
|
+
*/
|
|
29
|
+
function ${name}(
|
|
30
|
+
execute: boolean,
|
|
31
|
+
data: any
|
|
32
|
+
): { onSuccess: boolean; onFailure: boolean; isValid: boolean; validData: any; errors: string[] } {
|
|
33
|
+
if (!execute) {
|
|
34
|
+
return { onSuccess: false, onFailure: false, isValid: false, validData: null, errors: [] };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const errors: string[] = [];
|
|
38
|
+
|
|
39
|
+
// TODO: Add your validation rules
|
|
40
|
+
// Example validations:
|
|
41
|
+
if (data === null || data === undefined) {
|
|
42
|
+
errors.push("Data is required");
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// if (typeof data.email === 'string' && !data.email.includes('@')) {
|
|
46
|
+
// errors.push("Invalid email format");
|
|
47
|
+
// }
|
|
48
|
+
|
|
49
|
+
// if (typeof data.age === 'number' && (data.age < 0 || data.age > 150)) {
|
|
50
|
+
// errors.push("Age must be between 0 and 150");
|
|
51
|
+
// }
|
|
52
|
+
|
|
53
|
+
if (errors.length > 0) {
|
|
54
|
+
return { onSuccess: false, onFailure: true, isValid: false, validData: null, errors };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return { onSuccess: true, onFailure: false, isValid: true, validData: data, errors: [] };
|
|
58
|
+
}
|
|
59
|
+
`.trim();
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider Code Generators
|
|
3
|
+
* Generate provider implementation code for different LLM services
|
|
4
|
+
*/
|
|
5
|
+
export interface ProviderCodeOptions {
|
|
6
|
+
model: string;
|
|
7
|
+
apiKeyEnvVar?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function generateOpenAIProvider(opts: ProviderCodeOptions): string;
|
|
10
|
+
export declare function generateAnthropicProvider(opts: ProviderCodeOptions): string;
|
|
11
|
+
export declare function generateOllamaProvider(opts: ProviderCodeOptions): string;
|
|
12
|
+
export declare function generateMockProvider(): string;
|
|
13
|
+
export declare function getProviderCode(provider: string, model?: string): string;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|