@remnic/core 9.69.105 → 10.0.1
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/dist/access-admin-ops-surface.js +35 -33
- package/dist/access-authorization-probe.js +36 -34
- package/dist/access-boundary.js +35 -33
- package/dist/access-cli.js +96 -94
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.js +35 -33
- package/dist/access-http-briefing.js +36 -34
- package/dist/access-http-query.js +37 -35
- package/dist/access-http.js +54 -52
- package/dist/access-identity-continuity-surface.js +35 -33
- package/dist/access-lcm-surface.js +35 -33
- package/dist/access-mcp.js +44 -42
- package/dist/access-namespace-preflight.js +35 -33
- package/dist/access-observe-write-category.js +4 -4
- package/dist/access-observe-write-surface.js +35 -33
- package/dist/access-operations-batch.js +36 -34
- package/dist/access-operations.js +43 -41
- package/dist/access-recall-concurrency.js +35 -33
- package/dist/access-recall-response.js +35 -33
- package/dist/access-recall-surface.js +35 -33
- package/dist/access-schema.js +3 -3
- package/dist/access-service.js +35 -33
- package/dist/access-surface-catalog.js +37 -35
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +11 -9
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/briefing.js +10 -8
- package/dist/buffer.js +7 -5
- package/dist/{capsule-crypto-YO5QJ6L3.js → capsule-crypto-7FJQINUR.js} +2 -2
- package/dist/causal-consolidation.js +11 -9
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/{chunk-JWFTPRYD.js → chunk-2EZB2DL5.js} +2 -2
- package/dist/{chunk-BXLOS5AJ.js → chunk-2NLLXCJG.js} +2 -2
- package/dist/{chunk-QKCGOECM.js → chunk-34G4U6HS.js} +2 -2
- package/dist/{chunk-YI6XIFQV.js → chunk-34TSXVQS.js} +2 -2
- package/dist/{chunk-7YQR6XHY.js → chunk-3I375S4J.js} +58 -58
- package/dist/{chunk-XQWKB6PY.js → chunk-3UP6NP4C.js} +2 -2
- package/dist/{chunk-OFGTRDWX.js → chunk-47I2EK6G.js} +2 -2
- package/dist/{chunk-HWGFTTPS.js → chunk-5FLFPTDK.js} +2 -2
- package/dist/{chunk-LHDSCWDK.js → chunk-7AUC2YSU.js} +13 -13
- package/dist/{chunk-AU43D3IT.js → chunk-7DB7KYSR.js} +4 -4
- package/dist/{chunk-VDX2J7OX.js → chunk-7LCGFUMB.js} +4 -4
- package/dist/{chunk-CNBGAFDY.js → chunk-A7V7GZ7F.js} +2 -2
- package/dist/{chunk-SWXPR5SE.js → chunk-B2UCJX76.js} +2 -2
- package/dist/{chunk-KYUVFCT2.js → chunk-BCTDTVSR.js} +2 -2
- package/dist/{chunk-6WRHNA4I.js → chunk-BKPV47BK.js} +36 -36
- package/dist/{chunk-QAIVTLL2.js → chunk-BLHPADUX.js} +2 -2
- package/dist/{chunk-PRNR47DI.js → chunk-BOT276JC.js} +2 -2
- package/dist/{chunk-O43AAJFQ.js → chunk-CRZ7BU6R.js} +2 -2
- package/dist/{chunk-2OFDC3AK.js → chunk-DDPPV3KA.js} +2 -2
- package/dist/{chunk-VYIBRCVW.js → chunk-DHQUQ34W.js} +2 -2
- package/dist/{chunk-7NBUE5VY.js → chunk-DPX3J2N4.js} +2 -2
- package/dist/{chunk-EWWK65CI.js → chunk-DX3ZODO3.js} +2 -2
- package/dist/{chunk-SFDBLCZV.js → chunk-DYZHVVJM.js} +30 -30
- package/dist/{chunk-B454SHPU.js → chunk-E7FN5N5E.js} +2 -2
- package/dist/{chunk-AWSP3WNM.js → chunk-EJJMDLVB.js} +2 -2
- package/dist/{chunk-KFHEZJQZ.js → chunk-EPFNPPWH.js} +2 -2
- package/dist/{chunk-VDVHIRCK.js → chunk-EUYNHJTK.js} +2 -2
- package/dist/{chunk-T32YYUT2.js → chunk-FB6FQT4P.js} +2 -2
- package/dist/{chunk-XTN54NML.js → chunk-G3T6YMBO.js} +4 -4
- package/dist/{chunk-JC7QQ2DJ.js → chunk-GS6LTJFW.js} +2 -2
- package/dist/{chunk-WR66CTVU.js → chunk-GYLDYYRA.js} +4 -4
- package/dist/{chunk-PQKZLBCJ.js → chunk-GZRTH3WZ.js} +1 -1
- package/dist/{chunk-STQC2FYQ.js → chunk-HNU5CZ7E.js} +6 -6
- package/dist/{chunk-E4XLFYHV.js → chunk-HPEONBM3.js} +2 -2
- package/dist/{chunk-B3OFQP5Y.js → chunk-IB63OVUB.js} +24 -249
- package/dist/chunk-IB63OVUB.js.map +1 -0
- package/dist/chunk-IM2GO42H.js +312 -0
- package/dist/chunk-IM2GO42H.js.map +1 -0
- package/dist/{chunk-EZ3F4YIN.js → chunk-JLUS56YZ.js} +5 -5
- package/dist/{chunk-UHESJ6TQ.js → chunk-KEGUXZNY.js} +3 -3
- package/dist/{chunk-UHESJ6TQ.js.map → chunk-KEGUXZNY.js.map} +1 -1
- package/dist/{chunk-J3ZJBX7I.js → chunk-KM2HQZR3.js} +2 -2
- package/dist/{chunk-2MMBJE53.js → chunk-LI3OM3NP.js} +7 -7
- package/dist/{chunk-MZOQ26LH.js → chunk-LQGX5TCI.js} +2 -2
- package/dist/{chunk-KMN2JE4D.js → chunk-LTDWZ2HC.js} +2 -2
- package/dist/{chunk-T6RQNV7E.js → chunk-MJ737UIA.js} +2 -2
- package/dist/{chunk-7X7A7KVN.js → chunk-NLYOOGZ7.js} +2 -2
- package/dist/{chunk-PZ2QQULY.js → chunk-NVZRIHW5.js} +8 -8
- package/dist/{chunk-NT2Q6AHC.js → chunk-PCO3P7WJ.js} +2 -2
- package/dist/{chunk-VO2BNAA2.js → chunk-PXDEIJL5.js} +2 -2
- package/dist/{chunk-LXJZUNLX.js → chunk-QHHWJVVW.js} +2 -2
- package/dist/{chunk-XLWMNDQR.js → chunk-QJWZJ7HL.js} +3 -3
- package/dist/{chunk-73R4HOOK.js → chunk-QPG72IPU.js} +3 -3
- package/dist/{chunk-SIGDETMB.js → chunk-R4NGLTUS.js} +2 -2
- package/dist/{chunk-TRN56SPQ.js → chunk-R6NHHKXE.js} +2 -2
- package/dist/{chunk-ATFFWIKL.js → chunk-RGGXSN5A.js} +2 -2
- package/dist/{chunk-IOMLGJHG.js → chunk-RWZXVCGX.js} +5 -5
- package/dist/{chunk-PQ7EB5AD.js → chunk-S3BB34NI.js} +3 -3
- package/dist/{chunk-QX3K3INR.js → chunk-SBBZXDVJ.js} +2 -2
- package/dist/{chunk-G5I5ZT6O.js → chunk-SFDKLEIY.js} +2 -2
- package/dist/{chunk-ZLQ37WJX.js → chunk-SIGAGKNE.js} +8 -2
- package/dist/{chunk-ZLQ37WJX.js.map → chunk-SIGAGKNE.js.map} +1 -1
- package/dist/chunk-TPSLVZHS.js +102 -0
- package/dist/chunk-TPSLVZHS.js.map +1 -0
- package/dist/{chunk-TXTRHF3B.js → chunk-TVPDF6CZ.js} +2 -2
- package/dist/{chunk-A6WNTVA7.js → chunk-UP3XXGEN.js} +2 -2
- package/dist/{chunk-S2GR3T7W.js → chunk-UT7WE7RM.js} +2 -2
- package/dist/{chunk-BKVCTTEN.js → chunk-V3NKVYUD.js} +2 -2
- package/dist/{chunk-CGBE3N7T.js → chunk-VH76UQK3.js} +2 -2
- package/dist/{chunk-Z6EZCN6Z.js → chunk-VKQI47DJ.js} +8 -8
- package/dist/{chunk-KV7LFOPF.js → chunk-VSPBXHGR.js} +2 -2
- package/dist/{chunk-ZRUC7FD3.js → chunk-VXCTQ3B3.js} +2 -2
- package/dist/{chunk-QUNCLKHM.js → chunk-WIVBNNA3.js} +2 -2
- package/dist/{chunk-OWV6LKNZ.js → chunk-WWUFQ3AG.js} +2 -2
- package/dist/{chunk-DQEMWVMT.js → chunk-X7Y7WX73.js} +1 -1
- package/dist/{chunk-GQ6ZF4LD.js → chunk-XG4XXI66.js} +2 -2
- package/dist/{chunk-ISX7GVZE.js → chunk-YRULQW5J.js} +4 -4
- package/dist/{chunk-VV2MVHCJ.js → chunk-YX5F4V7H.js} +2 -2
- package/dist/{chunk-JRDL3FGM.js → chunk-YY5FM5M7.js} +3 -3
- package/dist/cli.js +70 -68
- package/dist/coding/export-okf-codegraph.js +9 -7
- package/dist/coding/export-okf-codegraph.js.map +1 -1
- package/dist/compounding/engine.js +10 -8
- package/dist/config-qmd.js +1 -1
- package/dist/config.js +11 -9
- package/dist/connectors/codex-materialize-runner.js +10 -8
- package/dist/connectors/index.js +10 -8
- package/dist/convergence-refresh.js +12 -10
- package/dist/corpus-watermark.js +12 -10
- package/dist/deep-recall-http-glue.js +4 -4
- package/dist/deep-recall.js +2 -2
- package/dist/entity-retrieval.js +10 -8
- package/dist/external-wiki-access.js +36 -34
- package/dist/extraction.js +14 -12
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/index.js +118 -116
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.js +9 -9
- package/dist/location/index.js +12 -10
- package/dist/maintenance/memory-governance.js +10 -8
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +10 -8
- package/dist/maintenance/rebuild-memory-projection.js +11 -9
- package/dist/memory-browse-operations.js +36 -34
- package/dist/memory-browse.js +7 -5
- package/dist/namespaces/migrate.js +11 -9
- package/dist/namespaces/search.js +8 -6
- package/dist/namespaces/storage.js +10 -8
- package/dist/operator-doctor-corpus.js +13 -11
- package/dist/operator-toolkit.js +20 -18
- package/dist/orchestration/maintenance.js +18 -16
- package/dist/orchestrator.js +98 -96
- package/dist/qmd-daemon-session.d.ts +45 -0
- package/dist/qmd-daemon-session.d.ts.map +1 -0
- package/dist/qmd-daemon-session.js +12 -0
- package/dist/qmd-daemon-session.js.map +1 -0
- package/dist/qmd-mcp-cancel.d.ts +21 -0
- package/dist/qmd-mcp-cancel.d.ts.map +1 -0
- package/dist/qmd-mcp-cancel.js +11 -0
- package/dist/qmd-mcp-cancel.js.map +1 -0
- package/dist/qmd-preflight.d.ts +3 -1
- package/dist/qmd-preflight.d.ts.map +1 -1
- package/dist/qmd-preflight.js +3 -1
- package/dist/qmd.d.ts +5 -29
- package/dist/qmd.d.ts.map +1 -1
- package/dist/qmd.js +6 -2
- package/dist/recall-navigation-operations.js +36 -34
- package/dist/recall-navigation.js +35 -33
- package/dist/recall-state-view-admission.js +7 -5
- package/dist/recall-why-service.js +7 -5
- package/dist/resume-bundles.js +12 -10
- package/dist/search/factory.js +7 -5
- package/dist/search/index.js +11 -9
- package/dist/semantic-consolidation.js +11 -9
- package/dist/semantic-rule-promotion.js +10 -8
- package/dist/semantic-rule-verifier.js +10 -8
- package/dist/source-agent-qualifier.js +13 -11
- package/dist/standup/build.js +10 -8
- package/dist/storage.js +9 -7
- package/dist/support-passport/index.js +38 -36
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/export-okf.js +10 -8
- package/dist/verified-recall.js +10 -8
- package/dist/who-knows-cli.js +11 -9
- package/dist/who-knows.js +10 -8
- package/package.json +2 -2
- package/src/config-qmd.ts +2 -2
- package/src/qmd-daemon-session.ts +369 -0
- package/src/qmd-mcp-cancel.test.ts +408 -0
- package/src/qmd-mcp-cancel.ts +130 -0
- package/src/qmd-preflight.ts +10 -1
- package/src/qmd-rank-compare.test.ts +100 -0
- package/src/qmd.test.ts +16 -1
- package/src/qmd.ts +18 -297
- package/dist/chunk-B3OFQP5Y.js.map +0 -1
- /package/dist/{capsule-crypto-YO5QJ6L3.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
- /package/dist/{chunk-JWFTPRYD.js.map → chunk-2EZB2DL5.js.map} +0 -0
- /package/dist/{chunk-BXLOS5AJ.js.map → chunk-2NLLXCJG.js.map} +0 -0
- /package/dist/{chunk-QKCGOECM.js.map → chunk-34G4U6HS.js.map} +0 -0
- /package/dist/{chunk-YI6XIFQV.js.map → chunk-34TSXVQS.js.map} +0 -0
- /package/dist/{chunk-7YQR6XHY.js.map → chunk-3I375S4J.js.map} +0 -0
- /package/dist/{chunk-XQWKB6PY.js.map → chunk-3UP6NP4C.js.map} +0 -0
- /package/dist/{chunk-OFGTRDWX.js.map → chunk-47I2EK6G.js.map} +0 -0
- /package/dist/{chunk-HWGFTTPS.js.map → chunk-5FLFPTDK.js.map} +0 -0
- /package/dist/{chunk-LHDSCWDK.js.map → chunk-7AUC2YSU.js.map} +0 -0
- /package/dist/{chunk-AU43D3IT.js.map → chunk-7DB7KYSR.js.map} +0 -0
- /package/dist/{chunk-VDX2J7OX.js.map → chunk-7LCGFUMB.js.map} +0 -0
- /package/dist/{chunk-CNBGAFDY.js.map → chunk-A7V7GZ7F.js.map} +0 -0
- /package/dist/{chunk-SWXPR5SE.js.map → chunk-B2UCJX76.js.map} +0 -0
- /package/dist/{chunk-KYUVFCT2.js.map → chunk-BCTDTVSR.js.map} +0 -0
- /package/dist/{chunk-6WRHNA4I.js.map → chunk-BKPV47BK.js.map} +0 -0
- /package/dist/{chunk-QAIVTLL2.js.map → chunk-BLHPADUX.js.map} +0 -0
- /package/dist/{chunk-PRNR47DI.js.map → chunk-BOT276JC.js.map} +0 -0
- /package/dist/{chunk-O43AAJFQ.js.map → chunk-CRZ7BU6R.js.map} +0 -0
- /package/dist/{chunk-2OFDC3AK.js.map → chunk-DDPPV3KA.js.map} +0 -0
- /package/dist/{chunk-VYIBRCVW.js.map → chunk-DHQUQ34W.js.map} +0 -0
- /package/dist/{chunk-7NBUE5VY.js.map → chunk-DPX3J2N4.js.map} +0 -0
- /package/dist/{chunk-EWWK65CI.js.map → chunk-DX3ZODO3.js.map} +0 -0
- /package/dist/{chunk-SFDBLCZV.js.map → chunk-DYZHVVJM.js.map} +0 -0
- /package/dist/{chunk-B454SHPU.js.map → chunk-E7FN5N5E.js.map} +0 -0
- /package/dist/{chunk-AWSP3WNM.js.map → chunk-EJJMDLVB.js.map} +0 -0
- /package/dist/{chunk-KFHEZJQZ.js.map → chunk-EPFNPPWH.js.map} +0 -0
- /package/dist/{chunk-VDVHIRCK.js.map → chunk-EUYNHJTK.js.map} +0 -0
- /package/dist/{chunk-T32YYUT2.js.map → chunk-FB6FQT4P.js.map} +0 -0
- /package/dist/{chunk-XTN54NML.js.map → chunk-G3T6YMBO.js.map} +0 -0
- /package/dist/{chunk-JC7QQ2DJ.js.map → chunk-GS6LTJFW.js.map} +0 -0
- /package/dist/{chunk-WR66CTVU.js.map → chunk-GYLDYYRA.js.map} +0 -0
- /package/dist/{chunk-PQKZLBCJ.js.map → chunk-GZRTH3WZ.js.map} +0 -0
- /package/dist/{chunk-STQC2FYQ.js.map → chunk-HNU5CZ7E.js.map} +0 -0
- /package/dist/{chunk-E4XLFYHV.js.map → chunk-HPEONBM3.js.map} +0 -0
- /package/dist/{chunk-EZ3F4YIN.js.map → chunk-JLUS56YZ.js.map} +0 -0
- /package/dist/{chunk-J3ZJBX7I.js.map → chunk-KM2HQZR3.js.map} +0 -0
- /package/dist/{chunk-2MMBJE53.js.map → chunk-LI3OM3NP.js.map} +0 -0
- /package/dist/{chunk-MZOQ26LH.js.map → chunk-LQGX5TCI.js.map} +0 -0
- /package/dist/{chunk-KMN2JE4D.js.map → chunk-LTDWZ2HC.js.map} +0 -0
- /package/dist/{chunk-T6RQNV7E.js.map → chunk-MJ737UIA.js.map} +0 -0
- /package/dist/{chunk-7X7A7KVN.js.map → chunk-NLYOOGZ7.js.map} +0 -0
- /package/dist/{chunk-PZ2QQULY.js.map → chunk-NVZRIHW5.js.map} +0 -0
- /package/dist/{chunk-NT2Q6AHC.js.map → chunk-PCO3P7WJ.js.map} +0 -0
- /package/dist/{chunk-VO2BNAA2.js.map → chunk-PXDEIJL5.js.map} +0 -0
- /package/dist/{chunk-LXJZUNLX.js.map → chunk-QHHWJVVW.js.map} +0 -0
- /package/dist/{chunk-XLWMNDQR.js.map → chunk-QJWZJ7HL.js.map} +0 -0
- /package/dist/{chunk-73R4HOOK.js.map → chunk-QPG72IPU.js.map} +0 -0
- /package/dist/{chunk-SIGDETMB.js.map → chunk-R4NGLTUS.js.map} +0 -0
- /package/dist/{chunk-TRN56SPQ.js.map → chunk-R6NHHKXE.js.map} +0 -0
- /package/dist/{chunk-ATFFWIKL.js.map → chunk-RGGXSN5A.js.map} +0 -0
- /package/dist/{chunk-IOMLGJHG.js.map → chunk-RWZXVCGX.js.map} +0 -0
- /package/dist/{chunk-PQ7EB5AD.js.map → chunk-S3BB34NI.js.map} +0 -0
- /package/dist/{chunk-QX3K3INR.js.map → chunk-SBBZXDVJ.js.map} +0 -0
- /package/dist/{chunk-G5I5ZT6O.js.map → chunk-SFDKLEIY.js.map} +0 -0
- /package/dist/{chunk-TXTRHF3B.js.map → chunk-TVPDF6CZ.js.map} +0 -0
- /package/dist/{chunk-A6WNTVA7.js.map → chunk-UP3XXGEN.js.map} +0 -0
- /package/dist/{chunk-S2GR3T7W.js.map → chunk-UT7WE7RM.js.map} +0 -0
- /package/dist/{chunk-BKVCTTEN.js.map → chunk-V3NKVYUD.js.map} +0 -0
- /package/dist/{chunk-CGBE3N7T.js.map → chunk-VH76UQK3.js.map} +0 -0
- /package/dist/{chunk-Z6EZCN6Z.js.map → chunk-VKQI47DJ.js.map} +0 -0
- /package/dist/{chunk-KV7LFOPF.js.map → chunk-VSPBXHGR.js.map} +0 -0
- /package/dist/{chunk-ZRUC7FD3.js.map → chunk-VXCTQ3B3.js.map} +0 -0
- /package/dist/{chunk-QUNCLKHM.js.map → chunk-WIVBNNA3.js.map} +0 -0
- /package/dist/{chunk-OWV6LKNZ.js.map → chunk-WWUFQ3AG.js.map} +0 -0
- /package/dist/{chunk-DQEMWVMT.js.map → chunk-X7Y7WX73.js.map} +0 -0
- /package/dist/{chunk-GQ6ZF4LD.js.map → chunk-XG4XXI66.js.map} +0 -0
- /package/dist/{chunk-ISX7GVZE.js.map → chunk-YRULQW5J.js.map} +0 -0
- /package/dist/{chunk-VV2MVHCJ.js.map → chunk-YX5F4V7H.js.map} +0 -0
- /package/dist/{chunk-JRDL3FGM.js.map → chunk-YY5FM5M7.js.map} +0 -0
package/dist/who-knows-cli.js
CHANGED
|
@@ -4,21 +4,21 @@ import {
|
|
|
4
4
|
renderWhoKnows,
|
|
5
5
|
renderWhoKnowsJson,
|
|
6
6
|
renderWhoKnowsText
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-KM2HQZR3.js";
|
|
8
|
+
import "./chunk-MJ737UIA.js";
|
|
9
|
+
import "./chunk-HPEONBM3.js";
|
|
10
10
|
import "./chunk-UHVXE24Y.js";
|
|
11
11
|
import "./chunk-46WM6JX2.js";
|
|
12
12
|
import "./chunk-V4JZCTMK.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-V3NKVYUD.js";
|
|
14
|
+
import "./chunk-JLUS56YZ.js";
|
|
15
|
+
import "./chunk-S7LWX2PQ.js";
|
|
15
16
|
import "./chunk-T2YX56QI.js";
|
|
16
17
|
import "./chunk-CYEPCZN5.js";
|
|
17
18
|
import "./chunk-T3FMRLWQ.js";
|
|
18
19
|
import "./chunk-7VO6E5UD.js";
|
|
19
|
-
import "./chunk-5BUCKFRE.js";
|
|
20
|
-
import "./chunk-S7LWX2PQ.js";
|
|
21
20
|
import "./chunk-4O6WRBGE.js";
|
|
21
|
+
import "./chunk-5BUCKFRE.js";
|
|
22
22
|
import "./chunk-GUMZC2BO.js";
|
|
23
23
|
import "./chunk-TFA6HPOA.js";
|
|
24
24
|
import "./chunk-F4TWWUMP.js";
|
|
@@ -49,9 +49,11 @@ import "./chunk-R7QY5ZVB.js";
|
|
|
49
49
|
import "./chunk-5WITETWU.js";
|
|
50
50
|
import "./chunk-6CIAGZ6X.js";
|
|
51
51
|
import "./chunk-7CT3AI52.js";
|
|
52
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-IB63OVUB.js";
|
|
53
53
|
import "./chunk-G26YNEOC.js";
|
|
54
|
-
import "./chunk-
|
|
54
|
+
import "./chunk-IM2GO42H.js";
|
|
55
|
+
import "./chunk-TPSLVZHS.js";
|
|
56
|
+
import "./chunk-SIGAGKNE.js";
|
|
55
57
|
import "./chunk-IUM3VSHI.js";
|
|
56
58
|
import "./chunk-23G5P7TA.js";
|
|
57
59
|
import "./chunk-C64XATK7.js";
|
package/dist/who-knows.js
CHANGED
|
@@ -9,20 +9,20 @@ import {
|
|
|
9
9
|
loadWhoKnowsEntities,
|
|
10
10
|
tokenizeTopic,
|
|
11
11
|
validateWhoKnowsInput
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-MJ737UIA.js";
|
|
13
|
+
import "./chunk-HPEONBM3.js";
|
|
14
14
|
import "./chunk-UHVXE24Y.js";
|
|
15
15
|
import "./chunk-46WM6JX2.js";
|
|
16
16
|
import "./chunk-V4JZCTMK.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-V3NKVYUD.js";
|
|
18
|
+
import "./chunk-JLUS56YZ.js";
|
|
19
|
+
import "./chunk-S7LWX2PQ.js";
|
|
19
20
|
import "./chunk-T2YX56QI.js";
|
|
20
21
|
import "./chunk-CYEPCZN5.js";
|
|
21
22
|
import "./chunk-T3FMRLWQ.js";
|
|
22
23
|
import "./chunk-7VO6E5UD.js";
|
|
23
|
-
import "./chunk-5BUCKFRE.js";
|
|
24
|
-
import "./chunk-S7LWX2PQ.js";
|
|
25
24
|
import "./chunk-4O6WRBGE.js";
|
|
25
|
+
import "./chunk-5BUCKFRE.js";
|
|
26
26
|
import "./chunk-GUMZC2BO.js";
|
|
27
27
|
import "./chunk-TFA6HPOA.js";
|
|
28
28
|
import "./chunk-F4TWWUMP.js";
|
|
@@ -53,9 +53,11 @@ import "./chunk-R7QY5ZVB.js";
|
|
|
53
53
|
import "./chunk-5WITETWU.js";
|
|
54
54
|
import "./chunk-6CIAGZ6X.js";
|
|
55
55
|
import "./chunk-7CT3AI52.js";
|
|
56
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-IB63OVUB.js";
|
|
57
57
|
import "./chunk-G26YNEOC.js";
|
|
58
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-IM2GO42H.js";
|
|
59
|
+
import "./chunk-TPSLVZHS.js";
|
|
60
|
+
import "./chunk-SIGAGKNE.js";
|
|
59
61
|
import "./chunk-IUM3VSHI.js";
|
|
60
62
|
import "./chunk-23G5P7TA.js";
|
|
61
63
|
import "./chunk-C64XATK7.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.1",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3327,7 +3327,7 @@
|
|
|
3327
3327
|
"core"
|
|
3328
3328
|
],
|
|
3329
3329
|
"peerDependencies": {
|
|
3330
|
-
"@remnic/coding-graph": "^
|
|
3330
|
+
"@remnic/coding-graph": "^10.0.1"
|
|
3331
3331
|
},
|
|
3332
3332
|
"peerDependenciesMeta": {
|
|
3333
3333
|
"@remnic/coding-graph": {
|
package/src/config-qmd.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { coerceNumber } from "./connectors/coerce.js";
|
|
2
2
|
|
|
3
3
|
export function parseQmdSupportedVersion(value: unknown): string {
|
|
4
|
-
if (value === undefined || value === null) return "2.
|
|
4
|
+
if (value === undefined || value === null) return "2.8.3";
|
|
5
5
|
if (typeof value !== "string") {
|
|
6
6
|
throw new Error(`qmdSupportedVersion must be a semantic version string; got ${JSON.stringify(value)}`);
|
|
7
7
|
}
|
|
8
8
|
const normalized = value.trim();
|
|
9
9
|
if (!/^\d+\.\d+\.\d+$/.test(normalized)) {
|
|
10
10
|
throw new Error(
|
|
11
|
-
`qmdSupportedVersion must be a semantic version string like "2.
|
|
11
|
+
`qmdSupportedVersion must be a semantic version string like "2.8.3"; got ${JSON.stringify(value)}`,
|
|
12
12
|
);
|
|
13
13
|
}
|
|
14
14
|
return normalized;
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
import { abortError, throwIfAborted } from "./abort-error.js";
|
|
2
|
+
import { log } from "./logger.js";
|
|
3
|
+
import { type CommandChildProcess, launchProcess } from "./runtime/child-process.js";
|
|
4
|
+
import { mergeEnv } from "./runtime/env.js";
|
|
5
|
+
|
|
6
|
+
export type QmdRuntimeEnv = Record<string, string | undefined>;
|
|
7
|
+
|
|
8
|
+
export type QmdDaemonSpawn = (
|
|
9
|
+
command: string,
|
|
10
|
+
args: string[],
|
|
11
|
+
options?: Record<string, unknown>
|
|
12
|
+
) => CommandChildProcess;
|
|
13
|
+
|
|
14
|
+
type PendingRequest = {
|
|
15
|
+
resolve: (value: unknown) => void;
|
|
16
|
+
reject: (reason: Error) => void;
|
|
17
|
+
timer: ReturnType<typeof setTimeout>;
|
|
18
|
+
cleanup: () => void;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
let nextJsonRpcId = 1;
|
|
22
|
+
|
|
23
|
+
function sleep(ms: number): Promise<void> {
|
|
24
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Drop C0 controls and one ANSI CSI sequence. Char scan on purpose:
|
|
29
|
+
* the regex-safety ratchet flags new regular expressions on changed lines.
|
|
30
|
+
*/
|
|
31
|
+
function sanitizeForLog(value: string, max = 200): string {
|
|
32
|
+
let out = "";
|
|
33
|
+
const cap = Math.min(value.length, max);
|
|
34
|
+
for (let i = 0; i < cap; i++) {
|
|
35
|
+
const code = value.charCodeAt(i);
|
|
36
|
+
if (code === 0x1b && value.charCodeAt(i + 1) === 0x5b) {
|
|
37
|
+
i += 2;
|
|
38
|
+
while (i < cap) {
|
|
39
|
+
const next = value.charCodeAt(i);
|
|
40
|
+
const isLetter = (next >= 65 && next <= 90) || (next >= 97 && next <= 122);
|
|
41
|
+
if (isLetter) break;
|
|
42
|
+
i += 1;
|
|
43
|
+
}
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (code < 0x20 || code === 0x7f) continue;
|
|
47
|
+
out += value[i] ?? "";
|
|
48
|
+
}
|
|
49
|
+
if (value.length > max) return `${out}…(truncated)`;
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function isTimeoutMessage(message: string): boolean {
|
|
54
|
+
return message.toLowerCase().includes("timed out");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* One `qmd mcp` child and its JSON-RPC session.
|
|
59
|
+
*
|
|
60
|
+
* Aborting or timing out a `tools/call` writes MCP `notifications/cancelled`
|
|
61
|
+
* and rejects the caller immediately. The SDK drops the tool result once the
|
|
62
|
+
* server's request controller is aborted, so this session does not wait for
|
|
63
|
+
* a response after cancel. The initialize handshake is not cancelled: a slow
|
|
64
|
+
* model load is supposed to stay alive for the next probe.
|
|
65
|
+
*
|
|
66
|
+
* The child is not killed on cancel. Reloading the rerank model costs longer
|
|
67
|
+
* than the recall budget, and a slow query would then take the warm process
|
|
68
|
+
* down on every timeout.
|
|
69
|
+
*/
|
|
70
|
+
export class QmdDaemonSession {
|
|
71
|
+
private child: CommandChildProcess | null = null;
|
|
72
|
+
private initialized = false;
|
|
73
|
+
private buffer = "";
|
|
74
|
+
private startPromise: Promise<boolean> | null = null;
|
|
75
|
+
private pendingRequests = new Map<number, PendingRequest>();
|
|
76
|
+
private readonly qmdPath: string;
|
|
77
|
+
private readonly runtimeEnv: QmdRuntimeEnv;
|
|
78
|
+
private readonly indexName?: string;
|
|
79
|
+
private readonly spawn: QmdDaemonSpawn;
|
|
80
|
+
|
|
81
|
+
constructor(
|
|
82
|
+
qmdPath: string,
|
|
83
|
+
runtimeEnv: QmdRuntimeEnv = {},
|
|
84
|
+
indexName?: string,
|
|
85
|
+
spawn: QmdDaemonSpawn = launchProcess
|
|
86
|
+
) {
|
|
87
|
+
this.qmdPath = qmdPath;
|
|
88
|
+
this.runtimeEnv = runtimeEnv;
|
|
89
|
+
this.indexName = indexName?.trim() || undefined;
|
|
90
|
+
this.spawn = spawn;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Spawn the qmd mcp child process and perform MCP handshake. */
|
|
94
|
+
async start(): Promise<boolean> {
|
|
95
|
+
if (this.child && !this.child.killed && this.initialized) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
if (this.startPromise) {
|
|
99
|
+
return this.startPromise;
|
|
100
|
+
}
|
|
101
|
+
this.startPromise = (async () => {
|
|
102
|
+
const processAlreadyRunning = this.child != null && !this.child.killed;
|
|
103
|
+
if (!processAlreadyRunning) {
|
|
104
|
+
if (this.child) {
|
|
105
|
+
this.cleanup({ killChild: true });
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
const args = this.indexName ? ["--index", this.indexName, "mcp"] : ["mcp"];
|
|
109
|
+
const child = this.spawn(this.qmdPath, args, {
|
|
110
|
+
env: mergeEnv({ NO_COLOR: "1", ...this.runtimeEnv }),
|
|
111
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
112
|
+
});
|
|
113
|
+
this.child = child;
|
|
114
|
+
this.buffer = "";
|
|
115
|
+
|
|
116
|
+
child.stdout?.on("data", (data: Buffer) => {
|
|
117
|
+
if (this.child !== child) return;
|
|
118
|
+
this.handleStdoutData(data);
|
|
119
|
+
});
|
|
120
|
+
child.stderr?.on("data", (data: Buffer) => {
|
|
121
|
+
if (this.child !== child) return;
|
|
122
|
+
const msg = data.toString().trim();
|
|
123
|
+
if (msg) log.debug(`QMD mcp stderr: ${sanitizeForLog(msg)}`);
|
|
124
|
+
});
|
|
125
|
+
child.stdin?.on("error", (err) => {
|
|
126
|
+
log.debug(`QMD mcp stdin error (suppressed): ${err.message}`);
|
|
127
|
+
});
|
|
128
|
+
child.on("error", (err) => {
|
|
129
|
+
if (this.child !== child) return;
|
|
130
|
+
log.debug(`QMD mcp process error: ${err.message}`);
|
|
131
|
+
this.cleanup({ child });
|
|
132
|
+
});
|
|
133
|
+
child.on("close", (code) => {
|
|
134
|
+
if (this.child !== child) return;
|
|
135
|
+
log.debug(`QMD mcp process exited (code ${code})`);
|
|
136
|
+
this.cleanup({ child });
|
|
137
|
+
});
|
|
138
|
+
} catch (err) {
|
|
139
|
+
log.debug(`QMD mcp: failed to spawn process: ${err}`);
|
|
140
|
+
this.cleanup({ killChild: true });
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
log.debug("QMD mcp: process already running, retrying handshake");
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
try {
|
|
148
|
+
const result = await this.sendRequest(
|
|
149
|
+
"initialize",
|
|
150
|
+
{
|
|
151
|
+
protocolVersion: "2024-11-05",
|
|
152
|
+
capabilities: {},
|
|
153
|
+
clientInfo: { name: "openclaw-remnic", version: "1.0.0" },
|
|
154
|
+
},
|
|
155
|
+
60_000
|
|
156
|
+
);
|
|
157
|
+
if (!result) {
|
|
158
|
+
this.cleanup({ killChild: true });
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
this.sendNotification("notifications/initialized");
|
|
162
|
+
this.initialized = true;
|
|
163
|
+
log.info("QMD mcp: stdio session initialized");
|
|
164
|
+
return true;
|
|
165
|
+
} catch (err) {
|
|
166
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
167
|
+
if (isTimeoutMessage(msg)) {
|
|
168
|
+
log.debug("QMD mcp: handshake timed out — process still loading, will retry later");
|
|
169
|
+
this.initialized = false;
|
|
170
|
+
} else {
|
|
171
|
+
log.debug(`QMD mcp: failed to start stdio session: ${err}`);
|
|
172
|
+
this.cleanup({ killChild: true });
|
|
173
|
+
}
|
|
174
|
+
return false;
|
|
175
|
+
} finally {
|
|
176
|
+
this.startPromise = null;
|
|
177
|
+
}
|
|
178
|
+
})();
|
|
179
|
+
return this.startPromise;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/** Call an MCP tool and return the parsed result. */
|
|
183
|
+
async callTool(
|
|
184
|
+
name: string,
|
|
185
|
+
args: Record<string, unknown>,
|
|
186
|
+
timeoutMs = 30_000,
|
|
187
|
+
signal?: AbortSignal
|
|
188
|
+
): Promise<unknown> {
|
|
189
|
+
if (!this.child || this.child.killed || !this.initialized) {
|
|
190
|
+
throw new Error("QMD mcp process not running");
|
|
191
|
+
}
|
|
192
|
+
return this.sendRequest("tools/call", { name, arguments: args }, timeoutMs, signal);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** Kill stdio process and clear state so the next probe can restart. */
|
|
196
|
+
invalidate(): void {
|
|
197
|
+
this.cleanup({ killChild: true });
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** Kill stdio process and wait briefly for the child handle to close. */
|
|
201
|
+
async close(timeoutMs = 1_000): Promise<void> {
|
|
202
|
+
const target = this.child;
|
|
203
|
+
if (!target) {
|
|
204
|
+
this.cleanup({ killChild: true });
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
let closed = false;
|
|
209
|
+
const closedPromise = new Promise<void>((resolve) => {
|
|
210
|
+
target.once("close", () => {
|
|
211
|
+
closed = true;
|
|
212
|
+
resolve();
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
this.cleanup({ killChild: true });
|
|
217
|
+
await Promise.race([closedPromise, sleep(timeoutMs)]);
|
|
218
|
+
if (!closed) {
|
|
219
|
+
try {
|
|
220
|
+
target.kill("SIGKILL");
|
|
221
|
+
} catch {
|
|
222
|
+
// Ignore process-kill races during shutdown.
|
|
223
|
+
}
|
|
224
|
+
await Promise.race([closedPromise, sleep(250)]);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
isActive(): boolean {
|
|
229
|
+
return this.child !== null && !this.child.killed && this.initialized;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/** True while the process is spawned but the MCP handshake has not yet completed. */
|
|
233
|
+
isLoading(): boolean {
|
|
234
|
+
return this.child !== null && !this.child.killed && !this.initialized;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
private sendRequest(
|
|
238
|
+
method: string,
|
|
239
|
+
params: Record<string, unknown>,
|
|
240
|
+
timeoutMs: number,
|
|
241
|
+
signal?: AbortSignal
|
|
242
|
+
): Promise<unknown> {
|
|
243
|
+
return new Promise((resolve, reject) => {
|
|
244
|
+
throwIfAborted(signal, `QMD mcp ${method} aborted before request`);
|
|
245
|
+
if (!this.child || !this.child.stdin || this.child.killed) {
|
|
246
|
+
reject(new Error("QMD mcp process not available"));
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
const id = nextJsonRpcId++;
|
|
251
|
+
let written = false;
|
|
252
|
+
const abandon = (reason: string) => {
|
|
253
|
+
// Only a tool call that actually went out can be holding the worker.
|
|
254
|
+
// initialize stays running across a slow model load.
|
|
255
|
+
if (!written || method !== "tools/call") return;
|
|
256
|
+
this.sendNotification("notifications/cancelled", { requestId: id, reason });
|
|
257
|
+
};
|
|
258
|
+
const timer = setTimeout(() => {
|
|
259
|
+
this.pendingRequests.delete(id);
|
|
260
|
+
cleanup();
|
|
261
|
+
const reason = `QMD mcp ${method} timed out after ${timeoutMs}ms`;
|
|
262
|
+
abandon(reason);
|
|
263
|
+
reject(new Error(reason));
|
|
264
|
+
}, timeoutMs);
|
|
265
|
+
const onAbort = () => {
|
|
266
|
+
clearTimeout(timer);
|
|
267
|
+
this.pendingRequests.delete(id);
|
|
268
|
+
cleanup();
|
|
269
|
+
abandon("client aborted");
|
|
270
|
+
reject(abortError(`QMD mcp ${method} aborted`));
|
|
271
|
+
};
|
|
272
|
+
const cleanup = () => {
|
|
273
|
+
signal?.removeEventListener("abort", onAbort);
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
this.pendingRequests.set(id, { resolve, reject, timer, cleanup });
|
|
277
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
278
|
+
const message = `${JSON.stringify({ jsonrpc: "2.0", id, method, params })}\n`;
|
|
279
|
+
try {
|
|
280
|
+
this.child.stdin.write(message, (err) => {
|
|
281
|
+
if (!err) return;
|
|
282
|
+
written = false;
|
|
283
|
+
clearTimeout(timer);
|
|
284
|
+
this.pendingRequests.delete(id);
|
|
285
|
+
cleanup();
|
|
286
|
+
reject(new Error(`Failed to write to QMD mcp stdin: ${err.message}`));
|
|
287
|
+
});
|
|
288
|
+
written = true;
|
|
289
|
+
} catch (err) {
|
|
290
|
+
written = false;
|
|
291
|
+
clearTimeout(timer);
|
|
292
|
+
this.pendingRequests.delete(id);
|
|
293
|
+
cleanup();
|
|
294
|
+
const messageText = err instanceof Error ? err.message : String(err);
|
|
295
|
+
reject(new Error(`Failed to write to QMD mcp stdin: ${messageText}`));
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
private sendNotification(method: string, params?: Record<string, unknown>): void {
|
|
301
|
+
if (!this.child || !this.child.stdin || this.child.killed) return;
|
|
302
|
+
if (this.child.stdin.destroyed) return;
|
|
303
|
+
const msg: Record<string, unknown> = { jsonrpc: "2.0", method };
|
|
304
|
+
if (params) msg.params = params;
|
|
305
|
+
try {
|
|
306
|
+
this.child.stdin.write(`${JSON.stringify(msg)}\n`);
|
|
307
|
+
} catch {
|
|
308
|
+
// Ignore EPIPE / write-after-close
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
private handleStdoutData(data: Buffer | string): void {
|
|
313
|
+
this.buffer += data.toString();
|
|
314
|
+
let newlineIdx: number;
|
|
315
|
+
// Re-evaluated on every pass so a blank line cannot leave a stale index.
|
|
316
|
+
while ((newlineIdx = this.buffer.indexOf("\n")) !== -1) {
|
|
317
|
+
const line = this.buffer.slice(0, newlineIdx).trim();
|
|
318
|
+
this.buffer = this.buffer.slice(newlineIdx + 1);
|
|
319
|
+
if (!line) continue;
|
|
320
|
+
try {
|
|
321
|
+
const msg = JSON.parse(line) as Record<string, unknown>;
|
|
322
|
+
this.handleMessage(msg);
|
|
323
|
+
} catch {
|
|
324
|
+
log.debug(`QMD mcp: unparseable stdout: ${sanitizeForLog(line, 200)}`);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
private handleMessage(msg: Record<string, unknown>): void {
|
|
330
|
+
if (msg.id !== undefined && msg.id !== null) {
|
|
331
|
+
const pending = this.pendingRequests.get(msg.id as number);
|
|
332
|
+
if (pending) {
|
|
333
|
+
clearTimeout(pending.timer);
|
|
334
|
+
this.pendingRequests.delete(msg.id as number);
|
|
335
|
+
pending.cleanup();
|
|
336
|
+
if (msg.error) {
|
|
337
|
+
pending.reject(new Error(JSON.stringify(msg.error)));
|
|
338
|
+
} else {
|
|
339
|
+
pending.resolve(msg.result);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
if (msg.method) {
|
|
345
|
+
log.debug(`QMD mcp notification: ${msg.method}`);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
private cleanup(opts?: { killChild?: boolean; child?: CommandChildProcess | null }): void {
|
|
350
|
+
const target = opts?.child ?? this.child;
|
|
351
|
+
if (!target) return;
|
|
352
|
+
if (opts?.child && this.child !== opts.child) {
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
if (opts?.killChild && !target.killed) {
|
|
356
|
+
target.kill("SIGTERM");
|
|
357
|
+
}
|
|
358
|
+
this.initialized = false;
|
|
359
|
+
for (const [, pending] of this.pendingRequests) {
|
|
360
|
+
clearTimeout(pending.timer);
|
|
361
|
+
pending.cleanup();
|
|
362
|
+
pending.reject(new Error("QMD mcp process terminated"));
|
|
363
|
+
}
|
|
364
|
+
this.pendingRequests.clear();
|
|
365
|
+
this.startPromise = null;
|
|
366
|
+
this.child = null;
|
|
367
|
+
this.buffer = "";
|
|
368
|
+
}
|
|
369
|
+
}
|