chatlab-cli 0.21.0 → 0.22.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 +5 -5
- package/dist/{chunk-XUHPCRVT.mjs → chunk-3UBWLWXB.mjs} +2 -2
- package/dist/{chunk-EWCSGYVT.mjs → chunk-4U45E7TO.mjs} +2 -2
- package/dist/{chunk-NB4BIAYM.mjs → chunk-6GLMVWGA.mjs} +24 -15
- package/dist/chunk-6GLMVWGA.mjs.map +1 -0
- package/dist/{chunk-2AIOU3PW.mjs → chunk-6NB475AA.mjs} +12 -3
- package/dist/chunk-6NB475AA.mjs.map +1 -0
- package/dist/{chunk-FBTHZU55.mjs → chunk-AMMSVJG4.mjs} +507 -115
- package/dist/chunk-AMMSVJG4.mjs.map +1 -0
- package/dist/{chunk-3DIWXYMJ.mjs → chunk-D2XJ4Z7G.mjs} +2 -2
- package/dist/{chunk-EIRLEPXP.mjs → chunk-QJQJIUUS.mjs} +107 -96
- package/dist/chunk-QJQJIUUS.mjs.map +1 -0
- package/dist/chunk-VSOWNKPA.mjs +49 -0
- package/dist/cli.mjs +4 -3
- package/dist/{http-QVYJ5HER.mjs → http-R5UECMPJ.mjs} +8 -7
- package/dist/{import-AJKL6JPR.mjs → import-3LOWRXWA.mjs} +5 -4
- package/dist/index.mjs +8 -7
- package/dist/{mcp-FRF3YAN5.mjs → mcp-WBHNLED2.mjs} +8 -7
- package/dist/mcp-WBHNLED2.mjs.map +1 -0
- package/dist/{src-KOIGBZJX.mjs → src-UHM2UDRD.mjs} +3 -2
- package/dist/{stream-import-URGOCXUH.mjs → stream-import-V6Z7DXSW.mjs} +4 -3
- package/dist/stream-import-V6Z7DXSW.mjs.map +1 -0
- package/dist/update-checker-MQMQ6A4B.mjs +191 -0
- package/dist/update-checker-MQMQ6A4B.mjs.map +1 -0
- package/dist-web/assets/{DebugToolsPanel-dUV6pVqD.css → DebugToolsPanel-DkbsB6lr.css} +1 -1
- package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-CxYyne-Q.js +147 -0
- package/dist-web/assets/{EChartWordcloud-BYLFxPAX.js → EChartWordcloud-Ubal_aYg.js} +1 -1
- package/dist-web/assets/{MessageExportModal-BAf68-wB.js → MessageExportModal-De5_tX6a.js} +1 -1
- package/dist-web/assets/{electron-CTK4NJag.js → electron-CRSL7qPM.js} +1 -1
- package/dist-web/assets/electron-H65bUnhW.js +1 -0
- package/dist-web/assets/{fetch-Ayp337Ng.js → fetch-Q-PqsiMb.js} +1 -1
- package/dist-web/assets/fetch-cFjLAPG2.js +1 -0
- package/dist-web/assets/{index-CmU6x-uJ.css → index-BE64tUWq.css} +1 -1
- package/dist-web/assets/index-BJUGnYn5.js +24 -0
- package/dist-web/assets/index-B_31fXeB.js +2 -0
- package/dist-web/assets/index-CbOwHYzO.css +1 -0
- package/dist-web/assets/index-CbQMfheg.css +1 -0
- package/dist-web/assets/index-DKMUn8F5.js +173 -0
- package/dist-web/assets/{index-Bd5r2oFG.js → index-D_ksezTw.js} +4 -4
- package/dist-web/assets/index-Dhg3SDb6.js +7 -0
- package/dist-web/assets/logo-DXIuG_WE.svg +17 -0
- package/dist-web/assets/{vendor-echarts-C13vDgZW.js → vendor-echarts-C5u62NnM.js} +1 -1
- package/dist-web/assets/{vendor-echarts-wordcloud-uVdwYsYa.js → vendor-echarts-wordcloud-CZ9gsX8l.js} +1 -1
- package/dist-web/assets/{vendor-nuxt-ui-CYMNNdeD.js → vendor-nuxt-ui-7OAuiz_i.js} +1 -1
- package/dist-web/assets/{vendor-zrender-5DcYjSZk.js → vendor-zrender-DFl4U2Oe.js} +1 -1
- package/dist-web/assets/{web-C5yfcwjn.js → web-CZe0Ismu.js} +1 -1
- package/dist-web/index.html +3 -3
- package/package.json +4 -9
- package/dist/chunk-2AIOU3PW.mjs.map +0 -1
- package/dist/chunk-EIRLEPXP.mjs.map +0 -1
- package/dist/chunk-FBTHZU55.mjs.map +0 -1
- package/dist/chunk-NB4BIAYM.mjs.map +0 -1
- package/dist/mcp-FRF3YAN5.mjs.map +0 -1
- package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-DFN1Co1H.js +0 -155
- package/dist-web/assets/electron-BHjOx6B6.js +0 -1
- package/dist-web/assets/fetch-BWtpQwBZ.js +0 -1
- package/dist-web/assets/index-BfZM-q0T.js +0 -7
- package/dist-web/assets/index-CLGv8Den.css +0 -1
- package/dist-web/assets/index-CLYHD_f4.js +0 -2
- package/dist-web/assets/index-CaTRpNBK.js +0 -16
- package/dist-web/assets/index-CzR1sElx.css +0 -1
- package/dist-web/assets/index-Ksa--o23.js +0 -173
- /package/dist/{chunk-XUHPCRVT.mjs.map → chunk-3UBWLWXB.mjs.map} +0 -0
- /package/dist/{chunk-EWCSGYVT.mjs.map → chunk-4U45E7TO.mjs.map} +0 -0
- /package/dist/{chunk-3DIWXYMJ.mjs.map → chunk-D2XJ4Z7G.mjs.map} +0 -0
- /package/dist/{http-QVYJ5HER.mjs.map → chunk-VSOWNKPA.mjs.map} +0 -0
- /package/dist/{import-AJKL6JPR.mjs.map → http-R5UECMPJ.mjs.map} +0 -0
- /package/dist/{src-KOIGBZJX.mjs.map → import-3LOWRXWA.mjs.map} +0 -0
- /package/dist/{stream-import-URGOCXUH.mjs.map → src-UHM2UDRD.mjs.map} +0 -0
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
getWeekdayActivity,
|
|
27
27
|
searchMessagesLike,
|
|
28
28
|
searchSessions
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-QJQJIUUS.mjs";
|
|
30
30
|
|
|
31
31
|
// ../../packages/tools/src/definitions/sql-query.ts
|
|
32
32
|
var inputSchema = {
|
|
@@ -1341,4 +1341,4 @@ export {
|
|
|
1341
1341
|
MCP_TOOL_REGISTRY,
|
|
1342
1342
|
CoreDataProvider
|
|
1343
1343
|
};
|
|
1344
|
-
//# sourceMappingURL=chunk-
|
|
1344
|
+
//# sourceMappingURL=chunk-D2XJ4Z7G.mjs.map
|
|
@@ -4,41 +4,12 @@ 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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
14
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
15
|
-
}) : x)(function(x) {
|
|
16
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
17
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
18
|
-
});
|
|
19
|
-
var __commonJS = (cb, mod) => function __require2() {
|
|
20
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
21
|
-
};
|
|
22
|
-
var __export = (target, all) => {
|
|
23
|
-
for (var name in all)
|
|
24
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
25
|
-
};
|
|
26
|
-
var __copyProps = (to, from, except, desc) => {
|
|
27
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
28
|
-
for (let key of __getOwnPropNames(from))
|
|
29
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
30
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
31
|
-
}
|
|
32
|
-
return to;
|
|
33
|
-
};
|
|
34
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
35
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
36
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
37
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
38
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
39
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
40
|
-
mod
|
|
41
|
-
));
|
|
7
|
+
import {
|
|
8
|
+
__commonJS,
|
|
9
|
+
__export,
|
|
10
|
+
__require,
|
|
11
|
+
__toESM
|
|
12
|
+
} from "./chunk-VSOWNKPA.mjs";
|
|
42
13
|
|
|
43
14
|
// ../../node_modules/stream-json/utils/Utf8Stream.js
|
|
44
15
|
var require_Utf8Stream = __commonJS({
|
|
@@ -6251,10 +6222,10 @@ function createSniffer() {
|
|
|
6251
6222
|
}
|
|
6252
6223
|
|
|
6253
6224
|
// ../../packages/parser/src/formats/chatlab.ts
|
|
6254
|
-
var import_stream_json = __toESM(require_stream_json());
|
|
6255
|
-
var import_Pick = __toESM(require_Pick());
|
|
6256
|
-
var import_StreamValues = __toESM(require_StreamValues());
|
|
6257
|
-
var import_stream_chain = __toESM(require_stream_chain());
|
|
6225
|
+
var import_stream_json = __toESM(require_stream_json(), 1);
|
|
6226
|
+
var import_Pick = __toESM(require_Pick(), 1);
|
|
6227
|
+
var import_StreamValues = __toESM(require_StreamValues(), 1);
|
|
6228
|
+
var import_stream_chain = __toESM(require_stream_chain(), 1);
|
|
6258
6229
|
import * as fs4 from "fs";
|
|
6259
6230
|
|
|
6260
6231
|
// ../../packages/shared-types/index.ts
|
|
@@ -6309,6 +6280,10 @@ function isValidYear(timestampSeconds) {
|
|
|
6309
6280
|
|
|
6310
6281
|
// ../../packages/parser/src/formats/chatlab.ts
|
|
6311
6282
|
import * as path3 from "path";
|
|
6283
|
+
var { parser } = import_stream_json.default;
|
|
6284
|
+
var { pick } = import_Pick.default;
|
|
6285
|
+
var { streamValues } = import_StreamValues.default;
|
|
6286
|
+
var { chain } = import_stream_chain.default;
|
|
6312
6287
|
function extractNameFromFilePath(filePath) {
|
|
6313
6288
|
const basename13 = path3.basename(filePath);
|
|
6314
6289
|
const name = basename13.replace(/\.json$/i, "");
|
|
@@ -6403,7 +6378,7 @@ async function* parseChatLab(options) {
|
|
|
6403
6378
|
readStream.on("data", (chunk) => {
|
|
6404
6379
|
bytesRead += typeof chunk === "string" ? Buffer.byteLength(chunk) : chunk.length;
|
|
6405
6380
|
});
|
|
6406
|
-
const pipeline =
|
|
6381
|
+
const pipeline = chain([readStream, parser(), pick({ filter: /^messages\.\d+$/ }), streamValues()]);
|
|
6407
6382
|
const batchCollector = [];
|
|
6408
6383
|
pipeline.on("data", ({ value }) => {
|
|
6409
6384
|
const msg = value;
|
|
@@ -6643,21 +6618,25 @@ var module_2 = {
|
|
|
6643
6618
|
var chatlab_jsonl_default = module_2;
|
|
6644
6619
|
|
|
6645
6620
|
// ../../packages/parser/src/formats/shuakami-qq-exporter.ts
|
|
6646
|
-
var import_stream_json3 = __toESM(require_stream_json());
|
|
6647
|
-
var import_Pick3 = __toESM(require_Pick());
|
|
6648
|
-
var import_StreamValues3 = __toESM(require_StreamValues());
|
|
6649
|
-
var import_stream_chain3 = __toESM(require_stream_chain());
|
|
6621
|
+
var import_stream_json3 = __toESM(require_stream_json(), 1);
|
|
6622
|
+
var import_Pick3 = __toESM(require_Pick(), 1);
|
|
6623
|
+
var import_StreamValues3 = __toESM(require_StreamValues(), 1);
|
|
6624
|
+
var import_stream_chain3 = __toESM(require_stream_chain(), 1);
|
|
6650
6625
|
import * as fs7 from "fs";
|
|
6651
6626
|
import * as path6 from "path";
|
|
6652
6627
|
|
|
6653
6628
|
// ../../packages/parser/src/formats/shuakami-qq-preprocessor.ts
|
|
6654
|
-
var import_stream_json2 = __toESM(require_stream_json());
|
|
6655
|
-
var import_Pick2 = __toESM(require_Pick());
|
|
6656
|
-
var import_StreamValues2 = __toESM(require_StreamValues());
|
|
6657
|
-
var import_stream_chain2 = __toESM(require_stream_chain());
|
|
6629
|
+
var import_stream_json2 = __toESM(require_stream_json(), 1);
|
|
6630
|
+
var import_Pick2 = __toESM(require_Pick(), 1);
|
|
6631
|
+
var import_StreamValues2 = __toESM(require_StreamValues(), 1);
|
|
6632
|
+
var import_stream_chain2 = __toESM(require_stream_chain(), 1);
|
|
6658
6633
|
import * as fs6 from "fs";
|
|
6659
6634
|
import * as path5 from "path";
|
|
6660
6635
|
import * as os from "os";
|
|
6636
|
+
var { parser: parser3 } = import_stream_json2.default;
|
|
6637
|
+
var { pick: pick2 } = import_Pick2.default;
|
|
6638
|
+
var { streamValues: streamValues2 } = import_StreamValues2.default;
|
|
6639
|
+
var { chain: chain2 } = import_stream_chain2.default;
|
|
6661
6640
|
var PREPROCESS_THRESHOLD = 50 * 1024 * 1024;
|
|
6662
6641
|
function getTempDir() {
|
|
6663
6642
|
return path5.join(os.tmpdir(), "chatlab");
|
|
@@ -6824,7 +6803,7 @@ async function preprocessQQJson(inputPath, onProgress) {
|
|
|
6824
6803
|
const headerJson = JSON.stringify(header);
|
|
6825
6804
|
writeStream.write(headerJson.slice(0, -2) + "\n");
|
|
6826
6805
|
let isFirstMessage = true;
|
|
6827
|
-
const pipeline = (
|
|
6806
|
+
const pipeline = chain2([readStream, parser3(), pick2({ filter: /^messages\.\d+$/ }), streamValues2()]);
|
|
6828
6807
|
pipeline.on("data", ({ value }) => {
|
|
6829
6808
|
const slimMsg = slimMessage(value);
|
|
6830
6809
|
const msgJson = JSON.stringify(slimMsg);
|
|
@@ -6888,6 +6867,10 @@ var qqPreprocessor = {
|
|
|
6888
6867
|
};
|
|
6889
6868
|
|
|
6890
6869
|
// ../../packages/parser/src/formats/shuakami-qq-exporter.ts
|
|
6870
|
+
var { parser: parser4 } = import_stream_json3.default;
|
|
6871
|
+
var { pick: pick3 } = import_Pick3.default;
|
|
6872
|
+
var { streamValues: streamValues3 } = import_StreamValues3.default;
|
|
6873
|
+
var { chain: chain3 } = import_stream_chain3.default;
|
|
6891
6874
|
var feature3 = {
|
|
6892
6875
|
id: "shuakami-qq-exporter",
|
|
6893
6876
|
name: "shuakami/qq-chat-exporter",
|
|
@@ -7026,7 +7009,7 @@ async function* parseV4(options) {
|
|
|
7026
7009
|
readStream.on("data", (chunk) => {
|
|
7027
7010
|
bytesRead += typeof chunk === "string" ? Buffer.byteLength(chunk) : chunk.length;
|
|
7028
7011
|
});
|
|
7029
|
-
const pipeline = (
|
|
7012
|
+
const pipeline = chain3([readStream, parser4(), pick3({ filter: /^messages\.\d+$/ }), streamValues3()]);
|
|
7030
7013
|
pipeline.on("data", ({ value }) => {
|
|
7031
7014
|
const platformId = value.sender.uin || value.sender.uid || value.rawMessage?.senderUin || value.rawMessage?.senderUid;
|
|
7032
7015
|
if (!platformId) {
|
|
@@ -7445,10 +7428,10 @@ var module_4 = {
|
|
|
7445
7428
|
var shuakami_qq_exporter_chunked_default = module_4;
|
|
7446
7429
|
|
|
7447
7430
|
// ../../packages/parser/src/formats/weflow.ts
|
|
7448
|
-
var import_stream_json4 = __toESM(require_stream_json());
|
|
7449
|
-
var import_Pick4 = __toESM(require_Pick());
|
|
7450
|
-
var import_StreamValues4 = __toESM(require_StreamValues());
|
|
7451
|
-
var import_stream_chain4 = __toESM(require_stream_chain());
|
|
7431
|
+
var import_stream_json4 = __toESM(require_stream_json(), 1);
|
|
7432
|
+
var import_Pick4 = __toESM(require_Pick(), 1);
|
|
7433
|
+
var import_StreamValues4 = __toESM(require_StreamValues(), 1);
|
|
7434
|
+
var import_stream_chain4 = __toESM(require_stream_chain(), 1);
|
|
7452
7435
|
import * as fs9 from "fs";
|
|
7453
7436
|
import * as path8 from "path";
|
|
7454
7437
|
|
|
@@ -7477,6 +7460,10 @@ var weflowPreprocessor = {
|
|
|
7477
7460
|
};
|
|
7478
7461
|
|
|
7479
7462
|
// ../../packages/parser/src/formats/weflow.ts
|
|
7463
|
+
var { parser: parser5 } = import_stream_json4.default;
|
|
7464
|
+
var { pick: pick4 } = import_Pick4.default;
|
|
7465
|
+
var { streamValues: streamValues4 } = import_StreamValues4.default;
|
|
7466
|
+
var { chain: chain4 } = import_stream_chain4.default;
|
|
7480
7467
|
function extractNameFromFilePath4(filePath) {
|
|
7481
7468
|
const basename13 = path8.basename(filePath);
|
|
7482
7469
|
const name = basename13.replace(/\.json$/i, "");
|
|
@@ -7738,7 +7725,7 @@ async function* parseWeFlow(options) {
|
|
|
7738
7725
|
try {
|
|
7739
7726
|
await new Promise((resolve) => {
|
|
7740
7727
|
const scanStream = fs9.createReadStream(filePath, { encoding: "utf-8" });
|
|
7741
|
-
const scanPipeline = (
|
|
7728
|
+
const scanPipeline = chain4([scanStream, parser5(), pick4({ filter: /^messages\.\d+$/ }), streamValues4()]);
|
|
7742
7729
|
scanPipeline.on("data", ({ value }) => {
|
|
7743
7730
|
if (value.isSend === 1 && value.senderUsername && !value.senderUsername.endsWith("@chatroom")) {
|
|
7744
7731
|
ownerId = value.senderUsername;
|
|
@@ -7767,7 +7754,7 @@ async function* parseWeFlow(options) {
|
|
|
7767
7754
|
readStream.on("data", (chunk) => {
|
|
7768
7755
|
bytesRead += typeof chunk === "string" ? Buffer.byteLength(chunk) : chunk.length;
|
|
7769
7756
|
});
|
|
7770
|
-
const pipeline = (
|
|
7757
|
+
const pipeline = chain4([readStream, parser5(), pick4({ filter: /^messages\.\d+$/ }), streamValues4()]);
|
|
7771
7758
|
const processMessage = (msg) => {
|
|
7772
7759
|
if (!msg.senderUsername || msg.createTime === void 0) {
|
|
7773
7760
|
return null;
|
|
@@ -7895,11 +7882,15 @@ var module_6 = {
|
|
|
7895
7882
|
var ycccccccy_echotrace_default = module_6;
|
|
7896
7883
|
|
|
7897
7884
|
// ../../packages/parser/src/formats/tyrrrz-discord-exporter.ts
|
|
7898
|
-
var import_stream_json5 = __toESM(require_stream_json());
|
|
7899
|
-
var import_Pick5 = __toESM(require_Pick());
|
|
7900
|
-
var import_StreamValues5 = __toESM(require_StreamValues());
|
|
7901
|
-
var import_stream_chain5 = __toESM(require_stream_chain());
|
|
7885
|
+
var import_stream_json5 = __toESM(require_stream_json(), 1);
|
|
7886
|
+
var import_Pick5 = __toESM(require_Pick(), 1);
|
|
7887
|
+
var import_StreamValues5 = __toESM(require_StreamValues(), 1);
|
|
7888
|
+
var import_stream_chain5 = __toESM(require_stream_chain(), 1);
|
|
7902
7889
|
import * as fs10 from "fs";
|
|
7890
|
+
var { parser: parser6 } = import_stream_json5.default;
|
|
7891
|
+
var { pick: pick5 } = import_Pick5.default;
|
|
7892
|
+
var { streamValues: streamValues5 } = import_StreamValues5.default;
|
|
7893
|
+
var { chain: chain5 } = import_stream_chain5.default;
|
|
7903
7894
|
function mapDiscordMessageType(type) {
|
|
7904
7895
|
switch (type) {
|
|
7905
7896
|
// 内容消息
|
|
@@ -8049,7 +8040,7 @@ async function* parseDiscordExporter(options) {
|
|
|
8049
8040
|
readStream.on("data", (chunk) => {
|
|
8050
8041
|
bytesRead += typeof chunk === "string" ? Buffer.byteLength(chunk) : chunk.length;
|
|
8051
8042
|
});
|
|
8052
|
-
const pipeline = (
|
|
8043
|
+
const pipeline = chain5([readStream, parser6(), pick5({ filter: /^messages\.\d+$/ }), streamValues5()]);
|
|
8053
8044
|
const batchCollector = [];
|
|
8054
8045
|
pipeline.on("data", ({ value }) => {
|
|
8055
8046
|
const msg = value;
|
|
@@ -8157,10 +8148,10 @@ var module_7 = {
|
|
|
8157
8148
|
var tyrrrz_discord_exporter_default = module_7;
|
|
8158
8149
|
|
|
8159
8150
|
// ../../packages/parser/src/formats/telegram-native.ts
|
|
8160
|
-
var import_stream_chain6 = __toESM(require_stream_chain());
|
|
8161
|
-
var import_stream_json6 = __toESM(require_stream_json());
|
|
8162
|
-
var import_Pick6 = __toESM(require_Pick());
|
|
8163
|
-
var import_StreamValues6 = __toESM(require_StreamValues());
|
|
8151
|
+
var import_stream_chain6 = __toESM(require_stream_chain(), 1);
|
|
8152
|
+
var import_stream_json6 = __toESM(require_stream_json(), 1);
|
|
8153
|
+
var import_Pick6 = __toESM(require_Pick(), 1);
|
|
8154
|
+
var import_StreamValues6 = __toESM(require_StreamValues(), 1);
|
|
8164
8155
|
import * as fs11 from "fs";
|
|
8165
8156
|
|
|
8166
8157
|
// ../../packages/parser/src/formats/utils/telegram-utils.ts
|
|
@@ -8226,6 +8217,10 @@ function buildContent(msg) {
|
|
|
8226
8217
|
}
|
|
8227
8218
|
|
|
8228
8219
|
// ../../packages/parser/src/formats/telegram-native.ts
|
|
8220
|
+
var { chain: chain6 } = import_stream_chain6.default;
|
|
8221
|
+
var { parser: parser7 } = import_stream_json6.default;
|
|
8222
|
+
var { pick: pick6 } = import_Pick6.default;
|
|
8223
|
+
var { streamValues: streamValues6 } = import_StreamValues6.default;
|
|
8229
8224
|
var feature8 = {
|
|
8230
8225
|
id: "telegram-native",
|
|
8231
8226
|
name: "Telegram \u5B98\u65B9\u5BFC\u51FA (JSON)",
|
|
@@ -8244,7 +8239,7 @@ async function scanChats(filePath) {
|
|
|
8244
8239
|
const chats = [];
|
|
8245
8240
|
return new Promise((resolve, reject) => {
|
|
8246
8241
|
const readStream = fs11.createReadStream(filePath, { encoding: "utf-8" });
|
|
8247
|
-
const pipeline = (
|
|
8242
|
+
const pipeline = chain6([readStream, parser7(), pick6({ filter: /^chats\.list\.\d+$/ }), streamValues6()]);
|
|
8248
8243
|
pipeline.on("data", ({ value }) => {
|
|
8249
8244
|
const chat = value;
|
|
8250
8245
|
chats.push({
|
|
@@ -8280,11 +8275,11 @@ async function* parseTelegram(options) {
|
|
|
8280
8275
|
readStream.on("data", (chunk) => {
|
|
8281
8276
|
bytesRead += typeof chunk === "string" ? Buffer.byteLength(chunk) : chunk.length;
|
|
8282
8277
|
});
|
|
8283
|
-
const pipeline = (
|
|
8278
|
+
const pipeline = chain6([
|
|
8284
8279
|
readStream,
|
|
8285
|
-
(
|
|
8286
|
-
(
|
|
8287
|
-
(
|
|
8280
|
+
parser7(),
|
|
8281
|
+
pick6({ filter: new RegExp(`^${chatPathFilter.replace(".", "\\.")}$`) }),
|
|
8282
|
+
streamValues6()
|
|
8288
8283
|
]);
|
|
8289
8284
|
let found = false;
|
|
8290
8285
|
pipeline.on("data", ({ value }) => {
|
|
@@ -8381,10 +8376,13 @@ var module_8 = {
|
|
|
8381
8376
|
var telegram_native_default = module_8;
|
|
8382
8377
|
|
|
8383
8378
|
// ../../packages/parser/src/formats/telegram-native-single.ts
|
|
8384
|
-
var import_stream_chain7 = __toESM(require_stream_chain());
|
|
8385
|
-
var import_stream_json7 = __toESM(require_stream_json());
|
|
8386
|
-
var import_StreamValues7 = __toESM(require_StreamValues());
|
|
8379
|
+
var import_stream_chain7 = __toESM(require_stream_chain(), 1);
|
|
8380
|
+
var import_stream_json7 = __toESM(require_stream_json(), 1);
|
|
8381
|
+
var import_StreamValues7 = __toESM(require_StreamValues(), 1);
|
|
8387
8382
|
import * as fs12 from "fs";
|
|
8383
|
+
var { chain: chain7 } = import_stream_chain7.default;
|
|
8384
|
+
var { parser: parser8 } = import_stream_json7.default;
|
|
8385
|
+
var { streamValues: streamValues7 } = import_StreamValues7.default;
|
|
8388
8386
|
var feature9 = {
|
|
8389
8387
|
id: "telegram-native-single",
|
|
8390
8388
|
name: "Telegram \u5355\u804A\u5929\u5BFC\u51FA (JSON)",
|
|
@@ -8412,7 +8410,7 @@ async function* parseTelegramSingle(options) {
|
|
|
8412
8410
|
onLog?.("info", `\u5F00\u59CB\u89E3\u6790 Telegram \u5355\u804A\u5929 JSON \u6587\u4EF6\uFF0C\u5927\u5C0F: ${(totalBytes / 1024 / 1024).toFixed(2)} MB`);
|
|
8413
8411
|
const chatData = await new Promise((resolve, reject) => {
|
|
8414
8412
|
const readStream = fs12.createReadStream(filePath, { encoding: "utf-8" });
|
|
8415
|
-
const pipeline = (
|
|
8413
|
+
const pipeline = chain7([readStream, parser8(), streamValues7()]);
|
|
8416
8414
|
let found = false;
|
|
8417
8415
|
pipeline.on("data", ({ value }) => {
|
|
8418
8416
|
if (!found) {
|
|
@@ -9775,8 +9773,10 @@ import * as fs20 from "fs";
|
|
|
9775
9773
|
// ../../packages/node-runtime/src/nlp/segmenter.ts
|
|
9776
9774
|
import * as fs18 from "fs";
|
|
9777
9775
|
import * as path14 from "path";
|
|
9776
|
+
import { createRequire } from "module";
|
|
9778
9777
|
var _nlpDir = null;
|
|
9779
9778
|
var jiebaInstances = /* @__PURE__ */ new Map();
|
|
9779
|
+
var require2 = createRequire(import.meta.url);
|
|
9780
9780
|
function initNlpDir(nlpDir) {
|
|
9781
9781
|
_nlpDir = nlpDir;
|
|
9782
9782
|
}
|
|
@@ -9806,7 +9806,7 @@ function getJieba(dictType = "default") {
|
|
|
9806
9806
|
console.log(`[NLP] jieba cache invalidated (dict missing): ${effectiveType}`);
|
|
9807
9807
|
}
|
|
9808
9808
|
try {
|
|
9809
|
-
const { Jieba } =
|
|
9809
|
+
const { Jieba } = require2("@node-rs/jieba");
|
|
9810
9810
|
let instance;
|
|
9811
9811
|
const diskDict = tryLoadDictFromDisk(effectiveType);
|
|
9812
9812
|
if (diskDict) {
|
|
@@ -12372,18 +12372,20 @@ function createActivateSkillTool(options) {
|
|
|
12372
12372
|
required: ["skill_id"]
|
|
12373
12373
|
},
|
|
12374
12374
|
execute: async (_toolCallId, params) => {
|
|
12375
|
-
const
|
|
12375
|
+
const toolParams = params && typeof params === "object" ? params : {};
|
|
12376
|
+
const skillId = toolParams.skill_id || "";
|
|
12377
|
+
const skill = getSkillConfig(skillId);
|
|
12376
12378
|
if (!skill) {
|
|
12377
12379
|
return {
|
|
12378
12380
|
content: [{ type: "text", text: isZh ? "\u6280\u80FD\u4E0D\u5B58\u5728" : "Skill not found" }],
|
|
12379
|
-
details: { skillId
|
|
12381
|
+
details: { skillId, found: false }
|
|
12380
12382
|
};
|
|
12381
12383
|
}
|
|
12382
12384
|
if (skill.chatScope !== "all" && skill.chatScope !== chatType) {
|
|
12383
12385
|
const scopeMsg = isZh ? `\u8BE5\u6280\u80FD\u4EC5\u9002\u7528\u4E8E${skill.chatScope === "group" ? "\u7FA4\u804A" : "\u79C1\u804A"}\u573A\u666F` : `This skill is only applicable to ${skill.chatScope === "group" ? "group chat" : "private chat"} scenarios`;
|
|
12384
12386
|
return {
|
|
12385
12387
|
content: [{ type: "text", text: scopeMsg }],
|
|
12386
|
-
details: { skillId
|
|
12388
|
+
details: { skillId, found: true, applicable: false }
|
|
12387
12389
|
};
|
|
12388
12390
|
}
|
|
12389
12391
|
if (skill.tools.length > 0 && allowedTools && allowedTools.length > 0) {
|
|
@@ -12392,14 +12394,14 @@ function createActivateSkillTool(options) {
|
|
|
12392
12394
|
const msg = isZh ? `\u5F53\u524D\u52A9\u624B\u7F3A\u5C11\u8BE5\u6280\u80FD\u6240\u9700\u7684\u5DE5\u5177\uFF1A${missing.join(", ")}` : `Current assistant lacks tools required by this skill: ${missing.join(", ")}`;
|
|
12393
12395
|
return {
|
|
12394
12396
|
content: [{ type: "text", text: msg }],
|
|
12395
|
-
details: { skillId
|
|
12397
|
+
details: { skillId, found: true, applicable: false, missingTools: missing }
|
|
12396
12398
|
};
|
|
12397
12399
|
}
|
|
12398
12400
|
}
|
|
12399
12401
|
const actionPrompt = isZh ? "\n\n[System]: \u4F60\u5DF2\u6210\u529F\u52A0\u8F7D\u8BE5\u6280\u80FD\u624B\u518C\u3002\u73B0\u5728\uFF0C\u8BF7\u7ACB\u5373\u3001\u81EA\u52A8\u5730\u5F00\u59CB\u6267\u884C\u6B65\u9AA41\uFF0C\u8C03\u7528\u76F8\u5173\u7684\u57FA\u7840\u6570\u636E\u5DE5\u5177\uFF0C\u4E0D\u8981\u7B49\u5F85\u7528\u6237\u7684\u8FDB\u4E00\u6B65\u786E\u8BA4\uFF01" : "\n\n[System]: You have successfully loaded this skill manual. Now, immediately start executing step 1 by calling the relevant data tools. Do not wait for further user confirmation!";
|
|
12400
12402
|
return {
|
|
12401
12403
|
content: [{ type: "text", text: `${skill.prompt}${actionPrompt}` }],
|
|
12402
|
-
details: { skillId
|
|
12404
|
+
details: { skillId, found: true, applicable: true }
|
|
12403
12405
|
};
|
|
12404
12406
|
}
|
|
12405
12407
|
};
|
|
@@ -12591,7 +12593,7 @@ function forceTruncate(input, targetTokens) {
|
|
|
12591
12593
|
// ../../packages/node-runtime/src/ai/compression/adapter-factory.ts
|
|
12592
12594
|
import {
|
|
12593
12595
|
completeSimple
|
|
12594
|
-
} from "@
|
|
12596
|
+
} from "@earendil-works/pi-ai";
|
|
12595
12597
|
var DEFAULT_CONTEXT_WINDOW2 = 128e3;
|
|
12596
12598
|
function createCompressionLlmAdapter(options) {
|
|
12597
12599
|
const { piModel, apiKey, onCompressing, onError } = options;
|
|
@@ -13173,10 +13175,10 @@ function applyPreprocessingPipeline(options) {
|
|
|
13173
13175
|
}
|
|
13174
13176
|
|
|
13175
13177
|
// ../../packages/node-runtime/src/ai/agent/core.ts
|
|
13176
|
-
import { Agent as PiAgentCore } from "@
|
|
13178
|
+
import { Agent as PiAgentCore } from "@earendil-works/pi-agent-core";
|
|
13177
13179
|
import {
|
|
13178
13180
|
streamSimple as defaultStreamSimple
|
|
13179
|
-
} from "@
|
|
13181
|
+
} from "@earendil-works/pi-ai";
|
|
13180
13182
|
function createEmptyPiUsage() {
|
|
13181
13183
|
return {
|
|
13182
13184
|
input: 0,
|
|
@@ -13208,6 +13210,9 @@ function toPiHistoryMessages(messages) {
|
|
|
13208
13210
|
};
|
|
13209
13211
|
});
|
|
13210
13212
|
}
|
|
13213
|
+
function isPiMessage(message) {
|
|
13214
|
+
return message.role === "user" || message.role === "assistant" || message.role === "toolResult";
|
|
13215
|
+
}
|
|
13211
13216
|
async function runAgentCore(options) {
|
|
13212
13217
|
const {
|
|
13213
13218
|
piModel,
|
|
@@ -13238,8 +13243,11 @@ async function runAgentCore(options) {
|
|
|
13238
13243
|
}
|
|
13239
13244
|
const coreAgent = new PiAgentCore({
|
|
13240
13245
|
initialState: {
|
|
13246
|
+
systemPrompt,
|
|
13241
13247
|
model: piModel,
|
|
13242
|
-
thinkingLevel: piModel.reasoning ? "medium" : "off"
|
|
13248
|
+
thinkingLevel: piModel.reasoning ? "medium" : "off",
|
|
13249
|
+
tools: maxToolRounds > 0 ? tools : [],
|
|
13250
|
+
messages: toPiHistoryMessages(history)
|
|
13243
13251
|
},
|
|
13244
13252
|
getApiKey: () => apiKey,
|
|
13245
13253
|
streamFn: resolvedStreamFn,
|
|
@@ -13251,9 +13259,6 @@ async function runAgentCore(options) {
|
|
|
13251
13259
|
return filtered;
|
|
13252
13260
|
}
|
|
13253
13261
|
});
|
|
13254
|
-
coreAgent.setSystemPrompt(systemPrompt);
|
|
13255
|
-
coreAgent.setTools(maxToolRounds > 0 ? tools : []);
|
|
13256
|
-
coreAgent.replaceMessages(toPiHistoryMessages(history));
|
|
13257
13262
|
let hasReachedToolRoundLimit = false;
|
|
13258
13263
|
const thinkingStartTime = /* @__PURE__ */ new Map();
|
|
13259
13264
|
const useThinkParser = needsStreamingThinkParsing(piModel.provider, piModel.id);
|
|
@@ -13313,7 +13318,7 @@ async function runAgentCore(options) {
|
|
|
13313
13318
|
toolRounds += 1;
|
|
13314
13319
|
if (!hasReachedToolRoundLimit && maxToolRounds > 0 && toolRounds >= maxToolRounds) {
|
|
13315
13320
|
hasReachedToolRoundLimit = true;
|
|
13316
|
-
coreAgent.
|
|
13321
|
+
coreAgent.state.tools = [];
|
|
13317
13322
|
coreAgent.steer({
|
|
13318
13323
|
role: "user",
|
|
13319
13324
|
content: [{ type: "text", text: steerMessage }],
|
|
@@ -13352,8 +13357,8 @@ async function runAgentCore(options) {
|
|
|
13352
13357
|
await coreAgent.prompt(userMessage);
|
|
13353
13358
|
return {
|
|
13354
13359
|
usage: totalUsage,
|
|
13355
|
-
error: coreAgent.state.
|
|
13356
|
-
finalMessages:
|
|
13360
|
+
error: coreAgent.state.errorMessage || void 0,
|
|
13361
|
+
finalMessages: coreAgent.state.messages.filter(isPiMessage),
|
|
13357
13362
|
toolsUsed: [...toolsUsed],
|
|
13358
13363
|
toolRounds
|
|
13359
13364
|
};
|
|
@@ -15408,7 +15413,7 @@ function buildPiModel(config, options) {
|
|
|
15408
15413
|
}
|
|
15409
15414
|
|
|
15410
15415
|
// ../../packages/node-runtime/src/ai/remote-api.ts
|
|
15411
|
-
import { completeSimple as completeSimple2 } from "@
|
|
15416
|
+
import { completeSimple as completeSimple2 } from "@earendil-works/pi-ai";
|
|
15412
15417
|
async function fetchRemoteModels(provider, apiKey, baseUrl, apiFormat, options) {
|
|
15413
15418
|
const effectiveApiFormat = apiFormat || "openai-completions";
|
|
15414
15419
|
if (effectiveApiFormat === "anthropic-messages") {
|
|
@@ -15513,7 +15518,7 @@ async function validateApiKey(provider, apiKey, baseUrl, model, apiFormat, optio
|
|
|
15513
15518
|
}
|
|
15514
15519
|
|
|
15515
15520
|
// ../../packages/node-runtime/src/ai/llm-stream.ts
|
|
15516
|
-
import { streamSimple } from "@
|
|
15521
|
+
import { streamSimple } from "@earendil-works/pi-ai";
|
|
15517
15522
|
function toPiMessages(messages, timestamp) {
|
|
15518
15523
|
return messages.map((m) => ({
|
|
15519
15524
|
role: m.role,
|
|
@@ -15584,7 +15589,7 @@ async function runSimpleLlmStream(options) {
|
|
|
15584
15589
|
}
|
|
15585
15590
|
|
|
15586
15591
|
// ../../packages/node-runtime/src/ai/index.ts
|
|
15587
|
-
import { Type, completeSimple as completeSimple4, streamSimple as streamSimple2 } from "@
|
|
15592
|
+
import { Type, completeSimple as completeSimple4, streamSimple as streamSimple2 } from "@earendil-works/pi-ai";
|
|
15588
15593
|
|
|
15589
15594
|
// ../../packages/node-runtime/src/ai/rag/config.ts
|
|
15590
15595
|
import * as fs24 from "fs";
|
|
@@ -16627,7 +16632,7 @@ async function getVectorStoreStats() {
|
|
|
16627
16632
|
}
|
|
16628
16633
|
|
|
16629
16634
|
// ../../packages/node-runtime/src/ai/rag/pipeline/semantic.ts
|
|
16630
|
-
import { completeSimple as completeSimple3 } from "@
|
|
16635
|
+
import { completeSimple as completeSimple3 } from "@earendil-works/pi-ai";
|
|
16631
16636
|
var _logger8 = getNoopLogger();
|
|
16632
16637
|
var _getLLMConfig2 = null;
|
|
16633
16638
|
function initSemanticPipeline(logger, getLLMConfig) {
|
|
@@ -16824,7 +16829,8 @@ var llmConfigSchema = z.object({
|
|
|
16824
16829
|
base_url: z.string().default("")
|
|
16825
16830
|
});
|
|
16826
16831
|
var dataConfigSchema = z.object({
|
|
16827
|
-
user_data_dir: z.string().default("")
|
|
16832
|
+
user_data_dir: z.string().default(""),
|
|
16833
|
+
electron_migration_done: z.boolean().default(false)
|
|
16828
16834
|
});
|
|
16829
16835
|
var apiConfigSchema = z.object({
|
|
16830
16836
|
port: z.number().int().min(1).max(65535).default(DEFAULT_API_PORT),
|
|
@@ -18766,6 +18772,7 @@ function getMemberNameHistory2(adapter, sessionId, memberId) {
|
|
|
18766
18772
|
var session_index_service_exports = {};
|
|
18767
18773
|
__export(session_index_service_exports, {
|
|
18768
18774
|
clearIndex: () => clearIndex,
|
|
18775
|
+
generateIncrementalIndex: () => generateIncrementalIndex,
|
|
18769
18776
|
generateIndex: () => generateIndex,
|
|
18770
18777
|
getFtsStatus: () => getFtsStatus,
|
|
18771
18778
|
rebuildFts: () => rebuildFts,
|
|
@@ -18775,6 +18782,10 @@ function generateIndex(adapter, sessionId, gapThreshold = 1800) {
|
|
|
18775
18782
|
const db = adapter.ensureWritable(sessionId);
|
|
18776
18783
|
return generateSessionIndex(db, gapThreshold);
|
|
18777
18784
|
}
|
|
18785
|
+
function generateIncrementalIndex(adapter, sessionId, gapThreshold = 1800) {
|
|
18786
|
+
const db = adapter.ensureWritable(sessionId);
|
|
18787
|
+
return generateIncrementalSessionIndex(db, gapThreshold);
|
|
18788
|
+
}
|
|
18778
18789
|
function clearIndex(adapter, sessionId) {
|
|
18779
18790
|
const db = adapter.ensureWritable(sessionId);
|
|
18780
18791
|
clearSessionIndex(db);
|
|
@@ -19142,4 +19153,4 @@ export {
|
|
|
19142
19153
|
export_service_exports,
|
|
19143
19154
|
createDatabaseManagerAdapter
|
|
19144
19155
|
};
|
|
19145
|
-
//# sourceMappingURL=chunk-
|
|
19156
|
+
//# sourceMappingURL=chunk-QJQJIUUS.mjs.map
|