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,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a as h,b as i,c as j,d as k,e as l,f as m,g as n}from"./chunk-N4TL73TH.js";import{a as e,b as f,d as g}from"./chunk-YPFOCNOE.js";import"./chunk-VSVXUTJN.js";import"./chunk-X5IJGWYG.js";import"./chunk-J3KWWR6Z.js";import"./chunk-EHDQJQ6Y.js";import"./chunk-MV6CMOJQ.js";import"./chunk-JRYGQO2W.js";import{a,b,c,h as d}from"./chunk-4YS3IJ45.js";import"./chunk-YW2THB5Q.js";import"./chunk-3ZOONQG6.js";import"./chunk-SUSEVMZT.js";import"./chunk-JJO7Y4H3.js";import"./chunk-N2NS2PHA.js";import"./chunk-3JPRUND5.js";import"./chunk-4VUPRTVX.js";import"./chunk-WGMPEW2T.js";import"./chunk-JZSDOIXA.js";import"./chunk-263XS447.js";import"./chunk-MDUHYUHF.js";import"./chunk-GAOJV3OX.js";import"./chunk-62ADTHV7.js";import"./chunk-DRT3WKQW.js";import"./chunk-UFUVUO3J.js";import"./chunk-7VDBAVTY.js";import"./chunk-B36CDR4U.js";import"./chunk-2I7J3O6V.js";import"./chunk-4I2IOUS4.js";export{j as AGENT_CAPABILITIES,h as DEFAULT_QE_REASONING_BANK_CONFIG,i as PRETRAINED_PATTERNS,m as QEReasoningBank,l as RELATED_DOMAINS,d as applyPatternTemplate,k as calculateAgentScores,n as createQEReasoningBank,a as detectQEDomain,b as detectQEDomains,g as generateGuidanceContext,f as getCombinedGuidance,e as getGuidance,c as mapQEDomainToAQE};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{c as l,d as u,h as d}from"./chunk-YR6ZZGH7.js";import"./chunk-4I2IOUS4.js";import{Command as w}from"commander";import e from"chalk";function P(g,o,h){return new w("quality").description("Quality assessment shortcut").option("--gate","Run quality gate evaluation").option("-F, --format <format>","Output format (text|json|markdown)","text").option("-o, --output <path>","Write output to file").action(async i=>{if(await h())try{let r=i.format;{r==="text"&&console.log(e.blue(`
|
|
3
|
+
Running quality gate evaluation...
|
|
4
|
+
`));let m=await g.kernel.getDomainAPIAsync("quality-assessment");m||(console.log(e.red("Quality assessment domain not available")),await o(1));let f={coverage:0,testsPassing:0,criticalBugs:0,codeSmells:0,securityVulnerabilities:0,technicalDebt:0,duplications:0},y={coverage:{min:80},testsPassing:{min:95},criticalBugs:{max:0},codeSmells:{max:20},securityVulnerabilities:{max:0},technicalDebt:{max:5},duplications:{max:5}},n=await m.evaluateGate({gateName:"standard",metrics:f,thresholds:y});if(n.success&&n.value){let s=n.value,t={passed:s.passed??s.meetsThreshold??!0,score:s.score??s.grade??"N/A",checks:s.checks||[],recommendations:s.recommendations||[]};if(r==="json")l(u(t),i.output);else if(r==="markdown")l(d(t),i.output);else{let p=t.passed?e.green("\u2713 PASSED"):e.red("\u2717 FAILED");if(console.log(` Quality Gate: ${p}`),console.log(` Score: ${e.cyan(t.score)}
|
|
5
|
+
`),t.checks.length>0){console.log(e.cyan(" Checks:"));for(let a of t.checks){let b=a.passed?e.green("\u2713"):e.red("\u2717");console.log(` ${b} ${a.name}: ${a.value} (threshold: ${a.threshold})`)}}if(t.recommendations&&t.recommendations.length>0){console.log(e.cyan(`
|
|
6
|
+
Recommendations:`));for(let a of t.recommendations)console.log(e.gray(` - ${a}`))}console.log("")}t.passed||await o(1);let c=parseFloat(String(t.score));!isNaN(c)&&c<100&&c>=95&&await o(2),await o(0)}else console.log(e.red(`Quality gate failed: ${n.error?.message||"Unknown error"}`)),await o(1)}}catch(r){console.error(e.red(`
|
|
7
|
+
Failed:`),r),await o(1)}})}export{P as createQualityCommand};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{c as a,d as b,e as c,f as d}from"./chunk-2E5NQNSU.js";import"./chunk-BULKFVYX.js";import"./chunk-4B6NCELM.js";import"./chunk-KP5NUODU.js";import"./chunk-ZDATDCYN.js";import"./chunk-AFLLQ5PP.js";import"./chunk-TLHP5EII.js";import"./chunk-JRYGQO2W.js";import"./chunk-4YS3IJ45.js";import"./chunk-5T2ZQWKF.js";import"./chunk-3ZOONQG6.js";import"./chunk-SUSEVMZT.js";import"./chunk-JJO7Y4H3.js";import"./chunk-N2NS2PHA.js";import"./chunk-3JPRUND5.js";import"./chunk-4VUPRTVX.js";import"./chunk-WGMPEW2T.js";import"./chunk-JZSDOIXA.js";import"./chunk-263XS447.js";import"./chunk-MDUHYUHF.js";import"./chunk-GAOJV3OX.js";import"./chunk-62ADTHV7.js";import"./chunk-DRT3WKQW.js";import"./chunk-UFUVUO3J.js";import"./chunk-7VDBAVTY.js";import"./chunk-B36CDR4U.js";import"./chunk-2I7J3O6V.js";import"./chunk-4I2IOUS4.js";export{a as DOMAIN_GROUPS,c as QueenCoordinator,b as TASK_DOMAIN_MAP,d as createQueenCoordinator};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a as b,b as c,c as d,d as e,e as f,f as g,g as h,h as i}from"./chunk-YW2THB5Q.js";import"./chunk-JZSDOIXA.js";import{a}from"./chunk-B36CDR4U.js";import"./chunk-4I2IOUS4.js";export{b as DEFAULT_EMBEDDING_CONFIG,e as clearEmbeddingCache,d as computeBatchEmbeddings,c as computeRealEmbedding,a as cosineSimilarity,f as getCacheStats,h as getEmbeddingDimension,g as isTransformerAvailable,i as resetInitialization};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{b as p}from"./chunk-4YOMLWEK.js";import{a as f,c as v}from"./chunk-JZSDOIXA.js";import"./chunk-4I2IOUS4.js";v();import{existsSync as n,mkdirSync as m,readFileSync as u,writeFileSync as a}from"fs";import{join as d,dirname as h}from"path";var l=class{projectRoot;overwrite;generator;constructor(r){this.projectRoot=r.projectRoot,this.overwrite=r.overwrite??!1,this.generator=p()}async install(){let r={success:!0,mcpConfigured:!1,modeInstalled:!1,errors:[],configPath:"",modePath:""};try{let t=this.generator.generateMcpConfig("roocode"),e=d(this.projectRoot,t.path);if(r.configPath=e,!n(e)||this.overwrite){let i=h(e);if(n(i)||m(i,{recursive:!0}),n(e)&&this.overwrite){let c=this.mergeExistingConfig(e,t.content);a(e,c)}else a(e,t.content);r.mcpConfigured=!0}let s=this.generator.generateBehavioralRules("roocode"),o=d(this.projectRoot,s.path);if(r.modePath=o,!n(o)||this.overwrite){let i=h(o);if(n(i)||m(i,{recursive:!0}),n(o)&&this.overwrite){let c=this.mergeExistingModes(o,s.content);a(o,c)}else a(o,s.content);r.modeInstalled=!0}}catch(t){r.success=!1,r.errors.push(`Roo Code installation failed: ${f(t)}`)}return r}mergeExistingConfig(r,t){try{let e=JSON.parse(u(r,"utf-8")),s=JSON.parse(t);return e.mcpServers||(e.mcpServers={}),Object.assign(e.mcpServers,s.mcpServers),JSON.stringify(e,null,2)+`
|
|
3
|
+
`}catch{return t}}mergeExistingModes(r,t){try{let e=JSON.parse(u(r,"utf-8")),s=JSON.parse(t);if(!Array.isArray(e))return t;let o=e.filter(i=>i.slug!=="qe-engineer");return o.push(...s),JSON.stringify(o,null,2)+`
|
|
4
|
+
`}catch{return t}}};function P(g){return new l(g)}export{l as RooCodeInstaller,P as createRooCodeInstaller};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a,b,c}from"./chunk-GPQ57KA4.js";import"./chunk-B6LLWYQ6.js";import"./chunk-7R6YMLVS.js";import"./chunk-72WOAVK6.js";import"./chunk-HRO6OZQD.js";import"./chunk-WGMPEW2T.js";import"./chunk-JZSDOIXA.js";import"./chunk-4I2IOUS4.js";export{a as ModelRouter,b as createModelRouter,c as createModelRouterWithAgentBooster};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a,b}from"./chunk-WJ3DLOXF.js";import"./chunk-YVA65UZL.js";import"./chunk-BTREG4IW.js";import"./chunk-3ADGXLTM.js";import"./chunk-JJO7Y4H3.js";import"./chunk-N2NS2PHA.js";import"./chunk-3JPRUND5.js";import"./chunk-4VUPRTVX.js";import"./chunk-WGMPEW2T.js";import"./chunk-JZSDOIXA.js";import"./chunk-263XS447.js";import"./chunk-MDUHYUHF.js";import"./chunk-GAOJV3OX.js";import"./chunk-62ADTHV7.js";import"./chunk-DRT3WKQW.js";import"./chunk-UFUVUO3J.js";import"./chunk-7VDBAVTY.js";import"./chunk-B36CDR4U.js";import"./chunk-2I7J3O6V.js";import"./chunk-4I2IOUS4.js";export{a as RoutingFeedbackCollector,b as createRoutingFeedbackCollector};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{b as u}from"./chunk-WJ3DLOXF.js";import{c as m}from"./chunk-YVA65UZL.js";import"./chunk-BTREG4IW.js";import"./chunk-3ADGXLTM.js";import"./chunk-JJO7Y4H3.js";import"./chunk-N2NS2PHA.js";import"./chunk-3JPRUND5.js";import"./chunk-4VUPRTVX.js";import"./chunk-WGMPEW2T.js";import{a as l,c as f}from"./chunk-JZSDOIXA.js";import"./chunk-263XS447.js";import"./chunk-MDUHYUHF.js";import"./chunk-GAOJV3OX.js";import"./chunk-62ADTHV7.js";import"./chunk-DRT3WKQW.js";import"./chunk-UFUVUO3J.js";import"./chunk-7VDBAVTY.js";import"./chunk-B36CDR4U.js";import"./chunk-2I7J3O6V.js";import"./chunk-4I2IOUS4.js";f();import o from"chalk";var d=class{name="routing";description="View routing performance, economics, and accuracy";cleanupAndExit;constructor(n){this.cleanupAndExit=n}getHelp(){return["aqe routing economics [--complexity <0-1>] [--json] Show tier efficiency & budget","aqe routing accuracy [--json] Show routing accuracy analysis","aqe routing metrics [--json] Show per-agent performance"].join(`
|
|
3
|
+
`)}register(n,r){let t=n.command("routing").description(this.description);t.command("economics").description("Show economic routing report: tier efficiency, budget, savings").option("-c, --complexity <value>","Task complexity for scoring (0-1)","0.5").option("--json","Output as JSON").action(async e=>{await this.executeEconomics(parseFloat(e.complexity)||.5,!!e.json)}),t.command("accuracy").description("Show routing accuracy analysis").option("--json","Output as JSON").action(async e=>{await this.executeAccuracy(!!e.json)}),t.command("metrics").description("Show per-agent performance metrics").option("--json","Output as JSON").action(async e=>{await this.executeMetrics(!!e.json)})}async executeEconomics(n,r){try{let t=u(100);await t.initialize(),t.enableEconomicRouting({},m());let e=t.getEconomicReport();if(!e){console.error(o.red(`
|
|
4
|
+
Economic routing is not available.
|
|
5
|
+
`)),await this.cleanupAndExit(1);return}if(r){console.log(JSON.stringify(e,(a,s)=>s===1/0?"Infinity":s,2)),await this.cleanupAndExit(0);return}console.log(o.blue(`
|
|
6
|
+
Economic Routing Report`)),console.log(o.gray(" "+"\u2500".repeat(50))),console.log(o.white(`
|
|
7
|
+
Tier Efficiency (complexity=`+n.toFixed(1)+`):
|
|
8
|
+
`)),console.log(o.gray(" Tier Quality Cost/Task Q/$ Score")),console.log(o.gray(" "+"\u2500".repeat(50)));let c=t.getEconomicScore(n)??e.tierEfficiency;for(let a of c){let s=isFinite(a.qualityPerDollar)?a.qualityPerDollar.toFixed(1):"\u221E";console.log(` ${y(a.tier,10)}${o.cyan(a.qualityScore.toFixed(2))} $${a.estimatedCostUsd.toFixed(4)} ${o.yellow(p(s,8))} ${x(a.economicScore)}`)}console.log(o.white(`
|
|
9
|
+
Budget:`)),console.log(` Hourly cost: $${e.currentHourlyCostUsd.toFixed(4)}`),console.log(` Daily cost: $${e.currentDailyCostUsd.toFixed(4)}`),e.budgetRemaining.hourly!==null&&console.log(` Hourly left: $${e.budgetRemaining.hourly.toFixed(4)}`),e.budgetRemaining.daily!==null&&console.log(` Daily left: $${e.budgetRemaining.daily.toFixed(4)}`),console.log(o.white(`
|
|
10
|
+
Recommendation:`)),console.log(` ${o.green(e.recommendation)}`),e.savingsOpportunity&&(console.log(o.white(`
|
|
11
|
+
Savings Opportunity:`)),console.log(` ${o.yellow(e.savingsOpportunity.description)}`)),console.log(""),await this.cleanupAndExit(0)}catch(t){console.error(o.red(`
|
|
12
|
+
Failed to get economic report:`),l(t)),await this.cleanupAndExit(1)}}async executeAccuracy(n){try{let r=u(1e4);await r.initialize();let t=r.analyzeRoutingAccuracy();if(n){console.log(JSON.stringify(t,null,2)),await this.cleanupAndExit(0);return}console.log(o.blue(`
|
|
13
|
+
Routing Accuracy Analysis`)),console.log(o.gray(" "+"\u2500".repeat(40))),console.log(` Total outcomes: ${o.cyan(String(t.totalOutcomes))}`),console.log(` Followed recs: ${o.cyan(String(t.followedRecommendations))}`),console.log(` Override rate: ${o.yellow((t.overrideRate*100).toFixed(1)+"%")}`),console.log(` Rec success rate: ${g(t.recommendationSuccessRate*100)}`),console.log(` Override success rate: ${g(t.overrideSuccessRate*100)}`),console.log(` Confidence correlation: ${o.cyan(t.confidenceCorrelation.toFixed(3))}`);let e=r.getImprovementRecommendations();if(e.length>0){console.log(o.white(`
|
|
14
|
+
Recommendations:`));for(let c of e)console.log(` ${o.gray("\u2022")} ${c}`)}console.log(""),await this.cleanupAndExit(0)}catch(r){console.error(o.red(`
|
|
15
|
+
Failed to analyze routing accuracy:`),l(r)),await this.cleanupAndExit(1)}}async executeMetrics(n){try{let r=u(1e4);await r.initialize();let t=r.getAllAgentMetrics();if(n){console.log(JSON.stringify(t,null,2)),await this.cleanupAndExit(0);return}if(t.length===0){console.log(o.yellow(`
|
|
16
|
+
No routing metrics available yet. Run some QE tasks first.
|
|
17
|
+
`)),await this.cleanupAndExit(0);return}console.log(o.blue(`
|
|
18
|
+
Agent Routing Metrics`)),console.log(o.gray(" "+"\u2500".repeat(60))),console.log(o.gray(" Agent Tasks Success Quality Trend")),console.log(o.gray(" "+"\u2500".repeat(60)));for(let c of t.slice(0,20)){let a=c.trend==="improving"?o.green("\u2191"):c.trend==="declining"?o.red("\u2193"):o.gray("\u2192");console.log(` ${y(c.agentId,24)}${p(String(c.totalTasks),5)} ${g(c.successRate*100)} ${o.cyan(c.avgQualityScore.toFixed(2))} ${a} ${c.trend}`)}let e=r.getStats();console.log(o.gray(`
|
|
19
|
+
${e.totalOutcomes} total outcomes, ${e.uniqueAgentsUsed} agents`)),console.log(""),await this.cleanupAndExit(0)}catch(r){console.error(o.red(`
|
|
20
|
+
Failed to get agent metrics:`),l(r)),await this.cleanupAndExit(1)}}};function y(i,n){return i.length>=n?i:i+" ".repeat(n-i.length)}function p(i,n){return i.length>=n?i:" ".repeat(n-i.length)+i}function x(i){let n=i*100,r=i.toFixed(3);return n>=70?o.green(r):n>=40?o.yellow(r):o.red(r)}function g(i){let n=i.toFixed(1)+"%";return i>=70?o.green(n):i>=40?o.yellow(n):o.red(n)}function E(i){return new d(i)}export{d as RoutingHandler,E as createRoutingHandler};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a as p,b as A}from"./chunk-62ADTHV7.js";import"./chunk-UFUVUO3J.js";import{M as F,a as g,b as f,c as d}from"./chunk-2I7J3O6V.js";import{a as N}from"./chunk-4I2IOUS4.js";F();A();import{Command as h}from"commander";import e from"chalk";var S=[{name:"@ruvector/router",flag:"useNativeHNSW",fallback:"ProgressiveHnswBackend"},{name:"prime-radiant-advanced-wasm",flag:"useCoherenceGate",fallback:"Word-frequency heuristics"},{name:"@ruvector/sona",flag:"useSONAThreeLoop",fallback:"TypeScript MicroLoRA/EWC++"}],D={useQESONA:"Self-Optimizing Neural Architecture",useQEFlashAttention:"SIMD-accelerated attention computation",useQEGNNIndex:"Differentiable search and HNSW indexing",logMigrationMetrics:"Log migration metrics during rollout",useNativeHNSW:"Rust-based HNSW backend (@ruvector/router VectorDb)",useTemporalCompression:"Temporal tensor compression (ADR-085)",useMetadataFiltering:"SIMD-accelerated metadata filtering",useDeterministicDither:"Cross-platform deterministic dithering",useNeuralRouting:"Neural model routing via FastGRNN (ADR-082)",useSONAThreeLoop:"SONA Three-Loop Engine (Task 2.2)",useCrossDomainTransfer:"Cross-domain transfer learning (ADR-084)",useHnswHealthMonitor:"HNSW health monitor (Task 3.4)",useRegretTracking:"Regret tracking & learning health (Task 2.4)",useCoherenceGate:"Sheaf-gated coherence validation (ADR-083, Task 3.1)",useWitnessChain:"SHA-256 hash-chained witness records (Task 3.1)",useCNNVisualRegression:"CNN visual regression testing (Task 4.3)",useDAGAttention:"DAG attention for test scheduling (Task 4.2)",useCoherenceActionGate:"Coherence-gated agent actions (ADR-083, Task 3.2)",useReasoningQEC:"Reasoning QEC error correction (Task 4.5)",useHDCFingerprinting:"HDC pattern fingerprinting (R1, ADR-087)",useCusumDriftDetection:"CUSUM drift detection (R2, ADR-087)",useDeltaEventSourcing:"Delta event sourcing (R3, ADR-087)",useEwcPlusPlusRegularization:"EWC++ regularization (ADR-087)",useGraphMAEEmbeddings:"GraphMAE self-supervised embeddings (R4, ADR-087)",useHopfieldMemory:"Modern Hopfield memory (R5, ADR-087)",useColdTierGNN:"Cold-tier GNN training (R6, ADR-087)",useMetaLearningEnhancements:"Meta-learning enhancements (R7, ADR-087)",useSublinearSolver:"Sublinear PageRank solver (R8, ADR-087)",useSpectralSparsification:"Spectral graph sparsification (R9, ADR-087)",useReservoirReplay:"Reservoir replay with coherence gating (R10, ADR-087)",useEpropOnlineLearning:"E-prop online learning, RL algorithm #10 (R11, ADR-087)",useGrangerCausality:"Granger causality for test failure prediction (R12, ADR-087)"},m={performance:{useNativeHNSW:!0,useTemporalCompression:!0,useDeterministicDither:!0},experimental:{useQESONA:!0,useQEFlashAttention:!0,useQEGNNIndex:!0,logMigrationMetrics:!0,useNativeHNSW:!0,useTemporalCompression:!0,useMetadataFiltering:!0,useDeterministicDither:!0,useNeuralRouting:!0},safe:{useQESONA:!0,useQEFlashAttention:!0,useQEGNNIndex:!0,logMigrationMetrics:!0,useNativeHNSW:!1,useTemporalCompression:!1,useMetadataFiltering:!1,useDeterministicDither:!1,useNeuralRouting:!1}},u=Object.keys(g);function k(o){try{return N.resolve(o),!0}catch{return!1}}function v(o,n){return g[o]===n}function i(o,n){return o.padEnd(n)}function y(o){return o<1024?`${o}B`:o<1024*1024?`${(o/1024).toFixed(1)}KB`:o<1024*1024*1024?`${(o/(1024*1024)).toFixed(1)}MB`:`${(o/(1024*1024*1024)).toFixed(2)}GB`}function T(o){return u.includes(o)}function x(o){return o in m}function C(){let o=f();console.log(""),console.log(e.bold.blue("RuVector Integration Status:")),console.log(e.cyan(" Native Packages:"));for(let t of S){let a=k(t.name)?e.green("installed"):e.gray(`not installed (fallback: ${t.fallback})`);console.log(` ${i(t.name+":",30)} ${a}`)}console.log(""),console.log(e.cyan(" Feature Flags:"));for(let t of u){let r=o[t],a=v(t,r),s=r?e.green("true"):e.gray("false"),l=a?e.gray(" (default)"):e.yellow(" (modified)");console.log(` ${i(t+":",30)} ${s}${l}`)}let n=p.listIndexes();if(n.length>0){console.log(""),console.log(e.cyan(" HNSW Memory Usage:"));let t=0,r=0;for(let a of n){let s=p.get(a);if(s){let l=s.size(),c=s.dimensions(),R=l*c*4*3;t+=l,r+=R,console.log(` ${i(a+":",20)} ${e.white(String(l))} vectors, ${e.white(c)}d, ~${e.white(y(R))}`)}}console.log(e.gray(` ${"\u2500".repeat(50)}`)),console.log(` ${i("Total:",20)} ${e.bold.white(String(t))} vectors, ~${e.bold.white(y(r))}`)}else console.log(""),console.log(e.cyan(" HNSW Memory Usage:")),console.log(e.gray(" No active indexes (indexes are created on first use)"));o.useTemporalCompression&&(console.log(""),console.log(e.cyan(" Temporal Compression:")),console.log(e.gray(" Hot tier: 8-bit quantization (frequently accessed patterns)")),console.log(e.gray(" Warm tier: 5-bit quantization (moderately accessed patterns)")),console.log(e.gray(" Cold tier: 3-bit quantization (rarely accessed patterns)")),console.log(e.gray(" Estimated memory savings: 40-60% for cold patterns"))),console.log("")}function E(o){if(o.profile){if(!x(o.profile)){console.log(""),console.log(e.red(` Unknown profile: ${o.profile}`)),console.log(e.gray(` Valid profiles: ${Object.keys(m).join(", ")}`)),console.log(""),process.exit(1);return}let t=m[o.profile];d(t),console.log(""),console.log(e.bold.blue(`Setting ${o.profile} profile:`));for(let[r,a]of Object.entries(t)){let s=a?e.green("true"):e.gray("false");console.log(` ${i(r+":",30)} ${s}`)}console.log("");return}if(o.set){let t=o.set.indexOf("=");if(t<=0){console.log(""),console.log(e.red(" Invalid format. Use: --set flagName=true|false")),console.log(""),process.exit(1);return}let r=o.set.substring(0,t),a=o.set.substring(t+1);if(!T(r)){console.log(""),console.log(e.red(` Unknown flag: ${r}`)),console.log(e.gray(` Valid flags: ${u.join(", ")}`)),console.log(""),process.exit(1);return}if(a!=="true"&&a!=="false"){console.log(""),console.log(e.red(` Invalid value: ${a}. Use true or false.`)),console.log(""),process.exit(1);return}let s=a==="true";d({[r]:s});let l=s?e.green("true"):e.gray("false");console.log(""),console.log(e.green(` Set ${r} = ${l}`)),console.log("");return}let n=f();console.log(""),console.log(e.bold.blue("RuVector Feature Flags:")),console.log(""),console.log(e.bold(" "+i("Flag",28)+i("Value",10)+"Description")),console.log(e.gray(" "+"-".repeat(78)));for(let t of u){let r=n[t],a=v(t,r),s=r?e.green("true"):e.gray("false"),l=a?"":e.yellow(" *"),c=D[t];console.log(" "+i(t,28)+i(String(r),10)+e.gray(c)+l)}console.log(""),console.log(e.gray(" * = modified from default")),console.log(""),console.log(e.gray(" Profiles: performance, experimental, safe")),console.log(e.gray(" Usage:")),console.log(e.gray(" aqe ruvector flags --set useNativeHNSW=true")),console.log(e.gray(" aqe ruvector flags --profile=performance")),console.log("")}function b(){let o=new h("ruvector").description("RuVector integration management").addHelpText("after",`
|
|
3
|
+
Examples:
|
|
4
|
+
$ aqe ruvector status Show native packages and flags
|
|
5
|
+
$ aqe ruvector flags List all feature flags
|
|
6
|
+
$ aqe ruvector flags --set useNativeHNSW=true Toggle a flag
|
|
7
|
+
$ aqe ruvector flags --profile=performance Apply a preset profile
|
|
8
|
+
`);return o.command("status").description("Show native package availability and feature flag status").action(()=>{C()}),o.command("flags").description("List, set, or apply profiles to feature flags").option("-s, --set <flag=value>","Set a feature flag (e.g., useNativeHNSW=true)").option("-p, --profile <name>","Apply a preset profile (performance|experimental|safe)").action(n=>{E(n)}),o}var G=b;export{b as createRuVectorCommand,G as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a}from"./chunk-MZOFWJTM.js";import"./chunk-NZ2VCPN4.js";import"./chunk-24FKIJNC.js";import"./chunk-SUSEVMZT.js";import"./chunk-JJO7Y4H3.js";import"./chunk-N2NS2PHA.js";import"./chunk-3JPRUND5.js";import"./chunk-4VUPRTVX.js";import"./chunk-WGMPEW2T.js";import"./chunk-JZSDOIXA.js";import"./chunk-263XS447.js";import"./chunk-MDUHYUHF.js";import"./chunk-GAOJV3OX.js";import"./chunk-62ADTHV7.js";import"./chunk-DRT3WKQW.js";import"./chunk-UFUVUO3J.js";import"./chunk-7VDBAVTY.js";import"./chunk-B36CDR4U.js";import"./chunk-2I7J3O6V.js";import"./chunk-4I2IOUS4.js";export{a as TestScheduleTool};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-OLHKGP35.js";import"./chunk-RU5WAHB7.js";import"./chunk-3ZOONQG6.js";import"./chunk-WGMPEW2T.js";import"./chunk-JZSDOIXA.js";import"./chunk-4I2IOUS4.js";export{a as PersistentScheduler,b as createPersistentScheduler,d as createScheduleEntry,c as generateScheduleId};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{b as h}from"./chunk-JBANAPWG.js";import{c as g,d as f,e as S,i as w}from"./chunk-YR6ZZGH7.js";import"./chunk-4I2IOUS4.js";import{Command as b}from"commander";import e from"chalk";function P(v,a,k){return new b("security").description("Security scanning and URL validation").option("--sast","Run SAST scan").option("--dast","Run DAST scan").option("--compliance <frameworks>","Check compliance (gdpr,hipaa,soc2)","").option("--url-validate <url>","Validate a URL for security threats and PII exposure").option("--no-pii","Disable PII scanning when using --url-validate").option("-t, --target <path>","Target directory to scan",".").option("-F, --format <format>","Output format (text|json|sarif|markdown)","text").option("-o, --output <path>","Write output to file").action(async r=>{if(await k()){if(r.urlValidate){try{let o=r.format,u=r.urlValidate;o==="text"&&console.log(e.blue(`
|
|
3
|
+
Validating URL: ${u}
|
|
4
|
+
`));let{VisualSecurityTool:y}=await import("./visual-security-V47BLGJM.js"),c=await new y().invoke({url:u,enablePII:r.pii!==!1});if(c.success&&c.data){let t=c.data;if(o==="json")g(f(t),r.output);else{if(t.urlSecurity.valid)console.log(e.green(" URL Security: CLEAN"));else{console.log(e.red(` URL Security: ${t.urlSecurity.issues.length} issue(s) (risk: ${t.urlSecurity.riskLevel})`));for(let s of t.urlSecurity.issues){let i=s.severity==="critical"?e.red:s.severity==="high"?e.yellow:e.gray;console.log(i(` [${s.severity}] ${s.type}: ${s.description}`))}}if(t.piiExposure.scanned)if(t.piiExposure.found){console.log(e.red(`
|
|
5
|
+
PII Exposure: ${t.piiExposure.types.length} type(s) found in URL`));for(let s of t.piiExposure.details)console.log(e.yellow(` [${s.type}] in ${s.location}: ${s.masked}`))}else console.log(e.green(`
|
|
6
|
+
PII Exposure: none detected`));console.log(`
|
|
7
|
+
${t.summary}
|
|
8
|
+
`)}(t.urlSecurity.issues.some(s=>s.severity==="critical"||s.severity==="high")||t.piiExposure.found)&&await a(1)}else console.log(e.red(`Failed: ${c.error||"Unknown error"}`)),await a(1);await a(0)}catch(o){console.error(e.red(`
|
|
9
|
+
Failed:`),o),await a(1)}return}try{let o=r.format;o==="text"&&console.log(e.blue(`
|
|
10
|
+
Running security scan on ${r.target}...
|
|
11
|
+
`));let u=await v.kernel.getDomainAPIAsync("security-compliance");if(!u){console.log(e.red("Security domain not available"));return}let p=(await import("path")).resolve(r.target),c=h(p,{includeTests:!0});if(c.length===0){console.log(e.yellow("No files found to scan"));return}o==="text"&&console.log(e.gray(` Scanning ${c.length} files...
|
|
12
|
+
`));let t={vulnerabilities:[],target:r.target,scanType:[r.sast&&"SAST",r.dast&&"DAST",r.compliance&&"Compliance"].filter(Boolean).join("+")||"SAST"};if(r.sast){o==="text"&&console.log(e.blue(" SAST Scan:"));let i=await u.runSASTScan(c);if(i.success&&i.value){let l=i.value.vulnerabilities||[];if(t.vulnerabilities=l,o==="text")if(l.length===0)console.log(e.green(" * No vulnerabilities found"));else{console.log(e.yellow(` ! Found ${l.length} potential issues:`));for(let n of l.slice(0,10)){let m=n.severity==="high"?e.red:n.severity==="medium"?e.yellow:e.gray;console.log(m(` [${n.severity}] ${n.type}: ${n.file}:${n.line}`)),console.log(e.gray(` ${n.message}`))}l.length>10&&console.log(e.gray(` ... and ${l.length-10} more`))}}else o==="text"&&console.log(e.red(` x SAST failed: ${i.error?.message||"Unknown error"}`));o==="text"&&console.log("")}if(r.compliance){let i=r.compliance.split(",");o==="text"&&console.log(e.blue(` Compliance Check (${i.join(", ")}):`));let l=(await Promise.all(i.map(n=>u.runComplianceCheck(n.trim()))))[0];if(l.success&&l.value){let n=l.value;if(t.compliance=n,o==="text")if(n.compliant)console.log(e.green(" * Compliant with all frameworks"));else{console.log(e.yellow(" ! Compliance issues found:"));for(let m of(n.issues||[]).slice(0,5))console.log(e.yellow(` [${m.framework}] ${m.issue}`))}}else o==="text"&&console.log(e.red(` x Compliance check failed: ${l.error?.message||"Unknown error"}`));o==="text"&&console.log("")}r.dast&&o==="text"&&console.log(e.gray("Note: DAST requires running application URLs. Use --target with URLs for DAST scanning.")),o==="json"?g(f(t),r.output):o==="sarif"?g(S(t),r.output):o==="markdown"?g(w(t),r.output):console.log(e.green(` Security scan complete
|
|
13
|
+
`));let d=t.vulnerabilities.some(i=>i.severity==="high"||i.severity==="critical"),s=t.vulnerabilities.some(i=>i.severity==="medium");d?await a(1):s&&await a(2),await a(0)}catch(o){console.error(e.red(`
|
|
14
|
+
Failed:`),o),await a(1)}}})}export{P as createSecurityCommand};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-VSVXUTJN.js";import"./chunk-YW2THB5Q.js";import"./chunk-SUSEVMZT.js";import"./chunk-JJO7Y4H3.js";import"./chunk-N2NS2PHA.js";import"./chunk-3JPRUND5.js";import"./chunk-4VUPRTVX.js";import"./chunk-WGMPEW2T.js";import"./chunk-JZSDOIXA.js";import"./chunk-263XS447.js";import"./chunk-MDUHYUHF.js";import"./chunk-GAOJV3OX.js";import"./chunk-62ADTHV7.js";import"./chunk-DRT3WKQW.js";import"./chunk-UFUVUO3J.js";import"./chunk-7VDBAVTY.js";import"./chunk-B36CDR4U.js";import"./chunk-2I7J3O6V.js";import"./chunk-4I2IOUS4.js";export{a as DEFAULT_SQLITE_CONFIG,c as SQLitePatternStore,d as createSQLitePatternStore,b as hashEmbedding};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{c as g,d as h}from"./chunk-YR6ZZGH7.js";import{a as m,c as y}from"./chunk-YANUP2RO.js";import"./chunk-4I2IOUS4.js";import t from"chalk";var p=class{name="status";description="Show system status";cleanupAndExit;ensureInitialized;constructor(o,n){this.cleanupAndExit=o,this.ensureInitialized=n}register(o,n){o.command("status").description(this.description).option("-v, --verbose","Show detailed status").option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async a=>{await this.executeStatus(a,n)})}async executeStatus(o,n){if(await this.ensureInitialized())try{let a=n.queen.getHealth(),e=n.queen.getMetrics();if((o.format||"text")==="json"){let s={};if(o.verbose)for(let[i,l]of a.domainHealth)s[i]={status:l.status,agents:l.agents,errors:l.errors.length};g(h({status:a.status,uptime:e.uptime,workStealing:a.workStealingActive,agents:{total:a.totalAgents,active:a.activeAgents,utilization:e.agentUtilization},tasks:{received:e.tasksReceived,completed:e.tasksCompleted,failed:e.tasksFailed,pending:a.pendingTasks,running:a.runningTasks,stolen:e.tasksStolen},coordination:{protocols:e.protocolsExecuted,workflows:e.workflowsExecuted},...o.verbose?{domains:s}:{},issues:a.issues}),o.output),await this.cleanupAndExit(0);return}if(console.log(t.blue(`
|
|
3
|
+
AQE v3 Status
|
|
4
|
+
`)),console.log(` Status: ${m(a.status)}`),console.log(` Uptime: ${t.cyan(y(e.uptime))}`),console.log(` Work Stealing: ${a.workStealingActive?t.green("active"):t.gray("inactive")}`),console.log(t.blue(`
|
|
5
|
+
Agents:`)),console.log(` Total: ${t.cyan(a.totalAgents)}`),console.log(` Active: ${t.yellow(a.activeAgents)}`),console.log(` Utilization: ${t.cyan((e.agentUtilization*100).toFixed(1))}%`),console.log(t.blue(`
|
|
6
|
+
Tasks:`)),console.log(` Received: ${t.cyan(e.tasksReceived)}`),console.log(` Completed: ${t.green(e.tasksCompleted)}`),console.log(` Failed: ${t.red(e.tasksFailed)}`),console.log(` Pending: ${t.yellow(a.pendingTasks)}`),console.log(` Running: ${t.yellow(a.runningTasks)}`),e.tasksStolen>0&&console.log(` Stolen (work stealing): ${t.cyan(e.tasksStolen)}`),(e.protocolsExecuted>0||e.workflowsExecuted>0)&&(console.log(t.blue(`
|
|
7
|
+
Coordination:`)),console.log(` Protocols Executed: ${t.cyan(e.protocolsExecuted)}`),console.log(` Workflows Executed: ${t.cyan(e.workflowsExecuted)}`)),o.verbose){console.log(t.blue(`
|
|
8
|
+
Domain Status:`));let s=Array.from(a.domainHealth.entries());for(let[l,r]of s)console.log(` ${l}: ${m(r.status)}`),console.log(t.gray(` Agents: ${r.agents.active}/${r.agents.total} active`)),r.errors.length>0&&console.log(t.red(` Errors: ${r.errors.length}`));console.log(t.blue(`
|
|
9
|
+
Domain Load:`));let i=Array.from(e.domainUtilization.entries());for(let[l,r]of i){let d="\u2588".repeat(Math.min(r,20))+"\u2591".repeat(Math.max(0,20-r));console.log(` ${l.padEnd(25)} ${d} ${r}`)}}if(a.issues.length>0){console.log(t.red(`
|
|
10
|
+
Issues:`));for(let s of a.issues){let i=s.severity==="high"?t.red:s.severity==="medium"?t.yellow:t.gray;console.log(` ${i(`[${s.severity}]`)} ${s.message}`)}}console.log(""),await this.cleanupAndExit(0)}catch(a){console.error(t.red(`
|
|
11
|
+
Failed to get status:`),a),await this.cleanupAndExit(1)}}getHelp(){return`
|
|
12
|
+
Show system status including agents, tasks, and domain health.
|
|
13
|
+
|
|
14
|
+
Usage:
|
|
15
|
+
aqe status [options]
|
|
16
|
+
|
|
17
|
+
Options:
|
|
18
|
+
-v, --verbose Show detailed status including domain breakdown
|
|
19
|
+
|
|
20
|
+
Examples:
|
|
21
|
+
aqe status # Basic status
|
|
22
|
+
aqe status -v # Verbose status with domain details
|
|
23
|
+
`}},f=class{name="health";description="Check system health";cleanupAndExit;ensureInitialized;constructor(o,n){this.cleanupAndExit=o,this.ensureInitialized=n}register(o,n){o.command("health").description(this.description).option("-d, --domain <domain>","Check specific domain health").option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async a=>{await this.executeHealth(a,n)})}async executeHealth(o,n){if(await this.ensureInitialized())try{if((o.format||"text")==="json"){if(o.domain){let e=n.queen.getDomainHealth(o.domain);if(!e){g(h({error:`Domain not found: ${o.domain}`}),o.output),await this.cleanupAndExit(1);return}g(h({domain:o.domain,status:e.status,agents:e.agents,lastActivity:e.lastActivity?.toISOString()||null,errors:e.errors}),o.output)}else{let e=n.queen.getHealth(),c={};for(let[s,i]of e.domainHealth)c[s]={status:i.status,agents:i.agents};g(h({status:e.status,lastCheck:e.lastHealthCheck.toISOString(),domains:c,issues:e.issues}),o.output)}await this.cleanupAndExit(0);return}if(o.domain){let e=n.queen.getDomainHealth(o.domain);if(!e){console.log(t.red(`
|
|
24
|
+
Domain not found: ${o.domain}
|
|
25
|
+
`));return}console.log(t.blue(`
|
|
26
|
+
Health: ${o.domain}
|
|
27
|
+
`)),console.log(` Status: ${m(e.status)}`),console.log(` Agents: ${e.agents.active}/${e.agents.total} active`),console.log(` Idle: ${e.agents.idle}`),console.log(` Failed: ${e.agents.failed}`),e.lastActivity&&console.log(` Last Activity: ${e.lastActivity.toISOString()}`),e.errors.length>0&&(console.log(t.red(`
|
|
28
|
+
Errors:`)),e.errors.forEach(c=>console.log(t.red(` - ${c}`))))}else{let e=n.queen.getHealth();console.log(t.blue(`
|
|
29
|
+
System Health
|
|
30
|
+
`)),console.log(` Overall: ${m(e.status)}`),console.log(` Last Check: ${e.lastHealthCheck.toISOString()}`);let c=0,s=0,i=0,l=0,r=Array.from(e.domainHealth.entries());for(let[,d]of r)d.status==="healthy"?c++:d.status==="idle"?s++:d.status==="degraded"?i++:l++;console.log(t.blue(`
|
|
31
|
+
Domains:`)),console.log(` ${t.green("\u25CF")} Healthy: ${c}`),console.log(` ${t.cyan("\u25CF")} Idle (ready): ${s}`),console.log(` ${t.yellow("\u25CF")} Degraded: ${i}`),console.log(` ${t.red("\u25CF")} Unhealthy: ${l}`),s>0&&c===0&&i===0&&l===0&&console.log(t.gray(`
|
|
32
|
+
Tip: Domains are idle (ready). Run a task to spawn agents.`))}console.log(""),await this.cleanupAndExit(0)}catch(a){console.error(t.red(`
|
|
33
|
+
Health check failed:`),a),await this.cleanupAndExit(1)}}getHelp(){return`
|
|
34
|
+
Check system and domain health status.
|
|
35
|
+
|
|
36
|
+
Usage:
|
|
37
|
+
aqe health [options]
|
|
38
|
+
|
|
39
|
+
Options:
|
|
40
|
+
-d, --domain <domain> Check specific domain health
|
|
41
|
+
|
|
42
|
+
Examples:
|
|
43
|
+
aqe health # Overall system health
|
|
44
|
+
aqe health -d test-generation # Check test-generation domain
|
|
45
|
+
`}};function C(u,o){return new p(u,o)}function S(u,o){return new f(u,o)}export{f as HealthHandler,p as StatusHandler,S as createHealthHandler,C as createStatusHandler};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a as l}from"./chunk-VOS4NQSF.js";import"./chunk-3IUNFTIF.js";import"./chunk-ZDATDCYN.js";import"./chunk-2I7J3O6V.js";import"./chunk-4I2IOUS4.js";var s={healthyThreshold:.4,warningThreshold:.2,maxHistoryEntries:100,enableLogging:!1},n=class{config;minCutService;history=[];constructor(t){this.config={...s,...t},this.minCutService=l()}computeFleetHealth(t){if(t.length===0)return this.emptyFleetResult();let r=this.minCutService.buildTaskGraphFromTopology(t);return this.computeFleetHealthFromGraph(r,t.length)}computeFleetHealthFromGraph(t,r){if(t.nodes.length===0)return this.emptyFleetResult();let e=this.minCutService.getStructuralHealth(t),o=this.determineStatus(e.normalizedLambda),a={lambda:e.lambda,healthy:e.healthy,weakPoints:e.weakPoints,normalizedLambda:e.normalizedLambda,riskScore:e.riskScore,status:o,suggestions:e.suggestions,measuredAt:new Date};return this.addHistoryEntry({lambda:e.lambda,healthy:e.healthy,weakPointCount:e.weakPoints.length,agentCount:r??t.nodes.length,timestamp:a.measuredAt}),this.config.enableLogging&&this.logHealth(a),a}getTrend(){if(this.history.length<2)return"stable";let t=Math.min(5,this.history.length),r=this.history.slice(-t),e=r[0].lambda,a=r[r.length-1].lambda-e;return Math.abs(a)<.05?"stable":a>0?"improving":"degrading"}getHistory(t){let r=[...this.history];return t!==void 0&&t<r.length?r.slice(-t):r}clearHistory(){this.history.length=0}getMinCutService(){return this.minCutService}determineStatus(t){return t>=this.config.healthyThreshold?"healthy":t>=this.config.warningThreshold?"warning":"critical"}addHistoryEntry(t){this.history.push(t),this.history.length>this.config.maxHistoryEntries&&this.history.splice(0,this.history.length-this.config.maxHistoryEntries)}emptyFleetResult(){return{lambda:0,healthy:!1,weakPoints:[],normalizedLambda:0,riskScore:1,status:"empty",suggestions:["No agents in fleet. Spawn agents to build a topology."],measuredAt:new Date}}logHealth(t){console.error(`[StructuralHealth] Status: ${t.status} | Lambda: ${t.normalizedLambda.toFixed(3)} | Weak points: ${t.weakPoints.length} | Risk: ${(t.riskScore*100).toFixed(0)}%`)}};function d(i){return new n(i)}export{s as DEFAULT_STRUCTURAL_HEALTH_CONFIG,n as StructuralHealthMonitor,d as createStructuralHealthMonitor};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import"./chunk-CL6POIX4.js";import{f as z}from"./chunk-SUSEVMZT.js";import{b as R,c as w,d as x,f as te,o as pe}from"./chunk-JJO7Y4H3.js";import"./chunk-N2NS2PHA.js";import{a as P}from"./chunk-3JPRUND5.js";import{c as h}from"./chunk-4VUPRTVX.js";import{a as Re,b as j,d as ee}from"./chunk-WGMPEW2T.js";import{a as l,b as q,c as v}from"./chunk-JZSDOIXA.js";import{a as $,b as F}from"./chunk-263XS447.js";import"./chunk-MDUHYUHF.js";import"./chunk-GAOJV3OX.js";import"./chunk-62ADTHV7.js";import"./chunk-DRT3WKQW.js";import"./chunk-UFUVUO3J.js";import"./chunk-7VDBAVTY.js";import{d as Ce}from"./chunk-B36CDR4U.js";import"./chunk-2I7J3O6V.js";import{f as Ee}from"./chunk-4I2IOUS4.js";import{Command as Ie}from"commander";import a from"chalk";import O from"ora";var A={cloud:{project:process.env.GCP_PROJECT||"",zone:process.env.GCP_ZONE||"",instance:process.env.GCP_INSTANCE||"",database:process.env.GCP_DATABASE||"",user:process.env.GCP_USER||"",tunnelPort:parseInt(process.env.GCP_TUNNEL_PORT||"15432",10)},environment:process.env.AQE_ENV||"all",batchSize:1e3,sources:[{name:"qe-patterns",cloudTable:"aqe.qe_patterns",localTable:"qe_patterns",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","embedding","sync_version"],transforms:{reusable:"boolean-to-int"}},{name:"sona-patterns",cloudTable:"aqe.sona_patterns",localTable:"sona_patterns",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","sync_version"],transforms:{is_active:"boolean-to-int",requires_fine_tuning:"boolean-to-int"}},{name:"goap-actions",cloudTable:"aqe.goap_actions",localTable:"goap_actions",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{duration_estimate:"estimated_duration_ms"}},{name:"goap-plans",cloudTable:"aqe.goap_plans",localTable:"goap_plans",enabled:!0,priority:"medium",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{estimated_duration:"estimated_duration_ms"}},{name:"memory-entries",cloudTable:"aqe.memory_entries",localTable:"kv_store",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{partition:"namespace"}},{name:"learning-experiences",cloudTable:"aqe.learning_experiences",localTable:"captured_experiences",enabled:!0,priority:"high",mode:"append",dropColumns:["id","source_env","sync_version"],columnMap:{agent_id:"agent",task_id:"task",task_type:"domain",state:"result_json",action:"steps_json",reward:"quality",next_state:"routing_json",episode_id:"tags",created_at:"started_at"}},{name:"qlearning-patterns",cloudTable:"aqe.qlearning_patterns",localTable:"rl_q_values",enabled:!0,priority:"medium",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{state:"state_key",action:"action_key",last_update:"updated_at"}},{name:"routing-outcomes",cloudTable:"aqe.routing_outcomes",localTable:"routing_outcomes",enabled:!0,priority:"medium",mode:"append",dropColumns:["source_env","sync_version"]},{name:"qe-trajectories",cloudTable:"aqe.qe_trajectories",localTable:"qe_trajectories",enabled:!0,priority:"medium",mode:"append",dropColumns:["source_env","sync_version","embedding"]},{name:"dream-insights",cloudTable:"aqe.dream_insights",localTable:"dream_insights",enabled:!0,priority:"low",mode:"append",dropColumns:["source_env","sync_version"]},{name:"claude-flow-memory",cloudTable:"aqe.claude_flow_memory",localTable:"kv_store",enabled:!0,priority:"low",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{partition:"namespace"}}]};var m={local:{v3MemoryDb:"./.agentic-qe/memory.db",rootMemoryDb:"./.agentic-qe/memory.db",claudeFlowMemory:"./.claude-flow/memory/store.json",claudeFlowDaemon:"./.claude-flow/daemon-state.json",claudeFlowMetrics:"./.claude-flow/metrics/",intelligenceJson:"./.ruvector/intelligence.json",swarmMemoryDb:"./.swarm/memory.db",v2PatternsDb:""},cloud:{project:process.env.GCP_PROJECT||"",zone:process.env.GCP_ZONE||"",instance:process.env.GCP_INSTANCE||"",database:process.env.GCP_DATABASE||"",user:process.env.GCP_USER||"",tunnelPort:parseInt(process.env.GCP_TUNNEL_PORT||"15432",10)},sync:{mode:"incremental",interval:"1h",batchSize:1e3,conflictResolution:"newer-wins",sourcePriority:{qePatterns:1,sonaPatterns:2,goapActions:3,kvStore:4,experiences:5,claudeFlowMemory:6,intelligenceJson:7},sources:[{name:"root-qe-patterns",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.qe_patterns",priority:"high",mode:"incremental",query:"SELECT id, pattern_type, qe_domain, domain, name, description, confidence, usage_count, success_rate, quality_score, tier, template_json, context_json, successful_uses, created_at, updated_at, last_used_at, tokens_used, input_tokens, output_tokens, latency_ms, reusable, reuse_count, average_token_savings, total_tokens_saved FROM qe_patterns",enabled:!0},{name:"root-sona-patterns",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.sona_patterns",priority:"high",mode:"incremental",query:"SELECT * FROM sona_patterns",enabled:!0},{name:"root-goap-actions",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.goap_actions",priority:"high",mode:"incremental",query:"SELECT * FROM goap_actions",enabled:!0},{name:"root-kv-store",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.memory_entries",priority:"high",mode:"incremental",query:"SELECT key, namespace as partition, CASE WHEN json_valid(value) THEN value ELSE json_quote(value) END as value, created_at, expires_at FROM kv_store WHERE json_valid(value) OR json_valid(json_quote(value))",enabled:!0},{name:"root-captured-experiences",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.learning_experiences",priority:"high",mode:"append",query:"SELECT agent as agent_id, task as task_id, domain as task_type, COALESCE(result_json, '{}') as state, COALESCE(steps_json, '{}') as action, quality as reward, COALESCE(routing_json, '{}') as next_state, tags as episode_id, started_at as created_at FROM captured_experiences",enabled:!0},{name:"root-goap-plans",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.goap_plans",priority:"medium",mode:"incremental",query:"SELECT id, goal_id, action_sequence as sequence, initial_state, goal_state, action_sequence, total_cost, estimated_duration_ms as estimated_duration, status, created_at, completed_at FROM goap_plans",enabled:!0},{name:"root-rl-q-values",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.qlearning_patterns",priority:"medium",mode:"incremental",query:"SELECT DISTINCT state_key as state, action_key as action, q_value, visits, updated_at as last_update, created_at FROM rl_q_values GROUP BY state_key, action_key",enabled:!0},{name:"root-routing-outcomes",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.routing_outcomes",priority:"medium",mode:"append",query:"SELECT * FROM routing_outcomes",enabled:!0},{name:"root-qe-trajectories",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.qe_trajectories",priority:"medium",mode:"append",query:"SELECT * FROM qe_trajectories",enabled:!0},{name:"root-dream-insights",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.dream_insights",priority:"low",mode:"append",query:"SELECT * FROM dream_insights",enabled:!0},{name:"claude-flow-memory",type:"json",path:"./.claude-flow/memory/store.json",targetTable:"aqe.claude_flow_memory",priority:"medium",mode:"full",enabled:!0},{name:"intelligence-qlearning",type:"json",path:"./.ruvector/intelligence.json",targetTable:"aqe.qlearning_patterns",priority:"low",mode:"full",jsonPath:"$.qvalues",enabled:!0}]},environment:process.env.AQE_ENV||"devpod"};F();x();ee();v();P();import*as ne from"fs";import*as fe from"path";var W=h.create("sqlite-reader"),U=class{name;type="sqlite";db=null;config;dbPath;constructor(e){this.config=e,this.name=e.source.name,this.dbPath=fe.resolve(e.baseDir,e.source.path)}async initialize(){if(!this.db){if(!ne.existsSync(this.dbPath))throw new Error(`SQLite database not found: ${this.dbPath}`);try{this.db=$(this.dbPath,{readonly:!0}),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),console.log(`[SQLiteReader:${this.name}] Initialized: ${this.dbPath}`)}catch(e){throw new Error(`Failed to open SQLite database ${this.dbPath}: ${l(e)}`)}}}async readAll(){if(!this.db)throw new Error("Reader not initialized");let e=this.config.source.query||`SELECT * FROM ${R(this.getTableName())}`;try{return this.tableExists(this.getTableName())?this.db.prepare(e).all().map(r=>this.transformRecord(r)):(console.warn(`[SQLiteReader:${this.name}] Table not found, returning empty`),[])}catch(t){throw new Error(`Failed to read from ${this.name}: ${l(t)}`)}}async readChanged(e){if(!this.db)throw new Error("Reader not initialized");let t=this.findTimestampColumn();if(!t)return console.warn(`[SQLiteReader:${this.name}] No timestamp column found, falling back to readAll`),this.readAll();let n=this.getTableName();if(!this.tableExists(n))return[];let r=e.toISOString(),o=`SELECT * FROM ${R(n)} WHERE ${t} > ?`;try{return this.db.prepare(o).all(r).map(d=>this.transformRecord(d))}catch{return console.warn(`[SQLiteReader:${this.name}] Changed query failed, falling back to readAll`),this.readAll()}}async count(){if(!this.db)throw new Error("Reader not initialized");let e=this.getTableName();if(!this.tableExists(e))return 0;try{return this.db.prepare(`SELECT COUNT(*) as count FROM ${R(e)}`).get().count}catch(t){return W.debug("Record count query failed",{table:e,error:l(t)}),0}}async close(){this.db&&(this.db.close(),this.db=null,console.log(`[SQLiteReader:${this.name}] Closed`))}getTableName(){let e=this.config.source.query;if(e){let r=e.match(/FROM\s+(\w+)/i);if(r)return r[1]}let n=this.config.source.targetTable.split(".");return n[n.length-1]}tableExists(e){if(!this.db)return!1;try{return!!this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=?").get(e)}catch(t){return W.debug("Table existence check failed",{table:e,error:t instanceof Error?t.message:String(t)}),!1}}findTimestampColumn(){if(!this.db)return null;let e=this.getTableName(),t=["updated_at","created_at","timestamp","last_used_at","modified_at"];try{let o=this.db.prepare(`PRAGMA table_info(${R(e)})`).all().map(s=>s.name.toLowerCase());for(let s of t)if(o.includes(s))return s}catch(n){return W.debug("Timestamp column detection failed",{table:e,error:n instanceof Error?n.message:String(n)}),null}return null}transformRecord(e){let t={...e,source_env:this.config.environment};for(let[n,r]of Object.entries(t)){if(typeof r=="string"&&this.looksLikeJson(r))try{t[n]=j(r)}catch(o){W.debug("JSON parse failed for record field",{key:n,error:o instanceof Error?o.message:String(o)})}if(n.endsWith("_at")&&typeof r=="number"&&(t[n]=new Date(r).toISOString()),r instanceof Buffer)if(n.includes("embedding")){let o=e.dimension||384;t[n]=Array.from(new Float32Array(r.buffer,r.byteOffset,o))}else t[n]=r.toString("base64")}return t}looksLikeJson(e){if(!e)return!1;let t=e.trim();return t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")}getInfo(){let e=ne.existsSync(this.dbPath),t=[];if(e&&this.db)try{t=this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").all().map(r=>r.name)}catch(n){console.debug("[SQLiteReader] Table listing error:",n instanceof Error?n.message:n)}return{path:this.dbPath,exists:e,tables:t}}};function re(i){return new U(i)}var ye=Ee(Re(),1);v();import{randomUUID as Te}from"crypto";import*as T from"fs";import*as he from"path";var B=class{name;type="json";config;filePath;data=null;fileModTime=null;constructor(e){this.config=e,this.name=e.source.name,this.filePath=he.resolve(e.baseDir,e.source.path)}async initialize(){if(!T.existsSync(this.filePath)){console.warn(`[JSONReader:${this.name}] File not found: ${this.filePath}`),this.data=[];return}let e=T.statSync(this.filePath);this.fileModTime=e.mtime,console.log(`[JSONReader:${this.name}] Initialized: ${this.filePath}`)}async readAll(){if(!T.existsSync(this.filePath))return[];try{let e=T.readFileSync(this.filePath,"utf-8"),t=ye.default.parse(e);return this.extractRecords(t).map(r=>this.transformRecord(r))}catch(e){return console.error(`[JSONReader:${this.name}] Failed to read: ${l(e)}`),[]}}async readChanged(e){return T.existsSync(this.filePath)?T.statSync(this.filePath).mtime<=e?[]:this.readAll():[]}async count(){return(await this.readAll()).length}async close(){this.data=null,this.fileModTime=null,console.log(`[JSONReader:${this.name}] Closed`)}extractRecords(e){return this.config.source.jsonPath?this.extractByPath(e,this.config.source.jsonPath):this.name.includes("claude-flow-memory")?this.extractClaudeFlowMemory(e):this.name.includes("intelligence")||this.name.includes("qlearning")?this.extractIntelligence(e):this.name.includes("daemon")?this.extractDaemonState(e):Array.isArray(e)?e:typeof e=="object"&&e!==null?Object.entries(e).map(([n,r])=>({key:n,value:r})):[]}extractByPath(e,t){let n=t.replace(/^\$\./,"").split("."),r=e;for(let o of n)if(r&&typeof r=="object"&&o in r)r=r[o];else return[];return Array.isArray(r)?r:typeof r=="object"&&r!==null?Object.entries(r).map(([o,s])=>({state:o,...typeof s=="object"?s:{value:s}})):[]}extractClaudeFlowMemory(e){if(!e||typeof e!="object")return[];let t=[],n=e;for(let[r,o]of Object.entries(n)){if(r.startsWith("_"))continue;let s="general";r.includes("adr")?s="adr-analysis":r.includes("agent")?s="agent-patterns":r.includes("pattern")?s="patterns":r.includes("metric")&&(s="metrics"),t.push({key:r,value:typeof o=="object"?o:{data:o},category:s})}return t}extractIntelligence(e){if(!e||typeof e!="object")return[];let t=[],n=e;if(n.qvalues&&typeof n.qvalues=="object"){let r=n.qvalues;for(let[o,s]of Object.entries(r))if(typeof s=="object"&&s!==null)for(let[c,d]of Object.entries(s)){let u=typeof d=="object"?d:{value:d};t.push({state:o,action:c,q_value:u.value||u.q_value||0,visits:u.visits||0,last_update:u.lastUpdate||u.last_update})}}if(n.memories&&Array.isArray(n.memories)){for(let r of n.memories)if(typeof r=="object"&&r!==null){let o=r;t.push({id:o.id||`mem_${Date.now()}_${Te().slice(0,12)}`,memory_type:o.type||"file_access",content:o.content||o.path,embedding:o.embedding,metadata:o.metadata,timestamp:o.timestamp})}}return t}extractDaemonState(e){if(!e||typeof e!="object")return[];let t=[],n=e;if(n.workers&&typeof n.workers=="object"){let r=n.workers;for(let[o,s]of Object.entries(r))if(typeof s=="object"&&s!==null){let c=s;t.push({worker_type:o,run_count:c.runCount||c.runs||0,success_count:c.successCount||c.successes||0,failure_count:c.failureCount||c.failures||0,avg_duration_ms:c.avgDuration||c.averageDurationMs,last_run:c.lastRun})}}return t}transformRecord(e){let t={...e,source_env:this.config.environment};for(let[n,r]of Object.entries(t))(n.includes("timestamp")||n.endsWith("_at")||n==="last_update")&&(typeof r=="number"?t[n]=new Date(r).toISOString():typeof r=="string"&&!isNaN(Date.parse(r))&&(t[n]=new Date(r).toISOString())),typeof r=="object"&&r!==null&&!Array.isArray(r)&&["value","metadata","embedding"].includes(n);return t.created_at||(t.created_at=new Date().toISOString()),t}getInfo(){let e=T.existsSync(this.filePath),t=0,n=null;if(e){let r=T.statSync(this.filePath);t=r.size,n=r.mtime}return{path:this.filePath,exists:e,modTime:n,size:t}}};function oe(i){return new B(i)}P();import{spawn as ve}from"child_process";import{createConnection as Pe}from"net";var _e=h.create("tunnel-manager");function be(i){try{let e=new URL(i);return e.password&&(e.password="***"),e.toString()}catch(e){return _e.debug("URL parse failed during redaction, using regex fallback",{error:e instanceof Error?e.message:String(e)}),i.replace(/:\/\/([^:]+):([^@]+)@/,"://$1:***@")}}var J=class{process=null;connection=null;config;constructor(e){this.config=e}checkPort(e,t,n=2e3){return new Promise(r=>{let o=Pe({host:e,port:t}),s=setTimeout(()=>{o.destroy(),r(!1)},n);o.on("connect",()=>{clearTimeout(s),o.destroy(),r(!0)}),o.on("error",()=>{clearTimeout(s),o.destroy(),r(!1)})})}async start(){return this.process&&this.connection?(console.log("[TunnelManager] Tunnel already running"),this.connection):await this.checkPort("localhost",this.config.tunnelPort)?(console.log(`[TunnelManager] External tunnel detected on port ${this.config.tunnelPort}, reusing`),this.connection={host:"localhost",port:this.config.tunnelPort,startedAt:new Date},this.connection):new Promise((t,n)=>{let r=["compute","start-iap-tunnel",this.config.instance,"5432",`--local-host-port=localhost:${this.config.tunnelPort}`,`--zone=${this.config.zone}`,`--project=${this.config.project}`];console.log(`[TunnelManager] Starting IAP tunnel: gcloud ${r.join(" ")}`),this.process=ve("gcloud",r,{stdio:["ignore","pipe","pipe"]});let o=!1,s="",c=!1;this.process.stderr?.on("data",d=>{let u=d.toString();console.log(`[TunnelManager] ${u.trim()}`),["Listening on port","tunnel is running","Testing if tunnel connection works"].some(y=>u.includes(y))&&!o&&!c&&(c=!0,setTimeout(async()=>{for(let p=0;p<10;p++){if(console.log(`[TunnelManager] Checking port connectivity (attempt ${p+1}/10)...`),await this.checkPort("localhost",this.config.tunnelPort)){o=!0,this.connection={host:"localhost",port:this.config.tunnelPort,pid:this.process?.pid,startedAt:new Date},console.log(`[TunnelManager] Tunnel ready on port ${this.config.tunnelPort}`),t(this.connection);return}await new Promise(S=>setTimeout(S,1e3))}c=!1},2e3)),s+=u}),this.process.stdout?.on("data",d=>{let u=d.toString();console.log(`[TunnelManager] ${u.trim()}`)}),this.process.on("error",d=>{console.error(`[TunnelManager] Process error: ${d.message}`),o||n(new Error(`Failed to start tunnel: ${d.message}`))}),this.process.on("close",d=>{console.log(`[TunnelManager] Process closed with code ${d}`),this.process=null,this.connection=null,o||n(new Error(`Tunnel process exited with code ${d}: ${s}`))}),setTimeout(()=>{o||(this.stop(),n(new Error("Tunnel connection timeout")))},6e4)})}async stop(){this.process&&(console.log("[TunnelManager] Stopping tunnel"),this.process.kill("SIGTERM"),await new Promise(e=>setTimeout(e,1e3)),this.process&&this.process.kill("SIGKILL"),this.process=null,this.connection=null)}isActive(){return this.process!==null&&this.connection!==null}getConnection(){return this.connection}getConnectionString(){if(!this.connection)throw new Error("Tunnel not active");let{database:e,user:t}=this.config,n=process.env.PGPASSWORD||"",r=this.connection.host,o=this.connection.port;return`postgresql://${t}:${n}@${r}:${o}/${e}`}getRedactedConnectionString(){return be(this.getConnectionString())}};var Q=class{connection=null;connectionString;constructor(e){this.connectionString=e}async start(){let e=new URL(this.connectionString);return this.connection={host:e.hostname,port:parseInt(e.port||"5432",10),startedAt:new Date},this.connection}async stop(){this.connection=null}isActive(){return this.connection!==null}getConnection(){return this.connection}getConnectionString(){return this.connectionString}getRedactedConnectionString(){return be(this.connectionString)}};function M(i){return i.connectionString?new Q(i.connectionString):new J(i)}x();v();P();import{createRequire as $e}from"module";var D=h.create("postgres-writer"),xe=$e(import.meta.url),G=class{client=null;config;inTransaction=!1;connected=!1;constructor(e){this.config=e}async connect(){if(this.connected)return;this.config.tunnelManager.isActive()||await this.config.tunnelManager.start();let e=this.config.tunnelManager.getConnection();if(!e)throw new Error("No tunnel connection available");let t;try{t=xe("pg")}catch(s){D.debug("pg module not installed, using mock mode",{error:s instanceof Error?s.message:String(s)}),console.warn("[PostgresWriter] pg module not installed, running in mock mode"),this.client=this.createMockClient(),this.connected=!0;return}let n=t.default,r=t.Client||n?.Client;if(!r){console.warn("[PostgresWriter] pg.Client not found in module, running in mock mode"),this.client=this.createMockClient(),this.connected=!0;return}let o={host:e.host,port:e.port,database:this.config.cloud.database,user:this.config.cloud.user,password:process.env.PGPASSWORD||"",connectionTimeoutMillis:this.config.connectionTimeout||1e4};this.client=new r(o),await this.client.connect(),this.connected=!0,console.log(`[PostgresWriter] Connected to ${e.host}:${e.port}/${this.config.cloud.database}`)}async beginTransaction(){if(!this.client)throw new Error("Not connected");await this.client.query("BEGIN"),this.inTransaction=!0}async commit(){if(!this.client||!this.inTransaction)throw new Error("No active transaction");await this.client.query("COMMIT"),this.inTransaction=!1}async rollback(){!this.client||!this.inTransaction||(await this.client.query("ROLLBACK"),this.inTransaction=!1)}async upsert(e,t,n){if(!this.client)throw new Error("Not connected");if(t.length===0)return 0;let r=t[0],o=Object.keys(r),s=n?.conflictColumns||this.inferConflictColumns(e,o),c=n?.updateColumns||o.filter(g=>!s.includes(g)),d=0,u=100;for(let g=0;g<t.length;g+=u){let E=t.slice(g,g+u);try{let y=await this.upsertBatch(e,E,o,s,c,n?.skipIfExists);d+=y}catch(y){let p=Math.floor(g/u)+1,b=Math.ceil(t.length/u);D.debug(`Batch ${p}/${b} failed for ${e}, retrying individually`,{error:l(y)});let S=0;for(let f of E)try{let C=await this.upsertBatch(e,[f],o,s,c,n?.skipIfExists);S+=C}catch(C){let L=f.id||f.key||"?";D.debug(`Skipped record ${String(L).slice(0,50)} in ${e}`,{error:l(C)})}d+=S,S<E.length&&console.warn(`[PostgresWriter] Batch ${p}/${b} for ${e}: ${S}/${E.length} recovered (${E.length-S} skipped)`)}}return d}async upsertBatch(e,t,n,r,o,s){if(!this.client)return 0;let c=[],d=[],u=1;for(let f of t){let C=[];for(let L of n){let we=f[L];C.push(`$${u++}`),d.push(this.serializeValue(we,L))}c.push(`(${C.join(", ")})`)}let g=w(e),E=n.map(w),y=r.map(w),p=o.map(w),b="";if(y.length>0){if(s)b=`ON CONFLICT (${y.join(", ")}) DO NOTHING`;else if(p.length>0){let f=p.map(C=>`${C} = EXCLUDED.${C}`).join(", ");b=`ON CONFLICT (${y.join(", ")}) DO UPDATE SET ${f}`}}let S=`
|
|
3
|
+
INSERT INTO ${g} (${E.join(", ")})
|
|
4
|
+
VALUES ${c.join(", ")}
|
|
5
|
+
${b}
|
|
6
|
+
`;try{return(await this.client.query(S,d)).rowCount||0}catch(f){throw D.debug(`Upsert failed for ${e}`,{error:l(f)}),f}}async execute(e,t){if(!this.client)throw new Error("Not connected");await this.client.query(e,t)}async query(e,t){if(!this.client)throw new Error("Not connected");return(await this.client.query(e,t)).rows}async close(){this.inTransaction&&await this.rollback(),this.client&&(await this.client.end(),this.client=null,this.connected=!1,console.log("[PostgresWriter] Connection closed"))}serializeValue(e,t){if(e==null)return null;if(Buffer.isBuffer(e)){try{let n=new Float32Array(e.buffer,e.byteOffset,e.length/4);if(n.length>0&&n.length<=1024)return`[${Array.from(n).join(",")}]`}catch(n){D.debug("Buffer to float array conversion failed",{error:n instanceof Error?n.message:String(n)})}return null}if(typeof e=="number")return e>9466848e5&&e<41024448e5?new Date(e).toISOString():e>946684800&&e<4102444800?new Date(e*1e3).toISOString():e;if(Array.isArray(e))return e.length>0&&typeof e[0]=="number"?`[${e.join(",")}]`:JSON.stringify(e);if(typeof e=="object"){let n=JSON.stringify(e);if(t&&this.isJsonbColumn(t)){n=n.replace(/\u0000/g,"");try{JSON.parse(n)}catch{return JSON.stringify(String(e))}}return n}if(typeof e=="string"){if(e===""&&t&&["created_at","updated_at","last_used_at","started_at","ended_at","completed_at","expires_at","last_update"].includes(t))return null;if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(e))return e;let n=parseInt(e,10);if(!isNaN(n)&&n>9466848e5&&n<41024448e5)return new Date(n).toISOString();if(t&&this.isJsonbColumn(t)){let r=e.replace(/\u0000/g,"");try{return JSON.parse(r),r}catch{return JSON.stringify(r)}}}return e}isJsonbColumn(e){return["action_value","state","action","next_state","preconditions","effects","metadata","value","payload","context_json","template_json","execution_trace","action_sequence","initial_state","goal_state","sequence","task_json","decision_json","steps_json","metadata_json"].includes(e)}inferConflictColumns(e,t){let n=e.includes(".")?e.split(".")[1]:e,r=["qe_patterns","sona_patterns","goap_actions","goap_plans","patterns","events","routing_outcomes","qe_trajectories","dream_insights","intelligence_memories"];return t.includes("id")&&r.includes(n)?["id"]:n==="memory_entries"&&t.includes("key")&&t.includes("source_env")?t.includes("partition")?["key","partition","source_env"]:["key","source_env"]:n==="claude_flow_memory"&&t.includes("key")&&t.includes("source_env")?["key","source_env"]:n==="qlearning_patterns"&&t.includes("state")&&t.includes("action")&&t.includes("source_env")?["state","action","source_env"]:n==="claude_flow_workers"&&t.includes("worker_type")&&t.includes("source_env")?["worker_type","source_env"]:[]}createMockClient(){let e=[];return{async connect(){console.log("[MockPgClient] Connected (mock mode)")},async query(t,n){return console.log(`[MockPgClient] Query: ${t.slice(0,100)}... (${n?.length||0} params)`),{rows:e,rowCount:0}},async end(){console.log("[MockPgClient] Disconnected (mock mode)")}}}};function k(i){return new G(i)}x();v();P();var V=h.create("postgres-reader"),H=class{writer;environment;constructor(e){this.writer=e.writer,this.environment=e.environment}sanitizeCloudTable(e){let t=e.indexOf(".");if(t===-1||t===0||t===e.length-1)throw new Error(`Invalid cloud table format '${e}': expected 'schema.table' (e.g., 'aqe.qe_patterns')`);let n=e.substring(0,t),r=e.substring(t+1);return`${w(n)}.${w(r)}`}async readAll(e){let t=this.sanitizeCloudTable(e.cloudTable),n,r;this.environment!=="all"?(n=`SELECT * FROM ${t} WHERE source_env = $1`,r=[this.environment]):(n=`SELECT * FROM ${t}`,r=[]);try{let o=await this.writer.query(n,r);return V.debug(`Read ${o.length} records from ${e.cloudTable}`,{env:this.environment}),o.map(s=>this.transformRecord(s,e))}catch(o){throw new Error(`Failed to read from ${e.cloudTable}: ${l(o)}`)}}async readChanged(e,t){let n=this.sanitizeCloudTable(e.cloudTable),r=await this.findTimestampColumn(n);if(!r)return V.debug(`No timestamp column found for ${e.cloudTable}, falling back to readAll`),this.readAll(e);let o,s;this.environment!=="all"?(o=`SELECT * FROM ${n} WHERE ${w(r)} > $1 AND source_env = $2`,s=[t.toISOString(),this.environment]):(o=`SELECT * FROM ${n} WHERE ${w(r)} > $1`,s=[t.toISOString()]);try{return(await this.writer.query(o,s)).map(d=>this.transformRecord(d,e))}catch(c){return V.debug(`Changed query failed for ${e.cloudTable}, falling back to readAll`,{error:l(c)}),this.readAll(e)}}async count(e){let t=this.sanitizeCloudTable(e.cloudTable),n,r;this.environment!=="all"?(n=`SELECT COUNT(*) as count FROM ${t} WHERE source_env = $1`,r=[this.environment]):(n=`SELECT COUNT(*) as count FROM ${t}`,r=[]);try{await this.writer.beginTransaction(),await this.writer.execute("SET LOCAL enable_indexonlyscan = off");let o=await this.writer.query(n,r);return await this.writer.commit(),typeof o[0]?.count=="string"?parseInt(o[0].count,10):o[0]?.count||0}catch(o){try{await this.writer.rollback()}catch{}return V.debug(`Count query failed for ${e.cloudTable}`,{error:l(o)}),-1}}transformRecord(e,t){let n={};for(let[r,o]of Object.entries(e)){if(t.dropColumns?.includes(r))continue;let s=t.columnMap?.[r]||r;n[s]=this.transformValue(o,r,t.transforms)}return n}transformValue(e,t,n){if(e==null)return null;let r=n?.[t];return r==="boolean-to-int"?typeof e=="boolean"?e?1:0:e==="true"||e==="t"?1:e==="false"||e==="f"?0:e:r==="jsonb-to-text"?typeof e=="object"?JSON.stringify(e):e:r==="timestamptz-to-text"?e instanceof Date?e.toISOString():e:typeof e=="object"&&!Buffer.isBuffer(e)?JSON.stringify(e):e instanceof Date?e.toISOString():typeof e=="boolean"?e?1:0:e}async findTimestampColumn(e){let t=["updated_at","created_at","last_update","last_used_at"];try{let n=e.split(".")[0],r=e.split(".")[1],s=(await this.writer.query(`SELECT column_name FROM information_schema.columns
|
|
7
|
+
WHERE table_schema = $1 AND table_name = $2
|
|
8
|
+
AND data_type IN ('timestamp with time zone', 'timestamp without time zone')`,[n,r])).map(c=>c.column_name);for(let c of t)if(s.includes(c))return c;return s[0]||null}catch{return null}}};function se(i){return new H(i)}F();x();v();P();import*as Se from"fs";var N=h.create("sqlite-writer"),X=class{db=null;dbPath;batchSize;constructor(e){this.dbPath=e.dbPath,this.batchSize=e.batchSize||500}async connect(){if(!this.db){if(!Se.existsSync(this.dbPath))throw new Error(`SQLite database not found: ${this.dbPath}. Run 'aqe init' to create it.`);try{this.db=$(this.dbPath),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),N.debug(`Opened SQLite database: ${this.dbPath}`)}catch(e){throw new Error(`Failed to open SQLite database ${this.dbPath}: ${l(e)}`)}}}async upsert(e,t){if(!this.db)throw new Error("Not connected");if(t.length===0)return 0;let n=R(e);if(!this.tableExists(e))return console.warn(`[SQLiteWriter] Table '${e}' does not exist in local database \u2014 ${t.length} records skipped. Run 'aqe init' to create schema.`),0;let r=this.getTableColumns(e);if(r.length===0)return N.debug(`No columns found for table ${e}`),0;let o=new Set(r),s=0;for(let c=0;c<t.length;c+=this.batchSize){let d=t.slice(c,c+this.batchSize);try{let u=this.upsertBatch(n,d,o);s+=u}catch(u){let g=Math.floor(c/this.batchSize)+1;N.debug(`Batch ${g} failed for ${e}, retrying individually`,{error:l(u)});let E=0;for(let y of d)try{E+=this.upsertBatch(n,[y],o)}catch(p){let b=y.id||y.key||"?";N.debug(`Skipped record ${String(b).slice(0,50)} in ${e}`,{error:l(p)})}s+=E}}return s}async count(e){if(!this.db)throw new Error("Not connected");if(!this.tableExists(e))return 0;try{let t=R(e);return this.db.prepare(`SELECT COUNT(*) as count FROM ${t}`).get().count}catch{return 0}}async close(){this.db&&(this.db.close(),this.db=null,N.debug("SQLite writer closed"))}tableExists(e){if(!this.db)return!1;try{return!!this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=?").get(e)}catch{return!1}}getTableColumns(e){if(!this.db)return[];try{let t=R(e);return this.db.prepare(`PRAGMA table_info(${t})`).all().map(r=>r.name)}catch{return[]}}getPrimaryKeyColumns(e){if(!this.db)return[];try{let t=R(e);return this.db.prepare(`PRAGMA table_info(${t})`).all().filter(o=>o.pk>0).sort((o,s)=>o.pk-s.pk).map(o=>o.name)}catch{return[]}}upsertBatch(e,t,n){if(!this.db||t.length===0)return 0;let r=t[0],o=Object.keys(r).filter(p=>n.has(p));if(o.length===0)return 0;let s=o.map(w),c=o.map(()=>"?").join(", "),d=e.replace(/"/g,""),u=this.getPrimaryKeyColumns(d),g;if(u.length>0){let p=u.map(w),b=o.filter(S=>!u.includes(S));if(b.length>0){let S=b.map(f=>`${w(f)} = excluded.${w(f)}`).join(", ");g=`INSERT INTO ${e} (${s.join(", ")}) VALUES (${c}) ON CONFLICT(${p.join(", ")}) DO UPDATE SET ${S}`}else g=`INSERT OR IGNORE INTO ${e} (${s.join(", ")}) VALUES (${c})`}else g=`INSERT OR IGNORE INTO ${e} (${s.join(", ")}) VALUES (${c})`;let E=this.db.prepare(g);return this.db.transaction(p=>{let b=0;for(let S of p){let f=o.map(C=>this.serializeValue(S[C]));E.run(...f),b++}return b})(t)}serializeValue(e){return e==null?null:typeof e=="object"&&!Buffer.isBuffer(e)&&!(e instanceof Date)?JSON.stringify(e):e instanceof Date?e.toISOString():typeof e=="boolean"?e?1:0:(Buffer.isBuffer(e),e)}};function ie(i){return new X(i)}P();v();var Ae=h.create("sync-agent"),Y=class{config;readers=new Map;writer=null;report=null;constructor(e={}){this.config={...m,...e,local:{...m.local,...e.local},cloud:{...m.cloud,...e.cloud},sync:{...m.sync,...e.sync}}}async initialize(){this.log("Initializing sync agent...");let e=this.config.sync.sources.filter(t=>t.enabled!==!1);for(let t of e){let n=this.createReader(t);if(n)try{await n.initialize(),this.readers.set(t.name,n),this.log(`Initialized reader: ${t.name}`)}catch(r){this.log(`Warning: Failed to initialize reader ${t.name}: ${r}`,"warn")}}this.log(`Initialized ${this.readers.size} readers`)}async syncAll(){this.report=this.createReport("full");try{await this.connectToCloud();let e=this.config.sync.sources.filter(r=>r.enabled!==!1&&this.readers.has(r.name)).sort((r,o)=>{let s={high:0,medium:1,low:2};return s[r.priority]-s[o.priority]}),t=0,n=e.length;for(let r of e){this.progress(`Syncing ${r.name}...`,t/n);let o=await this.syncSource(r);this.report.results.push(o),t++}this.report.status=this.report.results.every(r=>r.success)?"completed":"partial"}catch(e){this.report.status="failed",this.report.errors.push(l(e))}finally{await this.disconnect(),this.report.completedAt=new Date,this.report.totalDurationMs=this.report.completedAt.getTime()-this.report.startedAt.getTime(),this.report.totalRecordsSynced=this.report.results.reduce((e,t)=>e+t.recordsSynced,0),this.report.totalConflictsResolved=this.report.results.reduce((e,t)=>e+t.conflictsResolved,0)}return this.report}async syncIncremental(e){this.report=this.createReport("incremental");let t=e||new Date(Date.now()-1440*60*1e3);try{await this.connectToCloud();let n=this.config.sync.sources.filter(r=>r.enabled!==!1&&this.readers.has(r.name)&&r.mode!=="full").sort((r,o)=>{let s={high:0,medium:1,low:2};return s[r.priority]-s[o.priority]});for(let r of n){this.progress(`Incremental sync ${r.name}...`,0);let o=await this.syncSourceIncremental(r,t);this.report.results.push(o)}this.report.status=this.report.results.every(r=>r.success)?"completed":"partial"}catch(n){this.report.status="failed",this.report.errors.push(l(n))}finally{await this.disconnect(),this.report.completedAt=new Date,this.report.totalDurationMs=this.report.completedAt.getTime()-this.report.startedAt.getTime(),this.report.totalRecordsSynced=this.report.results.reduce((n,r)=>n+r.recordsSynced,0)}return this.report}async syncSource(e){let t=Date.now(),n={success:!1,table:e.targetTable,source:e.name,recordsSynced:0,conflictsResolved:0,recordsSkipped:0,durationMs:0,warnings:[]};try{let r=this.readers.get(e.name);if(!r)throw new Error(`Reader not found: ${e.name}`);let o=await r.readAll();if(this.log(`Read ${o.length} records from ${e.name}`),o.length===0)return n.success=!0,n.durationMs=Date.now()-t,n;if(this.writer&&!this.config.sync.dryRun){let s=await this.writer.upsert(e.targetTable,o,{skipIfExists:e.mode==="append"});n.recordsSynced=s}else n.recordsSynced=o.length,this.log(`[DRY RUN] Would sync ${o.length} records to ${e.targetTable}`);n.success=!0}catch(r){n.error=l(r),this.config.onError?.(q(r),e.name)}return n.durationMs=Date.now()-t,n}async syncSourceIncremental(e,t){let n=Date.now(),r={success:!1,table:e.targetTable,source:e.name,recordsSynced:0,conflictsResolved:0,recordsSkipped:0,durationMs:0};try{let o=this.readers.get(e.name);if(!o)throw new Error(`Reader not found: ${e.name}`);let s=await o.readChanged(t);if(this.log(`Read ${s.length} changed records from ${e.name} (since ${t.toISOString()})`),s.length===0)return r.success=!0,r.durationMs=Date.now()-n,r;if(this.writer&&!this.config.sync.dryRun){let c=await this.writer.upsert(e.targetTable,s);r.recordsSynced=c}else r.recordsSynced=s.length;r.success=!0}catch(o){r.error=l(o)}return r.durationMs=Date.now()-n,r}async getStatus(){let e=[];for(let t of this.config.sync.sources){let n=this.readers.get(t.name);if(n){let r=await n.count();e.push({name:t.name,type:t.type,targetTable:t.targetTable,recordCount:r,enabled:t.enabled!==!1,priority:t.priority})}else e.push({name:t.name,type:t.type,targetTable:t.targetTable,recordCount:0,enabled:t.enabled!==!1,priority:t.priority,error:"Reader not initialized"})}return{sources:e}}async verify(){let e=[];for(let t of this.config.sync.sources.filter(n=>n.enabled!==!1)){let n=this.readers.get(t.name);if(!n)continue;let r=await n.count(),o=0;if(this.writer)try{await this.writer.beginTransaction(),await this.writer.execute("SET LOCAL enable_indexonlyscan = off");let s=await this.writer.query(`SELECT COUNT(*) as count FROM ${t.targetTable} WHERE source_env = $1`,[this.config.environment]);await this.writer.commit(),o=s[0]?.count||0}catch(s){try{await this.writer.rollback()}catch{}Ae.debug("Cloud count query failed",{source:t.name,error:s instanceof Error?s.message:String(s)}),o=-1}e.push({source:t.name,table:t.targetTable,localCount:r,cloudCount:o,match:r===o,diff:r-o})}return{verified:e.every(t=>t.match||t.cloudCount===-1),results:e}}async close(){await this.disconnect();for(let e of Array.from(this.readers.entries())){let[t,n]=e;try{await n.close()}catch(r){this.log(`Warning: Failed to close reader ${t}: ${r}`,"warn")}}this.readers.clear(),this.log("Sync agent closed")}createReader(e){let t=process.cwd(),n=this.config.environment;return e.type==="sqlite"?re({source:e,baseDir:t,environment:n}):e.type==="json"?oe({source:e,baseDir:t,environment:n}):null}async connectToCloud(){if(this.writer)return;let e=M(this.config.cloud);this.writer=k({cloud:this.config.cloud,tunnelManager:e}),await this.writer.connect(),this.log("Connected to cloud database")}async disconnect(){this.writer&&(await this.writer.close(),this.writer=null)}createReport(e){return{syncId:z(),startedAt:new Date,status:"running",environment:this.config.environment,mode:e,results:[],totalRecordsSynced:0,totalConflictsResolved:0,totalDurationMs:0,errors:[]}}log(e,t="info"){if(!this.config.verbose&&t==="info")return;let n=`[CloudSync:${this.config.environment}]`;switch(t){case"warn":console.warn(`${n} ${e}`);break;case"error":console.error(`${n} ${e}`);break;default:console.log(`${n} ${e}`)}}progress(e,t){this.config.onProgress?.(e,t),this.log(e)}};function _(i){return new Y(i)}async function ae(i){let e=_({...i,verbose:!0});await e.initialize();try{return await e.syncAll()}finally{await e.close()}}async function ce(i,e){let t=_({...e,verbose:!0});await t.initialize();try{return await t.syncIncremental(i)}finally{await t.close()}}import*as Z from"fs";import*as le from"path";pe();v();P();var Nt=h.create("pull-agent"),K=class{config;reader=null;writer=null;cloudWriter=null;report=null;constructor(e={}){this.config={...A,...e,cloud:{...A.cloud,...e.cloud},sources:e.sources||A.sources}}async initialize(){this.log("Initializing pull sync agent...");let e=M(this.config.cloud);this.cloudWriter=k({cloud:this.config.cloud,tunnelManager:e}),await this.cloudWriter.connect(),this.log("Connected to cloud database"),this.reader=se({writer:this.cloudWriter,environment:this.config.environment});let t=this.resolveTargetDb();this.writer=ie({dbPath:t}),await this.writer.connect(),this.log(`Connected to local database: ${t}`)}async pullAll(){this.report=this.createReport("full");try{this.ensureInitialized(),this.backupLocalDb();let e=this.getEnabledSources(),t=0;for(let n of e){this.progress(`Pulling ${n.name}...`,t/e.length);let r=await this.pullTable(n);this.report.results.push(r),t++}this.report.status=this.report.results.every(n=>n.success)?"completed":"partial"}catch(e){this.report.status="failed",this.report.errors.push(l(e))}finally{this.finalizeReport()}return this.report}async pullIncremental(e){this.report=this.createReport("incremental");let t=e||new Date(Date.now()-1440*60*1e3);try{this.ensureInitialized(),this.backupLocalDb();let n=this.getEnabledSources().filter(r=>r.mode!=="full");for(let r of n){this.progress(`Incremental pull ${r.name}...`,0);let o=await this.pullTableIncremental(r,t);this.report.results.push(o)}this.report.status=this.report.results.every(r=>r.success)?"completed":"partial"}catch(n){this.report.status="failed",this.report.errors.push(l(n))}finally{this.finalizeReport()}return this.report}async pullTable(e){let t=Date.now(),n={success:!1,table:e.localTable,source:e.name,recordsSynced:0,conflictsResolved:0,recordsSkipped:0,durationMs:0,warnings:[]};try{this.ensureInitialized();let r=await this.reader.readAll(e);if(this.log(`Read ${r.length} records from cloud ${e.cloudTable}`),r.length===0)return n.success=!0,n.durationMs=Date.now()-t,n;if(this.config.dryRun)n.recordsSynced=r.length,this.log(`[DRY RUN] Would write ${r.length} records to local ${e.localTable}`);else{let o=await this.writer.upsert(e.localTable,r);n.recordsSynced=o,n.recordsSkipped=r.length-o}n.success=!0}catch(r){n.error=l(r),this.config.onError?.(q(r),e.name)}return n.durationMs=Date.now()-t,n}async pullTableIncremental(e,t){let n=Date.now(),r={success:!1,table:e.localTable,source:e.name,recordsSynced:0,conflictsResolved:0,recordsSkipped:0,durationMs:0};try{this.ensureInitialized();let o=await this.reader.readChanged(e,t);if(this.log(`Read ${o.length} changed records from cloud ${e.cloudTable} (since ${t.toISOString()})`),o.length===0)return r.success=!0,r.durationMs=Date.now()-n,r;if(this.config.dryRun)r.recordsSynced=o.length;else{let s=await this.writer.upsert(e.localTable,o);r.recordsSynced=s}r.success=!0}catch(o){r.error=l(o)}return r.durationMs=Date.now()-n,r}async verify(){this.ensureInitialized();let e=[];for(let t of this.getEnabledSources()){let n=await this.reader.count(t),r=await this.writer.count(t.localTable);e.push({source:t.name,cloudTable:t.cloudTable,localTable:t.localTable,cloudCount:n,localCount:r,match:n===r||n===-1,diff:r-n})}return{verified:e.every(t=>t.match),results:e}}async close(){this.writer&&(await this.writer.close(),this.writer=null),this.cloudWriter&&(await this.cloudWriter.close(),this.cloudWriter=null),this.reader=null,this.log("Pull sync agent closed")}ensureInitialized(){if(!this.reader||!this.writer)throw new Error("PullSyncAgent not initialized. Call initialize() first.")}getEnabledSources(){let e=this.config.sources.filter(n=>n.enabled);if(this.config.tables&&this.config.tables.length>0){let n=new Set(this.config.tables);e=e.filter(r=>n.has(r.localTable)||n.has(r.name))}let t={high:0,medium:1,low:2};return e.sort((n,r)=>t[n.priority]-t[r.priority])}resolveTargetDb(){return this.config.targetDb?le.resolve(this.config.targetDb):le.resolve(te(),".agentic-qe/memory.db")}backupLocalDb(){if(this.config.dryRun)return;let e=this.resolveTargetDb();if(!Z.existsSync(e))return;let t=Math.floor(Date.now()/1e3),n=`${e}.bak-${t}`;try{Z.copyFileSync(e,n),this.log(`Backed up local DB to ${n}`)}catch(r){this.log(`Warning: Failed to backup local DB: ${l(r)}`,"warn")}}createReport(e){return{syncId:z(),startedAt:new Date,status:"running",environment:this.config.environment,mode:e,results:[],totalRecordsSynced:0,totalConflictsResolved:0,totalDurationMs:0,errors:[]}}finalizeReport(){this.report&&(this.report.completedAt=new Date,this.report.totalDurationMs=this.report.completedAt.getTime()-this.report.startedAt.getTime(),this.report.totalRecordsSynced=this.report.results.reduce((e,t)=>e+t.recordsSynced,0),this.report.totalConflictsResolved=this.report.results.reduce((e,t)=>e+t.conflictsResolved,0))}log(e,t="info"){if(!this.config.verbose&&t==="info")return;let n=`[PullSync:${this.config.environment}]`;switch(t){case"warn":console.warn(`${n} ${e}`);break;case"error":console.error(`${n} ${e}`);break;default:console.log(`${n} ${e}`)}}progress(e,t){this.config.onProgress?.(e,t),this.log(e)}};function de(i){return new K(i)}async function ue(i){let e=de({...i,verbose:!0});await e.initialize();try{return await e.pullAll()}finally{await e.close()}}async function me(i,e){let t=de({...e,verbose:!0});await t.initialize();try{return await t.pullIncremental(i)}finally{await t.close()}}F();pe();ee();Ce();F();x();v();ee();P();import{resolve as Yt,dirname as Me}from"path";import{fileURLToPath as De}from"url";var on=h.create("sync-embedding-generator"),ke=De(import.meta.url),sn=Me(ke);v();import*as I from"fs";import*as ge from"path";function Le(){let i=new Ie("sync").description("Sync local learning data to cloud PostgreSQL");return i.option("--full","Run full sync instead of incremental").option("-e, --env <environment>","Environment identifier",process.env.AQE_ENV||"devpod").option("--dry-run","Preview sync without making changes").option("-v, --verbose","Enable verbose output").option("--since <date>","Sync changes since date (ISO 8601)").option("--sources <sources>","Comma-separated list of sources to sync").action(async e=>{let t={environment:e.env,verbose:e.verbose,sync:{...m.sync,dryRun:e.dryRun}};if(e.sources){let r=e.sources.split(",").map(o=>o.trim());t.sync.sources=m.sync.sources.filter(o=>r.includes(o.name))}let n=O("Initializing sync agent...").start();try{let r;if(e.full)n.text="Running full sync...",r=await ae(t);else{let o=e.since?new Date(e.since):void 0;n.text="Running incremental sync...",r=await ce(o,t)}n.stop(),qe(r)}catch(r){n.fail(`Sync failed: ${l(r)}`),process.exit(1)}}),i.command("pull").description("Pull cloud learning data into local SQLite database").option("-f, --full","Full pull (all cloud data)").option("-e, --env <environment>","Pull only data from specific environment","all").option("--tables <tables>","Comma-separated list of tables to pull").option("--dry-run","Preview pull without writing to local DB").option("--target <path>","Custom target SQLite database path").option("--since <date>","Pull changes since date (ISO 8601)").option("-v, --verbose","Enable verbose output").action(async e=>{let t={environment:e.env,verbose:e.verbose,dryRun:e.dryRun,targetDb:e.target};e.tables&&(t.tables=e.tables.split(",").map(r=>r.trim()));let n=O("Initializing pull sync agent...").start();try{let r;if(e.full)n.text="Pulling all data from cloud...",r=await ue(t);else{let o=e.since?new Date(e.since):void 0;n.text=`Pulling ${o?"changes since "+o.toISOString():"incremental changes (last 24h)"}...`,r=await me(o,t)}n.stop(),je(r)}catch(r){n.fail(`Pull failed: ${l(r)}`),process.exit(1)}}),i.command("status").description("Show sync status and data source information").option("-e, --env <environment>","Environment identifier",process.env.AQE_ENV||"devpod").action(async e=>{let t=O("Checking sync status...").start();try{let n=_({environment:e.env,verbose:!1});await n.initialize();let r=await n.getStatus();await n.close(),t.stop(),ze(r)}catch(n){t.fail(`Failed to get status: ${l(n)}`),process.exit(1)}}),i.command("verify").description("Verify sync integrity between local and cloud").option("-e, --env <environment>","Environment identifier",process.env.AQE_ENV||"devpod").action(async e=>{let t=O("Verifying sync integrity...").start();try{let n=_({environment:e.env,verbose:!1});await n.initialize(),t.text="Connecting to cloud...";let r=await n.verify();await n.close(),t.stop(),Fe(r)}catch(n){t.fail(`Verification failed: ${l(n)}`),process.exit(1)}}),i.command("init").description("Initialize cloud schema (requires GCP credentials)").option("--dry-run","Print schema without executing").option("-o, --output <file>","Save schema to file").action(async e=>{let t=ge.join(__dirname,"../../sync/schema/cloud-schema.sql"),n;try{n=I.readFileSync(t,"utf-8")}catch{let o=ge.join(process.cwd(),"src/sync/schema/cloud-schema.sql");n=I.readFileSync(o,"utf-8")}if(e.output){I.writeFileSync(e.output,n),console.log(a.green(`Schema saved to ${e.output}`));return}if(e.dryRun){console.log(a.cyan(`
|
|
9
|
+
=== Cloud Schema ===
|
|
10
|
+
`)),console.log(n),console.log(a.yellow(`
|
|
11
|
+
Dry run - no changes made`));return}let r=O("Initializing cloud schema...").start();try{let o=_({verbose:!0});r.info("Schema initialization requires cloud connection"),r.info("Run with --output to save schema, then apply manually"),await o.close()}catch(o){r.fail(`Init failed: ${l(o)}`),process.exit(1)}}),i.command("config").description("Show or modify sync configuration").option("--show","Show current configuration").option("--sources","List configured data sources").action(async e=>{if(e.sources){console.log(a.cyan(`
|
|
12
|
+
=== Configured Data Sources ===
|
|
13
|
+
`));for(let t of m.sync.sources){let n=t.enabled!==!1?a.green("\u2713"):a.gray("\u25CB");console.log(`${n} ${a.bold(t.name)}`),console.log(` Type: ${t.type}`),console.log(` Path: ${t.path}`),console.log(` Target: ${t.targetTable}`),console.log(` Priority: ${t.priority}`),console.log(` Mode: ${t.mode}`),console.log()}return}console.log(a.cyan(`
|
|
14
|
+
=== Sync Configuration ===
|
|
15
|
+
`)),console.log(a.bold("Environment:"),process.env.AQE_ENV||"devpod"),console.log(a.bold("Sync Mode:"),m.sync.mode),console.log(a.bold("Batch Size:"),m.sync.batchSize),console.log(a.bold("Conflict Resolution:"),m.sync.conflictResolution),console.log(),console.log(a.bold("Cloud Configuration:")),console.log(` Project: ${m.cloud.project||"(not set)"}`),console.log(` Zone: ${m.cloud.zone}`),console.log(` Instance: ${m.cloud.instance}`),console.log(` Database: ${m.cloud.database}`),console.log(` Tunnel Port: ${m.cloud.tunnelPort}`),console.log(),console.log(a.gray("Use --sources to list data sources"))}),i}function qe(i){let e=i.status==="completed"?a.green:i.status==="partial"?a.yellow:a.red;if(console.log(a.cyan(`
|
|
16
|
+
=== Sync Report ===
|
|
17
|
+
`)),console.log(a.bold("Sync ID:"),i.syncId),console.log(a.bold("Status:"),e(i.status.toUpperCase())),console.log(a.bold("Environment:"),i.environment),console.log(a.bold("Mode:"),i.mode),console.log(a.bold("Duration:"),`${i.totalDurationMs}ms`),console.log(),console.log(a.bold("Summary:")),console.log(` Records Synced: ${a.green(i.totalRecordsSynced)}`),console.log(` Conflicts Resolved: ${a.yellow(i.totalConflictsResolved)}`),console.log(),i.results.length>0){console.log(a.bold("Results by Source:"));for(let t of i.results){let n=t.success?a.green("\u2713"):a.red("\u2717");console.log(` ${n} ${t.source}`),console.log(` Table: ${t.table}`),console.log(` Records: ${t.recordsSynced}`),console.log(` Duration: ${t.durationMs}ms`),t.error&&console.log(` Error: ${a.red(t.error)}`)}console.log()}if(i.errors.length>0){console.log(a.red("Errors:"));for(let t of i.errors)console.log(` - ${t}`)}}function ze(i){console.log(a.cyan(`
|
|
18
|
+
=== Sync Status ===
|
|
19
|
+
`)),i.lastSync&&(console.log(a.bold("Last Sync:"),i.lastSync.toISOString()),console.log()),console.log(a.bold("Data Sources:")),console.log();let e=0;for(let t of i.sources){let n=t.enabled?a.green("\u2713"):a.gray("\u25CB"),r=t.priority==="high"?a.red:t.priority==="medium"?a.yellow:a.gray;console.log(`${n} ${a.bold(t.name)}`),console.log(` Type: ${t.type}`),console.log(` Target: ${t.targetTable}`),console.log(` Records: ${a.cyan(t.recordCount)}`),console.log(` Priority: ${r(t.priority)}`),t.error&&console.log(` Error: ${a.red(t.error)}`),console.log(),e+=t.recordCount}console.log(a.bold("Total Records:"),a.cyan(e))}function Fe(i){let e=i.verified?a.green:a.red;console.log(a.cyan(`
|
|
20
|
+
=== Verification Result ===
|
|
21
|
+
`)),console.log(a.bold("Status:"),e(i.verified?"VERIFIED":"MISMATCH")),console.log(),console.log(a.bold("Table Comparison:"));for(let t of i.results){let n=t.match?a.green("\u2713"):t.cloudCount===-1?a.yellow("?"):a.red("\u2717");if(console.log(`${n} ${t.source}`),console.log(` Local: ${t.localCount}`),console.log(` Cloud: ${t.cloudCount===-1?"N/A":t.cloudCount}`),!t.match&&t.cloudCount!==-1){let r=t.diff>0?a.green:a.red;console.log(` Diff: ${r(t.diff>0?"+"+t.diff:t.diff)}`)}console.log()}}function je(i){let e=i.status==="completed"?a.green:i.status==="partial"?a.yellow:a.red;if(console.log(a.cyan(`
|
|
22
|
+
=== Pull Sync Report (Cloud \u2192 Local) ===
|
|
23
|
+
`)),console.log(a.bold("Sync ID:"),i.syncId),console.log(a.bold("Status:"),e(i.status.toUpperCase())),console.log(a.bold("Environment:"),i.environment),console.log(a.bold("Mode:"),i.mode),console.log(a.bold("Duration:"),`${i.totalDurationMs}ms`),console.log(),console.log(a.bold("Summary:")),console.log(` Records Pulled: ${a.green(i.totalRecordsSynced)}`),console.log(),i.results.length>0){console.log(a.bold("Results by Table:"));for(let t of i.results){let n=t.success?a.green("\u2713"):a.red("\u2717");console.log(` ${n} ${t.source} \u2192 ${t.table}`),console.log(` Records: ${t.recordsSynced}`),console.log(` Duration: ${t.durationMs}ms`),t.recordsSkipped>0&&console.log(` Skipped: ${a.yellow(t.recordsSkipped)}`),t.error&&console.log(` Error: ${a.red(t.error)}`)}console.log()}if(i.errors.length>0){console.log(a.red("Errors:"));for(let t of i.errors)console.log(` - ${t}`)}}var $n=Le;export{Le as createSyncCommands,$n as default};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import"./chunk-N5UXCLFI.js";import{c as p,d as g}from"./chunk-YR6ZZGH7.js";import{b as y}from"./chunk-RTGGL7D7.js";import{a as m,b}from"./chunk-YANUP2RO.js";import{c as T}from"./chunk-WGMPEW2T.js";import"./chunk-4I2IOUS4.js";import a from"chalk";var f=class{name="task";description="Manage QE tasks";cleanupAndExit;ensureInitialized;constructor(o,e){this.cleanupAndExit=o,this.ensureInitialized=e}register(o,e){let s=o.command("task").description(this.description);s.command("submit <type>").description("Submit a task to the Queen Coordinator").option("-p, --priority <priority>","Task priority (p0|p1|p2|p3)","p1").option("-d, --domain <domain>","Target domain").option("-t, --timeout <ms>","Task timeout in ms","300000").option("--payload <json>","Task payload as JSON","{}").option("--wait","Wait for task completion with progress").option("--no-progress","Disable progress indicator").action(async(t,i)=>{await this.executeSubmit(t,i,e)}),s.command("list").description("List all tasks").option("-s, --status <status>","Filter by status").option("-p, --priority <priority>","Filter by priority").option("-d, --domain <domain>","Filter by domain").option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async t=>{await this.executeList(t,e)}),s.command("cancel <taskId>").description("Cancel a task").action(async t=>{await this.executeCancel(t,e)}),s.command("status <taskId>").description("Get task status").option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,i)=>{await this.executeTaskStatus(t,i,e)})}async executeSubmit(o,e,s){if(await this.ensureInitialized())try{let t=o,i=T(e.payload,"payload"),r=e.domain?[e.domain]:[];console.log(a.blue(`
|
|
3
|
+
Submitting task: ${t}
|
|
4
|
+
`));let d=e.progress!==!1?y(`Submitting ${t} task`):null,n=await s.queen.submitTask({type:t,priority:e.priority,targetDomains:r,payload:i,timeout:parseInt(e.timeout,10)});if(d&&(n.success?d.succeed("Task submitted successfully"):d.fail("Failed to submit task")),n.success){if(console.log(a.cyan(` ID: ${n.value}`)),console.log(a.gray(` Type: ${t}`)),console.log(a.gray(` Priority: ${e.priority}`)),e.wait){console.log("");let w=n.value,c=y("Waiting for task completion"),h=parseInt(e.timeout,10),S=Date.now(),l=!1;for(;!l&&Date.now()-S<h;){let u=s.queen.getTaskStatus(w);u&&(u.status==="completed"?(c.succeed("Task completed successfully"),l=!0):u.status==="failed"?(c.fail(`Task failed: ${u.error||"Unknown error"}`),l=!0):c.spinner.text=`Task ${u.status}... (${Math.round((Date.now()-S)/1e3)}s)`),l||await new Promise(A=>setTimeout(A,500))}l||c.fail("Task timed out")}}else console.log(a.red(` Error: ${n.error.message}`));console.log("")}catch(t){console.error(a.red(`
|
|
5
|
+
Failed to submit task:`),t),await this.cleanupAndExit(1)}}async executeList(o,e){if(await this.ensureInitialized())try{let s=e.queen.listTasks({status:o.status,priority:o.priority,domain:o.domain});if((o.format||"text")==="json"){let i=s.map(r=>({taskId:r.taskId,type:r.task.type,status:r.status,priority:r.task.priority,domain:r.assignedDomain||null,startedAt:r.startedAt?.toISOString()||null}));p(g(i),o.output);return}if(console.log(a.blue(`
|
|
6
|
+
Tasks (${s.length})
|
|
7
|
+
`)),s.length===0)console.log(a.gray(" No tasks found"));else for(let i of s)console.log(` ${a.cyan(i.taskId)}`),console.log(` Type: ${i.task.type}`),console.log(` Status: ${m(i.status)}`),console.log(` Priority: ${i.task.priority}`),i.assignedDomain&&console.log(` Domain: ${i.assignedDomain}`),i.startedAt&&console.log(a.gray(` Started: ${i.startedAt.toISOString()}`)),console.log("")}catch(s){console.error(a.red(`
|
|
8
|
+
Failed to list tasks:`),s),await this.cleanupAndExit(1)}}async executeCancel(o,e){if(await this.ensureInitialized())try{let s=await e.queen.cancelTask(o);s.success?console.log(a.green(`
|
|
9
|
+
Task cancelled: ${o}
|
|
10
|
+
`)):console.log(a.red(`
|
|
11
|
+
Failed to cancel task: ${s.error.message}
|
|
12
|
+
`))}catch(s){console.error(a.red(`
|
|
13
|
+
Failed to cancel task:`),s),await this.cleanupAndExit(1)}}async executeTaskStatus(o,e,s){if(await this.ensureInitialized())try{let t=s.queen.getTaskStatus(o);if(!t){console.log(a.red(`
|
|
14
|
+
Task not found: ${o}
|
|
15
|
+
`));return}if((e.format||"text")==="json"){let r={taskId:o,type:t.task.type,status:t.status,priority:t.task.priority,domain:t.assignedDomain||null,agents:t.assignedAgents,createdAt:t.task.createdAt.toISOString(),startedAt:t.startedAt?.toISOString()||null,completedAt:t.completedAt?.toISOString()||null,duration:t.completedAt&&t.startedAt?t.completedAt.getTime()-t.startedAt.getTime():null,error:t.error||null,retryCount:t.retryCount};p(g(r),e.output);return}if(console.log(a.blue(`
|
|
16
|
+
Task: ${o}
|
|
17
|
+
`)),console.log(` Type: ${t.task.type}`),console.log(` Status: ${m(t.status)}`),console.log(` Priority: ${t.task.priority}`),t.assignedDomain&&console.log(` Domain: ${t.assignedDomain}`),t.assignedAgents.length>0&&console.log(` Agents: ${t.assignedAgents.join(", ")}`),console.log(` Created: ${t.task.createdAt.toISOString()}`),t.startedAt&&console.log(` Started: ${t.startedAt.toISOString()}`),t.completedAt){console.log(` Completed: ${t.completedAt.toISOString()}`);let r=t.completedAt.getTime()-t.startedAt.getTime();console.log(` Duration: ${b(r)}`)}t.error&&console.log(a.red(` Error: ${t.error}`)),t.retryCount>0&&console.log(a.yellow(` Retries: ${t.retryCount}`)),console.log("")}catch(t){console.error(a.red(`
|
|
18
|
+
Failed to get task status:`),t),await this.cleanupAndExit(1)}}getHelp(){return`
|
|
19
|
+
Manage QE tasks including submission, listing, and cancellation.
|
|
20
|
+
|
|
21
|
+
Usage:
|
|
22
|
+
aqe task <command> [options]
|
|
23
|
+
|
|
24
|
+
Commands:
|
|
25
|
+
submit <type> Submit a task to the Queen Coordinator
|
|
26
|
+
list List all tasks
|
|
27
|
+
cancel <taskId> Cancel a task
|
|
28
|
+
status <taskId> Get task status
|
|
29
|
+
|
|
30
|
+
Submit Options:
|
|
31
|
+
-p, --priority <priority> Task priority: p0, p1, p2, p3 (default: p1)
|
|
32
|
+
-d, --domain <domain> Target domain
|
|
33
|
+
-t, --timeout <ms> Task timeout in milliseconds (default: 300000)
|
|
34
|
+
--payload <json> Task payload as JSON
|
|
35
|
+
--wait Wait for task completion with progress
|
|
36
|
+
--no-progress Disable progress indicator
|
|
37
|
+
|
|
38
|
+
List Options:
|
|
39
|
+
-s, --status <status> Filter by status
|
|
40
|
+
-p, --priority <priority> Filter by priority
|
|
41
|
+
-d, --domain <domain> Filter by domain
|
|
42
|
+
|
|
43
|
+
Examples:
|
|
44
|
+
aqe task submit generate-tests --domain test-generation
|
|
45
|
+
aqe task submit analyze-coverage --wait --timeout 60000
|
|
46
|
+
aqe task list --status running
|
|
47
|
+
aqe task status task-123
|
|
48
|
+
aqe task cancel task-123
|
|
49
|
+
`}};function F(k,o){return new f(k,o)}export{f as TaskHandler,F as createTaskHandler};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{a as I,b as T,c as g,d as m}from"./chunk-LHJQD2VU.js";import"./chunk-6SVX4DJC.js";import"./chunk-GPQ57KA4.js";import{a as A}from"./chunk-B6LLWYQ6.js";import"./chunk-7R6YMLVS.js";import"./chunk-72WOAVK6.js";import"./chunk-HRO6OZQD.js";import"./chunk-BXAXGEFC.js";import"./chunk-VOS4NQSF.js";import"./chunk-GKNNSCLC.js";import"./chunk-RFSN6IDA.js";import"./chunk-N4TL73TH.js";import"./chunk-XLRQYLWW.js";import"./chunk-IFNIIK34.js";import"./chunk-YPFOCNOE.js";import"./chunk-VSVXUTJN.js";import"./chunk-TWUWL5EJ.js";import"./chunk-4VBTXZRM.js";import"./chunk-U5RN7YQW.js";import"./chunk-BLBRY5UD.js";import"./chunk-MZOFWJTM.js";import"./chunk-XIBDETCS.js";import"./chunk-3NZLZHJI.js";import"./chunk-WJ3DLOXF.js";import"./chunk-YVA65UZL.js";import"./chunk-XO6PVK2P.js";import{b as P}from"./chunk-BTREG4IW.js";import"./chunk-3ADGXLTM.js";import"./chunk-JXM26HEE.js";import"./chunk-WIEC7VKK.js";import"./chunk-2E5NQNSU.js";import"./chunk-BULKFVYX.js";import"./chunk-4B6NCELM.js";import"./chunk-KP5NUODU.js";import"./chunk-FGA7VIFR.js";import"./chunk-X5IJGWYG.js";import"./chunk-BPWXXEH2.js";import"./chunk-2BZFNEN2.js";import"./chunk-3IUNFTIF.js";import"./chunk-ZAPS3UGQ.js";import"./chunk-J3KWWR6Z.js";import"./chunk-IGJPMN4I.js";import"./chunk-IAV2JMIX.js";import"./chunk-EHDQJQ6Y.js";import"./chunk-QOVHWZEP.js";import"./chunk-ZDATDCYN.js";import"./chunk-AFLLQ5PP.js";import"./chunk-TLHP5EII.js";import"./chunk-MV6CMOJQ.js";import"./chunk-JRYGQO2W.js";import"./chunk-4YS3IJ45.js";import"./chunk-OF4D7MYI.js";import"./chunk-3IHG3WOY.js";import"./chunk-OI5NGQO2.js";import"./chunk-3THRQEZ2.js";import"./chunk-UQHYFOBX.js";import"./chunk-5SKGFSKD.js";import"./chunk-FEKY7T6Q.js";import"./chunk-LNQIY6BP.js";import"./chunk-YAGODYIG.js";import"./chunk-HY6PMO5W.js";import"./chunk-ESVQ6MEB.js";import"./chunk-FIA6X7UL.js";import"./chunk-X3KI6JOY.js";import"./chunk-NZ2VCPN4.js";import"./chunk-24FKIJNC.js";import"./chunk-YW2THB5Q.js";import"./chunk-GRUUQAR6.js";import"./chunk-5T2ZQWKF.js";import"./chunk-XT2V2322.js";import"./chunk-WBQSXPBI.js";import"./chunk-3ZOONQG6.js";import"./chunk-SUSEVMZT.js";import"./chunk-AKE543X2.js";import"./chunk-JJO7Y4H3.js";import"./chunk-N2NS2PHA.js";import"./chunk-3JPRUND5.js";import"./chunk-4VUPRTVX.js";import"./chunk-WGMPEW2T.js";import{a as o,c as D}from"./chunk-JZSDOIXA.js";import"./chunk-263XS447.js";import"./chunk-MDUHYUHF.js";import"./chunk-GAOJV3OX.js";import"./chunk-62ADTHV7.js";import"./chunk-DRT3WKQW.js";import"./chunk-UFUVUO3J.js";import"./chunk-7VDBAVTY.js";import"./chunk-B36CDR4U.js";import"./chunk-2I7J3O6V.js";import"./chunk-4I2IOUS4.js";var $={enableLearning:!0,enableRouting:!0,enableGuidance:!0,enableTrajectories:!0,enableExperienceReplay:!0,autoStoreExperiences:!0,minQualityThreshold:.6},v=class r{static instance=null;static initPromise=null;config;enhancedAdapter;disposed=!1;patternsLoaded=!1;qualityThresholdsFromPatterns=null;tasksRecorded=0;successfulTasks=0;failedTasks=0;patternsStored=0;routingRequests=0;activeTrajectories=new Map;constructor(e,t){this.config=e,this.enhancedAdapter=t}static async getInstance(e){if(r.instance&&!r.instance.disposed)return r.instance;if(r.initPromise)return r.initPromise;r.initPromise=r.create(e);try{return r.instance=await r.initPromise,r.instance}finally{r.initPromise=null}}static async create(e){let t={...$,...e},s=I({enableTrajectories:t.enableTrajectories,enableExperienceReplay:t.enableExperienceReplay,enablePatternEvolution:!0,autoStoreExperiences:t.autoStoreExperiences,autoConsolidate:!0});await s.initialize();let n=new r(t,s);return await n.loadPatternsFromLoader(),await n.seedInitialPatternsIfNeeded(),console.error("[ReasoningBankService] Initialized with EnhancedReasoningBankAdapter (trajectory + experience + evolution)"),n}async loadPatternsFromLoader(){try{let t=await A().getQualityGateThresholds();if(t){this.qualityThresholdsFromPatterns=t,this.patternsLoaded=!0,console.error("[ReasoningBankService] Loaded quality thresholds from PatternLoader",{tiers:Object.keys(t)});return}console.error("[ReasoningBankService] PatternLoader returned no thresholds, using defaults")}catch(e){console.error("[ReasoningBankService] Failed to load patterns from PatternLoader, using defaults",{error:e instanceof Error?e.message:"Unknown error"})}this.patternsLoaded=!1}async seedInitialPatternsIfNeeded(){try{let e=await this.enhancedAdapter.getStats();if(e.reasoningBank.totalPatterns>0){console.error(`[ReasoningBankService] Found ${e.reasoningBank.totalPatterns} existing patterns, skipping seed`);return}console.error("[ReasoningBankService] Seeding initial QE patterns...");let t=(n,a="string",i=!1)=>({name:n,type:a,required:i,description:`${n} parameter`}),s=[{patternType:"test-template",name:"unit-test-generation",description:"Generate comprehensive unit tests for TypeScript/JavaScript modules",domain:"test-generation",template:{type:"workflow",content:"Analyze module exports, identify edge cases, generate Jest/Vitest tests with proper mocking",variables:[t("modulePath"),t("framework")]},context:{tags:["unit","typescript","jest","vitest"]}},{patternType:"coverage-strategy",name:"coverage-gap-analysis",description:"Identify untested code paths and recommend targeted tests",domain:"coverage-analysis",template:{type:"workflow",content:"Parse coverage report, identify uncovered branches, prioritize by risk, generate recommendations",variables:[t("coveragePath"),t("threshold","number")]},context:{tags:["coverage","analysis","risk"]}},{patternType:"test-template",name:"integration-test-generation",description:"Generate integration tests for API endpoints and service interactions",domain:"test-generation",template:{type:"workflow",content:"Identify API contracts, generate request/response tests, validate error handling",variables:[t("apiPath"),t("framework")]},context:{tags:["integration","api","contract"]}},{patternType:"flaky-fix",name:"flaky-test-remediation",description:"Detect and fix flaky tests through pattern analysis",domain:"test-execution",template:{type:"workflow",content:"Analyze test history, identify timing/race conditions, apply stabilization patterns",variables:[t("testPath"),t("retryCount","number")]},context:{tags:["flaky","stability","retry"]}},{patternType:"error-handling",name:"security-vulnerability-scan",description:"Scan code for security vulnerabilities using OWASP patterns",domain:"security-compliance",template:{type:"workflow",content:"Run SAST analysis, check for injection risks, validate authentication/authorization",variables:[t("targetPath"),t("severity")]},context:{tags:["security","owasp","sast"]}}];for(let n of s)try{await this.enhancedAdapter.storePattern(n),this.patternsStored++}catch(a){console.error(`[ReasoningBankService] Failed to seed pattern ${n.name}:`,a)}console.error(`[ReasoningBankService] Seeded ${s.length} initial patterns`)}catch(e){console.error("[ReasoningBankService] Failed to seed patterns:",e)}}getPatternsLoaded(){return this.patternsLoaded}getQualityThresholdsFromPatterns(){return this.qualityThresholdsFromPatterns}async startTaskTrajectory(e,t,s={}){if(!this.config.enableTrajectories||this.disposed)return e;try{let n=await this.enhancedAdapter.startTaskTrajectory(t,s);return this.activeTrajectories.set(e,n),console.error(`[ReasoningBankService] Started trajectory: task=${e} trajectory=${n}`),n}catch(n){return console.error("[ReasoningBankService] Failed to start trajectory:",n),e}}async recordTrajectoryStep(e,t,s,n){if(!this.config.enableTrajectories||this.disposed)return;let a=this.activeTrajectories.get(e);if(!a){console.error(`[ReasoningBankService] No active trajectory for task ${e}`);return}try{await this.enhancedAdapter.recordTaskStep(a,t,s,n)}catch(i){console.error("[ReasoningBankService] Failed to record trajectory step:",i)}}async endTaskTrajectory(e,t,s){if(!this.config.enableTrajectories||this.disposed)return null;let n=this.activeTrajectories.get(e);if(!n)return console.error(`[ReasoningBankService] No active trajectory for task ${e}`),null;try{let a=await this.enhancedAdapter.endTaskTrajectory(n,t,s);return this.activeTrajectories.delete(e),console.error(`[ReasoningBankService] Ended trajectory: task=${e} success=${t} steps=${a.steps.length} quality=${a.metrics.averageQuality.toFixed(2)}`),a}catch(a){return console.error("[ReasoningBankService] Failed to end trajectory:",a),this.activeTrajectories.delete(e),null}}getActiveTrajectoryId(e){return this.activeTrajectories.get(e)}async recordTaskOutcome(e){if(!(!this.config.enableLearning||this.disposed)){this.tasksRecorded++,e.success?this.successfulTasks++:this.failedTasks++;try{let t={patternId:`task-${e.taskId}`,success:e.success,metrics:{executionTimeMs:e.executionTimeMs,testsPassed:e.metrics?.testsPassed,testsFailed:e.metrics?.testsGenerated?e.metrics.testsGenerated-(e.metrics.testsPassed||0):void 0,coverageImprovement:e.metrics?.coverageImprovement},feedback:e.error};await this.enhancedAdapter.recordPatternOutcome(t),e.success&&(e.qualityScore||.5)>=this.config.minQualityThreshold&&(await this.storeTaskPattern(e),this.patternsStored++),e.agentId&&await this.updateAgentPerformanceFromOutcome(e),console.error(`[ReasoningBankService] Recorded outcome: task=${e.taskId} success=${e.success} quality=${e.qualityScore?.toFixed(2)||"N/A"}`)}catch(t){throw console.error("[ReasoningBankService] Failed to record outcome:",t),t}}}async updateAgentPerformanceFromOutcome(e){if(e.agentId)try{P(e.agentId,{success:e.success,executionTimeMs:e.executionTimeMs,qualityScore:e.qualityScore}),console.error(`[ReasoningBankService] Updated agent performance: agent=${e.agentId} success=${e.success} duration=${e.executionTimeMs}ms`)}catch(t){console.error("[ReasoningBankService] Failed to update agent performance:",t)}}async storeTaskPattern(e){try{let t=[e.taskType,e.domain||"general",e.agentId?`agent:${e.agentId}`:void 0,e.modelTier?`tier:${e.modelTier}`:void 0,e.executionTimeMs?`duration:${e.executionTimeMs}ms`:void 0].filter(s=>s!==void 0);await this.enhancedAdapter.storePattern({patternType:"test-template",name:`${e.taskType}-${e.domain||"general"}`,description:e.task,template:{type:"workflow",content:e.task,variables:[]},context:{tags:t}})}catch(t){console.error("[ReasoningBankService] Failed to store pattern:",t)}}async getRoutingRecommendation(e){if(!this.config.enableRouting||this.disposed)return this.createFallbackRouting(e);this.routingRequests++;try{let t=await this.enhancedAdapter.routeTaskWithExperience(e);if(!t.success)return console.error("[ReasoningBankService] Routing returned error:",t.error),this.createFallbackRouting(e);let s=t.value;return s.experienceGuidance&&console.error(`[ReasoningBankService] Experience guidance: strategy="${s.experienceGuidance.recommendedStrategy}" confidence=${s.experienceGuidance.confidence.toFixed(2)} tokenSavings=${s.experienceGuidance.estimatedTokenSavings}`),console.error(`[ReasoningBankService] Routing: task="${e.task.slice(0,50)}..." -> agent=${s.recommendedAgent} confidence=${s.confidence.toFixed(2)}`),s}catch(t){return console.error("[ReasoningBankService] Routing failed:",t),this.createFallbackRouting(e)}}async getExperienceGuidance(e,t){if(!this.config.enableExperienceReplay||this.disposed)return null;try{return await this.enhancedAdapter.getExperienceGuidance(e,t)}catch(s){return console.error("[ReasoningBankService] Failed to get experience guidance:",s),null}}async getTaskGuidance(e,t){if(!this.config.enableGuidance||this.disposed)return[];try{let s=await this.enhancedAdapter.routeTaskWithExperience({task:e,domain:t});return s.success?s.value.guidance:[]}catch(s){return console.error("[ReasoningBankService] Guidance failed:",s),[]}}async searchPatterns(e,t){if(this.disposed)return[];try{let s=await this.enhancedAdapter.searchPatterns(e,{limit:t?.limit||10,domain:t?.domain});return s.success?s.value.map(n=>n.pattern):(console.error("[ReasoningBankService] Search returned error:",s.error),[])}catch(s){return console.error("[ReasoningBankService] Search failed:",s),[]}}async getStats(){let e=await this.enhancedAdapter.getStats();return{service:{tasksRecorded:this.tasksRecorded,successfulTasks:this.successfulTasks,failedTasks:this.failedTasks,successRate:this.tasksRecorded>0?this.successfulTasks/this.tasksRecorded:0,patternsStored:this.patternsStored,routingRequests:this.routingRequests,patternsLoaded:this.patternsLoaded,activeTrajectories:this.activeTrajectories.size},reasoningBank:e.reasoningBank,adapter:e.adapter}}createFallbackRouting(e){return{recommendedAgent:"qe-test-architect",confidence:.5,alternatives:[],domains:e.domain?[e.domain]:["test-generation"],patterns:[],guidance:[],reasoning:"Fallback routing - ReasoningBank unavailable",latencyMs:0}}isHealthy(){return!this.disposed}async dispose(){this.disposed||(this.disposed=!0,await this.enhancedAdapter.dispose(),this.activeTrajectories.clear(),r.instance=null,console.error("[ReasoningBankService] Disposed"))}static reset(){r.instance&&r.instance.dispose(),r.instance=null,r.initPromise=null}};async function p(r){return v.getInstance(r)}async function B(r,e,t){return(await p()).startTaskTrajectory(r,e,t)}async function b(r,e,t){return(await p()).endTaskTrajectory(r,e,t)}D();var q={"ideation-assessment":"qcsd-ideation-swarm"};async function J(r){if(!m())return{success:!1,error:"Fleet not initialized. Call fleet_init first."};let{queen:e}=g();try{let t=await e.submitTask({type:r.type,priority:r.priority||"p1",targetDomains:r.targetDomains||[],payload:r.payload||{},timeout:r.timeout||3e5});if(!t.success)return{success:!1,error:t.error.message};let s=e.getTaskStatus(t.value);return{success:!0,data:{taskId:t.value,type:r.type,priority:r.priority||"p1",status:s?.status==="running"?"pending":"queued",assignedDomain:s?.assignedDomain}}}catch(t){return{success:!1,error:`Failed to submit task: ${o(t)}`}}}async function K(r){if(!m())return{success:!1,error:"Fleet not initialized. Call fleet_init first."};let{queen:e}=g();try{let t=e.listTasks({status:r.status,priority:r.priority,domain:r.domain});return{success:!0,data:(typeof r.limit=="number"?t.slice(0,r.limit):t).map(a=>({taskId:a.taskId,type:a.task.type,status:a.status,priority:a.task.priority,assignedDomain:a.assignedDomain,assignedAgents:a.assignedAgents,result:a.result,error:a.error,createdAt:a.task.createdAt.toISOString(),startedAt:a.startedAt?.toISOString(),completedAt:a.completedAt?.toISOString(),duration:a.completedAt&&a.startedAt?a.completedAt.getTime()-a.startedAt.getTime():void 0}))}}catch(t){return{success:!1,error:`Failed to list tasks: ${o(t)}`}}}async function X(r){if(!m())return{success:!1,error:"Fleet not initialized. Call fleet_init first."};let{queen:e}=g();try{let t=e.getTaskStatus(r.taskId);return t?{success:!0,data:{taskId:t.taskId,type:t.task.type,status:t.status,priority:t.task.priority,assignedDomain:t.assignedDomain,assignedAgents:t.assignedAgents,result:r.detailed?t.result:void 0,error:t.error,createdAt:t.task.createdAt.toISOString(),startedAt:t.startedAt?.toISOString(),completedAt:t.completedAt?.toISOString(),duration:t.completedAt&&t.startedAt?t.completedAt.getTime()-t.startedAt.getTime():void 0}}:{success:!1,error:`Task not found: ${r.taskId}`}}catch(t){return{success:!1,error:`Failed to get task status: ${o(t)}`}}}async function Y(r){if(!m())return{success:!1,error:"Fleet not initialized. Call fleet_init first."};let{queen:e}=g();try{let t=await e.cancelTask(r.taskId);return t.success?{success:!0,data:{taskId:r.taskId,cancelled:!0}}:{success:!1,error:t.error.message}}catch(t){return{success:!1,error:`Failed to cancel task: ${o(t)}`}}}async function Z(r){if(!m())return{success:!1,error:"Fleet not initialized. Call fleet_init first."};let{queen:e,workflowOrchestrator:t}=g();try{let s=r.context?.project||j(r.task),n=r.priority==="critical"||/\b(security|vulnerability|cve|owasp|critical|production|exploit)\b/i.test(r.task),i=await(await T()).routeTask({task:r.task,codeContext:r.codeContext,filePaths:r.filePaths,manualTier:r.manualTier,isCritical:n,agentType:`qe-${s}`,domain:s,metadata:{inferredDomain:s,hasCodeContext:!!r.codeContext,fileCount:r.filePaths?.length}}),c=await(await p()).getExperienceGuidance(r.task,r.context?.project),d=F(r.task),y=O(r.priority||"medium"),u=q[d];if(u&&t){console.log(`[TaskOrchestrate] Task type '${d}' has workflow '${u}' - executing workflow`);let w=r.task.match(/https?:\/\/[^\s]+/i),f=w?w[0]:void 0;f&&console.log(`[TaskOrchestrate] Detected URL for analysis: ${f}`);let C={targetId:r.context?.project||f||`task-${Date.now()}`,targetType:f?"website":"epic",description:r.task,acceptanceCriteria:r.context?.requirements||[],url:f,routing:{tier:i.decision.tier,modelId:i.modelId,executionStrategy:i.executionStrategy,complexity:i.decision.complexityAnalysis.overall}},R=await t.executeWorkflow(u,C);return R.success?{success:!0,data:{taskId:R.value,type:d,priority:y,strategy:r.strategy||"adaptive",status:"workflow-started",message:`Workflow '${u}' started for task: ${r.task}`,routing:{tier:i.decision.tier,tierName:i.tierInfo.name,modelId:i.modelId,executionStrategy:i.executionStrategy,complexity:i.decision.complexityAnalysis.overall,confidence:i.decision.confidence,useAgentBooster:i.useAgentBooster,rationale:i.decision.rationale,decisionTimeMs:i.decision.metadata.decisionTimeMs}}}:{success:!1,error:`Workflow execution failed: ${R.error.message}`}}let l={description:r.task,strategy:r.strategy||"adaptive",maxAgents:r.maxAgents,context:r.context};d==="generate-tests"&&(l.sourceFiles=r.filePaths||[],l.sourceCode=r.codeContext||"",l.language=l.language||"typescript",l.testType=l.testType||"unit");let h=await e.submitTask({type:d,priority:y,targetDomains:[],payload:{...l,routing:{tier:i.decision.tier,modelId:i.modelId,executionStrategy:i.executionStrategy,useAgentBooster:i.useAgentBooster,agentBoosterTransform:i.decision.agentBoosterTransform,complexity:i.decision.complexityAnalysis.overall,confidence:i.decision.confidence},experienceGuidance:c?{strategy:c.recommendedStrategy,actions:c.suggestedActions,confidence:c.confidence,tokenSavings:c.estimatedTokenSavings}:void 0},timeout:6e5});if(!h.success)return{success:!1,error:h.error.message};let x=h.value;return await B(x,r.task,{agent:"queen-coordinator",domain:r.context?.project}),{success:!0,data:{taskId:x,type:d,priority:y,strategy:r.strategy||"adaptive",status:"submitted",message:`Task orchestrated: ${r.task}${c?" (with experience guidance)":""}`,routing:{tier:i.decision.tier,tierName:i.tierInfo.name,modelId:i.modelId,executionStrategy:i.executionStrategy,complexity:i.decision.complexityAnalysis.overall,confidence:i.decision.confidence,useAgentBooster:i.useAgentBooster,rationale:i.decision.rationale,decisionTimeMs:i.decision.metadata.decisionTimeMs}}}}catch(s){return{success:!1,error:`Failed to orchestrate task: ${o(s)}`}}}async function _(r){try{let e=await T(),t=r.domain||j(r.task),s=r.isCritical??/\b(security|vulnerability|cve|owasp|critical|production|exploit)\b/i.test(r.task),n=await e.routeTask({task:r.task,codeContext:r.codeContext,filePaths:r.filePaths,manualTier:r.manualTier,isCritical:s,agentType:r.agentType||`qe-${t}`,domain:t,metadata:{inferredDomain:t,hasCodeContext:!!r.codeContext,fileCount:r.filePaths?.length}});return{success:!0,data:{tier:n.decision.tier,tierName:n.tierInfo.name,modelId:n.modelId,executionStrategy:n.executionStrategy,useAgentBooster:n.useAgentBooster,agentBoosterTransform:n.decision.agentBoosterTransform,complexity:{overall:n.decision.complexityAnalysis.overall,code:n.decision.complexityAnalysis.codeComplexity,reasoning:n.decision.complexityAnalysis.reasoningComplexity,scope:n.decision.complexityAnalysis.scopeComplexity},confidence:n.decision.confidence,rationale:n.decision.rationale,warnings:n.decision.warnings,budget:{allowed:n.decision.budgetDecision.allowed,wasDowngraded:n.decision.budgetDecision.wasDowngraded,estimatedCostUsd:n.decision.budgetDecision.estimatedCostUsd},decisionTimeMs:n.decision.metadata.decisionTimeMs}}}catch(e){return{success:!1,error:`Failed to route task: ${o(e)}`}}}async function ee(r){try{let e=await T(),t=e.getRoutingStats(),s=e.getMetrics(),n={stats:t,modelRouterMetrics:{totalDecisions:s.totalDecisions,avgDecisionTimeMs:s.avgDecisionTimeMs,agentBoosterStats:s.agentBoosterStats,budgetStats:s.budgetStats}};return r.includeLog&&(n.log=e.getRoutingLog(r.logLimit||100)),{success:!0,data:n}}catch(e){return{success:!1,error:`Failed to get routing metrics: ${o(e)}`}}}async function te(r){try{let{createRoutingFeedbackCollector:e}=await import("./routing-feedback-ZXBXFKX6.js"),{getGlobalCostTracker:t}=await import("./cost-tracker-4F723RB6.js"),s=e(100);await s.initialize(),s.enableEconomicRouting({...r.taskComplexity!=null?{}:{}},t());let n=s.getEconomicReport();return n?{success:!0,data:{tierEfficiency:n.tierEfficiency.map(i=>({...i,qualityPerDollar:isFinite(i.qualityPerDollar)?i.qualityPerDollar:"Infinity"})),currentHourlyCostUsd:n.currentHourlyCostUsd,currentDailyCostUsd:n.currentDailyCostUsd,budgetRemaining:n.budgetRemaining,recommendation:n.recommendation,savingsOpportunity:n.savingsOpportunity}}:{success:!1,error:"Economic routing is not available"}}catch(e){return{success:!1,error:`Failed to get economic routing report: ${o(e)}`}}}function j(r){let e=r.toLowerCase();return/\b(security|vulnerabilit|cve|owasp|secret|credential|injection|xss|csrf)\b/.test(e)?"security-compliance":/\b(chaos|resilience|fault.?inject|disaster|failover)\b/.test(e)?"chaos-resilience":/\b(defect|bug.?predict|risk.?assess|mutation)\b/.test(e)?"defect-intelligence":/\b(coverage|uncovered|gap.?analy)\b/.test(e)?"coverage-analysis":/\b(quality|code.?review|maintain|tech.?debt)\b/.test(e)?"quality-assessment":/\b(contract|api.?compat|breaking.?change|pact)\b/.test(e)?"contract-testing":/\b(index|knowledge.?graph|semantic|code.?intel)\b/.test(e)?"code-intelligence":/\b(accessib|a11y|wcag|screen.?read)\b/.test(e)?"visual-accessibility":/\b(requirement|bdd|acceptance|user.?stor)\b/.test(e)?"requirements-validation":/\b(generat.*test|test.*generat|write.*test|create.*test)\b/.test(e)?"test-generation":/\b(run.*test|execut.*test)\b/.test(e)?"test-execution":"test-generation"}function F(r){let e=r.toLowerCase();return/run\s+(?:\w+\s+)*tests?/.test(e)||/execute\s+(?:\w+\s+)*tests?/.test(e)||e.includes("run tests")||e.includes("execute tests")?"execute-tests":e.includes("generate test")||e.includes("create test")||e.includes("write test")?"generate-tests":e.includes("coverage")||e.includes("uncovered")?"analyze-coverage":e.includes("quality")||e.includes("code quality")?"assess-quality":e.includes("defect")||e.includes("bug")||e.includes("predict")?"predict-defects":e.includes("requirement")||e.includes("bdd")||e.includes("acceptance")?"validate-requirements":e.includes("index")||e.includes("knowledge graph")||e.includes("semantic")?"index-code":e.includes("security")||e.includes("vulnerability")||e.includes("owasp")?"scan-security":e.includes("contract")||e.includes("api contract")||e.includes("pact")?"validate-contracts":e.includes("accessibility")||e.includes("a11y")||e.includes("wcag")?"test-accessibility":e.includes("chaos")||e.includes("resilience")||e.includes("fault")?"run-chaos":e.includes("learn")||e.includes("optimize")||e.includes("improve")?"optimize-learning":e.includes("ideation")||e.includes("quality criteria")||e.includes("htsm")||e.includes("qcsd")||e.includes("testability")||e.includes("pi planning")||e.includes("sprint planning")?"ideation-assessment":"generate-tests"}function O(r){switch(r){case"critical":return"p0";case"high":return"p1";case"medium":return"p2";case"low":return"p3";default:return"p1"}}async function re(r){try{let e=await p(),t={taskId:r.taskId,task:r.task,taskType:r.taskType,success:r.success,executionTimeMs:r.executionTimeMs,agentId:r.agentId,domain:r.domain,modelTier:r.modelTier,qualityScore:r.qualityScore,error:r.error,metrics:r.metrics};await e.recordTaskOutcome(t);let s=r.success&&(r.qualityScore||.5)>=.6;return{success:!0,data:{recorded:!0,patternStored:s,message:s?`Outcome recorded and pattern stored for task ${r.taskId}`:`Outcome recorded for task ${r.taskId}`}}}catch(e){return{success:!1,error:`Failed to record task outcome: ${o(e)}`}}}async function se(){try{let e=await(await p()).getStats();return{success:!0,data:{service:e.service,patterns:{totalPatterns:e.reasoningBank.totalPatterns,byDomain:e.reasoningBank.byDomain,byTier:e.reasoningBank.byTier,learningOutcomes:e.reasoningBank.learningOutcomes,patternSuccessRate:e.reasoningBank.patternSuccessRate},embeddings:{cacheSize:e.reasoningBank.embeddingCacheSize,dimension:e.reasoningBank.embeddingDimension,transformerAvailable:e.reasoningBank.transformerAvailable},performance:{avgRoutingLatencyMs:e.reasoningBank.avgRoutingLatencyMs,p95RoutingLatencyMs:e.reasoningBank.p95RoutingLatencyMs}}}}catch(r){return{success:!1,error:`Failed to get ReasoningBank stats: ${o(r)}`}}}var E=new Set;async function ne(r){if(!m())return{success:!1,error:"Fleet not initialized. Call fleet_init first."};let{queen:e}=g();try{let t=e.getTaskStatus(r.taskId);if(!t)return{success:!1,error:`Task not found: ${r.taskId}`};let s={taskId:t.taskId,type:t.task.type,status:t.status,priority:t.task.priority,assignedDomain:t.assignedDomain,assignedAgents:t.assignedAgents,result:r.detailed?t.result:void 0,error:t.error,createdAt:t.task.createdAt.toISOString(),startedAt:t.startedAt?.toISOString(),completedAt:t.completedAt?.toISOString(),duration:t.completedAt&&t.startedAt?t.completedAt.getTime()-t.startedAt.getTime():void 0};if((t.status==="completed"||t.status==="failed")&&!E.has(r.taskId)){E.add(r.taskId);try{let n=await p(),a=s.duration||0,i=t.status==="completed",k=t.task.payload||{},c=typeof k.description=="string"?k.description:t.task.type,d=k.routing,y=await b(r.taskId,i,t.error),u=y?.metrics.averageQuality??(i?.7:.3);await n.recordTaskOutcome({taskId:r.taskId,task:c,taskType:t.task.type,success:i,executionTimeMs:a,agentId:t.assignedAgents?.[0],domain:t.assignedDomain,modelTier:d?.tier,qualityScore:u,error:t.error,metrics:{testsGenerated:typeof t.result=="object"&&t.result?t.result.testsGenerated:void 0,testsPassed:typeof t.result=="object"&&t.result?t.result.testsPassed:void 0}}),console.error(`[TaskHandler] Recorded learning outcome: task=${r.taskId} success=${i} quality=${u.toFixed(2)} trajectorySteps=${y?.steps.length??0}`)}catch(n){console.error("[TaskHandler] Failed to record outcome:",n)}}return{success:!0,data:s}}catch(t){return{success:!1,error:`Failed to get task status: ${o(t)}`}}}var S=[];function ie(r){M(r);let e=r.subscribeToEventType("TaskCompleted",async s=>{let{taskId:n}=s.payload;n&&await b(n,!0).catch(()=>{})}),t=r.subscribeToEventType("TaskFailed",async s=>{let{taskId:n,error:a}=s.payload;n&&await b(n,!1,a).catch(()=>{})});S=[e,t]}function M(r){for(let e of S)r.unsubscribe(e);S=[]}export{_ as handleModelRoute,se as handleReasoningBankStats,te as handleRoutingEconomics,ee as handleRoutingMetrics,Y as handleTaskCancel,K as handleTaskList,Z as handleTaskOrchestrate,re as handleTaskOutcomeRecord,X as handleTaskStatus,ne as handleTaskStatusWithLearning,J as handleTaskSubmit,ie as subscribeTrajectoryEvents,M as unsubscribeTrajectoryEvents};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{b as y}from"./chunk-JBANAPWG.js";import{c as u,d as p,f as k,j as h}from"./chunk-YR6ZZGH7.js";import"./chunk-4I2IOUS4.js";import{Command as F}from"commander";import e from"chalk";function U($,d,T){return new F("test").description("Test generation, execution, scheduling, and load testing").argument("<action>","Action (generate|execute|schedule|load)").argument("[target]","Target file or directory").option("-f, --framework <framework>","Test framework","vitest").option("-t, --type <type>","Test type (unit|integration|e2e)","unit").option("-F, --format <format>","Output format (text|json|junit|markdown)","text").option("-o, --output <path>","Write output to file").option("--git-ref <ref>","Git ref for schedule action (e.g., main, HEAD~3)").option("--no-git-aware","Disable git-aware test selection (schedule action)").option("--no-flaky","Disable flaky test tracking (schedule action)").option("--agents <count>","Target agent count for load action","10").option("--profile <profile>","Workload profile for load action (light|medium|heavy)","medium").option("--duration <ms>","Duration in ms for load action","30000").option("--real","Use real agents instead of mock (load action, requires fleet_init)").action(async(m,f,s)=>{if(await T())try{if(m==="generate"){console.log(e.blue(`
|
|
3
|
+
Generating tests for ${f||"current directory"}...
|
|
4
|
+
`));let l=await $.kernel.getDomainAPIAsync("test-generation");if(!l){console.log(e.red("Test generation domain not available"));return}let i=await import("path"),g=i.resolve(f||"."),a=y(g,{includeTests:!1});if(a.length===0){console.log(e.yellow("No source files found"));return}console.log(e.gray(` Found ${a.length} source files
|
|
5
|
+
`));let n=await l.generateTests({sourceFiles:a,testType:s.type,framework:s.framework,coverageTarget:80});if(n.success&&n.value){let t=n.value,c=s.format;if(c==="json")u(p(t),s.output);else if(c==="markdown"){let r=`# Test Generation Report
|
|
6
|
+
|
|
7
|
+
- **Tests Generated**: ${t.tests.length}
|
|
8
|
+
- **Coverage Estimate**: ${t.coverageEstimate}%
|
|
9
|
+
- **Patterns Used**: ${t.patternsUsed.join(", ")||"none"}
|
|
10
|
+
|
|
11
|
+
## Tests
|
|
12
|
+
|
|
13
|
+
`+t.tests.map(o=>`- **${o.name}** (${o.assertions} assertions) \u2014 \`${o.sourceFile}\``).join(`
|
|
14
|
+
`)+`
|
|
15
|
+
`;u(r,s.output)}else{console.log(e.green(`Generated ${t.tests.length} tests
|
|
16
|
+
`)),console.log(e.cyan(" Tests:"));for(let r of t.tests.slice(0,10))if(console.log(` ${e.white(r.name)}`),console.log(e.gray(` Source: ${i.basename(r.sourceFile)}`)),console.log(e.gray(` Assertions: ${r.assertions}`)),r.testCode){console.log(e.gray(` Test File: ${r.testFile}`));let o=await import("fs"),w=i.dirname(r.testFile);o.mkdirSync(w,{recursive:!0}),o.writeFileSync(r.testFile,r.testCode,"utf-8"),console.log(e.green(` Written to: ${r.testFile}`))}t.tests.length>10&&console.log(e.gray(` ... and ${t.tests.length-10} more`)),console.log(`
|
|
17
|
+
Coverage Estimate: ${e.yellow(t.coverageEstimate+"%")}`),t.patternsUsed.length>0&&console.log(` Patterns Used: ${e.cyan(t.patternsUsed.join(", "))}`)}}else console.log(e.red(`Failed: ${n.error?.message||"Unknown error"}`))}else if(m==="execute"){console.log(e.blue(`
|
|
18
|
+
Executing tests in ${f||"current directory"}...
|
|
19
|
+
`));let l=await $.kernel.getDomainAPIAsync("test-execution");if(!l){console.log(e.red("Test execution domain not available"));return}let g=(await import("path")).resolve(f||"."),a=y(g,{testsOnly:!0});if(a.length===0){console.log(e.yellow("No test files found"));return}console.log(e.gray(` Found ${a.length} test files
|
|
20
|
+
`));let n=await l.runTests({testFiles:a,parallel:!0,retryCount:2});if(n.success&&n.value){let t=n.value,c=s.format;if(c==="json")u(p(t),s.output);else if(c==="junit")u(k(t),s.output);else if(c==="markdown")u(h(t),s.output);else{let o=t.passed+t.failed+t.skipped;console.log(e.green("Test run complete")),console.log(`
|
|
21
|
+
Results:`),console.log(` Total: ${e.white(o)}`),console.log(` Passed: ${e.green(t.passed)}`),console.log(` Failed: ${e.red(t.failed)}`),console.log(` Skipped: ${e.yellow(t.skipped)}`),console.log(` Duration: ${e.cyan(t.duration+"ms")}`)}t.failed>0&&await d(1);let r=t.passed+t.failed+t.skipped;r>0&&t.skipped/r>.2&&await d(2)}else console.log(e.red(`Failed: ${n.error?.message||"Unknown error"}`))}else if(m==="schedule"){let l=s.format;l==="text"&&console.log(e.blue(`
|
|
22
|
+
Running test schedule pipeline...
|
|
23
|
+
`));let{TestScheduleTool:i}=await import("./schedule-Y7VVCPYV.js"),a=await new i().invoke({cwd:f||process.cwd(),gitRef:s.gitRef,useGitAware:s.gitAware!==!1,trackFlaky:s.flaky!==!1});if(a.success&&a.data){let n=a.data;if(l==="json")u(p(n),s.output);else{console.log(e.green(` Schedule complete
|
|
24
|
+
`)),console.log(` Phases: ${e.white(n.phases.length)}`);for(let t of n.phases){let c=t.failed===0?e.green:e.red;console.log(` ${e.cyan(t.phaseName)}: ${c(`${t.passed}/${t.totalTests} passed`)} (${t.durationMs}ms)`)}console.log(`
|
|
25
|
+
Git-aware: ${n.gitAware.enabled?e.green(`yes (${n.gitAware.selectedTests} selected)`):e.gray("disabled")}`),console.log(` Duration: ${e.cyan(n.totalDuration+"ms")}`),console.log(`
|
|
26
|
+
${n.summary}`)}}else console.log(e.red(`Failed: ${a.error||"Unknown error"}`))}else if(m==="load"){let l=s.format,i=parseInt(s.agents,10)||10,g=parseInt(s.duration,10)||3e4,a=s.profile,n=!s.real;l==="text"&&console.log(e.blue(`
|
|
27
|
+
Running load test: ${i} agents, ${a} profile, ${g}ms${n?" (mock)":" (real)"}...
|
|
28
|
+
`));let{LoadTestTool:t}=await import("./load-test-GZUBXFF3.js"),r=await new t().invoke({targetAgents:i,profile:a,durationMs:g,mockMode:n});if(r.success&&r.data){let o=r.data;if(l==="json")u(p(o),s.output);else{let w=o.passed?e.green:e.red;console.log(w(` Load test ${o.passed?"PASSED":"FAILED"}
|
|
29
|
+
`)),console.log(` Profile: ${e.cyan(o.profile)} (${o.mockMode?"mock":"real"})`),console.log(` Agents: ${e.white(o.targetAgents)}`),console.log(` Duration: ${e.cyan(o.duration+"ms")}`),console.log(` Bottlenecks: ${o.bottleneckCount>0?e.red(o.bottleneckCount):e.green("none")}`),o.report.hasCritical&&console.log(e.red(" CRITICAL bottlenecks detected!")),console.log(`
|
|
30
|
+
${o.summary}`)}o.passed||await d(1)}else console.log(e.red(`Failed: ${r.error||"Unknown error"}`))}else console.log(e.red(`
|
|
31
|
+
Unknown action: ${m}. Use: generate, execute, schedule, or load
|
|
32
|
+
`)),await d(1);console.log(""),await d(0)}catch(l){console.error(e.red(`
|
|
33
|
+
Failed:`),l),await d(1)}})}export{U as createTestCommand};
|