agentic-qe 3.8.13 → 3.9.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/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +48 -0
- package/dist/adapters/a2ui/integration/agui-sync.js +2 -1
- package/dist/audit/witness-chain.js +15 -3
- package/dist/boot/fast-paths.d.ts +24 -0
- package/dist/boot/fast-paths.js +43 -0
- package/dist/boot/parallel-prefetch.d.ts +26 -0
- package/dist/boot/parallel-prefetch.js +36 -0
- package/dist/cli/bundle.js +12 -9431
- package/dist/cli/chunks/adapter-WBR5NXS3.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-PQYB7VRU.js +2 -0
- package/dist/cli/chunks/agent-handler-QDAB5NQS.js +33 -0
- package/dist/cli/chunks/aqe-learning-engine-TK4JQCGT.js +2 -0
- package/dist/cli/chunks/audit-S7JUYYVP.js +3 -0
- package/dist/cli/chunks/base-2WXOSMBQ.js +2 -0
- package/dist/cli/chunks/better-sqlite3-7KY2RDXO.js +2 -0
- package/dist/cli/chunks/brain-handler-PPEGDCN4.js +68 -0
- package/dist/cli/chunks/branch-enumerator-XK4V5W7L.js +7 -0
- package/dist/cli/chunks/browser-PALA5PL3.js +4 -0
- package/dist/cli/chunks/browser-workflow-42F7GK5T.js +2 -0
- package/dist/cli/chunks/chunk-24FKIJNC.js +15 -0
- package/dist/cli/chunks/chunk-263XS447.js +2 -0
- package/dist/cli/chunks/chunk-2BZFNEN2.js +4 -0
- package/dist/cli/chunks/chunk-2E5NQNSU.js +180 -0
- package/dist/cli/chunks/chunk-2I7J3O6V.js +2 -0
- package/dist/cli/chunks/chunk-3ADGXLTM.js +14 -0
- package/dist/cli/chunks/chunk-3IHG3WOY.js +12 -0
- package/dist/cli/chunks/chunk-3IUNFTIF.js +2 -0
- package/dist/cli/chunks/chunk-3JPRUND5.js +2 -0
- package/dist/cli/chunks/chunk-3NZLZHJI.js +2 -0
- package/dist/cli/chunks/chunk-3THRQEZ2.js +95 -0
- package/dist/cli/chunks/chunk-3ZOONQG6.js +2 -0
- package/dist/cli/chunks/chunk-4B6NCELM.js +2 -0
- package/dist/cli/chunks/chunk-4I2IOUS4.js +2 -0
- package/dist/cli/chunks/chunk-4VBTXZRM.js +2 -0
- package/dist/cli/chunks/chunk-4VUPRTVX.js +3 -0
- package/dist/cli/chunks/chunk-4YOMLWEK.js +70 -0
- package/dist/cli/chunks/chunk-4YS3IJ45.js +2 -0
- package/dist/cli/chunks/chunk-5SKGFSKD.js +2 -0
- package/dist/cli/chunks/chunk-5T2ZQWKF.js +27 -0
- package/dist/cli/chunks/chunk-62ADTHV7.js +2 -0
- package/dist/cli/chunks/chunk-6EOS7KX2.js +2 -0
- package/dist/cli/chunks/chunk-6SVX4DJC.js +6 -0
- package/dist/cli/chunks/chunk-72WOAVK6.js +2 -0
- package/dist/cli/chunks/chunk-7R6YMLVS.js +3 -0
- package/dist/cli/chunks/chunk-7VDBAVTY.js +2 -0
- package/dist/cli/chunks/chunk-AFLLQ5PP.js +15 -0
- package/dist/cli/chunks/chunk-AKE543X2.js +2 -0
- package/dist/cli/chunks/chunk-B36CDR4U.js +2 -0
- package/dist/cli/chunks/chunk-B6LLWYQ6.js +2 -0
- package/dist/cli/chunks/chunk-BDIEMZ22.js +91 -0
- package/dist/cli/chunks/chunk-BGXNSCXX.js +4 -0
- package/dist/cli/chunks/chunk-BLBRY5UD.js +2 -0
- package/dist/cli/chunks/chunk-BPWXXEH2.js +3029 -0
- package/dist/cli/chunks/chunk-BR26T7ZS.js +180 -0
- package/dist/cli/chunks/chunk-BTREG4IW.js +2 -0
- package/dist/cli/chunks/chunk-BULKFVYX.js +2 -0
- package/dist/cli/chunks/chunk-BXAXGEFC.js +24 -0
- package/dist/cli/chunks/chunk-CL6POIX4.js +2 -0
- package/dist/cli/chunks/chunk-CS2KS7LP.js +2 -0
- package/dist/cli/chunks/chunk-CWFB6BSA.js +316 -0
- package/dist/cli/chunks/chunk-DRT3WKQW.js +2 -0
- package/dist/cli/chunks/chunk-EHDQJQ6Y.js +27 -0
- package/dist/cli/chunks/chunk-ESVQ6MEB.js +2 -0
- package/dist/cli/chunks/chunk-FEKY7T6Q.js +2 -0
- package/dist/cli/chunks/chunk-FGA7VIFR.js +7 -0
- package/dist/cli/chunks/chunk-FIA6X7UL.js +2 -0
- package/dist/cli/chunks/chunk-GAOJV3OX.js +2 -0
- package/dist/cli/chunks/chunk-GKNNSCLC.js +5 -0
- package/dist/cli/chunks/chunk-GPQ57KA4.js +2 -0
- package/dist/cli/chunks/chunk-GRUUQAR6.js +2 -0
- package/dist/cli/chunks/chunk-HRO6OZQD.js +2 -0
- package/dist/cli/chunks/chunk-HY6PMO5W.js +66 -0
- package/dist/cli/chunks/chunk-IAV2JMIX.js +167 -0
- package/dist/cli/chunks/chunk-IFNIIK34.js +21 -0
- package/dist/cli/chunks/chunk-IGJPMN4I.js +3 -0
- package/dist/cli/chunks/chunk-J3KWWR6Z.js +1 -0
- package/dist/cli/chunks/chunk-JBANAPWG.js +2 -0
- package/dist/cli/chunks/chunk-JJO7Y4H3.js +604 -0
- package/dist/cli/chunks/chunk-JRYGQO2W.js +2 -0
- package/dist/cli/chunks/chunk-JXM26HEE.js +2 -0
- package/dist/cli/chunks/chunk-JZSDOIXA.js +2 -0
- package/dist/cli/chunks/chunk-KP5NUODU.js +3 -0
- package/dist/cli/chunks/chunk-LHJQD2VU.js +750 -0
- package/dist/cli/chunks/chunk-LNQIY6BP.js +2 -0
- package/dist/cli/chunks/chunk-MDUHYUHF.js +2 -0
- package/dist/cli/chunks/chunk-MV6CMOJQ.js +65 -0
- package/dist/cli/chunks/chunk-MZOFWJTM.js +2 -0
- package/dist/cli/chunks/chunk-N2NS2PHA.js +45 -0
- package/dist/cli/chunks/chunk-N4TL73TH.js +314 -0
- package/dist/cli/chunks/chunk-N5UXCLFI.js +2 -0
- package/dist/cli/chunks/chunk-NZ2VCPN4.js +2 -0
- package/dist/cli/chunks/chunk-OF4D7MYI.js +2 -0
- package/dist/cli/chunks/chunk-OI5NGQO2.js +2 -0
- package/dist/cli/chunks/chunk-OLHKGP35.js +2 -0
- package/dist/cli/chunks/chunk-QOVHWZEP.js +1 -0
- package/dist/cli/chunks/chunk-RFSN6IDA.js +79 -0
- package/dist/cli/chunks/chunk-RTGGL7D7.js +4 -0
- package/dist/cli/chunks/chunk-RU5WAHB7.js +3 -0
- package/dist/cli/chunks/chunk-SUSEVMZT.js +2 -0
- package/dist/cli/chunks/chunk-TLHP5EII.js +2 -0
- package/dist/cli/chunks/chunk-TWUWL5EJ.js +2 -0
- package/dist/cli/chunks/chunk-U5RN7YQW.js +2 -0
- package/dist/cli/chunks/chunk-UFUVUO3J.js +2 -0
- package/dist/cli/chunks/chunk-UQHYFOBX.js +16 -0
- package/dist/cli/chunks/chunk-VOS4NQSF.js +2 -0
- package/dist/cli/chunks/chunk-VSVXUTJN.js +256 -0
- package/dist/cli/chunks/chunk-WBQSXPBI.js +2 -0
- package/dist/cli/chunks/chunk-WGMPEW2T.js +2 -0
- package/dist/cli/chunks/chunk-WIEC7VKK.js +2 -0
- package/dist/cli/chunks/chunk-WJ3DLOXF.js +14 -0
- package/dist/cli/chunks/chunk-X3KI6JOY.js +9 -0
- package/dist/cli/chunks/chunk-X5IJGWYG.js +2 -0
- package/dist/cli/chunks/chunk-XIBDETCS.js +146 -0
- package/dist/cli/chunks/chunk-XLRQYLWW.js +2 -0
- package/dist/cli/chunks/chunk-XO6PVK2P.js +3 -0
- package/dist/cli/chunks/chunk-XRE2HCWG.js +3 -0
- package/dist/cli/chunks/chunk-XT2V2322.js +2 -0
- package/dist/cli/chunks/chunk-Y7BHKZFJ.js +18 -0
- package/dist/cli/chunks/chunk-YAGODYIG.js +59 -0
- package/dist/cli/chunks/chunk-YANUP2RO.js +2 -0
- package/dist/cli/chunks/chunk-YPFOCNOE.js +30 -0
- package/dist/cli/chunks/chunk-YR6ZZGH7.js +81 -0
- package/dist/cli/chunks/chunk-YVA65UZL.js +2 -0
- package/dist/cli/chunks/chunk-YW2THB5Q.js +2 -0
- package/dist/cli/chunks/chunk-ZAPS3UGQ.js +20 -0
- package/dist/cli/chunks/chunk-ZDATDCYN.js +2 -0
- package/dist/cli/chunks/ci-J374KDLI.js +81 -0
- package/dist/cli/chunks/ci-output-7JN7F6CI.js +2 -0
- package/dist/cli/chunks/claude-flow-setup-245JLJCN.js +2 -0
- package/dist/cli/chunks/client-MCSNSH2C.js +2 -0
- package/dist/cli/chunks/cline-installer-LBA2M5N3.js +4 -0
- package/dist/cli/chunks/code-U4N4WONM.js +38 -0
- package/dist/cli/chunks/code-index-extractor-A57Z6BO4.js +3 -0
- package/dist/cli/chunks/codex-installer-UXMK2N4T.js +8 -0
- package/dist/cli/chunks/completions-W66BSCOE.js +1364 -0
- package/dist/cli/chunks/complexity-analyzer-AB4OZARV.js +2 -0
- package/dist/cli/chunks/continuedev-installer-LRFZ2SJM.js +14 -0
- package/dist/cli/chunks/copilot-installer-CQ3JYBIB.js +3 -0
- package/dist/cli/chunks/cost-tracker-4F723RB6.js +2 -0
- package/dist/cli/chunks/coverage-4PUEQXAY.js +27 -0
- package/dist/cli/chunks/cross-domain-router-OWR5IJ5G.js +2 -0
- package/dist/cli/chunks/cursor-installer-JZEDEDHA.js +3 -0
- package/dist/cli/chunks/daemon-B7TWGHXQ.js +19 -0
- package/dist/cli/chunks/dag-attention-scheduler-JWO6XI6A.js +2 -0
- package/dist/cli/chunks/detect-L6ZZHUSX.js +2 -0
- package/dist/cli/chunks/domain-handler-FT5FLZWL.js +25 -0
- package/dist/cli/chunks/domain-transfer-5Y4FGJAJ.js +2 -0
- package/dist/cli/chunks/dream-4TDBIYED.js +2 -0
- package/dist/cli/chunks/esm-node-2PKHKOTS.js +2 -0
- package/dist/cli/chunks/eval-GHMPFGWV.js +15 -0
- package/dist/cli/chunks/fast-paths-B3R647KN.js +2 -0
- package/dist/cli/chunks/feature-flags-DWS7ARSX.js +2 -0
- package/dist/cli/chunks/feature-flags-IVQ3AL4Q.js +2 -0
- package/dist/cli/chunks/file-discovery-QFPA6GMV.js +2 -0
- package/dist/cli/chunks/fleet-EKOKMOMW.js +43 -0
- package/dist/cli/chunks/gnn-wrapper-OYC55N5E.js +2 -0
- package/dist/cli/chunks/heartbeat-handler-MBBS4IBU.js +48 -0
- package/dist/cli/chunks/heartbeat-scheduler-XDGMOT7X.js +2 -0
- package/dist/cli/chunks/hnsw-index-YO7CT23I.js +2 -0
- package/dist/cli/chunks/hnswlib-node-56YWVXFE.js +2 -0
- package/dist/cli/chunks/hooks-L5VLZGEK.js +101 -0
- package/dist/cli/chunks/hypergraph-engine-A4Y2ZRAG.js +2 -0
- package/dist/cli/chunks/hypergraph-handler-3HDGB5SZ.js +35 -0
- package/dist/cli/chunks/impact-analyzer-UEIGXSZ4.js +2 -0
- package/dist/cli/chunks/init-handler-JDET6WUN.js +68 -0
- package/dist/cli/chunks/init-wizard-JWZUGIPJ.js +2 -0
- package/dist/cli/chunks/kernel-YNDTVKIW.js +2 -0
- package/dist/cli/chunks/kilocode-installer-GZZG5AFW.js +4 -0
- package/dist/cli/chunks/kiro-installer-IWNY5TKH.js +74 -0
- package/dist/cli/chunks/knowledge-graph-NGJKFTSN.js +2 -0
- package/dist/cli/chunks/learning-722ZNSZ6.js +107 -0
- package/dist/cli/chunks/llm-router-DNAV746L.js +30 -0
- package/dist/cli/chunks/load-Y3GCUFM4.js +2 -0
- package/dist/cli/chunks/load-test-GZUBXFF3.js +2 -0
- package/dist/cli/chunks/mcp-LKPIBZ3W.js +2 -0
- package/dist/cli/chunks/memory-L57MLFOP.js +32 -0
- package/dist/cli/chunks/memory-backend-3NQIZUXE.js +2 -0
- package/dist/cli/chunks/memory-handlers-MDZQ7HVW.js +2 -0
- package/dist/cli/chunks/opencode-installer-4HUB36H5.js +3 -0
- package/dist/cli/chunks/orchestrator-QHSBB2UC.js +371 -0
- package/dist/cli/chunks/pipeline-D3QER35Z.js +19 -0
- package/dist/cli/chunks/platform-T4E7Q3RD.js +2 -0
- package/dist/cli/chunks/plugin-JHW2YPRC.js +27 -0
- package/dist/cli/chunks/prime-radiant-advanced-wasm-G7CFNNQV.js +2 -0
- package/dist/cli/chunks/protocol-executor-SPUVRDWT.js +2 -0
- package/dist/cli/chunks/protocol-handler-2BQQ4HDM.js +20 -0
- package/dist/cli/chunks/prove-UQ6JFT73.js +3 -0
- package/dist/cli/chunks/qe-reasoning-bank-3HBK2FVD.js +2 -0
- package/dist/cli/chunks/quality-JRZYMC77.js +7 -0
- package/dist/cli/chunks/queen-coordinator-RW3NKO5A.js +2 -0
- package/dist/cli/chunks/real-embeddings-GK63VF35.js +2 -0
- package/dist/cli/chunks/roocode-installer-F4E2LAYR.js +4 -0
- package/dist/cli/chunks/router-RJGHWDQ3.js +2 -0
- package/dist/cli/chunks/routing-feedback-ZXBXFKX6.js +2 -0
- package/dist/cli/chunks/routing-handler-VNKFUUGB.js +20 -0
- package/dist/cli/chunks/ruvector-commands-2TLNHC3A.js +8 -0
- package/dist/cli/chunks/rvf-dual-writer-MQW2SJLT.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-LKFKTMUN.js +2 -0
- package/dist/cli/chunks/safe-db-G22E5ROA.js +2 -0
- package/dist/cli/chunks/schedule-Y7VVCPYV.js +2 -0
- package/dist/cli/chunks/scheduler-AUQIFQB7.js +2 -0
- package/dist/cli/chunks/security-EBEG2OPU.js +14 -0
- package/dist/cli/chunks/shared-rvf-dual-writer-BVSCQAFS.js +2 -0
- package/dist/cli/chunks/sqlite-persistence-JAVHUGGL.js +2 -0
- package/dist/cli/chunks/status-handler-VZ32M4G4.js +45 -0
- package/dist/cli/chunks/structural-health-K6LRCKV6.js +2 -0
- package/dist/cli/chunks/sync-MHSHNLIM.js +23 -0
- package/dist/cli/chunks/task-handler-JNOIBZ2G.js +49 -0
- package/dist/cli/chunks/task-handlers-P5DSUKND.js +2 -0
- package/dist/cli/chunks/test-DO22BNIL.js +33 -0
- package/dist/cli/chunks/test-scheduling-VLRQZEFL.js +15 -0
- package/dist/cli/chunks/token-bootstrap-4VJKGVMK.js +2 -0
- package/dist/cli/chunks/token-usage-LG3PXRXH.js +25 -0
- package/dist/cli/chunks/transformers-GY7SIKEU.js +2 -0
- package/dist/cli/chunks/tree-sitter-wasm-parser-FT2KB66N.js +2 -0
- package/dist/cli/chunks/types-QJGNBKP2.js +2 -0
- package/dist/cli/chunks/unified-memory-XYGENQUT.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-MVEGQBF3.js +2 -0
- package/dist/cli/chunks/unified-persistence-PFRCWEUG.js +2 -0
- package/dist/cli/chunks/validate-VQCRSVNQ.js +21 -0
- package/dist/cli/chunks/validate-swarm-A5DHAWTP.js +14 -0
- package/dist/cli/chunks/vibium-RZBSL4EB.js +2 -0
- package/dist/cli/chunks/visual-security-V47BLGJM.js +2 -0
- package/dist/cli/chunks/web-tree-sitter-7C4NXEOF.js +2 -0
- package/dist/cli/chunks/windsurf-installer-ES3KPQG3.js +7 -0
- package/dist/cli/chunks/witness-chain-BR63P4A7.js +2 -0
- package/dist/cli/chunks/workflow-JETHX4ML.js +51 -0
- package/dist/cli/chunks/workflow-orchestrator-7PZMX3JZ.js +2 -0
- package/dist/cli/chunks/wrappers-WP5RH745.js +2 -0
- package/dist/cli/commands/daemon.d.ts +13 -0
- package/dist/cli/commands/daemon.js +224 -0
- package/dist/cli/commands/hooks-handlers/hooks-shared.js +2 -1
- package/dist/cli/commands/plugin.d.ts +12 -0
- package/dist/cli/commands/plugin.js +135 -0
- package/dist/cli/commands/workflow.d.ts +10 -0
- package/dist/cli/commands/workflow.js +587 -0
- package/dist/cli/handlers/brain-handler.js +13 -8
- package/dist/cli/handlers/heartbeat-handler.d.ts +1 -0
- package/dist/cli/handlers/heartbeat-handler.js +20 -10
- package/dist/cli/handlers/hypergraph-handler.js +3 -3
- package/dist/cli/handlers/init-handler.js +10 -9
- package/dist/cli/handlers/interfaces.d.ts +4 -4
- package/dist/cli/index.js +159 -638
- package/dist/cli/lazy-registry.d.ts +27 -0
- package/dist/cli/lazy-registry.js +70 -0
- package/dist/context/compaction/context-budget.d.ts +71 -0
- package/dist/context/compaction/context-budget.js +120 -0
- package/dist/context/compaction/index.d.ts +96 -0
- package/dist/context/compaction/index.js +259 -0
- package/dist/context/compaction/llm-caller-adapter.d.ts +14 -0
- package/dist/context/compaction/llm-caller-adapter.js +47 -0
- package/dist/context/compaction/tier1-microcompact.d.ts +33 -0
- package/dist/context/compaction/tier1-microcompact.js +47 -0
- package/dist/context/compaction/tier2-session-summary.d.ts +72 -0
- package/dist/context/compaction/tier2-session-summary.js +172 -0
- package/dist/context/compaction/tier3-llm-compact.d.ts +65 -0
- package/dist/context/compaction/tier3-llm-compact.js +166 -0
- package/dist/context/compaction/tier4-reactive.d.ts +54 -0
- package/dist/context/compaction/tier4-reactive.js +129 -0
- package/dist/coordination/consensus/providers/claude-provider.d.ts +1 -0
- package/dist/coordination/consensus/providers/claude-provider.js +23 -3
- package/dist/domains/test-generation/generators/base-test-generator.d.ts +1 -1
- package/dist/domains/test-generation/generators/base-test-generator.js +11 -11
- package/dist/domains/test-generation/generators/go-test-generator.js +12 -12
- package/dist/domains/test-generation/generators/junit5-generator.js +9 -9
- package/dist/domains/test-generation/generators/kotlin-junit-generator.js +10 -10
- package/dist/domains/test-generation/generators/pytest-generator.js +8 -8
- package/dist/domains/test-generation/generators/swift-testing-generator.js +8 -8
- package/dist/domains/test-generation/generators/test-value-helpers.d.ts +20 -0
- package/dist/domains/test-generation/generators/test-value-helpers.js +48 -0
- package/dist/domains/test-generation/generators/xunit-generator.js +11 -11
- package/dist/hooks/cross-phase-hooks.d.ts +11 -0
- package/dist/hooks/cross-phase-hooks.js +73 -9
- package/dist/hooks/security/config-snapshot.d.ts +21 -0
- package/dist/hooks/security/config-snapshot.js +33 -0
- package/dist/hooks/security/exit-codes.d.ts +28 -0
- package/dist/hooks/security/exit-codes.js +33 -0
- package/dist/hooks/security/index.d.ts +15 -0
- package/dist/hooks/security/index.js +15 -0
- package/dist/hooks/security/ssrf-guard.d.ts +25 -0
- package/dist/hooks/security/ssrf-guard.js +69 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -2
- package/dist/init/init-wizard-hooks.js +15 -1
- package/dist/init/phases/07-hooks.js +2 -2
- package/dist/init/settings-merge.js +3 -7
- package/dist/kernel/kernel.js +35 -0
- package/dist/kernel/memory-backend.js +3 -1
- package/dist/mcp/bundle.js +416 -362
- package/dist/mcp/entry.js +132 -77
- package/dist/mcp/http-server.js +4 -1
- package/dist/mcp/index.d.ts +2 -2
- package/dist/mcp/index.js +5 -4
- package/dist/mcp/middleware/batch-executor.d.ts +46 -0
- package/dist/mcp/middleware/batch-executor.js +150 -0
- package/dist/mcp/middleware/microcompact.d.ts +97 -0
- package/dist/mcp/middleware/microcompact.js +179 -0
- package/dist/mcp/middleware/middleware-chain.d.ts +37 -0
- package/dist/mcp/middleware/middleware-chain.js +60 -0
- package/dist/mcp/protocol-server.d.ts +16 -0
- package/dist/mcp/protocol-server.js +140 -36
- package/dist/mcp/services/session-durability-middleware.d.ts +22 -0
- package/dist/mcp/services/session-durability-middleware.js +64 -0
- package/dist/mcp/services/session-resume.d.ts +29 -0
- package/dist/mcp/services/session-resume.js +221 -0
- package/dist/mcp/services/session-store.d.ts +84 -0
- package/dist/mcp/services/session-store.js +163 -0
- package/dist/mcp/tool-registry.d.ts +9 -0
- package/dist/mcp/tool-registry.js +30 -1
- package/dist/mcp/types.d.ts +1 -0
- package/dist/plugins/cache.d.ts +44 -0
- package/dist/plugins/cache.js +149 -0
- package/dist/plugins/index.d.ts +15 -0
- package/dist/plugins/index.js +15 -0
- package/dist/plugins/lifecycle.d.ts +67 -0
- package/dist/plugins/lifecycle.js +175 -0
- package/dist/plugins/manifest.d.ts +45 -0
- package/dist/plugins/manifest.js +173 -0
- package/dist/plugins/resolver.d.ts +37 -0
- package/dist/plugins/resolver.js +80 -0
- package/dist/plugins/security.d.ts +23 -0
- package/dist/plugins/security.js +125 -0
- package/dist/plugins/sources/github.d.ts +17 -0
- package/dist/plugins/sources/github.js +77 -0
- package/dist/plugins/sources/local.d.ts +20 -0
- package/dist/plugins/sources/local.js +32 -0
- package/dist/plugins/sources/npm.d.ts +18 -0
- package/dist/plugins/sources/npm.js +82 -0
- package/dist/shared/llm/retry.d.ts +5 -2
- package/dist/shared/llm/retry.js +7 -3
- package/dist/shared/prompt-cache-latch.d.ts +41 -0
- package/dist/shared/prompt-cache-latch.js +63 -0
- package/dist/shared/retry-engine.d.ts +77 -0
- package/dist/shared/retry-engine.js +194 -0
- package/dist/workers/daemon.d.ts +8 -0
- package/dist/workers/daemon.js +13 -0
- package/dist/workers/quality-daemon/ci-monitor.d.ts +55 -0
- package/dist/workers/quality-daemon/ci-monitor.js +147 -0
- package/dist/workers/quality-daemon/coverage-delta.d.ts +72 -0
- package/dist/workers/quality-daemon/coverage-delta.js +135 -0
- package/dist/workers/quality-daemon/git-watcher.d.ts +51 -0
- package/dist/workers/quality-daemon/git-watcher.js +209 -0
- package/dist/workers/quality-daemon/index.d.ts +119 -0
- package/dist/workers/quality-daemon/index.js +343 -0
- package/dist/workers/quality-daemon/nightly-consolidation.d.ts +74 -0
- package/dist/workers/quality-daemon/nightly-consolidation.js +136 -0
- package/dist/workers/quality-daemon/notification-service.d.ts +67 -0
- package/dist/workers/quality-daemon/notification-service.js +178 -0
- package/dist/workers/quality-daemon/persistent-memory.d.ts +31 -0
- package/dist/workers/quality-daemon/persistent-memory.js +30 -0
- package/dist/workers/quality-daemon/priority-queue.d.ts +97 -0
- package/dist/workers/quality-daemon/priority-queue.js +126 -0
- package/dist/workers/quality-daemon/test-suggester.d.ts +50 -0
- package/dist/workers/quality-daemon/test-suggester.js +121 -0
- package/dist/workers/worker-manager.js +2 -1
- package/package.json +1 -1
- package/dist/mcp/server.d.ts +0 -46
- package/dist/mcp/server.js +0 -802
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Daemon CLI Commands (IMP-10)
|
|
3
|
+
*
|
|
4
|
+
* Commands for managing the QE Quality Daemon:
|
|
5
|
+
* aqe daemon start [--detached]
|
|
6
|
+
* aqe daemon stop
|
|
7
|
+
* aqe daemon status
|
|
8
|
+
* aqe daemon notifications [--unread] [--limit N] [--type TYPE]
|
|
9
|
+
* aqe daemon clear-notifications
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import { QualityDaemon } from '../../workers/quality-daemon';
|
|
14
|
+
import { PersistentWorkerMemory } from '../../workers/quality-daemon/persistent-memory';
|
|
15
|
+
import { isPrivateIp } from '../../hooks/security/ssrf-guard';
|
|
16
|
+
// In-process daemon instance (non-detached mode)
|
|
17
|
+
let activeDaemon;
|
|
18
|
+
export function createDaemonCommand() {
|
|
19
|
+
const daemon = new Command('daemon')
|
|
20
|
+
.description('Manage the QE Quality Daemon')
|
|
21
|
+
.addHelpText('after', `
|
|
22
|
+
Examples:
|
|
23
|
+
aqe daemon start Start daemon in foreground
|
|
24
|
+
aqe daemon stop Stop running daemon
|
|
25
|
+
aqe daemon status Show daemon health and queue depth
|
|
26
|
+
aqe daemon notifications List recent notifications
|
|
27
|
+
aqe daemon clear-notifications Clear all notifications
|
|
28
|
+
`);
|
|
29
|
+
// --- start ---
|
|
30
|
+
daemon
|
|
31
|
+
.command('start')
|
|
32
|
+
.description('Start the QE Quality Daemon')
|
|
33
|
+
.option('--tick-interval <ms>', 'Tick interval in milliseconds', '30000')
|
|
34
|
+
.option('--ci-interval <ms>', 'CI poll interval in milliseconds', '300000')
|
|
35
|
+
.action(async (options) => {
|
|
36
|
+
if (activeDaemon?.running) {
|
|
37
|
+
console.log(chalk.yellow('Daemon is already running'));
|
|
38
|
+
const status = activeDaemon.getStatus();
|
|
39
|
+
console.log(chalk.gray(` Uptime: ${status.uptimeSeconds}s, Ticks: ${status.tickCount}`));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const config = {
|
|
43
|
+
tickIntervalMs: parseInt(options.tickInterval, 10),
|
|
44
|
+
ciPollIntervalMs: parseInt(options.ciInterval, 10),
|
|
45
|
+
notifications: {
|
|
46
|
+
// IMP-07 SSRF guard for webhook URLs (Finding 5)
|
|
47
|
+
urlValidator: (url) => {
|
|
48
|
+
try {
|
|
49
|
+
const parsed = new URL(url);
|
|
50
|
+
const hostname = parsed.hostname.replace(/^\[|\]$/g, '');
|
|
51
|
+
return !isPrivateIp(hostname);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
activeDaemon = new QualityDaemon(config);
|
|
60
|
+
// Use persistent SQLite-backed memory when available, fall back to in-memory
|
|
61
|
+
let memory;
|
|
62
|
+
try {
|
|
63
|
+
const { UnifiedMemoryManager } = await import('../../kernel/unified-memory.js');
|
|
64
|
+
const unifiedMemory = await UnifiedMemoryManager.getInstanceAsync();
|
|
65
|
+
memory = new PersistentWorkerMemory(unifiedMemory);
|
|
66
|
+
console.log(chalk.gray(' Storage: SQLite (persistent)'));
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Fallback for environments where kernel isn't available
|
|
70
|
+
const store = new Map();
|
|
71
|
+
memory = {
|
|
72
|
+
async get(key) { return store.get(key); },
|
|
73
|
+
async set(key, value) { store.set(key, value); },
|
|
74
|
+
async search(pattern) {
|
|
75
|
+
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
|
|
76
|
+
const regex = new RegExp(escaped.replace(/\*/g, '.*'));
|
|
77
|
+
return Array.from(store.keys()).filter((k) => regex.test(k));
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
console.log(chalk.yellow(' Storage: in-memory (no SQLite available, state will not persist)'));
|
|
81
|
+
}
|
|
82
|
+
console.log(chalk.green('Starting QE Quality Daemon...'));
|
|
83
|
+
await activeDaemon.start(memory);
|
|
84
|
+
console.log(chalk.green('QE Quality Daemon started'));
|
|
85
|
+
console.log(chalk.gray(` Tick interval: ${config.tickIntervalMs}ms`));
|
|
86
|
+
console.log(chalk.gray(` CI poll interval: ${config.ciPollIntervalMs}ms`));
|
|
87
|
+
console.log(chalk.gray(` PID: ${process.pid}`));
|
|
88
|
+
console.log(chalk.gray('\n Press Ctrl+C to stop'));
|
|
89
|
+
// Keep process alive
|
|
90
|
+
const keepAlive = setInterval(() => {
|
|
91
|
+
if (!activeDaemon?.running) {
|
|
92
|
+
clearInterval(keepAlive);
|
|
93
|
+
}
|
|
94
|
+
}, 5000);
|
|
95
|
+
// Graceful shutdown
|
|
96
|
+
const shutdown = async () => {
|
|
97
|
+
console.log(chalk.yellow('\nStopping QE Quality Daemon...'));
|
|
98
|
+
await activeDaemon?.stop();
|
|
99
|
+
clearInterval(keepAlive);
|
|
100
|
+
console.log(chalk.green('Daemon stopped'));
|
|
101
|
+
process.exit(0);
|
|
102
|
+
};
|
|
103
|
+
process.once('SIGINT', shutdown);
|
|
104
|
+
process.once('SIGTERM', shutdown);
|
|
105
|
+
});
|
|
106
|
+
// --- stop ---
|
|
107
|
+
daemon
|
|
108
|
+
.command('stop')
|
|
109
|
+
.description('Stop the QE Quality Daemon')
|
|
110
|
+
.action(async () => {
|
|
111
|
+
if (!activeDaemon?.running) {
|
|
112
|
+
console.log(chalk.yellow('No running daemon found'));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
await activeDaemon.stop();
|
|
116
|
+
console.log(chalk.green('Daemon stopped'));
|
|
117
|
+
activeDaemon = undefined;
|
|
118
|
+
});
|
|
119
|
+
// --- status ---
|
|
120
|
+
daemon
|
|
121
|
+
.command('status')
|
|
122
|
+
.description('Show daemon health and queue status')
|
|
123
|
+
.action(() => {
|
|
124
|
+
if (!activeDaemon) {
|
|
125
|
+
console.log(chalk.yellow('No daemon instance (start with: aqe daemon start)'));
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const s = activeDaemon.getStatus();
|
|
129
|
+
console.log(chalk.bold('\nQE Quality Daemon Status'));
|
|
130
|
+
console.log(chalk.gray('─'.repeat(40)));
|
|
131
|
+
console.log(` Running: ${s.running ? chalk.green('yes') : chalk.red('no')}`);
|
|
132
|
+
console.log(` Uptime: ${formatUptime(s.uptimeSeconds)}`);
|
|
133
|
+
console.log(` Ticks: ${s.tickCount}`);
|
|
134
|
+
console.log(` Throttled: ${s.throttled ? chalk.yellow('yes') : chalk.green('no')}`);
|
|
135
|
+
console.log(chalk.bold('\n Queue Depth'));
|
|
136
|
+
console.log(` Now: ${s.queueDepth.now}`);
|
|
137
|
+
console.log(` Next: ${s.queueDepth.next}`);
|
|
138
|
+
console.log(` Later: ${s.queueDepth.later}`);
|
|
139
|
+
console.log(chalk.bold('\n Health'));
|
|
140
|
+
console.log(` CI: ${healthColor(s.ciHealth)}${s.ciHealth}%${chalk.reset('')}`);
|
|
141
|
+
console.log(` Coverage: ${healthColor(s.coverageHealth)}${s.coverageHealth}%${chalk.reset('')}`);
|
|
142
|
+
console.log(chalk.bold('\n Activity'));
|
|
143
|
+
console.log(` Commits: ${s.commitsAnalyzed}`);
|
|
144
|
+
console.log(` Suggestions: ${s.suggestionsGenerated}`);
|
|
145
|
+
console.log(` Notifications: ${s.notificationsSent}`);
|
|
146
|
+
console.log();
|
|
147
|
+
});
|
|
148
|
+
// --- notifications ---
|
|
149
|
+
daemon
|
|
150
|
+
.command('notifications')
|
|
151
|
+
.description('List recent notifications')
|
|
152
|
+
.option('--unread', 'Show only unread notifications')
|
|
153
|
+
.option('--limit <n>', 'Maximum notifications to show', '20')
|
|
154
|
+
.option('--type <type>', 'Filter by type (gate_failure, coverage_drop, flaky_detected, etc.)')
|
|
155
|
+
.action((options) => {
|
|
156
|
+
if (!activeDaemon) {
|
|
157
|
+
console.log(chalk.yellow('No daemon instance'));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const notifications = activeDaemon.notificationService.list({
|
|
161
|
+
unreadOnly: options.unread,
|
|
162
|
+
limit: parseInt(options.limit, 10),
|
|
163
|
+
type: options.type,
|
|
164
|
+
});
|
|
165
|
+
if (notifications.length === 0) {
|
|
166
|
+
console.log(chalk.gray('No notifications'));
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
console.log(chalk.bold(`\nNotifications (${notifications.length})`));
|
|
170
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
171
|
+
for (const n of notifications) {
|
|
172
|
+
const icon = severityIcon(n.severity);
|
|
173
|
+
const time = new Date(n.timestamp).toLocaleString();
|
|
174
|
+
const readMark = n.read ? chalk.gray('✓') : chalk.yellow('●');
|
|
175
|
+
console.log(`${readMark} ${icon} ${chalk.bold(n.title)}`);
|
|
176
|
+
console.log(` ${n.message}`);
|
|
177
|
+
console.log(chalk.gray(` ${time} [${n.type}]`));
|
|
178
|
+
console.log();
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
// --- clear-notifications ---
|
|
182
|
+
daemon
|
|
183
|
+
.command('clear-notifications')
|
|
184
|
+
.description('Clear all notifications')
|
|
185
|
+
.action(() => {
|
|
186
|
+
if (!activeDaemon) {
|
|
187
|
+
console.log(chalk.yellow('No daemon instance'));
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const count = activeDaemon.notificationService.clear();
|
|
191
|
+
console.log(chalk.green(`Cleared ${count} notifications`));
|
|
192
|
+
});
|
|
193
|
+
return daemon;
|
|
194
|
+
}
|
|
195
|
+
// ============================================================================
|
|
196
|
+
// Helpers
|
|
197
|
+
// ============================================================================
|
|
198
|
+
function formatUptime(seconds) {
|
|
199
|
+
if (seconds < 60)
|
|
200
|
+
return `${seconds}s`;
|
|
201
|
+
if (seconds < 3600)
|
|
202
|
+
return `${Math.floor(seconds / 60)}m ${seconds % 60}s`;
|
|
203
|
+
const h = Math.floor(seconds / 3600);
|
|
204
|
+
const m = Math.floor((seconds % 3600) / 60);
|
|
205
|
+
return `${h}h ${m}m`;
|
|
206
|
+
}
|
|
207
|
+
function healthColor(score) {
|
|
208
|
+
if (score >= 80)
|
|
209
|
+
return chalk.green('');
|
|
210
|
+
if (score >= 60)
|
|
211
|
+
return chalk.yellow('');
|
|
212
|
+
return chalk.red('');
|
|
213
|
+
}
|
|
214
|
+
function severityIcon(severity) {
|
|
215
|
+
switch (severity) {
|
|
216
|
+
case 'critical': return chalk.red('!!');
|
|
217
|
+
case 'high': return chalk.red('!');
|
|
218
|
+
case 'medium': return chalk.yellow('~');
|
|
219
|
+
case 'low': return chalk.blue('-');
|
|
220
|
+
case 'info': return chalk.gray('i');
|
|
221
|
+
default: return ' ';
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=daemon.js.map
|
|
@@ -165,7 +165,8 @@ export function createInMemoryBackend() {
|
|
|
165
165
|
},
|
|
166
166
|
has: async (key) => store.has(key),
|
|
167
167
|
search: async (pattern, _limit) => {
|
|
168
|
-
const
|
|
168
|
+
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
|
|
169
|
+
const regex = new RegExp(escaped.replace(/\*/g, '.*'));
|
|
169
170
|
return Array.from(store.keys()).filter((k) => regex.test(k));
|
|
170
171
|
},
|
|
171
172
|
vectorSearch: async (_embedding, _k) => {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Plugin CLI Commands (IMP-09)
|
|
3
|
+
*
|
|
4
|
+
* Commands for managing external QE domain plugins:
|
|
5
|
+
* aqe plugin install <location> [--source local|github|npm]
|
|
6
|
+
* aqe plugin list
|
|
7
|
+
* aqe plugin remove <name> [--version <ver>]
|
|
8
|
+
* aqe plugin info <name>
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from 'commander';
|
|
11
|
+
export declare function createPluginCommand(): Command;
|
|
12
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Plugin CLI Commands (IMP-09)
|
|
3
|
+
*
|
|
4
|
+
* Commands for managing external QE domain plugins:
|
|
5
|
+
* aqe plugin install <location> [--source local|github|npm]
|
|
6
|
+
* aqe plugin list
|
|
7
|
+
* aqe plugin remove <name> [--version <ver>]
|
|
8
|
+
* aqe plugin info <name>
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from 'commander';
|
|
11
|
+
import { PluginLifecycleManager } from '../../plugins/lifecycle';
|
|
12
|
+
import { PluginCache } from '../../plugins/cache';
|
|
13
|
+
import { GitHubPluginSource } from '../../plugins/sources/github';
|
|
14
|
+
import { NpmPluginSource } from '../../plugins/sources/npm';
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Plugin Command
|
|
17
|
+
// ============================================================================
|
|
18
|
+
export function createPluginCommand() {
|
|
19
|
+
const manager = createManager();
|
|
20
|
+
const plugin = new Command('plugin')
|
|
21
|
+
.description('Manage external QE domain plugins')
|
|
22
|
+
.addHelpText('after', `
|
|
23
|
+
Examples:
|
|
24
|
+
aqe plugin install ./my-plugin Install from local directory
|
|
25
|
+
aqe plugin install owner/repo --source github Install from GitHub
|
|
26
|
+
aqe plugin install aqe-plugin-sap --source npm Install from npm
|
|
27
|
+
aqe plugin list List installed plugins
|
|
28
|
+
aqe plugin remove my-plugin Remove a plugin
|
|
29
|
+
aqe plugin info my-plugin Show plugin details
|
|
30
|
+
`);
|
|
31
|
+
// --- install ---
|
|
32
|
+
plugin
|
|
33
|
+
.command('install <location>')
|
|
34
|
+
.description('Install a QE plugin from a local directory, GitHub repo, or npm package')
|
|
35
|
+
.option('-s, --source <type>', 'Source type: local, github, npm', 'local')
|
|
36
|
+
.action(async (location, options) => {
|
|
37
|
+
try {
|
|
38
|
+
console.log(`Installing plugin from ${options.source}: ${location}...`);
|
|
39
|
+
const result = await manager.install(location, options.source);
|
|
40
|
+
if (result.success) {
|
|
41
|
+
console.log(`\n Plugin installed successfully!`);
|
|
42
|
+
console.log(` Name: ${result.manifest.name}`);
|
|
43
|
+
console.log(` Version: ${result.manifest.version}`);
|
|
44
|
+
console.log(` Domains: ${result.manifest.domains.join(', ')}`);
|
|
45
|
+
console.log(` Cache: ${result.cachePath}\n`);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
console.error(`\n Installation failed:`);
|
|
49
|
+
for (const err of result.errors) {
|
|
50
|
+
console.error(` - ${err}`);
|
|
51
|
+
}
|
|
52
|
+
if (result.securityViolations.length > 0) {
|
|
53
|
+
console.error(`\n Security violations:`);
|
|
54
|
+
for (const v of result.securityViolations) {
|
|
55
|
+
console.error(` - ${v}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
63
|
+
process.exitCode = 1;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
// --- list ---
|
|
67
|
+
plugin
|
|
68
|
+
.command('list')
|
|
69
|
+
.description('List installed QE plugins')
|
|
70
|
+
.action(() => {
|
|
71
|
+
const plugins = manager.list();
|
|
72
|
+
if (plugins.length === 0) {
|
|
73
|
+
console.log('\n No plugins installed.\n');
|
|
74
|
+
console.log(' Install one with: aqe plugin install <location>\n');
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
console.log(`\n Installed plugins (${plugins.length}):\n`);
|
|
78
|
+
for (const p of plugins) {
|
|
79
|
+
console.log(` ${p.name}@${p.version}`);
|
|
80
|
+
console.log(` ${p.description}`);
|
|
81
|
+
console.log(` Domains: ${p.domains.join(', ')}`);
|
|
82
|
+
console.log('');
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
// --- remove ---
|
|
86
|
+
plugin
|
|
87
|
+
.command('remove <name>')
|
|
88
|
+
.description('Remove an installed QE plugin')
|
|
89
|
+
.option('-v, --version <version>', 'Remove specific version (default: all)')
|
|
90
|
+
.action((name, options) => {
|
|
91
|
+
const removed = manager.remove(name, options.version);
|
|
92
|
+
if (removed) {
|
|
93
|
+
const versionStr = options.version ? `@${options.version}` : ' (all versions)';
|
|
94
|
+
console.log(`\n Removed: ${name}${versionStr}\n`);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.log(`\n Plugin not found: ${name}\n`);
|
|
98
|
+
process.exitCode = 1;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
// --- info ---
|
|
102
|
+
plugin
|
|
103
|
+
.command('info <name>')
|
|
104
|
+
.description('Show detailed info about an installed plugin')
|
|
105
|
+
.action((name) => {
|
|
106
|
+
const plugins = manager.list().filter(p => p.name === name);
|
|
107
|
+
if (plugins.length === 0) {
|
|
108
|
+
console.log(`\n Plugin not found: ${name}\n`);
|
|
109
|
+
process.exitCode = 1;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const p = plugins[0];
|
|
113
|
+
console.log(`\n Plugin: ${p.name}`);
|
|
114
|
+
console.log(` Version: ${p.version}`);
|
|
115
|
+
console.log(` Description: ${p.description}`);
|
|
116
|
+
console.log(` Domains: ${p.domains.join(', ')}`);
|
|
117
|
+
console.log(` Source: ${p.source}`);
|
|
118
|
+
console.log(` Cache: ${p.cachePath}\n`);
|
|
119
|
+
});
|
|
120
|
+
return plugin;
|
|
121
|
+
}
|
|
122
|
+
// ============================================================================
|
|
123
|
+
// Internal
|
|
124
|
+
// ============================================================================
|
|
125
|
+
function createManager() {
|
|
126
|
+
const cache = new PluginCache();
|
|
127
|
+
return new PluginLifecycleManager({
|
|
128
|
+
cache,
|
|
129
|
+
sources: [
|
|
130
|
+
new GitHubPluginSource(),
|
|
131
|
+
new NpmPluginSource(),
|
|
132
|
+
],
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Workflow Command (ADR-041)
|
|
3
|
+
*
|
|
4
|
+
* Extracted from index.ts to enable lazy loading.
|
|
5
|
+
* Manages QE workflows and pipelines.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { CLIContext } from '../handlers/interfaces.js';
|
|
9
|
+
export declare function createWorkflowCommand(context: CLIContext, cleanupAndExit: (code: number) => Promise<never>, ensureInitialized: () => Promise<boolean>): Command;
|
|
10
|
+
//# sourceMappingURL=workflow.d.ts.map
|