chatlab-cli 0.21.1 → 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.
Files changed (60) hide show
  1. package/README.md +5 -5
  2. package/dist/{chunk-OQVKZTVD.mjs → chunk-3UBWLWXB.mjs} +2 -2
  3. package/dist/{chunk-AIR7EAF4.mjs → chunk-4U45E7TO.mjs} +2 -2
  4. package/dist/{chunk-OZWXLRJL.mjs → chunk-6GLMVWGA.mjs} +24 -15
  5. package/dist/chunk-6GLMVWGA.mjs.map +1 -0
  6. package/dist/{chunk-2AIOU3PW.mjs → chunk-6NB475AA.mjs} +12 -3
  7. package/dist/chunk-6NB475AA.mjs.map +1 -0
  8. package/dist/{chunk-LI4X52E7.mjs → chunk-AMMSVJG4.mjs} +325 -94
  9. package/dist/chunk-AMMSVJG4.mjs.map +1 -0
  10. package/dist/{chunk-4GI2UPCS.mjs → chunk-D2XJ4Z7G.mjs} +2 -2
  11. package/dist/{chunk-7HQWGLX6.mjs → chunk-QJQJIUUS.mjs} +102 -96
  12. package/dist/chunk-QJQJIUUS.mjs.map +1 -0
  13. package/dist/chunk-VSOWNKPA.mjs +49 -0
  14. package/dist/cli.mjs +4 -3
  15. package/dist/{http-DHQI4G5J.mjs → http-R5UECMPJ.mjs} +8 -7
  16. package/dist/{import-CQWGIMZQ.mjs → import-3LOWRXWA.mjs} +5 -4
  17. package/dist/index.mjs +8 -7
  18. package/dist/{mcp-7Q3FEI3Z.mjs → mcp-WBHNLED2.mjs} +8 -7
  19. package/dist/mcp-WBHNLED2.mjs.map +1 -0
  20. package/dist/{src-QBT5SYW5.mjs → src-UHM2UDRD.mjs} +3 -2
  21. package/dist/{stream-import-VG7RP6KJ.mjs → stream-import-V6Z7DXSW.mjs} +4 -3
  22. package/dist/stream-import-V6Z7DXSW.mjs.map +1 -0
  23. package/dist/update-checker-MQMQ6A4B.mjs +191 -0
  24. package/dist/update-checker-MQMQ6A4B.mjs.map +1 -0
  25. package/dist-web/assets/{DebugToolsPanel-CoBtqb--.css → DebugToolsPanel-DkbsB6lr.css} +1 -1
  26. package/dist-web/assets/{DebugToolsPanel.vue_vue_type_script_setup_true_lang-CpFGhsl5.js → DebugToolsPanel.vue_vue_type_script_setup_true_lang-CxYyne-Q.js} +5 -5
  27. package/dist-web/assets/{EChartWordcloud-BYLFxPAX.js → EChartWordcloud-Ubal_aYg.js} +1 -1
  28. package/dist-web/assets/{MessageExportModal-DTgxz1eQ.js → MessageExportModal-De5_tX6a.js} +1 -1
  29. package/dist-web/assets/{electron-CTK4NJag.js → electron-CRSL7qPM.js} +1 -1
  30. package/dist-web/assets/{fetch-C2vUkdnA.js → fetch-Q-PqsiMb.js} +1 -1
  31. package/dist-web/assets/{fetch-CTZXLLcn.js → fetch-cFjLAPG2.js} +1 -1
  32. package/dist-web/assets/{index-DeG0EHOT.js → index-BJUGnYn5.js} +1 -1
  33. package/dist-web/assets/{index-DuhN8jAf.js → index-B_31fXeB.js} +2 -2
  34. package/dist-web/assets/index-CbOwHYzO.css +1 -0
  35. package/dist-web/assets/index-DKMUn8F5.js +173 -0
  36. package/dist-web/assets/{index-C4B0hv6C.js → index-D_ksezTw.js} +4 -4
  37. package/dist-web/assets/index-Dhg3SDb6.js +7 -0
  38. package/dist-web/assets/logo-DXIuG_WE.svg +17 -0
  39. package/dist-web/assets/{vendor-echarts-C13vDgZW.js → vendor-echarts-C5u62NnM.js} +1 -1
  40. package/dist-web/assets/{vendor-echarts-wordcloud-uVdwYsYa.js → vendor-echarts-wordcloud-CZ9gsX8l.js} +1 -1
  41. package/dist-web/assets/{vendor-nuxt-ui-CYMNNdeD.js → vendor-nuxt-ui-7OAuiz_i.js} +1 -1
  42. package/dist-web/assets/{vendor-zrender-5DcYjSZk.js → vendor-zrender-DFl4U2Oe.js} +1 -1
  43. package/dist-web/assets/{web-DImo6Kjz.js → web-CZe0Ismu.js} +1 -1
  44. package/dist-web/index.html +3 -3
  45. package/package.json +4 -3
  46. package/dist/chunk-2AIOU3PW.mjs.map +0 -1
  47. package/dist/chunk-7HQWGLX6.mjs.map +0 -1
  48. package/dist/chunk-LI4X52E7.mjs.map +0 -1
  49. package/dist/chunk-OZWXLRJL.mjs.map +0 -1
  50. package/dist/mcp-7Q3FEI3Z.mjs.map +0 -1
  51. package/dist-web/assets/index-B8867dX7.css +0 -1
  52. package/dist-web/assets/index-DUXf21MT.js +0 -173
  53. package/dist-web/assets/index-DZiH2cC1.js +0 -7
  54. /package/dist/{chunk-OQVKZTVD.mjs.map → chunk-3UBWLWXB.mjs.map} +0 -0
  55. /package/dist/{chunk-AIR7EAF4.mjs.map → chunk-4U45E7TO.mjs.map} +0 -0
  56. /package/dist/{chunk-4GI2UPCS.mjs.map → chunk-D2XJ4Z7G.mjs.map} +0 -0
  57. /package/dist/{http-DHQI4G5J.mjs.map → chunk-VSOWNKPA.mjs.map} +0 -0
  58. /package/dist/{import-CQWGIMZQ.mjs.map → http-R5UECMPJ.mjs.map} +0 -0
  59. /package/dist/{src-QBT5SYW5.mjs.map → import-3LOWRXWA.mjs.map} +0 -0
  60. /package/dist/{stream-import-VG7RP6KJ.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-7HQWGLX6.mjs";
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-4GI2UPCS.mjs.map
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
- var __create = Object.create;
8
- var __defProp = Object.defineProperty;
9
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
- var __getOwnPropNames = Object.getOwnPropertyNames;
11
- var __getProtoOf = Object.getPrototypeOf;
12
- var __hasOwnProp = Object.prototype.hasOwnProperty;
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 = (0, import_stream_chain.chain)([readStream, (0, import_stream_json.parser)(), (0, import_Pick.pick)({ filter: /^messages\.\d+$/ }), (0, import_StreamValues.streamValues)()]);
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 = (0, import_stream_chain2.chain)([readStream, (0, import_stream_json2.parser)(), (0, import_Pick2.pick)({ filter: /^messages\.\d+$/ }), (0, import_StreamValues2.streamValues)()]);
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 = (0, import_stream_chain3.chain)([readStream, (0, import_stream_json3.parser)(), (0, import_Pick3.pick)({ filter: /^messages\.\d+$/ }), (0, import_StreamValues3.streamValues)()]);
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 = (0, import_stream_chain4.chain)([scanStream, (0, import_stream_json4.parser)(), (0, import_Pick4.pick)({ filter: /^messages\.\d+$/ }), (0, import_StreamValues4.streamValues)()]);
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 = (0, import_stream_chain4.chain)([readStream, (0, import_stream_json4.parser)(), (0, import_Pick4.pick)({ filter: /^messages\.\d+$/ }), (0, import_StreamValues4.streamValues)()]);
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 = (0, import_stream_chain5.chain)([readStream, (0, import_stream_json5.parser)(), (0, import_Pick5.pick)({ filter: /^messages\.\d+$/ }), (0, import_StreamValues5.streamValues)()]);
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 = (0, import_stream_chain6.chain)([readStream, (0, import_stream_json6.parser)(), (0, import_Pick6.pick)({ filter: /^chats\.list\.\d+$/ }), (0, import_StreamValues6.streamValues)()]);
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 = (0, import_stream_chain6.chain)([
8278
+ const pipeline = chain6([
8284
8279
  readStream,
8285
- (0, import_stream_json6.parser)(),
8286
- (0, import_Pick6.pick)({ filter: new RegExp(`^${chatPathFilter.replace(".", "\\.")}$`) }),
8287
- (0, import_StreamValues6.streamValues)()
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 = (0, import_stream_chain7.chain)([readStream, (0, import_stream_json7.parser)(), (0, import_StreamValues7.streamValues)()]);
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 } = __require("@node-rs/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 skill = getSkillConfig(params.skill_id);
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: params.skill_id, found: false }
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: params.skill_id, found: true, applicable: false }
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: params.skill_id, found: true, applicable: false, missingTools: missing }
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: params.skill_id, found: true, applicable: true }
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 "@mariozechner/pi-ai";
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 "@mariozechner/pi-agent-core";
13178
+ import { Agent as PiAgentCore } from "@earendil-works/pi-agent-core";
13177
13179
  import {
13178
13180
  streamSimple as defaultStreamSimple
13179
- } from "@mariozechner/pi-ai";
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.setTools([]);
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.error || void 0,
13356
- finalMessages: [...coreAgent.state.messages],
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 "@mariozechner/pi-ai";
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 "@mariozechner/pi-ai";
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 "@mariozechner/pi-ai";
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 "@mariozechner/pi-ai";
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),
@@ -19147,4 +19153,4 @@ export {
19147
19153
  export_service_exports,
19148
19154
  createDatabaseManagerAdapter
19149
19155
  };
19150
- //# sourceMappingURL=chunk-7HQWGLX6.mjs.map
19156
+ //# sourceMappingURL=chunk-QJQJIUUS.mjs.map