@synergenius/flow-weaver 0.33.1 → 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 -244
- 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 -89498
- 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 +22 -29
- 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 +15 -51
- package/dist/diagram/process-view.d.ts +79 -0
- package/dist/diagram/spine.d.ts +25 -0
- package/dist/diagram/theme.d.ts +3 -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 -1267
- package/dist/diagram/html-viewer.d.ts +0 -21
- package/dist/diagram/html-viewer.js +0 -1689
- package/dist/diagram/layout.js +0 -143
- package/dist/diagram/orthogonal-router.js +0 -568
- package/dist/diagram/renderer.d.ts +0 -3
- package/dist/diagram/renderer.js +0 -266
- 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
package/dist/sugar-optimizer.js
DELETED
|
@@ -1,498 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sugar Optimizer - Auto-detect @path routes from connections.
|
|
3
|
-
*
|
|
4
|
-
* Analyzes control-flow connections and identifies routes through the graph
|
|
5
|
-
* that can be expressed as @path macros. @connect is the escape hatch for
|
|
6
|
-
* connections that @path can't cover.
|
|
7
|
-
*/
|
|
8
|
-
import { isControlFlowPort } from './constants.js';
|
|
9
|
-
// =============================================================================
|
|
10
|
-
// Path Validation (for stale macro detection during round-trip)
|
|
11
|
-
// =============================================================================
|
|
12
|
-
/**
|
|
13
|
-
* Validate that a @path macro's connections still exist in the actual
|
|
14
|
-
* connection set. Checks both control-flow AND data connections (scope
|
|
15
|
-
* walking). Also checks that all step nodes exist as instances (or are
|
|
16
|
-
* Start/Exit).
|
|
17
|
-
*
|
|
18
|
-
* Returns true if the path is still valid, false if it should be dropped.
|
|
19
|
-
*
|
|
20
|
-
* When nodeTypes/startPorts/exitPorts are provided, data connections are
|
|
21
|
-
* validated using the same scope-walking algorithm that expandPathMacros
|
|
22
|
-
* uses. Without them, only control-flow is checked (legacy behavior).
|
|
23
|
-
*/
|
|
24
|
-
export function validatePathMacro(path, connections, instances, nodeTypes, startPorts, exitPorts) {
|
|
25
|
-
const instanceIds = new Set(instances.map(inst => inst.id));
|
|
26
|
-
// Check all step nodes exist as instances (or are Start/Exit)
|
|
27
|
-
for (const step of path.steps) {
|
|
28
|
-
if (step.node === 'Start' || step.node === 'Exit')
|
|
29
|
-
continue;
|
|
30
|
-
if (!instanceIds.has(step.node))
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
// Build a quick lookup set for unscoped connections
|
|
34
|
-
const connKeys = new Set();
|
|
35
|
-
for (const conn of connections) {
|
|
36
|
-
if (!conn.from.scope && !conn.to.scope) {
|
|
37
|
-
connKeys.add(`${conn.from.node}.${conn.from.port}->${conn.to.node}.${conn.to.port}`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
// For each consecutive pair, compute expected control-flow connection
|
|
41
|
-
for (let i = 0; i < path.steps.length - 1; i++) {
|
|
42
|
-
const current = path.steps[i];
|
|
43
|
-
const next = path.steps[i + 1];
|
|
44
|
-
const route = current.route || 'ok';
|
|
45
|
-
let expectedKey;
|
|
46
|
-
if (current.node === 'Start') {
|
|
47
|
-
expectedKey = `Start.execute->${next.node}.execute`;
|
|
48
|
-
}
|
|
49
|
-
else if (next.node === 'Exit') {
|
|
50
|
-
if (route === 'fail') {
|
|
51
|
-
expectedKey = `${current.node}.onFailure->Exit.onFailure`;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
expectedKey = `${current.node}.onSuccess->Exit.onSuccess`;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
if (route === 'fail') {
|
|
59
|
-
expectedKey = `${current.node}.onFailure->${next.node}.execute`;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
expectedKey = `${current.node}.onSuccess->${next.node}.execute`;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (!connKeys.has(expectedKey)) {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// Validate data connections (scope walking) — same algorithm as
|
|
70
|
-
// expandPathMacros and detectSugarPatterns Step 3.
|
|
71
|
-
// If any data connection that the path would auto-generate is missing,
|
|
72
|
-
// the path is stale (a connection was explicitly removed).
|
|
73
|
-
if (nodeTypes && startPorts && exitPorts) {
|
|
74
|
-
const instanceMap = new Map(instances.map(inst => [inst.id, inst]));
|
|
75
|
-
const nodeTypeMap = new Map();
|
|
76
|
-
for (const nt of nodeTypes) {
|
|
77
|
-
nodeTypeMap.set(nt.name, nt);
|
|
78
|
-
if (nt.functionName !== nt.name) {
|
|
79
|
-
nodeTypeMap.set(nt.functionName, nt);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
const getNodeType = (nodeId) => {
|
|
83
|
-
const inst = instanceMap.get(nodeId);
|
|
84
|
-
if (!inst)
|
|
85
|
-
return undefined;
|
|
86
|
-
return nodeTypeMap.get(inst.nodeType);
|
|
87
|
-
};
|
|
88
|
-
const getOutputPorts = (nodeId) => {
|
|
89
|
-
if (nodeId === 'Start')
|
|
90
|
-
return startPorts;
|
|
91
|
-
const nt = getNodeType(nodeId);
|
|
92
|
-
return nt?.outputs || {};
|
|
93
|
-
};
|
|
94
|
-
const getInputPorts = (nodeId) => {
|
|
95
|
-
if (nodeId === 'Exit')
|
|
96
|
-
return exitPorts;
|
|
97
|
-
const nt = getNodeType(nodeId);
|
|
98
|
-
return nt?.inputs || {};
|
|
99
|
-
};
|
|
100
|
-
const { steps } = path;
|
|
101
|
-
for (let i = 0; i < steps.length - 1; i++) {
|
|
102
|
-
const nextId = steps[i + 1].node;
|
|
103
|
-
if (nextId === 'Exit')
|
|
104
|
-
continue;
|
|
105
|
-
const nextInputs = getInputPorts(nextId);
|
|
106
|
-
for (const [inputName] of Object.entries(nextInputs)) {
|
|
107
|
-
if (isControlFlowPort(inputName))
|
|
108
|
-
continue;
|
|
109
|
-
// Walk backward through path steps to find nearest ancestor with same-name output
|
|
110
|
-
for (let j = i; j >= 0; j--) {
|
|
111
|
-
const ancestorId = steps[j].node;
|
|
112
|
-
const ancestorOutputs = getOutputPorts(ancestorId);
|
|
113
|
-
if (inputName in ancestorOutputs && !isControlFlowPort(inputName)) {
|
|
114
|
-
const key = `${ancestorId}.${inputName}->${nextId}.${inputName}`;
|
|
115
|
-
if (!connKeys.has(key)) {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Filter existing macros, removing any @path macros whose connections
|
|
128
|
-
* (control-flow AND data) no longer exist in the connection set.
|
|
129
|
-
* Non-path macros are passed through unchanged.
|
|
130
|
-
*/
|
|
131
|
-
export function filterStaleMacros(macros, connections, instances, nodeTypes, startPorts, exitPorts) {
|
|
132
|
-
const instanceIds = new Set(instances.map(i => i.id));
|
|
133
|
-
instanceIds.add('Start');
|
|
134
|
-
instanceIds.add('Exit');
|
|
135
|
-
// Build connection key set for quick lookup
|
|
136
|
-
const connKeys = new Set();
|
|
137
|
-
for (const conn of connections) {
|
|
138
|
-
if (!conn.from.scope && !conn.to.scope) {
|
|
139
|
-
connKeys.add(`${conn.from.node}.${conn.from.port}->${conn.to.node}.${conn.to.port}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return macros.filter(macro => {
|
|
143
|
-
if (macro.type === 'path')
|
|
144
|
-
return validatePathMacro(macro, connections, instances, nodeTypes, startPorts, exitPorts);
|
|
145
|
-
if (macro.type === 'fanOut') {
|
|
146
|
-
if (!instanceIds.has(macro.source.node))
|
|
147
|
-
return false;
|
|
148
|
-
// Validate that all fanOut connections still exist
|
|
149
|
-
return macro.targets.every(t => {
|
|
150
|
-
if (!instanceIds.has(t.node))
|
|
151
|
-
return false;
|
|
152
|
-
const targetPort = t.port ?? macro.source.port;
|
|
153
|
-
return connKeys.has(`${macro.source.node}.${macro.source.port}->${t.node}.${targetPort}`);
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
if (macro.type === 'fanIn') {
|
|
157
|
-
if (!instanceIds.has(macro.target.node))
|
|
158
|
-
return false;
|
|
159
|
-
// Validate that all fanIn connections still exist
|
|
160
|
-
return macro.sources.every(s => {
|
|
161
|
-
if (!instanceIds.has(s.node))
|
|
162
|
-
return false;
|
|
163
|
-
const sourcePort = s.port ?? macro.target.port;
|
|
164
|
-
return connKeys.has(`${s.node}.${sourcePort}->${macro.target.node}.${macro.target.port}`);
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
if (macro.type === 'coerce') {
|
|
168
|
-
// Validate that both coerce connections still exist:
|
|
169
|
-
// source -> coerceInstance.value AND coerceInstance.result -> target
|
|
170
|
-
const toCoerce = `${macro.source.node}.${macro.source.port}->${macro.instanceId}.value`;
|
|
171
|
-
const fromCoerce = `${macro.instanceId}.result->${macro.target.node}.${macro.target.port}`;
|
|
172
|
-
return connKeys.has(toCoerce) && connKeys.has(fromCoerce);
|
|
173
|
-
}
|
|
174
|
-
return true;
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Detect @path routes from a set of connections.
|
|
179
|
-
*
|
|
180
|
-
* Algorithm:
|
|
181
|
-
* 1. Build control-flow adjacency from unscoped connections
|
|
182
|
-
* 2. DFS from Start to enumerate all Start-to-Exit routes
|
|
183
|
-
* 3. Validate data connections for each candidate (scope walking safety)
|
|
184
|
-
* 4. Greedy route selection to cover all control-flow edges
|
|
185
|
-
*/
|
|
186
|
-
export function detectSugarPatterns(connections, instances, existingMacros, nodeTypes, startPorts, exitPorts) {
|
|
187
|
-
const coveredByExistingMacro = buildExistingMacroCoverage(existingMacros);
|
|
188
|
-
// Filter out scoped connections — never optimize those
|
|
189
|
-
const unscopedConns = connections.filter((c) => !c.from.scope && !c.to.scope);
|
|
190
|
-
// Build lookup helpers
|
|
191
|
-
const instanceMap = new Map(instances.map((inst) => [inst.id, inst]));
|
|
192
|
-
const nodeTypeMap = new Map();
|
|
193
|
-
for (const nt of nodeTypes) {
|
|
194
|
-
nodeTypeMap.set(nt.name, nt);
|
|
195
|
-
if (nt.functionName !== nt.name) {
|
|
196
|
-
nodeTypeMap.set(nt.functionName, nt);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
const getNodeType = (nodeId) => {
|
|
200
|
-
const inst = instanceMap.get(nodeId);
|
|
201
|
-
if (!inst)
|
|
202
|
-
return undefined;
|
|
203
|
-
return nodeTypeMap.get(inst.nodeType);
|
|
204
|
-
};
|
|
205
|
-
const getOutputPorts = (nodeId) => {
|
|
206
|
-
if (nodeId === 'Start')
|
|
207
|
-
return startPorts;
|
|
208
|
-
const nt = getNodeType(nodeId);
|
|
209
|
-
return nt?.outputs || {};
|
|
210
|
-
};
|
|
211
|
-
const getInputPorts = (nodeId) => {
|
|
212
|
-
if (nodeId === 'Exit')
|
|
213
|
-
return exitPorts;
|
|
214
|
-
const nt = getNodeType(nodeId);
|
|
215
|
-
return nt?.inputs || {};
|
|
216
|
-
};
|
|
217
|
-
// ---- Step 1: Build control-flow adjacency ----
|
|
218
|
-
// adj[node] = { ok?: targetNode, fail?: targetNode }
|
|
219
|
-
// Only single-target edges are pathable (multi-target needs @connect)
|
|
220
|
-
const adj = new Map();
|
|
221
|
-
const multiTargetPorts = new Set(); // "node.port" keys with multiple targets
|
|
222
|
-
for (const conn of unscopedConns) {
|
|
223
|
-
const { from, to } = conn;
|
|
224
|
-
let edgeNode;
|
|
225
|
-
let edgeRoute;
|
|
226
|
-
// Start.execute -> X.execute
|
|
227
|
-
if (from.node === 'Start' && from.port === 'execute' && to.port === 'execute') {
|
|
228
|
-
edgeNode = 'Start';
|
|
229
|
-
edgeRoute = 'ok';
|
|
230
|
-
}
|
|
231
|
-
// X.onSuccess -> Exit.onSuccess
|
|
232
|
-
else if (to.node === 'Exit' && from.port === 'onSuccess' && to.port === 'onSuccess') {
|
|
233
|
-
edgeNode = from.node;
|
|
234
|
-
edgeRoute = 'ok';
|
|
235
|
-
}
|
|
236
|
-
// X.onFailure -> Exit.onFailure
|
|
237
|
-
else if (to.node === 'Exit' && from.port === 'onFailure' && to.port === 'onFailure') {
|
|
238
|
-
edgeNode = from.node;
|
|
239
|
-
edgeRoute = 'fail';
|
|
240
|
-
}
|
|
241
|
-
// X.onSuccess -> Y.execute
|
|
242
|
-
else if (from.port === 'onSuccess' && to.port === 'execute') {
|
|
243
|
-
edgeNode = from.node;
|
|
244
|
-
edgeRoute = 'ok';
|
|
245
|
-
}
|
|
246
|
-
// X.onFailure -> Y.execute
|
|
247
|
-
else if (from.port === 'onFailure' && to.port === 'execute') {
|
|
248
|
-
edgeNode = from.node;
|
|
249
|
-
edgeRoute = 'fail';
|
|
250
|
-
}
|
|
251
|
-
if (edgeNode === undefined || edgeRoute === undefined)
|
|
252
|
-
continue;
|
|
253
|
-
const portKey = `${edgeNode}.${edgeRoute}`;
|
|
254
|
-
if (!adj.has(edgeNode)) {
|
|
255
|
-
adj.set(edgeNode, {});
|
|
256
|
-
}
|
|
257
|
-
const entry = adj.get(edgeNode);
|
|
258
|
-
if (entry[edgeRoute] !== undefined && entry[edgeRoute] !== to.node) {
|
|
259
|
-
// Multiple targets for same port — not pathable
|
|
260
|
-
multiTargetPorts.add(portKey);
|
|
261
|
-
delete entry[edgeRoute];
|
|
262
|
-
}
|
|
263
|
-
else if (!multiTargetPorts.has(portKey)) {
|
|
264
|
-
entry[edgeRoute] = to.node;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
// ---- Step 2: DFS to enumerate Start-to-Exit routes ----
|
|
268
|
-
const candidateRoutes = [];
|
|
269
|
-
const MAX_ROUTES = 20; // Sanity limit for complex graphs
|
|
270
|
-
function dfs(node, path, visited) {
|
|
271
|
-
if (candidateRoutes.length >= MAX_ROUTES)
|
|
272
|
-
return;
|
|
273
|
-
if (node === 'Exit') {
|
|
274
|
-
path.push({ node: 'Exit' });
|
|
275
|
-
candidateRoutes.push([...path]);
|
|
276
|
-
path.pop();
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
if (visited.has(node))
|
|
280
|
-
return; // Cycle protection
|
|
281
|
-
visited.add(node);
|
|
282
|
-
const edges = adj.get(node);
|
|
283
|
-
if (!edges) {
|
|
284
|
-
visited.delete(node);
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
// Try ok edge
|
|
288
|
-
if (edges.ok && !coveredByExistingMacro.has(edges.ok === 'Exit' ? '' : edges.ok)) {
|
|
289
|
-
const step = node === 'Start' ? { node: 'Start' } : { node };
|
|
290
|
-
path.push(step);
|
|
291
|
-
dfs(edges.ok, path, visited);
|
|
292
|
-
path.pop();
|
|
293
|
-
}
|
|
294
|
-
// Try fail edge
|
|
295
|
-
if (edges.fail && !coveredByExistingMacro.has(edges.fail === 'Exit' ? '' : edges.fail)) {
|
|
296
|
-
const step = { node, route: 'fail' };
|
|
297
|
-
path.push(step);
|
|
298
|
-
dfs(edges.fail, path, visited);
|
|
299
|
-
path.pop();
|
|
300
|
-
}
|
|
301
|
-
visited.delete(node);
|
|
302
|
-
}
|
|
303
|
-
// Only start DFS if Start is not covered by existing macros
|
|
304
|
-
if (!coveredByExistingMacro.has('Start')) {
|
|
305
|
-
dfs('Start', [], new Set());
|
|
306
|
-
}
|
|
307
|
-
// ---- Step 3: Validate data connections for each candidate ----
|
|
308
|
-
// Simulate scope walking and verify expected data connections exist
|
|
309
|
-
const connKeySet = new Set();
|
|
310
|
-
for (const conn of unscopedConns) {
|
|
311
|
-
connKeySet.add(`${conn.from.node}.${conn.from.port}->${conn.to.node}.${conn.to.port}`);
|
|
312
|
-
}
|
|
313
|
-
const validRoutes = candidateRoutes.filter(route => {
|
|
314
|
-
// Path needs at least 2 steps
|
|
315
|
-
if (route.length < 2)
|
|
316
|
-
return false;
|
|
317
|
-
// Simulate scope walking for data ports
|
|
318
|
-
for (let i = 0; i < route.length - 1; i++) {
|
|
319
|
-
const nextId = route[i + 1].node;
|
|
320
|
-
if (nextId === 'Exit')
|
|
321
|
-
continue;
|
|
322
|
-
const nextInputs = getInputPorts(nextId);
|
|
323
|
-
for (const [inputName] of Object.entries(nextInputs)) {
|
|
324
|
-
if (isControlFlowPort(inputName))
|
|
325
|
-
continue;
|
|
326
|
-
// Walk backward through route steps to find nearest ancestor with same-name output
|
|
327
|
-
for (let j = i; j >= 0; j--) {
|
|
328
|
-
const ancestorId = route[j].node;
|
|
329
|
-
const ancestorOutputs = getOutputPorts(ancestorId);
|
|
330
|
-
if (inputName in ancestorOutputs && !isControlFlowPort(inputName)) {
|
|
331
|
-
// Scope walking would create this connection — verify it exists
|
|
332
|
-
const key = `${ancestorId}.${inputName}->${nextId}.${inputName}`;
|
|
333
|
-
if (!connKeySet.has(key)) {
|
|
334
|
-
return false; // Path would create a connection that doesn't exist
|
|
335
|
-
}
|
|
336
|
-
break;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
return true;
|
|
342
|
-
});
|
|
343
|
-
const allCFEdges = new Set();
|
|
344
|
-
for (const conn of unscopedConns) {
|
|
345
|
-
if (isControlFlowPort(conn.from.port) || conn.from.port === 'execute') {
|
|
346
|
-
if (isControlFlowPort(conn.to.port) || conn.to.port === 'execute') {
|
|
347
|
-
// Only include edges that are pathable (single target)
|
|
348
|
-
const portKey = conn.from.node === 'Start' ? 'Start.ok'
|
|
349
|
-
: conn.from.port === 'onSuccess' ? `${conn.from.node}.ok`
|
|
350
|
-
: conn.from.port === 'onFailure' ? `${conn.from.node}.fail`
|
|
351
|
-
: null;
|
|
352
|
-
if (portKey && !multiTargetPorts.has(portKey)) {
|
|
353
|
-
allCFEdges.add(`${conn.from.node}.${conn.from.port}->${conn.to.node}.${conn.to.port}`);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
// Remove edges already covered by existing macros
|
|
359
|
-
for (const macro of existingMacros) {
|
|
360
|
-
if (macro.type === 'path') {
|
|
361
|
-
for (let i = 0; i < macro.steps.length - 1; i++) {
|
|
362
|
-
const current = macro.steps[i];
|
|
363
|
-
const next = macro.steps[i + 1];
|
|
364
|
-
const route = current.route || 'ok';
|
|
365
|
-
let key;
|
|
366
|
-
if (current.node === 'Start') {
|
|
367
|
-
key = `Start.execute->${next.node}.execute`;
|
|
368
|
-
}
|
|
369
|
-
else if (next.node === 'Exit') {
|
|
370
|
-
const fromPort = route === 'fail' ? 'onFailure' : 'onSuccess';
|
|
371
|
-
const toPort = route === 'fail' ? 'onFailure' : 'onSuccess';
|
|
372
|
-
key = `${current.node}.${fromPort}->Exit.${toPort}`;
|
|
373
|
-
}
|
|
374
|
-
else {
|
|
375
|
-
const fromPort = route === 'fail' ? 'onFailure' : 'onSuccess';
|
|
376
|
-
key = `${current.node}.${fromPort}->${next.node}.execute`;
|
|
377
|
-
}
|
|
378
|
-
allCFEdges.delete(key);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
// Compute edges covered by each candidate route
|
|
383
|
-
function getRouteEdges(route) {
|
|
384
|
-
const edges = [];
|
|
385
|
-
for (let i = 0; i < route.length - 1; i++) {
|
|
386
|
-
const current = route[i];
|
|
387
|
-
const next = route[i + 1];
|
|
388
|
-
const routeVal = current.route || 'ok';
|
|
389
|
-
let key;
|
|
390
|
-
if (current.node === 'Start') {
|
|
391
|
-
key = `Start.execute->${next.node}.execute`;
|
|
392
|
-
}
|
|
393
|
-
else if (next.node === 'Exit') {
|
|
394
|
-
const fromPort = routeVal === 'fail' ? 'onFailure' : 'onSuccess';
|
|
395
|
-
const toPort = routeVal === 'fail' ? 'onFailure' : 'onSuccess';
|
|
396
|
-
key = `${current.node}.${fromPort}->Exit.${toPort}`;
|
|
397
|
-
}
|
|
398
|
-
else {
|
|
399
|
-
const fromPort = routeVal === 'fail' ? 'onFailure' : 'onSuccess';
|
|
400
|
-
key = `${current.node}.${fromPort}->${next.node}.execute`;
|
|
401
|
-
}
|
|
402
|
-
edges.push(key);
|
|
403
|
-
}
|
|
404
|
-
return edges;
|
|
405
|
-
}
|
|
406
|
-
// Sort by length (longest first) for greedy selection
|
|
407
|
-
const sortedRoutes = [...validRoutes].sort((a, b) => b.length - a.length);
|
|
408
|
-
const selectedPaths = [];
|
|
409
|
-
const coveredEdges = new Set();
|
|
410
|
-
for (const route of sortedRoutes) {
|
|
411
|
-
const routeEdges = getRouteEdges(route);
|
|
412
|
-
const newEdges = routeEdges.filter(e => allCFEdges.has(e) && !coveredEdges.has(e));
|
|
413
|
-
if (newEdges.length > 0) {
|
|
414
|
-
selectedPaths.push({
|
|
415
|
-
type: 'path',
|
|
416
|
-
steps: route.map(s => s.route ? { node: s.node, route: s.route } : { node: s.node }),
|
|
417
|
-
});
|
|
418
|
-
for (const e of routeEdges) {
|
|
419
|
-
coveredEdges.add(e);
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
return { paths: selectedPaths };
|
|
424
|
-
}
|
|
425
|
-
/**
|
|
426
|
-
* Check if a connection is covered by detected sugar and should be omitted from @connect output.
|
|
427
|
-
*/
|
|
428
|
-
export function isConnectionCoveredBySugar(conn, sugar) {
|
|
429
|
-
// Scoped connections are never covered
|
|
430
|
-
if (conn.from.scope || conn.to.scope)
|
|
431
|
-
return false;
|
|
432
|
-
for (const path of sugar.paths) {
|
|
433
|
-
const steps = path.steps;
|
|
434
|
-
const fromIdx = steps.findIndex(s => s.node === conn.from.node);
|
|
435
|
-
const toIdx = steps.findIndex(s => s.node === conn.to.node);
|
|
436
|
-
if (fromIdx === -1 || toIdx === -1 || fromIdx >= toIdx)
|
|
437
|
-
continue;
|
|
438
|
-
// Control flow: check consecutive pairs
|
|
439
|
-
if (toIdx === fromIdx + 1) {
|
|
440
|
-
const route = steps[fromIdx].route || 'ok';
|
|
441
|
-
// Start.execute -> next.execute
|
|
442
|
-
if (conn.from.node === 'Start' && conn.from.port === 'execute' && conn.to.port === 'execute')
|
|
443
|
-
return true;
|
|
444
|
-
// To Exit: route determines which Exit port
|
|
445
|
-
if (conn.to.node === 'Exit') {
|
|
446
|
-
if (route === 'fail' && conn.from.port === 'onFailure' && conn.to.port === 'onFailure')
|
|
447
|
-
return true;
|
|
448
|
-
if (route === 'ok' && conn.from.port === 'onSuccess' && conn.to.port === 'onSuccess')
|
|
449
|
-
return true;
|
|
450
|
-
}
|
|
451
|
-
// Normal: onSuccess/onFailure -> execute
|
|
452
|
-
if (route === 'fail' && conn.from.port === 'onFailure' && conn.to.port === 'execute')
|
|
453
|
-
return true;
|
|
454
|
-
if (route === 'ok' && conn.from.port === 'onSuccess' && conn.to.port === 'execute')
|
|
455
|
-
return true;
|
|
456
|
-
}
|
|
457
|
-
// Data: same-name non-control-flow, from before to, to is not Exit
|
|
458
|
-
if (conn.to.node !== 'Exit' &&
|
|
459
|
-
!isControlFlowPort(conn.from.port) &&
|
|
460
|
-
!isControlFlowPort(conn.to.port) &&
|
|
461
|
-
conn.from.port === conn.to.port) {
|
|
462
|
-
return true;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
return false;
|
|
466
|
-
}
|
|
467
|
-
/**
|
|
468
|
-
* Build a set of node IDs that are already covered by user-written macros.
|
|
469
|
-
* These nodes should not be included in auto-detected patterns.
|
|
470
|
-
*/
|
|
471
|
-
function buildExistingMacroCoverage(macros) {
|
|
472
|
-
const covered = new Set();
|
|
473
|
-
for (const macro of macros) {
|
|
474
|
-
if (macro.type === 'map') {
|
|
475
|
-
covered.add(macro.instanceId);
|
|
476
|
-
covered.add(macro.childId);
|
|
477
|
-
}
|
|
478
|
-
else if (macro.type === 'path') {
|
|
479
|
-
for (const step of macro.steps) {
|
|
480
|
-
covered.add(step.node);
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
else if (macro.type === 'fanOut') {
|
|
484
|
-
covered.add(macro.source.node);
|
|
485
|
-
for (const t of macro.targets) {
|
|
486
|
-
covered.add(t.node);
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
else if (macro.type === 'fanIn') {
|
|
490
|
-
for (const s of macro.sources) {
|
|
491
|
-
covered.add(s.node);
|
|
492
|
-
}
|
|
493
|
-
covered.add(macro.target.node);
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
return covered;
|
|
497
|
-
}
|
|
498
|
-
//# sourceMappingURL=sugar-optimizer.js.map
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fluent assertion helpers for agent workflow test results.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* ```typescript
|
|
6
|
-
* import { expectAgentResult } from 'flow-weaver/testing';
|
|
7
|
-
*
|
|
8
|
-
* const result = await myAgentWorkflow(true, { query: 'hello' });
|
|
9
|
-
*
|
|
10
|
-
* expectAgentResult(result)
|
|
11
|
-
* .toHaveSucceeded()
|
|
12
|
-
* .toHaveOutput('answer', 'hello world')
|
|
13
|
-
* .toNotHaveOutput('error');
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* Create fluent assertions for an agent workflow result.
|
|
18
|
-
*
|
|
19
|
-
* @param result - The workflow result object (record of output port values)
|
|
20
|
-
*/
|
|
21
|
-
export function expectAgentResult(result) {
|
|
22
|
-
const assertions = {
|
|
23
|
-
toHaveSucceeded() {
|
|
24
|
-
if (result.onSuccess !== true) {
|
|
25
|
-
throw new Error(`Expected workflow to succeed (onSuccess === true), but got onSuccess=${result.onSuccess}, onFailure=${result.onFailure}`);
|
|
26
|
-
}
|
|
27
|
-
return assertions;
|
|
28
|
-
},
|
|
29
|
-
toHaveFailed() {
|
|
30
|
-
if (result.onFailure !== true) {
|
|
31
|
-
throw new Error(`Expected workflow to fail (onFailure === true), but got onSuccess=${result.onSuccess}, onFailure=${result.onFailure}`);
|
|
32
|
-
}
|
|
33
|
-
return assertions;
|
|
34
|
-
},
|
|
35
|
-
toHaveOutput(portName, expectedValue) {
|
|
36
|
-
if (!(portName in result)) {
|
|
37
|
-
throw new Error(`Expected output port '${portName}' to exist, but result only has: ${Object.keys(result).join(', ')}`);
|
|
38
|
-
}
|
|
39
|
-
if (result[portName] === null || result[portName] === undefined) {
|
|
40
|
-
throw new Error(`Expected output port '${portName}' to have a value, but got ${result[portName]}`);
|
|
41
|
-
}
|
|
42
|
-
if (expectedValue !== undefined) {
|
|
43
|
-
const actual = result[portName];
|
|
44
|
-
const expected = expectedValue;
|
|
45
|
-
if (typeof expected === 'object' && expected !== null) {
|
|
46
|
-
// Deep comparison for objects
|
|
47
|
-
if (JSON.stringify(actual) !== JSON.stringify(expected)) {
|
|
48
|
-
throw new Error(`Expected output '${portName}' to equal ${JSON.stringify(expected)}, but got ${JSON.stringify(actual)}`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else if (actual !== expected) {
|
|
52
|
-
throw new Error(`Expected output '${portName}' to equal ${JSON.stringify(expected)}, but got ${JSON.stringify(actual)}`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return assertions;
|
|
56
|
-
},
|
|
57
|
-
toNotHaveOutput(portName) {
|
|
58
|
-
if (portName in result && result[portName] !== null && result[portName] !== undefined) {
|
|
59
|
-
throw new Error(`Expected output port '${portName}' to be absent or null, but got ${JSON.stringify(result[portName])}`);
|
|
60
|
-
}
|
|
61
|
-
return assertions;
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
return assertions;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Create fluent assertions for a mock LLM provider's recorded calls.
|
|
68
|
-
*
|
|
69
|
-
* @param mockLlm - The mock provider to assert against
|
|
70
|
-
*/
|
|
71
|
-
export function expectMockLlm(mockLlm) {
|
|
72
|
-
const assertions = {
|
|
73
|
-
toHaveBeenCalledTimes(n) {
|
|
74
|
-
const actual = mockLlm.getCallCount();
|
|
75
|
-
if (actual !== n) {
|
|
76
|
-
throw new Error(`Expected LLM to be called ${n} time(s), but was called ${actual} time(s)`);
|
|
77
|
-
}
|
|
78
|
-
return assertions;
|
|
79
|
-
},
|
|
80
|
-
toHaveUsedTool(toolName) {
|
|
81
|
-
const calls = mockLlm.getCalls();
|
|
82
|
-
const found = calls.some((call) => call.response.toolCalls.some((tc) => tc.name === toolName));
|
|
83
|
-
if (!found) {
|
|
84
|
-
const usedTools = [
|
|
85
|
-
...new Set(calls.flatMap((c) => c.response.toolCalls.map((tc) => tc.name))),
|
|
86
|
-
];
|
|
87
|
-
throw new Error(`Expected tool '${toolName}' to have been used, but only these tools were used: ${usedTools.length > 0 ? usedTools.join(', ') : '(none)'}`);
|
|
88
|
-
}
|
|
89
|
-
return assertions;
|
|
90
|
-
},
|
|
91
|
-
toNotHaveUsedTool(toolName) {
|
|
92
|
-
const calls = mockLlm.getCalls();
|
|
93
|
-
const found = calls.some((call) => call.response.toolCalls.some((tc) => tc.name === toolName));
|
|
94
|
-
if (found) {
|
|
95
|
-
throw new Error(`Expected tool '${toolName}' to NOT have been used, but it was`);
|
|
96
|
-
}
|
|
97
|
-
return assertions;
|
|
98
|
-
},
|
|
99
|
-
toHaveTokenUsageBelow(maxTokens) {
|
|
100
|
-
const total = mockLlm.getTotalTokens();
|
|
101
|
-
if (total > maxTokens) {
|
|
102
|
-
throw new Error(`Expected token usage below ${maxTokens}, but total was ${total}`);
|
|
103
|
-
}
|
|
104
|
-
return assertions;
|
|
105
|
-
},
|
|
106
|
-
toHaveReceivedMessage(pattern, callIndex) {
|
|
107
|
-
const calls = mockLlm.getCalls();
|
|
108
|
-
const targetCalls = callIndex !== undefined ? [calls[callIndex]] : calls;
|
|
109
|
-
if (callIndex !== undefined && !calls[callIndex]) {
|
|
110
|
-
throw new Error(`Expected call at index ${callIndex}, but only ${calls.length} calls were recorded`);
|
|
111
|
-
}
|
|
112
|
-
const found = targetCalls.some((call) => call?.messages.some((msg) => {
|
|
113
|
-
if (typeof pattern === 'string') {
|
|
114
|
-
return msg.content.includes(pattern);
|
|
115
|
-
}
|
|
116
|
-
return pattern.test(msg.content);
|
|
117
|
-
}));
|
|
118
|
-
if (!found) {
|
|
119
|
-
const scope = callIndex !== undefined ? `call #${callIndex}` : 'any call';
|
|
120
|
-
throw new Error(`Expected ${scope} to contain a message matching ${pattern}, but none matched`);
|
|
121
|
-
}
|
|
122
|
-
return assertions;
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
return assertions;
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=assertions.js.map
|