@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,435 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
/**
|
|
3
|
+
* Init command — scaffolds a new flow-weaver project interactively
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
import input from '@inquirer/input';
|
|
9
|
+
import select, { Separator } from '@inquirer/select';
|
|
10
|
+
import confirm from '@inquirer/confirm';
|
|
11
|
+
import { ExitPromptError } from '@inquirer/core';
|
|
12
|
+
import { getWorkflowTemplate, workflowTemplates } from '../templates/index.js';
|
|
13
|
+
import { logger } from '../utils/logger.js';
|
|
14
|
+
import { compileCommand } from './compile.js';
|
|
15
|
+
// ── Utilities ────────────────────────────────────────────────────────────────
|
|
16
|
+
const PROJECT_NAME_RE = /^[a-zA-Z0-9][-a-zA-Z0-9_.]*$/;
|
|
17
|
+
export function validateProjectName(name) {
|
|
18
|
+
if (!name)
|
|
19
|
+
return 'Project name cannot be empty';
|
|
20
|
+
if (name.length > 214)
|
|
21
|
+
return 'Project name must be at most 214 characters';
|
|
22
|
+
if (!PROJECT_NAME_RE.test(name)) {
|
|
23
|
+
return 'Project name must start with a letter or digit and contain only letters, digits, hyphens, dots, and underscores';
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
export function toWorkflowName(projectName) {
|
|
28
|
+
const camel = projectName
|
|
29
|
+
.replace(/[-_.]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))
|
|
30
|
+
.replace(/^[^a-zA-Z_$]+/, '')
|
|
31
|
+
.replace(/^./, (c) => c.toLowerCase());
|
|
32
|
+
return (camel || 'myProject') + 'Workflow';
|
|
33
|
+
}
|
|
34
|
+
export function isNonInteractive() {
|
|
35
|
+
return !process.stdin.isTTY;
|
|
36
|
+
}
|
|
37
|
+
const VALID_TEMPLATES = workflowTemplates.map((t) => t.id);
|
|
38
|
+
// ── Config resolution (prompts) ──────────────────────────────────────────────
|
|
39
|
+
export async function resolveInitConfig(dirArg, options) {
|
|
40
|
+
const skipPrompts = options.yes || isNonInteractive();
|
|
41
|
+
const force = options.force ?? false;
|
|
42
|
+
// 1. Project name
|
|
43
|
+
let projectName;
|
|
44
|
+
if (options.name) {
|
|
45
|
+
projectName = options.name;
|
|
46
|
+
}
|
|
47
|
+
else if (dirArg) {
|
|
48
|
+
projectName = path.basename(dirArg);
|
|
49
|
+
}
|
|
50
|
+
else if (skipPrompts) {
|
|
51
|
+
projectName = 'my-project';
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
projectName = await input({
|
|
55
|
+
message: 'Project name:',
|
|
56
|
+
default: 'my-project',
|
|
57
|
+
validate: (v) => validateProjectName(v),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const valid = validateProjectName(projectName);
|
|
61
|
+
if (valid !== true) {
|
|
62
|
+
throw new Error(valid);
|
|
63
|
+
}
|
|
64
|
+
// Target directory
|
|
65
|
+
const targetDir = path.resolve(dirArg ?? projectName);
|
|
66
|
+
// 2. Template
|
|
67
|
+
let template;
|
|
68
|
+
if (options.template) {
|
|
69
|
+
template = options.template;
|
|
70
|
+
if (!VALID_TEMPLATES.includes(template)) {
|
|
71
|
+
throw new Error(`Unknown template "${template}". Available: ${VALID_TEMPLATES.join(', ')}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else if (skipPrompts) {
|
|
75
|
+
template = 'sequential';
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
template = await select({
|
|
79
|
+
message: 'Workflow template:',
|
|
80
|
+
choices: [
|
|
81
|
+
new Separator('── Data Processing ──'),
|
|
82
|
+
{ value: 'sequential', name: 'sequential', description: 'Linear pipeline' },
|
|
83
|
+
{ value: 'foreach', name: 'foreach', description: 'Batch iteration' },
|
|
84
|
+
{ value: 'aggregator', name: 'aggregator', description: 'Collect and aggregate results' },
|
|
85
|
+
new Separator('── Automation ──'),
|
|
86
|
+
{ value: 'conditional', name: 'conditional', description: 'Route by condition' },
|
|
87
|
+
new Separator('── AI ──'),
|
|
88
|
+
{ value: 'ai-agent', name: 'ai-agent', description: 'LLM agent with tool calling' },
|
|
89
|
+
{ value: 'ai-react', name: 'ai-react', description: 'ReAct pattern' },
|
|
90
|
+
{ value: 'ai-rag', name: 'ai-rag', description: 'Retrieval-Augmented Generation' },
|
|
91
|
+
{ value: 'ai-chat', name: 'ai-chat', description: 'Conversational AI' },
|
|
92
|
+
new Separator('── Durable ──'),
|
|
93
|
+
{ value: 'ai-agent-durable', name: 'ai-agent-durable', description: 'Durable agent with approval gate' },
|
|
94
|
+
{ value: 'ai-pipeline-durable', name: 'ai-pipeline-durable', description: 'Durable data pipeline' },
|
|
95
|
+
new Separator('── Integration ──'),
|
|
96
|
+
{ value: 'webhook', name: 'webhook', description: 'HTTP webhook handler' },
|
|
97
|
+
new Separator('── Utility ──'),
|
|
98
|
+
{
|
|
99
|
+
value: 'error-handler',
|
|
100
|
+
name: 'error-handler',
|
|
101
|
+
description: 'Error handling and recovery',
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
default: 'sequential',
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
// 3. Install deps?
|
|
108
|
+
let installDeps;
|
|
109
|
+
if (options.install !== undefined) {
|
|
110
|
+
installDeps = options.install;
|
|
111
|
+
}
|
|
112
|
+
else if (skipPrompts) {
|
|
113
|
+
installDeps = true;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
installDeps = await confirm({ message: 'Install dependencies (npm install)?', default: true });
|
|
117
|
+
}
|
|
118
|
+
// 4. Git init?
|
|
119
|
+
let gitInit;
|
|
120
|
+
if (options.git !== undefined) {
|
|
121
|
+
gitInit = options.git;
|
|
122
|
+
}
|
|
123
|
+
else if (skipPrompts) {
|
|
124
|
+
gitInit = true;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
gitInit = await confirm({ message: 'Initialize a git repository?', default: true });
|
|
128
|
+
}
|
|
129
|
+
// 5. Module format
|
|
130
|
+
let format;
|
|
131
|
+
if (options.format) {
|
|
132
|
+
format = options.format;
|
|
133
|
+
if (format !== 'esm' && format !== 'cjs') {
|
|
134
|
+
throw new Error(`Invalid format "${format}". Use "esm" or "cjs".`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (skipPrompts) {
|
|
138
|
+
format = 'esm';
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
format = await select({
|
|
142
|
+
message: 'Module format:',
|
|
143
|
+
choices: [
|
|
144
|
+
{
|
|
145
|
+
value: 'esm',
|
|
146
|
+
name: 'ESM (Recommended)',
|
|
147
|
+
description: 'ECMAScript modules (import/export)',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
value: 'cjs',
|
|
151
|
+
name: 'CommonJS',
|
|
152
|
+
description: 'CommonJS modules (require/module.exports)',
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
default: 'esm',
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
projectName,
|
|
160
|
+
targetDir,
|
|
161
|
+
template,
|
|
162
|
+
format,
|
|
163
|
+
install: installDeps,
|
|
164
|
+
git: gitInit,
|
|
165
|
+
force,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// ── Pure file generation ─────────────────────────────────────────────────────
|
|
169
|
+
export function generateProjectFiles(projectName, template, format = 'esm') {
|
|
170
|
+
const workflowName = toWorkflowName(projectName);
|
|
171
|
+
const workflowFile = `${projectName}-workflow.ts`;
|
|
172
|
+
const tmpl = getWorkflowTemplate(template);
|
|
173
|
+
if (!tmpl) {
|
|
174
|
+
throw new Error(`Unknown template "${template}"`);
|
|
175
|
+
}
|
|
176
|
+
const workflowCode = tmpl.generate({ workflowName });
|
|
177
|
+
// Package.json differs based on module format
|
|
178
|
+
const packageJsonContent = {
|
|
179
|
+
name: projectName,
|
|
180
|
+
version: '1.0.0',
|
|
181
|
+
scripts: {
|
|
182
|
+
dev: `npx flow-weaver compile src/${workflowFile} -o src && npx tsx src/main.ts`,
|
|
183
|
+
start: 'npx tsx src/main.ts',
|
|
184
|
+
compile: `npx flow-weaver compile src/${workflowFile} -o src`,
|
|
185
|
+
validate: `npx flow-weaver validate src/${workflowFile}`,
|
|
186
|
+
doctor: 'npx flow-weaver doctor',
|
|
187
|
+
},
|
|
188
|
+
dependencies: {
|
|
189
|
+
'@synergenius/flow-weaver': 'latest',
|
|
190
|
+
},
|
|
191
|
+
devDependencies: {
|
|
192
|
+
typescript: '^5.3.0',
|
|
193
|
+
'@types/node': '^20.11.0',
|
|
194
|
+
tsx: '^4.21.0',
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
// ESM projects need "type": "module"
|
|
198
|
+
if (format === 'esm') {
|
|
199
|
+
packageJsonContent.type = 'module';
|
|
200
|
+
}
|
|
201
|
+
// CJS projects can optionally have "type": "commonjs" but it's the default
|
|
202
|
+
const packageJson = JSON.stringify(packageJsonContent, null, 2);
|
|
203
|
+
// tsconfig.json differs based on module format
|
|
204
|
+
const tsconfigContent = {
|
|
205
|
+
compilerOptions: {
|
|
206
|
+
target: 'ES2020',
|
|
207
|
+
module: format === 'esm' ? 'ES2020' : 'CommonJS',
|
|
208
|
+
moduleResolution: format === 'esm' ? 'bundler' : 'node',
|
|
209
|
+
strict: true,
|
|
210
|
+
esModuleInterop: true,
|
|
211
|
+
skipLibCheck: true,
|
|
212
|
+
outDir: 'dist',
|
|
213
|
+
rootDir: 'src',
|
|
214
|
+
types: ['node'],
|
|
215
|
+
},
|
|
216
|
+
include: ['src'],
|
|
217
|
+
};
|
|
218
|
+
const tsconfigJson = JSON.stringify(tsconfigContent, null, 2);
|
|
219
|
+
// main.ts import syntax differs based on module format
|
|
220
|
+
const workflowJsFile = workflowFile.replace(/\.ts$/, '.js');
|
|
221
|
+
let mainTs;
|
|
222
|
+
if (format === 'esm') {
|
|
223
|
+
mainTs = [
|
|
224
|
+
'/**',
|
|
225
|
+
` * ${projectName} — workflow runner`,
|
|
226
|
+
' *',
|
|
227
|
+
' * Usage:',
|
|
228
|
+
' * npm run dev compile workflow + run this file',
|
|
229
|
+
' * npm start run without recompiling',
|
|
230
|
+
' * npm run compile compile only',
|
|
231
|
+
' */',
|
|
232
|
+
'',
|
|
233
|
+
`import { ${workflowName} } from './${workflowJsFile}';`,
|
|
234
|
+
'',
|
|
235
|
+
'try {',
|
|
236
|
+
` const result = ${workflowName}(true, { data: { message: 'hello world' } });`,
|
|
237
|
+
' console.log(result);',
|
|
238
|
+
'} catch (e) {',
|
|
239
|
+
" if (e instanceof Error && e.message.startsWith('Compile with:')) {",
|
|
240
|
+
" console.error('Workflow not compiled yet. Run: npm run dev');",
|
|
241
|
+
' process.exit(1);',
|
|
242
|
+
' }',
|
|
243
|
+
' throw e;',
|
|
244
|
+
'}',
|
|
245
|
+
'',
|
|
246
|
+
].join('\n');
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
// CommonJS format
|
|
250
|
+
mainTs = [
|
|
251
|
+
'/**',
|
|
252
|
+
` * ${projectName} — workflow runner`,
|
|
253
|
+
' *',
|
|
254
|
+
' * Usage:',
|
|
255
|
+
' * npm run dev compile workflow + run this file',
|
|
256
|
+
' * npm start run without recompiling',
|
|
257
|
+
' * npm run compile compile only',
|
|
258
|
+
' */',
|
|
259
|
+
'',
|
|
260
|
+
`const { ${workflowName} } = require('./${workflowJsFile}');`,
|
|
261
|
+
'',
|
|
262
|
+
'try {',
|
|
263
|
+
` const result = ${workflowName}(true, { data: { message: 'hello world' } });`,
|
|
264
|
+
' console.log(result);',
|
|
265
|
+
'} catch (e) {',
|
|
266
|
+
" if (e instanceof Error && e.message.startsWith('Compile with:')) {",
|
|
267
|
+
" console.error('Workflow not compiled yet. Run: npm run dev');",
|
|
268
|
+
' process.exit(1);',
|
|
269
|
+
' }',
|
|
270
|
+
' throw e;',
|
|
271
|
+
'}',
|
|
272
|
+
'',
|
|
273
|
+
].join('\n');
|
|
274
|
+
}
|
|
275
|
+
const gitignore = `node_modules/\ndist/\n.tsbuildinfo\n`;
|
|
276
|
+
return {
|
|
277
|
+
'package.json': packageJson,
|
|
278
|
+
'tsconfig.json': tsconfigJson,
|
|
279
|
+
[`src/${workflowFile}`]: workflowCode,
|
|
280
|
+
'src/main.ts': mainTs,
|
|
281
|
+
'.gitignore': gitignore,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
// ── Filesystem writer ────────────────────────────────────────────────────────
|
|
285
|
+
export function scaffoldProject(targetDir, files, options) {
|
|
286
|
+
const filesCreated = [];
|
|
287
|
+
const filesSkipped = [];
|
|
288
|
+
for (const [relativePath, content] of Object.entries(files)) {
|
|
289
|
+
const absPath = path.join(targetDir, relativePath);
|
|
290
|
+
const dir = path.dirname(absPath);
|
|
291
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
292
|
+
if (fs.existsSync(absPath) && !options.force) {
|
|
293
|
+
filesSkipped.push(relativePath);
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
fs.writeFileSync(absPath, content, 'utf8');
|
|
297
|
+
filesCreated.push(relativePath);
|
|
298
|
+
}
|
|
299
|
+
return { filesCreated, filesSkipped };
|
|
300
|
+
}
|
|
301
|
+
// ── Post-scaffold actions ────────────────────────────────────────────────────
|
|
302
|
+
export function runNpmInstall(targetDir) {
|
|
303
|
+
try {
|
|
304
|
+
execSync('npm install', { cwd: targetDir, stdio: 'pipe', timeout: 120_000 });
|
|
305
|
+
return { success: true };
|
|
306
|
+
}
|
|
307
|
+
catch (err) {
|
|
308
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
309
|
+
return { success: false, error: message };
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
export function runGitInit(targetDir) {
|
|
313
|
+
try {
|
|
314
|
+
execSync('git init', { cwd: targetDir, stdio: 'pipe', timeout: 10_000 });
|
|
315
|
+
return { success: true };
|
|
316
|
+
}
|
|
317
|
+
catch (err) {
|
|
318
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
319
|
+
return { success: false, error: message };
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// ── CLI entrypoint ───────────────────────────────────────────────────────────
|
|
323
|
+
export async function initCommand(dirArg, options) {
|
|
324
|
+
try {
|
|
325
|
+
const config = await resolveInitConfig(dirArg, options);
|
|
326
|
+
// Validate target directory
|
|
327
|
+
const pkgPath = path.join(config.targetDir, 'package.json');
|
|
328
|
+
if (fs.existsSync(pkgPath) && !config.force) {
|
|
329
|
+
throw new Error(`${config.targetDir} already contains a package.json. Use --force to overwrite.`);
|
|
330
|
+
}
|
|
331
|
+
// Generate and scaffold
|
|
332
|
+
const files = generateProjectFiles(config.projectName, config.template, config.format);
|
|
333
|
+
const { filesCreated, filesSkipped } = scaffoldProject(config.targetDir, files, {
|
|
334
|
+
force: config.force,
|
|
335
|
+
});
|
|
336
|
+
// Post-scaffold actions
|
|
337
|
+
let installResult;
|
|
338
|
+
if (config.install) {
|
|
339
|
+
if (!options.json) {
|
|
340
|
+
logger.info('Installing dependencies...');
|
|
341
|
+
}
|
|
342
|
+
installResult = runNpmInstall(config.targetDir);
|
|
343
|
+
}
|
|
344
|
+
let gitResult;
|
|
345
|
+
if (config.git) {
|
|
346
|
+
if (!options.json) {
|
|
347
|
+
logger.info('Initializing git repository...');
|
|
348
|
+
}
|
|
349
|
+
gitResult = runGitInit(config.targetDir);
|
|
350
|
+
}
|
|
351
|
+
// Auto-compile the workflow so `npm start` works immediately
|
|
352
|
+
const workflowFile = `${config.projectName}-workflow.ts`;
|
|
353
|
+
const workflowPath = path.join(config.targetDir, 'src', workflowFile);
|
|
354
|
+
// Auto-compile the workflow so `npm start` works immediately.
|
|
355
|
+
// Skip in JSON mode since compileCommand writes to logger.
|
|
356
|
+
let compileResult;
|
|
357
|
+
if (!options.json && fs.existsSync(workflowPath)) {
|
|
358
|
+
try {
|
|
359
|
+
logger.info('Compiling workflow...');
|
|
360
|
+
await compileCommand(workflowPath, { format: config.format });
|
|
361
|
+
compileResult = { success: true };
|
|
362
|
+
}
|
|
363
|
+
catch (err) {
|
|
364
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
365
|
+
compileResult = { success: false, error: message };
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// Build report
|
|
369
|
+
const report = {
|
|
370
|
+
projectDir: config.targetDir,
|
|
371
|
+
filesCreated,
|
|
372
|
+
filesSkipped,
|
|
373
|
+
template: config.template,
|
|
374
|
+
format: config.format,
|
|
375
|
+
installResult,
|
|
376
|
+
gitResult,
|
|
377
|
+
};
|
|
378
|
+
if (options.json) {
|
|
379
|
+
console.log(JSON.stringify(report, null, 2));
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
// Human output
|
|
383
|
+
logger.section('Project created');
|
|
384
|
+
for (const file of filesCreated) {
|
|
385
|
+
logger.success(`Created ${file}`);
|
|
386
|
+
}
|
|
387
|
+
for (const file of filesSkipped) {
|
|
388
|
+
logger.warn(`Skipped ${file} (already exists)`);
|
|
389
|
+
}
|
|
390
|
+
if (installResult) {
|
|
391
|
+
if (installResult.success) {
|
|
392
|
+
logger.success('Dependencies installed');
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
logger.warn(`npm install failed: ${installResult.error}`);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
if (gitResult) {
|
|
399
|
+
if (gitResult.success) {
|
|
400
|
+
logger.success('Git repository initialized');
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
logger.warn(`git init failed: ${gitResult.error}`);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
if (compileResult) {
|
|
407
|
+
if (compileResult.success) {
|
|
408
|
+
logger.success('Workflow compiled (npm start works immediately)');
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
logger.warn(`Workflow compile failed: ${compileResult.error}`);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
logger.newline();
|
|
415
|
+
logger.section('Next steps');
|
|
416
|
+
const relDir = path.relative(process.cwd(), config.targetDir);
|
|
417
|
+
const displayDir = !relDir || relDir === '.' ? null : relDir.startsWith('../../') ? config.targetDir : relDir;
|
|
418
|
+
if (displayDir) {
|
|
419
|
+
logger.log(` cd ${displayDir}`);
|
|
420
|
+
}
|
|
421
|
+
if (!config.install) {
|
|
422
|
+
logger.log(' npm install');
|
|
423
|
+
}
|
|
424
|
+
logger.log(compileResult?.success ? ' npm start' : ' npm run dev');
|
|
425
|
+
logger.newline();
|
|
426
|
+
}
|
|
427
|
+
catch (err) {
|
|
428
|
+
// Clean exit on Ctrl+C during prompts
|
|
429
|
+
if (err instanceof ExitPromptError) {
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
throw err;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { io as socketIO } from 'socket.io-client';
|
|
2
|
+
export interface AckResponse {
|
|
3
|
+
requestId: string;
|
|
4
|
+
success: boolean;
|
|
5
|
+
result?: unknown;
|
|
6
|
+
error?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ListenOptions {
|
|
9
|
+
server?: string;
|
|
10
|
+
/** Override the socket.io-client `io` factory (for testing) */
|
|
11
|
+
ioFactory?: typeof socketIO;
|
|
12
|
+
/** Override stdout (for testing) */
|
|
13
|
+
output?: NodeJS.WritableStream;
|
|
14
|
+
}
|
|
15
|
+
export declare function listenCommand(options: ListenOptions): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=listen.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { io as socketIO } from 'socket.io-client';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
import { DEFAULT_SERVER_URL } from '../../defaults.js';
|
|
4
|
+
export async function listenCommand(options) {
|
|
5
|
+
const serverUrl = options.server || DEFAULT_SERVER_URL;
|
|
6
|
+
const ioFactory = options.ioFactory ?? socketIO;
|
|
7
|
+
const output = options.output ?? process.stdout;
|
|
8
|
+
const socket = ioFactory(`${serverUrl}/integrations`, {
|
|
9
|
+
query: { clientType: 'cli' },
|
|
10
|
+
transports: ['websocket', 'polling'],
|
|
11
|
+
reconnection: true,
|
|
12
|
+
reconnectionDelay: 1000,
|
|
13
|
+
reconnectionAttempts: Infinity,
|
|
14
|
+
});
|
|
15
|
+
socket.on('connect', () => {
|
|
16
|
+
logger.info(`Connected to ${serverUrl}/integrations`);
|
|
17
|
+
socket.emit('integration:getContext', (ctx) => {
|
|
18
|
+
if (ctx) {
|
|
19
|
+
output.write(JSON.stringify({ event: 'integration:context', data: ctx }) + '\n');
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
socket.on('disconnect', (reason) => {
|
|
24
|
+
logger.warn(`Disconnected: ${reason}`);
|
|
25
|
+
});
|
|
26
|
+
socket.onAny((event, data) => {
|
|
27
|
+
if (event.startsWith('fw:') || event.startsWith('integration:')) {
|
|
28
|
+
output.write(JSON.stringify({ event, data }) + '\n');
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
process.on('SIGINT', () => {
|
|
32
|
+
logger.info('Disconnecting...');
|
|
33
|
+
socket.disconnect();
|
|
34
|
+
process.exit(0);
|
|
35
|
+
});
|
|
36
|
+
// Keep alive until SIGINT
|
|
37
|
+
await new Promise(() => { });
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=listen.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace commands — init, pack, publish, install, search, list
|
|
3
|
+
*/
|
|
4
|
+
export interface MarketInitOptions {
|
|
5
|
+
description?: string;
|
|
6
|
+
author?: string;
|
|
7
|
+
yes?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Scaffold a new marketplace package project.
|
|
11
|
+
*/
|
|
12
|
+
export declare function marketInitCommand(name: string, options?: MarketInitOptions): Promise<void>;
|
|
13
|
+
export interface MarketPackOptions {
|
|
14
|
+
json?: boolean;
|
|
15
|
+
verbose?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parse source files, validate, and generate flowweaver.manifest.json.
|
|
19
|
+
*/
|
|
20
|
+
export declare function marketPackCommand(directory?: string, options?: MarketPackOptions): Promise<void>;
|
|
21
|
+
export interface MarketPublishOptions {
|
|
22
|
+
dryRun?: boolean;
|
|
23
|
+
tag?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Pack + pre-publish checks + npm publish.
|
|
27
|
+
*/
|
|
28
|
+
export declare function marketPublishCommand(directory?: string, options?: MarketPublishOptions): Promise<void>;
|
|
29
|
+
export interface MarketInstallOptions {
|
|
30
|
+
json?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Install a marketplace package and display its contents.
|
|
34
|
+
*/
|
|
35
|
+
export declare function marketInstallCommand(packageSpec: string, options?: MarketInstallOptions): Promise<void>;
|
|
36
|
+
export interface MarketSearchOptions {
|
|
37
|
+
limit?: number;
|
|
38
|
+
json?: boolean;
|
|
39
|
+
registry?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Search npm for marketplace packages.
|
|
43
|
+
*/
|
|
44
|
+
export declare function marketSearchCommand(query?: string, options?: MarketSearchOptions): Promise<void>;
|
|
45
|
+
export interface MarketListOptions {
|
|
46
|
+
json?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* List installed marketplace packages.
|
|
50
|
+
*/
|
|
51
|
+
export declare function marketListCommand(options?: MarketListOptions): Promise<void>;
|
|
52
|
+
//# sourceMappingURL=market.d.ts.map
|