chatlab-cli 0.26.3 → 0.27.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/README.md +10 -4
- package/dist/{chat-command-D37MMEJ7.mjs → chat-command-SKGPS3PG.mjs} +5 -5
- package/dist/{chunk-QMXNJRTT.mjs → chunk-3HOTLLFC.mjs} +112 -21
- package/dist/chunk-3HOTLLFC.mjs.map +1 -0
- package/dist/{chunk-VCN64OD6.mjs → chunk-6FXGC6HE.mjs} +2 -2
- package/dist/{chunk-GNGZHBKM.mjs → chunk-7LPVQR77.mjs} +42 -7
- package/dist/chunk-7LPVQR77.mjs.map +1 -0
- package/dist/{chunk-742TAKEP.mjs → chunk-FHLPXRDL.mjs} +2 -2
- package/dist/{chunk-VSOWNKPA.mjs → chunk-GFHSSCCR.mjs} +11 -1
- package/dist/{chunk-YPTJVTVJ.mjs → chunk-KCFVHVO4.mjs} +5102 -4217
- package/dist/chunk-KCFVHVO4.mjs.map +1 -0
- package/dist/{chunk-RMITK4IC.mjs → chunk-M6ABWESL.mjs} +466 -116
- package/dist/chunk-M6ABWESL.mjs.map +1 -0
- package/dist/{chunk-K5SGXTVJ.mjs → chunk-MJITS5CE.mjs} +16 -16
- package/dist/{chunk-D5MWER7N.mjs → chunk-UBJHT3BU.mjs} +2 -2
- package/dist/cli.mjs +4 -4
- package/dist/{http-6F6TYWCI.mjs → http-CPFUTIUB.mjs} +9 -9
- package/dist/{import-VYPOMSSA.mjs → import-UJXKIKYN.mjs} +5 -5
- package/dist/index.mjs +9 -9
- package/dist/{mcp-AR7L5FA3.mjs → mcp-SW4DTCWJ.mjs} +8 -8
- package/dist/onnxruntime_binding-6Q6HXASN.node +0 -0
- package/dist/onnxruntime_binding-EKZT2NRK.node +0 -0
- package/dist/onnxruntime_binding-P6S7V3CI.node +0 -0
- package/dist/onnxruntime_binding-PJNNIIUO.node +0 -0
- package/dist/onnxruntime_binding-UN6SPTQK.node +0 -0
- package/dist/{service-KZTHBDQ5.mjs → service-KGL3RAIA.mjs} +2 -2
- package/dist/{src-6S7JPKHX.mjs → src-M3MO3LEL.mjs} +11 -71
- package/dist/{stream-import-KZFC3XT2.mjs → stream-import-4VDJZHMY.mjs} +4 -4
- package/dist/transformers.node-PUMHAODN.mjs +42889 -0
- package/dist/transformers.node-PUMHAODN.mjs.map +1 -0
- package/dist/{update-checker-3N7HQEP2.mjs → update-checker-LGMTEKMT.mjs} +2 -2
- package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-C8mwzxDa.js +110 -0
- package/dist-web/assets/{MessageExportModal-CF6yaor7.js → MessageExportModal-DCB-mzf2.js} +1 -1
- package/dist-web/assets/{electron-DKVw61Ww.js → electron-DDUv0ohD.js} +1 -1
- package/dist-web/assets/{fetch-BC8jyJ_U.js → fetch-B3gsbY_U.js} +1 -1
- package/dist-web/assets/{fetch-BvVfWR-P.js → fetch-B9Oy0bcD.js} +1 -1
- package/dist-web/assets/{fetch-D2jNBqs8.js → fetch-Bry8iJpq.js} +1 -1
- package/dist-web/assets/{fetch-CUw-PUYP.js → fetch-C1aC5Fd1.js} +1 -1
- package/dist-web/assets/{fetch-DqEMAea3.js → fetch-C69hj3wS.js} +1 -1
- package/dist-web/assets/{fetch-CpYSD089.js → fetch-Ck4rGxkO.js} +1 -1
- package/dist-web/assets/{fetch-CPeSfqsU.js → fetch-Ckang-F8.js} +1 -1
- package/dist-web/assets/{fetch-BQlEQsqi.js → fetch-CwHncc6x.js} +1 -1
- package/dist-web/assets/{fetch-BMdgfBVS.js → fetch-D8Ng59an.js} +1 -1
- package/dist-web/assets/{fetch-Bh6HC-IR.js → fetch-DOtBAxUS.js} +1 -1
- package/dist-web/assets/index-B40SKtW8.js +173 -0
- package/dist-web/assets/{index-DqybGdJH.css → index-BX3tqfLz.css} +1 -1
- package/dist-web/assets/{index-BHQnAj6l.js → index-Bd9j73nw.js} +1 -1
- package/dist-web/assets/index-BfFj8Evo.js +64 -0
- package/dist-web/assets/index-C16V6EoP.js +11 -0
- package/dist-web/assets/{index-Qh0XLt3R.js → index-D-J8dY7w.js} +1 -1
- package/dist-web/assets/index-I3SWZjnW.css +1 -0
- package/dist-web/assets/index-YmzTgkb2.css +1 -0
- package/dist-web/assets/index-zAi37ZQ4.js +2 -0
- package/dist-web/assets/{web-Bx2TiHDk.js → web-DKFeBb_F.js} +1 -1
- package/dist-web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-GNGZHBKM.mjs.map +0 -1
- package/dist/chunk-QMXNJRTT.mjs.map +0 -1
- package/dist/chunk-RMITK4IC.mjs.map +0 -1
- package/dist/chunk-YPTJVTVJ.mjs.map +0 -1
- package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-BTdqmm0y.js +0 -107
- package/dist-web/assets/index-BwzuCu5R.js +0 -2
- package/dist-web/assets/index-CG746E15.js +0 -64
- package/dist-web/assets/index-CXoQ_U22.js +0 -173
- package/dist-web/assets/index-HgIuP1Td.css +0 -1
- package/dist-web/assets/index-R82N2_0b.css +0 -1
- package/dist-web/assets/index-wPAmuQZY.js +0 -11
- /package/dist/{chat-command-D37MMEJ7.mjs.map → chat-command-SKGPS3PG.mjs.map} +0 -0
- /package/dist/{chunk-VCN64OD6.mjs.map → chunk-6FXGC6HE.mjs.map} +0 -0
- /package/dist/{chunk-742TAKEP.mjs.map → chunk-FHLPXRDL.mjs.map} +0 -0
- /package/dist/{chunk-VSOWNKPA.mjs.map → chunk-GFHSSCCR.mjs.map} +0 -0
- /package/dist/{chunk-K5SGXTVJ.mjs.map → chunk-MJITS5CE.mjs.map} +0 -0
- /package/dist/{chunk-D5MWER7N.mjs.map → chunk-UBJHT3BU.mjs.map} +0 -0
- /package/dist/{http-6F6TYWCI.mjs.map → http-CPFUTIUB.mjs.map} +0 -0
- /package/dist/{import-VYPOMSSA.mjs.map → import-UJXKIKYN.mjs.map} +0 -0
- /package/dist/{mcp-AR7L5FA3.mjs.map → mcp-SW4DTCWJ.mjs.map} +0 -0
- /package/dist/{service-KZTHBDQ5.mjs.map → service-KGL3RAIA.mjs.map} +0 -0
- /package/dist/{src-6S7JPKHX.mjs.map → src-M3MO3LEL.mjs.map} +0 -0
- /package/dist/{stream-import-KZFC3XT2.mjs.map → stream-import-4VDJZHMY.mjs.map} +0 -0
- /package/dist/{update-checker-3N7HQEP2.mjs.map → update-checker-LGMTEKMT.mjs.map} +0 -0
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ English | [简体中文](./README.zh-CN.md)
|
|
|
14
14
|
|
|
15
15
|
ChatLab is an open-source desktop app for understanding your social conversations. It combines a flexible SQL engine with AI agents so you can explore patterns, ask better questions, and extract insights from chat data, all on your own machine.
|
|
16
16
|
|
|
17
|
-
Currently supported: **WhatsApp, LINE,
|
|
17
|
+
Currently supported: **WhatsApp, LINE, QQ, Discord, Instagram, Telegram, and iMessage**. Coming next: **Messenger and KakaoTalk**.
|
|
18
18
|
|
|
19
19
|
> New install? Start here: [Getting started](https://docs.chatlab.fun/usage/quick-start)
|
|
20
20
|
|
|
@@ -105,11 +105,17 @@ For complete contributor instructions, see the [Development Guide](https://docs.
|
|
|
105
105
|
# Install dependencies
|
|
106
106
|
pnpm install
|
|
107
107
|
|
|
108
|
-
#
|
|
108
|
+
# Start dev mode — prompts you to choose which app to launch
|
|
109
109
|
pnpm dev
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Or launch a specific target directly:
|
|
110
113
|
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
```bash
|
|
115
|
+
pnpm dev:desktop # Electron desktop app
|
|
116
|
+
pnpm dev:web # Web frontend + local server
|
|
117
|
+
pnpm dev:serve # CLI server only
|
|
118
|
+
pnpm docs:dev # Docs site
|
|
113
119
|
```
|
|
114
120
|
|
|
115
121
|
If Electron encounters exceptions during startup, you can try using `electron-fix`:
|
|
@@ -6,10 +6,10 @@ const __filename = __fileURLToPath(import.meta.url);
|
|
|
6
6
|
const __dirname = __pathDirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
createCliRunAgentStream
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-7LPVQR77.mjs";
|
|
10
|
+
import "./chunk-M6ABWESL.mjs";
|
|
11
|
+
import "./chunk-KCFVHVO4.mjs";
|
|
12
|
+
import "./chunk-GFHSSCCR.mjs";
|
|
13
13
|
|
|
14
14
|
// src/ai/chat-command.ts
|
|
15
15
|
import { createInterface } from "readline/promises";
|
|
@@ -301,4 +301,4 @@ export {
|
|
|
301
301
|
runChatCommand,
|
|
302
302
|
runChatTurn
|
|
303
303
|
};
|
|
304
|
-
//# sourceMappingURL=chat-command-
|
|
304
|
+
//# sourceMappingURL=chat-command-SKGPS3PG.mjs.map
|
|
@@ -4,34 +4,34 @@ import { fileURLToPath as __fileURLToPath } from 'url';
|
|
|
4
4
|
const require = __createRequire(import.meta.url);
|
|
5
5
|
const __filename = __fileURLToPath(import.meta.url);
|
|
6
6
|
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import {
|
|
8
|
+
closeServerAiLogger,
|
|
9
|
+
createCliRunAgentStream,
|
|
10
|
+
initServerAiLogger
|
|
11
|
+
} from "./chunk-7LPVQR77.mjs";
|
|
7
12
|
import {
|
|
8
13
|
importData,
|
|
9
14
|
parseFile
|
|
10
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-UBJHT3BU.mjs";
|
|
11
16
|
import {
|
|
12
17
|
analyzeIncrementalImport,
|
|
13
18
|
analyzeNewImport,
|
|
14
19
|
incrementalImport,
|
|
15
20
|
streamImport
|
|
16
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-6FXGC6HE.mjs";
|
|
22
|
+
import {
|
|
23
|
+
AGENT_TOOL_REGISTRY,
|
|
24
|
+
CoreDataProvider
|
|
25
|
+
} from "./chunk-M6ABWESL.mjs";
|
|
17
26
|
import {
|
|
18
27
|
assertCliDataDirCompatible
|
|
19
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-FHLPXRDL.mjs";
|
|
20
29
|
import {
|
|
21
30
|
getVersion
|
|
22
31
|
} from "./chunk-5ADKYYNA.mjs";
|
|
23
32
|
import {
|
|
24
33
|
resolveCliPath
|
|
25
34
|
} from "./chunk-FJ35V3TE.mjs";
|
|
26
|
-
import {
|
|
27
|
-
closeServerAiLogger,
|
|
28
|
-
createCliRunAgentStream,
|
|
29
|
-
initServerAiLogger
|
|
30
|
-
} from "./chunk-GNGZHBKM.mjs";
|
|
31
|
-
import {
|
|
32
|
-
AGENT_TOOL_REGISTRY,
|
|
33
|
-
CoreDataProvider
|
|
34
|
-
} from "./chunk-RMITK4IC.mjs";
|
|
35
35
|
import {
|
|
36
36
|
AIChatManager,
|
|
37
37
|
ALL_MIGRATIONS,
|
|
@@ -60,6 +60,7 @@ import {
|
|
|
60
60
|
createDatabaseManagerAdapter,
|
|
61
61
|
createJiebaNlpProvider,
|
|
62
62
|
createNodeDataDirSwitch,
|
|
63
|
+
createSemanticIndexService,
|
|
63
64
|
deleteDict,
|
|
64
65
|
detectAllFormats,
|
|
65
66
|
detectFormat,
|
|
@@ -135,7 +136,7 @@ import {
|
|
|
135
136
|
verifyCliDataPath,
|
|
136
137
|
writeAuthProfile,
|
|
137
138
|
writeConfigField
|
|
138
|
-
} from "./chunk-
|
|
139
|
+
} from "./chunk-KCFVHVO4.mjs";
|
|
139
140
|
|
|
140
141
|
// src/http/index.ts
|
|
141
142
|
import * as fs11 from "fs";
|
|
@@ -1401,17 +1402,21 @@ function registerAiToolRoutes(server2, ctx) {
|
|
|
1401
1402
|
if (!entry) {
|
|
1402
1403
|
return reply.code(404).send({ success: false, error: `Tool not found: ${toolName}` });
|
|
1403
1404
|
}
|
|
1404
|
-
const db = ctx.dbManager.open(sessionId);
|
|
1405
|
-
if (!db) {
|
|
1406
|
-
return reply.code(404).send({ success: false, error: `Session not found: ${sessionId}` });
|
|
1407
|
-
}
|
|
1408
1405
|
const abortController = new AbortController();
|
|
1409
1406
|
activeToolTests.set(testId, abortController);
|
|
1410
1407
|
try {
|
|
1408
|
+
if (ctx.executeAiTool) {
|
|
1409
|
+
return await ctx.executeAiTool({ testId, toolName, params, sessionId, abortSignal: abortController.signal });
|
|
1410
|
+
}
|
|
1411
|
+
const db = ctx.dbManager.open(sessionId);
|
|
1412
|
+
if (!db) {
|
|
1413
|
+
return reply.code(404).send({ success: false, error: `Session not found: ${sessionId}` });
|
|
1414
|
+
}
|
|
1411
1415
|
const execCtx = {
|
|
1412
1416
|
sessionId,
|
|
1413
1417
|
db,
|
|
1414
|
-
dataProvider: new CoreDataProvider(db)
|
|
1418
|
+
dataProvider: new CoreDataProvider(db),
|
|
1419
|
+
abortSignal: abortController.signal
|
|
1415
1420
|
};
|
|
1416
1421
|
const startTime = Date.now();
|
|
1417
1422
|
const result = await entry.handler(params, execCtx);
|
|
@@ -1612,6 +1617,60 @@ function registerAiSummaryRoutes(server2, ctx) {
|
|
|
1612
1617
|
});
|
|
1613
1618
|
}
|
|
1614
1619
|
|
|
1620
|
+
// ../../packages/http-routes/src/routes/web/ai-semantic-index.ts
|
|
1621
|
+
function registerSemanticIndexRoutes(server2, ctx) {
|
|
1622
|
+
const service = ctx.semanticIndexService;
|
|
1623
|
+
if (!service) return;
|
|
1624
|
+
server2.get("/_web/ai/semantic-index/config", async () => {
|
|
1625
|
+
return { config: service.getConfig(), apiKeySet: service.hasApiKey(), configured: service.isConfigured() };
|
|
1626
|
+
});
|
|
1627
|
+
server2.put(
|
|
1628
|
+
"/_web/ai/semantic-index/config",
|
|
1629
|
+
async (request) => {
|
|
1630
|
+
const config = service.setConfig(request.body.config, { apiKey: request.body.apiKey });
|
|
1631
|
+
return { config, apiKeySet: service.hasApiKey(), configured: service.isConfigured() };
|
|
1632
|
+
}
|
|
1633
|
+
);
|
|
1634
|
+
server2.get("/_web/ai/semantic-index/enabled", async () => {
|
|
1635
|
+
return { sessions: service.listEnabledStatuses() };
|
|
1636
|
+
});
|
|
1637
|
+
server2.get("/_web/ai/semantic-index/status", async (request) => {
|
|
1638
|
+
return { status: service.status(request.query.sessionId) };
|
|
1639
|
+
});
|
|
1640
|
+
server2.post("/_web/ai/semantic-index/status", async (request) => {
|
|
1641
|
+
return { sessions: service.statusForSessions(request.body.sessionIds ?? []) };
|
|
1642
|
+
});
|
|
1643
|
+
const sessionAction = (path12, action) => {
|
|
1644
|
+
server2.post(path12, async (request, reply) => {
|
|
1645
|
+
const { sessionId } = request.body;
|
|
1646
|
+
if (!sessionId) return reply.code(400).send({ error: "sessionId is required" });
|
|
1647
|
+
await action(sessionId);
|
|
1648
|
+
return { status: service.status(sessionId) };
|
|
1649
|
+
});
|
|
1650
|
+
};
|
|
1651
|
+
sessionAction("/_web/ai/semantic-index/enable", (id) => service.enable(id));
|
|
1652
|
+
sessionAction("/_web/ai/semantic-index/disable", (id) => service.disable(id));
|
|
1653
|
+
sessionAction("/_web/ai/semantic-index/build", (id) => service.build(id));
|
|
1654
|
+
sessionAction("/_web/ai/semantic-index/pause", (id) => service.pause(id));
|
|
1655
|
+
sessionAction("/_web/ai/semantic-index/cancel", (id) => service.cancel(id));
|
|
1656
|
+
sessionAction("/_web/ai/semantic-index/rebuild", (id) => service.rebuild(id));
|
|
1657
|
+
server2.post("/_web/ai/semantic-index/build-pending", async () => {
|
|
1658
|
+
service.buildAllPending();
|
|
1659
|
+
return { sessions: service.listEnabledStatuses() };
|
|
1660
|
+
});
|
|
1661
|
+
server2.post("/_web/ai/semantic-index/cleanup", async () => {
|
|
1662
|
+
return service.cleanupUnused();
|
|
1663
|
+
});
|
|
1664
|
+
server2.post(
|
|
1665
|
+
"/_web/ai/semantic-index/search",
|
|
1666
|
+
async (request, reply) => {
|
|
1667
|
+
const { sessionId, query, finalTopK } = request.body;
|
|
1668
|
+
if (!sessionId || !query) return reply.code(400).send({ error: "sessionId and query are required" });
|
|
1669
|
+
return service.search(sessionId, query, { finalTopK });
|
|
1670
|
+
}
|
|
1671
|
+
);
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1615
1674
|
// ../../packages/http-routes/src/routes/web/merge.ts
|
|
1616
1675
|
import * as fs3 from "fs";
|
|
1617
1676
|
import * as os from "os";
|
|
@@ -2068,6 +2127,7 @@ function registerSharedRoutes(server2, ctx, options) {
|
|
|
2068
2127
|
registerAiToolRoutes(server2, resolvedCtx);
|
|
2069
2128
|
registerAiChatRoutes(server2, resolvedCtx);
|
|
2070
2129
|
registerAiSummaryRoutes(server2, resolvedCtx);
|
|
2130
|
+
registerSemanticIndexRoutes(server2, resolvedCtx);
|
|
2071
2131
|
registerMergeRoutes(server2, resolvedCtx);
|
|
2072
2132
|
registerCacheRoutes(server2, resolvedCtx);
|
|
2073
2133
|
}
|
|
@@ -2532,6 +2592,7 @@ function registerWebRoutes(server2, dbManager2, options) {
|
|
|
2532
2592
|
getSystemDir: () => path8.join(os3.homedir(), ".chatlab"),
|
|
2533
2593
|
getUserDataDir: () => path8.join(os3.homedir(), ".chatlab", "data"),
|
|
2534
2594
|
getDatabaseDir: () => path8.join(os3.homedir(), ".chatlab", "data", "databases"),
|
|
2595
|
+
getVectorDir: () => path8.join(os3.homedir(), ".chatlab", "data", "vector"),
|
|
2535
2596
|
getAiDataDir: () => path8.join(os3.homedir(), ".chatlab", "ai"),
|
|
2536
2597
|
getSettingsDir: () => path8.join(os3.homedir(), ".chatlab", "settings"),
|
|
2537
2598
|
getCacheDir: () => path8.join(os3.homedir(), ".chatlab", "cache"),
|
|
@@ -2542,13 +2603,28 @@ function registerWebRoutes(server2, dbManager2, options) {
|
|
|
2542
2603
|
const resolvedPathProvider = options?.pathProvider ?? fallbackPathProvider;
|
|
2543
2604
|
const ai = options?.aiContext;
|
|
2544
2605
|
const cliStreamImport = async (dm, filePath) => {
|
|
2545
|
-
const { streamImport: streamImport2 } = await import("./stream-import-
|
|
2606
|
+
const { streamImport: streamImport2 } = await import("./stream-import-4VDJZHMY.mjs");
|
|
2546
2607
|
const result = await streamImport2(dm, filePath);
|
|
2547
2608
|
if (!result.sessionId) throw new Error("Import succeeded but no sessionId returned");
|
|
2548
2609
|
return { sessionId: result.sessionId };
|
|
2549
2610
|
};
|
|
2550
2611
|
const defaultUserDataDir = getDefaultNodeUserDataDir();
|
|
2551
2612
|
const isCustom = path8.resolve(resolvedPathProvider.getUserDataDir()) !== path8.resolve(defaultUserDataDir);
|
|
2613
|
+
let semanticIndexService = options?.semanticIndexService;
|
|
2614
|
+
if (!semanticIndexService) {
|
|
2615
|
+
try {
|
|
2616
|
+
semanticIndexService = createSemanticIndexService({
|
|
2617
|
+
pathProvider: resolvedPathProvider,
|
|
2618
|
+
sessionAdapter: adapter,
|
|
2619
|
+
nativeBinding: options?.nativeBinding
|
|
2620
|
+
});
|
|
2621
|
+
semanticIndexService.recover();
|
|
2622
|
+
server2.addHook("onClose", async () => semanticIndexService?.close());
|
|
2623
|
+
} catch (err) {
|
|
2624
|
+
console.warn("[semantic-index] service unavailable:", err instanceof Error ? err.message : String(err));
|
|
2625
|
+
semanticIndexService = void 0;
|
|
2626
|
+
}
|
|
2627
|
+
}
|
|
2552
2628
|
registerSharedRoutes(
|
|
2553
2629
|
server2,
|
|
2554
2630
|
{
|
|
@@ -2557,6 +2633,7 @@ function registerWebRoutes(server2, dbManager2, options) {
|
|
|
2557
2633
|
pathProvider: resolvedPathProvider,
|
|
2558
2634
|
getVersion,
|
|
2559
2635
|
nativeBinding: options?.nativeBinding,
|
|
2636
|
+
semanticIndexService,
|
|
2560
2637
|
openDirectory: openDirectoryPath,
|
|
2561
2638
|
showInFolder: showPathInFolder,
|
|
2562
2639
|
downloadsDir: resolvedPathProvider.getDownloadsDir(),
|
|
@@ -3666,9 +3743,23 @@ async function startHttpServer(options) {
|
|
|
3666
3743
|
limits: { fileSize: 1024 * 1024 * 1024 }
|
|
3667
3744
|
// 1GB
|
|
3668
3745
|
});
|
|
3746
|
+
let semanticIndexService;
|
|
3747
|
+
try {
|
|
3748
|
+
semanticIndexService = createSemanticIndexService({
|
|
3749
|
+
pathProvider,
|
|
3750
|
+
sessionAdapter: createDatabaseManagerAdapter(dbManager),
|
|
3751
|
+
nativeBinding
|
|
3752
|
+
});
|
|
3753
|
+
semanticIndexService.recover();
|
|
3754
|
+
server.addHook("onClose", async () => semanticIndexService?.close());
|
|
3755
|
+
} catch (err) {
|
|
3756
|
+
console.warn("[semantic-index] service unavailable:", err instanceof Error ? err.message : String(err));
|
|
3757
|
+
semanticIndexService = void 0;
|
|
3758
|
+
}
|
|
3669
3759
|
registerWebRoutes(server, dbManager, {
|
|
3670
3760
|
pathProvider,
|
|
3671
3761
|
nativeBinding,
|
|
3762
|
+
semanticIndexService,
|
|
3672
3763
|
aiContext: {
|
|
3673
3764
|
aiDataDir,
|
|
3674
3765
|
aiChatManager,
|
|
@@ -3677,7 +3768,7 @@ async function startHttpServer(options) {
|
|
|
3677
3768
|
llmConfigStore,
|
|
3678
3769
|
customProviderStore: new CustomProviderStore(createFileConfigStorage(aiDataDir)),
|
|
3679
3770
|
customModelStore: new CustomModelStore(createFileConfigStorage(aiDataDir)),
|
|
3680
|
-
runAgentStream: createCliRunAgentStream(dbManager, aiChatManager)
|
|
3771
|
+
runAgentStream: createCliRunAgentStream(dbManager, aiChatManager, semanticIndexService)
|
|
3681
3772
|
}
|
|
3682
3773
|
});
|
|
3683
3774
|
initSync(server, dbManager, pathProvider, { port, host, token });
|
|
@@ -3722,4 +3813,4 @@ export {
|
|
|
3722
3813
|
startHttpServer,
|
|
3723
3814
|
stopHttpServer
|
|
3724
3815
|
};
|
|
3725
|
-
//# sourceMappingURL=chunk-
|
|
3816
|
+
//# sourceMappingURL=chunk-3HOTLLFC.mjs.map
|