@synergenius/flow-weaver 0.33.2 → 0.44.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 +201 -226
- package/NOTICE +13 -0
- package/README.md +152 -245
- package/dist/agent/agent-loop.d.ts +4 -2
- package/dist/agent/cli-session.d.ts +3 -3
- package/dist/agent/cli-session.js +511 -438
- package/dist/agent/cli-spawn-config.d.ts +4 -4
- package/dist/agent/gate.d.ts +164 -0
- package/dist/agent/index.d.ts +4 -4
- package/dist/agent/index.js +174 -28
- package/dist/agent/mcp-bridge.d.ts +1 -1
- package/dist/agent/mcp-bridge.js +114 -128
- package/dist/agent/mcp-tool-server.d.ts +2 -2
- package/dist/agent/mcp-tool-server.js +147 -189
- package/dist/agent/profiles.d.ts +69 -0
- package/dist/agent/providers/anthropic.d.ts +2 -4
- package/dist/agent/providers/claude-cli.d.ts +4 -5
- package/dist/agent/providers/openai-compat.d.ts +8 -1
- package/dist/agent/streaming.d.ts +2 -2
- package/dist/agent/types.d.ts +16 -10
- package/dist/api/builder.d.ts +3 -3
- package/dist/api/compile.d.ts +9 -4
- package/dist/api/durable-validation.d.ts +15 -0
- package/dist/api/generate-in-place.d.ts +21 -19
- package/dist/api/generate.d.ts +21 -16
- package/dist/api/generated-module/local-node-functions.d.ts +24 -0
- package/dist/api/generated-module/module-format.d.ts +23 -0
- package/dist/api/generated-module/module-writer.d.ts +34 -0
- package/dist/api/generated-module/node-type-imports.d.ts +39 -0
- package/dist/api/generated-module/preamble.d.ts +16 -0
- package/dist/api/generated-module/workflow-functions.d.ts +29 -0
- package/dist/api/graph-identity.d.ts +39 -0
- package/dist/api/helpers.d.ts +4 -60
- package/dist/api/in-place/built-in-nodes.d.ts +18 -0
- package/dist/api/in-place/function-body.d.ts +21 -0
- package/dist/api/in-place/fw-imports.d.ts +30 -0
- package/dist/api/in-place/macro-coverage.d.ts +14 -0
- package/dist/api/in-place/node-type-functions.d.ts +18 -0
- package/dist/api/in-place/node-type-jsdoc.d.ts +20 -0
- package/dist/api/in-place/orphaned-node-types.d.ts +16 -0
- package/dist/api/in-place/runtime-section.d.ts +16 -0
- package/dist/api/in-place/signature.d.ts +47 -0
- package/dist/api/in-place/source-file.d.ts +19 -0
- package/dist/api/in-place/workflow-jsdoc.d.ts +19 -0
- package/dist/api/index.d.ts +18 -21
- package/dist/api/index.js +259 -53
- package/dist/api/inline-engine.generated.d.ts +3 -0
- package/dist/api/inline-runtime.d.ts +10 -2
- package/dist/api/manipulation/connections.d.ts +1 -1
- package/dist/api/manipulation/index.d.ts +8 -8
- package/dist/api/manipulation/node-types.d.ts +1 -1
- package/dist/api/manipulation/nodes.d.ts +3 -13
- package/dist/api/manipulation/ports.d.ts +1 -1
- package/dist/api/manipulation/scopes.d.ts +1 -1
- package/dist/api/manipulation/workflow.d.ts +1 -1
- package/dist/api/modify-operation.d.ts +0 -2
- package/dist/api/parse.d.ts +22 -1
- package/dist/api/port-references.d.ts +66 -0
- package/dist/api/query.d.ts +18 -2
- package/dist/api/templates.d.ts +1 -1
- package/dist/api/transform.d.ts +1 -1
- package/dist/api/validate.d.ts +1 -1
- package/dist/api/validation-registry.d.ts +2 -2
- package/dist/artifacts/brief.d.ts +43 -0
- package/dist/artifacts/index.d.ts +31 -0
- package/dist/artifacts/pdf.d.ts +19 -0
- package/dist/ast/builder.d.ts +3 -3
- package/dist/ast/index.d.ts +4 -4
- package/dist/ast/index.js +60 -5
- package/dist/ast/serialization-node.d.ts +1 -1
- package/dist/ast/serialization.d.ts +1 -1
- package/dist/ast/types.d.ts +82 -291
- package/dist/ast/workflow-utils.d.ts +4 -4
- package/dist/built-in-nodes/coercion-types.d.ts +1 -1
- package/dist/built-in-nodes/delay.d.ts +3 -1
- package/dist/built-in-nodes/generated-registry.d.ts +1 -1
- package/dist/built-in-nodes/index.d.ts +6 -5
- package/dist/built-in-nodes/index.js +79 -5
- package/dist/built-in-nodes/invoke-workflow.d.ts +2 -1
- package/dist/built-in-nodes/mock-types.d.ts +45 -14
- package/dist/built-in-nodes/sleep.d.ts +12 -0
- package/dist/built-in-nodes/wait-for-agent.d.ts +2 -1
- package/dist/built-in-nodes/wait-for-event.d.ts +2 -1
- package/dist/chevrotain-parser/coerce-parser.d.ts +1 -1
- package/dist/chevrotain-parser/connect-parser.d.ts +1 -1
- package/dist/chevrotain-parser/grammar-diagrams.d.ts +1 -1
- package/dist/chevrotain-parser/index.d.ts +20 -23
- package/dist/chevrotain-parser/node-parser.d.ts +7 -8
- package/dist/chevrotain-parser/parse-line.d.ts +54 -0
- package/dist/chevrotain-parser/tokens.d.ts +0 -17
- package/dist/chevrotain-parser/trigger-cancel-parser.d.ts +6 -1
- package/dist/chunks/chunk-4EUSHAY6.js +298 -0
- package/dist/chunks/chunk-4KDUEOFD.js +197 -0
- package/dist/chunks/chunk-5Y3AIUWY.js +911 -0
- package/dist/chunks/chunk-6KMVP6AU.js +20 -0
- package/dist/chunks/chunk-6PNJORFL.js +128 -0
- package/dist/chunks/chunk-7AAQNGRH.js +2001 -0
- package/dist/chunks/chunk-7YYKTPJ5.js +22705 -0
- package/dist/chunks/chunk-A5MBOFVY.js +33 -0
- package/dist/chunks/chunk-AXNQRVJB.js +18 -0
- package/dist/chunks/chunk-B6HQ6YS5.js +572 -0
- package/dist/chunks/chunk-CY3RNVML.js +296 -0
- package/dist/chunks/chunk-CYHYDLV4.js +653 -0
- package/dist/chunks/chunk-CZBCCK4Y.js +82 -0
- package/dist/chunks/chunk-DCMGQP5V.js +505 -0
- package/dist/chunks/chunk-DIAA66GL.js +72 -0
- package/dist/chunks/chunk-DUO6H5PR.js +20 -0
- package/dist/chunks/chunk-E5WN7IGO.js +125 -0
- package/dist/chunks/chunk-EFGFXXQF.js +184 -0
- package/dist/chunks/chunk-F3RTZV2A.js +2811 -0
- package/dist/chunks/chunk-FMTLP5ZX.js +1397 -0
- package/dist/chunks/chunk-HKZLQJDV.js +79 -0
- package/dist/chunks/chunk-INDEVYEC.js +146 -0
- package/dist/chunks/chunk-JQTF4R5L.js +390 -0
- package/dist/chunks/chunk-KMCAYNUM.js +331 -0
- package/dist/chunks/chunk-KMWCCOUJ.js +1444 -0
- package/dist/chunks/chunk-KU3CLJI2.js +338 -0
- package/dist/chunks/chunk-NDSTGMKR.js +3300 -0
- package/dist/chunks/chunk-NQNLUAPO.js +505 -0
- package/dist/chunks/chunk-O2U2LO57.js +466 -0
- package/dist/chunks/chunk-OOQG7UPP.js +457 -0
- package/dist/chunks/chunk-OZQAW5ZG.js +112 -0
- package/dist/chunks/chunk-P2CVDGHR.js +487 -0
- package/dist/chunks/chunk-P44RIZ7C.js +592 -0
- package/dist/chunks/chunk-PEZCT37T.js +1475 -0
- package/dist/chunks/chunk-PKWSAW6O.js +152 -0
- package/dist/chunks/chunk-Q6MDDZMT.js +4373 -0
- package/dist/chunks/chunk-QDE4Z7KW.js +6 -0
- package/dist/chunks/chunk-QJDAVSNY.js +8 -0
- package/dist/chunks/chunk-QYPORSLO.js +7552 -0
- package/dist/chunks/chunk-R4QGNK34.js +183 -0
- package/dist/chunks/chunk-REEYC73I.js +3002 -0
- package/dist/chunks/chunk-SEWDMQ6Q.js +46 -0
- package/dist/chunks/chunk-TAIUWKZB.js +3057 -0
- package/dist/chunks/chunk-TN4YZ3O7.js +196 -0
- package/dist/chunks/chunk-TRMFB43C.js +143 -0
- package/dist/chunks/chunk-VO4QXG2X.js +1016 -0
- package/dist/chunks/chunk-VP2P3BPA.js +1002 -0
- package/dist/chunks/chunk-VQ7H33J4.js +2176 -0
- package/dist/chunks/chunk-VWA7MCV2.js +105 -0
- package/dist/chunks/chunk-XAV22WD7.js +253 -0
- package/dist/chunks/chunk-YSPBPZDV.js +148 -0
- package/dist/chunks/chunk-ZKEGXO73.js +282 -0
- package/dist/chunks/chunk-ZMGN6F3S.js +4256 -0
- package/dist/chunks/grammar-diagrams-AI7VDXOM.js +14 -0
- package/dist/chunks/index.min-ECJD6GZC.js +37 -0
- package/dist/chunks/manifest-EPTR5MYH.js +21 -0
- package/dist/chunks/openapi-document-6TCGVDUW.js +69 -0
- package/dist/chunks/registry-K2U5KUTY.js +23 -0
- package/dist/chunks/serialization-node-UGY6CFH6.js +38 -0
- package/dist/chunks/validate-GEKSZPIN.js +24 -0
- package/dist/chunks/validation-registry-IQZX3UE3.js +7 -0
- package/dist/chunks/validator-VXFHLPDW.js +26 -0
- package/dist/chunks/workflow-executor-KBGFKHNR.js +36 -0
- package/dist/cli/commands/agents.d.ts +16 -0
- package/dist/cli/commands/artifact.d.ts +10 -0
- package/dist/cli/commands/compile.d.ts +0 -30
- package/dist/cli/commands/console.d.ts +32 -0
- package/dist/cli/commands/context.d.ts +0 -3
- package/dist/cli/commands/describe.js +386 -352
- package/dist/cli/commands/dev.d.ts +9 -4
- package/dist/cli/commands/diagram.d.ts +3 -5
- package/dist/cli/commands/doctor.d.ts +27 -4
- package/dist/cli/commands/doctor.js +3307 -633
- package/dist/cli/commands/export.d.ts +6 -4
- package/dist/cli/commands/grammar.d.ts +0 -3
- package/dist/cli/commands/implement.d.ts +1 -1
- package/dist/cli/commands/init/agent-handoff.d.ts +28 -0
- package/dist/cli/commands/init/config.d.ts +3 -0
- package/dist/cli/commands/init/files.d.ts +12 -0
- package/dist/cli/commands/init/naming.d.ts +13 -0
- package/dist/cli/commands/init/output.d.ts +12 -0
- package/dist/cli/commands/init/setup.d.ts +21 -0
- package/dist/cli/commands/init/types.d.ts +53 -0
- package/dist/cli/commands/init-personas.d.ts +9 -1
- package/dist/cli/commands/init.d.ts +24 -88
- package/dist/cli/commands/market.d.ts +1 -1
- package/dist/cli/commands/mcp-setup.d.ts +1 -4
- package/dist/cli/commands/modify.d.ts +0 -5
- package/dist/cli/commands/openapi.d.ts +9 -11
- package/dist/cli/commands/run.d.ts +0 -4
- package/dist/cli/commands/serve.d.ts +24 -26
- package/dist/cli/commands/status.d.ts +1 -1
- package/dist/cli/exports.d.ts +3 -4
- package/dist/cli/exports.js +124 -23
- package/dist/cli/flow-weaver-agents-H653446S.mjs +81 -0
- package/dist/cli/flow-weaver-artifact-WBFYTW76.mjs +58 -0
- package/dist/cli/flow-weaver-chunk-265CEK74.mjs +2 -0
- package/dist/cli/flow-weaver-chunk-2C7PZCV5.mjs +186 -0
- package/dist/cli/flow-weaver-chunk-3BSYCWPL.mjs +3109 -0
- package/dist/cli/flow-weaver-chunk-3MKUQP3D.mjs +547 -0
- package/dist/cli/flow-weaver-chunk-3ZLMPQTH.mjs +27 -0
- package/dist/cli/flow-weaver-chunk-4DVY73ML.mjs +280 -0
- package/dist/cli/flow-weaver-chunk-54M4KNEL.mjs +200 -0
- package/dist/cli/flow-weaver-chunk-55QMUZIA.mjs +256 -0
- package/dist/cli/flow-weaver-chunk-6ZUJ7LMX.mjs +2003 -0
- package/dist/cli/flow-weaver-chunk-7ET6N32V.mjs +419 -0
- package/dist/cli/flow-weaver-chunk-7G63RR4K.mjs +8880 -0
- package/dist/cli/flow-weaver-chunk-A6M5K3W7.mjs +4418 -0
- package/dist/cli/flow-weaver-chunk-AA3NATMX.mjs +154 -0
- package/dist/cli/flow-weaver-chunk-APX6MQ5A.mjs +5652 -0
- package/dist/cli/flow-weaver-chunk-BHCC5FE5.mjs +17 -0
- package/dist/cli/flow-weaver-chunk-DM4BBRRU.mjs +35 -0
- package/dist/cli/flow-weaver-chunk-DRN7KPWY.mjs +168 -0
- package/dist/cli/flow-weaver-chunk-EKWF27G6.mjs +23 -0
- package/dist/cli/flow-weaver-chunk-EM5HWQ4R.mjs +338 -0
- package/dist/cli/flow-weaver-chunk-FPPPU2DG.mjs +226 -0
- package/dist/cli/flow-weaver-chunk-GAQXZHNO.mjs +3005 -0
- package/dist/cli/flow-weaver-chunk-GBUNNP33.mjs +1329 -0
- package/dist/cli/flow-weaver-chunk-HMAKDE55.mjs +636 -0
- package/dist/cli/flow-weaver-chunk-HQ3ZAN44.mjs +367 -0
- package/dist/cli/flow-weaver-chunk-I4APCXYN.mjs +21442 -0
- package/dist/cli/flow-weaver-chunk-IJJ4JXTL.mjs +2297 -0
- package/dist/cli/flow-weaver-chunk-J7EPZW2I.mjs +33 -0
- package/dist/cli/flow-weaver-chunk-KOEMJHLG.mjs +83 -0
- package/dist/cli/flow-weaver-chunk-M6CBWQKJ.mjs +271 -0
- package/dist/cli/flow-weaver-chunk-MHJ4N652.mjs +1580 -0
- package/dist/cli/flow-weaver-chunk-MKAFQWLP.mjs +202 -0
- package/dist/cli/flow-weaver-chunk-MMV2XGD3.mjs +3291 -0
- package/dist/cli/flow-weaver-chunk-MSI2UJES.mjs +125 -0
- package/dist/cli/flow-weaver-chunk-N767YRAI.mjs +48 -0
- package/dist/cli/flow-weaver-chunk-NQKKWDGF.mjs +56 -0
- package/dist/cli/flow-weaver-chunk-NYZDQYFU.mjs +45 -0
- package/dist/cli/flow-weaver-chunk-OMVWSNHJ.mjs +14 -0
- package/dist/cli/flow-weaver-chunk-PUWZ47H5.mjs +2188 -0
- package/dist/cli/flow-weaver-chunk-QOPRVDES.mjs +46 -0
- package/dist/cli/flow-weaver-chunk-RIWE7YTR.mjs +216 -0
- package/dist/cli/flow-weaver-chunk-S63Q3JIU.mjs +789 -0
- package/dist/cli/flow-weaver-chunk-T7X5A23H.mjs +558 -0
- package/dist/cli/flow-weaver-chunk-TLV3VZUN.mjs +2 -0
- package/dist/cli/flow-weaver-chunk-TS5P3PIN.mjs +194 -0
- package/dist/cli/flow-weaver-chunk-U3EO3X4B.mjs +649 -0
- package/dist/cli/flow-weaver-chunk-UNFS3NQP.mjs +34 -0
- package/dist/cli/flow-weaver-chunk-V6DHWFQG.mjs +2811 -0
- package/dist/cli/flow-weaver-chunk-VXWNLYQU.mjs +9 -0
- package/dist/cli/flow-weaver-chunk-W3YNK26P.mjs +149 -0
- package/dist/cli/flow-weaver-chunk-XG2WKXYZ.mjs +324 -0
- package/dist/cli/flow-weaver-chunk-YLSRZWFK.mjs +2219 -0
- package/dist/cli/flow-weaver-chunk-YVPURWS6.mjs +40 -0
- package/dist/cli/flow-weaver-chunk-Z44JK332.mjs +582 -0
- package/dist/cli/flow-weaver-chunk-Z5ZJPNSY.mjs +517 -0
- package/dist/cli/flow-weaver-chunk-ZQALO25T.mjs +594 -0
- package/dist/cli/flow-weaver-compile-A2CABDSB.mjs +37 -0
- package/dist/cli/flow-weaver-console-6EBHDBTN.mjs +71 -0
- package/dist/cli/flow-weaver-context-ECLYANFF.mjs +17 -0
- package/dist/cli/flow-weaver-context-ZRUMW2KE.mjs +69 -0
- package/dist/cli/flow-weaver-create-WIP4EFNP.mjs +124 -0
- package/dist/cli/flow-weaver-deployment-WJJRK7NO.mjs +14 -0
- package/dist/cli/flow-weaver-describe-XDIFF5LI.mjs +41 -0
- package/dist/cli/flow-weaver-dev-LG2NSQAU.mjs +196 -0
- package/dist/cli/flow-weaver-diagram-3EVQARQE.mjs +52 -0
- package/dist/cli/flow-weaver-diagram-7LR7O4M2.mjs +44 -0
- package/dist/cli/flow-weaver-diff-USF7DJLU.mjs +85 -0
- package/dist/cli/flow-weaver-docs-QU2ZOXKH.mjs +96 -0
- package/dist/cli/flow-weaver-doctor-K447YWHR.mjs +43 -0
- package/dist/cli/flow-weaver-export-LAS6N56Y.mjs +140 -0
- package/dist/cli/flow-weaver-grammar-RIRUS3Q6.mjs +49 -0
- package/dist/cli/flow-weaver-grammar-diagrams-WXRTW5SK.mjs +15 -0
- package/dist/cli/flow-weaver-implement-5JG6BCFZ.mjs +114 -0
- package/dist/cli/flow-weaver-index.min-OR5SIHXD.mjs +39 -0
- package/dist/cli/flow-weaver-init-34YZNPQX.mjs +972 -0
- package/dist/cli/flow-weaver-init-personas-NOGZTQQ2.mjs +48 -0
- package/dist/cli/flow-weaver-manifest-4JNUSEB3.mjs +18 -0
- package/dist/cli/flow-weaver-market-WA4CKHKV.mjs +444 -0
- package/dist/cli/flow-weaver-mcp-setup-O26MGXSD.mjs +22 -0
- package/dist/cli/flow-weaver-migrate-VFVEUTPH.mjs +119 -0
- package/dist/cli/flow-weaver-modify-VM3JP5K6.mjs +97 -0
- package/dist/cli/flow-weaver-openapi-IRBWI3HM.mjs +71 -0
- package/dist/cli/flow-weaver-openapi-document-7N6YMPG3.mjs +30 -0
- package/dist/cli/flow-weaver-pack-commands-OS2QRXAK.mjs +146 -0
- package/dist/cli/flow-weaver-registry-5MLFRPPT.mjs +25 -0
- package/dist/cli/flow-weaver-run-DSTLSTHR.mjs +555 -0
- package/dist/cli/flow-weaver-serialization-node-LE6PCG4M.mjs +50 -0
- package/dist/cli/flow-weaver-serve-NVLCLSOW.mjs +192 -0
- package/dist/cli/flow-weaver-server-7IERLVXE.mjs +2925 -0
- package/dist/cli/flow-weaver-server-KWF4PXYC.mjs +19112 -0
- package/dist/cli/flow-weaver-status-75W2S3YB.mjs +138 -0
- package/dist/cli/flow-weaver-strip-AZPXUYVA.mjs +79 -0
- package/dist/cli/flow-weaver-templates-DSNMB6K7.mjs +72 -0
- package/dist/cli/flow-weaver-validate-A4UWDQN6.mjs +19 -0
- package/dist/cli/flow-weaver-validate-GRBZ5W4C.mjs +296 -0
- package/dist/cli/flow-weaver-validation-registry-BINGUNXX.mjs +9 -0
- package/dist/cli/flow-weaver-validator-TY56CI42.mjs +21 -0
- package/dist/cli/flow-weaver-watch-OPPERXL6.mjs +114 -0
- package/dist/cli/flow-weaver-workflow-executor-6AHYPXAN.mjs +26 -0
- package/dist/cli/flow-weaver.mjs +3557 -89384
- package/dist/cli/index.d.ts +5 -2
- package/dist/cli/pack-commands-needed.d.ts +12 -0
- package/dist/cli/program.d.ts +14 -0
- package/dist/cli/templates/ai/mock-provider.d.ts +1 -1
- package/dist/cli/templates/index.d.ts +1 -8
- package/dist/cli/templates/nodes/agent-router.d.ts +1 -1
- package/dist/cli/templates/nodes/aggregator.d.ts +1 -1
- package/dist/cli/templates/nodes/conversation-memory.d.ts +1 -1
- package/dist/cli/templates/nodes/http.d.ts +1 -1
- package/dist/cli/templates/nodes/human-approval.d.ts +1 -1
- package/dist/cli/templates/nodes/json-extractor.d.ts +1 -1
- package/dist/cli/templates/nodes/llm-call.d.ts +1 -1
- package/dist/cli/templates/nodes/prompt-template.d.ts +1 -1
- package/dist/cli/templates/nodes/rag-retriever.d.ts +1 -1
- package/dist/cli/templates/nodes/tool-executor.d.ts +1 -1
- package/dist/cli/templates/nodes/transformer.d.ts +1 -1
- package/dist/cli/templates/nodes/validator.d.ts +1 -1
- package/dist/cli/templates/shared/approval-types.d.ts +1 -1
- package/dist/cli/templates/shared/case.d.ts +14 -0
- package/dist/cli/templates/shared/llm-types.d.ts +4 -4
- package/dist/cli/templates/workflows/aggregator.d.ts +1 -1
- package/dist/cli/templates/workflows/ai-agent.d.ts +1 -1
- package/dist/cli/templates/workflows/ai-chat.d.ts +1 -1
- package/dist/cli/templates/workflows/ai-rag.d.ts +1 -1
- package/dist/cli/templates/workflows/ai-react.d.ts +1 -1
- package/dist/cli/templates/workflows/approval.d.ts +10 -0
- package/dist/cli/templates/workflows/conditional.d.ts +2 -2
- package/dist/cli/templates/workflows/error-handler.d.ts +2 -2
- package/dist/cli/templates/workflows/foreach.d.ts +1 -1
- package/dist/cli/templates/workflows/sequential.d.ts +1 -1
- package/dist/cli/templates/workflows/webhook.d.ts +1 -1
- package/dist/cli/utils/interactive.d.ts +6 -0
- package/dist/cli/utils/json-option.d.ts +8 -0
- package/dist/cli/utils/logger.d.ts +2 -0
- package/dist/compiler/durable-source-proof.d.ts +23 -0
- package/dist/compiler/executable-artifact.d.ts +29 -0
- package/dist/compiler/index.d.ts +4 -0
- package/dist/compiler/index.js +36 -0
- package/dist/console/app.js +106 -0
- package/dist/console/assets/synergenius.svg +18 -0
- package/dist/console/author.d.ts +32 -0
- package/dist/console/cli-catalog.d.ts +21 -0
- package/dist/console/cli-run.d.ts +35 -0
- package/dist/console/cli-run.js +46 -0
- package/dist/console/debug.d.ts +67 -0
- package/dist/console/diff-view.d.ts +96 -0
- package/dist/console/export.d.ts +36 -0
- package/dist/console/git.d.ts +27 -0
- package/dist/console/index.d.ts +4 -0
- package/dist/console/index.html +16 -0
- package/dist/console/index.js +203 -0
- package/dist/console/packs.d.ts +100 -0
- package/dist/console/request-guard.d.ts +10 -0
- package/dist/console/respond.d.ts +16 -0
- package/dist/console/router.d.ts +64 -0
- package/dist/console/routes-agents.d.ts +14 -0
- package/dist/console/routes-project.d.ts +3 -0
- package/dist/console/routes-runs.d.ts +3 -0
- package/dist/console/routes-services.d.ts +7 -0
- package/dist/console/routes-tools.d.ts +3 -0
- package/dist/console/runs.d.ts +69 -0
- package/dist/console/scan.d.ts +49 -0
- package/dist/console/schema.d.ts +74 -0
- package/dist/console/server.d.ts +34 -0
- package/dist/console/server.js +43264 -0
- package/dist/console/services.d.ts +119 -0
- package/dist/console/source.d.ts +23 -0
- package/dist/console/status.d.ts +68 -0
- package/dist/console/styles.css +1023 -0
- package/dist/console/terminals.d.ts +22 -0
- package/dist/console/workflow-view.d.ts +153 -0
- package/dist/constants.d.ts +5 -1
- package/dist/constants.js +56 -167
- package/dist/context/index.d.ts +10 -0
- package/dist/context/index.js +14 -191
- package/dist/coordinator/agent-gate.d.ts +107 -0
- package/dist/coordinator/bundle-digest.d.ts +20 -0
- package/dist/coordinator/clock-tick.d.ts +4 -0
- package/dist/coordinator/effect-receipts.d.ts +10 -0
- package/dist/coordinator/errors.d.ts +31 -0
- package/dist/coordinator/file-store.d.ts +3 -0
- package/dist/coordinator/gate-labeling.d.ts +33 -0
- package/dist/coordinator/gate-resolution.d.ts +28 -0
- package/dist/coordinator/index.d.ts +12 -0
- package/dist/coordinator/index.js +107 -0
- package/dist/coordinator/memory-store.d.ts +3 -0
- package/dist/coordinator/params.d.ts +18 -0
- package/dist/coordinator/run-annotations.d.ts +6 -0
- package/dist/coordinator/run-context.d.ts +11 -0
- package/dist/coordinator/run-ending.d.ts +5 -0
- package/dist/coordinator/run-outcome.d.ts +31 -0
- package/dist/coordinator/run-resume.d.ts +6 -0
- package/dist/coordinator/run-start.d.ts +4 -0
- package/dist/coordinator/run-store.d.ts +275 -0
- package/dist/coordinator/run-trace.d.ts +41 -0
- package/dist/coordinator/run-views.d.ts +12 -0
- package/dist/coordinator/runs-dir.d.ts +26 -0
- package/dist/coordinator/store.d.ts +67 -0
- package/dist/coordinator/time.d.ts +39 -0
- package/dist/coordinator/workflow-selection.d.ts +6 -0
- package/dist/deployment/index.d.ts +11 -16
- package/dist/deployment/index.js +541 -50
- package/dist/deployment/targets/base.d.ts +11 -13
- package/dist/deployment/targets/openapi-parts.d.ts +92 -0
- package/dist/diagram/arms.d.ts +70 -0
- package/dist/diagram/ascii-renderer.d.ts +1 -1
- package/dist/diagram/geometry.d.ts +20 -32
- package/dist/diagram/graph/bounds.d.ts +30 -0
- package/dist/diagram/graph/metrics.d.ts +21 -0
- package/dist/diagram/graph/nodes.d.ts +33 -0
- package/dist/diagram/graph/placement.d.ts +22 -0
- package/dist/diagram/graph/ports.d.ts +23 -0
- package/dist/diagram/graph/routing.d.ts +40 -0
- package/dist/diagram/graph/scopes.d.ts +30 -0
- package/dist/diagram/index.d.ts +15 -23
- package/dist/diagram/index.js +632 -111
- package/dist/diagram/labels.d.ts +12 -0
- package/dist/diagram/lanes.d.ts +93 -0
- package/dist/diagram/layout.d.ts +1 -1
- package/dist/diagram/material-symbols.d.ts +7 -0
- package/dist/diagram/orthogonal-router.d.ts +2 -3
- package/dist/diagram/process-view.d.ts +79 -0
- package/dist/diagram/spine.d.ts +25 -0
- package/dist/diagram/theme.d.ts +1 -5
- package/dist/diagram/types.d.ts +6 -20
- package/dist/diff/index.js +53 -9
- package/dist/diff/types.d.ts +1 -5
- package/dist/doc-metadata/extractors/annotations.d.ts +0 -4
- package/dist/doc-metadata/extractors/cli-commands.d.ts +2 -1
- package/dist/doc-metadata/extractors/core-metadata.d.ts +19 -4
- package/dist/doc-metadata/extractors/error-codes.d.ts +1 -1
- package/dist/doc-metadata/extractors/mcp-tools.d.ts +7 -3
- package/dist/doc-metadata/index.d.ts +1 -2
- package/dist/doc-metadata/index.js +2368 -9
- package/dist/doc-metadata/types.d.ts +7 -24
- package/dist/docs/guide.d.ts +33 -0
- package/dist/docs/index.d.ts +7 -4
- package/dist/docs/index.js +298 -298
- package/dist/docs/pack-topics.d.ts +18 -0
- package/dist/editor-completions/annotationValues.d.ts +1 -1
- package/dist/editor-completions/contextParser.d.ts +3 -2
- package/dist/editor-completions/dataTypes.d.ts +1 -1
- package/dist/editor-completions/goToDefinition.d.ts +1 -1
- package/dist/editor-completions/index.d.ts +8 -8
- package/dist/editor-completions/index.js +1244 -175
- package/dist/editor-completions/jsDocAnnotations.d.ts +1 -1
- package/dist/editor-completions/modifierCompletions.d.ts +1 -1
- package/dist/export/index.d.ts +7 -1
- package/dist/generated-branding.js +8 -21
- package/dist/generated-version.d.ts +1 -1
- package/dist/generated-version.js +7 -3
- package/dist/generator/annotation-generator.d.ts +84 -0
- package/dist/generator/async-detection.d.ts +1 -1
- package/dist/{body-generator.d.ts → generator/body-generator.d.ts} +7 -3
- package/dist/generator/code-utils.d.ts +15 -60
- package/dist/generator/connection-reads.d.ts +94 -0
- package/dist/generator/control-flow-plan.d.ts +74 -0
- package/dist/generator/control-flow.d.ts +1 -1
- package/dist/generator/exit-assembly.d.ts +11 -0
- package/dist/generator/index.d.ts +4 -5
- package/dist/generator/index.js +34 -11
- package/dist/generator/input-port-values.d.ts +22 -0
- package/dist/generator/{scope-function-generator.d.ts → node-arguments.d.ts} +76 -1
- package/dist/generator/node-invocation.d.ts +74 -0
- package/dist/{node-types-generator.d.ts → generator/node-types-generator.d.ts} +3 -2
- package/dist/generator/scope-closure.d.ts +23 -0
- package/dist/generator/scoped-child.d.ts +49 -0
- package/dist/{sugar-optimizer.d.ts → generator/sugar-optimizer.d.ts} +1 -1
- package/dist/generator/unified.d.ts +14 -2
- package/dist/generator/workflow-generator.d.ts +37 -0
- package/dist/index.d.ts +29 -26
- package/dist/index.js +1322 -92
- package/dist/jsdoc-port-sync/apply-diff.d.ts +15 -0
- package/dist/jsdoc-port-sync/callback-signature.d.ts +17 -0
- package/dist/jsdoc-port-sync/diff.d.ts +5 -7
- package/dist/jsdoc-port-sync/incomplete-lines.d.ts +41 -0
- package/dist/jsdoc-port-sync/index.d.ts +11 -11
- package/dist/jsdoc-port-sync/index.js +88 -45
- package/dist/jsdoc-port-sync/jsdoc-to-signature.d.ts +66 -0
- package/dist/jsdoc-port-sync/port-parser.d.ts +6 -24
- package/dist/jsdoc-port-sync/port-tag-placement.d.ts +55 -0
- package/dist/jsdoc-port-sync/scoped-ports.d.ts +21 -0
- package/dist/jsdoc-port-sync/signature-parser.d.ts +8 -1
- package/dist/jsdoc-port-sync/signature-to-jsdoc.d.ts +77 -0
- package/dist/jsdoc-port-sync/sync.d.ts +4 -1
- package/dist/marketplace/index.d.ts +5 -3
- package/dist/marketplace/index.js +62 -10
- package/dist/marketplace/install.d.ts +24 -0
- package/dist/marketplace/manifest.d.ts +1 -1
- package/dist/marketplace/npmrc.d.ts +24 -0
- package/dist/marketplace/registry.d.ts +46 -11
- package/dist/marketplace/types.d.ts +41 -24
- package/dist/marketplace/validator.d.ts +1 -1
- package/dist/mcp/debug-session.d.ts +2 -4
- package/dist/mcp/dist-imports.d.ts +12 -0
- package/dist/mcp/response-utils.d.ts +11 -9
- package/dist/mcp/server.d.ts +0 -1
- package/dist/mcp/tools-context.d.ts +11 -0
- package/dist/mcp/tools-diagram.d.ts +1 -2
- package/dist/mcp/tools-export.d.ts +2 -2
- package/dist/mcp/tools-marketplace.d.ts +1 -1
- package/dist/mcp/tools-run.d.ts +17 -0
- package/dist/mcp/tools-workflow.d.ts +3 -0
- package/dist/mcp/types.d.ts +4 -14
- package/dist/mcp/workflow-executor.d.ts +57 -19
- package/dist/npm-packages.d.ts +1 -1
- package/dist/npm-packages.js +10 -473
- package/dist/parser/annotation-parser.d.ts +88 -0
- package/dist/parser/annotation-suggestion.d.ts +23 -0
- package/dist/parser/durable-effect-contract.d.ts +10 -0
- package/dist/parser/expression-references.d.ts +101 -0
- package/dist/parser/external-node-types.d.ts +69 -0
- package/dist/{function-like.d.ts → parser/function-like.d.ts} +10 -3
- package/dist/parser/generated-sections.d.ts +25 -0
- package/dist/parser/import-resolution.d.ts +67 -0
- package/dist/parser/import-stub.d.ts +29 -0
- package/dist/parser/jsdoc/config-types.d.ts +209 -0
- package/dist/parser/jsdoc/graph-tags.d.ts +54 -0
- package/dist/parser/jsdoc/node-type-block.d.ts +23 -0
- package/dist/parser/jsdoc/parse-line-once.d.ts +11 -0
- package/dist/parser/jsdoc/port-tags.d.ts +42 -0
- package/dist/parser/jsdoc/runtime-tags.d.ts +65 -0
- package/dist/parser/jsdoc/signature-types.d.ts +52 -0
- package/dist/parser/jsdoc/workflow-block.d.ts +22 -0
- package/dist/parser/jsdoc-parser.d.ts +23 -0
- package/dist/parser/macro-expansion.d.ts +80 -0
- package/dist/parser/module-resolution.d.ts +38 -0
- package/dist/parser/node-inference.d.ts +39 -0
- package/dist/parser/npm-node-types.d.ts +24 -0
- package/dist/parser/pack-handlers.d.ts +12 -0
- package/dist/parser/path-data-resolution.d.ts +75 -0
- package/dist/parser/port-inference.d.ts +15 -0
- package/dist/{resolve-package-types.d.ts → parser/resolve-package-types.d.ts} +4 -0
- package/dist/parser/serialize-deploy-annotations.d.ts +19 -0
- package/dist/parser/tag-registry.d.ts +22 -0
- package/dist/parser/workflow-extraction.d.ts +39 -0
- package/dist/runtime/ExecutionContext.d.ts +87 -99
- package/dist/runtime/continuation-core.d.ts +147 -0
- package/dist/runtime/continuation.d.ts +48 -0
- package/dist/runtime/debug-controller.d.ts +7 -22
- package/dist/runtime/durable-execution.d.ts +176 -0
- package/dist/runtime/events.d.ts +16 -1
- package/dist/runtime/executable-module-contract.d.ts +16 -0
- package/dist/runtime/index.d.ts +13 -10
- package/dist/runtime/index.js +947 -9
- package/dist/runtime/strict-json.d.ts +15 -0
- package/dist/server/access.d.ts +12 -0
- package/dist/server/api.d.ts +126 -0
- package/dist/server/callback-delivery.d.ts +62 -0
- package/dist/server/callback-url.d.ts +44 -0
- package/dist/server/context.d.ts +35 -0
- package/dist/server/http-error.d.ts +10 -0
- package/dist/server/index.d.ts +7 -1
- package/dist/server/index.js +125 -6
- package/dist/server/openapi-document.d.ts +33 -0
- package/dist/server/openapi.d.ts +32 -0
- package/dist/server/respond.d.ts +35 -0
- package/dist/server/route-params.d.ts +17 -0
- package/dist/server/route-plan.d.ts +41 -0
- package/dist/server/routes-catalog.d.ts +5 -0
- package/dist/server/routes-declared.d.ts +12 -0
- package/dist/server/routes-runs.d.ts +8 -0
- package/dist/server/run-driver.d.ts +58 -0
- package/dist/server/run-view.d.ts +26 -0
- package/dist/server/transport.d.ts +35 -0
- package/dist/server/types.d.ts +143 -52
- package/dist/server/webhook-server.d.ts +12 -38
- package/dist/server/workflow-registry.d.ts +7 -4
- package/dist/service-registry.d.ts +49 -0
- package/dist/service-registry.js +123 -0
- package/dist/testing/assertions.d.ts +2 -2
- package/dist/testing/index.d.ts +14 -13
- package/dist/testing/index.js +582 -24
- package/dist/testing/mock-approval.d.ts +3 -5
- package/dist/testing/mock-llm.d.ts +2 -3
- package/dist/testing/recorder.d.ts +5 -6
- package/dist/testing/replayer.d.ts +6 -7
- package/dist/testing/run-store-check.d.ts +3 -0
- package/dist/testing/token-tracker.d.ts +2 -2
- package/dist/{type-mappings.d.ts → types/type-mappings.d.ts} +13 -1
- package/dist/utils/error-utils.d.ts +4 -2
- package/dist/utils/port-ordering.d.ts +2 -2
- package/dist/utils/port-tag-utils.d.ts +1 -1
- package/dist/validation/agent-detection.d.ts +17 -5
- package/dist/validation/agent-rules.d.ts +6 -7
- package/dist/validation/core-rules.d.ts +49 -0
- package/dist/validation/design-rules.d.ts +9 -3
- package/dist/validation/rule-registry.d.ts +3 -3
- package/dist/validation/rules/connections.d.ts +27 -0
- package/dist/validation/rules/context.d.ts +11 -0
- package/dist/validation/rules/cycles.d.ts +17 -0
- package/dist/validation/rules/data-flow.d.ts +19 -0
- package/dist/validation/rules/scope-topology.d.ts +35 -0
- package/dist/validation/rules/type-compatibility.d.ts +30 -0
- package/dist/validation/type-checker.d.ts +39 -0
- package/dist/validation/validator-helpers.d.ts +31 -0
- package/dist/validation/validator.d.ts +30 -0
- package/docs/reference/advanced-annotations.md +277 -60
- package/docs/reference/built-in-nodes.md +164 -94
- package/docs/reference/cancellation.md +44 -0
- package/docs/reference/cli-reference.md +252 -234
- package/docs/reference/compilation.md +36 -109
- package/docs/reference/concepts.md +80 -63
- package/docs/reference/console.md +169 -0
- package/docs/reference/debugging.md +26 -57
- package/docs/reference/deployment.md +217 -143
- package/docs/reference/durable-gates.md +445 -0
- package/docs/reference/error-codes.md +90 -43
- package/docs/reference/export-interface.md +91 -26
- package/docs/reference/iterative-development.md +50 -28
- package/docs/reference/jsdoc-grammar.md +66 -311
- package/docs/reference/library.md +250 -0
- package/docs/reference/marketplace.md +301 -152
- package/docs/reference/mcp-tools.md +102 -0
- package/docs/reference/node-conversion.md +84 -59
- package/docs/reference/orientation.md +68 -0
- package/docs/reference/scaffold.md +5 -4
- package/docs/reference/tutorial.md +106 -166
- package/docs/reference/visual-reference.md +1 -1
- package/package.json +85 -50
- package/dist/agent/agent-loop.js +0 -156
- package/dist/agent/cli-spawn-config.js +0 -65
- package/dist/agent/device-connection.d.ts +0 -79
- package/dist/agent/device-connection.js +0 -184
- package/dist/agent/env-allowlist.js +0 -60
- package/dist/agent/providers/anthropic.js +0 -198
- package/dist/agent/providers/claude-cli.js +0 -161
- package/dist/agent/providers/openai-compat.js +0 -205
- package/dist/agent/providers/platform.d.ts +0 -23
- package/dist/agent/providers/platform.js +0 -132
- package/dist/agent/streaming.js +0 -186
- package/dist/agent/types.js +0 -20
- package/dist/annotation-generator.d.ts +0 -50
- package/dist/annotation-generator.js +0 -743
- package/dist/api/builder.js +0 -345
- package/dist/api/command-runner.js +0 -787
- package/dist/api/compile.js +0 -148
- package/dist/api/extract-types.js +0 -57
- package/dist/api/generate-in-place.js +0 -1477
- package/dist/api/generate.js +0 -514
- package/dist/api/helpers.js +0 -285
- package/dist/api/inline-runtime.js +0 -526
- package/dist/api/manipulation/connections.js +0 -151
- package/dist/api/manipulation/index.js +0 -41
- package/dist/api/manipulation/node-types.js +0 -200
- package/dist/api/manipulation/nodes.js +0 -355
- package/dist/api/manipulation/ports.js +0 -228
- package/dist/api/manipulation/scopes.js +0 -156
- package/dist/api/manipulation/workflow.js +0 -116
- package/dist/api/modify-operation.js +0 -177
- package/dist/api/parse.js +0 -115
- package/dist/api/patterns.d.ts +0 -112
- package/dist/api/patterns.js +0 -303
- package/dist/api/query.js +0 -840
- package/dist/api/templates.js +0 -117
- package/dist/api/transform.js +0 -40
- package/dist/api/validate.js +0 -64
- package/dist/api/validation-registry.js +0 -10
- package/dist/api/workflow-file-operations.js +0 -180
- package/dist/ast/builder.js +0 -395
- package/dist/ast/serialization-node.js +0 -30
- package/dist/ast/serialization.js +0 -134
- package/dist/ast/types.js +0 -2
- package/dist/ast/workflow-utils.js +0 -114
- package/dist/body-generator.js +0 -35
- package/dist/built-in-nodes/coercion-types.js +0 -61
- package/dist/built-in-nodes/delay.js +0 -29
- package/dist/built-in-nodes/generated-registry.js +0 -299
- package/dist/built-in-nodes/invoke-workflow.js +0 -36
- package/dist/built-in-nodes/mock-types.js +0 -42
- package/dist/built-in-nodes/wait-for-agent.js +0 -31
- package/dist/built-in-nodes/wait-for-event.js +0 -25
- package/dist/chevrotain-parser/coerce-parser.js +0 -103
- package/dist/chevrotain-parser/connect-parser.js +0 -136
- package/dist/chevrotain-parser/fan-parser.js +0 -149
- package/dist/chevrotain-parser/grammar-diagrams.js +0 -273
- package/dist/chevrotain-parser/index.js +0 -31
- package/dist/chevrotain-parser/map-parser.js +0 -130
- package/dist/chevrotain-parser/node-parser.js +0 -558
- package/dist/chevrotain-parser/path-parser.js +0 -140
- package/dist/chevrotain-parser/port-parser.js +0 -519
- package/dist/chevrotain-parser/position-parser.d.ts +0 -20
- package/dist/chevrotain-parser/position-parser.js +0 -83
- package/dist/chevrotain-parser/scope-parser.js +0 -104
- package/dist/chevrotain-parser/tokens.js +0 -429
- package/dist/chevrotain-parser/trigger-cancel-parser.js +0 -291
- package/dist/cli/commands/account.d.ts +0 -4
- package/dist/cli/commands/account.js +0 -50
- package/dist/cli/commands/ai-credentials.d.ts +0 -12
- package/dist/cli/commands/ai-credentials.js +0 -95
- package/dist/cli/commands/apikey.d.ts +0 -4
- package/dist/cli/commands/apikey.js +0 -64
- package/dist/cli/commands/auth.d.ts +0 -9
- package/dist/cli/commands/auth.js +0 -255
- package/dist/cli/commands/compile.js +0 -331
- package/dist/cli/commands/connect.d.ts +0 -4
- package/dist/cli/commands/connect.js +0 -163
- package/dist/cli/commands/context.js +0 -51
- package/dist/cli/commands/create.js +0 -139
- package/dist/cli/commands/deploy.d.ts +0 -6
- package/dist/cli/commands/deploy.js +0 -74
- package/dist/cli/commands/dev.js +0 -227
- package/dist/cli/commands/diagram.js +0 -39
- package/dist/cli/commands/diff.js +0 -57
- package/dist/cli/commands/docs.js +0 -74
- package/dist/cli/commands/export.js +0 -153
- package/dist/cli/commands/grammar.js +0 -40
- package/dist/cli/commands/implement.js +0 -91
- package/dist/cli/commands/init-personas.js +0 -541
- package/dist/cli/commands/init.js +0 -797
- package/dist/cli/commands/market.js +0 -440
- package/dist/cli/commands/mcp-setup.js +0 -433
- package/dist/cli/commands/migrate.js +0 -91
- package/dist/cli/commands/modify.js +0 -58
- package/dist/cli/commands/openapi.js +0 -71
- package/dist/cli/commands/org.d.ts +0 -8
- package/dist/cli/commands/org.js +0 -136
- package/dist/cli/commands/pattern.d.ts +0 -34
- package/dist/cli/commands/pattern.js +0 -186
- package/dist/cli/commands/plugin.d.ts +0 -16
- package/dist/cli/commands/plugin.js +0 -176
- package/dist/cli/commands/run.js +0 -742
- package/dist/cli/commands/serve.js +0 -93
- package/dist/cli/commands/status.js +0 -123
- package/dist/cli/commands/strip.js +0 -61
- package/dist/cli/commands/templates.js +0 -58
- package/dist/cli/commands/validate.js +0 -267
- package/dist/cli/commands/watch.js +0 -71
- package/dist/cli/config/credentials.d.ts +0 -15
- package/dist/cli/config/credentials.js +0 -43
- package/dist/cli/config/platform-client.d.ts +0 -123
- package/dist/cli/config/platform-client.js +0 -248
- package/dist/cli/env-setup.js +0 -12
- package/dist/cli/index.js +0 -850
- package/dist/cli/pack-commands.js +0 -122
- package/dist/cli/postinstall.d.ts +0 -16
- package/dist/cli/postinstall.js +0 -119
- package/dist/cli/templates/ai/mock-provider.js +0 -64
- package/dist/cli/templates/ai/types.js +0 -5
- package/dist/cli/templates/approvals/index.d.ts +0 -15
- package/dist/cli/templates/approvals/index.js +0 -241
- package/dist/cli/templates/index.js +0 -123
- package/dist/cli/templates/nodes/agent-router.js +0 -114
- package/dist/cli/templates/nodes/aggregator.js +0 -63
- package/dist/cli/templates/nodes/conversation-memory.js +0 -85
- package/dist/cli/templates/nodes/http.js +0 -80
- package/dist/cli/templates/nodes/human-approval.js +0 -109
- package/dist/cli/templates/nodes/json-extractor.js +0 -119
- package/dist/cli/templates/nodes/llm-call.js +0 -106
- package/dist/cli/templates/nodes/prompt-template.js +0 -52
- package/dist/cli/templates/nodes/rag-retriever.js +0 -128
- package/dist/cli/templates/nodes/tool-executor.js +0 -108
- package/dist/cli/templates/nodes/transformer.js +0 -68
- package/dist/cli/templates/nodes/validator.js +0 -62
- package/dist/cli/templates/pack-loader.js +0 -58
- package/dist/cli/templates/providers/index.js +0 -239
- package/dist/cli/templates/shared/approval-types.js +0 -31
- package/dist/cli/templates/shared/llm-types.js +0 -109
- package/dist/cli/templates/workflows/aggregator.js +0 -101
- package/dist/cli/templates/workflows/ai-agent.js +0 -326
- package/dist/cli/templates/workflows/ai-chat.js +0 -167
- package/dist/cli/templates/workflows/ai-rag.js +0 -184
- package/dist/cli/templates/workflows/ai-react.js +0 -293
- package/dist/cli/templates/workflows/conditional.js +0 -139
- package/dist/cli/templates/workflows/error-handler.js +0 -145
- package/dist/cli/templates/workflows/foreach.js +0 -140
- package/dist/cli/templates/workflows/sequential.js +0 -200
- package/dist/cli/templates/workflows/webhook.js +0 -158
- package/dist/cli/utils/cli-helpers.d.ts +0 -44
- package/dist/cli/utils/cli-helpers.js +0 -99
- package/dist/cli/utils/logger.js +0 -126
- package/dist/cli/utils/parse-int-strict.js +0 -17
- package/dist/cli/utils/safe-write.js +0 -54
- package/dist/deployment/config/defaults.d.ts +0 -29
- package/dist/deployment/config/defaults.js +0 -98
- package/dist/deployment/config/loader.d.ts +0 -24
- package/dist/deployment/config/loader.js +0 -237
- package/dist/deployment/config/types.d.ts +0 -117
- package/dist/deployment/config/types.js +0 -5
- package/dist/deployment/core/adapters.d.ts +0 -66
- package/dist/deployment/core/adapters.js +0 -156
- package/dist/deployment/core/executor.d.ts +0 -62
- package/dist/deployment/core/executor.js +0 -197
- package/dist/deployment/core/formatters.d.ts +0 -42
- package/dist/deployment/core/formatters.js +0 -146
- package/dist/deployment/openapi/generator.d.ts +0 -146
- package/dist/deployment/openapi/generator.js +0 -347
- package/dist/deployment/openapi/schema-converter.d.ts +0 -49
- package/dist/deployment/openapi/schema-converter.js +0 -192
- package/dist/deployment/targets/base.js +0 -855
- package/dist/deployment/types.d.ts +0 -140
- package/dist/deployment/types.js +0 -8
- package/dist/diagram/ascii-renderer.js +0 -528
- package/dist/diagram/geometry.js +0 -1226
- package/dist/diagram/html-viewer.d.ts +0 -21
- package/dist/diagram/html-viewer.js +0 -1745
- package/dist/diagram/layout.js +0 -143
- package/dist/diagram/orthogonal-router.js +0 -458
- package/dist/diagram/renderer.d.ts +0 -3
- package/dist/diagram/renderer.js +0 -280
- package/dist/diagram/theme.js +0 -282
- package/dist/diagram/types.js +0 -2
- package/dist/diff/WorkflowDiffer.js +0 -429
- package/dist/diff/formatDiff.js +0 -239
- package/dist/diff/impact.js +0 -119
- package/dist/diff/types.js +0 -35
- package/dist/doc-metadata/extractors/annotations.js +0 -638
- package/dist/doc-metadata/extractors/cli-commands.js +0 -326
- package/dist/doc-metadata/extractors/core-metadata.js +0 -61
- package/dist/doc-metadata/extractors/error-codes.js +0 -372
- package/dist/doc-metadata/extractors/grammar-rules.js +0 -51
- package/dist/doc-metadata/extractors/mcp-tools.js +0 -705
- package/dist/doc-metadata/extractors/plugin-api.d.ts +0 -19
- package/dist/doc-metadata/extractors/plugin-api.js +0 -279
- package/dist/doc-metadata/types.js +0 -5
- package/dist/editor-completions/annotationValues.js +0 -146
- package/dist/editor-completions/contextParser.js +0 -410
- package/dist/editor-completions/dataTypes.js +0 -95
- package/dist/editor-completions/goToDefinition.js +0 -112
- package/dist/editor-completions/jsDocAnnotations.js +0 -359
- package/dist/editor-completions/modifierCompletions.js +0 -197
- package/dist/editor-completions/types.js +0 -8
- package/dist/export/index.js +0 -212
- package/dist/extensions/index.d.ts +0 -16
- package/dist/extensions/index.js +0 -17
- package/dist/friendly-errors.js +0 -761
- package/dist/function-like.js +0 -84
- package/dist/generator/async-detection.js +0 -56
- package/dist/generator/code-utils.js +0 -551
- package/dist/generator/compile-target-registry.d.ts +0 -20
- package/dist/generator/compile-target-registry.js +0 -20
- package/dist/generator/control-flow.js +0 -358
- package/dist/generator/dev-mode-registry.d.ts +0 -27
- package/dist/generator/dev-mode-registry.js +0 -20
- package/dist/generator/scope-function-generator.js +0 -397
- package/dist/generator/unified.js +0 -1831
- package/dist/generator.d.ts +0 -54
- package/dist/generator.js +0 -101
- package/dist/jsdoc-parser.d.ts +0 -377
- package/dist/jsdoc-parser.js +0 -1189
- package/dist/jsdoc-port-sync/constants.js +0 -103
- package/dist/jsdoc-port-sync/diff.js +0 -319
- package/dist/jsdoc-port-sync/port-parser.js +0 -579
- package/dist/jsdoc-port-sync/rename.js +0 -256
- package/dist/jsdoc-port-sync/signature-parser.js +0 -559
- package/dist/jsdoc-port-sync/sync.js +0 -653
- package/dist/marketplace/manifest.js +0 -194
- package/dist/marketplace/registry.js +0 -198
- package/dist/marketplace/types.js +0 -9
- package/dist/marketplace/validator.js +0 -150
- package/dist/mcp/agent-channel.d.ts +0 -35
- package/dist/mcp/agent-channel.js +0 -61
- package/dist/mcp/auto-registration.d.ts +0 -3
- package/dist/mcp/auto-registration.js +0 -62
- package/dist/mcp/debug-session.js +0 -25
- package/dist/mcp/index.d.ts +0 -11
- package/dist/mcp/index.js +0 -10
- package/dist/mcp/pack-tools.js +0 -59
- package/dist/mcp/prompts.js +0 -68
- package/dist/mcp/response-utils.js +0 -97
- package/dist/mcp/run-registry.d.ts +0 -29
- package/dist/mcp/run-registry.js +0 -24
- package/dist/mcp/server.js +0 -63
- package/dist/mcp/tools-context.js +0 -51
- package/dist/mcp/tools-debug.js +0 -451
- package/dist/mcp/tools-diagram.js +0 -97
- package/dist/mcp/tools-docs.js +0 -62
- package/dist/mcp/tools-export.js +0 -222
- package/dist/mcp/tools-marketplace.js +0 -132
- package/dist/mcp/tools-model.d.ts +0 -3
- package/dist/mcp/tools-model.js +0 -279
- package/dist/mcp/tools-pattern.d.ts +0 -3
- package/dist/mcp/tools-pattern.js +0 -604
- package/dist/mcp/tools-query.js +0 -377
- package/dist/mcp/tools-resources.js +0 -41
- package/dist/mcp/tools-template.js +0 -119
- package/dist/mcp/tools-workflow-run.d.ts +0 -40
- package/dist/mcp/tools-workflow-run.js +0 -150
- package/dist/mcp/types.js +0 -2
- package/dist/mcp/workflow-executor.js +0 -242
- package/dist/migration/registry.js +0 -29
- package/dist/node-types-generator.js +0 -139
- package/dist/parser/tag-registry.js +0 -57
- package/dist/parser.d.ts +0 -232
- package/dist/parser.js +0 -2500
- package/dist/plugin/PluginPanel.d.ts +0 -12
- package/dist/plugin/PluginPanel.js +0 -5
- package/dist/plugin/index.d.ts +0 -13
- package/dist/plugin/index.js +0 -14
- package/dist/plugin/types.d.ts +0 -75
- package/dist/plugin/types.js +0 -8
- package/dist/resolve-package-types.js +0 -123
- package/dist/runtime/CancellationError.js +0 -20
- package/dist/runtime/ExecutionContext.js +0 -280
- package/dist/runtime/builtin-functions.js +0 -549
- package/dist/runtime/checkpoint.d.ts +0 -84
- package/dist/runtime/checkpoint.js +0 -225
- package/dist/runtime/debug-controller.js +0 -247
- package/dist/runtime/events.js +0 -2
- package/dist/runtime/function-registry.js +0 -66
- package/dist/runtime/parameter-resolver.js +0 -113
- package/dist/server/types.js +0 -5
- package/dist/server/webhook-server.js +0 -269
- package/dist/server/workflow-registry.js +0 -202
- package/dist/shared-project.js +0 -28
- package/dist/sugar-optimizer.js +0 -498
- package/dist/testing/assertions.js +0 -127
- package/dist/testing/mock-approval.js +0 -98
- package/dist/testing/mock-llm.js +0 -119
- package/dist/testing/recorder.js +0 -70
- package/dist/testing/replayer.js +0 -143
- package/dist/testing/token-tracker.js +0 -94
- package/dist/type-checker.d.ts +0 -42
- package/dist/type-checker.js +0 -190
- package/dist/type-mappings.js +0 -131
- package/dist/types/branded-ports.d.ts +0 -151
- package/dist/types/branded-ports.js +0 -121
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.js +0 -5
- package/dist/types.d.ts +0 -139
- package/dist/types.js +0 -15
- package/dist/utils/error-utils.js +0 -27
- package/dist/utils/lru-cache.js +0 -40
- package/dist/utils/port-ordering.js +0 -81
- package/dist/utils/port-tag-utils.js +0 -41
- package/dist/utils/string-distance.js +0 -56
- package/dist/validation/agent-detection.js +0 -115
- package/dist/validation/agent-rules.js +0 -262
- package/dist/validation/design-rules.js +0 -377
- package/dist/validation/rule-registry.js +0 -37
- package/dist/validator.d.ts +0 -113
- package/dist/validator.js +0 -1631
- package/docs/reference/patterns.md +0 -159
- package/scripts/postinstall.cjs +0 -86
- /package/dist/{shared-project.d.ts → parser/shared-project.d.ts} +0 -0
- /package/dist/{friendly-errors.d.ts → validation/friendly-errors.d.ts} +0 -0
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent-Specific Validation Rules
|
|
3
|
-
*
|
|
4
|
-
* Custom TValidationRule implementations for agent/AI workflow patterns.
|
|
5
|
-
* These run AFTER the built-in validator via the api/validate.ts custom rules injection.
|
|
6
|
-
*
|
|
7
|
-
* Rules:
|
|
8
|
-
* 1. AGENT_LLM_MISSING_ERROR_HANDLER - LLM node's onFailure is unconnected
|
|
9
|
-
* 2. AGENT_UNGUARDED_TOOL_EXECUTOR - Tool executor has no human-approval upstream
|
|
10
|
-
* 3. AGENT_MISSING_MEMORY_IN_LOOP - Agent loop has LLM but no memory node
|
|
11
|
-
* 4. AGENT_LLM_NO_FALLBACK - LLM onFailure goes directly to Exit
|
|
12
|
-
* 5. AGENT_TOOL_NO_OUTPUT_HANDLING - Tool executor outputs are all unconnected
|
|
13
|
-
*/
|
|
14
|
-
import { detectNodeRole } from './agent-detection.js';
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
// Helpers
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
|
-
/** Resolve a node instance to its node type definition */
|
|
19
|
-
function resolveNodeType(ast, instance) {
|
|
20
|
-
return ast.nodeTypes.find((nt) => nt.name === instance.nodeType || nt.functionName === instance.nodeType);
|
|
21
|
-
}
|
|
22
|
-
/** Get all outgoing connections from a specific port of a node */
|
|
23
|
-
function getOutgoing(ast, nodeId, portName) {
|
|
24
|
-
return ast.connections.filter((c) => {
|
|
25
|
-
if (c.from.node !== nodeId)
|
|
26
|
-
return false;
|
|
27
|
-
if (portName && c.from.port !== portName)
|
|
28
|
-
return false;
|
|
29
|
-
return true;
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
/** Get all instances whose node type has a given agent role */
|
|
33
|
-
function getInstancesByRole(ast, role) {
|
|
34
|
-
const results = [];
|
|
35
|
-
for (const instance of ast.instances) {
|
|
36
|
-
const nt = resolveNodeType(ast, instance);
|
|
37
|
-
if (nt && detectNodeRole(nt) === role) {
|
|
38
|
-
results.push({ instance, nodeType: nt });
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return results;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Get all transitive upstream node IDs for a given node.
|
|
45
|
-
* Walks backwards through connections (BFS).
|
|
46
|
-
*/
|
|
47
|
-
function getUpstreamNodes(ast, nodeId) {
|
|
48
|
-
const visited = new Set();
|
|
49
|
-
const queue = [nodeId];
|
|
50
|
-
while (queue.length > 0) {
|
|
51
|
-
const current = queue.shift();
|
|
52
|
-
if (visited.has(current))
|
|
53
|
-
continue;
|
|
54
|
-
visited.add(current);
|
|
55
|
-
for (const conn of ast.connections) {
|
|
56
|
-
if (conn.to.node === current && !visited.has(conn.from.node)) {
|
|
57
|
-
queue.push(conn.from.node);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
visited.delete(nodeId); // exclude self
|
|
62
|
-
return visited;
|
|
63
|
-
}
|
|
64
|
-
// ---------------------------------------------------------------------------
|
|
65
|
-
// Rule 1: Missing Error Handler
|
|
66
|
-
// ---------------------------------------------------------------------------
|
|
67
|
-
/**
|
|
68
|
-
* LLM nodes should have their onFailure port connected.
|
|
69
|
-
* LLM calls are inherently unreliable (rate limits, timeouts, model errors).
|
|
70
|
-
* An unconnected onFailure means failures are silently swallowed.
|
|
71
|
-
*/
|
|
72
|
-
export const missingErrorHandlerRule = {
|
|
73
|
-
name: 'AGENT_LLM_MISSING_ERROR_HANDLER',
|
|
74
|
-
validate(ast) {
|
|
75
|
-
const errors = [];
|
|
76
|
-
const llmInstances = getInstancesByRole(ast, 'llm');
|
|
77
|
-
for (const { instance, nodeType } of llmInstances) {
|
|
78
|
-
// Only check if the node type has an onFailure port
|
|
79
|
-
if (!nodeType.hasFailurePort && !('onFailure' in nodeType.outputs)) {
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
const failureConnections = getOutgoing(ast, instance.id, 'onFailure');
|
|
83
|
-
if (failureConnections.length === 0) {
|
|
84
|
-
errors.push({
|
|
85
|
-
type: 'error',
|
|
86
|
-
code: 'AGENT_LLM_MISSING_ERROR_HANDLER',
|
|
87
|
-
message: `LLM node '${instance.id}' has no error handler — its onFailure port is unconnected. LLM calls can fail due to rate limits, timeouts, or model errors.`,
|
|
88
|
-
node: instance.id,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return errors;
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
// ---------------------------------------------------------------------------
|
|
96
|
-
// Rule 2: Unguarded Tool Executor
|
|
97
|
-
// ---------------------------------------------------------------------------
|
|
98
|
-
/**
|
|
99
|
-
* Tool executors that perform actions should have a human-approval node upstream.
|
|
100
|
-
* This is a warning, not an error — read-only tools may not need approval.
|
|
101
|
-
*/
|
|
102
|
-
export const unguardedToolExecutorRule = {
|
|
103
|
-
name: 'AGENT_UNGUARDED_TOOL_EXECUTOR',
|
|
104
|
-
validate(ast) {
|
|
105
|
-
const errors = [];
|
|
106
|
-
const toolInstances = getInstancesByRole(ast, 'tool-executor');
|
|
107
|
-
const approvalInstances = getInstancesByRole(ast, 'human-approval');
|
|
108
|
-
// If no tool executors, nothing to check
|
|
109
|
-
if (toolInstances.length === 0)
|
|
110
|
-
return errors;
|
|
111
|
-
// If no approval nodes at all, warn for every tool executor
|
|
112
|
-
if (approvalInstances.length === 0) {
|
|
113
|
-
for (const { instance } of toolInstances) {
|
|
114
|
-
errors.push({
|
|
115
|
-
type: 'warning',
|
|
116
|
-
code: 'AGENT_UNGUARDED_TOOL_EXECUTOR',
|
|
117
|
-
message: `Tool executor '${instance.id}' has no human approval gate upstream. If this node performs destructive actions, consider adding a human-approval node before it.`,
|
|
118
|
-
node: instance.id,
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
return errors;
|
|
122
|
-
}
|
|
123
|
-
// Check each tool executor for upstream approval
|
|
124
|
-
for (const { instance: toolInstance } of toolInstances) {
|
|
125
|
-
const upstream = getUpstreamNodes(ast, toolInstance.id);
|
|
126
|
-
const hasUpstreamApproval = approvalInstances.some(({ instance: approvalInstance }) => upstream.has(approvalInstance.id));
|
|
127
|
-
if (!hasUpstreamApproval) {
|
|
128
|
-
errors.push({
|
|
129
|
-
type: 'warning',
|
|
130
|
-
code: 'AGENT_UNGUARDED_TOOL_EXECUTOR',
|
|
131
|
-
message: `Tool executor '${toolInstance.id}' has no human approval gate upstream. If this node performs destructive actions, consider adding a human-approval node before it.`,
|
|
132
|
-
node: toolInstance.id,
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return errors;
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
// ---------------------------------------------------------------------------
|
|
140
|
-
// Rule 3: Missing Memory in Loop
|
|
141
|
-
// ---------------------------------------------------------------------------
|
|
142
|
-
/**
|
|
143
|
-
* An agent loop (scope) containing an LLM node but no memory node means
|
|
144
|
-
* the LLM loses context between iterations. This is almost always a bug.
|
|
145
|
-
*/
|
|
146
|
-
export const missingMemoryInLoopRule = {
|
|
147
|
-
name: 'AGENT_MISSING_MEMORY_IN_LOOP',
|
|
148
|
-
validate(ast) {
|
|
149
|
-
const errors = [];
|
|
150
|
-
if (!ast.scopes)
|
|
151
|
-
return errors;
|
|
152
|
-
for (const [scopeName, instanceIds] of Object.entries(ast.scopes)) {
|
|
153
|
-
let hasLlm = false;
|
|
154
|
-
let hasMemory = false;
|
|
155
|
-
for (const instId of instanceIds) {
|
|
156
|
-
const instance = ast.instances.find((i) => i.id === instId);
|
|
157
|
-
if (!instance)
|
|
158
|
-
continue;
|
|
159
|
-
const nt = resolveNodeType(ast, instance);
|
|
160
|
-
if (!nt)
|
|
161
|
-
continue;
|
|
162
|
-
const role = detectNodeRole(nt);
|
|
163
|
-
if (role === 'llm')
|
|
164
|
-
hasLlm = true;
|
|
165
|
-
if (role === 'memory')
|
|
166
|
-
hasMemory = true;
|
|
167
|
-
}
|
|
168
|
-
if (hasLlm && !hasMemory) {
|
|
169
|
-
errors.push({
|
|
170
|
-
type: 'warning',
|
|
171
|
-
code: 'AGENT_MISSING_MEMORY_IN_LOOP',
|
|
172
|
-
message: `Scope '${scopeName}' contains an LLM node but no conversation memory node. The LLM will lose context between loop iterations.`,
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
return errors;
|
|
177
|
-
},
|
|
178
|
-
};
|
|
179
|
-
// ---------------------------------------------------------------------------
|
|
180
|
-
// Rule 4: LLM Without Fallback
|
|
181
|
-
// ---------------------------------------------------------------------------
|
|
182
|
-
/**
|
|
183
|
-
* An LLM node whose onFailure goes directly to Exit.onFailure means
|
|
184
|
-
* any LLM error immediately aborts the workflow. Consider a retry or fallback.
|
|
185
|
-
*/
|
|
186
|
-
export const llmWithoutFallbackRule = {
|
|
187
|
-
name: 'AGENT_LLM_NO_FALLBACK',
|
|
188
|
-
validate(ast) {
|
|
189
|
-
const errors = [];
|
|
190
|
-
const llmInstances = getInstancesByRole(ast, 'llm');
|
|
191
|
-
for (const { instance, nodeType } of llmInstances) {
|
|
192
|
-
if (!nodeType.hasFailurePort && !('onFailure' in nodeType.outputs)) {
|
|
193
|
-
continue;
|
|
194
|
-
}
|
|
195
|
-
const failureConnections = getOutgoing(ast, instance.id, 'onFailure');
|
|
196
|
-
// If unconnected, Rule 1 handles it — skip here
|
|
197
|
-
if (failureConnections.length === 0)
|
|
198
|
-
continue;
|
|
199
|
-
// Check if ALL failure connections go directly to Exit
|
|
200
|
-
const allToExit = failureConnections.every((c) => c.to.node === 'Exit');
|
|
201
|
-
if (allToExit) {
|
|
202
|
-
errors.push({
|
|
203
|
-
type: 'warning',
|
|
204
|
-
code: 'AGENT_LLM_NO_FALLBACK',
|
|
205
|
-
message: `LLM node '${instance.id}' routes failures directly to Exit. Consider adding a retry node or fallback LLM provider for resilience.`,
|
|
206
|
-
node: instance.id,
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
return errors;
|
|
211
|
-
},
|
|
212
|
-
};
|
|
213
|
-
// ---------------------------------------------------------------------------
|
|
214
|
-
// Rule 5: Tool Executor No Output Handling
|
|
215
|
-
// ---------------------------------------------------------------------------
|
|
216
|
-
/**
|
|
217
|
-
* A tool executor whose non-STEP output ports are all unconnected means
|
|
218
|
-
* tool results are computed but never used — likely a wiring mistake.
|
|
219
|
-
*/
|
|
220
|
-
export const toolNoOutputHandlingRule = {
|
|
221
|
-
name: 'AGENT_TOOL_NO_OUTPUT_HANDLING',
|
|
222
|
-
validate(ast) {
|
|
223
|
-
const errors = [];
|
|
224
|
-
const toolInstances = getInstancesByRole(ast, 'tool-executor');
|
|
225
|
-
const stepPorts = new Set(['onSuccess', 'onFailure', 'execute']);
|
|
226
|
-
for (const { instance, nodeType } of toolInstances) {
|
|
227
|
-
const dataPorts = Object.keys(nodeType.outputs).filter((p) => !stepPorts.has(p));
|
|
228
|
-
// If no data ports, nothing to check
|
|
229
|
-
if (dataPorts.length === 0)
|
|
230
|
-
continue;
|
|
231
|
-
const hasAnyConnected = dataPorts.some((port) => getOutgoing(ast, instance.id, port).length > 0);
|
|
232
|
-
if (!hasAnyConnected) {
|
|
233
|
-
errors.push({
|
|
234
|
-
type: 'warning',
|
|
235
|
-
code: 'AGENT_TOOL_NO_OUTPUT_HANDLING',
|
|
236
|
-
message: `Tool executor '${instance.id}' has no data output ports connected. Tool results (${dataPorts.join(', ')}) are being discarded.`,
|
|
237
|
-
node: instance.id,
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
return errors;
|
|
242
|
-
},
|
|
243
|
-
};
|
|
244
|
-
// ---------------------------------------------------------------------------
|
|
245
|
-
// Public API
|
|
246
|
-
// ---------------------------------------------------------------------------
|
|
247
|
-
/** All agent validation rules */
|
|
248
|
-
export const agentValidationRules = [
|
|
249
|
-
missingErrorHandlerRule,
|
|
250
|
-
unguardedToolExecutorRule,
|
|
251
|
-
missingMemoryInLoopRule,
|
|
252
|
-
llmWithoutFallbackRule,
|
|
253
|
-
toolNoOutputHandlingRule,
|
|
254
|
-
];
|
|
255
|
-
/**
|
|
256
|
-
* Get all agent validation rules.
|
|
257
|
-
* Convenience function for passing to validateWorkflow().
|
|
258
|
-
*/
|
|
259
|
-
export function getAgentValidationRules() {
|
|
260
|
-
return agentValidationRules;
|
|
261
|
-
}
|
|
262
|
-
//# sourceMappingURL=agent-rules.js.map
|
|
@@ -1,377 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Design Quality Validation Rules
|
|
3
|
-
*
|
|
4
|
-
* Deterministic, AST-inspectable rules that catch common workflow design problems.
|
|
5
|
-
* A workflow can compile fine and still be poorly designed: missing error paths,
|
|
6
|
-
* unbounded retries, fan-out without fan-in, dead-end branches.
|
|
7
|
-
*
|
|
8
|
-
* All rules are warnings or info. None block compilation.
|
|
9
|
-
* Users can suppress any with @suppress.
|
|
10
|
-
*
|
|
11
|
-
* Rules:
|
|
12
|
-
* 1. DESIGN_ASYNC_NO_ERROR_PATH - Async node has no onFailure connection
|
|
13
|
-
* 2. DESIGN_SCOPE_NO_FAILURE_EXIT - Scope has no failure path out
|
|
14
|
-
* 3. DESIGN_UNBOUNDED_RETRY - Retry scope has no visible attempt limit
|
|
15
|
-
* 4. DESIGN_FANOUT_NO_FANIN - Fan-out to step targets with no merge back
|
|
16
|
-
* 5. DESIGN_EXIT_DATA_UNREACHABLE - Exit data port has no connection and no pull-execution provider
|
|
17
|
-
* 6. DESIGN_PULL_CANDIDATE - Node with no incoming step but consumed data outputs
|
|
18
|
-
* 7. DESIGN_PULL_UNUSED - Node marked pullExecution but no downstream reads its output
|
|
19
|
-
*/
|
|
20
|
-
// ---------------------------------------------------------------------------
|
|
21
|
-
// Helpers
|
|
22
|
-
// ---------------------------------------------------------------------------
|
|
23
|
-
function resolveNodeType(ast, instance) {
|
|
24
|
-
return ast.nodeTypes.find((nt) => nt.name === instance.nodeType || nt.functionName === instance.nodeType);
|
|
25
|
-
}
|
|
26
|
-
function getOutgoing(ast, nodeId, portName) {
|
|
27
|
-
return ast.connections.filter((c) => {
|
|
28
|
-
if (c.from.node !== nodeId)
|
|
29
|
-
return false;
|
|
30
|
-
if (portName && c.from.port !== portName)
|
|
31
|
-
return false;
|
|
32
|
-
return true;
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
function getIncoming(ast, nodeId, portName) {
|
|
36
|
-
return ast.connections.filter((c) => {
|
|
37
|
-
if (c.to.node !== nodeId)
|
|
38
|
-
return false;
|
|
39
|
-
if (portName && c.to.port !== portName)
|
|
40
|
-
return false;
|
|
41
|
-
return true;
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
const STEP_PORTS = new Set(['execute', 'onSuccess', 'onFailure', 'start', 'success', 'failure']);
|
|
45
|
-
function isStepPort(portName, portDef) {
|
|
46
|
-
if (portDef?.dataType === 'STEP')
|
|
47
|
-
return true;
|
|
48
|
-
return STEP_PORTS.has(portName);
|
|
49
|
-
}
|
|
50
|
-
// ---------------------------------------------------------------------------
|
|
51
|
-
// Rule 1: Async Node Missing Error Path
|
|
52
|
-
// ---------------------------------------------------------------------------
|
|
53
|
-
/**
|
|
54
|
-
* Async nodes (network, disk, AI) can fail. If onFailure is unconnected,
|
|
55
|
-
* failures may be silently swallowed or crash the workflow.
|
|
56
|
-
*/
|
|
57
|
-
export const asyncNoErrorPathRule = {
|
|
58
|
-
name: 'DESIGN_ASYNC_NO_ERROR_PATH',
|
|
59
|
-
validate(ast) {
|
|
60
|
-
const errors = [];
|
|
61
|
-
for (const instance of ast.instances) {
|
|
62
|
-
const nt = resolveNodeType(ast, instance);
|
|
63
|
-
if (!nt)
|
|
64
|
-
continue;
|
|
65
|
-
if (!nt.isAsync)
|
|
66
|
-
continue;
|
|
67
|
-
if (!nt.hasFailurePort)
|
|
68
|
-
continue;
|
|
69
|
-
const failureConns = getOutgoing(ast, instance.id, 'onFailure');
|
|
70
|
-
if (failureConns.length === 0) {
|
|
71
|
-
errors.push({
|
|
72
|
-
type: 'warning',
|
|
73
|
-
code: 'DESIGN_ASYNC_NO_ERROR_PATH',
|
|
74
|
-
message: `Async node '${instance.id}' has no onFailure connection. Async operations (network, disk, AI) can fail, and errors will be silently lost.`,
|
|
75
|
-
node: instance.id,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return errors;
|
|
80
|
-
},
|
|
81
|
-
};
|
|
82
|
-
// ---------------------------------------------------------------------------
|
|
83
|
-
// Rule 2: Scope With No Failure Exit
|
|
84
|
-
// ---------------------------------------------------------------------------
|
|
85
|
-
/**
|
|
86
|
-
* A scope (retry/forEach) with no failure path out means if every iteration
|
|
87
|
-
* fails, execution stalls with no way to surface the error.
|
|
88
|
-
*/
|
|
89
|
-
export const scopeNoFailureExitRule = {
|
|
90
|
-
name: 'DESIGN_SCOPE_NO_FAILURE_EXIT',
|
|
91
|
-
validate(ast) {
|
|
92
|
-
const errors = [];
|
|
93
|
-
for (const instance of ast.instances) {
|
|
94
|
-
const nt = resolveNodeType(ast, instance);
|
|
95
|
-
if (!nt)
|
|
96
|
-
continue;
|
|
97
|
-
// Only check nodes that define scopes
|
|
98
|
-
const scopeNames = nt.scopes ?? (nt.scope ? [nt.scope] : []);
|
|
99
|
-
if (scopeNames.length === 0)
|
|
100
|
-
continue;
|
|
101
|
-
// A scope parent needs an onFailure or failure port connected
|
|
102
|
-
if (!nt.hasFailurePort)
|
|
103
|
-
continue;
|
|
104
|
-
const failureConns = getOutgoing(ast, instance.id, 'onFailure');
|
|
105
|
-
// Also check 'failure' port used in some scope patterns
|
|
106
|
-
const failureConns2 = getOutgoing(ast, instance.id, 'failure');
|
|
107
|
-
if (failureConns.length === 0 && failureConns2.length === 0) {
|
|
108
|
-
errors.push({
|
|
109
|
-
type: 'warning',
|
|
110
|
-
code: 'DESIGN_SCOPE_NO_FAILURE_EXIT',
|
|
111
|
-
message: `Scope node '${instance.id}' has no failure path out. If all iterations fail, execution stalls with no error surfaced.`,
|
|
112
|
-
node: instance.id,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return errors;
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
// ---------------------------------------------------------------------------
|
|
120
|
-
// Rule 3: Unbounded Retry
|
|
121
|
-
// ---------------------------------------------------------------------------
|
|
122
|
-
/**
|
|
123
|
-
* A scope used as a retry loop without a visible attempt limit could loop
|
|
124
|
-
* indefinitely. Check if the parent node type name/function suggests retry
|
|
125
|
-
* semantics but lacks a maxAttempts-like input or config.
|
|
126
|
-
*/
|
|
127
|
-
export const unboundedRetryRule = {
|
|
128
|
-
name: 'DESIGN_UNBOUNDED_RETRY',
|
|
129
|
-
validate(ast) {
|
|
130
|
-
const errors = [];
|
|
131
|
-
const retryPatterns = /retry|repeat|loop|poll|backoff/i;
|
|
132
|
-
for (const instance of ast.instances) {
|
|
133
|
-
const nt = resolveNodeType(ast, instance);
|
|
134
|
-
if (!nt)
|
|
135
|
-
continue;
|
|
136
|
-
const scopeNames = nt.scopes ?? (nt.scope ? [nt.scope] : []);
|
|
137
|
-
if (scopeNames.length === 0)
|
|
138
|
-
continue;
|
|
139
|
-
// Only flag nodes that look like retry patterns
|
|
140
|
-
const nameHint = `${nt.name} ${nt.functionName} ${nt.label ?? ''}`;
|
|
141
|
-
if (!retryPatterns.test(nameHint))
|
|
142
|
-
continue;
|
|
143
|
-
// Check for a maxAttempts/retries/limit input port
|
|
144
|
-
const limitInputs = Object.keys(nt.inputs).filter((p) => /max|limit|attempts|retries|count/i.test(p));
|
|
145
|
-
if (limitInputs.length === 0) {
|
|
146
|
-
errors.push({
|
|
147
|
-
type: 'warning',
|
|
148
|
-
code: 'DESIGN_UNBOUNDED_RETRY',
|
|
149
|
-
message: `Scope node '${instance.id}' appears to be a retry loop but has no visible attempt limit input. This could loop indefinitely.`,
|
|
150
|
-
node: instance.id,
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return errors;
|
|
155
|
-
},
|
|
156
|
-
};
|
|
157
|
-
// ---------------------------------------------------------------------------
|
|
158
|
-
// Rule 4: Fan-Out Without Fan-In
|
|
159
|
-
// ---------------------------------------------------------------------------
|
|
160
|
-
/**
|
|
161
|
-
* A node that fans out via step connections to multiple targets, but none of
|
|
162
|
-
* those paths merge back to a shared downstream node. Data from parallel
|
|
163
|
-
* branches may be lost.
|
|
164
|
-
*/
|
|
165
|
-
export const fanoutNoFaninRule = {
|
|
166
|
-
name: 'DESIGN_FANOUT_NO_FANIN',
|
|
167
|
-
validate(ast) {
|
|
168
|
-
const errors = [];
|
|
169
|
-
for (const instance of ast.instances) {
|
|
170
|
-
const nt = resolveNodeType(ast, instance);
|
|
171
|
-
// Find step output connections (excluding data ports)
|
|
172
|
-
const stepOutConns = getOutgoing(ast, instance.id).filter((c) => {
|
|
173
|
-
if (nt) {
|
|
174
|
-
const portDef = nt.outputs[c.from.port];
|
|
175
|
-
return isStepPort(c.from.port, portDef);
|
|
176
|
-
}
|
|
177
|
-
return isStepPort(c.from.port);
|
|
178
|
-
});
|
|
179
|
-
// Get unique step targets (excluding Exit, which is a natural terminus)
|
|
180
|
-
const stepTargets = [...new Set(stepOutConns.map((c) => c.to.node))].filter((n) => n !== 'Exit');
|
|
181
|
-
// Need at least 3 targets to be a meaningful fan-out (2 is just success/failure branching)
|
|
182
|
-
if (stepTargets.length < 3)
|
|
183
|
-
continue;
|
|
184
|
-
// For each target, walk forward to find all reachable nodes
|
|
185
|
-
const reachableSets = stepTargets.map((target) => getReachableNodes(ast, target));
|
|
186
|
-
// Check if any node appears in multiple reachable sets (fan-in point)
|
|
187
|
-
const allNodes = new Set();
|
|
188
|
-
let hasMerge = false;
|
|
189
|
-
for (const reachable of reachableSets) {
|
|
190
|
-
for (const node of reachable) {
|
|
191
|
-
if (allNodes.has(node)) {
|
|
192
|
-
hasMerge = true;
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
if (hasMerge)
|
|
197
|
-
break;
|
|
198
|
-
for (const node of reachable) {
|
|
199
|
-
allNodes.add(node);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
// Also check if any target has a merge strategy on its input ports
|
|
203
|
-
if (!hasMerge) {
|
|
204
|
-
for (const target of stepTargets) {
|
|
205
|
-
const targetInst = ast.instances.find((i) => i.id === target);
|
|
206
|
-
if (!targetInst)
|
|
207
|
-
continue;
|
|
208
|
-
const targetNt = resolveNodeType(ast, targetInst);
|
|
209
|
-
if (!targetNt)
|
|
210
|
-
continue;
|
|
211
|
-
const hasMergePort = Object.values(targetNt.inputs).some((p) => p.mergeStrategy);
|
|
212
|
-
if (hasMergePort) {
|
|
213
|
-
hasMerge = true;
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
if (!hasMerge) {
|
|
219
|
-
errors.push({
|
|
220
|
-
type: 'warning',
|
|
221
|
-
code: 'DESIGN_FANOUT_NO_FANIN',
|
|
222
|
-
message: `Node '${instance.id}' fans out to ${stepTargets.length} step targets (${stepTargets.join(', ')}) but those paths never merge back. Data from parallel branches may be lost.`,
|
|
223
|
-
node: instance.id,
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return errors;
|
|
228
|
-
},
|
|
229
|
-
};
|
|
230
|
-
/** Walk forward from a node to find all reachable nodes (BFS via step connections). */
|
|
231
|
-
function getReachableNodes(ast, startNode) {
|
|
232
|
-
const visited = new Set();
|
|
233
|
-
const queue = [startNode];
|
|
234
|
-
while (queue.length > 0) {
|
|
235
|
-
const current = queue.shift();
|
|
236
|
-
if (visited.has(current))
|
|
237
|
-
continue;
|
|
238
|
-
visited.add(current);
|
|
239
|
-
for (const conn of ast.connections) {
|
|
240
|
-
if (conn.from.node === current && !visited.has(conn.to.node)) {
|
|
241
|
-
queue.push(conn.to.node);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
return visited;
|
|
246
|
-
}
|
|
247
|
-
// ---------------------------------------------------------------------------
|
|
248
|
-
// Rule 5: Exit Data Port Unreachable (Pull-Execution Aware)
|
|
249
|
-
// ---------------------------------------------------------------------------
|
|
250
|
-
/**
|
|
251
|
-
* Extends UNREACHABLE_EXIT_PORT to consider pull execution. An exit data port
|
|
252
|
-
* is fine if a pull-executed node is wired to provide it, even without a
|
|
253
|
-
* step path.
|
|
254
|
-
*/
|
|
255
|
-
export const exitDataUnreachableRule = {
|
|
256
|
-
name: 'DESIGN_EXIT_DATA_UNREACHABLE',
|
|
257
|
-
validate(ast) {
|
|
258
|
-
const errors = [];
|
|
259
|
-
const stepPorts = new Set(['onSuccess', 'onFailure']);
|
|
260
|
-
for (const [portName, portDef] of Object.entries(ast.exitPorts)) {
|
|
261
|
-
if (portDef.dataType === 'STEP')
|
|
262
|
-
continue; // Step ports handled by core validator
|
|
263
|
-
const incoming = getIncoming(ast, 'Exit', portName);
|
|
264
|
-
if (incoming.length > 0)
|
|
265
|
-
continue; // Has a direct connection, fine
|
|
266
|
-
// Check if a pull-executed node provides this port
|
|
267
|
-
const hasPullProvider = ast.instances.some((inst) => {
|
|
268
|
-
const isPull = inst.config?.pullExecution ||
|
|
269
|
-
resolveNodeType(ast, inst)?.defaultConfig?.pullExecution;
|
|
270
|
-
if (!isPull)
|
|
271
|
-
return false;
|
|
272
|
-
// Check if this pull node has a data output connected to Exit.<portName>
|
|
273
|
-
return getOutgoing(ast, inst.id).some((c) => c.to.node === 'Exit' && c.to.port === portName);
|
|
274
|
-
});
|
|
275
|
-
if (!hasPullProvider) {
|
|
276
|
-
errors.push({
|
|
277
|
-
type: 'warning',
|
|
278
|
-
code: 'DESIGN_EXIT_DATA_UNREACHABLE',
|
|
279
|
-
message: `Exit port '${portName}' has no incoming connection and no pull-execution node provides it. The output will be undefined.`,
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
return errors;
|
|
284
|
-
},
|
|
285
|
-
};
|
|
286
|
-
// ---------------------------------------------------------------------------
|
|
287
|
-
// Rule 6: Pull Execution Candidate
|
|
288
|
-
// ---------------------------------------------------------------------------
|
|
289
|
-
/**
|
|
290
|
-
* A node with no incoming step connections but data outputs consumed downstream
|
|
291
|
-
* is a candidate for pullExecution. Without it, the node may never execute.
|
|
292
|
-
*/
|
|
293
|
-
export const pullCandidateRule = {
|
|
294
|
-
name: 'DESIGN_PULL_CANDIDATE',
|
|
295
|
-
validate(ast) {
|
|
296
|
-
const errors = [];
|
|
297
|
-
for (const instance of ast.instances) {
|
|
298
|
-
const nt = resolveNodeType(ast, instance);
|
|
299
|
-
if (!nt)
|
|
300
|
-
continue;
|
|
301
|
-
// Skip if already has pullExecution configured
|
|
302
|
-
if (instance.config?.pullExecution || nt.defaultConfig?.pullExecution)
|
|
303
|
-
continue;
|
|
304
|
-
// Skip expression nodes (they are already pull-executed by nature)
|
|
305
|
-
if (nt.expression)
|
|
306
|
-
continue;
|
|
307
|
-
// Check for incoming step connections
|
|
308
|
-
const incomingStep = getIncoming(ast, instance.id).filter((c) => {
|
|
309
|
-
const portDef = nt.inputs[c.to.port];
|
|
310
|
-
return isStepPort(c.to.port, portDef);
|
|
311
|
-
});
|
|
312
|
-
if (incomingStep.length > 0)
|
|
313
|
-
continue; // Has step trigger, not a candidate
|
|
314
|
-
// Check if any data outputs are consumed downstream
|
|
315
|
-
const dataOutputs = Object.keys(nt.outputs).filter((p) => !STEP_PORTS.has(p));
|
|
316
|
-
const hasConsumedOutput = dataOutputs.some((port) => getOutgoing(ast, instance.id, port).length > 0);
|
|
317
|
-
if (hasConsumedOutput) {
|
|
318
|
-
errors.push({
|
|
319
|
-
type: 'warning',
|
|
320
|
-
code: 'DESIGN_PULL_CANDIDATE',
|
|
321
|
-
message: `Node '${instance.id}' has no incoming step connection but its data outputs are consumed downstream. Consider adding [pullExecution: execute] so it executes on demand.`,
|
|
322
|
-
node: instance.id,
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
return errors;
|
|
327
|
-
},
|
|
328
|
-
};
|
|
329
|
-
// ---------------------------------------------------------------------------
|
|
330
|
-
// Rule 7: Unused Pull Execution
|
|
331
|
-
// ---------------------------------------------------------------------------
|
|
332
|
-
/**
|
|
333
|
-
* A node marked with pullExecution but no downstream node reads its data output.
|
|
334
|
-
* The node will never execute since pull execution requires a consumer.
|
|
335
|
-
*/
|
|
336
|
-
export const pullUnusedRule = {
|
|
337
|
-
name: 'DESIGN_PULL_UNUSED',
|
|
338
|
-
validate(ast) {
|
|
339
|
-
const errors = [];
|
|
340
|
-
for (const instance of ast.instances) {
|
|
341
|
-
const nt = resolveNodeType(ast, instance);
|
|
342
|
-
if (!nt)
|
|
343
|
-
continue;
|
|
344
|
-
const isPull = instance.config?.pullExecution || nt.defaultConfig?.pullExecution;
|
|
345
|
-
if (!isPull)
|
|
346
|
-
continue;
|
|
347
|
-
// Check if any data output ports are connected
|
|
348
|
-
const dataOutputs = Object.keys(nt.outputs).filter((p) => !STEP_PORTS.has(p));
|
|
349
|
-
const hasConnectedOutput = dataOutputs.some((port) => getOutgoing(ast, instance.id, port).length > 0);
|
|
350
|
-
if (!hasConnectedOutput) {
|
|
351
|
-
errors.push({
|
|
352
|
-
type: 'warning',
|
|
353
|
-
code: 'DESIGN_PULL_UNUSED',
|
|
354
|
-
message: `Node '${instance.id}' is marked with pullExecution but no downstream node reads its data output. It will never execute.`,
|
|
355
|
-
node: instance.id,
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
return errors;
|
|
360
|
-
},
|
|
361
|
-
};
|
|
362
|
-
// ---------------------------------------------------------------------------
|
|
363
|
-
// Public API
|
|
364
|
-
// ---------------------------------------------------------------------------
|
|
365
|
-
export const designValidationRules = [
|
|
366
|
-
asyncNoErrorPathRule,
|
|
367
|
-
scopeNoFailureExitRule,
|
|
368
|
-
unboundedRetryRule,
|
|
369
|
-
fanoutNoFaninRule,
|
|
370
|
-
exitDataUnreachableRule,
|
|
371
|
-
pullCandidateRule,
|
|
372
|
-
pullUnusedRule,
|
|
373
|
-
];
|
|
374
|
-
export function getDesignValidationRules() {
|
|
375
|
-
return designValidationRules;
|
|
376
|
-
}
|
|
377
|
-
//# sourceMappingURL=design-rules.js.map
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ValidationRuleRegistry: dynamic dispatch for pack-contributed validation rules.
|
|
3
|
-
*
|
|
4
|
-
* Replaces the hardcoded `isCICDWorkflow() ? getCICDValidationRules() : []`
|
|
5
|
-
* pattern. Each registered rule set has a detect predicate and a lazy rule loader.
|
|
6
|
-
* The validate API calls `getApplicableRules(ast)` and merges results.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Registry for dynamically contributed validation rule sets.
|
|
10
|
-
* Core rule sets (like CI/CD) register themselves at startup.
|
|
11
|
-
* Pack-contributed rule sets are loaded from manifests.
|
|
12
|
-
*/
|
|
13
|
-
export class ValidationRuleRegistry {
|
|
14
|
-
ruleSets = [];
|
|
15
|
-
/** Register a validation rule set. */
|
|
16
|
-
register(ruleSet) {
|
|
17
|
-
this.ruleSets.push(ruleSet);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Get all validation rules applicable to the given workflow AST.
|
|
21
|
-
* Runs each registered detect predicate and collects rules from matching sets.
|
|
22
|
-
*/
|
|
23
|
-
getApplicableRules(ast) {
|
|
24
|
-
const rules = [];
|
|
25
|
-
for (const ruleSet of this.ruleSets) {
|
|
26
|
-
if (ruleSet.detect(ast)) {
|
|
27
|
-
rules.push(...ruleSet.getRules());
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return rules;
|
|
31
|
-
}
|
|
32
|
-
/** Get the number of registered rule sets. */
|
|
33
|
-
get size() {
|
|
34
|
-
return this.ruleSets.length;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=rule-registry.js.map
|