@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,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Editor Completions - Public API
|
|
3
|
+
*
|
|
4
|
+
* Editor-agnostic completion utilities for Flow Weaver.
|
|
5
|
+
* Use these with any editor (CodeMirror, VS Code, Monaco, etc.)
|
|
6
|
+
*/
|
|
7
|
+
// Re-export types
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
// Re-export utilities
|
|
10
|
+
export { parseCompletionContext, getWordAtPosition, detectSymbolType, detectBlockType, } from './contextParser.js';
|
|
11
|
+
export { getAnnotationCompletions, JSDOC_ANNOTATIONS } from './jsDocAnnotations.js';
|
|
12
|
+
export { getDataTypeCompletions, DATA_TYPES } from './dataTypes.js';
|
|
13
|
+
export { getDefinitionLocation } from './goToDefinition.js';
|
|
14
|
+
export { getAnnotationValueCompletions } from './annotationValues.js';
|
|
15
|
+
export { getModifierCompletions, getModifierValueCompletions } from './modifierCompletions.js';
|
|
16
|
+
import { parseCompletionContext } from './contextParser.js';
|
|
17
|
+
import { getAnnotationCompletions } from './jsDocAnnotations.js';
|
|
18
|
+
import { getDataTypeCompletions } from './dataTypes.js';
|
|
19
|
+
import { getAnnotationValueCompletions } from './annotationValues.js';
|
|
20
|
+
import { getModifierCompletions, getModifierValueCompletions } from './modifierCompletions.js';
|
|
21
|
+
/**
|
|
22
|
+
* Get Flow Weaver completions for the current cursor position.
|
|
23
|
+
*
|
|
24
|
+
* This is the main entry point for editor integrations.
|
|
25
|
+
*
|
|
26
|
+
* @param lineText - The full text of the current line
|
|
27
|
+
* @param cursorOffset - Cursor position within the line (0-based)
|
|
28
|
+
* @param isInJSDoc - Whether the cursor is inside a JSDoc block
|
|
29
|
+
* @param context - Optional workflow context for nodeType/port completions
|
|
30
|
+
* @param precedingBlockLines - Optional lines from start of JSDoc block to cursor line
|
|
31
|
+
* @returns Array of completion suggestions
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* // In a CodeMirror completion source:
|
|
36
|
+
* const completions = getFlowWeaverCompletions(
|
|
37
|
+
* " * @inp",
|
|
38
|
+
* 7,
|
|
39
|
+
* true
|
|
40
|
+
* );
|
|
41
|
+
* // Returns: [{ label: "@input", ... }]
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function getFlowWeaverCompletions(lineText, cursorOffset, isInJSDoc, context, precedingBlockLines) {
|
|
45
|
+
// Parse the context to determine what completions to show
|
|
46
|
+
const completionContext = parseCompletionContext(lineText, cursorOffset, isInJSDoc, precedingBlockLines);
|
|
47
|
+
if (!completionContext) {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
switch (completionContext.type) {
|
|
51
|
+
case 'annotation':
|
|
52
|
+
return getAnnotationCompletions(completionContext.prefix, completionContext.blockType, completionContext.existingAnnotations);
|
|
53
|
+
case 'dataType':
|
|
54
|
+
return getDataTypeCompletions(completionContext.prefix);
|
|
55
|
+
case 'nodeType':
|
|
56
|
+
return getNodeTypeCompletions(completionContext.prefix, context);
|
|
57
|
+
case 'nodeId':
|
|
58
|
+
return getNodeIdCompletions(completionContext.prefix, context);
|
|
59
|
+
case 'port':
|
|
60
|
+
return getPortCompletions(completionContext.nodeId || '', completionContext.portDirection || 'output', completionContext.prefix, context, completionContext.lineText);
|
|
61
|
+
case 'annotationValue':
|
|
62
|
+
return getAnnotationValueCompletions(completionContext.annotation || '', completionContext.prefix);
|
|
63
|
+
case 'modifier':
|
|
64
|
+
return getModifierCompletions(completionContext.annotation || null, completionContext.prefix);
|
|
65
|
+
case 'modifierValue':
|
|
66
|
+
return getModifierValueCompletions(completionContext.modifier || '', completionContext.prefix);
|
|
67
|
+
default:
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get nodeType completions from workflow context.
|
|
73
|
+
*/
|
|
74
|
+
function getNodeTypeCompletions(prefix, context) {
|
|
75
|
+
if (!context?.nodeTypes) {
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
const lowerPrefix = prefix.toLowerCase();
|
|
79
|
+
return Object.values(context.nodeTypes)
|
|
80
|
+
.filter((nt) => nt.name.toLowerCase().startsWith(lowerPrefix))
|
|
81
|
+
.map((nt) => ({
|
|
82
|
+
label: nt.name,
|
|
83
|
+
detail: nt.category,
|
|
84
|
+
documentation: nt.description,
|
|
85
|
+
insertText: nt.name,
|
|
86
|
+
insertTextFormat: 'plain',
|
|
87
|
+
kind: 'nodeType',
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get node instance ID completions from workflow context.
|
|
92
|
+
*/
|
|
93
|
+
function getNodeIdCompletions(prefix, context) {
|
|
94
|
+
if (!context?.instances) {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
const lowerPrefix = prefix.toLowerCase();
|
|
98
|
+
return context.instances
|
|
99
|
+
.filter((inst) => inst.id.toLowerCase().startsWith(lowerPrefix))
|
|
100
|
+
.map((inst) => ({
|
|
101
|
+
label: inst.id,
|
|
102
|
+
detail: inst.nodeType,
|
|
103
|
+
insertText: inst.id,
|
|
104
|
+
insertTextFormat: 'plain',
|
|
105
|
+
kind: 'node',
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get port completions for a specific node.
|
|
110
|
+
* When completing target ports (input), sorts type-matching ports first
|
|
111
|
+
* and demotes already-connected ports.
|
|
112
|
+
*/
|
|
113
|
+
function getPortCompletions(nodeId, direction, prefix, context, lineText) {
|
|
114
|
+
if (!context?.instances || !context?.nodeTypes) {
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
// Find the node instance
|
|
118
|
+
const instance = context.instances.find((inst) => inst.id === nodeId);
|
|
119
|
+
if (!instance) {
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
122
|
+
// Find the node type
|
|
123
|
+
const nodeType = context.nodeTypes[instance.nodeType];
|
|
124
|
+
if (!nodeType) {
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
// Filter ports by direction
|
|
128
|
+
const directionUpper = direction.toUpperCase();
|
|
129
|
+
const lowerPrefix = prefix.toLowerCase();
|
|
130
|
+
// Resolve source port dataType when completing target (input) ports
|
|
131
|
+
let sourceDataType;
|
|
132
|
+
if (direction === 'input' && lineText) {
|
|
133
|
+
const sourceMatch = lineText.match(/@connect\s+(\w+)\.(\w+)\s*->/);
|
|
134
|
+
if (sourceMatch) {
|
|
135
|
+
const [, srcNodeId, srcPortName] = sourceMatch;
|
|
136
|
+
const srcInstance = context.instances.find((inst) => inst.id === srcNodeId);
|
|
137
|
+
if (srcInstance) {
|
|
138
|
+
const srcNodeType = context.nodeTypes[srcInstance.nodeType];
|
|
139
|
+
if (srcNodeType) {
|
|
140
|
+
const srcPort = srcNodeType.ports.find((p) => p.name === srcPortName && p.direction === 'OUTPUT');
|
|
141
|
+
sourceDataType = srcPort?.dataType;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Build set of already-connected ports on this node (for the given direction)
|
|
147
|
+
const connectedPorts = new Set();
|
|
148
|
+
if (context.connections) {
|
|
149
|
+
for (const conn of context.connections) {
|
|
150
|
+
if (direction === 'input' && conn.targetNode === nodeId) {
|
|
151
|
+
connectedPorts.add(conn.targetPort);
|
|
152
|
+
}
|
|
153
|
+
else if (direction === 'output' && conn.sourceNode === nodeId) {
|
|
154
|
+
connectedPorts.add(conn.sourcePort);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return nodeType.ports
|
|
159
|
+
.filter((port) => port.direction === directionUpper)
|
|
160
|
+
.filter((port) => port.name.toLowerCase().startsWith(lowerPrefix))
|
|
161
|
+
.map((port) => {
|
|
162
|
+
const isConnected = connectedPorts.has(port.name);
|
|
163
|
+
const isTypeMatch = sourceDataType && port.dataType === sourceDataType;
|
|
164
|
+
let sortOrder = 0;
|
|
165
|
+
if (isTypeMatch)
|
|
166
|
+
sortOrder = -10;
|
|
167
|
+
if (isConnected)
|
|
168
|
+
sortOrder = 20;
|
|
169
|
+
return {
|
|
170
|
+
label: port.name,
|
|
171
|
+
detail: isConnected ? `${port.dataType || ''} (connected)`.trim() : port.dataType,
|
|
172
|
+
documentation: port.description,
|
|
173
|
+
insertText: port.name,
|
|
174
|
+
insertTextFormat: 'plain',
|
|
175
|
+
kind: 'port',
|
|
176
|
+
sortOrder,
|
|
177
|
+
};
|
|
178
|
+
})
|
|
179
|
+
.sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0));
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Editor Completions - JSDoc Annotations
|
|
3
|
+
*
|
|
4
|
+
* Flow Weaver specific JSDoc annotations for autocompletion.
|
|
5
|
+
*/
|
|
6
|
+
import type { FlowWeaverCompletion } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Block types where an annotation is valid.
|
|
9
|
+
* - "workflow": inside a @flowWeaver workflow block
|
|
10
|
+
* - "nodeType": inside a @flowWeaver nodeType block
|
|
11
|
+
*/
|
|
12
|
+
export type AnnotationBlockType = 'workflow' | 'nodeType';
|
|
13
|
+
/**
|
|
14
|
+
* Extended completion with block-type awareness.
|
|
15
|
+
*/
|
|
16
|
+
export type AnnotationCompletion = FlowWeaverCompletion & {
|
|
17
|
+
/** Which block types this annotation is valid in. Undefined = valid in both. */
|
|
18
|
+
blockTypes?: AnnotationBlockType[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* All Flow Weaver JSDoc annotations with snippet templates.
|
|
22
|
+
*/
|
|
23
|
+
export declare const JSDOC_ANNOTATIONS: AnnotationCompletion[];
|
|
24
|
+
/**
|
|
25
|
+
* Get annotation completions filtered by prefix and optional block type.
|
|
26
|
+
* Applies context-aware sorting boosts based on existing annotations.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getAnnotationCompletions(prefix: string, blockType?: 'workflow' | 'nodeType' | null, existingAnnotations?: string[]): FlowWeaverCompletion[];
|
|
29
|
+
//# sourceMappingURL=jsDocAnnotations.d.ts.map
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Editor Completions - JSDoc Annotations
|
|
3
|
+
*
|
|
4
|
+
* Flow Weaver specific JSDoc annotations for autocompletion.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* All Flow Weaver JSDoc annotations with snippet templates.
|
|
8
|
+
*/
|
|
9
|
+
export const JSDOC_ANNOTATIONS = [
|
|
10
|
+
// Core annotations
|
|
11
|
+
{
|
|
12
|
+
label: '@flowWeaver',
|
|
13
|
+
detail: 'Mark function as Flow Weaver workflow',
|
|
14
|
+
documentation: 'Indicates this function should be parsed as a Flow Weaver workflow with visual node graph.',
|
|
15
|
+
insertText: '@flowWeaver ',
|
|
16
|
+
insertTextFormat: 'plain',
|
|
17
|
+
kind: 'annotation',
|
|
18
|
+
sortOrder: 0,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
label: '@flowWeaver nodeType',
|
|
22
|
+
detail: 'Mark function as reusable node type',
|
|
23
|
+
documentation: 'Defines a reusable node type that can be instantiated in workflows.',
|
|
24
|
+
insertText: '@flowWeaver nodeType',
|
|
25
|
+
insertTextFormat: 'plain',
|
|
26
|
+
kind: 'annotation',
|
|
27
|
+
sortOrder: 1,
|
|
28
|
+
},
|
|
29
|
+
// Port definitions (nodeType-only)
|
|
30
|
+
{
|
|
31
|
+
label: '@input',
|
|
32
|
+
detail: 'Define input port',
|
|
33
|
+
documentation: 'Declares an input port for data or control flow.\nFormat: @input name - description',
|
|
34
|
+
insertText: '@input ${1:name}',
|
|
35
|
+
insertTextFormat: 'snippet',
|
|
36
|
+
kind: 'annotation',
|
|
37
|
+
sortOrder: 10,
|
|
38
|
+
blockTypes: ['nodeType'],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
label: '@output',
|
|
42
|
+
detail: 'Define output port',
|
|
43
|
+
documentation: 'Declares an output port for data or control flow.\nFormat: @output name - description',
|
|
44
|
+
insertText: '@output ${1:name}',
|
|
45
|
+
insertTextFormat: 'snippet',
|
|
46
|
+
kind: 'annotation',
|
|
47
|
+
sortOrder: 11,
|
|
48
|
+
blockTypes: ['nodeType'],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
label: '@step',
|
|
52
|
+
detail: 'Define step (control flow) port',
|
|
53
|
+
documentation: 'Declares a STEP port for control flow. Shorthand for @input name [type:STEP] or @output name [type:STEP].',
|
|
54
|
+
insertText: '@step ${1:name}',
|
|
55
|
+
insertTextFormat: 'snippet',
|
|
56
|
+
kind: 'annotation',
|
|
57
|
+
sortOrder: 12,
|
|
58
|
+
blockTypes: ['nodeType'],
|
|
59
|
+
},
|
|
60
|
+
// Node declarations (workflow-only)
|
|
61
|
+
{
|
|
62
|
+
label: '@node',
|
|
63
|
+
detail: 'Declare node instance',
|
|
64
|
+
documentation: 'Declares a node instance in the workflow.\nFormat: @node instanceId NodeTypeName',
|
|
65
|
+
insertText: '@node ${1:id} ${2:NodeType}',
|
|
66
|
+
insertTextFormat: 'snippet',
|
|
67
|
+
kind: 'annotation',
|
|
68
|
+
sortOrder: 20,
|
|
69
|
+
blockTypes: ['workflow'],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
label: '@connect',
|
|
73
|
+
detail: 'Define connection between ports',
|
|
74
|
+
documentation: 'Connects an output port to an input port.\nFormat: @connect sourceNode.outPort -> targetNode.inPort',
|
|
75
|
+
insertText: '@connect ${1:from}.${2:port} -> ${3:to}.${4:port}',
|
|
76
|
+
insertTextFormat: 'snippet',
|
|
77
|
+
kind: 'annotation',
|
|
78
|
+
sortOrder: 21,
|
|
79
|
+
blockTypes: ['workflow'],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
label: '@fwImport',
|
|
83
|
+
detail: 'Import npm node type',
|
|
84
|
+
documentation: 'Imports a node type from an npm package.\nFormat: @fwImport name fn from "package"',
|
|
85
|
+
insertText: '@fwImport ${1:name} ${2:fn} from "${3:pkg}"',
|
|
86
|
+
insertTextFormat: 'snippet',
|
|
87
|
+
kind: 'annotation',
|
|
88
|
+
sortOrder: 22,
|
|
89
|
+
blockTypes: ['workflow'],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
label: '@path',
|
|
93
|
+
detail: 'Multi-node execution route',
|
|
94
|
+
documentation: 'Declare a complete execution route through the graph with scope walking for data ports.\nFormat: @path Start -> nodeA:ok -> nodeB:fail -> Exit',
|
|
95
|
+
insertText: '@path Start -> ${1:node1} -> ${2:node2} -> Exit',
|
|
96
|
+
insertTextFormat: 'snippet',
|
|
97
|
+
kind: 'annotation',
|
|
98
|
+
sortOrder: 25,
|
|
99
|
+
blockTypes: ['workflow'],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
label: '@trigger',
|
|
103
|
+
detail: 'Set workflow trigger (event or cron)',
|
|
104
|
+
documentation: 'Defines how this workflow is triggered.\n' +
|
|
105
|
+
'Formats:\n @trigger event="my/event"\n @trigger cron="0 9 * * *"\n @trigger event="my/event" cron="0 9 * * *"',
|
|
106
|
+
insertText: '@trigger ${1|event,cron|}="${2:value}"',
|
|
107
|
+
insertTextFormat: 'snippet',
|
|
108
|
+
kind: 'annotation',
|
|
109
|
+
sortOrder: 15,
|
|
110
|
+
blockTypes: ['workflow'],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
label: '@cancelOn',
|
|
114
|
+
detail: 'Cancel on external event',
|
|
115
|
+
documentation: 'Cancels a running workflow when a matching event arrives.\n' +
|
|
116
|
+
'Format: @cancelOn event="app/user.deleted" match="data.userId"',
|
|
117
|
+
insertText: '@cancelOn event="${1:event/name}" match="${2:data.field}"',
|
|
118
|
+
insertTextFormat: 'snippet',
|
|
119
|
+
kind: 'annotation',
|
|
120
|
+
sortOrder: 16,
|
|
121
|
+
blockTypes: ['workflow'],
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
label: '@retries',
|
|
125
|
+
detail: 'Set retry count',
|
|
126
|
+
documentation: 'Number of times to retry on failure.\nFormat: @retries 5',
|
|
127
|
+
insertText: '@retries ${1:3}',
|
|
128
|
+
insertTextFormat: 'snippet',
|
|
129
|
+
kind: 'annotation',
|
|
130
|
+
sortOrder: 17,
|
|
131
|
+
blockTypes: ['workflow'],
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
label: '@timeout',
|
|
135
|
+
detail: 'Set function timeout',
|
|
136
|
+
documentation: 'Maximum execution time before function is terminated.\nFormat: @timeout "30m"',
|
|
137
|
+
insertText: '@timeout "${1:30m}"',
|
|
138
|
+
insertTextFormat: 'snippet',
|
|
139
|
+
kind: 'annotation',
|
|
140
|
+
sortOrder: 18,
|
|
141
|
+
blockTypes: ['workflow'],
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
label: '@throttle',
|
|
145
|
+
detail: 'Rate limit execution',
|
|
146
|
+
documentation: 'Limits execution rate to prevent overwhelming downstream services.\n' +
|
|
147
|
+
'Format: @throttle limit=3 period="1m"',
|
|
148
|
+
insertText: '@throttle limit=${1:3} period="${2:1m}"',
|
|
149
|
+
insertTextFormat: 'snippet',
|
|
150
|
+
kind: 'annotation',
|
|
151
|
+
sortOrder: 19,
|
|
152
|
+
blockTypes: ['workflow'],
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
label: '@strictTypes',
|
|
156
|
+
detail: 'Strict type checking',
|
|
157
|
+
documentation: 'Enables strict type checking for connections in this workflow.',
|
|
158
|
+
insertText: '@strictTypes',
|
|
159
|
+
insertTextFormat: 'plain',
|
|
160
|
+
kind: 'annotation',
|
|
161
|
+
sortOrder: 24,
|
|
162
|
+
blockTypes: ['workflow'],
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
label: '@port',
|
|
166
|
+
detail: 'Pattern port declaration',
|
|
167
|
+
documentation: 'Declares an IN/OUT port for a reusable pattern.',
|
|
168
|
+
insertText: '@port ${1:name}',
|
|
169
|
+
insertTextFormat: 'snippet',
|
|
170
|
+
kind: 'annotation',
|
|
171
|
+
sortOrder: 24,
|
|
172
|
+
blockTypes: ['workflow'],
|
|
173
|
+
},
|
|
174
|
+
// Metadata (both or specific)
|
|
175
|
+
{
|
|
176
|
+
label: '@label',
|
|
177
|
+
detail: 'Set display label',
|
|
178
|
+
documentation: 'Sets a human-readable label for the workflow or node.',
|
|
179
|
+
insertText: '@label "${1:Label}"',
|
|
180
|
+
insertTextFormat: 'snippet',
|
|
181
|
+
kind: 'annotation',
|
|
182
|
+
sortOrder: 30,
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
label: '@scope',
|
|
186
|
+
detail: 'Define iteration scope',
|
|
187
|
+
documentation: 'Defines a scope for iteration patterns (forEach, map, etc.).',
|
|
188
|
+
insertText: '@scope ${1:scopeName}',
|
|
189
|
+
insertTextFormat: 'snippet',
|
|
190
|
+
kind: 'annotation',
|
|
191
|
+
sortOrder: 31,
|
|
192
|
+
blockTypes: ['nodeType'],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
label: '@position',
|
|
196
|
+
detail: 'Set node position',
|
|
197
|
+
documentation: 'Sets the visual position of a node in the editor.\nFormat: @position nodeId x y',
|
|
198
|
+
insertText: '@position ${1:nodeId} ${2:x} ${3:y}',
|
|
199
|
+
insertTextFormat: 'snippet',
|
|
200
|
+
kind: 'annotation',
|
|
201
|
+
sortOrder: 32,
|
|
202
|
+
blockTypes: ['workflow'],
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
label: '@name',
|
|
206
|
+
detail: 'Set node type name',
|
|
207
|
+
documentation: 'Sets the display name for a node type.',
|
|
208
|
+
insertText: '@name ${1:name}',
|
|
209
|
+
insertTextFormat: 'snippet',
|
|
210
|
+
kind: 'annotation',
|
|
211
|
+
sortOrder: 33,
|
|
212
|
+
blockTypes: ['nodeType'],
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
label: '@description',
|
|
216
|
+
detail: 'Set description',
|
|
217
|
+
documentation: 'Sets the description for a node type or workflow.',
|
|
218
|
+
insertText: '@description ${1:text}',
|
|
219
|
+
insertTextFormat: 'snippet',
|
|
220
|
+
kind: 'annotation',
|
|
221
|
+
sortOrder: 34,
|
|
222
|
+
blockTypes: ['nodeType'],
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
label: '@color',
|
|
226
|
+
detail: 'Set node color',
|
|
227
|
+
documentation: 'Sets the visual color of a node type in the editor.',
|
|
228
|
+
insertText: '@color ${1:color}',
|
|
229
|
+
insertTextFormat: 'snippet',
|
|
230
|
+
kind: 'annotation',
|
|
231
|
+
sortOrder: 35,
|
|
232
|
+
blockTypes: ['nodeType'],
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
label: '@icon',
|
|
236
|
+
detail: 'Set node icon',
|
|
237
|
+
documentation: 'Sets the icon for a node type.',
|
|
238
|
+
insertText: '@icon ${1:iconName}',
|
|
239
|
+
insertTextFormat: 'snippet',
|
|
240
|
+
kind: 'annotation',
|
|
241
|
+
sortOrder: 36,
|
|
242
|
+
blockTypes: ['nodeType'],
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
label: '@tag',
|
|
246
|
+
detail: 'Add category tag',
|
|
247
|
+
documentation: 'Adds a category tag to a node type for filtering and organization.',
|
|
248
|
+
insertText: '@tag ${1:tagName}',
|
|
249
|
+
insertTextFormat: 'snippet',
|
|
250
|
+
kind: 'annotation',
|
|
251
|
+
sortOrder: 37,
|
|
252
|
+
blockTypes: ['nodeType'],
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
label: '@expression',
|
|
256
|
+
detail: 'Mark as expression node',
|
|
257
|
+
documentation: 'Marks this node type as an expression node (pure data transformation, no control flow).',
|
|
258
|
+
insertText: '@expression',
|
|
259
|
+
insertTextFormat: 'plain',
|
|
260
|
+
kind: 'annotation',
|
|
261
|
+
sortOrder: 38,
|
|
262
|
+
blockTypes: ['nodeType'],
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
label: '@pullExecution',
|
|
266
|
+
detail: 'Pull execution mode',
|
|
267
|
+
documentation: 'Enables pull-based execution for this node type.',
|
|
268
|
+
insertText: '@pullExecution',
|
|
269
|
+
insertTextFormat: 'plain',
|
|
270
|
+
kind: 'annotation',
|
|
271
|
+
sortOrder: 39,
|
|
272
|
+
blockTypes: ['nodeType'],
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
label: '@executeWhen',
|
|
276
|
+
detail: 'Execution strategy',
|
|
277
|
+
documentation: 'Sets the execution strategy for this node type.\nValues: CONJUNCTION, DISJUNCTION, CUSTOM',
|
|
278
|
+
insertText: '@executeWhen ${1:CONJUNCTION}',
|
|
279
|
+
insertTextFormat: 'snippet',
|
|
280
|
+
kind: 'annotation',
|
|
281
|
+
sortOrder: 40,
|
|
282
|
+
blockTypes: ['nodeType'],
|
|
283
|
+
},
|
|
284
|
+
// Standard JSDoc (for completeness)
|
|
285
|
+
{
|
|
286
|
+
label: '@param',
|
|
287
|
+
detail: 'Document parameter',
|
|
288
|
+
documentation: 'Standard JSDoc parameter documentation.',
|
|
289
|
+
insertText: '@param {${1:type}} ${2:name} - ${3:description}',
|
|
290
|
+
insertTextFormat: 'snippet',
|
|
291
|
+
kind: 'annotation',
|
|
292
|
+
sortOrder: 50,
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
label: '@returns',
|
|
296
|
+
detail: 'Document return value',
|
|
297
|
+
documentation: 'Standard JSDoc return value documentation.',
|
|
298
|
+
insertText: '@returns {${1:type}} ${2:description}',
|
|
299
|
+
insertTextFormat: 'snippet',
|
|
300
|
+
kind: 'annotation',
|
|
301
|
+
sortOrder: 51,
|
|
302
|
+
},
|
|
303
|
+
];
|
|
304
|
+
/**
|
|
305
|
+
* Connection-related annotation names for boost detection.
|
|
306
|
+
*/
|
|
307
|
+
const CONNECTION_ANNOTATIONS = new Set(['connect', 'path']);
|
|
308
|
+
/**
|
|
309
|
+
* Get annotation completions filtered by prefix and optional block type.
|
|
310
|
+
* Applies context-aware sorting boosts based on existing annotations.
|
|
311
|
+
*/
|
|
312
|
+
export function getAnnotationCompletions(prefix, blockType, existingAnnotations) {
|
|
313
|
+
const lowerPrefix = prefix.toLowerCase();
|
|
314
|
+
const existing = existingAnnotations ? new Set(existingAnnotations) : undefined;
|
|
315
|
+
return JSDOC_ANNOTATIONS
|
|
316
|
+
.filter((c) => {
|
|
317
|
+
// Filter by prefix
|
|
318
|
+
if (!c.label.toLowerCase().startsWith('@' + lowerPrefix)) {
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
// Filter by block type if known
|
|
322
|
+
if (blockType && c.blockTypes) {
|
|
323
|
+
return c.blockTypes.includes(blockType);
|
|
324
|
+
}
|
|
325
|
+
return true;
|
|
326
|
+
})
|
|
327
|
+
.map((c) => {
|
|
328
|
+
if (!existing)
|
|
329
|
+
return c;
|
|
330
|
+
let boost = 0;
|
|
331
|
+
const annotationName = c.label.replace('@', '');
|
|
332
|
+
if (blockType === 'workflow') {
|
|
333
|
+
// Workflow: has @node but no connection annotations → boost connection annotations
|
|
334
|
+
const hasNode = existing.has('node');
|
|
335
|
+
const hasConnection = [...CONNECTION_ANNOTATIONS].some((a) => existing.has(a));
|
|
336
|
+
if (hasNode && !hasConnection && CONNECTION_ANNOTATIONS.has(annotationName)) {
|
|
337
|
+
boost = -10;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
else if (blockType === 'nodeType') {
|
|
341
|
+
// NodeType: no @input → boost @input; has @input but no @output → boost @output
|
|
342
|
+
const hasInput = existing.has('input');
|
|
343
|
+
const hasOutput = existing.has('output');
|
|
344
|
+
if (!hasInput && annotationName === 'input') {
|
|
345
|
+
boost = -10;
|
|
346
|
+
}
|
|
347
|
+
else if (hasInput && !hasOutput && annotationName === 'output') {
|
|
348
|
+
boost = -10;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
if (boost === 0)
|
|
352
|
+
return c;
|
|
353
|
+
return { ...c, sortOrder: (c.sortOrder ?? 0) + boost };
|
|
354
|
+
})
|
|
355
|
+
.sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0));
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=jsDocAnnotations.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Editor Completions - Bracket Modifier Completions
|
|
3
|
+
*
|
|
4
|
+
* Completions for bracket modifiers like [placement:TOP], [order:1], [hidden:true]
|
|
5
|
+
* These appear on annotation lines inside brackets.
|
|
6
|
+
*/
|
|
7
|
+
import type { FlowWeaverCompletion } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get modifier name completions.
|
|
10
|
+
* Filters by the annotation on the current line if provided.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getModifierCompletions(lineAnnotation: string | null, prefix: string): FlowWeaverCompletion[];
|
|
13
|
+
/**
|
|
14
|
+
* Get modifier value completions.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getModifierValueCompletions(modifier: string, prefix: string): FlowWeaverCompletion[];
|
|
17
|
+
//# sourceMappingURL=modifierCompletions.d.ts.map
|