@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
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import {
|
|
2
|
+
launchProcess
|
|
3
|
+
} from "./chunk-ZEFVK7XC.js";
|
|
4
|
+
import {
|
|
5
|
+
mergeEnv
|
|
6
|
+
} from "./chunk-P2QRMMVQ.js";
|
|
7
|
+
import {
|
|
8
|
+
abortError,
|
|
9
|
+
throwIfAborted
|
|
10
|
+
} from "./chunk-BTTPKDIL.js";
|
|
11
|
+
import {
|
|
12
|
+
log
|
|
13
|
+
} from "./chunk-3WCASNQZ.js";
|
|
14
|
+
|
|
15
|
+
// src/qmd-daemon-session.ts
|
|
16
|
+
var nextJsonRpcId = 1;
|
|
17
|
+
function sleep(ms) {
|
|
18
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
19
|
+
}
|
|
20
|
+
function sanitizeForLog(value, max = 200) {
|
|
21
|
+
let out = "";
|
|
22
|
+
const cap = Math.min(value.length, max);
|
|
23
|
+
for (let i = 0; i < cap; i++) {
|
|
24
|
+
const code = value.charCodeAt(i);
|
|
25
|
+
if (code === 27 && value.charCodeAt(i + 1) === 91) {
|
|
26
|
+
i += 2;
|
|
27
|
+
while (i < cap) {
|
|
28
|
+
const next = value.charCodeAt(i);
|
|
29
|
+
const isLetter = next >= 65 && next <= 90 || next >= 97 && next <= 122;
|
|
30
|
+
if (isLetter) break;
|
|
31
|
+
i += 1;
|
|
32
|
+
}
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (code < 32 || code === 127) continue;
|
|
36
|
+
out += value[i] ?? "";
|
|
37
|
+
}
|
|
38
|
+
if (value.length > max) return `${out}\u2026(truncated)`;
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
function isTimeoutMessage(message) {
|
|
42
|
+
return message.toLowerCase().includes("timed out");
|
|
43
|
+
}
|
|
44
|
+
var QmdDaemonSession = class {
|
|
45
|
+
child = null;
|
|
46
|
+
initialized = false;
|
|
47
|
+
buffer = "";
|
|
48
|
+
startPromise = null;
|
|
49
|
+
pendingRequests = /* @__PURE__ */ new Map();
|
|
50
|
+
qmdPath;
|
|
51
|
+
runtimeEnv;
|
|
52
|
+
indexName;
|
|
53
|
+
spawn;
|
|
54
|
+
constructor(qmdPath, runtimeEnv = {}, indexName, spawn = launchProcess) {
|
|
55
|
+
this.qmdPath = qmdPath;
|
|
56
|
+
this.runtimeEnv = runtimeEnv;
|
|
57
|
+
this.indexName = indexName?.trim() || void 0;
|
|
58
|
+
this.spawn = spawn;
|
|
59
|
+
}
|
|
60
|
+
/** Spawn the qmd mcp child process and perform MCP handshake. */
|
|
61
|
+
async start() {
|
|
62
|
+
if (this.child && !this.child.killed && this.initialized) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
if (this.startPromise) {
|
|
66
|
+
return this.startPromise;
|
|
67
|
+
}
|
|
68
|
+
this.startPromise = (async () => {
|
|
69
|
+
const processAlreadyRunning = this.child != null && !this.child.killed;
|
|
70
|
+
if (!processAlreadyRunning) {
|
|
71
|
+
if (this.child) {
|
|
72
|
+
this.cleanup({ killChild: true });
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const args = this.indexName ? ["--index", this.indexName, "mcp"] : ["mcp"];
|
|
76
|
+
const child = this.spawn(this.qmdPath, args, {
|
|
77
|
+
env: mergeEnv({ NO_COLOR: "1", ...this.runtimeEnv }),
|
|
78
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
79
|
+
});
|
|
80
|
+
this.child = child;
|
|
81
|
+
this.buffer = "";
|
|
82
|
+
child.stdout?.on("data", (data) => {
|
|
83
|
+
if (this.child !== child) return;
|
|
84
|
+
this.handleStdoutData(data);
|
|
85
|
+
});
|
|
86
|
+
child.stderr?.on("data", (data) => {
|
|
87
|
+
if (this.child !== child) return;
|
|
88
|
+
const msg = data.toString().trim();
|
|
89
|
+
if (msg) log.debug(`QMD mcp stderr: ${sanitizeForLog(msg)}`);
|
|
90
|
+
});
|
|
91
|
+
child.stdin?.on("error", (err) => {
|
|
92
|
+
log.debug(`QMD mcp stdin error (suppressed): ${err.message}`);
|
|
93
|
+
});
|
|
94
|
+
child.on("error", (err) => {
|
|
95
|
+
if (this.child !== child) return;
|
|
96
|
+
log.debug(`QMD mcp process error: ${err.message}`);
|
|
97
|
+
this.cleanup({ child });
|
|
98
|
+
});
|
|
99
|
+
child.on("close", (code) => {
|
|
100
|
+
if (this.child !== child) return;
|
|
101
|
+
log.debug(`QMD mcp process exited (code ${code})`);
|
|
102
|
+
this.cleanup({ child });
|
|
103
|
+
});
|
|
104
|
+
} catch (err) {
|
|
105
|
+
log.debug(`QMD mcp: failed to spawn process: ${err}`);
|
|
106
|
+
this.cleanup({ killChild: true });
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
} else {
|
|
110
|
+
log.debug("QMD mcp: process already running, retrying handshake");
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const result = await this.sendRequest(
|
|
114
|
+
"initialize",
|
|
115
|
+
{
|
|
116
|
+
protocolVersion: "2024-11-05",
|
|
117
|
+
capabilities: {},
|
|
118
|
+
clientInfo: { name: "openclaw-remnic", version: "1.0.0" }
|
|
119
|
+
},
|
|
120
|
+
6e4
|
|
121
|
+
);
|
|
122
|
+
if (!result) {
|
|
123
|
+
this.cleanup({ killChild: true });
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
this.sendNotification("notifications/initialized");
|
|
127
|
+
this.initialized = true;
|
|
128
|
+
log.info("QMD mcp: stdio session initialized");
|
|
129
|
+
return true;
|
|
130
|
+
} catch (err) {
|
|
131
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
132
|
+
if (isTimeoutMessage(msg)) {
|
|
133
|
+
log.debug("QMD mcp: handshake timed out \u2014 process still loading, will retry later");
|
|
134
|
+
this.initialized = false;
|
|
135
|
+
} else {
|
|
136
|
+
log.debug(`QMD mcp: failed to start stdio session: ${err}`);
|
|
137
|
+
this.cleanup({ killChild: true });
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
140
|
+
} finally {
|
|
141
|
+
this.startPromise = null;
|
|
142
|
+
}
|
|
143
|
+
})();
|
|
144
|
+
return this.startPromise;
|
|
145
|
+
}
|
|
146
|
+
/** Call an MCP tool and return the parsed result. */
|
|
147
|
+
async callTool(name, args, timeoutMs = 3e4, signal) {
|
|
148
|
+
if (!this.child || this.child.killed || !this.initialized) {
|
|
149
|
+
throw new Error("QMD mcp process not running");
|
|
150
|
+
}
|
|
151
|
+
return this.sendRequest("tools/call", { name, arguments: args }, timeoutMs, signal);
|
|
152
|
+
}
|
|
153
|
+
/** Kill stdio process and clear state so the next probe can restart. */
|
|
154
|
+
invalidate() {
|
|
155
|
+
this.cleanup({ killChild: true });
|
|
156
|
+
}
|
|
157
|
+
/** Kill stdio process and wait briefly for the child handle to close. */
|
|
158
|
+
async close(timeoutMs = 1e3) {
|
|
159
|
+
const target = this.child;
|
|
160
|
+
if (!target) {
|
|
161
|
+
this.cleanup({ killChild: true });
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
let closed = false;
|
|
165
|
+
const closedPromise = new Promise((resolve) => {
|
|
166
|
+
target.once("close", () => {
|
|
167
|
+
closed = true;
|
|
168
|
+
resolve();
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
this.cleanup({ killChild: true });
|
|
172
|
+
await Promise.race([closedPromise, sleep(timeoutMs)]);
|
|
173
|
+
if (!closed) {
|
|
174
|
+
try {
|
|
175
|
+
target.kill("SIGKILL");
|
|
176
|
+
} catch {
|
|
177
|
+
}
|
|
178
|
+
await Promise.race([closedPromise, sleep(250)]);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
isActive() {
|
|
182
|
+
return this.child !== null && !this.child.killed && this.initialized;
|
|
183
|
+
}
|
|
184
|
+
/** True while the process is spawned but the MCP handshake has not yet completed. */
|
|
185
|
+
isLoading() {
|
|
186
|
+
return this.child !== null && !this.child.killed && !this.initialized;
|
|
187
|
+
}
|
|
188
|
+
sendRequest(method, params, timeoutMs, signal) {
|
|
189
|
+
return new Promise((resolve, reject) => {
|
|
190
|
+
throwIfAborted(signal, `QMD mcp ${method} aborted before request`);
|
|
191
|
+
if (!this.child || !this.child.stdin || this.child.killed) {
|
|
192
|
+
reject(new Error("QMD mcp process not available"));
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const id = nextJsonRpcId++;
|
|
196
|
+
let written = false;
|
|
197
|
+
const abandon = (reason) => {
|
|
198
|
+
if (!written || method !== "tools/call") return;
|
|
199
|
+
this.sendNotification("notifications/cancelled", { requestId: id, reason });
|
|
200
|
+
};
|
|
201
|
+
const timer = setTimeout(() => {
|
|
202
|
+
this.pendingRequests.delete(id);
|
|
203
|
+
cleanup();
|
|
204
|
+
const reason = `QMD mcp ${method} timed out after ${timeoutMs}ms`;
|
|
205
|
+
abandon(reason);
|
|
206
|
+
reject(new Error(reason));
|
|
207
|
+
}, timeoutMs);
|
|
208
|
+
const onAbort = () => {
|
|
209
|
+
clearTimeout(timer);
|
|
210
|
+
this.pendingRequests.delete(id);
|
|
211
|
+
cleanup();
|
|
212
|
+
abandon("client aborted");
|
|
213
|
+
reject(abortError(`QMD mcp ${method} aborted`));
|
|
214
|
+
};
|
|
215
|
+
const cleanup = () => {
|
|
216
|
+
signal?.removeEventListener("abort", onAbort);
|
|
217
|
+
};
|
|
218
|
+
this.pendingRequests.set(id, { resolve, reject, timer, cleanup });
|
|
219
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
220
|
+
const message = `${JSON.stringify({ jsonrpc: "2.0", id, method, params })}
|
|
221
|
+
`;
|
|
222
|
+
try {
|
|
223
|
+
this.child.stdin.write(message, (err) => {
|
|
224
|
+
if (!err) return;
|
|
225
|
+
written = false;
|
|
226
|
+
clearTimeout(timer);
|
|
227
|
+
this.pendingRequests.delete(id);
|
|
228
|
+
cleanup();
|
|
229
|
+
reject(new Error(`Failed to write to QMD mcp stdin: ${err.message}`));
|
|
230
|
+
});
|
|
231
|
+
written = true;
|
|
232
|
+
} catch (err) {
|
|
233
|
+
written = false;
|
|
234
|
+
clearTimeout(timer);
|
|
235
|
+
this.pendingRequests.delete(id);
|
|
236
|
+
cleanup();
|
|
237
|
+
const messageText = err instanceof Error ? err.message : String(err);
|
|
238
|
+
reject(new Error(`Failed to write to QMD mcp stdin: ${messageText}`));
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
sendNotification(method, params) {
|
|
243
|
+
if (!this.child || !this.child.stdin || this.child.killed) return;
|
|
244
|
+
if (this.child.stdin.destroyed) return;
|
|
245
|
+
const msg = { jsonrpc: "2.0", method };
|
|
246
|
+
if (params) msg.params = params;
|
|
247
|
+
try {
|
|
248
|
+
this.child.stdin.write(`${JSON.stringify(msg)}
|
|
249
|
+
`);
|
|
250
|
+
} catch {
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
handleStdoutData(data) {
|
|
254
|
+
this.buffer += data.toString();
|
|
255
|
+
let newlineIdx;
|
|
256
|
+
while ((newlineIdx = this.buffer.indexOf("\n")) !== -1) {
|
|
257
|
+
const line = this.buffer.slice(0, newlineIdx).trim();
|
|
258
|
+
this.buffer = this.buffer.slice(newlineIdx + 1);
|
|
259
|
+
if (!line) continue;
|
|
260
|
+
try {
|
|
261
|
+
const msg = JSON.parse(line);
|
|
262
|
+
this.handleMessage(msg);
|
|
263
|
+
} catch {
|
|
264
|
+
log.debug(`QMD mcp: unparseable stdout: ${sanitizeForLog(line, 200)}`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
handleMessage(msg) {
|
|
269
|
+
if (msg.id !== void 0 && msg.id !== null) {
|
|
270
|
+
const pending = this.pendingRequests.get(msg.id);
|
|
271
|
+
if (pending) {
|
|
272
|
+
clearTimeout(pending.timer);
|
|
273
|
+
this.pendingRequests.delete(msg.id);
|
|
274
|
+
pending.cleanup();
|
|
275
|
+
if (msg.error) {
|
|
276
|
+
pending.reject(new Error(JSON.stringify(msg.error)));
|
|
277
|
+
} else {
|
|
278
|
+
pending.resolve(msg.result);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
if (msg.method) {
|
|
284
|
+
log.debug(`QMD mcp notification: ${msg.method}`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
cleanup(opts) {
|
|
288
|
+
const target = opts?.child ?? this.child;
|
|
289
|
+
if (!target) return;
|
|
290
|
+
if (opts?.child && this.child !== opts.child) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
if (opts?.killChild && !target.killed) {
|
|
294
|
+
target.kill("SIGTERM");
|
|
295
|
+
}
|
|
296
|
+
this.initialized = false;
|
|
297
|
+
for (const [, pending] of this.pendingRequests) {
|
|
298
|
+
clearTimeout(pending.timer);
|
|
299
|
+
pending.cleanup();
|
|
300
|
+
pending.reject(new Error("QMD mcp process terminated"));
|
|
301
|
+
}
|
|
302
|
+
this.pendingRequests.clear();
|
|
303
|
+
this.startPromise = null;
|
|
304
|
+
this.child = null;
|
|
305
|
+
this.buffer = "";
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
export {
|
|
310
|
+
QmdDaemonSession
|
|
311
|
+
};
|
|
312
|
+
//# sourceMappingURL=chunk-IM2GO42H.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/qmd-daemon-session.ts"],"sourcesContent":["import { abortError, throwIfAborted } from \"./abort-error.js\";\nimport { log } from \"./logger.js\";\nimport { type CommandChildProcess, launchProcess } from \"./runtime/child-process.js\";\nimport { mergeEnv } from \"./runtime/env.js\";\n\nexport type QmdRuntimeEnv = Record<string, string | undefined>;\n\nexport type QmdDaemonSpawn = (\n command: string,\n args: string[],\n options?: Record<string, unknown>\n) => CommandChildProcess;\n\ntype PendingRequest = {\n resolve: (value: unknown) => void;\n reject: (reason: Error) => void;\n timer: ReturnType<typeof setTimeout>;\n cleanup: () => void;\n};\n\nlet nextJsonRpcId = 1;\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Drop C0 controls and one ANSI CSI sequence. Char scan on purpose:\n * the regex-safety ratchet flags new regular expressions on changed lines.\n */\nfunction sanitizeForLog(value: string, max = 200): string {\n let out = \"\";\n const cap = Math.min(value.length, max);\n for (let i = 0; i < cap; i++) {\n const code = value.charCodeAt(i);\n if (code === 0x1b && value.charCodeAt(i + 1) === 0x5b) {\n i += 2;\n while (i < cap) {\n const next = value.charCodeAt(i);\n const isLetter = (next >= 65 && next <= 90) || (next >= 97 && next <= 122);\n if (isLetter) break;\n i += 1;\n }\n continue;\n }\n if (code < 0x20 || code === 0x7f) continue;\n out += value[i] ?? \"\";\n }\n if (value.length > max) return `${out}…(truncated)`;\n return out;\n}\n\nfunction isTimeoutMessage(message: string): boolean {\n return message.toLowerCase().includes(\"timed out\");\n}\n\n/**\n * One `qmd mcp` child and its JSON-RPC session.\n *\n * Aborting or timing out a `tools/call` writes MCP `notifications/cancelled`\n * and rejects the caller immediately. The SDK drops the tool result once the\n * server's request controller is aborted, so this session does not wait for\n * a response after cancel. The initialize handshake is not cancelled: a slow\n * model load is supposed to stay alive for the next probe.\n *\n * The child is not killed on cancel. Reloading the rerank model costs longer\n * than the recall budget, and a slow query would then take the warm process\n * down on every timeout.\n */\nexport class QmdDaemonSession {\n private child: CommandChildProcess | null = null;\n private initialized = false;\n private buffer = \"\";\n private startPromise: Promise<boolean> | null = null;\n private pendingRequests = new Map<number, PendingRequest>();\n private readonly qmdPath: string;\n private readonly runtimeEnv: QmdRuntimeEnv;\n private readonly indexName?: string;\n private readonly spawn: QmdDaemonSpawn;\n\n constructor(\n qmdPath: string,\n runtimeEnv: QmdRuntimeEnv = {},\n indexName?: string,\n spawn: QmdDaemonSpawn = launchProcess\n ) {\n this.qmdPath = qmdPath;\n this.runtimeEnv = runtimeEnv;\n this.indexName = indexName?.trim() || undefined;\n this.spawn = spawn;\n }\n\n /** Spawn the qmd mcp child process and perform MCP handshake. */\n async start(): Promise<boolean> {\n if (this.child && !this.child.killed && this.initialized) {\n return true;\n }\n if (this.startPromise) {\n return this.startPromise;\n }\n this.startPromise = (async () => {\n const processAlreadyRunning = this.child != null && !this.child.killed;\n if (!processAlreadyRunning) {\n if (this.child) {\n this.cleanup({ killChild: true });\n }\n try {\n const args = this.indexName ? [\"--index\", this.indexName, \"mcp\"] : [\"mcp\"];\n const child = this.spawn(this.qmdPath, args, {\n env: mergeEnv({ NO_COLOR: \"1\", ...this.runtimeEnv }),\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n this.child = child;\n this.buffer = \"\";\n\n child.stdout?.on(\"data\", (data: Buffer) => {\n if (this.child !== child) return;\n this.handleStdoutData(data);\n });\n child.stderr?.on(\"data\", (data: Buffer) => {\n if (this.child !== child) return;\n const msg = data.toString().trim();\n if (msg) log.debug(`QMD mcp stderr: ${sanitizeForLog(msg)}`);\n });\n child.stdin?.on(\"error\", (err) => {\n log.debug(`QMD mcp stdin error (suppressed): ${err.message}`);\n });\n child.on(\"error\", (err) => {\n if (this.child !== child) return;\n log.debug(`QMD mcp process error: ${err.message}`);\n this.cleanup({ child });\n });\n child.on(\"close\", (code) => {\n if (this.child !== child) return;\n log.debug(`QMD mcp process exited (code ${code})`);\n this.cleanup({ child });\n });\n } catch (err) {\n log.debug(`QMD mcp: failed to spawn process: ${err}`);\n this.cleanup({ killChild: true });\n return false;\n }\n } else {\n log.debug(\"QMD mcp: process already running, retrying handshake\");\n }\n\n try {\n const result = await this.sendRequest(\n \"initialize\",\n {\n protocolVersion: \"2024-11-05\",\n capabilities: {},\n clientInfo: { name: \"openclaw-remnic\", version: \"1.0.0\" },\n },\n 60_000\n );\n if (!result) {\n this.cleanup({ killChild: true });\n return false;\n }\n this.sendNotification(\"notifications/initialized\");\n this.initialized = true;\n log.info(\"QMD mcp: stdio session initialized\");\n return true;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n if (isTimeoutMessage(msg)) {\n log.debug(\"QMD mcp: handshake timed out — process still loading, will retry later\");\n this.initialized = false;\n } else {\n log.debug(`QMD mcp: failed to start stdio session: ${err}`);\n this.cleanup({ killChild: true });\n }\n return false;\n } finally {\n this.startPromise = null;\n }\n })();\n return this.startPromise;\n }\n\n /** Call an MCP tool and return the parsed result. */\n async callTool(\n name: string,\n args: Record<string, unknown>,\n timeoutMs = 30_000,\n signal?: AbortSignal\n ): Promise<unknown> {\n if (!this.child || this.child.killed || !this.initialized) {\n throw new Error(\"QMD mcp process not running\");\n }\n return this.sendRequest(\"tools/call\", { name, arguments: args }, timeoutMs, signal);\n }\n\n /** Kill stdio process and clear state so the next probe can restart. */\n invalidate(): void {\n this.cleanup({ killChild: true });\n }\n\n /** Kill stdio process and wait briefly for the child handle to close. */\n async close(timeoutMs = 1_000): Promise<void> {\n const target = this.child;\n if (!target) {\n this.cleanup({ killChild: true });\n return;\n }\n\n let closed = false;\n const closedPromise = new Promise<void>((resolve) => {\n target.once(\"close\", () => {\n closed = true;\n resolve();\n });\n });\n\n this.cleanup({ killChild: true });\n await Promise.race([closedPromise, sleep(timeoutMs)]);\n if (!closed) {\n try {\n target.kill(\"SIGKILL\");\n } catch {\n // Ignore process-kill races during shutdown.\n }\n await Promise.race([closedPromise, sleep(250)]);\n }\n }\n\n isActive(): boolean {\n return this.child !== null && !this.child.killed && this.initialized;\n }\n\n /** True while the process is spawned but the MCP handshake has not yet completed. */\n isLoading(): boolean {\n return this.child !== null && !this.child.killed && !this.initialized;\n }\n\n private sendRequest(\n method: string,\n params: Record<string, unknown>,\n timeoutMs: number,\n signal?: AbortSignal\n ): Promise<unknown> {\n return new Promise((resolve, reject) => {\n throwIfAborted(signal, `QMD mcp ${method} aborted before request`);\n if (!this.child || !this.child.stdin || this.child.killed) {\n reject(new Error(\"QMD mcp process not available\"));\n return;\n }\n\n const id = nextJsonRpcId++;\n let written = false;\n const abandon = (reason: string) => {\n // Only a tool call that actually went out can be holding the worker.\n // initialize stays running across a slow model load.\n if (!written || method !== \"tools/call\") return;\n this.sendNotification(\"notifications/cancelled\", { requestId: id, reason });\n };\n const timer = setTimeout(() => {\n this.pendingRequests.delete(id);\n cleanup();\n const reason = `QMD mcp ${method} timed out after ${timeoutMs}ms`;\n abandon(reason);\n reject(new Error(reason));\n }, timeoutMs);\n const onAbort = () => {\n clearTimeout(timer);\n this.pendingRequests.delete(id);\n cleanup();\n abandon(\"client aborted\");\n reject(abortError(`QMD mcp ${method} aborted`));\n };\n const cleanup = () => {\n signal?.removeEventListener(\"abort\", onAbort);\n };\n\n this.pendingRequests.set(id, { resolve, reject, timer, cleanup });\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n const message = `${JSON.stringify({ jsonrpc: \"2.0\", id, method, params })}\\n`;\n try {\n this.child.stdin.write(message, (err) => {\n if (!err) return;\n written = false;\n clearTimeout(timer);\n this.pendingRequests.delete(id);\n cleanup();\n reject(new Error(`Failed to write to QMD mcp stdin: ${err.message}`));\n });\n written = true;\n } catch (err) {\n written = false;\n clearTimeout(timer);\n this.pendingRequests.delete(id);\n cleanup();\n const messageText = err instanceof Error ? err.message : String(err);\n reject(new Error(`Failed to write to QMD mcp stdin: ${messageText}`));\n }\n });\n }\n\n private sendNotification(method: string, params?: Record<string, unknown>): void {\n if (!this.child || !this.child.stdin || this.child.killed) return;\n if (this.child.stdin.destroyed) return;\n const msg: Record<string, unknown> = { jsonrpc: \"2.0\", method };\n if (params) msg.params = params;\n try {\n this.child.stdin.write(`${JSON.stringify(msg)}\\n`);\n } catch {\n // Ignore EPIPE / write-after-close\n }\n }\n\n private handleStdoutData(data: Buffer | string): void {\n this.buffer += data.toString();\n let newlineIdx: number;\n // Re-evaluated on every pass so a blank line cannot leave a stale index.\n while ((newlineIdx = this.buffer.indexOf(\"\\n\")) !== -1) {\n const line = this.buffer.slice(0, newlineIdx).trim();\n this.buffer = this.buffer.slice(newlineIdx + 1);\n if (!line) continue;\n try {\n const msg = JSON.parse(line) as Record<string, unknown>;\n this.handleMessage(msg);\n } catch {\n log.debug(`QMD mcp: unparseable stdout: ${sanitizeForLog(line, 200)}`);\n }\n }\n }\n\n private handleMessage(msg: Record<string, unknown>): void {\n if (msg.id !== undefined && msg.id !== null) {\n const pending = this.pendingRequests.get(msg.id as number);\n if (pending) {\n clearTimeout(pending.timer);\n this.pendingRequests.delete(msg.id as number);\n pending.cleanup();\n if (msg.error) {\n pending.reject(new Error(JSON.stringify(msg.error)));\n } else {\n pending.resolve(msg.result);\n }\n }\n return;\n }\n if (msg.method) {\n log.debug(`QMD mcp notification: ${msg.method}`);\n }\n }\n\n private cleanup(opts?: { killChild?: boolean; child?: CommandChildProcess | null }): void {\n const target = opts?.child ?? this.child;\n if (!target) return;\n if (opts?.child && this.child !== opts.child) {\n return;\n }\n if (opts?.killChild && !target.killed) {\n target.kill(\"SIGTERM\");\n }\n this.initialized = false;\n for (const [, pending] of this.pendingRequests) {\n clearTimeout(pending.timer);\n pending.cleanup();\n pending.reject(new Error(\"QMD mcp process terminated\"));\n }\n this.pendingRequests.clear();\n this.startPromise = null;\n this.child = null;\n this.buffer = \"\";\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LanceDbBackend
|
|
3
|
+
} from "./chunk-S7LWX2PQ.js";
|
|
1
4
|
import {
|
|
2
5
|
MeilisearchBackend
|
|
3
6
|
} from "./chunk-T2YX56QI.js";
|
|
@@ -13,9 +16,6 @@ import {
|
|
|
13
16
|
import {
|
|
14
17
|
EmbedHelper
|
|
15
18
|
} from "./chunk-5BUCKFRE.js";
|
|
16
|
-
import {
|
|
17
|
-
LanceDbBackend
|
|
18
|
-
} from "./chunk-S7LWX2PQ.js";
|
|
19
19
|
import {
|
|
20
20
|
createConversationIndexBackend
|
|
21
21
|
} from "./chunk-TFA6HPOA.js";
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
} from "./chunk-F4TWWUMP.js";
|
|
25
25
|
import {
|
|
26
26
|
QmdClient
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-IB63OVUB.js";
|
|
28
28
|
import {
|
|
29
29
|
resolveIndexingCapabilities,
|
|
30
30
|
resolvePipelineProcessingCapabilities,
|
|
@@ -179,4 +179,4 @@ export {
|
|
|
179
179
|
createConversationSearchBackend,
|
|
180
180
|
createConversationIndexRuntime
|
|
181
181
|
};
|
|
182
|
-
//# sourceMappingURL=chunk-
|
|
182
|
+
//# sourceMappingURL=chunk-JLUS56YZ.js.map
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
|
|
5
5
|
// src/config-qmd.ts
|
|
6
6
|
function parseQmdSupportedVersion(value) {
|
|
7
|
-
if (value === void 0 || value === null) return "2.
|
|
7
|
+
if (value === void 0 || value === null) return "2.8.3";
|
|
8
8
|
if (typeof value !== "string") {
|
|
9
9
|
throw new Error(`qmdSupportedVersion must be a semantic version string; got ${JSON.stringify(value)}`);
|
|
10
10
|
}
|
|
11
11
|
const normalized = value.trim();
|
|
12
12
|
if (!/^\d+\.\d+\.\d+$/.test(normalized)) {
|
|
13
13
|
throw new Error(
|
|
14
|
-
`qmdSupportedVersion must be a semantic version string like "2.
|
|
14
|
+
`qmdSupportedVersion must be a semantic version string like "2.8.3"; got ${JSON.stringify(value)}`
|
|
15
15
|
);
|
|
16
16
|
}
|
|
17
17
|
return normalized;
|
|
@@ -84,4 +84,4 @@ export {
|
|
|
84
84
|
parseQmdDaemonTimeoutMs,
|
|
85
85
|
parseQmdSubprocessStrategy
|
|
86
86
|
};
|
|
87
|
-
//# sourceMappingURL=chunk-
|
|
87
|
+
//# sourceMappingURL=chunk-KEGUXZNY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config-qmd.ts"],"sourcesContent":["import { coerceNumber } from \"./connectors/coerce.js\";\n\nexport function parseQmdSupportedVersion(value: unknown): string {\n if (value === undefined || value === null) return \"2.
|
|
1
|
+
{"version":3,"sources":["../src/config-qmd.ts"],"sourcesContent":["import { coerceNumber } from \"./connectors/coerce.js\";\n\nexport function parseQmdSupportedVersion(value: unknown): string {\n if (value === undefined || value === null) return \"2.8.3\";\n if (typeof value !== \"string\") {\n throw new Error(`qmdSupportedVersion must be a semantic version string; got ${JSON.stringify(value)}`);\n }\n const normalized = value.trim();\n if (!/^\\d+\\.\\d+\\.\\d+$/.test(normalized)) {\n throw new Error(\n `qmdSupportedVersion must be a semantic version string like \"2.8.3\"; got ${JSON.stringify(value)}`,\n );\n }\n return normalized;\n}\n\nexport function parseQmdGpuBackend(value: unknown): \"auto\" | \"metal\" | \"cuda\" | \"vulkan\" | \"false\" | undefined {\n if (value === undefined || value === null) return undefined;\n if (value === false) return \"false\";\n if (typeof value !== \"string\") {\n throw new Error(`qmdGpuBackend must be one of \"auto\", \"metal\", \"cuda\", \"vulkan\", or false; got ${JSON.stringify(value)}`);\n }\n const normalized = value.trim().toLowerCase();\n if (\n normalized === \"auto\" ||\n normalized === \"metal\" ||\n normalized === \"cuda\" ||\n normalized === \"vulkan\" ||\n normalized === \"false\"\n ) {\n return normalized;\n }\n throw new Error(`qmdGpuBackend must be one of \"auto\", \"metal\", \"cuda\", \"vulkan\", or false; got ${JSON.stringify(value)}`);\n}\n\nexport function parseQmdChunkStrategy(value: unknown): \"auto\" | \"regex\" {\n if (value === undefined || value === null) return \"auto\";\n if (typeof value !== \"string\") {\n throw new Error(`qmdChunkStrategy must be \"auto\" or \"regex\"; got ${JSON.stringify(value)}`);\n }\n const normalized = value.trim().toLowerCase();\n if (normalized === \"auto\" || normalized === \"regex\") return normalized;\n throw new Error(`qmdChunkStrategy must be \"auto\" or \"regex\"; got ${JSON.stringify(value)}`);\n}\n\n// Issue #1335. Default \"hybrid\" preserves the historical lex+vec+hyde daemon plan.\nexport function parseQmdSearchStrategy(value: unknown): \"hybrid\" | \"lex-vec\" | \"lex\" {\n if (value === undefined || value === null) return \"hybrid\";\n if (typeof value !== \"string\") {\n throw new Error(\n `qmdSearchStrategy must be one of \"hybrid\", \"lex-vec\", or \"lex\"; got ${JSON.stringify(value)}`,\n );\n }\n const normalized = value.trim().toLowerCase();\n if (normalized === \"hybrid\" || normalized === \"lex-vec\" || normalized === \"lex\") {\n return normalized;\n }\n throw new Error(\n `qmdSearchStrategy must be one of \"hybrid\", \"lex-vec\", or \"lex\"; got ${JSON.stringify(value)}`,\n );\n}\n\n// Issue #1335. Reject non-numeric / non-integer timeouts rather than silently\n// coercing them (gotcha #51), then clamp valid integers to the documented bounds.\nexport function parseQmdDaemonTimeoutMs(value: unknown): number {\n if (value === undefined || value === null) return 60_000;\n const coerced = coerceNumber(value);\n if (coerced === undefined || !Number.isInteger(coerced)) {\n throw new Error(\n `qmdDaemonTimeoutMs must be an integer number of milliseconds between 1000 and 120000; got ${JSON.stringify(value)}`,\n );\n }\n return Math.min(120_000, Math.max(1_000, coerced));\n}\n\n// Issue #1335. Default \"query\" keeps `qmd query` (LLM expansion + rerank) per gotcha #7.\nexport function parseQmdSubprocessStrategy(value: unknown): \"query\" | \"search\" {\n if (value === undefined || value === null) return \"query\";\n if (typeof value !== \"string\") {\n throw new Error(\n `qmdSubprocessStrategy must be one of \"query\" or \"search\"; got ${JSON.stringify(value)}`,\n );\n }\n const normalized = value.trim().toLowerCase();\n if (normalized === \"query\" || normalized === \"search\") return normalized;\n throw new Error(\n `qmdSubprocessStrategy must be one of \"query\" or \"search\"; got ${JSON.stringify(value)}`,\n );\n}\n"],"mappings":";;;;;AAEO,SAAS,yBAAyB,OAAwB;AAC/D,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI,MAAM,8DAA8D,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA,EACvG;AACA,QAAM,aAAa,MAAM,KAAK;AAC9B,MAAI,CAAC,kBAAkB,KAAK,UAAU,GAAG;AACvC,UAAM,IAAI;AAAA,MACR,2EAA2E,KAAK,UAAU,KAAK,CAAC;AAAA,IAClG;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,mBAAmB,OAA4E;AAC7G,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,MAAI,UAAU,MAAO,QAAO;AAC5B,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI,MAAM,iFAAiF,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA,EAC1H;AACA,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAC5C,MACE,eAAe,UACf,eAAe,WACf,eAAe,UACf,eAAe,YACf,eAAe,SACf;AACA,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,iFAAiF,KAAK,UAAU,KAAK,CAAC,EAAE;AAC1H;AAEO,SAAS,sBAAsB,OAAkC;AACtE,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI,MAAM,mDAAmD,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA,EAC5F;AACA,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAC5C,MAAI,eAAe,UAAU,eAAe,QAAS,QAAO;AAC5D,QAAM,IAAI,MAAM,mDAAmD,KAAK,UAAU,KAAK,CAAC,EAAE;AAC5F;AAGO,SAAS,uBAAuB,OAA8C;AACnF,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI;AAAA,MACR,uEAAuE,KAAK,UAAU,KAAK,CAAC;AAAA,IAC9F;AAAA,EACF;AACA,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAC5C,MAAI,eAAe,YAAY,eAAe,aAAa,eAAe,OAAO;AAC/E,WAAO;AAAA,EACT;AACA,QAAM,IAAI;AAAA,IACR,uEAAuE,KAAK,UAAU,KAAK,CAAC;AAAA,EAC9F;AACF;AAIO,SAAS,wBAAwB,OAAwB;AAC9D,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,QAAM,UAAU,aAAa,KAAK;AAClC,MAAI,YAAY,UAAa,CAAC,OAAO,UAAU,OAAO,GAAG;AACvD,UAAM,IAAI;AAAA,MACR,6FAA6F,KAAK,UAAU,KAAK,CAAC;AAAA,IACpH;AAAA,EACF;AACA,SAAO,KAAK,IAAI,MAAS,KAAK,IAAI,KAAO,OAAO,CAAC;AACnD;AAGO,SAAS,2BAA2B,OAAoC;AAC7E,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI;AAAA,MACR,iEAAiE,KAAK,UAAU,KAAK,CAAC;AAAA,IACxF;AAAA,EACF;AACA,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAC5C,MAAI,eAAe,WAAW,eAAe,SAAU,QAAO;AAC9D,QAAM,IAAI;AAAA,IACR,iEAAiE,KAAK,UAAU,KAAK,CAAC;AAAA,EACxF;AACF;","names":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
WHO_KNOWS_DEFAULT_LIMIT,
|
|
3
3
|
WHO_KNOWS_MAX_LIMIT,
|
|
4
4
|
validateWhoKnowsInput
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MJ737UIA.js";
|
|
6
6
|
|
|
7
7
|
// src/who-knows-cli.ts
|
|
8
8
|
function extractWhoKnowsRawArgs(rest) {
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
renderWhoKnowsText,
|
|
75
75
|
renderWhoKnows
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-KM2HQZR3.js.map
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
startLocationAutoSync
|
|
3
|
-
} from "./chunk-LXJZUNLX.js";
|
|
4
1
|
import {
|
|
5
2
|
ensureContradictionScanCron,
|
|
6
3
|
ensureDaySummaryCron,
|
|
@@ -10,16 +7,19 @@ import {
|
|
|
10
7
|
ensureProceduralMiningCron,
|
|
11
8
|
graphEdgeDecayCadenceToCronExpr
|
|
12
9
|
} from "./chunk-666A3MOW.js";
|
|
10
|
+
import {
|
|
11
|
+
startLocationAutoSync
|
|
12
|
+
} from "./chunk-QHHWJVVW.js";
|
|
13
13
|
import {
|
|
14
14
|
rebuildMemoryLifecycleLedger
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-FB6FQT4P.js";
|
|
16
16
|
import {
|
|
17
17
|
planNamespaceMaintenance,
|
|
18
18
|
runNamespaceMaintenanceBatchPlan
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-YY5FM5M7.js";
|
|
20
20
|
import {
|
|
21
21
|
rebuildMemoryProjection
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-QJWZJ7HL.js";
|
|
23
23
|
import {
|
|
24
24
|
DEFAULT_TIMELINE_CATEGORIES,
|
|
25
25
|
TIMELINE_RESERVED_IDLE,
|
|
@@ -2450,4 +2450,4 @@ export {
|
|
|
2450
2450
|
ActivitySyncScheduler,
|
|
2451
2451
|
MaintenanceScheduler
|
|
2452
2452
|
};
|
|
2453
|
-
//# sourceMappingURL=chunk-
|
|
2453
|
+
//# sourceMappingURL=chunk-LI3OM3NP.js.map
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from "./chunk-NHLLKEKK.js";
|
|
12
12
|
import {
|
|
13
13
|
parseConfig
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-BLHPADUX.js";
|
|
15
15
|
import {
|
|
16
16
|
resolveObjectiveStateStoreDir,
|
|
17
17
|
validateObjectiveStateSnapshot
|
|
@@ -268,4 +268,4 @@ export {
|
|
|
268
268
|
recordResumeBundle,
|
|
269
269
|
getResumeBundleStatus
|
|
270
270
|
};
|
|
271
|
-
//# sourceMappingURL=chunk-
|
|
271
|
+
//# sourceMappingURL=chunk-LQGX5TCI.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StorageManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HPEONBM3.js";
|
|
4
4
|
import {
|
|
5
5
|
keyring_exports,
|
|
6
6
|
secureStoreDir
|
|
@@ -412,4 +412,4 @@ export {
|
|
|
412
412
|
resolveNamespaceStorageRoot,
|
|
413
413
|
NamespaceStorageRouter
|
|
414
414
|
};
|
|
415
|
-
//# sourceMappingURL=chunk-
|
|
415
|
+
//# sourceMappingURL=chunk-LTDWZ2HC.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseEntityFile
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HPEONBM3.js";
|
|
4
4
|
import {
|
|
5
5
|
inferMemoryStatus
|
|
6
6
|
} from "./chunk-7RJUVTVF.js";
|
|
@@ -253,4 +253,4 @@ export {
|
|
|
253
253
|
WHO_KNOWS_MCP_TOOLS,
|
|
254
254
|
handleWhoKnowsHttpQuery
|
|
255
255
|
};
|
|
256
|
-
//# sourceMappingURL=chunk-
|
|
256
|
+
//# sourceMappingURL=chunk-MJ737UIA.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
raceRecallAbort,
|
|
3
3
|
throwIfRecallAborted
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PCO3P7WJ.js";
|
|
5
5
|
import {
|
|
6
6
|
emitExtractionLlmFailureError,
|
|
7
7
|
recordExtractionLlmFailure,
|
|
@@ -1093,4 +1093,4 @@ export {
|
|
|
1093
1093
|
ExtractionDeadlineError,
|
|
1094
1094
|
ExtractionRunCoordinator
|
|
1095
1095
|
};
|
|
1096
|
-
//# sourceMappingURL=chunk-
|
|
1096
|
+
//# sourceMappingURL=chunk-NLYOOGZ7.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
readNamespaceMaintenanceLastRanStatuses,
|
|
4
4
|
readNamespaceMaintenanceStatuses,
|
|
5
5
|
runNamespaceMaintenancePlan
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-YY5FM5M7.js";
|
|
7
7
|
import {
|
|
8
8
|
analyzeSessionIntegrity,
|
|
9
9
|
applySessionRepair,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-CMTINOFS.js";
|
|
15
15
|
import {
|
|
16
16
|
summarizeCorpusAndReplica
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-YX5F4V7H.js";
|
|
18
18
|
import {
|
|
19
19
|
readJudgeVerdictStats
|
|
20
20
|
} from "./chunk-OZKOPQCM.js";
|
|
@@ -38,17 +38,17 @@ import {
|
|
|
38
38
|
} from "./chunk-YBPYIAA5.js";
|
|
39
39
|
import {
|
|
40
40
|
parseConfig
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-BLHPADUX.js";
|
|
42
42
|
import {
|
|
43
43
|
readAggregateExtractionWatermark
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-SFDKLEIY.js";
|
|
45
45
|
import {
|
|
46
46
|
listMemoryGovernanceRuns,
|
|
47
47
|
readMemoryGovernanceRunArtifact
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-PXDEIJL5.js";
|
|
49
49
|
import {
|
|
50
50
|
listNamespaces
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-QPG72IPU.js";
|
|
52
52
|
import {
|
|
53
53
|
analyzeGraphHealth
|
|
54
54
|
} from "./chunk-2U3R3DDH.js";
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
} from "./chunk-AWD36R4D.js";
|
|
58
58
|
import {
|
|
59
59
|
StorageManager
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-HPEONBM3.js";
|
|
61
61
|
import {
|
|
62
62
|
lintWorkspaceFiles
|
|
63
63
|
} from "./chunk-DM2T26WE.js";
|
|
@@ -1683,4 +1683,4 @@ export {
|
|
|
1683
1683
|
runBenchmarkRecall,
|
|
1684
1684
|
runOperatorRepair
|
|
1685
1685
|
};
|
|
1686
|
-
//# sourceMappingURL=chunk-
|
|
1686
|
+
//# sourceMappingURL=chunk-NVZRIHW5.js.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from "./chunk-TBBDFYXW.js";
|
|
11
11
|
import {
|
|
12
12
|
parseQmdExplain
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-IB63OVUB.js";
|
|
14
14
|
import {
|
|
15
15
|
parseFlexibleIsoTimestamp
|
|
16
16
|
} from "./chunk-P7FMDTKL.js";
|
|
@@ -645,4 +645,4 @@ export {
|
|
|
645
645
|
appendMemoryToGraphContext,
|
|
646
646
|
resolvePersistedMemoryRelativePath
|
|
647
647
|
};
|
|
648
|
-
//# sourceMappingURL=chunk-
|
|
648
|
+
//# sourceMappingURL=chunk-PCO3P7WJ.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-TBBDFYXW.js";
|
|
4
4
|
import {
|
|
5
5
|
StorageManager
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HPEONBM3.js";
|
|
7
7
|
import {
|
|
8
8
|
bumpMemoryCorpusVersionForDir
|
|
9
9
|
} from "./chunk-M5GVCJSJ.js";
|
|
@@ -765,4 +765,4 @@ export {
|
|
|
765
765
|
listMemoryGovernanceRuns,
|
|
766
766
|
readMemoryGovernanceRunArtifact
|
|
767
767
|
};
|
|
768
|
-
//# sourceMappingURL=chunk-
|
|
768
|
+
//# sourceMappingURL=chunk-PXDEIJL5.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runLocationSync
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-S3BB34NI.js";
|
|
4
4
|
import {
|
|
5
5
|
log
|
|
6
6
|
} from "./chunk-3WCASNQZ.js";
|
|
@@ -58,4 +58,4 @@ export {
|
|
|
58
58
|
LOCATION_SYNC_DEFAULT_INTERVAL_MS,
|
|
59
59
|
startLocationAutoSync
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
61
|
+
//# sourceMappingURL=chunk-QHHWJVVW.js.map
|