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,604 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
import{d as k,f as we}from"./chunk-N2NS2PHA.js";import{a as ye}from"./chunk-3JPRUND5.js";import{c as Q}from"./chunk-4VUPRTVX.js";import{b as C,d as Z}from"./chunk-WGMPEW2T.js";import{a as V,c as be}from"./chunk-JZSDOIXA.js";import{a as J,b as Xe}from"./chunk-263XS447.js";import{a as ee,b as te,c as b,f as ne}from"./chunk-GAOJV3OX.js";import{a as v,e as De}from"./chunk-7VDBAVTY.js";import{c as R,e as ve}from"./chunk-4I2IOUS4.js";function O(i){if(!q.has(i))throw new Error(`Invalid table name: "${i}" is not in the allowlist`);return i}function ze(i){let e=i.split(".");if(e.length>2)throw new Error(`Invalid SQL identifier: "${i}" has too many parts (max: schema.table)`);for(let t of e)if(!re.test(t))throw new Error(`Invalid SQL identifier: "${i}" \u2014 part "${t}" does not match pattern ${re}`);return i}var q,re,z=R(()=>{"use strict";q=new Set(["schema_version","kv_store","vectors","rl_q_values","goap_goals","goap_actions","goap_plans","goap_plan_signatures","concept_nodes","concept_edges","dream_cycles","dream_insights","qe_patterns","qe_pattern_embeddings","qe_pattern_usage","qe_trajectories","embeddings","execution_results","executed_steps","mincut_snapshots","mincut_history","mincut_weak_vertices","mincut_alerts","mincut_healing_actions","mincut_observations","sona_patterns","sona_fisher_matrices","test_outcomes","routing_outcomes","coverage_sessions","patterns","hypergraph_nodes","hypergraph_edges","hypergraph_vertices","hypergraph_hyperedges","hypergraph_edge_vertices","hypergraph_vertex_properties","hypergraph_edge_properties","captured_experiences","experience_applications","witness_chain","witness_chain_receipts","witness_chain_archive","trajectories","trajectory_steps","pattern_evolution_events","pattern_relationships","pattern_versions","learning_daily_snapshots","metrics_outcomes","experience_consolidation_log","qe_pattern_reuse","qe_agent_co_execution"]);re=/^[a-z_][a-z0-9_]{0,62}$/});var D,se,oe,ie,ae,ce,Te,Ee,de,ue,le,pe,ge=R(()=>{"use strict";we();D=9,se=`
|
|
3
|
+
CREATE TABLE IF NOT EXISTS schema_version (
|
|
4
|
+
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
5
|
+
version INTEGER NOT NULL,
|
|
6
|
+
migrated_at TEXT DEFAULT (datetime('now'))
|
|
7
|
+
);
|
|
8
|
+
`,oe=`
|
|
9
|
+
-- Key-Value Store (v2 compatible - same schema as HybridBackend)
|
|
10
|
+
CREATE TABLE IF NOT EXISTS kv_store (
|
|
11
|
+
key TEXT NOT NULL,
|
|
12
|
+
namespace TEXT NOT NULL,
|
|
13
|
+
value TEXT NOT NULL,
|
|
14
|
+
expires_at INTEGER,
|
|
15
|
+
created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
|
|
16
|
+
PRIMARY KEY (namespace, key)
|
|
17
|
+
);
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_kv_namespace ON kv_store(namespace);
|
|
19
|
+
CREATE INDEX IF NOT EXISTS idx_kv_expires ON kv_store(expires_at) WHERE expires_at IS NOT NULL;
|
|
20
|
+
`,ie=`
|
|
21
|
+
-- Vector Embeddings (new in v3 - replaces in-memory AgentDB)
|
|
22
|
+
CREATE TABLE IF NOT EXISTS vectors (
|
|
23
|
+
id TEXT PRIMARY KEY,
|
|
24
|
+
namespace TEXT NOT NULL DEFAULT 'default',
|
|
25
|
+
embedding BLOB NOT NULL,
|
|
26
|
+
dimensions INTEGER NOT NULL,
|
|
27
|
+
metadata TEXT,
|
|
28
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
29
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
30
|
+
);
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_vectors_namespace ON vectors(namespace);
|
|
32
|
+
CREATE INDEX IF NOT EXISTS idx_vectors_dimensions ON vectors(dimensions);
|
|
33
|
+
`,ae=`
|
|
34
|
+
-- Q-Values for RL algorithms (ADR-046)
|
|
35
|
+
CREATE TABLE IF NOT EXISTS rl_q_values (
|
|
36
|
+
id TEXT PRIMARY KEY,
|
|
37
|
+
algorithm TEXT NOT NULL,
|
|
38
|
+
agent_id TEXT NOT NULL,
|
|
39
|
+
state_key TEXT NOT NULL,
|
|
40
|
+
action_key TEXT NOT NULL,
|
|
41
|
+
q_value REAL NOT NULL DEFAULT 0.0,
|
|
42
|
+
visits INTEGER NOT NULL DEFAULT 0,
|
|
43
|
+
last_reward REAL,
|
|
44
|
+
domain TEXT,
|
|
45
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
46
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
47
|
+
UNIQUE(algorithm, agent_id, state_key, action_key)
|
|
48
|
+
);
|
|
49
|
+
CREATE INDEX IF NOT EXISTS idx_qvalues_agent ON rl_q_values(agent_id);
|
|
50
|
+
CREATE INDEX IF NOT EXISTS idx_qvalues_algorithm ON rl_q_values(algorithm);
|
|
51
|
+
CREATE INDEX IF NOT EXISTS idx_qvalues_state ON rl_q_values(agent_id, state_key);
|
|
52
|
+
CREATE INDEX IF NOT EXISTS idx_qvalues_domain ON rl_q_values(domain);
|
|
53
|
+
CREATE INDEX IF NOT EXISTS idx_qvalues_updated ON rl_q_values(updated_at);
|
|
54
|
+
`,ce=`
|
|
55
|
+
-- GOAP Goals
|
|
56
|
+
CREATE TABLE IF NOT EXISTS goap_goals (
|
|
57
|
+
id TEXT PRIMARY KEY,
|
|
58
|
+
name TEXT NOT NULL,
|
|
59
|
+
description TEXT,
|
|
60
|
+
conditions TEXT NOT NULL,
|
|
61
|
+
priority INTEGER DEFAULT 3,
|
|
62
|
+
qe_domain TEXT,
|
|
63
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
-- GOAP Actions
|
|
67
|
+
CREATE TABLE IF NOT EXISTS goap_actions (
|
|
68
|
+
id TEXT PRIMARY KEY,
|
|
69
|
+
name TEXT NOT NULL,
|
|
70
|
+
description TEXT,
|
|
71
|
+
agent_type TEXT NOT NULL,
|
|
72
|
+
preconditions TEXT NOT NULL,
|
|
73
|
+
effects TEXT NOT NULL,
|
|
74
|
+
cost REAL DEFAULT 1.0,
|
|
75
|
+
estimated_duration_ms INTEGER,
|
|
76
|
+
success_rate REAL DEFAULT 1.0,
|
|
77
|
+
execution_count INTEGER DEFAULT 0,
|
|
78
|
+
category TEXT NOT NULL,
|
|
79
|
+
qe_domain TEXT,
|
|
80
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
81
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
-- GOAP Plans
|
|
85
|
+
CREATE TABLE IF NOT EXISTS goap_plans (
|
|
86
|
+
id TEXT PRIMARY KEY,
|
|
87
|
+
goal_id TEXT,
|
|
88
|
+
initial_state TEXT NOT NULL,
|
|
89
|
+
goal_state TEXT NOT NULL,
|
|
90
|
+
action_sequence TEXT NOT NULL,
|
|
91
|
+
total_cost REAL,
|
|
92
|
+
estimated_duration_ms INTEGER,
|
|
93
|
+
status TEXT DEFAULT 'pending',
|
|
94
|
+
reused_from TEXT,
|
|
95
|
+
similarity_score REAL,
|
|
96
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
97
|
+
executed_at TEXT,
|
|
98
|
+
completed_at TEXT,
|
|
99
|
+
FOREIGN KEY (goal_id) REFERENCES goap_goals(id)
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
-- Plan Signatures (for similarity matching)
|
|
103
|
+
CREATE TABLE IF NOT EXISTS goap_plan_signatures (
|
|
104
|
+
id TEXT PRIMARY KEY,
|
|
105
|
+
plan_id TEXT NOT NULL UNIQUE,
|
|
106
|
+
goal_hash TEXT NOT NULL,
|
|
107
|
+
state_vector TEXT NOT NULL,
|
|
108
|
+
action_sequence TEXT NOT NULL,
|
|
109
|
+
total_cost REAL NOT NULL,
|
|
110
|
+
success_rate REAL DEFAULT 1.0,
|
|
111
|
+
usage_count INTEGER DEFAULT 0,
|
|
112
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
-- GOAP Indexes
|
|
116
|
+
CREATE INDEX IF NOT EXISTS idx_goap_actions_category ON goap_actions(category);
|
|
117
|
+
CREATE INDEX IF NOT EXISTS idx_goap_actions_agent ON goap_actions(agent_type);
|
|
118
|
+
CREATE INDEX IF NOT EXISTS idx_goap_plans_status ON goap_plans(status);
|
|
119
|
+
CREATE INDEX IF NOT EXISTS idx_goap_sig_goal ON goap_plan_signatures(goal_hash);
|
|
120
|
+
`,Te=`
|
|
121
|
+
-- Concept Graph Nodes (Dream Engine)
|
|
122
|
+
CREATE TABLE IF NOT EXISTS concept_nodes (
|
|
123
|
+
id TEXT PRIMARY KEY,
|
|
124
|
+
concept_type TEXT NOT NULL,
|
|
125
|
+
content TEXT NOT NULL,
|
|
126
|
+
embedding BLOB,
|
|
127
|
+
activation_level REAL DEFAULT 0.0,
|
|
128
|
+
last_activated TEXT,
|
|
129
|
+
pattern_id TEXT,
|
|
130
|
+
metadata TEXT,
|
|
131
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
-- Concept Edges
|
|
135
|
+
CREATE TABLE IF NOT EXISTS concept_edges (
|
|
136
|
+
id TEXT PRIMARY KEY,
|
|
137
|
+
source TEXT NOT NULL,
|
|
138
|
+
target TEXT NOT NULL,
|
|
139
|
+
weight REAL NOT NULL DEFAULT 1.0,
|
|
140
|
+
edge_type TEXT NOT NULL,
|
|
141
|
+
evidence INTEGER DEFAULT 1,
|
|
142
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
143
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
144
|
+
FOREIGN KEY (source) REFERENCES concept_nodes(id) ON DELETE CASCADE,
|
|
145
|
+
FOREIGN KEY (target) REFERENCES concept_nodes(id) ON DELETE CASCADE
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
-- Dream Cycles
|
|
149
|
+
CREATE TABLE IF NOT EXISTS dream_cycles (
|
|
150
|
+
id TEXT PRIMARY KEY,
|
|
151
|
+
start_time TEXT NOT NULL,
|
|
152
|
+
end_time TEXT,
|
|
153
|
+
duration_ms INTEGER,
|
|
154
|
+
concepts_processed INTEGER DEFAULT 0,
|
|
155
|
+
associations_found INTEGER DEFAULT 0,
|
|
156
|
+
insights_generated INTEGER DEFAULT 0,
|
|
157
|
+
status TEXT DEFAULT 'running',
|
|
158
|
+
error TEXT,
|
|
159
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
-- Dream Insights
|
|
163
|
+
CREATE TABLE IF NOT EXISTS dream_insights (
|
|
164
|
+
id TEXT PRIMARY KEY,
|
|
165
|
+
cycle_id TEXT NOT NULL,
|
|
166
|
+
insight_type TEXT NOT NULL,
|
|
167
|
+
source_concepts TEXT NOT NULL,
|
|
168
|
+
description TEXT NOT NULL,
|
|
169
|
+
novelty_score REAL DEFAULT 0.5,
|
|
170
|
+
confidence_score REAL DEFAULT 0.5,
|
|
171
|
+
actionable INTEGER DEFAULT 0,
|
|
172
|
+
applied INTEGER DEFAULT 0,
|
|
173
|
+
suggested_action TEXT,
|
|
174
|
+
pattern_id TEXT,
|
|
175
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
176
|
+
FOREIGN KEY (cycle_id) REFERENCES dream_cycles(id) ON DELETE CASCADE
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
-- Dream Indexes
|
|
180
|
+
CREATE INDEX IF NOT EXISTS idx_concept_type ON concept_nodes(concept_type);
|
|
181
|
+
CREATE INDEX IF NOT EXISTS idx_concept_activation ON concept_nodes(activation_level);
|
|
182
|
+
CREATE INDEX IF NOT EXISTS idx_concept_pattern ON concept_nodes(pattern_id);
|
|
183
|
+
CREATE INDEX IF NOT EXISTS idx_edge_source ON concept_edges(source);
|
|
184
|
+
CREATE INDEX IF NOT EXISTS idx_edge_target ON concept_edges(target);
|
|
185
|
+
CREATE INDEX IF NOT EXISTS idx_edge_type ON concept_edges(edge_type);
|
|
186
|
+
CREATE INDEX IF NOT EXISTS idx_edge_weight ON concept_edges(weight DESC);
|
|
187
|
+
CREATE INDEX IF NOT EXISTS idx_insight_cycle ON dream_insights(cycle_id);
|
|
188
|
+
CREATE INDEX IF NOT EXISTS idx_dream_status ON dream_cycles(status);
|
|
189
|
+
`,Ee=`
|
|
190
|
+
-- QE Patterns table (unified from sqlite-persistence.ts)
|
|
191
|
+
CREATE TABLE IF NOT EXISTS qe_patterns (
|
|
192
|
+
id TEXT PRIMARY KEY,
|
|
193
|
+
pattern_type TEXT NOT NULL,
|
|
194
|
+
qe_domain TEXT NOT NULL,
|
|
195
|
+
domain TEXT NOT NULL,
|
|
196
|
+
name TEXT NOT NULL,
|
|
197
|
+
description TEXT,
|
|
198
|
+
confidence REAL DEFAULT 0.5,
|
|
199
|
+
usage_count INTEGER DEFAULT 0,
|
|
200
|
+
success_rate REAL DEFAULT 0.0,
|
|
201
|
+
quality_score REAL DEFAULT 0.0,
|
|
202
|
+
tier TEXT DEFAULT 'short-term',
|
|
203
|
+
template_json TEXT,
|
|
204
|
+
context_json TEXT,
|
|
205
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
206
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
207
|
+
last_used_at TEXT,
|
|
208
|
+
successful_uses INTEGER DEFAULT 0,
|
|
209
|
+
tokens_used INTEGER,
|
|
210
|
+
input_tokens INTEGER,
|
|
211
|
+
output_tokens INTEGER,
|
|
212
|
+
latency_ms REAL,
|
|
213
|
+
reusable INTEGER DEFAULT 0,
|
|
214
|
+
reuse_count INTEGER DEFAULT 0,
|
|
215
|
+
average_token_savings REAL DEFAULT 0,
|
|
216
|
+
total_tokens_saved INTEGER
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
-- Pattern embeddings table (BLOB storage for vectors)
|
|
220
|
+
CREATE TABLE IF NOT EXISTS qe_pattern_embeddings (
|
|
221
|
+
pattern_id TEXT PRIMARY KEY,
|
|
222
|
+
embedding BLOB NOT NULL,
|
|
223
|
+
dimension INTEGER NOT NULL,
|
|
224
|
+
model TEXT DEFAULT 'all-MiniLM-L6-v2',
|
|
225
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
226
|
+
FOREIGN KEY (pattern_id) REFERENCES qe_patterns(id) ON DELETE CASCADE
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
-- Pattern usage history (no FK -- used as analytics log by hooks with synthetic IDs)
|
|
230
|
+
CREATE TABLE IF NOT EXISTS qe_pattern_usage (
|
|
231
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
232
|
+
pattern_id TEXT NOT NULL,
|
|
233
|
+
success INTEGER NOT NULL,
|
|
234
|
+
metrics_json TEXT,
|
|
235
|
+
feedback TEXT,
|
|
236
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
237
|
+
);
|
|
238
|
+
|
|
239
|
+
-- Learning trajectories
|
|
240
|
+
CREATE TABLE IF NOT EXISTS qe_trajectories (
|
|
241
|
+
id TEXT PRIMARY KEY,
|
|
242
|
+
task TEXT NOT NULL,
|
|
243
|
+
agent TEXT,
|
|
244
|
+
domain TEXT,
|
|
245
|
+
started_at TEXT DEFAULT (datetime('now')),
|
|
246
|
+
ended_at TEXT,
|
|
247
|
+
success INTEGER,
|
|
248
|
+
steps_json TEXT,
|
|
249
|
+
metadata_json TEXT
|
|
250
|
+
);
|
|
251
|
+
|
|
252
|
+
-- Embeddings table (unified from EmbeddingCache.ts)
|
|
253
|
+
-- Renamed from 'embedding_cache' to 'embeddings' to match existing code
|
|
254
|
+
CREATE TABLE IF NOT EXISTS embeddings (
|
|
255
|
+
key TEXT NOT NULL,
|
|
256
|
+
namespace TEXT NOT NULL,
|
|
257
|
+
vector BLOB NOT NULL,
|
|
258
|
+
dimension INTEGER NOT NULL,
|
|
259
|
+
text TEXT NOT NULL,
|
|
260
|
+
timestamp INTEGER NOT NULL,
|
|
261
|
+
quantization TEXT NOT NULL,
|
|
262
|
+
metadata TEXT,
|
|
263
|
+
access_count INTEGER DEFAULT 1,
|
|
264
|
+
last_access INTEGER NOT NULL,
|
|
265
|
+
PRIMARY KEY (key, namespace)
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
-- Execution results table (unified from plan-executor.ts)
|
|
269
|
+
CREATE TABLE IF NOT EXISTS execution_results (
|
|
270
|
+
id TEXT PRIMARY KEY,
|
|
271
|
+
plan_id TEXT NOT NULL,
|
|
272
|
+
status TEXT NOT NULL,
|
|
273
|
+
steps_completed INTEGER DEFAULT 0,
|
|
274
|
+
steps_failed INTEGER DEFAULT 0,
|
|
275
|
+
total_duration_ms INTEGER DEFAULT 0,
|
|
276
|
+
final_world_state TEXT,
|
|
277
|
+
error_message TEXT,
|
|
278
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
-- Executed steps table (unified from plan-executor.ts)
|
|
282
|
+
CREATE TABLE IF NOT EXISTS executed_steps (
|
|
283
|
+
id TEXT PRIMARY KEY,
|
|
284
|
+
execution_id TEXT NOT NULL,
|
|
285
|
+
plan_id TEXT NOT NULL,
|
|
286
|
+
action_id TEXT NOT NULL,
|
|
287
|
+
step_order INTEGER NOT NULL,
|
|
288
|
+
status TEXT NOT NULL,
|
|
289
|
+
retries INTEGER DEFAULT 0,
|
|
290
|
+
started_at TEXT NOT NULL,
|
|
291
|
+
completed_at TEXT,
|
|
292
|
+
duration_ms INTEGER,
|
|
293
|
+
agent_id TEXT,
|
|
294
|
+
agent_output TEXT,
|
|
295
|
+
world_state_before TEXT,
|
|
296
|
+
world_state_after TEXT,
|
|
297
|
+
error_message TEXT,
|
|
298
|
+
FOREIGN KEY (execution_id) REFERENCES execution_results(id)
|
|
299
|
+
);
|
|
300
|
+
|
|
301
|
+
-- FTS5 full-text search index for hybrid vector/text search
|
|
302
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS qe_patterns_fts USING fts5(
|
|
303
|
+
name, description, pattern_type, qe_domain,
|
|
304
|
+
content='qe_patterns',
|
|
305
|
+
content_rowid='rowid'
|
|
306
|
+
);
|
|
307
|
+
|
|
308
|
+
-- FTS5 triggers to keep index in sync
|
|
309
|
+
CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_insert AFTER INSERT ON qe_patterns BEGIN
|
|
310
|
+
INSERT INTO qe_patterns_fts(rowid, name, description, pattern_type, qe_domain)
|
|
311
|
+
VALUES (new.rowid, new.name, new.description, new.pattern_type, new.qe_domain);
|
|
312
|
+
END;
|
|
313
|
+
|
|
314
|
+
CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_delete AFTER DELETE ON qe_patterns BEGIN
|
|
315
|
+
INSERT INTO qe_patterns_fts(qe_patterns_fts, rowid, name, description, pattern_type, qe_domain)
|
|
316
|
+
VALUES ('delete', old.rowid, old.name, old.description, old.pattern_type, old.qe_domain);
|
|
317
|
+
END;
|
|
318
|
+
|
|
319
|
+
CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_update AFTER UPDATE ON qe_patterns BEGIN
|
|
320
|
+
INSERT INTO qe_patterns_fts(qe_patterns_fts, rowid, name, description, pattern_type, qe_domain)
|
|
321
|
+
VALUES ('delete', old.rowid, old.name, old.description, old.pattern_type, old.qe_domain);
|
|
322
|
+
INSERT INTO qe_patterns_fts(rowid, name, description, pattern_type, qe_domain)
|
|
323
|
+
VALUES (new.rowid, new.name, new.description, new.pattern_type, new.qe_domain);
|
|
324
|
+
END;
|
|
325
|
+
|
|
326
|
+
-- QE Patterns indexes
|
|
327
|
+
CREATE INDEX IF NOT EXISTS idx_qe_patterns_domain ON qe_patterns(qe_domain);
|
|
328
|
+
CREATE INDEX IF NOT EXISTS idx_qe_patterns_type ON qe_patterns(pattern_type);
|
|
329
|
+
CREATE INDEX IF NOT EXISTS idx_qe_patterns_tier ON qe_patterns(tier);
|
|
330
|
+
CREATE INDEX IF NOT EXISTS idx_qe_patterns_quality ON qe_patterns(quality_score DESC);
|
|
331
|
+
CREATE INDEX IF NOT EXISTS idx_qe_usage_pattern ON qe_pattern_usage(pattern_id);
|
|
332
|
+
CREATE INDEX IF NOT EXISTS idx_qe_trajectories_domain ON qe_trajectories(domain);
|
|
333
|
+
CREATE INDEX IF NOT EXISTS idx_embeddings_namespace ON embeddings(namespace);
|
|
334
|
+
CREATE INDEX IF NOT EXISTS idx_embeddings_timestamp ON embeddings(timestamp);
|
|
335
|
+
CREATE INDEX IF NOT EXISTS idx_execution_results_plan ON execution_results(plan_id);
|
|
336
|
+
CREATE INDEX IF NOT EXISTS idx_execution_results_status ON execution_results(status);
|
|
337
|
+
CREATE INDEX IF NOT EXISTS idx_executed_steps_execution ON executed_steps(execution_id);
|
|
338
|
+
CREATE INDEX IF NOT EXISTS idx_executed_steps_action ON executed_steps(action_id);
|
|
339
|
+
`,de=`
|
|
340
|
+
-- MinCut Graph Snapshots (ADR-047)
|
|
341
|
+
CREATE TABLE IF NOT EXISTS mincut_snapshots (
|
|
342
|
+
id TEXT PRIMARY KEY,
|
|
343
|
+
timestamp TEXT NOT NULL DEFAULT (datetime('now')),
|
|
344
|
+
vertex_count INTEGER NOT NULL,
|
|
345
|
+
edge_count INTEGER NOT NULL,
|
|
346
|
+
total_weight REAL NOT NULL DEFAULT 0.0,
|
|
347
|
+
is_connected INTEGER NOT NULL DEFAULT 1,
|
|
348
|
+
component_count INTEGER NOT NULL DEFAULT 1,
|
|
349
|
+
vertices_json TEXT NOT NULL,
|
|
350
|
+
edges_json TEXT NOT NULL,
|
|
351
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
352
|
+
);
|
|
353
|
+
|
|
354
|
+
-- MinCut History (time-series MinCut values)
|
|
355
|
+
CREATE TABLE IF NOT EXISTS mincut_history (
|
|
356
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
357
|
+
timestamp TEXT NOT NULL DEFAULT (datetime('now')),
|
|
358
|
+
mincut_value REAL NOT NULL,
|
|
359
|
+
vertex_count INTEGER NOT NULL,
|
|
360
|
+
edge_count INTEGER NOT NULL,
|
|
361
|
+
algorithm TEXT NOT NULL DEFAULT 'weighted-degree',
|
|
362
|
+
duration_ms INTEGER,
|
|
363
|
+
snapshot_id TEXT,
|
|
364
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
365
|
+
FOREIGN KEY (snapshot_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL
|
|
366
|
+
);
|
|
367
|
+
|
|
368
|
+
-- MinCut Weak Vertices (detected bottlenecks)
|
|
369
|
+
CREATE TABLE IF NOT EXISTS mincut_weak_vertices (
|
|
370
|
+
id TEXT PRIMARY KEY,
|
|
371
|
+
vertex_id TEXT NOT NULL,
|
|
372
|
+
weighted_degree REAL NOT NULL,
|
|
373
|
+
risk_score REAL NOT NULL,
|
|
374
|
+
reason TEXT NOT NULL,
|
|
375
|
+
domain TEXT,
|
|
376
|
+
vertex_type TEXT NOT NULL,
|
|
377
|
+
suggestions_json TEXT,
|
|
378
|
+
detected_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
379
|
+
resolved_at TEXT,
|
|
380
|
+
snapshot_id TEXT,
|
|
381
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
382
|
+
FOREIGN KEY (snapshot_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL
|
|
383
|
+
);
|
|
384
|
+
|
|
385
|
+
-- MinCut Alerts
|
|
386
|
+
CREATE TABLE IF NOT EXISTS mincut_alerts (
|
|
387
|
+
id TEXT PRIMARY KEY,
|
|
388
|
+
severity TEXT NOT NULL,
|
|
389
|
+
message TEXT NOT NULL,
|
|
390
|
+
mincut_value REAL NOT NULL,
|
|
391
|
+
threshold REAL NOT NULL,
|
|
392
|
+
affected_vertices_json TEXT,
|
|
393
|
+
remediations_json TEXT,
|
|
394
|
+
acknowledged INTEGER DEFAULT 0,
|
|
395
|
+
acknowledged_at TEXT,
|
|
396
|
+
acknowledged_by TEXT,
|
|
397
|
+
timestamp TEXT NOT NULL DEFAULT (datetime('now')),
|
|
398
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
399
|
+
);
|
|
400
|
+
|
|
401
|
+
-- MinCut Healing Actions (self-healing history)
|
|
402
|
+
CREATE TABLE IF NOT EXISTS mincut_healing_actions (
|
|
403
|
+
id TEXT PRIMARY KEY,
|
|
404
|
+
action_type TEXT NOT NULL,
|
|
405
|
+
action_params_json TEXT NOT NULL,
|
|
406
|
+
success INTEGER NOT NULL,
|
|
407
|
+
mincut_before REAL NOT NULL,
|
|
408
|
+
mincut_after REAL NOT NULL,
|
|
409
|
+
improvement REAL NOT NULL DEFAULT 0.0,
|
|
410
|
+
error_message TEXT,
|
|
411
|
+
duration_ms INTEGER NOT NULL,
|
|
412
|
+
triggered_by TEXT,
|
|
413
|
+
snapshot_before_id TEXT,
|
|
414
|
+
snapshot_after_id TEXT,
|
|
415
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
416
|
+
FOREIGN KEY (snapshot_before_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL,
|
|
417
|
+
FOREIGN KEY (snapshot_after_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL
|
|
418
|
+
);
|
|
419
|
+
|
|
420
|
+
-- MinCut Strange Loop Observations (P1: self-organizing)
|
|
421
|
+
CREATE TABLE IF NOT EXISTS mincut_observations (
|
|
422
|
+
id TEXT PRIMARY KEY,
|
|
423
|
+
iteration INTEGER NOT NULL,
|
|
424
|
+
mincut_value REAL NOT NULL,
|
|
425
|
+
weak_vertex_count INTEGER NOT NULL DEFAULT 0,
|
|
426
|
+
weak_vertices_json TEXT,
|
|
427
|
+
snapshot_id TEXT,
|
|
428
|
+
prediction_json TEXT,
|
|
429
|
+
actual_vs_predicted_diff REAL,
|
|
430
|
+
timestamp TEXT NOT NULL DEFAULT (datetime('now')),
|
|
431
|
+
FOREIGN KEY (snapshot_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL
|
|
432
|
+
);
|
|
433
|
+
|
|
434
|
+
-- MinCut Indexes
|
|
435
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_history_timestamp ON mincut_history(timestamp DESC);
|
|
436
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_history_value ON mincut_history(mincut_value);
|
|
437
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_weak_vertex ON mincut_weak_vertices(vertex_id);
|
|
438
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_weak_risk ON mincut_weak_vertices(risk_score DESC);
|
|
439
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_weak_resolved ON mincut_weak_vertices(resolved_at);
|
|
440
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_alerts_severity ON mincut_alerts(severity);
|
|
441
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_alerts_ack ON mincut_alerts(acknowledged);
|
|
442
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_healing_type ON mincut_healing_actions(action_type);
|
|
443
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_healing_success ON mincut_healing_actions(success);
|
|
444
|
+
CREATE INDEX IF NOT EXISTS idx_mincut_observations_iter ON mincut_observations(iteration);
|
|
445
|
+
`,ue=`
|
|
446
|
+
-- SONA Patterns table (ADR-046: Pattern Persistence for Neural Backbone)
|
|
447
|
+
CREATE TABLE IF NOT EXISTS sona_patterns (
|
|
448
|
+
id TEXT PRIMARY KEY,
|
|
449
|
+
type TEXT NOT NULL,
|
|
450
|
+
domain TEXT NOT NULL,
|
|
451
|
+
state_embedding BLOB,
|
|
452
|
+
action_embedding BLOB,
|
|
453
|
+
action_type TEXT NOT NULL,
|
|
454
|
+
action_value TEXT,
|
|
455
|
+
outcome_reward REAL NOT NULL DEFAULT 0.0,
|
|
456
|
+
outcome_success INTEGER NOT NULL DEFAULT 0,
|
|
457
|
+
outcome_quality REAL NOT NULL DEFAULT 0.0,
|
|
458
|
+
confidence REAL DEFAULT 0.5,
|
|
459
|
+
usage_count INTEGER DEFAULT 0,
|
|
460
|
+
success_count INTEGER DEFAULT 0,
|
|
461
|
+
failure_count INTEGER DEFAULT 0,
|
|
462
|
+
metadata TEXT,
|
|
463
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
464
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
465
|
+
last_used_at TEXT
|
|
466
|
+
);
|
|
467
|
+
CREATE INDEX IF NOT EXISTS idx_sona_patterns_type ON sona_patterns(type);
|
|
468
|
+
CREATE INDEX IF NOT EXISTS idx_sona_patterns_domain ON sona_patterns(domain);
|
|
469
|
+
CREATE INDEX IF NOT EXISTS idx_sona_patterns_confidence ON sona_patterns(confidence DESC);
|
|
470
|
+
CREATE INDEX IF NOT EXISTS idx_sona_patterns_updated ON sona_patterns(updated_at DESC);
|
|
471
|
+
`,le=`
|
|
472
|
+
-- Test outcomes (ADR-023: Quality Feedback Loop)
|
|
473
|
+
CREATE TABLE IF NOT EXISTS test_outcomes (
|
|
474
|
+
id TEXT PRIMARY KEY,
|
|
475
|
+
test_id TEXT NOT NULL,
|
|
476
|
+
test_name TEXT NOT NULL,
|
|
477
|
+
generated_by TEXT NOT NULL,
|
|
478
|
+
pattern_id TEXT,
|
|
479
|
+
framework TEXT NOT NULL,
|
|
480
|
+
language TEXT NOT NULL,
|
|
481
|
+
domain TEXT NOT NULL,
|
|
482
|
+
passed INTEGER NOT NULL,
|
|
483
|
+
error_message TEXT,
|
|
484
|
+
coverage_lines REAL DEFAULT 0,
|
|
485
|
+
coverage_branches REAL DEFAULT 0,
|
|
486
|
+
coverage_functions REAL DEFAULT 0,
|
|
487
|
+
mutation_score REAL,
|
|
488
|
+
execution_time_ms REAL NOT NULL,
|
|
489
|
+
flaky INTEGER DEFAULT 0,
|
|
490
|
+
flakiness_score REAL,
|
|
491
|
+
maintainability_score REAL NOT NULL,
|
|
492
|
+
complexity REAL,
|
|
493
|
+
lines_of_code INTEGER,
|
|
494
|
+
assertion_count INTEGER,
|
|
495
|
+
file_path TEXT,
|
|
496
|
+
source_file_path TEXT,
|
|
497
|
+
metadata_json TEXT,
|
|
498
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
499
|
+
);
|
|
500
|
+
CREATE INDEX IF NOT EXISTS idx_test_outcomes_pattern ON test_outcomes(pattern_id);
|
|
501
|
+
CREATE INDEX IF NOT EXISTS idx_test_outcomes_agent ON test_outcomes(generated_by);
|
|
502
|
+
CREATE INDEX IF NOT EXISTS idx_test_outcomes_domain ON test_outcomes(domain);
|
|
503
|
+
CREATE INDEX IF NOT EXISTS idx_test_outcomes_created ON test_outcomes(created_at);
|
|
504
|
+
|
|
505
|
+
-- Routing outcomes (ADR-022: Adaptive QE Agent Routing)
|
|
506
|
+
CREATE TABLE IF NOT EXISTS routing_outcomes (
|
|
507
|
+
id TEXT PRIMARY KEY,
|
|
508
|
+
task_json TEXT NOT NULL,
|
|
509
|
+
decision_json TEXT NOT NULL,
|
|
510
|
+
used_agent TEXT NOT NULL,
|
|
511
|
+
followed_recommendation INTEGER NOT NULL,
|
|
512
|
+
success INTEGER NOT NULL,
|
|
513
|
+
quality_score REAL NOT NULL,
|
|
514
|
+
duration_ms REAL NOT NULL,
|
|
515
|
+
error TEXT,
|
|
516
|
+
model_tier TEXT,
|
|
517
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
518
|
+
);
|
|
519
|
+
CREATE INDEX IF NOT EXISTS idx_routing_outcomes_agent ON routing_outcomes(used_agent);
|
|
520
|
+
CREATE INDEX IF NOT EXISTS idx_routing_outcomes_created ON routing_outcomes(created_at);
|
|
521
|
+
CREATE INDEX IF NOT EXISTS idx_routing_outcomes_tier ON routing_outcomes(model_tier);
|
|
522
|
+
|
|
523
|
+
-- Coverage sessions (ADR-023: Coverage Learning)
|
|
524
|
+
CREATE TABLE IF NOT EXISTS coverage_sessions (
|
|
525
|
+
id TEXT PRIMARY KEY,
|
|
526
|
+
target_path TEXT NOT NULL,
|
|
527
|
+
agent_id TEXT NOT NULL,
|
|
528
|
+
technique TEXT NOT NULL,
|
|
529
|
+
before_lines REAL DEFAULT 0,
|
|
530
|
+
before_branches REAL DEFAULT 0,
|
|
531
|
+
before_functions REAL DEFAULT 0,
|
|
532
|
+
after_lines REAL DEFAULT 0,
|
|
533
|
+
after_branches REAL DEFAULT 0,
|
|
534
|
+
after_functions REAL DEFAULT 0,
|
|
535
|
+
tests_generated INTEGER DEFAULT 0,
|
|
536
|
+
tests_passed INTEGER DEFAULT 0,
|
|
537
|
+
gaps_json TEXT,
|
|
538
|
+
duration_ms REAL NOT NULL,
|
|
539
|
+
started_at TEXT NOT NULL,
|
|
540
|
+
completed_at TEXT NOT NULL,
|
|
541
|
+
context_json TEXT,
|
|
542
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
543
|
+
);
|
|
544
|
+
CREATE INDEX IF NOT EXISTS idx_coverage_sessions_technique ON coverage_sessions(technique);
|
|
545
|
+
CREATE INDEX IF NOT EXISTS idx_coverage_sessions_agent ON coverage_sessions(agent_id);
|
|
546
|
+
CREATE INDEX IF NOT EXISTS idx_coverage_sessions_created ON coverage_sessions(created_at);
|
|
547
|
+
`,pe=["kv_store","vectors","rl_q_values","goap_actions","goap_goals","goap_plans","goap_plan_signatures","concept_nodes","concept_edges","dream_cycles","dream_insights","qe_patterns","qe_pattern_embeddings","qe_pattern_usage","qe_trajectories","embeddings","execution_results","executed_steps","mincut_snapshots","mincut_history","mincut_weak_vertices","mincut_alerts","mincut_healing_actions","mincut_observations","hypergraph_nodes","hypergraph_edges","sona_patterns","witness_chain"]});function y(i,e,t){let n={value:e,timestamp:t??(e!==void 0?Date.now():0),nodeId:e!==void 0?i:"",version:e!==void 0?1:0,lastUpdated:Date.now()};function c(o,a,l,E){return o!==l?o-l:a.localeCompare(E)}return{get(){return n.value},set(o,a){let l=a??Date.now();(n.timestamp===0||c(l,i,n.timestamp,n.nodeId)>0)&&(n={value:o,timestamp:l,nodeId:i,version:n.version+1,lastUpdated:Date.now()})},merge(o){let a=o.getState();this.applyState(a)},getState(){return{value:n.value,timestamp:n.timestamp,nodeId:n.nodeId,version:n.version,lastUpdated:n.lastUpdated}},applyState(o){(n.timestamp===0||c(o.timestamp,o.nodeId,n.timestamp,n.nodeId)>0)&&(n={value:o.value,timestamp:o.timestamp,nodeId:o.nodeId,version:Math.max(n.version,o.version)+1,lastUpdated:Date.now()})},getNodeId(){return i},getTimestamp(){return n.timestamp}}}function X(i,e){let t=y(i);return t.applyState(e),t}var j=R(()=>{"use strict"});function I(i){let e={counts:{},version:0,lastUpdated:Date.now()};return e.counts[i]=0,{get(){return Object.values(e.counts).reduce((t,n)=>t+n,0)},increment(t=1){if(t<0)throw new Error("G-Counter can only increment by positive values");t!==0&&(e.counts[i]=(e.counts[i]||0)+t,e.version++,e.lastUpdated=Date.now())},merge(t){let n=t.getState();this.applyState(n)},getState(){return{counts:{...e.counts},version:e.version,lastUpdated:e.lastUpdated}},applyState(t){let n=!1;for(let[c,o]of Object.entries(t.counts)){let a=e.counts[c]||0;o>a&&(e.counts[c]=o,n=!0)}n&&(e.version=Math.max(e.version,t.version)+1,e.lastUpdated=Date.now())},getNodeId(){return i},getLocalCount(){return e.counts[i]||0}}}function w(i,e){let t=I(i);return t.applyState(e),t}var U=R(()=>{"use strict"});function F(i){let e=I(i),t=I(i),n=0,c=Date.now();return{get(){return e.get()-t.get()},increment(o=1){if(o<0)throw new Error("Use decrement() for negative values");o!==0&&(e.increment(o),n++,c=Date.now())},decrement(o=1){if(o<0)throw new Error("Use increment() for negative values");o!==0&&(t.increment(o),n++,c=Date.now())},merge(o){let a=o.getState();this.applyState(a)},getState(){return{positive:e.getState(),negative:t.getState(),version:n,lastUpdated:c}},applyState(o){let a=this.get();e.applyState(o.positive),t.applyState(o.negative);let l=this.get();a!==l&&(n=Math.max(n,o.version)+1,c=Date.now())},getNodeId(){return i}}}function x(i,e){let t=F(i);return t.applyState(e),t}var B=R(()=>{"use strict";U()});function Ue(i,e){return`${i}:${Date.now()}:${e}`}function W(i){return typeof i=="string"?`s:${i}`:typeof i=="number"?`n:${i}`:typeof i=="boolean"?`b:${i}`:`j:${JSON.stringify(i)}`}function Fe(i){let e=i.substring(0,2),t=i.substring(2);switch(e){case"s:":return t;case"n:":return Number(t);case"b:":return t==="true";case"j:":return C(t);default:throw new Error(`Unknown serialization type: ${e}`)}}function M(i){let e=new Map,t=new Map,n=0,c=Date.now(),o=0;function a(E){let d=e.get(E);if(!d||d.size===0)return!1;let u=t.get(E);if(!u||u.size===0)return!0;for(let m of d)if(!u.has(m))return!0;return!1}function l(E){let d=e.get(E);if(!d)return new Set;let u=t.get(E)||new Set,m=new Set;for(let p of d)u.has(p)||m.add(p);return m}return{has(E){let d=W(E);return a(d)},values(){let E=[];for(let[d]of e)a(d)&&E.push(Fe(d));return E},size(){let E=0;for(let[d]of e)a(d)&&E++;return E},add(E){let d=W(E),u=Ue(i,o++);e.has(d)||e.set(d,new Set),e.get(d).add(u),n++,c=Date.now()},remove(E){let d=W(E),u=e.get(d);if(!u||u.size===0)return;t.has(d)||t.set(d,new Set);let m=t.get(d);for(let p of u)m.add(p);n++,c=Date.now()},merge(E){let d=E.getState();this.applyState(d)},getState(){let E={};for(let[u,m]of e)E[u]=Array.from(m);let d={};for(let[u,m]of t)m.size>0&&(d[u]=Array.from(m));return{elements:E,tombstones:d,version:n,lastUpdated:c}},applyState(E){let d=!1;for(let[u,m]of Object.entries(E.elements)){e.has(u)||e.set(u,new Set);let p=e.get(u);for(let S of m)p.has(S)||(p.add(S),d=!0)}for(let[u,m]of Object.entries(E.tombstones)){t.has(u)||t.set(u,new Set);let p=t.get(u);for(let S of m)p.has(S)||(p.add(S),d=!0)}d&&(n=Math.max(n,E.version)+1,c=Date.now())},getNodeId(){return i},clear(){for(let[E,d]of e){t.has(E)||t.set(E,new Set);let u=t.get(E);for(let m of d)u.add(m)}n++,c=Date.now()}}}function P(i,e){let t=M(i);return t.applyState(e),t}var Y=R(()=>{"use strict";Z()});function H(i){let e={...xe,...i},{nodeId:t,enableDeltaTracking:n,maxDeltaHistory:c}=e,o=new Map,a=new Map,l=new Map,E=new Map,d=0,u=[],m=new Set,p={registers:new Set,gCounters:new Set,pnCounters:new Set,sets:new Set};function S(s,r,T){let _={key:s,type:r,operation:T,timestamp:Date.now(),nodeId:t};for(let Oe of m)try{Oe(_)}catch(Ae){console.error("[CRDTStore] Error in change listener:",Ae)}}function N(s,r){d++,n&&p[s].add(r)}function K(){if(!n||!(p.registers.size>0||p.gCounters.size>0||p.pnCounters.size>0||p.sets.size>0))return;let r={fromVersion:u.length>0?u[u.length-1].toVersion:0,toVersion:d,timestamp:Date.now(),nodeId:t};if(p.registers.size>0){r.registers={};for(let T of p.registers){let _=o.get(T);_&&(r.registers[T]=_.getState())}p.registers.clear()}if(p.gCounters.size>0){r.gCounters={};for(let T of p.gCounters){let _=a.get(T);_&&(r.gCounters[T]=_.getState())}p.gCounters.clear()}if(p.pnCounters.size>0){r.pnCounters={};for(let T of p.pnCounters){let _=l.get(T);_&&(r.pnCounters[T]=_.getState())}p.pnCounters.clear()}if(p.sets.size>0){r.sets={};for(let T of p.sets){let _=E.get(T);_&&(r.sets[T]=_.getState())}p.sets.clear()}for(u.push(r);u.length>c;)u.shift()}let L={getRegister(s){return o.has(s)||o.set(s,y(t)),o.get(s)},setRegister(s,r){L.getRegister(s).set(r),N("registers",s),S(s,"lww-register","set")},hasRegister(s){return o.has(s)},deleteRegister(s){let r=o.delete(s);return r&&N("registers",s),r},getGCounter(s){return a.has(s)||a.set(s,I(t)),a.get(s)},incrementGCounter(s,r){L.getGCounter(s).increment(r),N("gCounters",s),S(s,"g-counter","increment")},hasGCounter(s){return a.has(s)},deleteGCounter(s){let r=a.delete(s);return r&&N("gCounters",s),r},getCounter(s){return l.has(s)||l.set(s,F(t)),l.get(s)},incrementCounter(s,r){L.getCounter(s).increment(r),N("pnCounters",s),S(s,"pn-counter","increment")},decrementCounter(s,r){L.getCounter(s).decrement(r),N("pnCounters",s),S(s,"pn-counter","decrement")},hasCounter(s){return l.has(s)},deleteCounter(s){let r=l.delete(s);return r&&N("pnCounters",s),r},getSet(s){return E.has(s)||E.set(s,M(t)),E.get(s)},addToSet(s,r){L.getSet(s).add(r),N("sets",s),S(s,"or-set","add")},removeFromSet(s,r){L.getSet(s).remove(r),N("sets",s),S(s,"or-set","remove")},hasSet(s){return E.has(s)},deleteSet(s){let r=E.delete(s);return r&&N("sets",s),r},merge(s){let r=s.getState();L.applyState(r)},getState(){K();let s={version:d,timestamp:Date.now(),nodeId:t,registers:{},gCounters:{},pnCounters:{},sets:{}};for(let[r,T]of o)s.registers[r]=T.getState();for(let[r,T]of a)s.gCounters[r]=T.getState();for(let[r,T]of l)s.pnCounters[r]=T.getState();for(let[r,T]of E)s.sets[r]=T.getState();return s},applyState(s){for(let[r,T]of Object.entries(s.registers))o.has(r)?o.get(r).applyState(T):o.set(r,X(t,T)),N("registers",r),S(r,"lww-register","merge");for(let[r,T]of Object.entries(s.gCounters))a.has(r)?a.get(r).applyState(T):a.set(r,w(t,T)),N("gCounters",r),S(r,"g-counter","merge");for(let[r,T]of Object.entries(s.pnCounters))l.has(r)?l.get(r).applyState(T):l.set(r,x(t,T)),N("pnCounters",r),S(r,"pn-counter","merge");for(let[r,T]of Object.entries(s.sets))E.has(r)?E.get(r).applyState(T):E.set(r,P(t,T)),N("sets",r),S(r,"or-set","merge");d=Math.max(d,s.version)+1},getDelta(s){if(K(),u.length===0)return s>=d,null;let r=u.filter(_=>_.toVersion>s);if(r.length===0)return null;let T={fromVersion:s,toVersion:d,timestamp:Date.now(),nodeId:t,registers:{},gCounters:{},pnCounters:{},sets:{}};for(let _ of r)_.registers&&Object.assign(T.registers,_.registers),_.gCounters&&Object.assign(T.gCounters,_.gCounters),_.pnCounters&&Object.assign(T.pnCounters,_.pnCounters),_.sets&&Object.assign(T.sets,_.sets);return Object.keys(T.registers).length===0&&delete T.registers,Object.keys(T.gCounters).length===0&&delete T.gCounters,Object.keys(T.pnCounters).length===0&&delete T.pnCounters,Object.keys(T.sets).length===0&&delete T.sets,T},applyDelta(s){if(s.registers)for(let[r,T]of Object.entries(s.registers))o.has(r)?o.get(r).applyState(T):o.set(r,X(t,T)),N("registers",r),S(r,"lww-register","merge");if(s.gCounters)for(let[r,T]of Object.entries(s.gCounters))a.has(r)?a.get(r).applyState(T):a.set(r,w(t,T)),N("gCounters",r),S(r,"g-counter","merge");if(s.pnCounters)for(let[r,T]of Object.entries(s.pnCounters))l.has(r)?l.get(r).applyState(T):l.set(r,x(t,T)),N("pnCounters",r),S(r,"pn-counter","merge");if(s.sets)for(let[r,T]of Object.entries(s.sets))E.has(r)?E.get(r).applyState(T):E.set(r,P(t,T)),N("sets",r),S(r,"or-set","merge");d=Math.max(d,s.toVersion)+1},getVersion(){return d},getNodeId(){return t},on(s,r){if(s==="change")return m.add(r),()=>{m.delete(r)};throw new Error(`Unknown event type: ${s}`)},removeAllListeners(){m.clear()},keys(s){let r=[];return(!s||s==="lww-register")&&r.push(...Array.from(o.keys())),(!s||s==="g-counter")&&r.push(...Array.from(a.keys())),(!s||s==="pn-counter")&&r.push(...Array.from(l.keys())),(!s||s==="or-set")&&r.push(...Array.from(E.keys())),r},clear(){o.clear(),a.clear(),l.clear(),E.clear(),u.length=0,p.registers.clear(),p.gCounters.clear(),p.pnCounters.clear(),p.sets.clear(),d=0},getStats(){return{total:o.size+a.size+l.size+E.size,registers:o.size,gCounters:a.size,pnCounters:l.size,sets:E.size,version:d,nodeId:t,deltaHistorySize:u.length}}};return L}var xe,me=R(()=>{"use strict";j();U();B();Y();xe={nodeId:"default-node",enableDeltaTracking:!0,maxDeltaHistory:100}});var _e=R(()=>{"use strict"});var fe=R(()=>{"use strict";j();U();B();Y();me();_e()});var ke={};ve(ke,{ALLOWED_TABLE_NAMES:()=>q,BinaryHeap:()=>ee,DEFAULT_UNIFIED_MEMORY_CONFIG:()=>Le,InMemoryHNSWIndex:()=>te,RuvectorFlatIndex:()=>b,UnifiedMemoryManager:()=>A,clearProjectRootCache:()=>Re,findProjectRoot:()=>G,getDefaultDbPath:()=>he,getResolvedDefaultConfig:()=>Ce,getUnifiedMemory:()=>Ie,initializeUnifiedMemory:()=>Me,resetUnifiedMemory:()=>Pe,validateTableName:()=>O});import*as g from"fs";import*as Ne from"os";import*as f from"path";function Re(){h=null}function G(i=process.cwd()){if(h)return h;if(process.env.AQE_PROJECT_ROOT)return h=process.env.AQE_PROJECT_ROOT,h;let e=i,t=f.parse(e).root,n=e,c=null,o=null,a=null;for(;n!==t;)g.existsSync(f.join(n,".agentic-qe"))&&(c=n),g.existsSync(f.join(n,".git"))&&o===null&&(o=n),g.existsSync(f.join(n,"package.json"))&&(a=n),n=f.dirname(n);return c?h=c:o?h=o:a?h=a:h=process.cwd(),h}function he(){let i=G();return f.join(i,".agentic-qe","memory.db")}function Ce(){return{...Le,dbPath:he()}}function Ie(i){return A.getInstance(i)}async function Me(i){let e=Ie(i);return await e.initialize(),e}function Pe(){A.resetInstance()}function Ge(){if(Se)return;Se=!0;let i=()=>{try{let e=A.instance;e&&e.close()}catch(e){console.debug("[UnifiedMemory] Cleanup error:",e instanceof Error?e.message:e)}};process.on("beforeExit",i),process.on("SIGINT",()=>{i(),process.exit(0)}),process.on("SIGTERM",()=>{i(),process.exit(0)})}var $,h,Le,A,Se,qe=R(()=>{Xe();Z();be();De();ye();z();z();ne();ne();ge();fe();$=Q.create("unified-memory"),h=null;Le={dbPath:".agentic-qe/memory.db",walMode:!0,mmapSize:v.MMAP_SIZE_BYTES,cacheSize:v.CACHE_SIZE_KB,busyTimeout:v.BUSY_TIMEOUT_MS,vectorDimensions:v.DEFAULT_VECTOR_DIMENSIONS};A=class i{static instance=null;static instancePromise=null;db=null;config;initialized=!1;vectorsLoaded=!1;initPromise=null;preparedStatements=new Map;vectorIndex=new b;crdtStore=null;constructor(e){let t=Ce();if(this.config={...t,...e},!f.isAbsolute(this.config.dbPath)){let n=G();this.config.dbPath=f.join(n,this.config.dbPath)}}static getInstance(e){return i.instance||(i.instance=new i(e)),i.instance}static async getInstanceAsync(e){return i.instance?.initialized?i.instance:(i.instancePromise||(i.instancePromise=(async()=>{let t=i.getInstance(e);return await t.initialize(),t})()),i.instancePromise)}static resetInstance(){i.instance&&(i.instance.close(),i.instance=null),i.instancePromise=null,Re()}async initialize(){if(!this.initialized)return this.initPromise||(this.initPromise=this._doInitialize()),this.initPromise}async _doInitialize(){if(!this.initialized)try{let e=process.env.AQE_PROJECT_ROOT;if(e){let o=f.resolve(this.config.dbPath),a=f.resolve(e);!o.startsWith(a)&&!o.startsWith(Ne.tmpdir())&&o.includes(".agentic-qe")&&(console.error(`[UnifiedMemory] WARNING: DB path "${this.config.dbPath}" points to a production .agentic-qe/ while AQE_PROJECT_ROOT="${e}". Redirecting to test-safe path.`),this.config.dbPath=f.join(e,".agentic-qe","memory.db"))}let t=f.dirname(this.config.dbPath);g.existsSync(t)||g.mkdirSync(t,{recursive:!0});let n=g.existsSync(this.config.dbPath),c=0;if(n)c=g.statSync(this.config.dbPath).size;else if(g.existsSync(t)){let o=this.findRecentBackups(t);if(o.length>0){let a=o[0];console.error(`[UnifiedMemory] CRITICAL: Database file missing but directory exists!
|
|
548
|
+
Expected: ${this.config.dbPath}
|
|
549
|
+
Found ${o.length} backup(s), newest: ${a.path} (${(a.size/1024/1024).toFixed(1)}MB)
|
|
550
|
+
Restoring from backup to prevent data loss...`),g.copyFileSync(a.path,this.config.dbPath);for(let l of["-wal","-shm"]){let E=this.config.dbPath+l;g.existsSync(E)&&g.unlinkSync(E)}c=a.size}}if(this.db=J(this.config.dbPath,{walMode:this.config.walMode,busyTimeout:this.config.busyTimeout}),this.db.pragma(`mmap_size = ${this.config.mmapSize}`),this.db.pragma(`cache_size = ${this.config.cacheSize}`),this.db.pragma("foreign_keys = ON"),await this.runMigrations(),n&&c>1e6)try{let o=this.db.prepare("SELECT COUNT(*) as cnt FROM qe_patterns").get();if(o&&o.cnt===0){let a=g.statSync(this.config.dbPath).size;a<c*.1&&console.error(`[UnifiedMemory] CRITICAL: Possible data loss detected!
|
|
551
|
+
DB was ${(c/1024/1024).toFixed(1)}MB, now ${(a/1024/1024).toFixed(1)}MB with 0 patterns.
|
|
552
|
+
This looks like the DB was replaced with an empty schema.
|
|
553
|
+
Check backups in ${t} and restore manually.`)}}catch{}this.vectorsLoaded=!1,this.initialized=!0,console.log(`[UnifiedMemory] Initialized: ${this.config.dbPath}`),this.warnIfDuplicateDatabases()}catch(e){throw this.initPromise=null,new Error(`Failed to initialize UnifiedMemoryManager: ${V(e)}`)}}findRecentBackups(e){try{let n=g.readdirSync(e).filter(o=>o.startsWith("memory")&&o.endsWith(".db")&&o!=="memory.db").map(o=>{let a=f.join(e,o),l=g.statSync(a);return{path:a,size:l.size,mtime:l.mtimeMs}}).filter(o=>o.size>1e6).sort((o,a)=>a.mtime-o.mtime),c=f.join(e,"backups");if(g.existsSync(c)){let o=g.readdirSync(c);for(let a of o)if(a.endsWith(".db")){let l=f.join(c,a),E=g.statSync(l);E.size>1e6&&n.push({path:l,size:E.size,mtime:E.mtimeMs})}n.sort((a,l)=>l.mtime-a.mtime)}return n}catch{return[]}}warnIfDuplicateDatabases(){try{let e=G(),t=f.resolve(this.config.dbPath),c=[f.join(e,".agentic-qe","memory.db"),f.join(e,"v3",".agentic-qe","memory.db")].map(o=>f.resolve(o)).filter(o=>o!==t&&g.existsSync(o));c.length>0&&console.warn(`[UnifiedMemory] WARNING: Duplicate database(s) detected!
|
|
554
|
+
Canonical: ${t}
|
|
555
|
+
Duplicates: ${c.join(", ")}
|
|
556
|
+
This can cause data splits. Remove duplicates or set AQE_PROJECT_ROOT.`)}catch(e){$.debug("Duplicate database check failed",{error:e instanceof Error?e.message:String(e)})}}columnExists(e,t){if(!this.db)return!1;try{let n=O(e);return this.db.prepare(`PRAGMA table_info(${n})`).all().some(o=>o.name===t)}catch(n){return $.debug("Column existence check failed",{table:e,column:t,error:n instanceof Error?n.message:String(n)}),!1}}handleV2SchemaIncompatibilities(){if(!this.db)return;let e=[{table:"goap_plans",requiredColumn:"status",columnDef:"TEXT DEFAULT 'pending'"},{table:"goap_actions",requiredColumn:"agent_type",columnDef:"TEXT DEFAULT 'unknown'"},{table:"concept_nodes",requiredColumn:"concept_type",columnDef:"TEXT DEFAULT 'general'"},{table:"concept_edges",requiredColumn:"edge_type",columnDef:"TEXT DEFAULT 'related'"},{table:"dream_insights",requiredColumn:"cycle_id",columnDef:"TEXT DEFAULT ''"},{table:"rl_q_values",requiredColumn:"algorithm",columnDef:"TEXT DEFAULT 'q-learning'"}];for(let{table:t,requiredColumn:n,columnDef:c}of e)if(this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=?").get(t)&&!this.columnExists(t,n)){let a=O(t);try{this.db.exec(`ALTER TABLE ${a} ADD COLUMN ${n} ${c}`),console.log(`[UnifiedMemory] Added column ${n} to ${t} (safe migration)`)}catch(l){console.log(`[UnifiedMemory] Column ${n} on ${t}: ${l instanceof Error?l.message:String(l)}`)}}}async runMigrations(){if(!this.db)throw new Error("Database not initialized");this.db.exec(se),this.handleV2SchemaIncompatibilities();let t=this.db.prepare("SELECT version FROM schema_version WHERE id = 1").get()?.version??0;t<D&&(console.log(`[UnifiedMemory] Migrating from v${t} to v${D}`),this.db.transaction(()=>{t<1&&this.db.exec(oe),t<2&&this.db.exec(ie),t<3&&(this.db.exec(ae),this.db.exec(ce),this.db.exec(Te)),t<4&&this.db.exec(Ee),t<5&&this.db.exec(de),t<6&&this.db.exec(k),t<7&&this.db.exec(ue),t<8&&this.db.exec(le),t<9&&(this.db.exec(`
|
|
557
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS qe_patterns_fts USING fts5(
|
|
558
|
+
name, description, pattern_type, qe_domain,
|
|
559
|
+
content='qe_patterns',
|
|
560
|
+
content_rowid='rowid'
|
|
561
|
+
);
|
|
562
|
+
|
|
563
|
+
CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_insert AFTER INSERT ON qe_patterns BEGIN
|
|
564
|
+
INSERT INTO qe_patterns_fts(rowid, name, description, pattern_type, qe_domain)
|
|
565
|
+
VALUES (new.rowid, new.name, new.description, new.pattern_type, new.qe_domain);
|
|
566
|
+
END;
|
|
567
|
+
|
|
568
|
+
CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_delete AFTER DELETE ON qe_patterns BEGIN
|
|
569
|
+
INSERT INTO qe_patterns_fts(qe_patterns_fts, rowid, name, description, pattern_type, qe_domain)
|
|
570
|
+
VALUES ('delete', old.rowid, old.name, old.description, old.pattern_type, old.qe_domain);
|
|
571
|
+
END;
|
|
572
|
+
|
|
573
|
+
CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_update AFTER UPDATE ON qe_patterns BEGIN
|
|
574
|
+
INSERT INTO qe_patterns_fts(qe_patterns_fts, rowid, name, description, pattern_type, qe_domain)
|
|
575
|
+
VALUES ('delete', old.rowid, old.name, old.description, old.pattern_type, old.qe_domain);
|
|
576
|
+
INSERT INTO qe_patterns_fts(rowid, name, description, pattern_type, qe_domain)
|
|
577
|
+
VALUES (new.rowid, new.name, new.description, new.pattern_type, new.qe_domain);
|
|
578
|
+
END;
|
|
579
|
+
`),this.db.exec(`
|
|
580
|
+
INSERT INTO qe_patterns_fts(rowid, name, description, pattern_type, qe_domain)
|
|
581
|
+
SELECT rowid, name, description, pattern_type, qe_domain FROM qe_patterns;
|
|
582
|
+
`)),this.db.prepare(`
|
|
583
|
+
INSERT OR REPLACE INTO schema_version (id, version, migrated_at)
|
|
584
|
+
VALUES (1, ?, datetime('now'))
|
|
585
|
+
`).run(D)})(),console.log("[UnifiedMemory] Migration complete"))}async loadVectorIndex(){if(this.vectorsLoaded)return;if(!this.db)throw new Error("Database not initialized");this.vectorIndex.clear();let e=this.db.prepare("SELECT id, embedding, dimensions FROM vectors").all();for(let t of e){let n=this.bufferToFloatArray(t.embedding,t.dimensions);this.vectorIndex.add(t.id,n)}this.vectorsLoaded=!0,console.log(`[UnifiedMemory] Loaded ${e.length} vectors into vector index (ruvector flat)`)}async kvSet(e,t,n="default",c){this.ensureInitialized();let o=c?Date.now()+c*1e3:null,a=JSON.stringify(t);this.db.prepare(`
|
|
586
|
+
INSERT OR REPLACE INTO kv_store (key, namespace, value, expires_at)
|
|
587
|
+
VALUES (?, ?, ?, ?)
|
|
588
|
+
`).run(e,n,a,o)}async kvGet(e,t="default"){this.ensureInitialized();let n=this.db.prepare(`
|
|
589
|
+
SELECT value, expires_at FROM kv_store
|
|
590
|
+
WHERE key = ? AND namespace = ?
|
|
591
|
+
`).get(e,t);if(n){if(n.expires_at&&Date.now()>n.expires_at){this.db.prepare("DELETE FROM kv_store WHERE key = ? AND namespace = ?").run(e,t);return}return C(n.value)}}async kvDelete(e,t="default"){return this.ensureInitialized(),this.db.prepare("DELETE FROM kv_store WHERE key = ? AND namespace = ?").run(e,t).changes>0}async kvExists(e,t="default"){return this.ensureInitialized(),this.db.prepare(`
|
|
592
|
+
SELECT 1 FROM kv_store
|
|
593
|
+
WHERE key = ? AND namespace = ? AND (expires_at IS NULL OR expires_at > ?)
|
|
594
|
+
`).get(e,t,Date.now())!==void 0}async kvSearch(e,t="default",n=100){this.ensureInitialized();let c=e.replace(/\*/g,"%").replace(/\?/g,"_");return this.db.prepare(`
|
|
595
|
+
SELECT key FROM kv_store
|
|
596
|
+
WHERE namespace = ? AND key LIKE ?
|
|
597
|
+
AND (expires_at IS NULL OR expires_at > ?)
|
|
598
|
+
LIMIT ?
|
|
599
|
+
`).all(t,c,Date.now(),n).map(a=>a.key)}async kvCleanupExpired(){return this.ensureInitialized(),this.db.prepare("DELETE FROM kv_store WHERE expires_at IS NOT NULL AND expires_at < ?").run(Date.now()).changes}async vectorStore(e,t,n="default",c){this.ensureInitialized();let o=this.floatArrayToBuffer(t),a=c?JSON.stringify(c):null;this.db.prepare(`
|
|
600
|
+
INSERT OR REPLACE INTO vectors (id, namespace, embedding, dimensions, metadata, updated_at)
|
|
601
|
+
VALUES (?, ?, ?, ?, ?, datetime('now'))
|
|
602
|
+
`).run(e,n,o,t.length,a),this.vectorIndex.add(e,t)}async vectorGet(e){this.ensureInitialized();let t=this.db.prepare(`
|
|
603
|
+
SELECT embedding, dimensions, metadata FROM vectors WHERE id = ?
|
|
604
|
+
`).get(e);if(t)return{embedding:this.bufferToFloatArray(t.embedding,t.dimensions),metadata:t.metadata?C(t.metadata):void 0}}async vectorDelete(e){this.ensureInitialized();let t=this.db.prepare("DELETE FROM vectors WHERE id = ?").run(e);return this.vectorIndex.remove(e),t.changes>0}async vectorSearch(e,t=10,n){this.ensureInitialized(),this.vectorsLoaded||await this.loadVectorIndex();let c=this.vectorIndex.search(e,t*2);if(c.length===0)return[];let o=c.map(d=>d.id),a=o.map(()=>"?").join(","),l=this.db.prepare(`SELECT id, namespace, metadata FROM vectors WHERE id IN (${a})`).all(...o),E=new Map(l.map(d=>[d.id,d]));if(n){let d=[];for(let u of c){let m=E.get(u.id);if(m&&m.namespace===n&&(d.push({id:u.id,score:u.score,metadata:m.metadata?C(m.metadata):void 0}),d.length>=t))break}return d}return c.slice(0,t).map(d=>{let u=E.get(d.id);return{id:d.id,score:d.score,metadata:u?.metadata?C(u.metadata):void 0}})}async vectorCount(e){return this.ensureInitialized(),e?this.db.prepare("SELECT COUNT(*) as count FROM vectors WHERE namespace = ?").get(e).count:this.db.prepare("SELECT COUNT(*) as count FROM vectors").get().count}queryCount(e){this.ensureInitialized();let t=O(e);return this.db.prepare(`SELECT COUNT(*) as c FROM ${t}`).get().c}initializeCRDT(e){if(this.crdtStore){console.warn("[UnifiedMemory] CRDT store already initialized");return}this.crdtStore=H({nodeId:e}),console.log(`[UnifiedMemory] CRDT store initialized for node: ${e}`)}getCRDTStore(){return this.crdtStore}isCRDTInitialized(){return this.crdtStore!==null}async crdtSet(e,t,n="crdt"){this.ensureInitialized(),this.crdtStore&&this.crdtStore.setRegister(e,t),await this.kvSet(e,t,n)}async crdtGet(e,t="crdt"){if(this.crdtStore){let n=this.crdtStore.getRegister(e);if(n)return n.get()}return this.kvGet(e,t)}crdtIncrement(e,t=1){if(!this.crdtStore)throw new Error("CRDT store not initialized. Call initializeCRDT first.");let n=this.crdtStore.getCounter(e);n||(this.crdtStore.incrementCounter(e,0),n=this.crdtStore.getCounter(e));for(let c=0;c<t;c++)this.crdtStore.incrementCounter(e)}crdtGetCounter(e){return this.crdtStore?this.crdtStore.getCounter(e)?.get()??0:0}crdtAddToSet(e,t){if(!this.crdtStore)throw new Error("CRDT store not initialized. Call initializeCRDT first.");this.crdtStore.addToSet(e,t)}crdtRemoveFromSet(e,t){if(!this.crdtStore)throw new Error("CRDT store not initialized. Call initializeCRDT first.");this.crdtStore.removeFromSet(e,t)}crdtGetSet(e){if(!this.crdtStore)return new Set;let t=this.crdtStore.getSet(e);return new Set(t.values())}crdtGetState(){return this.crdtStore?this.crdtStore.getState():null}crdtGetDelta(e){return this.crdtStore?this.crdtStore.getDelta(e??0):null}crdtMerge(e){if(!this.crdtStore)throw new Error("CRDT store not initialized. Call initializeCRDT first.");this.crdtStore.applyState(e)}crdtApplyDelta(e){if(!this.crdtStore)throw new Error("CRDT store not initialized. Call initializeCRDT first.");this.crdtStore.applyDelta(e)}async crdtPersist(){if(!this.crdtStore)return;let e=this.crdtStore.getState();await this.kvSet("__crdt_state__",e,"crdt-internal")}async crdtRestore(){if(!this.crdtStore)return!1;let e=await this.kvGet("__crdt_state__","crdt-internal");return e?(this.crdtStore.applyState(e),!0):!1}getDatabase(){if(!this.db||!this.initialized)throw new Error("UnifiedMemoryManager not initialized");return this.db}isInitialized(){return this.initialized}getDbPath(){return this.config.dbPath}prepare(e,t){if(!this.db)throw new Error("Database not initialized");let n=this.preparedStatements.get(e);return n||(n=this.db.prepare(t),this.preparedStatements.set(e,n)),n}transaction(e){if(!this.db)throw new Error("Database not initialized");return this.db.transaction(e)()}getStats(){if(!this.db)throw new Error("Database not initialized");let e=pe.map(c=>{try{let o=this.db.prepare(`SELECT COUNT(*) as count FROM ${c}`).get();return{name:c,rowCount:o.count}}catch(o){return $.debug("Table row count query failed",{table:c,error:o instanceof Error?o.message:String(o)}),{name:c,rowCount:0}}}),t=0,n=0;try{g.existsSync(this.config.dbPath)&&(t=g.statSync(this.config.dbPath).size);let c=this.config.dbPath+"-wal";g.existsSync(c)&&(n=g.statSync(c).size)}catch(c){console.debug("[UnifiedMemory] File stat error:",c instanceof Error?c.message:c)}return{tables:e,fileSize:t,walSize:n,vectorIndexSize:this.vectorIndex.size()}}vacuum(){if(!this.db)throw new Error("Database not initialized");this.db.exec("VACUUM")}checkpoint(){if(!this.db)throw new Error("Database not initialized");this.db.pragma("wal_checkpoint(TRUNCATE)")}close(){this.db&&(this.preparedStatements.clear(),this.vectorIndex.clear(),this.db.close(),this.db=null,this.initialized=!1,console.log("[UnifiedMemory] Database closed"))}ensureInitialized(){if(!this.initialized||!this.db)throw new Error("UnifiedMemoryManager not initialized. Call initialize() first.")}floatArrayToBuffer(e){let t=Buffer.alloc(e.length*4);for(let n=0;n<e.length;n++)t.writeFloatLE(e[n],n*4);return t}bufferToFloatArray(e,t){let n=new Float32Array(e.buffer,e.byteOffset,t);return Array.from(n)}};Se=!1;Ge()});export{q as a,O as b,ze as c,z as d,Re as e,G as f,he as g,Le as h,Ce as i,A as j,Ie as k,Me as l,Pe as m,ke as n,qe as o};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.0");process.exit(0)}
|
|
2
|
+
var i=class{s0;s1;s2;s3;constructor(s){this.s0=this.splitmix32(s),this.s1=this.splitmix32(this.s0),this.s2=this.splitmix32(this.s1),this.s3=this.splitmix32(this.s2)}splitmix32(s){return s=s+2654435769|0,s=Math.imul(s^s>>>16,2246822507),s=Math.imul(s^s>>>13,3266489909),(s^s>>>16)>>>0}next(){let s=this.s3,t=this.s0;return this.s3=this.s2,this.s2=this.s1,this.s1=t,t^=t<<11,t^=t>>>8,this.s0=t^s^s>>>19,this.s0>>>0}nextFloat(){return this.next()/4294967296}nextGaussian(){let s=this.nextFloat()||1e-10,t=this.nextFloat();return Math.sqrt(-2*Math.log(s))*Math.cos(2*Math.PI*t)}};export{i as a};
|
|
@@ -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-TLHP5EII.js";import{a as m}from"./chunk-3ZOONQG6.js";import{f as a}from"./chunk-SUSEVMZT.js";var u=class{constructor(t,e){this.eventBus=t;this.maxHistorySize=e?.maxHistorySize??1e4,this.eventHistory=new l(this.maxHistorySize),this.correlationTimeout=e?.correlationTimeout??6e4,this.maxEventsPerCorrelation=e?.maxEventsPerCorrelation??100}subscriptions=new Map;correlations=new Map;eventHistory;routes=[];domainSubscriptions=new Map;maxHistorySize;correlationTimeout;maxEventsPerCorrelation;initialized=!1;async initialize(){if(!this.initialized){for(let t of m){let e=this.eventBus.subscribeToChannel(t,async i=>{await this.handleIncomingEvent(i)});this.domainSubscriptions.set(t,e)}this.eventBus.subscribe("*",async t=>{m.includes(t.source)||await this.handleIncomingEvent(t)}),this.initialized=!0}}subscribeToDoamin(t,e){let i=`sub_domain_${a()}`;return this.subscriptions.set(i,{id:i,type:"domain",filter:t,handler:e,active:!0}),i}subscribeToEventType(t,e){let i=`sub_type_${a()}`;return this.subscriptions.set(i,{id:i,type:"eventType",filter:t,handler:e,active:!0}),i}unsubscribe(t){let e=this.subscriptions.get(t);return e?(e.active=!1,this.subscriptions.delete(t),!0):!1}async route(t){this.addToHistory(t),t.correlationId&&this.trackCorrelation(t);let i=this.findMatchingSubscriptions(t).map(async o=>{try{await o.handler(t)}catch(n){console.error(`Error in subscription handler ${o.id}:`,n instanceof Error?n.message:n)}}),r=await this.applyRoutes(t);await Promise.allSettled([...i,...r])}getCorrelation(t){let e=this.correlations.get(t);if(e)return{correlationId:e.correlationId,events:[...e.events],domains:new Set(e.domains),startedAt:e.startedAt,lastEventAt:e.lastEventAt,complete:e.complete}}trackCorrelation(t){if(!t.correlationId)return;let e=this.correlations.get(t.correlationId);e||(e={correlationId:t.correlationId,events:[],domains:new Set,startedAt:t.timestamp,lastEventAt:t.timestamp,complete:!1,timeout:null},this.correlations.set(t.correlationId,e)),e.events.length<this.maxEventsPerCorrelation&&(e.events.push(t),e.domains.add(t.source),e.lastEventAt=t.timestamp),e.timeout&&clearTimeout(e.timeout),e.timeout=setTimeout(()=>{e.complete=!0,e.timeout=null},this.correlationTimeout)}aggregate(t,e){let i=this.eventHistory.toArray().filter(s=>s.timestamp>=t&&s.timestamp<=e),r=new Map,o=new Map;for(let s of i)r.set(s.type,(r.get(s.type)??0)+1),o.set(s.source,(o.get(s.source)??0)+1);let n={totalEvents:i.length,uniqueEventTypes:r.size,uniqueDomains:o.size,eventsPerSecond:i.length>0?i.length/((e.getTime()-t.getTime())/1e3):0};return{id:a(),windowStart:t,windowEnd:e,events:i,countByType:r,countByDomain:o,metrics:n}}getHistory(t){let e=this.eventHistory.toArray();return t&&(t.eventTypes?.length&&(e=e.filter(i=>t.eventTypes.includes(i.type))),t.domains?.length&&(e=e.filter(i=>t.domains.includes(i.source))),t.fromTimestamp&&(e=e.filter(i=>i.timestamp>=t.fromTimestamp)),t.toTimestamp&&(e=e.filter(i=>i.timestamp<=t.toTimestamp)),t.limit&&(e=e.slice(-t.limit))),e}addRoute(t){let e=t.priority??0,i=this.routes.findIndex(r=>(r.priority??0)<e);i===-1?this.routes.push(t):this.routes.splice(i,0,t)}removeRoute(t,e){let i=this.routes.findIndex(r=>r.eventPattern===t&&(e===void 0||r.source===e));return i!==-1?(this.routes.splice(i,1),!0):!1}async dispose(){this.subscriptions.clear();for(let t of this.domainSubscriptions.values())t.unsubscribe();this.domainSubscriptions.clear();for(let t of this.correlations.values())t.timeout&&clearTimeout(t.timeout);this.correlations.clear(),this.eventHistory.clear(),this.initialized=!1}async handleIncomingEvent(t){await this.route(t)}findMatchingSubscriptions(t){let e=[];for(let i of this.subscriptions.values())i.active&&(i.type==="domain"&&i.filter===t.source||i.type==="eventType"&&this.matchEventType(t.type,i.filter))&&e.push(i);return e}matchEventType(t,e){if(e==="*")return!0;let i=e.replace(/\\/g,"\\\\").replace(/\./g,"\\.").replace(/\*/g,".*");return new RegExp(`^${i}$`).test(t)}async applyRoutes(t){let e=[];for(let i of this.routes){if(!(i.source==="*"||i.source===t.source||Array.isArray(i.source)&&i.source.includes(t.source))||!this.matchEventType(t.type,i.eventPattern)||i.filter&&!i.filter(t))continue;let o=i.transform?i.transform(t):t;for(let n of i.targets)n!==t.source&&e.push(this.eventBus.publish({...o,id:a(),correlationId:t.correlationId??t.id}))}return e}addToHistory(t){this.eventHistory.push(t)}};function y(c,t){return new u(c,t)}export{u as a,y as b};
|