@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,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider Code Generators
|
|
3
|
+
* Generate provider implementation code for different LLM services
|
|
4
|
+
*/
|
|
5
|
+
export function generateOpenAIProvider(opts) {
|
|
6
|
+
const model = opts.model || 'gpt-4o';
|
|
7
|
+
const apiKey = opts.apiKeyEnvVar || 'OPENAI_API_KEY';
|
|
8
|
+
return `
|
|
9
|
+
/* ============================================================
|
|
10
|
+
* OPENAI PROVIDER
|
|
11
|
+
* Set ${apiKey} environment variable before running
|
|
12
|
+
* ============================================================ */
|
|
13
|
+
|
|
14
|
+
const ${apiKey} = process.env.${apiKey};
|
|
15
|
+
if (!${apiKey}) {
|
|
16
|
+
throw new Error('Missing ${apiKey} environment variable');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const _defaultLlmProvider: LLMProvider = {
|
|
20
|
+
async chat(messages, options) {
|
|
21
|
+
const response = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
22
|
+
method: 'POST',
|
|
23
|
+
headers: {
|
|
24
|
+
'Authorization': \`Bearer \${${apiKey}}\`,
|
|
25
|
+
'Content-Type': 'application/json',
|
|
26
|
+
},
|
|
27
|
+
body: JSON.stringify({
|
|
28
|
+
model: options?.model ?? '${model}',
|
|
29
|
+
messages: messages.map(m => ({
|
|
30
|
+
role: m.role,
|
|
31
|
+
content: m.content,
|
|
32
|
+
...(m.toolCallId && { tool_call_id: m.toolCallId }),
|
|
33
|
+
})),
|
|
34
|
+
tools: options?.tools?.map(t => ({
|
|
35
|
+
type: 'function',
|
|
36
|
+
function: { name: t.name, description: t.description, parameters: t.parameters },
|
|
37
|
+
})),
|
|
38
|
+
temperature: options?.temperature,
|
|
39
|
+
max_tokens: options?.maxTokens,
|
|
40
|
+
}),
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
if (!response.ok) {
|
|
44
|
+
const error = await response.text();
|
|
45
|
+
throw new Error(\`OpenAI API error: \${response.status} \${error}\`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const data = await response.json();
|
|
49
|
+
const choice = data.choices[0];
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
content: choice.message.content,
|
|
53
|
+
toolCalls: choice.message.tool_calls?.map((tc: any) => ({
|
|
54
|
+
id: tc.id,
|
|
55
|
+
name: tc.function.name,
|
|
56
|
+
arguments: JSON.parse(tc.function.arguments),
|
|
57
|
+
})) ?? [],
|
|
58
|
+
finishReason: choice.finish_reason === 'tool_calls' ? 'tool_calls' : 'stop',
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const llmProvider: LLMProvider = (globalThis as unknown as { __fw_llm_provider__?: LLMProvider }).__fw_llm_provider__ ?? _defaultLlmProvider;
|
|
64
|
+
`;
|
|
65
|
+
}
|
|
66
|
+
export function generateAnthropicProvider(opts) {
|
|
67
|
+
const model = opts.model || 'claude-3-5-sonnet-20241022';
|
|
68
|
+
const apiKey = opts.apiKeyEnvVar || 'ANTHROPIC_API_KEY';
|
|
69
|
+
return `
|
|
70
|
+
/* ============================================================
|
|
71
|
+
* ANTHROPIC PROVIDER
|
|
72
|
+
* Set ${apiKey} environment variable before running
|
|
73
|
+
* ============================================================ */
|
|
74
|
+
|
|
75
|
+
const ${apiKey} = process.env.${apiKey};
|
|
76
|
+
if (!${apiKey}) {
|
|
77
|
+
throw new Error('Missing ${apiKey} environment variable');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const _defaultLlmProvider: LLMProvider = {
|
|
81
|
+
async chat(messages, options) {
|
|
82
|
+
// Separate system message (Anthropic handles it differently)
|
|
83
|
+
const systemMessage = messages.find(m => m.role === 'system');
|
|
84
|
+
const chatMessages = messages.filter(m => m.role !== 'system');
|
|
85
|
+
|
|
86
|
+
const response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
87
|
+
method: 'POST',
|
|
88
|
+
headers: {
|
|
89
|
+
'x-api-key': ${apiKey},
|
|
90
|
+
'anthropic-version': '2023-06-01',
|
|
91
|
+
'Content-Type': 'application/json',
|
|
92
|
+
},
|
|
93
|
+
body: JSON.stringify({
|
|
94
|
+
model: options?.model ?? '${model}',
|
|
95
|
+
max_tokens: options?.maxTokens ?? 4096,
|
|
96
|
+
system: systemMessage?.content ?? options?.systemPrompt,
|
|
97
|
+
messages: chatMessages.map(m => {
|
|
98
|
+
if (m.role === 'tool') {
|
|
99
|
+
return {
|
|
100
|
+
role: 'user',
|
|
101
|
+
content: [{ type: 'tool_result', tool_use_id: m.toolCallId, content: m.content }],
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
return { role: m.role, content: m.content };
|
|
105
|
+
}),
|
|
106
|
+
tools: options?.tools?.map(t => ({
|
|
107
|
+
name: t.name,
|
|
108
|
+
description: t.description,
|
|
109
|
+
input_schema: { type: 'object', properties: t.parameters.properties, required: t.parameters.required },
|
|
110
|
+
})),
|
|
111
|
+
}),
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
if (!response.ok) {
|
|
115
|
+
const error = await response.text();
|
|
116
|
+
throw new Error(\`Anthropic API error: \${response.status} \${error}\`);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const data = await response.json();
|
|
120
|
+
|
|
121
|
+
let content: string | null = null;
|
|
122
|
+
const toolCalls: LLMToolCall[] = [];
|
|
123
|
+
|
|
124
|
+
for (const block of data.content) {
|
|
125
|
+
if (block.type === 'text') content = block.text;
|
|
126
|
+
if (block.type === 'tool_use') {
|
|
127
|
+
toolCalls.push({ id: block.id, name: block.name, arguments: block.input });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return {
|
|
132
|
+
content,
|
|
133
|
+
toolCalls,
|
|
134
|
+
finishReason: data.stop_reason === 'tool_use' ? 'tool_calls' : 'stop',
|
|
135
|
+
};
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const llmProvider: LLMProvider = (globalThis as unknown as { __fw_llm_provider__?: LLMProvider }).__fw_llm_provider__ ?? _defaultLlmProvider;
|
|
140
|
+
`;
|
|
141
|
+
}
|
|
142
|
+
export function generateOllamaProvider(opts) {
|
|
143
|
+
const model = opts.model || 'llama3.2';
|
|
144
|
+
return `
|
|
145
|
+
/* ============================================================
|
|
146
|
+
* OLLAMA PROVIDER (Local)
|
|
147
|
+
* Ensure Ollama is running: ollama serve
|
|
148
|
+
* Pull model first: ollama pull ${model}
|
|
149
|
+
* ============================================================ */
|
|
150
|
+
|
|
151
|
+
const OLLAMA_BASE_URL = process.env.OLLAMA_BASE_URL ?? 'http://localhost:11434';
|
|
152
|
+
|
|
153
|
+
const _defaultLlmProvider: LLMProvider = {
|
|
154
|
+
async chat(messages, options) {
|
|
155
|
+
const response = await fetch(\`\${OLLAMA_BASE_URL}/api/chat\`, {
|
|
156
|
+
method: 'POST',
|
|
157
|
+
headers: { 'Content-Type': 'application/json' },
|
|
158
|
+
body: JSON.stringify({
|
|
159
|
+
model: options?.model ?? '${model}',
|
|
160
|
+
messages: messages.map(m => ({ role: m.role, content: m.content })),
|
|
161
|
+
stream: false,
|
|
162
|
+
options: {
|
|
163
|
+
temperature: options?.temperature,
|
|
164
|
+
num_predict: options?.maxTokens,
|
|
165
|
+
},
|
|
166
|
+
}),
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
if (!response.ok) {
|
|
170
|
+
const error = await response.text();
|
|
171
|
+
throw new Error(\`Ollama error: \${response.status} \${error}\`);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const data = await response.json();
|
|
175
|
+
|
|
176
|
+
return {
|
|
177
|
+
content: data.message?.content ?? null,
|
|
178
|
+
toolCalls: [], // Ollama tool support varies by model
|
|
179
|
+
finishReason: 'stop',
|
|
180
|
+
};
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
const llmProvider: LLMProvider = (globalThis as unknown as { __fw_llm_provider__?: LLMProvider }).__fw_llm_provider__ ?? _defaultLlmProvider;
|
|
185
|
+
`;
|
|
186
|
+
}
|
|
187
|
+
export function generateMockProvider() {
|
|
188
|
+
return `
|
|
189
|
+
/* ============================================================
|
|
190
|
+
* MOCK PROVIDER (For Testing)
|
|
191
|
+
* Replace with real provider for production use
|
|
192
|
+
* ============================================================ */
|
|
193
|
+
|
|
194
|
+
const _defaultLlmProvider: LLMProvider = {
|
|
195
|
+
async chat(messages, options) {
|
|
196
|
+
const last = messages[messages.length - 1];
|
|
197
|
+
|
|
198
|
+
// Simulate tool call if message contains "search"
|
|
199
|
+
if (options?.tools && last.content.toLowerCase().includes('search')) {
|
|
200
|
+
return {
|
|
201
|
+
content: null,
|
|
202
|
+
toolCalls: [{
|
|
203
|
+
id: 'call_' + Date.now(),
|
|
204
|
+
name: 'search',
|
|
205
|
+
arguments: { query: last.content },
|
|
206
|
+
}],
|
|
207
|
+
finishReason: 'tool_calls',
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return {
|
|
212
|
+
content: '[Mock response] ' + last.content,
|
|
213
|
+
toolCalls: [],
|
|
214
|
+
finishReason: 'stop',
|
|
215
|
+
};
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
const llmProvider: LLMProvider = (globalThis as unknown as { __fw_llm_provider__?: LLMProvider }).__fw_llm_provider__ ?? _defaultLlmProvider;
|
|
220
|
+
`;
|
|
221
|
+
}
|
|
222
|
+
export function getProviderCode(provider, model) {
|
|
223
|
+
const opts = { model: model || '' };
|
|
224
|
+
switch (provider) {
|
|
225
|
+
case 'openai':
|
|
226
|
+
return generateOpenAIProvider({ ...opts, model: model || 'gpt-4o' });
|
|
227
|
+
case 'anthropic':
|
|
228
|
+
return generateAnthropicProvider({
|
|
229
|
+
...opts,
|
|
230
|
+
model: model || 'claude-3-5-sonnet-20241022',
|
|
231
|
+
});
|
|
232
|
+
case 'ollama':
|
|
233
|
+
return generateOllamaProvider({ ...opts, model: model || 'llama3.2' });
|
|
234
|
+
case 'mock':
|
|
235
|
+
default:
|
|
236
|
+
return generateMockProvider();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Approval type definitions for human-approval template code generation.
|
|
3
|
+
*
|
|
4
|
+
* These strings are embedded into generated node code by the human-approval template.
|
|
5
|
+
* They provide the common type system for approval workflows.
|
|
6
|
+
*/
|
|
7
|
+
/** Core approval types — embedded in generated human-approval nodes */
|
|
8
|
+
export declare const APPROVAL_TYPES = "interface ApprovalRequest {\n /** Unique identifier for this approval request */\n id: string;\n /** Human-readable prompt describing what needs approval */\n prompt: string;\n /** Additional context for the reviewer */\n context?: Record<string, unknown>;\n /** Timeout duration (e.g. \"7d\", \"1h\") */\n timeout?: string;\n}\n\ninterface ApprovalResult {\n /** Whether the request was approved */\n approved: boolean;\n /** Reviewer's response text */\n response?: string;\n /** Reviewer identifier */\n reviewer?: string;\n}\n\ninterface ApprovalProvider {\n requestApproval(request: ApprovalRequest): Promise<ApprovalResult>;\n}";
|
|
9
|
+
//# sourceMappingURL=approval-types.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Approval type definitions for human-approval template code generation.
|
|
3
|
+
*
|
|
4
|
+
* These strings are embedded into generated node code by the human-approval template.
|
|
5
|
+
* They provide the common type system for approval workflows.
|
|
6
|
+
*/
|
|
7
|
+
/** Core approval types — embedded in generated human-approval nodes */
|
|
8
|
+
export const APPROVAL_TYPES = `interface ApprovalRequest {
|
|
9
|
+
/** Unique identifier for this approval request */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Human-readable prompt describing what needs approval */
|
|
12
|
+
prompt: string;
|
|
13
|
+
/** Additional context for the reviewer */
|
|
14
|
+
context?: Record<string, unknown>;
|
|
15
|
+
/** Timeout duration (e.g. "7d", "1h") */
|
|
16
|
+
timeout?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface ApprovalResult {
|
|
20
|
+
/** Whether the request was approved */
|
|
21
|
+
approved: boolean;
|
|
22
|
+
/** Reviewer's response text */
|
|
23
|
+
response?: string;
|
|
24
|
+
/** Reviewer identifier */
|
|
25
|
+
reviewer?: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface ApprovalProvider {
|
|
29
|
+
requestApproval(request: ApprovalRequest): Promise<ApprovalResult>;
|
|
30
|
+
}`;
|
|
31
|
+
//# sourceMappingURL=approval-types.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared LLM type definitions for AI template code generation.
|
|
3
|
+
*
|
|
4
|
+
* These strings are embedded into generated workflow code by the AI templates.
|
|
5
|
+
* They provide the common type system that all AI workflows need.
|
|
6
|
+
*/
|
|
7
|
+
/** Core LLM types — embedded in all AI templates */
|
|
8
|
+
export declare const LLM_CORE_TYPES = "interface LLMMessage {\n role: 'system' | 'user' | 'assistant' | 'tool';\n content: string;\n toolCallId?: string;\n}\n\ninterface LLMResponse {\n content: string | null;\n toolCalls: LLMToolCall[];\n finishReason: 'stop' | 'tool_calls' | 'length' | 'error';\n}\n\ninterface LLMToolCall {\n id: string;\n name: string;\n arguments: Record<string, unknown>;\n}\n\ninterface LLMTool {\n name: string;\n description: string;\n parameters: {\n type: 'object';\n properties: Record<string, { type: string }>;\n required?: string[];\n };\n}\n\ninterface LLMProvider {\n chat(\n messages: LLMMessage[],\n options?: { tools?: LLMTool[]; systemPrompt?: string; model?: string; temperature?: number; maxTokens?: number }\n ): Promise<LLMResponse>;\n}";
|
|
9
|
+
/** Simplified LLM types — for templates that don't need tool calling */
|
|
10
|
+
export declare const LLM_SIMPLE_TYPES = "interface LLMMessage {\n role: 'system' | 'user' | 'assistant' | 'tool';\n content: string;\n toolCallId?: string;\n}\n\ninterface LLMToolCall {\n id: string;\n name: string;\n arguments: Record<string, unknown>;\n}\n\ninterface LLMResponse {\n content: string | null;\n toolCalls: LLMToolCall[];\n finishReason: 'stop' | 'tool_calls' | 'length' | 'error';\n}\n\ninterface LLMProvider {\n chat(messages: LLMMessage[], options?: { systemPrompt?: string; model?: string; temperature?: number; maxTokens?: number }): Promise<LLMResponse>;\n}";
|
|
11
|
+
/** Mock provider factory code */
|
|
12
|
+
export declare const LLM_MOCK_PROVIDER = "const createMockProvider = (): LLMProvider => ({\n async chat(messages) {\n const lastMessage = messages[messages.length - 1];\n return {\n content: `[Mock response to: ${lastMessage.content.slice(0, 50)}...]`,\n toolCalls: [],\n finishReason: 'stop',\n };\n },\n});\n\nconst llmProvider: LLMProvider = (globalThis as unknown as { __fw_llm_provider__?: LLMProvider }).__fw_llm_provider__ ?? createMockProvider();";
|
|
13
|
+
/** Mock provider with tool calling support (for ai-agent) */
|
|
14
|
+
export declare const LLM_MOCK_PROVIDER_WITH_TOOLS = "const createMockProvider = (): LLMProvider => ({\n async chat(messages, options) {\n const last = messages[messages.length - 1];\n if (options?.tools && last.content.toLowerCase().includes('search')) {\n return {\n content: null,\n toolCalls: [\n {\n id: 'call_' + Date.now(),\n name: 'search',\n arguments: { query: last.content },\n },\n ],\n finishReason: 'tool_calls',\n };\n }\n\n return {\n content: '[Mock answer] ' + last.content,\n toolCalls: [],\n finishReason: 'stop',\n };\n },\n});\n\nconst llmProvider: LLMProvider = (globalThis as unknown as { __fw_llm_provider__?: LLMProvider }).__fw_llm_provider__ ?? createMockProvider();";
|
|
15
|
+
//# sourceMappingURL=llm-types.d.ts.map
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared LLM type definitions for AI template code generation.
|
|
3
|
+
*
|
|
4
|
+
* These strings are embedded into generated workflow code by the AI templates.
|
|
5
|
+
* They provide the common type system that all AI workflows need.
|
|
6
|
+
*/
|
|
7
|
+
/** Core LLM types — embedded in all AI templates */
|
|
8
|
+
export const LLM_CORE_TYPES = `interface LLMMessage {
|
|
9
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
10
|
+
content: string;
|
|
11
|
+
toolCallId?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface LLMResponse {
|
|
15
|
+
content: string | null;
|
|
16
|
+
toolCalls: LLMToolCall[];
|
|
17
|
+
finishReason: 'stop' | 'tool_calls' | 'length' | 'error';
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface LLMToolCall {
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
arguments: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface LLMTool {
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
parameters: {
|
|
30
|
+
type: 'object';
|
|
31
|
+
properties: Record<string, { type: string }>;
|
|
32
|
+
required?: string[];
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface LLMProvider {
|
|
37
|
+
chat(
|
|
38
|
+
messages: LLMMessage[],
|
|
39
|
+
options?: { tools?: LLMTool[]; systemPrompt?: string; model?: string; temperature?: number; maxTokens?: number }
|
|
40
|
+
): Promise<LLMResponse>;
|
|
41
|
+
}`;
|
|
42
|
+
/** Simplified LLM types — for templates that don't need tool calling */
|
|
43
|
+
export const LLM_SIMPLE_TYPES = `interface LLMMessage {
|
|
44
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
45
|
+
content: string;
|
|
46
|
+
toolCallId?: string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface LLMToolCall {
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
arguments: Record<string, unknown>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
interface LLMResponse {
|
|
56
|
+
content: string | null;
|
|
57
|
+
toolCalls: LLMToolCall[];
|
|
58
|
+
finishReason: 'stop' | 'tool_calls' | 'length' | 'error';
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
interface LLMProvider {
|
|
62
|
+
chat(messages: LLMMessage[], options?: { systemPrompt?: string; model?: string; temperature?: number; maxTokens?: number }): Promise<LLMResponse>;
|
|
63
|
+
}`;
|
|
64
|
+
/** Mock provider factory code */
|
|
65
|
+
export const LLM_MOCK_PROVIDER = `const createMockProvider = (): LLMProvider => ({
|
|
66
|
+
async chat(messages) {
|
|
67
|
+
const lastMessage = messages[messages.length - 1];
|
|
68
|
+
return {
|
|
69
|
+
content: \`[Mock response to: \${lastMessage.content.slice(0, 50)}...]\`,
|
|
70
|
+
toolCalls: [],
|
|
71
|
+
finishReason: 'stop',
|
|
72
|
+
};
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const llmProvider: LLMProvider = (globalThis as unknown as { __fw_llm_provider__?: LLMProvider }).__fw_llm_provider__ ?? createMockProvider();`;
|
|
77
|
+
/** Mock provider with tool calling support (for ai-agent) */
|
|
78
|
+
export const LLM_MOCK_PROVIDER_WITH_TOOLS = `const createMockProvider = (): LLMProvider => ({
|
|
79
|
+
async chat(messages, options) {
|
|
80
|
+
const last = messages[messages.length - 1];
|
|
81
|
+
if (options?.tools && last.content.toLowerCase().includes('search')) {
|
|
82
|
+
return {
|
|
83
|
+
content: null,
|
|
84
|
+
toolCalls: [
|
|
85
|
+
{
|
|
86
|
+
id: 'call_' + Date.now(),
|
|
87
|
+
name: 'search',
|
|
88
|
+
arguments: { query: last.content },
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
finishReason: 'tool_calls',
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return {
|
|
96
|
+
content: '[Mock answer] ' + last.content,
|
|
97
|
+
toolCalls: [],
|
|
98
|
+
finishReason: 'stop',
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
const llmProvider: LLMProvider = (globalThis as unknown as { __fw_llm_provider__?: LLMProvider }).__fw_llm_provider__ ?? createMockProvider();`;
|
|
104
|
+
//# sourceMappingURL=llm-types.js.map
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aggregator Template
|
|
3
|
+
* Combine multiple inputs into a single output
|
|
4
|
+
*/
|
|
5
|
+
export const aggregatorTemplate = {
|
|
6
|
+
id: "aggregator",
|
|
7
|
+
name: "Aggregator",
|
|
8
|
+
description: "Combine multiple data sources into one output",
|
|
9
|
+
category: "data-processing",
|
|
10
|
+
generate: (opts) => {
|
|
11
|
+
const { workflowName, async: isAsync } = opts;
|
|
12
|
+
const asyncKeyword = isAsync ? "async " : "";
|
|
13
|
+
const returnType = isAsync
|
|
14
|
+
? "Promise<{ onSuccess: boolean; onFailure: boolean; aggregated: any }>"
|
|
15
|
+
: "{ onSuccess: boolean; onFailure: boolean; aggregated: any }";
|
|
16
|
+
return `
|
|
17
|
+
// Use @expression for pure functions, normal mode for branching
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Fetches data from source A
|
|
21
|
+
*
|
|
22
|
+
* @flowWeaver nodeType
|
|
23
|
+
* @expression
|
|
24
|
+
* @label Fetch Source A
|
|
25
|
+
* @input query [order:0] - Query parameters
|
|
26
|
+
* @output data [order:0] - Data from source A
|
|
27
|
+
*/
|
|
28
|
+
function fetchSourceA(query: any): { data: any } {
|
|
29
|
+
// TODO: Fetch from source A
|
|
30
|
+
return { data: { source: "A", items: [] } };
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Fetches data from source B
|
|
35
|
+
*
|
|
36
|
+
* @flowWeaver nodeType
|
|
37
|
+
* @expression
|
|
38
|
+
* @label Fetch Source B
|
|
39
|
+
* @input query [order:0] - Query parameters
|
|
40
|
+
* @output data [order:0] - Data from source B
|
|
41
|
+
*/
|
|
42
|
+
function fetchSourceB(query: any): { data: any } {
|
|
43
|
+
// TODO: Fetch from source B
|
|
44
|
+
return { data: { source: "B", items: [] } };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Combines data from multiple sources
|
|
49
|
+
*
|
|
50
|
+
* @flowWeaver nodeType
|
|
51
|
+
* @expression
|
|
52
|
+
* @label Combine Data
|
|
53
|
+
* @input dataA [order:0] - Data from source A
|
|
54
|
+
* @input dataB [order:1] - Data from source B
|
|
55
|
+
* @output aggregated [order:0] - Combined data
|
|
56
|
+
*/
|
|
57
|
+
function combineData(dataA: any, dataB: any): { aggregated: any } {
|
|
58
|
+
// TODO: Implement aggregation logic
|
|
59
|
+
return {
|
|
60
|
+
aggregated: {
|
|
61
|
+
sources: [dataA?.source, dataB?.source],
|
|
62
|
+
totalItems: (dataA?.items?.length || 0) + (dataB?.items?.length || 0),
|
|
63
|
+
items: [...(dataA?.items || []), ...(dataB?.items || [])],
|
|
64
|
+
aggregatedAt: new Date().toISOString()
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @flowWeaver workflow
|
|
71
|
+
* @node sourceA fetchSourceA
|
|
72
|
+
* @node sourceB fetchSourceB
|
|
73
|
+
* @node combiner combineData
|
|
74
|
+
* @position Start -450 0
|
|
75
|
+
* @position sourceA -180 -90
|
|
76
|
+
* @position sourceB -180 90
|
|
77
|
+
* @position combiner 90 0
|
|
78
|
+
* @position Exit 360 0
|
|
79
|
+
* @connect Start.execute -> sourceA.execute
|
|
80
|
+
* @connect Start.execute -> sourceB.execute
|
|
81
|
+
* @connect Start.query -> sourceA.query
|
|
82
|
+
* @connect Start.query -> sourceB.query
|
|
83
|
+
* @connect sourceA.onSuccess -> combiner.execute
|
|
84
|
+
* @connect sourceA.data -> combiner.dataA
|
|
85
|
+
* @connect sourceB.data -> combiner.dataB
|
|
86
|
+
* @connect combiner.aggregated -> Exit.aggregated
|
|
87
|
+
* @connect combiner.onSuccess -> Exit.onSuccess
|
|
88
|
+
* @connect combiner.onFailure -> Exit.onFailure
|
|
89
|
+
* @param execute [order:0] - Execute
|
|
90
|
+
* @param query [order:1] - Query parameters for fetching
|
|
91
|
+
* @returns onSuccess [order:0] - On Success
|
|
92
|
+
* @returns onFailure [order:1] - On Failure
|
|
93
|
+
* @returns aggregated [order:2] - Combined data from all sources
|
|
94
|
+
*/
|
|
95
|
+
export ${asyncKeyword}function ${workflowName}(
|
|
96
|
+
execute: boolean,
|
|
97
|
+
params: { query: any }
|
|
98
|
+
): ${returnType} {
|
|
99
|
+
throw new Error("Compile with: flow-weaver compile <file>");
|
|
100
|
+
}
|
|
101
|
+
`.trim();
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=aggregator.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable AI Agent Template
|
|
3
|
+
* Linear agent pipeline with durability annotations for Inngest compilation.
|
|
4
|
+
* Each node maps to a checkpointed step when compiled with: fw export --target inngest
|
|
5
|
+
*/
|
|
6
|
+
import type { WorkflowTemplate } from '../index.js';
|
|
7
|
+
export declare const aiAgentDurableTemplate: WorkflowTemplate;
|
|
8
|
+
//# sourceMappingURL=ai-agent-durable.d.ts.map
|