chatlab-cli 0.28.0 → 0.28.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/{chat-command-7WL5NMZ6.mjs → chat-command-ISJ2DC7R.mjs} +5 -5
- package/dist/{chunk-VASK54KT.mjs → chunk-3QBVO4J7.mjs} +2 -2
- package/dist/chunk-5FGB42EQ.mjs +7 -0
- package/dist/{chunk-YQ2FJGBT.mjs → chunk-AB6TAXTQ.mjs} +83 -46
- package/dist/chunk-AB6TAXTQ.mjs.map +1 -0
- package/dist/{chunk-XNU5X7EV.mjs → chunk-ERAAWLEF.mjs} +3 -3
- package/dist/{chunk-GFRG7TZQ.mjs → chunk-GHTGFM6O.mjs} +14 -14
- package/dist/{chunk-WGS33EWH.mjs → chunk-NJB2NNB2.mjs} +2 -2
- package/dist/{chunk-ZSFVX6FM.mjs → chunk-T7IETWHN.mjs} +6 -22
- package/dist/chunk-T7IETWHN.mjs.map +1 -0
- package/dist/chunk-YBS3YQB6.mjs +1336 -0
- package/dist/chunk-YBS3YQB6.mjs.map +1 -0
- package/dist/{chunk-55WR6WKW.mjs → chunk-ZVDOFWL7.mjs} +13327 -4696
- package/dist/chunk-ZVDOFWL7.mjs.map +1 -0
- package/dist/cli.mjs +4 -4
- package/dist/{http-C2FBHNZG.mjs → http-MBILV37U.mjs} +9 -9
- package/dist/{import-ED6JCPSJ.mjs → import-EYV3GXHE.mjs} +5 -12
- package/dist/index.mjs +9 -9
- package/dist/{mcp-5JIBER4M.mjs → mcp-H55AEXU5.mjs} +5 -5
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-WBNM42SL.mjs → src-36ZIR65K.mjs} +30 -28
- package/dist/{stream-import-37U3SROO.mjs → stream-import-YZMZ56B5.mjs} +4 -4
- package/dist/stream-import-YZMZ56B5.mjs.map +1 -0
- package/dist/undici-ZSXBT7EA.mjs +18389 -0
- package/dist/undici-ZSXBT7EA.mjs.map +1 -0
- package/dist/{worker-runtime-6DGYL4TF.mjs → worker-runtime-YDYS2C6T.mjs} +9 -5
- package/dist/worker-runtime-YDYS2C6T.mjs.map +1 -0
- package/dist-web/assets/{DebugToolsPanel.vue_vue_type_script_setup_true_lang-CCz0Syxo.js → DebugToolsPanel.vue_vue_type_script_setup_true_lang-Do3x4aL3.js} +5 -5
- package/dist-web/assets/{MessageExportModal-Dd6R-cX_.js → MessageExportModal-rijqUusq.js} +1 -1
- package/dist-web/assets/{electron-DjminAKK.js → electron-DWDCqx_d.js} +1 -1
- package/dist-web/assets/{fetch-B_kLRm6-.js → fetch-29ZBtGV0.js} +1 -1
- package/dist-web/assets/{fetch-DFCYOQe5.js → fetch-BAxKmbKF.js} +1 -1
- package/dist-web/assets/{fetch-srCJzcWc.js → fetch-BYczbT4C.js} +1 -1
- package/dist-web/assets/{fetch-DOhCQ5J8.js → fetch-BcxrU2mr.js} +1 -1
- package/dist-web/assets/{fetch-DV8A1dGB.js → fetch-Bh1fo3Df.js} +1 -1
- package/dist-web/assets/{fetch-Wad5mWVH.js → fetch-C3yhWO2S.js} +1 -1
- package/dist-web/assets/{fetch-CURbMNJV.js → fetch-Da_TBxrX.js} +1 -1
- package/dist-web/assets/{fetch-uM3erGZm.js → fetch-DyD8wDhb.js} +1 -1
- package/dist-web/assets/{fetch-Cle6QKmL.js → fetch-TCeykOkO.js} +1 -1
- package/dist-web/assets/{fetch-r83wdzHy.js → fetch-tIIVdXSv.js} +1 -1
- package/dist-web/assets/index-BzjLqlW_.js +173 -0
- package/dist-web/assets/{index-BpszRZ8V.js → index-C74qEDFh.js} +3 -3
- package/dist-web/assets/index-CM6xNPFp.css +1 -0
- package/dist-web/assets/index-CgK2LLIF.js +12 -0
- package/dist-web/assets/{index-hOsKRsp6.js → index-CjkOvM3N.js} +2 -2
- package/dist-web/assets/{index-BIvLzdwg.js → index-Dno7CADA.js} +1 -1
- package/dist-web/assets/{index-tkbEq8av.js → index-fbWrQpgH.js} +1 -1
- package/dist-web/assets/{web-D27K6zSX.js → web-H3XLx159.js} +1 -1
- package/dist-web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-55WR6WKW.mjs.map +0 -1
- package/dist/chunk-GPF34WXV.mjs +0 -9573
- package/dist/chunk-GPF34WXV.mjs.map +0 -1
- package/dist/chunk-YQ2FJGBT.mjs.map +0 -1
- package/dist/chunk-YZDEZ6UI.mjs +0 -389
- package/dist/chunk-YZDEZ6UI.mjs.map +0 -1
- package/dist/chunk-ZSFVX6FM.mjs.map +0 -1
- package/dist/worker-runtime-6DGYL4TF.mjs.map +0 -1
- package/dist-web/assets/index-7E5GSvR2.css +0 -1
- package/dist-web/assets/index-BCRHSc1k.js +0 -173
- package/dist-web/assets/index-D5UgZUpS.js +0 -12
- /package/dist/{chat-command-7WL5NMZ6.mjs.map → chat-command-ISJ2DC7R.mjs.map} +0 -0
- /package/dist/{chunk-VASK54KT.mjs.map → chunk-3QBVO4J7.mjs.map} +0 -0
- /package/dist/{http-C2FBHNZG.mjs.map → chunk-5FGB42EQ.mjs.map} +0 -0
- /package/dist/{chunk-XNU5X7EV.mjs.map → chunk-ERAAWLEF.mjs.map} +0 -0
- /package/dist/{chunk-GFRG7TZQ.mjs.map → chunk-GHTGFM6O.mjs.map} +0 -0
- /package/dist/{chunk-WGS33EWH.mjs.map → chunk-NJB2NNB2.mjs.map} +0 -0
- /package/dist/{import-ED6JCPSJ.mjs.map → http-MBILV37U.mjs.map} +0 -0
- /package/dist/{src-WBNM42SL.mjs.map → import-EYV3GXHE.mjs.map} +0 -0
- /package/dist/{mcp-5JIBER4M.mjs.map → mcp-H55AEXU5.mjs.map} +0 -0
- /package/dist/{stream-import-37U3SROO.mjs.map → src-36ZIR65K.mjs.map} +0 -0
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
AGENT_TOOL_REGISTRY,
|
|
9
9
|
CoreDataProvider,
|
|
10
10
|
SEMANTIC_SEARCH_TOOL_NAME
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-3QBVO4J7.mjs";
|
|
12
12
|
import {
|
|
13
13
|
AgentEventHandler,
|
|
14
14
|
AiLogger,
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
runAgentCore,
|
|
48
48
|
shouldUseChartCapabilityForMessage,
|
|
49
49
|
wrapWithChartSchemaGate
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-ZVDOFWL7.mjs";
|
|
51
51
|
|
|
52
52
|
// src/ai/logger.ts
|
|
53
53
|
var logger = null;
|
|
@@ -582,4 +582,4 @@ export {
|
|
|
582
582
|
closeServerAiLogger,
|
|
583
583
|
createCliRunAgentStream
|
|
584
584
|
};
|
|
585
|
-
//# sourceMappingURL=chunk-
|
|
585
|
+
//# sourceMappingURL=chunk-ERAAWLEF.mjs.map
|
|
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
|
|
|
6
6
|
const __dirname = __pathDirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
assertCliDataDirCompatible
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-NJB2NNB2.mjs";
|
|
10
10
|
import {
|
|
11
11
|
getVersion
|
|
12
12
|
} from "./chunk-5ADKYYNA.mjs";
|
|
@@ -15,26 +15,26 @@ import {
|
|
|
15
15
|
} from "./chunk-FJ35V3TE.mjs";
|
|
16
16
|
import {
|
|
17
17
|
NodePathProvider,
|
|
18
|
-
appLogger,
|
|
19
18
|
applyPendingNodeDataDirMigrationIfNeeded,
|
|
20
19
|
getSystemLogsDir,
|
|
21
|
-
hasPendingElectronDataWarning
|
|
22
|
-
|
|
23
|
-
} from "./chunk-GPF34WXV.mjs";
|
|
20
|
+
hasPendingElectronDataWarning
|
|
21
|
+
} from "./chunk-YBS3YQB6.mjs";
|
|
24
22
|
import {
|
|
25
23
|
AIChatManager,
|
|
26
24
|
DEFAULT_API_PORT,
|
|
27
25
|
DatabaseManager,
|
|
26
|
+
appLogger,
|
|
28
27
|
executeReadonlySql,
|
|
29
28
|
getConfigPath,
|
|
30
29
|
getMemberActivity,
|
|
31
30
|
getMembers,
|
|
32
31
|
getSessionMeta,
|
|
33
32
|
getSessionOverview,
|
|
33
|
+
initAppLogger,
|
|
34
34
|
loadConfig,
|
|
35
35
|
searchMessagesLike,
|
|
36
36
|
verifyCliDataPath
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-ZVDOFWL7.mjs";
|
|
38
38
|
|
|
39
39
|
// src/cli.ts
|
|
40
40
|
import * as fs from "fs";
|
|
@@ -228,7 +228,7 @@ program.command("import <file>").description("Import a chat history file (14+ fo
|
|
|
228
228
|
console.error(`File not found: ${file}`);
|
|
229
229
|
process.exit(1);
|
|
230
230
|
}
|
|
231
|
-
const { streamImport, detectFormat } = await import("./import-
|
|
231
|
+
const { streamImport, detectFormat } = await import("./import-EYV3GXHE.mjs");
|
|
232
232
|
const { dbManager, pathProvider } = initRuntime();
|
|
233
233
|
const nativeBinding = resolveNativeBinding();
|
|
234
234
|
const format = detectFormat(file);
|
|
@@ -256,7 +256,7 @@ Import succeeded!`);
|
|
|
256
256
|
console.log(` Messages skipped: ${result.diagnostics?.messagesSkipped ?? 0}`);
|
|
257
257
|
if (result.sessionId) {
|
|
258
258
|
try {
|
|
259
|
-
const { PreferencesManager, createDatabaseManagerAdapter, ownerProfileService } = await import("./src-
|
|
259
|
+
const { PreferencesManager, createDatabaseManagerAdapter, ownerProfileService } = await import("./src-36ZIR65K.mjs");
|
|
260
260
|
const applied = ownerProfileService.tryApplyOwnerProfile(
|
|
261
261
|
createDatabaseManagerAdapter(dbManager),
|
|
262
262
|
new PreferencesManager(pathProvider.getSystemDir()),
|
|
@@ -285,7 +285,7 @@ Import error: ${err instanceof Error ? err.message : err}`);
|
|
|
285
285
|
}
|
|
286
286
|
});
|
|
287
287
|
program.command("formats").description("List all supported chat history formats").action(async () => {
|
|
288
|
-
const { getSupportedFormats } = await import("./import-
|
|
288
|
+
const { getSupportedFormats } = await import("./import-EYV3GXHE.mjs");
|
|
289
289
|
const formats = getSupportedFormats();
|
|
290
290
|
console.log(`${formats.length} supported format(s):
|
|
291
291
|
`);
|
|
@@ -294,11 +294,11 @@ program.command("formats").description("List all supported chat history formats"
|
|
|
294
294
|
}
|
|
295
295
|
});
|
|
296
296
|
program.command("mcp").description("Start MCP Server (stdio transport, for ClaudeCode / Cursor / AI agents)").action(async () => {
|
|
297
|
-
const { startCliMcpServer } = await import("./mcp-
|
|
297
|
+
const { startCliMcpServer } = await import("./mcp-H55AEXU5.mjs");
|
|
298
298
|
await startCliMcpServer();
|
|
299
299
|
});
|
|
300
300
|
program.command("chat").description("Ask ChatLab AI about an imported chat session").option("--session-id <id>", "Source chat session ID").option("--ai-chat-id <id>", "Existing AI chat ID to continue").option("-q, --question <text>", "Question to ask").option("--json", "Output structured JSON").option("--include-events", "Include all agent stream chunks in JSON output").option("--no-stream", "Disable streaming output").option("--locale <locale>", "AI response locale", "zh-CN").action(async (options) => {
|
|
301
|
-
const { runChatCommand } = await import("./chat-command-
|
|
301
|
+
const { runChatCommand } = await import("./chat-command-ISJ2DC7R.mjs");
|
|
302
302
|
const { dbManager, pathProvider } = initRuntime();
|
|
303
303
|
const aiChatManager = new AIChatManager(pathProvider.getAiDataDir(), { nativeBinding: resolveNativeBinding() });
|
|
304
304
|
try {
|
|
@@ -334,7 +334,7 @@ program.command("start").description("Start ChatLab (HTTP API + Web UI)").option
|
|
|
334
334
|
});
|
|
335
335
|
return;
|
|
336
336
|
}
|
|
337
|
-
const { startHttpServer } = await import("./http-
|
|
337
|
+
const { startHttpServer } = await import("./http-MBILV37U.mjs");
|
|
338
338
|
const port = parseInt(options.port, 10);
|
|
339
339
|
let webRoot;
|
|
340
340
|
if (!options.headless) {
|
|
@@ -381,7 +381,7 @@ Press Ctrl+C to stop.
|
|
|
381
381
|
}
|
|
382
382
|
const shutdown = async () => {
|
|
383
383
|
console.log("\nShutting down...");
|
|
384
|
-
const { stopHttpServer } = await import("./http-
|
|
384
|
+
const { stopHttpServer } = await import("./http-MBILV37U.mjs");
|
|
385
385
|
await stopHttpServer();
|
|
386
386
|
process.exit(0);
|
|
387
387
|
};
|
|
@@ -537,4 +537,4 @@ if (isDirectRun) {
|
|
|
537
537
|
export {
|
|
538
538
|
run
|
|
539
539
|
};
|
|
540
|
-
//# sourceMappingURL=chunk-
|
|
540
|
+
//# sourceMappingURL=chunk-GHTGFM6O.mjs.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
DataDirCompatibilityError,
|
|
12
12
|
assertDataDirCompatible
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-ZVDOFWL7.mjs";
|
|
14
14
|
|
|
15
15
|
// src/runtime-compat.ts
|
|
16
16
|
function assertCliDataDirCompatible(pathProvider, kind, options) {
|
|
@@ -37,4 +37,4 @@ function formatCliDataDirCompatibilityError(error, runtime) {
|
|
|
37
37
|
export {
|
|
38
38
|
assertCliDataDirCompatible
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
40
|
+
//# sourceMappingURL=chunk-NJB2NNB2.mjs.map
|
|
@@ -5,16 +5,12 @@ const require = __createRequire(import.meta.url);
|
|
|
5
5
|
const __filename = __fileURLToPath(import.meta.url);
|
|
6
6
|
const __dirname = __pathDirname(__filename);
|
|
7
7
|
import {
|
|
8
|
+
DataDirCompatibilityError,
|
|
8
9
|
analyzeIncrementalImport,
|
|
9
10
|
analyzeNewImport,
|
|
10
11
|
incrementalImport,
|
|
11
12
|
streamingImport
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import {
|
|
14
|
-
DataDirCompatibilityError,
|
|
15
|
-
generateIncrementalSessionIndex,
|
|
16
|
-
generateSessionIndex
|
|
17
|
-
} from "./chunk-55WR6WKW.mjs";
|
|
13
|
+
} from "./chunk-ZVDOFWL7.mjs";
|
|
18
14
|
|
|
19
15
|
// src/import/stream-import.ts
|
|
20
16
|
import * as crypto from "crypto";
|
|
@@ -33,12 +29,6 @@ function buildStreamImportDeps(dbManager, onProgress) {
|
|
|
33
29
|
},
|
|
34
30
|
onProgress: onProgress ?? (() => {
|
|
35
31
|
}),
|
|
36
|
-
postImportHook(db) {
|
|
37
|
-
try {
|
|
38
|
-
generateSessionIndex(db);
|
|
39
|
-
} catch {
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
32
|
generateSessionId
|
|
43
33
|
};
|
|
44
34
|
}
|
|
@@ -46,7 +36,7 @@ function deleteSessionDatabase(dbManager, sessionId) {
|
|
|
46
36
|
dbManager.deleteSessionDatabaseFiles(sessionId);
|
|
47
37
|
}
|
|
48
38
|
async function streamImport(dbManager, filePath, options) {
|
|
49
|
-
const { formatId, chatIndex, onProgress } = options || {};
|
|
39
|
+
const { formatId, chatIndex, onProgress, sessionId } = options || {};
|
|
50
40
|
const formatOptions = {};
|
|
51
41
|
if (formatId) formatOptions.formatId = formatId;
|
|
52
42
|
if (chatIndex !== void 0) formatOptions.chatIndex = chatIndex;
|
|
@@ -87,7 +77,7 @@ async function streamImport(dbManager, filePath, options) {
|
|
|
87
77
|
} : () => {
|
|
88
78
|
};
|
|
89
79
|
const deps = buildStreamImportDeps(dbManager, progressAdapter);
|
|
90
|
-
const result = await streamingImport(filePath, deps, formatOptions);
|
|
80
|
+
const result = await streamingImport(filePath, deps, formatOptions, sessionId);
|
|
91
81
|
if (!result.success || !result.sessionId) return result;
|
|
92
82
|
try {
|
|
93
83
|
dbManager.raiseCurrentChatDbCompatibilityGate();
|
|
@@ -112,13 +102,7 @@ function buildIncrementalDeps(dbManager, onProgress, onCompatibilityError) {
|
|
|
112
102
|
}
|
|
113
103
|
},
|
|
114
104
|
onProgress: onProgress ?? (() => {
|
|
115
|
-
})
|
|
116
|
-
postImportHook(db) {
|
|
117
|
-
try {
|
|
118
|
-
generateIncrementalSessionIndex(db);
|
|
119
|
-
} catch {
|
|
120
|
-
}
|
|
121
|
-
}
|
|
105
|
+
})
|
|
122
106
|
};
|
|
123
107
|
}
|
|
124
108
|
async function incrementalImport2(dbManager, sessionId, filePath, options) {
|
|
@@ -169,4 +153,4 @@ export {
|
|
|
169
153
|
analyzeIncrementalImport2 as analyzeIncrementalImport,
|
|
170
154
|
analyzeNewImport2 as analyzeNewImport
|
|
171
155
|
};
|
|
172
|
-
//# sourceMappingURL=chunk-
|
|
156
|
+
//# sourceMappingURL=chunk-T7IETWHN.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/import/stream-import.ts"],"sourcesContent":["/**\n * Server/CLI streaming import — adapter for @openchatlab/node-runtime StreamingImporter.\n *\n * Replaces the old buffered-in-memory approach with the same high-performance\n * streaming pipeline used by Electron (batched transactions, deferred indexes,\n * nickname history, FTS, format fallback).\n */\n\nimport type { DatabaseManager } from '@openchatlab/node-runtime'\nimport {\n DataDirCompatibilityError,\n streamingImport,\n analyzeNewImport as sharedAnalyzeNewImport,\n analyzeIncrementalImport as sharedAnalyzeIncremental,\n incrementalImport as sharedIncrementalImport,\n} from '@openchatlab/node-runtime'\nimport type {\n StreamImportResult,\n StreamImportDeps,\n ImportProgressCallback,\n IncrementalImportResult,\n IncrementalAnalyzeResult,\n IncrementalImportDeps,\n ImportOptions,\n AnalyzeNewImportResult,\n} from '@openchatlab/node-runtime'\nimport {\n detectFormat as parserDetectFormat,\n detectAllFormats,\n getFormatFeatureById,\n getSupportedFormats as parserGetSupportedFormats,\n scanMultiChatFile as parserScanMultiChatFile,\n findEntryFileInDirectory,\n type FormatFeature,\n type MultiChatInfo,\n type ParseProgress,\n} from '@openchatlab/parser'\nimport * as crypto from 'crypto'\n\n// ==================== Legacy progress interface (for SSE routes) ====================\n\nexport interface StreamImportProgress {\n stage: 'detecting' | 'parsing' | 'saving' | 'indexing' | 'done' | 'error'\n progress: number\n message: string\n bytesRead?: number\n totalBytes?: number\n messagesProcessed?: number\n}\n\nexport interface StreamImportOptions {\n formatId?: string\n chatIndex?: number\n nativeBinding?: string\n onProgress?: (progress: StreamImportProgress) => void\n /** Fix the target session ID instead of auto-generating one. Used by sync/pull adapters. */\n sessionId?: string\n}\n\nfunction generateSessionId(): string {\n const ts = Date.now()\n const rand = crypto.randomBytes(4).toString('hex')\n return `chat_${ts}_${rand}`\n}\n\nfunction buildStreamImportDeps(dbManager: DatabaseManager, onProgress?: ImportProgressCallback): StreamImportDeps {\n return {\n openDatabase(sessionId: string) {\n return dbManager.openRawSessionDatabase(sessionId, { create: true, initializeChatTables: true })\n },\n deleteDatabase(sessionId: string) {\n dbManager.deleteSessionDatabaseFiles(sessionId)\n },\n onProgress: onProgress ?? (() => {}),\n generateSessionId,\n }\n}\n\nfunction deleteSessionDatabase(dbManager: DatabaseManager, sessionId: string): void {\n dbManager.deleteSessionDatabaseFiles(sessionId)\n}\n\n/**\n * High-performance streaming import: parse a file and write to DB\n * with batched transactions, deferred indexes, and FTS.\n */\nexport async function streamImport(\n dbManager: DatabaseManager,\n filePath: string,\n options?: StreamImportOptions\n): Promise<StreamImportResult> {\n const { formatId, chatIndex, onProgress, sessionId } = options || {}\n\n const formatOptions: Record<string, unknown> = {}\n if (formatId) formatOptions.formatId = formatId\n if (chatIndex !== undefined) formatOptions.chatIndex = chatIndex\n\n const progressAdapter: ImportProgressCallback = onProgress\n ? (progress) => {\n let stage: StreamImportProgress['stage'] = 'parsing'\n let pct = 0\n switch (progress.stage) {\n case 'detecting':\n stage = 'detecting'\n pct = 5\n break\n case 'parsing':\n stage = 'parsing'\n pct = Math.min(Math.round(progress.percentage * 0.7), 70)\n break\n case 'importing':\n case 'saving':\n stage = 'saving'\n pct = 80\n break\n case 'done':\n stage = 'done'\n pct = 100\n break\n case 'error':\n stage = 'error'\n pct = 0\n break\n }\n onProgress({\n stage,\n progress: pct,\n message: progress.message || '',\n bytesRead: progress.bytesRead,\n totalBytes: progress.totalBytes,\n messagesProcessed: progress.messagesProcessed,\n })\n }\n : () => {}\n\n const deps = buildStreamImportDeps(dbManager, progressAdapter)\n const result = await streamingImport(filePath, deps, formatOptions, sessionId)\n if (!result.success || !result.sessionId) return result\n\n try {\n dbManager.raiseCurrentChatDbCompatibilityGate()\n } catch (error) {\n deleteSessionDatabase(dbManager, result.sessionId)\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n diagnostics: result.diagnostics,\n }\n }\n\n return result\n}\n\n// ==================== Incremental import ====================\n\nfunction buildIncrementalDeps(\n dbManager: DatabaseManager,\n onProgress?: ImportProgressCallback,\n onCompatibilityError?: (error: DataDirCompatibilityError) => void\n): IncrementalImportDeps {\n return {\n openDatabase(sessionId: string, readonly?: boolean) {\n try {\n return dbManager.openRawSessionDatabase(sessionId, { readonly: readonly ?? false })\n } catch (error) {\n if (error instanceof DataDirCompatibilityError) onCompatibilityError?.(error)\n throw error\n }\n },\n onProgress: onProgress ?? (() => {}),\n }\n}\n\nexport async function incrementalImport(\n dbManager: DatabaseManager,\n sessionId: string,\n filePath: string,\n options?: ImportOptions & { onProgress?: ImportProgressCallback }\n): Promise<IncrementalImportResult> {\n const { onProgress, ...importOpts } = options || {}\n let compatibilityError: DataDirCompatibilityError | null = null\n const result = await sharedIncrementalImport(\n sessionId,\n filePath,\n buildIncrementalDeps(dbManager, onProgress, (error) => {\n compatibilityError = error\n }),\n importOpts\n )\n if (compatibilityError) throw compatibilityError\n if (!result.success) return result\n\n try {\n dbManager.raiseCurrentChatDbCompatibilityGate()\n } catch (error) {\n return {\n ...result,\n success: false,\n newMessageCount: 0,\n error: error instanceof Error ? error.message : String(error),\n }\n }\n\n return result\n}\n\nexport async function analyzeIncrementalImport(\n dbManager: DatabaseManager,\n sessionId: string,\n filePath: string,\n onProgress?: ImportProgressCallback\n): Promise<IncrementalAnalyzeResult> {\n let compatibilityError: DataDirCompatibilityError | null = null\n const result = await sharedAnalyzeIncremental(\n sessionId,\n filePath,\n buildIncrementalDeps(dbManager, onProgress, (error) => {\n compatibilityError = error\n })\n )\n if (compatibilityError) throw compatibilityError\n return result\n}\n\nexport async function analyzeNewImport(\n filePath: string,\n onProgress?: ImportProgressCallback\n): Promise<AnalyzeNewImportResult> {\n return sharedAnalyzeNewImport(filePath, onProgress ?? (() => {}))\n}\n\n// ==================== Re-exports from parser ====================\n\nexport {\n parserDetectFormat as detectFormat,\n detectAllFormats,\n getFormatFeatureById,\n parserGetSupportedFormats as getSupportedFormats,\n parserScanMultiChatFile as scanMultiChatFile,\n findEntryFileInDirectory,\n}\nexport type { FormatFeature, MultiChatInfo, ParseProgress }\nexport type {\n StreamImportResult,\n IncrementalImportResult,\n IncrementalAnalyzeResult,\n AnalyzeNewImportResult,\n ImportOptions,\n}\n"],"mappings":"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","names":["incrementalImport","analyzeIncrementalImport","analyzeNewImport"]}
|