chatlab-cli 0.34.0 → 0.34.2-beta.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.
Files changed (125) hide show
  1. package/dist/{chat-command-XPY3WURC.mjs → chat-command-6IOH2QRF.mjs} +9 -9
  2. package/dist/{chunk-S5NCEESV.mjs → chunk-2XCNTG4O.mjs} +403 -76
  3. package/dist/chunk-2XCNTG4O.mjs.map +1 -0
  4. package/dist/{chunk-AQPDZAWB.mjs → chunk-4LW6443F.mjs} +1802 -712
  5. package/dist/chunk-4LW6443F.mjs.map +1 -0
  6. package/dist/{chunk-ISRLGLUL.mjs → chunk-4RLZFGO5.mjs} +2 -2
  7. package/dist/{chunk-IGEHMLHM.mjs → chunk-52P5ZRBD.mjs} +2 -2
  8. package/dist/{chunk-JTOHAMIW.mjs → chunk-652KEAX3.mjs} +2 -2
  9. package/dist/{chunk-DGF3S3TZ.mjs → chunk-72RWABYJ.mjs} +15 -9
  10. package/dist/chunk-72RWABYJ.mjs.map +1 -0
  11. package/dist/{chunk-JCSPDTZL.mjs → chunk-H6D4DZOC.mjs} +4 -4
  12. package/dist/{chunk-OLE2USEN.mjs → chunk-INBJ7SND.mjs} +53 -26
  13. package/dist/chunk-INBJ7SND.mjs.map +1 -0
  14. package/dist/{chunk-IGK6UMN2.mjs → chunk-JX6MFS6F.mjs} +43 -23
  15. package/dist/chunk-JX6MFS6F.mjs.map +1 -0
  16. package/dist/{chunk-UO2XVFY6.mjs → chunk-MENKFEPC.mjs} +147 -73
  17. package/dist/chunk-MENKFEPC.mjs.map +1 -0
  18. package/dist/{chunk-BQ3QN4QT.mjs → chunk-U6MVJSXX.mjs} +170 -66
  19. package/dist/chunk-U6MVJSXX.mjs.map +1 -0
  20. package/dist/chunk-UMBEHBIZ.mjs +41 -0
  21. package/dist/chunk-UMBEHBIZ.mjs.map +1 -0
  22. package/dist/{chunk-GFHSSCCR.mjs → chunk-VSOWNKPA.mjs} +1 -11
  23. package/dist/cli.mjs +10 -9
  24. package/dist/contacts-worker.mjs +3 -3
  25. package/dist/global-insight-worker.mjs +2 -2
  26. package/dist/{http-HV6XWU6X.mjs → http-HSK46XEU.mjs} +13 -12
  27. package/dist/{import-DP2XLZ2H.mjs → import-DF2WD2HE.mjs} +10 -8
  28. package/dist/index.mjs +13 -12
  29. package/dist/{mcp-QDPFBPGW.mjs → mcp-A2RND7KN.mjs} +12 -12
  30. package/dist/people-relationships-worker.mjs +3 -3
  31. package/dist/semantic-index-worker.mjs +1 -1
  32. package/dist/{service-KGL3RAIA.mjs → service-KZTHBDQ5.mjs} +2 -2
  33. package/dist/{src-B3A2QHP5.mjs → src-SHFHW2QB.mjs} +29 -7
  34. package/dist/{stream-import-KEGNP3QK.mjs → stream-import-GZ2QDE3Z.mjs} +10 -8
  35. package/dist/{undici-ZSXBT7EA.mjs → undici-MU5I3L6Q.mjs} +2 -2
  36. package/dist/{update-checker-LGMTEKMT.mjs → update-checker-3N7HQEP2.mjs} +2 -2
  37. package/dist/{worker-runtime-MDYKX3BW.mjs → worker-runtime-OWN56GG5.mjs} +14 -8
  38. package/dist/worker-runtime-OWN56GG5.mjs.map +1 -0
  39. package/dist-cli-web/assets/{ActionToolsPanel.vue_vue_type_script_setup_true_lang-JxPR2O6b.js → ActionToolsPanel.vue_vue_type_script_setup_true_lang-yr_T4ttU.js} +14 -14
  40. package/dist-cli-web/assets/{BufferResource--dSbJb0k.js → BufferResource-B-LHxriL.js} +1 -1
  41. package/dist-cli-web/assets/{CanvasRenderer-Cm_dmJXZ.js → CanvasRenderer-W3h_GGHM.js} +1 -1
  42. package/dist-cli-web/assets/{DataDirCleanupNotice-B0s5txX3.js → DataDirCleanupNotice-C6CMNhfs.js} +1 -1
  43. package/dist-cli-web/assets/{EChartWordcloud-CwMVJLBO.js → EChartWordcloud-Dt6rCzHf.js} +1 -1
  44. package/dist-cli-web/assets/{Filter-BjYScRpK.js → Filter-BpSopVKd.js} +1 -1
  45. package/dist-cli-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-BshQybD_.js → LoadingState.vue_vue_type_script_setup_true_lang-Bi_Uag3T.js} +1 -1
  46. package/dist-cli-web/assets/{MessageExportModal-DAJW2mFj.js → MessageExportModal-BoK-_h25.js} +1 -1
  47. package/dist-cli-web/assets/{PageHeader-BKAjCuqs.js → PageHeader-CD8B7Emf.js} +1 -1
  48. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-mlZs7k4L.js → RelationshipGalaxyCanvas-BO3mo-Re.js} +7 -7
  49. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-Brnpz6Ig.js +4108 -0
  50. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-CeYJABxI.css → RelationshipGalaxyThreeCanvas-CMuibfiA.css} +1 -1
  51. package/dist-cli-web/assets/{RenderTargetSystem-D00Ex44y.js → RenderTargetSystem-CNP4JLfK.js} +1 -1
  52. package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-Dsb6lzs-.js → ThemeCard.vue_vue_type_script_setup_true_lang-Na3LIoSJ.js} +1 -1
  53. package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-BfR3tlkz.js → TimeSelect.vue_vue_type_script_setup_true_lang-CKe1YZrV.js} +1 -1
  54. package/dist-cli-web/assets/{WebGLRenderer-CTTusm2n.js → WebGLRenderer-CIR5cTQN.js} +1 -1
  55. package/dist-cli-web/assets/{WebGPURenderer-pyv3EXor.js → WebGPURenderer-Dz3pCrzX.js} +1 -1
  56. package/dist-cli-web/assets/{annual-summary-time-range-C_d1oZrj.js → annual-summary-time-range-QhoA3uC6.js} +1 -1
  57. package/dist-cli-web/assets/{base-D91aVUwM.js → base-p9yfnTpk.js} +1 -1
  58. package/dist-cli-web/assets/{browserAll-C9fW936Y.js → browserAll-DMaXjf8N.js} +1 -1
  59. package/dist-cli-web/assets/cli-web-Dvy2aHxG.js +1 -0
  60. package/dist-cli-web/assets/{dateFormat-rY43adcv.js → dateFormat-5x3JKlIk.js} +1 -1
  61. package/dist-cli-web/assets/{fetch-CbnX5VoM.js → fetch-B0p6QRQ8.js} +1 -1
  62. package/dist-cli-web/assets/{fetch-DYNgtIcU.js → fetch-BI-Se2p7.js} +1 -1
  63. package/dist-cli-web/assets/{fetch-Kk2knkEo.js → fetch-BderOzzL.js} +1 -1
  64. package/dist-cli-web/assets/{fetch-DG3AeEjW.js → fetch-BtJWW2-O.js} +1 -1
  65. package/dist-cli-web/assets/fetch-CBaZNOpK.js +4 -0
  66. package/dist-cli-web/assets/{fetch-CNy9OQ2g.js → fetch-CH9Hm20R.js} +1 -1
  67. package/dist-cli-web/assets/{fetch-CrSz5KJy.js → fetch-CbpKKkdO.js} +1 -1
  68. package/dist-cli-web/assets/{fetch-PLrI3V67.js → fetch-Cne-uL1m.js} +1 -1
  69. package/dist-cli-web/assets/{fetch-DZPC3D8R.js → fetch-DRGykJYb.js} +1 -1
  70. package/dist-cli-web/assets/{fetch-CS3T-v-1.js → fetch-QLurhC_z.js} +1 -1
  71. package/dist-cli-web/assets/{index-JYfjMRb-.js → index-4NL2pYn0.js} +1 -1
  72. package/dist-cli-web/assets/{index-2-OaYdzt.js → index-B-KdENnr.js} +1 -1
  73. package/dist-cli-web/assets/{index-CGI3Y8pq.js → index-BDyixm5n.js} +1 -1
  74. package/dist-cli-web/assets/{index-BKo68Iu5.js → index-BaCd1avL.js} +1 -1
  75. package/dist-cli-web/assets/{index-ZTgfCZvY.js → index-CVBBDI3B.js} +3 -3
  76. package/dist-cli-web/assets/index-CXh01dqh.js +2 -0
  77. package/dist-cli-web/assets/index-CioAsn_2.js +137 -0
  78. package/dist-cli-web/assets/{index-DA3Q0TGT.js → index-Ct90lmPb.js} +1 -1
  79. package/dist-cli-web/assets/index-CumZ5uQ4.js +53 -0
  80. package/dist-cli-web/assets/index-CxGtGxLW.css +1 -0
  81. package/dist-cli-web/assets/{index-DsdMsKYT.js → index-DF2Dijfg.js} +1 -1
  82. package/dist-cli-web/assets/{index-3YO6RI5e.js → index-DYCPQMOl.js} +2 -2
  83. package/dist-cli-web/assets/{index-DFHYr_-u.js → index-Dp2uglLH.js} +1 -1
  84. package/dist-cli-web/assets/{index-BrkDgcJ6.js → index-IvxuxPNt.js} +1 -1
  85. package/dist-cli-web/assets/{people-page-header-D-LWaEqn.js → people-page-header-BRb9BrgP.js} +1 -1
  86. package/dist-cli-web/assets/telemetry-DPC69b73.js +1 -0
  87. package/dist-cli-web/assets/{webworkerAll-CPOVECup.js → webworkerAll-BoY19vZt.js} +1 -1
  88. package/dist-cli-web/index.html +1 -1
  89. package/package.json +3 -2
  90. package/dist/chunk-AQPDZAWB.mjs.map +0 -1
  91. package/dist/chunk-BQ3QN4QT.mjs.map +0 -1
  92. package/dist/chunk-DGF3S3TZ.mjs.map +0 -1
  93. package/dist/chunk-IGK6UMN2.mjs.map +0 -1
  94. package/dist/chunk-OLE2USEN.mjs.map +0 -1
  95. package/dist/chunk-S5NCEESV.mjs.map +0 -1
  96. package/dist/chunk-UO2XVFY6.mjs.map +0 -1
  97. package/dist/onnxruntime_binding-6Q6HXASN.node +0 -0
  98. package/dist/onnxruntime_binding-EKZT2NRK.node +0 -0
  99. package/dist/onnxruntime_binding-P6S7V3CI.node +0 -0
  100. package/dist/onnxruntime_binding-PJNNIIUO.node +0 -0
  101. package/dist/onnxruntime_binding-UN6SPTQK.node +0 -0
  102. package/dist/transformers.node-PUMHAODN.mjs +0 -42889
  103. package/dist/transformers.node-PUMHAODN.mjs.map +0 -1
  104. package/dist/worker-runtime-MDYKX3BW.mjs.map +0 -1
  105. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-DgMG3jdU.js +0 -4108
  106. package/dist-cli-web/assets/cli-web-C7uGKz_E.js +0 -1
  107. package/dist-cli-web/assets/fetch-C6po4XYB.js +0 -3
  108. package/dist-cli-web/assets/index-2S80bo1s.js +0 -2
  109. package/dist-cli-web/assets/index-CW9H_fBd.js +0 -53
  110. package/dist-cli-web/assets/index-DmrrdYXH.css +0 -1
  111. package/dist-cli-web/assets/index-DmwA85vG.js +0 -173
  112. /package/dist/{chat-command-XPY3WURC.mjs.map → chat-command-6IOH2QRF.mjs.map} +0 -0
  113. /package/dist/{chunk-ISRLGLUL.mjs.map → chunk-4RLZFGO5.mjs.map} +0 -0
  114. /package/dist/{chunk-IGEHMLHM.mjs.map → chunk-52P5ZRBD.mjs.map} +0 -0
  115. /package/dist/{chunk-JTOHAMIW.mjs.map → chunk-652KEAX3.mjs.map} +0 -0
  116. /package/dist/{chunk-JCSPDTZL.mjs.map → chunk-H6D4DZOC.mjs.map} +0 -0
  117. /package/dist/{chunk-GFHSSCCR.mjs.map → chunk-VSOWNKPA.mjs.map} +0 -0
  118. /package/dist/{http-HV6XWU6X.mjs.map → http-HSK46XEU.mjs.map} +0 -0
  119. /package/dist/{import-DP2XLZ2H.mjs.map → import-DF2WD2HE.mjs.map} +0 -0
  120. /package/dist/{mcp-QDPFBPGW.mjs.map → mcp-A2RND7KN.mjs.map} +0 -0
  121. /package/dist/{service-KGL3RAIA.mjs.map → service-KZTHBDQ5.mjs.map} +0 -0
  122. /package/dist/{src-B3A2QHP5.mjs.map → src-SHFHW2QB.mjs.map} +0 -0
  123. /package/dist/{stream-import-KEGNP3QK.mjs.map → stream-import-GZ2QDE3Z.mjs.map} +0 -0
  124. /package/dist/{undici-ZSXBT7EA.mjs.map → undici-MU5I3L6Q.mjs.map} +0 -0
  125. /package/dist/{update-checker-LGMTEKMT.mjs.map → update-checker-3N7HQEP2.mjs.map} +0 -0
@@ -263,14 +263,10 @@ var MigrationRunner = class {
263
263
  }
264
264
  writeVersion(version) {
265
265
  const versionPath = path3.join(this.context.dataDir, VERSION_FILE);
266
- try {
267
- if (!fs3.existsSync(this.context.dataDir)) {
268
- fs3.mkdirSync(this.context.dataDir, { recursive: true });
269
- }
270
- fs3.writeFileSync(versionPath, String(version), "utf-8");
271
- } catch (err) {
272
- this.context.logger.error("Migration", `Failed to write version file: ${err}`);
266
+ if (!fs3.existsSync(this.context.dataDir)) {
267
+ fs3.mkdirSync(this.context.dataDir, { recursive: true });
273
268
  }
269
+ fs3.writeFileSync(versionPath, String(version), "utf-8");
274
270
  }
275
271
  async run() {
276
272
  const currentVersion = this.getCurrentVersion();
@@ -285,14 +281,19 @@ var MigrationRunner = class {
285
281
  this.context.logger.info("Migration", `Running: v${lastVersion}\u2192v${migration.version} ${migration.name}`);
286
282
  try {
287
283
  await migration.up(this.context);
288
- lastVersion = migration.version;
289
- this.writeVersion(lastVersion);
290
- executed++;
291
- this.context.logger.info("Migration", `Completed: ${migration.name}`);
292
284
  } catch (err) {
293
285
  this.context.logger.error("Migration", `Failed: ${migration.name}`, err);
294
286
  break;
295
287
  }
288
+ try {
289
+ this.writeVersion(migration.version);
290
+ } catch (err) {
291
+ this.context.logger.error("Migration", `Failed to persist version ${migration.version}`, err);
292
+ throw err;
293
+ }
294
+ lastVersion = migration.version;
295
+ executed++;
296
+ this.context.logger.info("Migration", `Completed: ${migration.name}`);
296
297
  }
297
298
  return { executed, currentVersion: lastVersion };
298
299
  }
@@ -675,6 +676,21 @@ function writeAuthProfile(name, profile) {
675
676
  writeJsonFileAtomically(filePath, data, 384);
676
677
  });
677
678
  }
679
+ function writeAuthProfileWithUniqueName(baseName, profile) {
680
+ const filePath = getAuthProfilesPath();
681
+ return withFileLock(filePath, () => {
682
+ const data = loadAuthProfiles();
683
+ let name = baseName;
684
+ let suffix = 2;
685
+ while (Object.hasOwn(data.profiles, name)) {
686
+ name = `${baseName}-${suffix}`;
687
+ suffix += 1;
688
+ }
689
+ data.profiles = { ...data.profiles, [name]: profile };
690
+ writeJsonFileAtomically(filePath, data, 384);
691
+ return name;
692
+ });
693
+ }
678
694
  function deleteAuthProfile(name) {
679
695
  const filePath = getAuthProfilesPath();
680
696
  return withFileLock(filePath, () => {
@@ -698,7 +714,6 @@ var m004EncryptedKeysToAuthProfiles = {
698
714
  if (!data) return;
699
715
  const configs = data.configs || [];
700
716
  let migrated = false;
701
- const usedProfileNames = /* @__PURE__ */ new Set();
702
717
  for (const config of configs) {
703
718
  const apiKey = config.apiKey;
704
719
  if (!apiKey) continue;
@@ -715,14 +730,11 @@ var m004EncryptedKeysToAuthProfiles = {
715
730
  }
716
731
  if (plainKey) {
717
732
  const baseName = deriveAuthProfileName(provider, config);
718
- let profileName = baseName;
719
- if (usedProfileNames.has(profileName)) {
720
- let i = 2;
721
- while (usedProfileNames.has(`${profileName}-${i}`)) i++;
722
- profileName = `${profileName}-${i}`;
723
- }
724
- usedProfileNames.add(profileName);
725
- writeAuthProfile(profileName, { type: "api_key", provider, key: plainKey });
733
+ const profileName = writeAuthProfileWithUniqueName(baseName, {
734
+ type: "api_key",
735
+ provider,
736
+ key: plainKey
737
+ });
726
738
  config.authProfile = profileName;
727
739
  config.apiKey = "";
728
740
  migrated = true;
@@ -2866,6 +2878,11 @@ function getSegmentSummaries(db, options) {
2866
2878
  });
2867
2879
  }
2868
2880
  var DEFAULT_SESSION_GAP_THRESHOLD = 1800;
2881
+ var MIN_SESSION_GAP_THRESHOLD = 60;
2882
+ var MAX_SESSION_GAP_THRESHOLD = 86400;
2883
+ function normalizeSessionGapThreshold(value) {
2884
+ return typeof value === "number" && Number.isInteger(value) && value >= MIN_SESSION_GAP_THRESHOLD && value <= MAX_SESSION_GAP_THRESHOLD ? value : DEFAULT_SESSION_GAP_THRESHOLD;
2885
+ }
2869
2886
  function hasSessionIndex(db) {
2870
2887
  if (!hasTable(db, "segment")) return false;
2871
2888
  try {
@@ -2925,6 +2942,9 @@ function getSegmentSummary(db, segmentId) {
2925
2942
  function saveSegmentSummary(db, segmentId, summary) {
2926
2943
  db.prepare("UPDATE segment SET summary = ? WHERE id = ?").run(summary, segmentId);
2927
2944
  }
2945
+ function updateSessionGapThreshold(db, gapThreshold) {
2946
+ db.prepare("UPDATE meta SET session_gap_threshold = ?").run(gapThreshold);
2947
+ }
2928
2948
  function updateSessionOwnerId(db, ownerId) {
2929
2949
  db.prepare("UPDATE meta SET owner_id = ?").run(ownerId);
2930
2950
  }
@@ -2985,6 +3005,7 @@ function generateSessionIndex(db, gapThreshold = DEFAULT_SESSION_GAP_THRESHOLD,
2985
3005
  processed++;
2986
3006
  if (onProgress && processed % 100 === 0) onProgress(processed, total);
2987
3007
  }
3008
+ updateSessionGapThreshold(db, gapThreshold);
2988
3009
  if (onProgress) onProgress(total, total);
2989
3010
  return total;
2990
3011
  });
@@ -8928,7 +8949,9 @@ function getChatDbMigrations(deps) {
8928
8949
  db.exec("CREATE INDEX IF NOT EXISTS idx_message_platform_id ON message(platform_message_id)");
8929
8950
  db.exec("CREATE INDEX IF NOT EXISTS idx_member_name_history_member_id ON member_name_history(member_id)");
8930
8951
  db.exec("CREATE INDEX IF NOT EXISTS idx_session_time ON chat_session(start_ts, end_ts)");
8931
- db.exec("CREATE INDEX IF NOT EXISTS idx_context_session ON message_context(session_id)");
8952
+ if (hasColumn2(db, "message_context", "session_id")) {
8953
+ db.exec("CREATE INDEX IF NOT EXISTS idx_context_session ON message_context(session_id)");
8954
+ }
8932
8955
  }
8933
8956
  },
8934
8957
  {
@@ -9200,6 +9223,10 @@ function createMigrationDeps(overrides) {
9200
9223
  ...overrides
9201
9224
  };
9202
9225
  }
9226
+ function listDatabaseCandidateIds(databaseDir) {
9227
+ if (!fs13.existsSync(databaseDir)) return [];
9228
+ return fs13.readdirSync(databaseDir).filter((fileName) => fileName.endsWith(".db") && !fileName.startsWith("._")).map((fileName) => fileName.slice(0, -3));
9229
+ }
9203
9230
  var DatabaseManager = class {
9204
9231
  constructor(pathProvider, options = {}) {
9205
9232
  this.pathProvider = pathProvider;
@@ -9310,8 +9337,7 @@ var DatabaseManager = class {
9310
9337
  listSessionIds() {
9311
9338
  this.assertCompatible();
9312
9339
  const dbDir = this.pathProvider.getDatabaseDir();
9313
- if (!fs13.existsSync(dbDir)) return [];
9314
- return fs13.readdirSync(dbDir).filter((f) => f.endsWith(".db")).map((f) => f.replace(".db", "")).filter((id) => {
9340
+ return listDatabaseCandidateIds(dbDir).filter((id) => {
9315
9341
  const db = this.open(id);
9316
9342
  if (!db) return false;
9317
9343
  return isChatSessionDb(db);
@@ -9323,8 +9349,7 @@ var DatabaseManager = class {
9323
9349
  listSessionIdsReadonly() {
9324
9350
  this.assertCompatible();
9325
9351
  const dbDir = this.pathProvider.getDatabaseDir();
9326
- if (!fs13.existsSync(dbDir)) return [];
9327
- return fs13.readdirSync(dbDir).filter((fileName) => fileName.endsWith(".db")).map((fileName) => fileName.replace(".db", "")).filter((sessionId) => {
9352
+ return listDatabaseCandidateIds(dbDir).filter((sessionId) => {
9328
9353
  const db = this.openRawSessionDatabase(sessionId, { readonly: true });
9329
9354
  try {
9330
9355
  return isChatSessionDb(db);
@@ -9566,6 +9591,7 @@ export {
9566
9591
  getChatOverview,
9567
9592
  getSegmentMessages,
9568
9593
  getSegmentSummaries,
9594
+ normalizeSessionGapThreshold,
9569
9595
  getSessionIndexStats,
9570
9596
  getChatSessionList,
9571
9597
  getSegmentSummary,
@@ -9713,6 +9739,7 @@ export {
9713
9739
  deleteAnnualSummarySnapshots,
9714
9740
  getPeopleRelationshipsDir,
9715
9741
  getPeopleRelationshipsFactsCacheDir,
9742
+ listDatabaseCandidateIds,
9716
9743
  DatabaseManager,
9717
9744
  getDbFileVersion,
9718
9745
  getOrComputeAnalysisCache,
@@ -9720,4 +9747,4 @@ export {
9720
9747
  StaticPathProvider,
9721
9748
  createDatabaseManagerAdapter
9722
9749
  };
9723
- //# sourceMappingURL=chunk-OLE2USEN.mjs.map
9750
+ //# sourceMappingURL=chunk-INBJ7SND.mjs.map