@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,384 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev command - watch, compile, and run workflow on changes
|
|
3
|
+
*/
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as os from 'os';
|
|
7
|
+
import { glob } from 'glob';
|
|
8
|
+
import { spawn } from 'child_process';
|
|
9
|
+
import { compileCommand, compileInngestTarget } from './compile.js';
|
|
10
|
+
import { executeWorkflowFromFile } from '../../mcp/workflow-executor.js';
|
|
11
|
+
import { logger } from '../utils/logger.js';
|
|
12
|
+
import { getErrorMessage } from '../../utils/error-utils.js';
|
|
13
|
+
import { getFriendlyError } from '../../friendly-errors.js';
|
|
14
|
+
function timestamp() {
|
|
15
|
+
const now = new Date();
|
|
16
|
+
const h = String(now.getHours()).padStart(2, '0');
|
|
17
|
+
const m = String(now.getMinutes()).padStart(2, '0');
|
|
18
|
+
const s = String(now.getSeconds()).padStart(2, '0');
|
|
19
|
+
return `[${h}:${m}:${s}]`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Parse params from --params or --params-file.
|
|
23
|
+
*/
|
|
24
|
+
function parseParams(options) {
|
|
25
|
+
if (options.params) {
|
|
26
|
+
try {
|
|
27
|
+
return JSON.parse(options.params);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new Error(`Invalid JSON in --params: ${options.params}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (options.paramsFile) {
|
|
34
|
+
const paramsFilePath = path.resolve(options.paramsFile);
|
|
35
|
+
if (!fs.existsSync(paramsFilePath)) {
|
|
36
|
+
throw new Error(`Params file not found: ${paramsFilePath}`);
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const content = fs.readFileSync(paramsFilePath, 'utf8');
|
|
40
|
+
return JSON.parse(content);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
throw new Error(`Failed to parse params file: ${options.paramsFile}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Run a single compile + execute cycle.
|
|
50
|
+
* Returns true if both compile and run succeeded.
|
|
51
|
+
*/
|
|
52
|
+
async function compileAndRun(filePath, params, options) {
|
|
53
|
+
// Step 1: Compile
|
|
54
|
+
const compileOpts = {
|
|
55
|
+
format: options.format,
|
|
56
|
+
clean: options.clean,
|
|
57
|
+
};
|
|
58
|
+
try {
|
|
59
|
+
await compileCommand(filePath, compileOpts);
|
|
60
|
+
if (!options.json) {
|
|
61
|
+
logger.success('Compiled successfully');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
const errorMsg = getErrorMessage(error);
|
|
66
|
+
const errorObj = error;
|
|
67
|
+
if (errorObj.errors && Array.isArray(errorObj.errors)) {
|
|
68
|
+
logger.error('Compile failed:');
|
|
69
|
+
for (const err of errorObj.errors) {
|
|
70
|
+
const friendly = getFriendlyError(err);
|
|
71
|
+
if (friendly) {
|
|
72
|
+
logger.error(` ${friendly.title}: ${friendly.explanation}`);
|
|
73
|
+
logger.info(` How to fix: ${friendly.fix}`);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
logger.error(` - ${err.message}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
logger.error(`Compile failed: ${errorMsg}`);
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
// Step 2: Run
|
|
86
|
+
try {
|
|
87
|
+
const result = await executeWorkflowFromFile(filePath, params, {
|
|
88
|
+
workflowName: options.workflow,
|
|
89
|
+
production: options.production ?? false,
|
|
90
|
+
includeTrace: !options.production,
|
|
91
|
+
});
|
|
92
|
+
if (options.json) {
|
|
93
|
+
process.stdout.write(JSON.stringify({
|
|
94
|
+
success: true,
|
|
95
|
+
workflow: result.functionName,
|
|
96
|
+
executionTime: result.executionTime,
|
|
97
|
+
result: result.result,
|
|
98
|
+
}, null, 2) + '\n');
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
logger.success(`Workflow "${result.functionName}" completed in ${result.executionTime}ms`);
|
|
102
|
+
logger.newline();
|
|
103
|
+
logger.section('Result');
|
|
104
|
+
logger.log(JSON.stringify(result.result, null, 2));
|
|
105
|
+
}
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
const errorMsg = getErrorMessage(error);
|
|
110
|
+
if (options.json) {
|
|
111
|
+
process.stdout.write(JSON.stringify({ success: false, error: errorMsg }, null, 2) + '\n');
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
logger.error(`Run failed: ${errorMsg}`);
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
// Inngest Dev Mode
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
/**
|
|
123
|
+
* Check that required packages are installed.
|
|
124
|
+
*/
|
|
125
|
+
function checkDependency(pkg, cwd) {
|
|
126
|
+
try {
|
|
127
|
+
require.resolve(pkg, { paths: [cwd] });
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Generate the dev server entry file for Inngest.
|
|
136
|
+
*/
|
|
137
|
+
function generateDevServerEntry(inngestOutputPath, framework, port) {
|
|
138
|
+
const relImport = `./${path.basename(inngestOutputPath).replace(/\.ts$/, '.js')}`;
|
|
139
|
+
if (framework === 'express') {
|
|
140
|
+
return `import express from 'express';
|
|
141
|
+
import { handler } from '${relImport}';
|
|
142
|
+
|
|
143
|
+
const app = express();
|
|
144
|
+
app.use(express.json());
|
|
145
|
+
app.use('/api/inngest', handler);
|
|
146
|
+
app.listen(${port}, () => {
|
|
147
|
+
console.log('Inngest dev server running on http://localhost:${port}');
|
|
148
|
+
console.log('Inngest endpoint: http://localhost:${port}/api/inngest');
|
|
149
|
+
console.log('');
|
|
150
|
+
console.log('Connect Inngest Dev Server:');
|
|
151
|
+
console.log(' npx inngest-cli@latest dev -u http://localhost:${port}/api/inngest');
|
|
152
|
+
});
|
|
153
|
+
`;
|
|
154
|
+
}
|
|
155
|
+
if (framework === 'hono') {
|
|
156
|
+
return `import { Hono } from 'hono';
|
|
157
|
+
import { serve } from '@hono/node-server';
|
|
158
|
+
import { handler } from '${relImport}';
|
|
159
|
+
|
|
160
|
+
const app = new Hono();
|
|
161
|
+
app.route('/api/inngest', handler);
|
|
162
|
+
|
|
163
|
+
serve({ fetch: app.fetch, port: ${port} }, () => {
|
|
164
|
+
console.log('Inngest dev server running on http://localhost:${port}');
|
|
165
|
+
console.log('Inngest endpoint: http://localhost:${port}/api/inngest');
|
|
166
|
+
console.log('');
|
|
167
|
+
console.log('Connect Inngest Dev Server:');
|
|
168
|
+
console.log(' npx inngest-cli@latest dev -u http://localhost:${port}/api/inngest');
|
|
169
|
+
});
|
|
170
|
+
`;
|
|
171
|
+
}
|
|
172
|
+
// Default: express (most common for dev)
|
|
173
|
+
return generateDevServerEntry(inngestOutputPath, 'express', port);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Compile workflow to Inngest and start a local dev server.
|
|
177
|
+
*/
|
|
178
|
+
async function runInngestDevMode(filePath, options) {
|
|
179
|
+
const framework = options.framework ?? 'express';
|
|
180
|
+
const port = options.port ?? 3000;
|
|
181
|
+
const cwd = path.dirname(filePath);
|
|
182
|
+
// Check dependencies
|
|
183
|
+
const missingDeps = [];
|
|
184
|
+
if (!checkDependency('inngest', cwd))
|
|
185
|
+
missingDeps.push('inngest');
|
|
186
|
+
if (framework === 'express' && !checkDependency('express', cwd))
|
|
187
|
+
missingDeps.push('express');
|
|
188
|
+
if (framework === 'hono') {
|
|
189
|
+
if (!checkDependency('hono', cwd))
|
|
190
|
+
missingDeps.push('hono');
|
|
191
|
+
if (!checkDependency('@hono/node-server', cwd))
|
|
192
|
+
missingDeps.push('@hono/node-server');
|
|
193
|
+
}
|
|
194
|
+
if (missingDeps.length > 0) {
|
|
195
|
+
throw new Error(`Missing dependencies: ${missingDeps.join(', ')}. Install them with: npm install ${missingDeps.join(' ')}`);
|
|
196
|
+
}
|
|
197
|
+
// Set up temp directory for generated files
|
|
198
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'fw-inngest-dev-'));
|
|
199
|
+
const inngestOutputPath = path.join(tmpDir, path.basename(filePath).replace(/\.ts$/, '.inngest.ts'));
|
|
200
|
+
let serverProcess = null;
|
|
201
|
+
const compileInngest = async () => {
|
|
202
|
+
try {
|
|
203
|
+
await compileInngestTarget(filePath, {
|
|
204
|
+
production: false,
|
|
205
|
+
workflowName: options.workflow,
|
|
206
|
+
serve: true,
|
|
207
|
+
framework: framework,
|
|
208
|
+
typedEvents: true,
|
|
209
|
+
});
|
|
210
|
+
// compileInngestTarget writes to filePath.replace(.ts, .inngest.ts)
|
|
211
|
+
// Copy it to our temp dir, then remove the source-adjacent file
|
|
212
|
+
const sourceOutput = filePath.replace(/\.ts$/, '.inngest.ts');
|
|
213
|
+
if (fs.existsSync(sourceOutput)) {
|
|
214
|
+
fs.copyFileSync(sourceOutput, inngestOutputPath);
|
|
215
|
+
try {
|
|
216
|
+
fs.unlinkSync(sourceOutput);
|
|
217
|
+
}
|
|
218
|
+
catch { /* ignore */ }
|
|
219
|
+
}
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
logger.error(`Inngest compilation failed: ${getErrorMessage(error)}`);
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
const startServer = () => {
|
|
228
|
+
// Generate dev server entry
|
|
229
|
+
const entryPath = path.join(tmpDir, 'dev-server.ts');
|
|
230
|
+
const entryCode = generateDevServerEntry(inngestOutputPath, framework, port);
|
|
231
|
+
fs.writeFileSync(entryPath, entryCode, 'utf8');
|
|
232
|
+
// Spawn tsx to run the server
|
|
233
|
+
serverProcess = spawn('npx', ['tsx', entryPath], {
|
|
234
|
+
cwd: path.dirname(filePath),
|
|
235
|
+
stdio: 'inherit',
|
|
236
|
+
shell: true,
|
|
237
|
+
});
|
|
238
|
+
serverProcess.on('error', (err) => {
|
|
239
|
+
logger.error(`Server process error: ${err.message}`);
|
|
240
|
+
});
|
|
241
|
+
serverProcess.on('exit', (code) => {
|
|
242
|
+
if (code !== null && code !== 0) {
|
|
243
|
+
logger.error(`Server exited with code ${code}`);
|
|
244
|
+
}
|
|
245
|
+
serverProcess = null;
|
|
246
|
+
});
|
|
247
|
+
};
|
|
248
|
+
const stopServer = () => {
|
|
249
|
+
if (serverProcess && !serverProcess.killed) {
|
|
250
|
+
serverProcess.kill('SIGTERM');
|
|
251
|
+
serverProcess = null;
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
const restartServer = async () => {
|
|
255
|
+
stopServer();
|
|
256
|
+
const ok = await compileInngest();
|
|
257
|
+
if (ok) {
|
|
258
|
+
startServer();
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
// Header
|
|
262
|
+
logger.section('Inngest Dev Mode');
|
|
263
|
+
logger.info(`File: ${path.basename(filePath)}`);
|
|
264
|
+
logger.info(`Framework: ${framework}`);
|
|
265
|
+
logger.info(`Port: ${port}`);
|
|
266
|
+
logger.newline();
|
|
267
|
+
// Initial compile + start
|
|
268
|
+
const ok = await compileInngest();
|
|
269
|
+
if (!ok) {
|
|
270
|
+
if (options.once)
|
|
271
|
+
return;
|
|
272
|
+
logger.info('Fix the errors above, then save the file to retry.');
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
if (options.once)
|
|
276
|
+
return;
|
|
277
|
+
startServer();
|
|
278
|
+
}
|
|
279
|
+
// Watch for changes
|
|
280
|
+
logger.newline();
|
|
281
|
+
logger.success('Watching for file changes... (Ctrl+C to stop)');
|
|
282
|
+
const files = await glob(path.resolve(filePath), { absolute: true });
|
|
283
|
+
const chokidar = await import('chokidar');
|
|
284
|
+
const watcher = chokidar.watch(files, {
|
|
285
|
+
persistent: true,
|
|
286
|
+
ignoreInitial: true,
|
|
287
|
+
});
|
|
288
|
+
watcher.on('change', async (file) => {
|
|
289
|
+
logger.newline();
|
|
290
|
+
logger.info(`${timestamp()} File changed: ${path.basename(file)}`);
|
|
291
|
+
logger.info('Recompiling and restarting server...');
|
|
292
|
+
logger.newline();
|
|
293
|
+
await restartServer();
|
|
294
|
+
});
|
|
295
|
+
// Cleanup
|
|
296
|
+
const sourceOutput = filePath.replace(/\.ts$/, '.inngest.ts');
|
|
297
|
+
const cleanup = () => {
|
|
298
|
+
logger.newline();
|
|
299
|
+
logger.info('Stopping Inngest dev mode...');
|
|
300
|
+
stopServer();
|
|
301
|
+
watcher.close();
|
|
302
|
+
// Clean up temp files and source-adjacent .inngest.ts
|
|
303
|
+
try {
|
|
304
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
305
|
+
}
|
|
306
|
+
catch { /* ignore */ }
|
|
307
|
+
try {
|
|
308
|
+
fs.unlinkSync(sourceOutput);
|
|
309
|
+
}
|
|
310
|
+
catch { /* ignore */ }
|
|
311
|
+
process.exit(0);
|
|
312
|
+
};
|
|
313
|
+
process.on('SIGINT', cleanup);
|
|
314
|
+
process.on('SIGTERM', cleanup);
|
|
315
|
+
// Keep process alive
|
|
316
|
+
await new Promise(() => { });
|
|
317
|
+
}
|
|
318
|
+
// ---------------------------------------------------------------------------
|
|
319
|
+
// Main Command
|
|
320
|
+
// ---------------------------------------------------------------------------
|
|
321
|
+
/**
|
|
322
|
+
* Dev command: watch + compile + run in a single loop.
|
|
323
|
+
*/
|
|
324
|
+
export async function devCommand(input, options = {}) {
|
|
325
|
+
const filePath = path.resolve(input);
|
|
326
|
+
if (!fs.existsSync(filePath)) {
|
|
327
|
+
throw new Error(`File not found: ${filePath}`);
|
|
328
|
+
}
|
|
329
|
+
// Route to Inngest dev mode if target is inngest
|
|
330
|
+
if (options.target === 'inngest') {
|
|
331
|
+
return runInngestDevMode(filePath, options);
|
|
332
|
+
}
|
|
333
|
+
const params = parseParams(options);
|
|
334
|
+
if (!options.json) {
|
|
335
|
+
logger.section('Dev Mode');
|
|
336
|
+
logger.info(`File: ${path.basename(filePath)}`);
|
|
337
|
+
if (Object.keys(params).length > 0) {
|
|
338
|
+
logger.info(`Params: ${JSON.stringify(params)}`);
|
|
339
|
+
}
|
|
340
|
+
logger.newline();
|
|
341
|
+
}
|
|
342
|
+
// Initial compile + run
|
|
343
|
+
await compileAndRun(filePath, params, options);
|
|
344
|
+
// If --once, exit after first cycle
|
|
345
|
+
if (options.once) {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
if (!options.json) {
|
|
349
|
+
logger.newline();
|
|
350
|
+
logger.success('Watching for file changes... (Ctrl+C to stop)');
|
|
351
|
+
}
|
|
352
|
+
// Find files to watch
|
|
353
|
+
const files = await glob(input, { absolute: true });
|
|
354
|
+
// Use chokidar for reliable cross-platform file watching
|
|
355
|
+
const chokidar = await import('chokidar');
|
|
356
|
+
const watcher = chokidar.watch(files, {
|
|
357
|
+
persistent: true,
|
|
358
|
+
ignoreInitial: true,
|
|
359
|
+
});
|
|
360
|
+
watcher.on('change', async (file) => {
|
|
361
|
+
if (!options.json) {
|
|
362
|
+
logger.newline();
|
|
363
|
+
logger.info(`${timestamp()} File changed: ${path.basename(file)}`);
|
|
364
|
+
logger.newline();
|
|
365
|
+
}
|
|
366
|
+
await compileAndRun(filePath, params, options);
|
|
367
|
+
});
|
|
368
|
+
// Handle process termination
|
|
369
|
+
const cleanup = () => {
|
|
370
|
+
if (!options.json) {
|
|
371
|
+
logger.newline();
|
|
372
|
+
logger.info('Stopping dev mode...');
|
|
373
|
+
}
|
|
374
|
+
watcher.close();
|
|
375
|
+
process.exit(0);
|
|
376
|
+
};
|
|
377
|
+
process.on('SIGINT', cleanup);
|
|
378
|
+
process.on('SIGTERM', cleanup);
|
|
379
|
+
// Keep process alive
|
|
380
|
+
await new Promise(() => {
|
|
381
|
+
// Never resolves - keeps process running
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagram command — generates SVG diagrams from workflow files.
|
|
3
|
+
*/
|
|
4
|
+
export interface DiagramCommandOptions {
|
|
5
|
+
theme?: 'dark' | 'light';
|
|
6
|
+
width?: number;
|
|
7
|
+
padding?: number;
|
|
8
|
+
showPortLabels?: boolean;
|
|
9
|
+
workflowName?: string;
|
|
10
|
+
output?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function diagramCommand(input: string, options?: DiagramCommandOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=diagram.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
/**
|
|
3
|
+
* Diagram command — generates SVG diagrams from workflow files.
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { fileToSVG } from '../../diagram/index.js';
|
|
8
|
+
import { logger } from '../utils/logger.js';
|
|
9
|
+
import { getErrorMessage } from '../../utils/error-utils.js';
|
|
10
|
+
export async function diagramCommand(input, options = {}) {
|
|
11
|
+
const { output, ...diagramOptions } = options;
|
|
12
|
+
const filePath = path.resolve(input);
|
|
13
|
+
if (!fs.existsSync(filePath)) {
|
|
14
|
+
logger.error(`File not found: ${filePath}`);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const svg = fileToSVG(filePath, diagramOptions);
|
|
19
|
+
if (output) {
|
|
20
|
+
const outputPath = path.resolve(output);
|
|
21
|
+
fs.writeFileSync(outputPath, svg, 'utf-8');
|
|
22
|
+
logger.success(`Diagram written to ${outputPath}`);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
process.stdout.write(svg);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
logger.error(`Failed to generate diagram: ${getErrorMessage(error)}`);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=diagram.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diff command - compares two workflow files semantically
|
|
3
|
+
*/
|
|
4
|
+
import type { TDiffFormat } from '../../diff/index.js';
|
|
5
|
+
export interface DiffOptions {
|
|
6
|
+
format?: TDiffFormat;
|
|
7
|
+
workflowName?: string;
|
|
8
|
+
exitZero?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function diffCommand(file1: string, file2: string, options?: DiffOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diff command - compares two workflow files semantically
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { parseWorkflow } from '../../api/index.js';
|
|
7
|
+
import { WorkflowDiffer, formatDiff } from '../../diff/index.js';
|
|
8
|
+
import { logger } from '../utils/logger.js';
|
|
9
|
+
import { getErrorMessage } from '../../utils/error-utils.js';
|
|
10
|
+
export async function diffCommand(file1, file2, options = {}) {
|
|
11
|
+
const { format = 'text', workflowName, exitZero = false } = options;
|
|
12
|
+
const filePath1 = path.resolve(file1);
|
|
13
|
+
const filePath2 = path.resolve(file2);
|
|
14
|
+
// Validate files exist
|
|
15
|
+
if (!fs.existsSync(filePath1)) {
|
|
16
|
+
logger.error(`File not found: ${filePath1}`);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
if (!fs.existsSync(filePath2)) {
|
|
20
|
+
logger.error(`File not found: ${filePath2}`);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
// Parse both workflows
|
|
25
|
+
const [result1, result2] = await Promise.all([
|
|
26
|
+
parseWorkflow(filePath1, { workflowName }),
|
|
27
|
+
parseWorkflow(filePath2, { workflowName }),
|
|
28
|
+
]);
|
|
29
|
+
if (result1.errors.length > 0) {
|
|
30
|
+
logger.error(`Parse errors in ${file1}:`);
|
|
31
|
+
result1.errors.forEach((err) => logger.error(` ${err}`));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
if (result2.errors.length > 0) {
|
|
35
|
+
logger.error(`Parse errors in ${file2}:`);
|
|
36
|
+
result2.errors.forEach((err) => logger.error(` ${err}`));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
// Compare workflows
|
|
40
|
+
const diff = WorkflowDiffer.compare(result1.ast, result2.ast);
|
|
41
|
+
// Output based on format
|
|
42
|
+
if (diff.identical) {
|
|
43
|
+
logger.success('Workflows are identical');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// eslint-disable-next-line no-console
|
|
47
|
+
console.log(formatDiff(diff, format));
|
|
48
|
+
// Exit with code 1 if there are differences (useful for CI)
|
|
49
|
+
if (!exitZero) {
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
logger.error(`Failed to diff workflows: ${getErrorMessage(error)}`);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Doctor command - validates project environment and configuration for flow-weaver compatibility
|
|
3
|
+
*/
|
|
4
|
+
import type { TModuleFormat } from '../../ast/types.js';
|
|
5
|
+
export interface DoctorOptions {
|
|
6
|
+
json?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Result of detecting the project's module format
|
|
10
|
+
*/
|
|
11
|
+
export interface ModuleFormatDetection {
|
|
12
|
+
format: TModuleFormat;
|
|
13
|
+
source: 'package.json' | 'tsconfig' | 'default';
|
|
14
|
+
details?: string;
|
|
15
|
+
}
|
|
16
|
+
export type CheckStatus = 'pass' | 'warn' | 'fail';
|
|
17
|
+
export interface CheckResult {
|
|
18
|
+
name: string;
|
|
19
|
+
status: CheckStatus;
|
|
20
|
+
message: string;
|
|
21
|
+
fix?: string;
|
|
22
|
+
details?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface DoctorReport {
|
|
25
|
+
ok: boolean;
|
|
26
|
+
checks: CheckResult[];
|
|
27
|
+
summary: {
|
|
28
|
+
pass: number;
|
|
29
|
+
warn: number;
|
|
30
|
+
fail: number;
|
|
31
|
+
};
|
|
32
|
+
moduleFormat: ModuleFormatDetection;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Strips single-line (//) and multi-line comments from JSON-like text,
|
|
36
|
+
* preserving string contents that may contain // or slash-star sequences.
|
|
37
|
+
*/
|
|
38
|
+
export declare function stripJsonComments(text: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Detect the project's module format from package.json and tsconfig.json
|
|
41
|
+
*/
|
|
42
|
+
export declare function detectProjectModuleFormat(cwd: string): ModuleFormatDetection;
|
|
43
|
+
export declare function checkNodeVersion(): CheckResult;
|
|
44
|
+
export declare function checkTypeScriptVersion(cwd: string): CheckResult;
|
|
45
|
+
export declare function checkPackageJsonType(cwd: string): CheckResult;
|
|
46
|
+
export declare function checkTsconfigModule(cwd: string): CheckResult;
|
|
47
|
+
export declare function checkTsconfigModuleResolution(cwd: string): CheckResult;
|
|
48
|
+
export declare function checkFlowWeaverInstalled(cwd: string): CheckResult;
|
|
49
|
+
export declare function checkFlowWeaverVersion(cwd: string): CheckResult;
|
|
50
|
+
export declare function checkTypesNodeInstalled(cwd: string): CheckResult;
|
|
51
|
+
export declare function checkTsxAvailable(cwd: string): CheckResult;
|
|
52
|
+
export declare function checkProjectConfig(cwd: string): CheckResult;
|
|
53
|
+
export declare function checkDeploymentManifest(cwd: string): CheckResult;
|
|
54
|
+
export declare function checkDeploymentProfiles(cwd: string): CheckResult;
|
|
55
|
+
export declare function runDoctorChecks(cwd: string): DoctorReport;
|
|
56
|
+
export declare function doctorCommand(options?: DoctorOptions): Promise<void>;
|
|
57
|
+
//# sourceMappingURL=doctor.d.ts.map
|