@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,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded Port Types
|
|
3
|
+
*
|
|
4
|
+
* Provides compile-time type safety for port handling using TypeScript's
|
|
5
|
+
* branded types pattern. Prevents accidental mixing of port categories.
|
|
6
|
+
*
|
|
7
|
+
* Categories:
|
|
8
|
+
* - MandatoryPort: Reserved ports (execute, onSuccess, onFailure, start, success, failure)
|
|
9
|
+
* - ScopedPort: Ports belonging to a scope (forEach, map, etc.)
|
|
10
|
+
* - RegularPort: All other ports
|
|
11
|
+
*/
|
|
12
|
+
import type { TPortDefinition } from '../ast/types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Reserved port name constants.
|
|
15
|
+
* Use these instead of magic strings.
|
|
16
|
+
*/
|
|
17
|
+
export declare const PortName: {
|
|
18
|
+
readonly EXECUTE: "execute";
|
|
19
|
+
readonly ON_SUCCESS: "onSuccess";
|
|
20
|
+
readonly ON_FAILURE: "onFailure";
|
|
21
|
+
readonly START: "start";
|
|
22
|
+
readonly SUCCESS: "success";
|
|
23
|
+
readonly FAILURE: "failure";
|
|
24
|
+
};
|
|
25
|
+
export type PortNameType = (typeof PortName)[keyof typeof PortName];
|
|
26
|
+
/**
|
|
27
|
+
* External mandatory port names.
|
|
28
|
+
*/
|
|
29
|
+
export declare const EXTERNAL_MANDATORY_PORTS: readonly ["execute", "onSuccess", "onFailure"];
|
|
30
|
+
/**
|
|
31
|
+
* Scoped mandatory port names.
|
|
32
|
+
*/
|
|
33
|
+
export declare const SCOPED_MANDATORY_PORTS: readonly ["start", "success", "failure"];
|
|
34
|
+
/**
|
|
35
|
+
* Brand symbol for MandatoryPort.
|
|
36
|
+
*/
|
|
37
|
+
declare const MandatoryPortBrand: unique symbol;
|
|
38
|
+
/**
|
|
39
|
+
* Brand symbol for ScopedPort.
|
|
40
|
+
*/
|
|
41
|
+
declare const ScopedPortBrand: unique symbol;
|
|
42
|
+
/**
|
|
43
|
+
* Brand symbol for RegularPort.
|
|
44
|
+
*/
|
|
45
|
+
declare const RegularPortBrand: unique symbol;
|
|
46
|
+
/**
|
|
47
|
+
* A mandatory port (execute, onSuccess, onFailure, or scoped equivalents).
|
|
48
|
+
* Cannot be assigned from RegularPort.
|
|
49
|
+
*/
|
|
50
|
+
export type MandatoryPort = TPortDefinition & {
|
|
51
|
+
readonly [MandatoryPortBrand]: never;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* A scoped port (has a scope property).
|
|
55
|
+
* Enforces that scope is defined.
|
|
56
|
+
*/
|
|
57
|
+
export type ScopedPort = TPortDefinition & {
|
|
58
|
+
readonly scope: string;
|
|
59
|
+
readonly [ScopedPortBrand]: never;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* A regular port (not mandatory, not scoped).
|
|
63
|
+
*/
|
|
64
|
+
export type RegularPort = TPortDefinition & {
|
|
65
|
+
readonly [RegularPortBrand]: never;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Union of all branded port types.
|
|
69
|
+
*/
|
|
70
|
+
export type BrandedPort = MandatoryPort | ScopedPort | RegularPort;
|
|
71
|
+
/**
|
|
72
|
+
* Named port with brand information.
|
|
73
|
+
*/
|
|
74
|
+
export interface NamedMandatoryPort {
|
|
75
|
+
name: string;
|
|
76
|
+
port: MandatoryPort;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Named scoped port.
|
|
80
|
+
*/
|
|
81
|
+
export interface NamedScopedPort {
|
|
82
|
+
name: string;
|
|
83
|
+
port: ScopedPort;
|
|
84
|
+
scope: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Named regular port.
|
|
88
|
+
*/
|
|
89
|
+
export interface NamedRegularPort {
|
|
90
|
+
name: string;
|
|
91
|
+
port: RegularPort;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Type guard to check if a port is mandatory.
|
|
95
|
+
* Works for both external (execute, onSuccess, onFailure) and scoped (start, success, failure).
|
|
96
|
+
*/
|
|
97
|
+
export declare function isMandatoryPort(name: string, port: TPortDefinition): port is MandatoryPort;
|
|
98
|
+
/**
|
|
99
|
+
* Type guard to check if a port is scoped.
|
|
100
|
+
*/
|
|
101
|
+
export declare function isScopedPort(port: TPortDefinition | undefined): port is ScopedPort;
|
|
102
|
+
/**
|
|
103
|
+
* Type guard to check if a port is regular (not mandatory).
|
|
104
|
+
*/
|
|
105
|
+
export declare function isRegularPort(name: string, port: TPortDefinition): port is RegularPort;
|
|
106
|
+
/**
|
|
107
|
+
* Assert that a port is mandatory and return typed version.
|
|
108
|
+
* @throws Error if port is not mandatory
|
|
109
|
+
*/
|
|
110
|
+
export declare function toMandatoryPort(name: string, port: TPortDefinition): NamedMandatoryPort;
|
|
111
|
+
/**
|
|
112
|
+
* Assert that a port is scoped and return typed version.
|
|
113
|
+
* @throws Error if port is not scoped
|
|
114
|
+
*/
|
|
115
|
+
export declare function toScopedPort(port: TPortDefinition): ScopedPort;
|
|
116
|
+
/**
|
|
117
|
+
* Entry in an ordered port list.
|
|
118
|
+
*/
|
|
119
|
+
export interface OrderedPortEntry<T extends TPortDefinition = TPortDefinition> {
|
|
120
|
+
name: string;
|
|
121
|
+
port: T;
|
|
122
|
+
order: number;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Array of ports with ordering information.
|
|
126
|
+
*/
|
|
127
|
+
export type OrderedPorts<T extends TPortDefinition = TPortDefinition> = OrderedPortEntry<T>[];
|
|
128
|
+
/**
|
|
129
|
+
* Get the order value from a port's metadata.
|
|
130
|
+
* Returns Infinity if no order is set.
|
|
131
|
+
*/
|
|
132
|
+
export declare function getPortOrder(port: TPortDefinition): number;
|
|
133
|
+
/**
|
|
134
|
+
* Create an ordered port list from a port record.
|
|
135
|
+
* Sorts by metadata.order, with unordered ports at the end.
|
|
136
|
+
*/
|
|
137
|
+
export declare function createOrderedPorts<T extends TPortDefinition>(ports: Record<string, T>): OrderedPorts<T>;
|
|
138
|
+
/**
|
|
139
|
+
* Extract mandatory ports from a port record.
|
|
140
|
+
*/
|
|
141
|
+
export type ExtractMandatoryPorts<T extends Record<string, TPortDefinition>> = {
|
|
142
|
+
[K in keyof T as K extends 'execute' | 'onSuccess' | 'onFailure' | 'start' | 'success' | 'failure' ? K : never]: T[K];
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Extract regular (non-mandatory) ports from a port record.
|
|
146
|
+
*/
|
|
147
|
+
export type ExtractRegularPorts<T extends Record<string, TPortDefinition>> = {
|
|
148
|
+
[K in keyof T as K extends 'execute' | 'onSuccess' | 'onFailure' | 'start' | 'success' | 'failure' ? never : K]: T[K];
|
|
149
|
+
};
|
|
150
|
+
export {};
|
|
151
|
+
//# sourceMappingURL=branded-ports.d.ts.map
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded Port Types
|
|
3
|
+
*
|
|
4
|
+
* Provides compile-time type safety for port handling using TypeScript's
|
|
5
|
+
* branded types pattern. Prevents accidental mixing of port categories.
|
|
6
|
+
*
|
|
7
|
+
* Categories:
|
|
8
|
+
* - MandatoryPort: Reserved ports (execute, onSuccess, onFailure, start, success, failure)
|
|
9
|
+
* - ScopedPort: Ports belonging to a scope (forEach, map, etc.)
|
|
10
|
+
* - RegularPort: All other ports
|
|
11
|
+
*/
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Port Name Constants
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Reserved port name constants.
|
|
17
|
+
* Use these instead of magic strings.
|
|
18
|
+
*/
|
|
19
|
+
export const PortName = {
|
|
20
|
+
// External mandatory ports
|
|
21
|
+
EXECUTE: 'execute',
|
|
22
|
+
ON_SUCCESS: 'onSuccess',
|
|
23
|
+
ON_FAILURE: 'onFailure',
|
|
24
|
+
// Scoped mandatory ports
|
|
25
|
+
START: 'start',
|
|
26
|
+
SUCCESS: 'success',
|
|
27
|
+
FAILURE: 'failure',
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* External mandatory port names.
|
|
31
|
+
*/
|
|
32
|
+
export const EXTERNAL_MANDATORY_PORTS = [
|
|
33
|
+
PortName.EXECUTE,
|
|
34
|
+
PortName.ON_SUCCESS,
|
|
35
|
+
PortName.ON_FAILURE,
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Scoped mandatory port names.
|
|
39
|
+
*/
|
|
40
|
+
export const SCOPED_MANDATORY_PORTS = [
|
|
41
|
+
PortName.START,
|
|
42
|
+
PortName.SUCCESS,
|
|
43
|
+
PortName.FAILURE,
|
|
44
|
+
];
|
|
45
|
+
// =============================================================================
|
|
46
|
+
// Type Guards
|
|
47
|
+
// =============================================================================
|
|
48
|
+
/**
|
|
49
|
+
* Type guard to check if a port is mandatory.
|
|
50
|
+
* Works for both external (execute, onSuccess, onFailure) and scoped (start, success, failure).
|
|
51
|
+
*/
|
|
52
|
+
export function isMandatoryPort(name, port) {
|
|
53
|
+
const isScoped = port.scope !== undefined;
|
|
54
|
+
if (isScoped) {
|
|
55
|
+
return SCOPED_MANDATORY_PORTS.includes(name);
|
|
56
|
+
}
|
|
57
|
+
return EXTERNAL_MANDATORY_PORTS.includes(name);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Type guard to check if a port is scoped.
|
|
61
|
+
*/
|
|
62
|
+
export function isScopedPort(port) {
|
|
63
|
+
return port !== undefined && typeof port.scope === 'string';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Type guard to check if a port is regular (not mandatory).
|
|
67
|
+
*/
|
|
68
|
+
export function isRegularPort(name, port) {
|
|
69
|
+
return !isMandatoryPort(name, port);
|
|
70
|
+
}
|
|
71
|
+
// =============================================================================
|
|
72
|
+
// Assertion Functions
|
|
73
|
+
// =============================================================================
|
|
74
|
+
/**
|
|
75
|
+
* Assert that a port is mandatory and return typed version.
|
|
76
|
+
* @throws Error if port is not mandatory
|
|
77
|
+
*/
|
|
78
|
+
export function toMandatoryPort(name, port) {
|
|
79
|
+
if (!isMandatoryPort(name, port)) {
|
|
80
|
+
throw new Error(`"${name}" is not a mandatory port`);
|
|
81
|
+
}
|
|
82
|
+
return { name, port: port };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Assert that a port is scoped and return typed version.
|
|
86
|
+
* @throws Error if port is not scoped
|
|
87
|
+
*/
|
|
88
|
+
export function toScopedPort(port) {
|
|
89
|
+
if (!isScopedPort(port)) {
|
|
90
|
+
throw new Error(`Port is not a scoped port (no scope property)`);
|
|
91
|
+
}
|
|
92
|
+
return port;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the order value from a port's metadata.
|
|
96
|
+
* Returns Infinity if no order is set.
|
|
97
|
+
*/
|
|
98
|
+
export function getPortOrder(port) {
|
|
99
|
+
const order = port.metadata?.order;
|
|
100
|
+
return typeof order === 'number' ? order : Infinity;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create an ordered port list from a port record.
|
|
104
|
+
* Sorts by metadata.order, with unordered ports at the end.
|
|
105
|
+
*/
|
|
106
|
+
export function createOrderedPorts(ports) {
|
|
107
|
+
const entries = Object.entries(ports).map(([name, port]) => ({
|
|
108
|
+
name,
|
|
109
|
+
port,
|
|
110
|
+
order: getPortOrder(port),
|
|
111
|
+
}));
|
|
112
|
+
// Sort by order (lower first), then by name for stable sort
|
|
113
|
+
entries.sort((a, b) => {
|
|
114
|
+
if (a.order !== b.order) {
|
|
115
|
+
return a.order - b.order;
|
|
116
|
+
}
|
|
117
|
+
return a.name.localeCompare(b.name);
|
|
118
|
+
});
|
|
119
|
+
return entries;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=branded-ports.js.map
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { TDataType } from "./ast/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for a single port on a node type.
|
|
4
|
+
* Defines the data type, display label, default value, and behavioral flags.
|
|
5
|
+
*/
|
|
6
|
+
export interface PortConfig {
|
|
7
|
+
type: TDataType;
|
|
8
|
+
label?: string;
|
|
9
|
+
defaultValue?: unknown;
|
|
10
|
+
expression?: string;
|
|
11
|
+
optional?: boolean;
|
|
12
|
+
hidden?: boolean;
|
|
13
|
+
failure?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Determines how a node evaluates incoming execution signals before firing.
|
|
17
|
+
* - `"CONJUNCTION"` - All incoming signals must be present (AND logic).
|
|
18
|
+
* - `"DISJUNCTION"` - Any single incoming signal triggers execution (OR logic).
|
|
19
|
+
* - `"CUSTOM"` - Execution timing is controlled by custom logic.
|
|
20
|
+
*/
|
|
21
|
+
export type ExecutionSignalEvaluation = "CONJUNCTION" | "DISJUNCTION" | "CUSTOM";
|
|
22
|
+
/**
|
|
23
|
+
* Default configuration embedded in a node type definition.
|
|
24
|
+
* Provides pull-execution settings, label, and description that apply
|
|
25
|
+
* unless overridden at the instance level.
|
|
26
|
+
*/
|
|
27
|
+
export interface ParsedTNodeTypeDefaultConfig {
|
|
28
|
+
pullExecution?: {
|
|
29
|
+
triggerPort: string;
|
|
30
|
+
};
|
|
31
|
+
label?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A fully parsed node type definition extracted from source code.
|
|
36
|
+
* Contains the node's name, function reference, port definitions, execution
|
|
37
|
+
* semantics, and source location metadata.
|
|
38
|
+
*/
|
|
39
|
+
export interface ParsedNodeType {
|
|
40
|
+
name: string;
|
|
41
|
+
functionName: string;
|
|
42
|
+
inputs: Record<string, PortConfig>;
|
|
43
|
+
outputs: Record<string, PortConfig>;
|
|
44
|
+
functionText: string;
|
|
45
|
+
executeWhen: ExecutionSignalEvaluation;
|
|
46
|
+
defaultConfig?: ParsedTNodeTypeDefaultConfig;
|
|
47
|
+
scope?: string;
|
|
48
|
+
label?: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
sourceLocation: {
|
|
51
|
+
file: string;
|
|
52
|
+
line: number;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Per-instance configuration for a node within a workflow.
|
|
57
|
+
* Overrides the node type's default config with instance-specific
|
|
58
|
+
* settings such as position, label, and execution behavior.
|
|
59
|
+
*/
|
|
60
|
+
export interface ParsedTNodeInstanceConfig {
|
|
61
|
+
pullExecution?: {
|
|
62
|
+
triggerPort: string;
|
|
63
|
+
};
|
|
64
|
+
label?: string;
|
|
65
|
+
description?: string;
|
|
66
|
+
executeWhen?: ExecutionSignalEvaluation;
|
|
67
|
+
x?: number;
|
|
68
|
+
y?: number;
|
|
69
|
+
color?: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A parsed node instance within a workflow definition.
|
|
73
|
+
* References a node type by name and carries optional per-instance configuration,
|
|
74
|
+
* scope membership, and visual state.
|
|
75
|
+
*/
|
|
76
|
+
export interface ParsedNodeInstance {
|
|
77
|
+
id: string;
|
|
78
|
+
type: string;
|
|
79
|
+
config?: ParsedTNodeInstanceConfig;
|
|
80
|
+
parentScope?: string;
|
|
81
|
+
minimized?: boolean;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A reference to a specific port on a specific node, used in connection definitions.
|
|
85
|
+
*/
|
|
86
|
+
export interface TPortReference {
|
|
87
|
+
node: string;
|
|
88
|
+
port: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A fully parsed workflow definition extracted from source code.
|
|
92
|
+
* Contains the workflow's node instances, connections, port definitions,
|
|
93
|
+
* optional layout/scope metadata, and source location.
|
|
94
|
+
*/
|
|
95
|
+
export interface ParsedWorkflowDefinition {
|
|
96
|
+
name: string;
|
|
97
|
+
functionName: string;
|
|
98
|
+
instances: ParsedNodeInstance[];
|
|
99
|
+
connections: Array<{
|
|
100
|
+
from: TPortReference;
|
|
101
|
+
to: TPortReference;
|
|
102
|
+
}>;
|
|
103
|
+
scopes?: Record<string, string[]>;
|
|
104
|
+
/**
|
|
105
|
+
* Optional layout information for visual editor integration.
|
|
106
|
+
* Maps node names to {x, y} coordinates.
|
|
107
|
+
* Not required for code-first workflows.
|
|
108
|
+
*/
|
|
109
|
+
layout?: Record<string, {
|
|
110
|
+
x: number;
|
|
111
|
+
y: number;
|
|
112
|
+
}>;
|
|
113
|
+
startPorts: Record<string, PortConfig>;
|
|
114
|
+
exitPorts: Record<string, PortConfig>;
|
|
115
|
+
description?: string;
|
|
116
|
+
sourceLocation: {
|
|
117
|
+
file: string;
|
|
118
|
+
line: number;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Top-level parse result for a single source file.
|
|
123
|
+
* Aggregates all node type definitions and workflow definitions found in the file.
|
|
124
|
+
*/
|
|
125
|
+
export interface ParsedWorkflow {
|
|
126
|
+
filePath: string;
|
|
127
|
+
nodeTypes: ParsedNodeType[];
|
|
128
|
+
workflows: ParsedWorkflowDefinition[];
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Normalizes a port definition to a full {@link PortConfig} object.
|
|
132
|
+
* If the input is a string, it is treated as the data type name and wrapped
|
|
133
|
+
* in a minimal PortConfig. If already a PortConfig, it is returned as-is.
|
|
134
|
+
*
|
|
135
|
+
* @param portDef - A data type string or a full PortConfig object.
|
|
136
|
+
* @returns A normalized PortConfig.
|
|
137
|
+
*/
|
|
138
|
+
export declare function normalizePortConfig(portDef: string | PortConfig): PortConfig;
|
|
139
|
+
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalizes a port definition to a full {@link PortConfig} object.
|
|
3
|
+
* If the input is a string, it is treated as the data type name and wrapped
|
|
4
|
+
* in a minimal PortConfig. If already a PortConfig, it is returned as-is.
|
|
5
|
+
*
|
|
6
|
+
* @param portDef - A data type string or a full PortConfig object.
|
|
7
|
+
* @returns A normalized PortConfig.
|
|
8
|
+
*/
|
|
9
|
+
export function normalizePortConfig(portDef) {
|
|
10
|
+
if (typeof portDef === "string") {
|
|
11
|
+
return { type: portDef };
|
|
12
|
+
}
|
|
13
|
+
return portDef;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for consistent error handling across the codebase.
|
|
3
|
+
* Replaces 60+ occurrences of: error instanceof Error ? error.message : String(error)
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Extracts a string message from any error value.
|
|
7
|
+
* Handles Error instances, strings, numbers, null, undefined, and objects.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
10
|
+
/**
|
|
11
|
+
* Wraps an error with additional context, preserving the original error as cause.
|
|
12
|
+
* Useful for adding context while propagating errors up the call stack.
|
|
13
|
+
*/
|
|
14
|
+
export declare function wrapError(error: unknown, context: string): Error;
|
|
15
|
+
//# sourceMappingURL=error-utils.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for consistent error handling across the codebase.
|
|
3
|
+
* Replaces 60+ occurrences of: error instanceof Error ? error.message : String(error)
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Extracts a string message from any error value.
|
|
7
|
+
* Handles Error instances, strings, numbers, null, undefined, and objects.
|
|
8
|
+
*/
|
|
9
|
+
export function getErrorMessage(error) {
|
|
10
|
+
if (error instanceof Error) {
|
|
11
|
+
return error.message;
|
|
12
|
+
}
|
|
13
|
+
return String(error);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Wraps an error with additional context, preserving the original error as cause.
|
|
17
|
+
* Useful for adding context while propagating errors up the call stack.
|
|
18
|
+
*/
|
|
19
|
+
export function wrapError(error, context) {
|
|
20
|
+
const message = `${context}: ${getErrorMessage(error)}`;
|
|
21
|
+
const wrapped = new Error(message);
|
|
22
|
+
if (error instanceof Error) {
|
|
23
|
+
wrapped.cause = error;
|
|
24
|
+
}
|
|
25
|
+
return wrapped;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=error-utils.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal LRU cache using ES6 Map insertion-order semantics.
|
|
3
|
+
* When capacity is exceeded, the least-recently-used entry is evicted.
|
|
4
|
+
*/
|
|
5
|
+
export declare class LRUCache<K, V> {
|
|
6
|
+
private map;
|
|
7
|
+
private readonly maxSize;
|
|
8
|
+
constructor(maxSize: number);
|
|
9
|
+
get(key: K): V | undefined;
|
|
10
|
+
has(key: K): boolean;
|
|
11
|
+
set(key: K, value: V): void;
|
|
12
|
+
clear(): void;
|
|
13
|
+
get size(): number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=lru-cache.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal LRU cache using ES6 Map insertion-order semantics.
|
|
3
|
+
* When capacity is exceeded, the least-recently-used entry is evicted.
|
|
4
|
+
*/
|
|
5
|
+
export class LRUCache {
|
|
6
|
+
map = new Map();
|
|
7
|
+
maxSize;
|
|
8
|
+
constructor(maxSize) {
|
|
9
|
+
this.maxSize = maxSize;
|
|
10
|
+
}
|
|
11
|
+
get(key) {
|
|
12
|
+
const value = this.map.get(key);
|
|
13
|
+
if (value !== undefined) {
|
|
14
|
+
// Move to end (most recently used)
|
|
15
|
+
this.map.delete(key);
|
|
16
|
+
this.map.set(key, value);
|
|
17
|
+
}
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
has(key) {
|
|
21
|
+
return this.map.has(key);
|
|
22
|
+
}
|
|
23
|
+
set(key, value) {
|
|
24
|
+
if (this.map.has(key)) {
|
|
25
|
+
this.map.delete(key);
|
|
26
|
+
}
|
|
27
|
+
this.map.set(key, value);
|
|
28
|
+
while (this.map.size > this.maxSize) {
|
|
29
|
+
const firstKey = this.map.keys().next().value;
|
|
30
|
+
this.map.delete(firstKey);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
clear() {
|
|
34
|
+
this.map.clear();
|
|
35
|
+
}
|
|
36
|
+
get size() {
|
|
37
|
+
return this.map.size;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=lru-cache.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared port ordering utilities
|
|
3
|
+
* Extracted from parser.ts for reuse across the codebase
|
|
4
|
+
*/
|
|
5
|
+
import type { TPortDefinition } from "../ast/types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Check if a port is mandatory.
|
|
8
|
+
* External ports: execute, onSuccess, onFailure
|
|
9
|
+
* Scoped ports: start, success, failure
|
|
10
|
+
*/
|
|
11
|
+
export declare function isMandatoryPort(portName: string, isScoped: boolean): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Assign implicit port orders with mandatory port precedence.
|
|
14
|
+
*
|
|
15
|
+
* Rules:
|
|
16
|
+
* 1. Ports are grouped by scope (undefined = external, string = scoped)
|
|
17
|
+
* 2. Within each scope group:
|
|
18
|
+
* - Mandatory ports (execute, onSuccess, onFailure) get lower order values
|
|
19
|
+
* - Regular ports get higher order values
|
|
20
|
+
* 3. Explicit order metadata is always preserved
|
|
21
|
+
* 4. If a regular port has explicit order 0, mandatory ports are pushed to order >= 1
|
|
22
|
+
*
|
|
23
|
+
* @param ports - Record of port definitions to process (mutated in place)
|
|
24
|
+
*/
|
|
25
|
+
export declare function assignImplicitPortOrders(ports: Record<string, TPortDefinition>): void;
|
|
26
|
+
//# sourceMappingURL=port-ordering.d.ts.map
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared port ordering utilities
|
|
3
|
+
* Extracted from parser.ts for reuse across the codebase
|
|
4
|
+
*/
|
|
5
|
+
import { isExecutePort, isSuccessPort, isFailurePort, isScopedMandatoryPort } from "../constants.js";
|
|
6
|
+
/**
|
|
7
|
+
* Check if a port is mandatory.
|
|
8
|
+
* External ports: execute, onSuccess, onFailure
|
|
9
|
+
* Scoped ports: start, success, failure
|
|
10
|
+
*/
|
|
11
|
+
export function isMandatoryPort(portName, isScoped) {
|
|
12
|
+
if (isScoped) {
|
|
13
|
+
return isScopedMandatoryPort(portName);
|
|
14
|
+
}
|
|
15
|
+
return isExecutePort(portName) || isSuccessPort(portName) || isFailurePort(portName);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Assign implicit port orders with mandatory port precedence.
|
|
19
|
+
*
|
|
20
|
+
* Rules:
|
|
21
|
+
* 1. Ports are grouped by scope (undefined = external, string = scoped)
|
|
22
|
+
* 2. Within each scope group:
|
|
23
|
+
* - Mandatory ports (execute, onSuccess, onFailure) get lower order values
|
|
24
|
+
* - Regular ports get higher order values
|
|
25
|
+
* 3. Explicit order metadata is always preserved
|
|
26
|
+
* 4. If a regular port has explicit order 0, mandatory ports are pushed to order >= 1
|
|
27
|
+
*
|
|
28
|
+
* @param ports - Record of port definitions to process (mutated in place)
|
|
29
|
+
*/
|
|
30
|
+
export function assignImplicitPortOrders(ports) {
|
|
31
|
+
// Group ports by scope
|
|
32
|
+
const scopeGroups = new Map();
|
|
33
|
+
for (const [portName, portDef] of Object.entries(ports)) {
|
|
34
|
+
const scopeKey = portDef.scope;
|
|
35
|
+
if (!scopeGroups.has(scopeKey)) {
|
|
36
|
+
scopeGroups.set(scopeKey, []);
|
|
37
|
+
}
|
|
38
|
+
scopeGroups.get(scopeKey).push([portName, portDef]);
|
|
39
|
+
}
|
|
40
|
+
// Process each scope group independently
|
|
41
|
+
for (const [scope, portsInScope] of scopeGroups.entries()) {
|
|
42
|
+
const isScoped = scope !== undefined;
|
|
43
|
+
// Separate mandatory from regular ports
|
|
44
|
+
const mandatoryPorts = portsInScope.filter(([name]) => isMandatoryPort(name, isScoped));
|
|
45
|
+
const regularPorts = portsInScope.filter(([name]) => !isMandatoryPort(name, isScoped));
|
|
46
|
+
// Find minimum explicit order among regular ports (if any)
|
|
47
|
+
let minRegularExplicitOrder = Infinity;
|
|
48
|
+
for (const [, portDef] of regularPorts) {
|
|
49
|
+
const order = portDef.metadata?.order;
|
|
50
|
+
if (typeof order === "number") {
|
|
51
|
+
minRegularExplicitOrder = Math.min(minRegularExplicitOrder, order);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Determine starting order for mandatory ports
|
|
55
|
+
let mandatoryStartOrder = 0;
|
|
56
|
+
// If a regular port has explicit order 0 (or any low value),
|
|
57
|
+
// mandatory ports should be pushed after it
|
|
58
|
+
if (minRegularExplicitOrder !== Infinity && minRegularExplicitOrder === 0) {
|
|
59
|
+
// Count how many regular ports have explicit order 0
|
|
60
|
+
const regularPortsWithOrder0 = regularPorts.filter(([, p]) => p.metadata?.order === 0);
|
|
61
|
+
mandatoryStartOrder = regularPortsWithOrder0.length;
|
|
62
|
+
}
|
|
63
|
+
// Assign orders to mandatory ports (if they don't have explicit order)
|
|
64
|
+
let currentMandatoryOrder = mandatoryStartOrder;
|
|
65
|
+
for (const [, portDef] of mandatoryPorts) {
|
|
66
|
+
if (portDef.metadata?.order === undefined) {
|
|
67
|
+
// Assign implicit order
|
|
68
|
+
if (!portDef.metadata) {
|
|
69
|
+
portDef.metadata = {};
|
|
70
|
+
}
|
|
71
|
+
portDef.metadata.order = currentMandatoryOrder++;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Assign orders to regular ports (if they don't have explicit order)
|
|
75
|
+
// Regular ports start after mandatory ports
|
|
76
|
+
let currentRegularOrder = currentMandatoryOrder;
|
|
77
|
+
for (const [, portDef] of regularPorts) {
|
|
78
|
+
if (portDef.metadata?.order === undefined) {
|
|
79
|
+
// Assign implicit order
|
|
80
|
+
if (!portDef.metadata) {
|
|
81
|
+
portDef.metadata = {};
|
|
82
|
+
}
|
|
83
|
+
portDef.metadata.order = currentRegularOrder++;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=port-ordering.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Port tag validation utilities
|
|
3
|
+
* Shared logic for determining port tag types (@input, @output, @step)
|
|
4
|
+
*/
|
|
5
|
+
import type { TPortDefinition } from "../ast/types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Check if a port name is a reserved STEP port.
|
|
8
|
+
* Includes both external (execute, onSuccess, onFailure) and scoped (start, success, failure).
|
|
9
|
+
*/
|
|
10
|
+
export declare function isReservedStepPort(name: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Determine if a port should use the @step tag.
|
|
13
|
+
* Returns true only for custom STEP ports (not reserved ones).
|
|
14
|
+
*/
|
|
15
|
+
export declare function shouldUseStepTag(portName: string, port: TPortDefinition): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Get the JSDoc tag type for a port.
|
|
18
|
+
* - Custom STEP ports → "step"
|
|
19
|
+
* - Reserved STEP ports → direction ("input" or "output")
|
|
20
|
+
* - Data ports → direction ("input" or "output")
|
|
21
|
+
*/
|
|
22
|
+
export declare function getPortTagType(portName: string, port: TPortDefinition, direction: "input" | "output"): "input" | "output" | "step";
|
|
23
|
+
//# sourceMappingURL=port-tag-utils.d.ts.map
|