chatlab-cli 0.34.2 → 0.35.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 (176) hide show
  1. package/dist/{chat-command-6IOH2QRF.mjs → chat-command-24RYGJAS.mjs} +8 -8
  2. package/dist/{chunk-INBJ7SND.mjs → chunk-22YJOBA3.mjs} +589 -513
  3. package/dist/chunk-22YJOBA3.mjs.map +1 -0
  4. package/dist/{chunk-4LW6443F.mjs → chunk-4GWWKHWA.mjs} +833 -886
  5. package/dist/chunk-4GWWKHWA.mjs.map +1 -0
  6. package/dist/{chunk-MENKFEPC.mjs → chunk-7IGBPZMI.mjs} +56 -48
  7. package/dist/chunk-7IGBPZMI.mjs.map +1 -0
  8. package/dist/{chunk-72RWABYJ.mjs → chunk-BRZ6YIBR.mjs} +3 -3
  9. package/dist/chunk-BRZ6YIBR.mjs.map +1 -0
  10. package/dist/{chunk-2XCNTG4O.mjs → chunk-DC7IUDNV.mjs} +677 -69
  11. package/dist/chunk-DC7IUDNV.mjs.map +1 -0
  12. package/dist/{chunk-H6D4DZOC.mjs → chunk-DEFEU567.mjs} +12 -18
  13. package/dist/chunk-DEFEU567.mjs.map +1 -0
  14. package/dist/{chunk-4RLZFGO5.mjs → chunk-GQMCDWZQ.mjs} +2 -2
  15. package/dist/{chunk-52P5ZRBD.mjs → chunk-KIMJXKZO.mjs} +2 -2
  16. package/dist/{chunk-652KEAX3.mjs → chunk-KXDJ7N6N.mjs} +2 -2
  17. package/dist/{chunk-U6MVJSXX.mjs → chunk-QKEARRFH.mjs} +15 -9
  18. package/dist/chunk-QKEARRFH.mjs.map +1 -0
  19. package/dist/{chunk-UMBEHBIZ.mjs → chunk-U36TQMAF.mjs} +2 -2
  20. package/dist/{chunk-JX6MFS6F.mjs → chunk-ZBPPLXM4.mjs} +15 -15
  21. package/dist/cli.mjs +9 -9
  22. package/dist/contacts-worker.mjs +2 -2
  23. package/dist/global-insight-worker.mjs +1 -1
  24. package/dist/{http-HSK46XEU.mjs → http-3K4YMWDE.mjs} +12 -12
  25. package/dist/{import-DF2WD2HE.mjs → import-D4LV565A.mjs} +7 -7
  26. package/dist/index.mjs +12 -12
  27. package/dist/{mcp-A2RND7KN.mjs → mcp-KL22FKQ2.mjs} +8 -8
  28. package/dist/people-relationships-worker.mjs +2 -2
  29. package/dist/semantic-index-worker.mjs +1 -1
  30. package/dist/{src-SHFHW2QB.mjs → src-COIB6Z4P.mjs} +24 -38
  31. package/dist/{stream-import-GZ2QDE3Z.mjs → stream-import-FSXCFG4M.mjs} +7 -7
  32. package/dist/{worker-runtime-OWN56GG5.mjs → worker-runtime-DPS2LURI.mjs} +5 -5
  33. package/dist-cli-web/assets/AISettingsTab-rQC2ocFH.js +1 -0
  34. package/dist-cli-web/assets/AboutTab-DMPziKjj.js +1 -0
  35. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-CnRLt_1j.js +110 -0
  36. package/dist-cli-web/assets/Alert--bTQXRcZ.js +1 -0
  37. package/dist-cli-web/assets/ApiSettingsTab-CtXl4I28.js +2 -0
  38. package/dist-cli-web/assets/BatchManageTab-1KaCPweN.js +1 -0
  39. package/dist-cli-web/assets/{BufferResource-BdKXeRZS.js → BufferResource-BXSJADxx.js} +1 -1
  40. package/dist-cli-web/assets/CanvasRenderer-Cq--8UQ_.js +1 -0
  41. package/dist-cli-web/assets/ChatRecordDrawer-BC0F7ok1.js +11 -0
  42. package/dist-cli-web/assets/ChatRecordDrawer-Tt6UduRC.css +1 -0
  43. package/dist-cli-web/assets/Checkbox-CwajNPGF.js +1 -0
  44. package/dist-cli-web/assets/DataDirCleanupNotice-D0Oruka2.js +1 -0
  45. package/dist-cli-web/assets/DatePicker.vue_vue_type_script_setup_true_lang-C4CsoIlq.js +1 -0
  46. package/dist-cli-web/assets/DebugToolsPanel-DVDwS-wz.js +1 -0
  47. package/dist-cli-web/assets/EChartWordcloud-KV0MdsDE.js +1 -0
  48. package/dist-cli-web/assets/{Filter-B2eEAPxI.js → Filter-DVaqcFmI.js} +1 -1
  49. package/dist-cli-web/assets/GlobalTaskBar-COW_uBX6.css +1 -0
  50. package/dist-cli-web/assets/GlobalTaskBar-DpPMX0jx.js +1 -0
  51. package/dist-cli-web/assets/GroupRelationshipGalaxyView-CLnO3phW.js +1 -0
  52. package/dist-cli-web/assets/Label-Bt2U4lGy.js +1 -0
  53. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-Cnshyn0f.js +1 -0
  54. package/dist-cli-web/assets/MessageExportModal-BozaR9UZ.js +1 -0
  55. package/dist-cli-web/assets/PageHeader-CEe0xTl3.js +1 -0
  56. package/dist-cli-web/assets/PageTabs.vue_vue_type_script_setup_true_lang-D2DZrrnv.js +1 -0
  57. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-CwQ63TPi.js → RelationshipGalaxyCanvas-6EamagxG.js} +3 -3
  58. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-BLqISQe5.js → RelationshipGalaxyThreeCanvas-B6GB4PWS.js} +166 -166
  59. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-CMuibfiA.css → RelationshipGalaxyThreeCanvas-TYGOUDiv.css} +1 -1
  60. package/dist-cli-web/assets/{RenderTargetSystem-eC_VrDAr.js → RenderTargetSystem-mYuj4uBS.js} +1 -1
  61. package/dist-cli-web/assets/RovingFocusItem-B2y6BG1a.js +1 -0
  62. package/dist-cli-web/assets/ScreenCaptureModal-BvAtSNNR.js +1 -0
  63. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-ueEF4zHE.js +1 -0
  64. package/dist-cli-web/assets/Select-Cm4I8u9n.js +1 -0
  65. package/dist-cli-web/assets/SettingsModal-CjVax3I6.css +1 -0
  66. package/dist-cli-web/assets/SettingsModal-Cwshzj7i.js +2 -0
  67. package/dist-cli-web/assets/StorageTab-D7HzH16Y.js +1 -0
  68. package/dist-cli-web/assets/Switch-BVw4e_19.js +1 -0
  69. package/dist-cli-web/assets/Tabs-Dqwkh3Ea.js +1 -0
  70. package/dist-cli-web/assets/Tabs-OrJkANIA.js +1 -0
  71. package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-DPIvbq75.js +1 -0
  72. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-dEdo6CqM.js +1 -0
  73. package/dist-cli-web/assets/VisuallyHiddenInput-BOdkR_GC.js +1 -0
  74. package/dist-cli-web/assets/{WebGLRenderer-CRp_HC84.js → WebGLRenderer-BB8ukBI_.js} +2 -2
  75. package/dist-cli-web/assets/{WebGPURenderer-WIUnEhpi.js → WebGPURenderer-DDOzF1Kc.js} +2 -2
  76. package/dist-cli-web/assets/aiChat-CzFSFuOJ.js +8 -0
  77. package/dist-cli-web/assets/annual-summary-time-range-CmrAqcuj.js +1 -0
  78. package/dist-cli-web/assets/base-CawUl6ET.js +1 -0
  79. package/dist-cli-web/assets/{browserAll-B29Ox2in.js → browserAll-BRqlnNxq.js} +2 -2
  80. package/dist-cli-web/assets/chatlabSiteLocale-CrCNb8QP.js +1 -0
  81. package/dist-cli-web/assets/clamp-jFYhBC76.js +1 -0
  82. package/dist-cli-web/assets/cli-web-ClAJ6Tao.js +1 -0
  83. package/dist-cli-web/assets/{dateFormat-T7kMS5IP.js → dateFormat-DXuDxIye.js} +1 -1
  84. package/dist-cli-web/assets/fetch-3_xX8Yi8.js +1 -0
  85. package/dist-cli-web/assets/{fetch-DsHf-61a.js → fetch-Bcy2T8Fe.js} +1 -1
  86. package/dist-cli-web/assets/{fetch-DvrVGAzR.js → fetch-CGu53cxT.js} +1 -1
  87. package/dist-cli-web/assets/{fetch-BBgZQob_.js → fetch-CP1afnT0.js} +1 -1
  88. package/dist-cli-web/assets/{fetch-D9sn99zX.js → fetch-DWAIk_6_.js} +1 -1
  89. package/dist-cli-web/assets/{fetch-BKBlpBl4.js → fetch-DijSOvop.js} +1 -1
  90. package/dist-cli-web/assets/{fetch-CYaGyohV.js → fetch-Dy38lkAa.js} +1 -1
  91. package/dist-cli-web/assets/{fetch-L6PKD8-N.js → fetch-DzKlTaLz.js} +1 -1
  92. package/dist-cli-web/assets/{fetch-D8hJZa8o.js → fetch-LY-yerw1.js} +1 -1
  93. package/dist-cli-web/assets/{fetch-BLi6Jsjg.js → fetch-q480XYZQ.js} +1 -1
  94. package/dist-cli-web/assets/index-0dp58uL4.css +1 -0
  95. package/dist-cli-web/assets/index-1X7zdLgJ.css +1 -0
  96. package/dist-cli-web/assets/index-4enwdBcq.css +1 -0
  97. package/dist-cli-web/assets/index-AudHHbMs.js +1 -0
  98. package/dist-cli-web/assets/{index-0qcENyvH.js → index-BRV_D8dv.js} +3 -3
  99. package/dist-cli-web/assets/index-CF4DTbvD.js +1 -0
  100. package/dist-cli-web/assets/index-CMLoht5R.js +1 -0
  101. package/dist-cli-web/assets/index-CMPHZH6B.css +1 -0
  102. package/dist-cli-web/assets/index-CNzv7aBW.js +1 -0
  103. package/dist-cli-web/assets/index-CXUTiy-V.js +1 -0
  104. package/dist-cli-web/assets/index-D5m0P4ss.js +36 -0
  105. package/dist-cli-web/assets/index-Di6FmCdk.js +64 -0
  106. package/dist-cli-web/assets/index-DkOrt7_X.js +2 -0
  107. package/dist-cli-web/assets/index-Dlb6fC68.js +1 -0
  108. package/dist-cli-web/assets/index-IA7YUjQX.js +2 -0
  109. package/dist-cli-web/assets/index-kzU381y1.js +1 -0
  110. package/dist-cli-web/assets/index-z8Vogc-b.js +137 -0
  111. package/dist-cli-web/assets/lazy-overlay-visibility-Bd9ZFOgR.js +1 -0
  112. package/dist-cli-web/assets/member-select-utils-BXZ3oHct.js +1 -0
  113. package/dist-cli-web/assets/people-page-header-Bh3KXD4g.js +1 -0
  114. package/dist-cli-web/assets/prompt-DcAcgQiB.js +1 -0
  115. package/dist-cli-web/assets/relationship-galaxy-connections-Cg4G5yYE.js +1 -0
  116. package/dist-cli-web/assets/semantic-index-config-builder-CK6v64Y1.js +1 -0
  117. package/dist-cli-web/assets/service-YZnJyEMq.js +1 -0
  118. package/dist-cli-web/assets/useFormControl-B-aXrJZN.js +1 -0
  119. package/dist-cli-web/assets/useTable-DPEMaGby.js +1 -0
  120. package/dist-cli-web/assets/useToast-B36MzFFy.js +1 -0
  121. package/dist-cli-web/assets/vendor-echarts-DfAMQxdr.js +11 -0
  122. package/dist-cli-web/assets/{vendor-echarts-wordcloud-Ca8n6qS6.js → vendor-echarts-wordcloud-BsaEJTPY.js} +1 -1
  123. package/dist-cli-web/assets/vendor-zrender-PFmZe1EY.js +8 -0
  124. package/dist-cli-web/assets/{webworkerAll-B2qvP2qR.js → webworkerAll-Dwqmy_YO.js} +1 -1
  125. package/dist-cli-web/index.html +2 -2
  126. package/package.json +1 -1
  127. package/dist/chunk-2XCNTG4O.mjs.map +0 -1
  128. package/dist/chunk-4LW6443F.mjs.map +0 -1
  129. package/dist/chunk-72RWABYJ.mjs.map +0 -1
  130. package/dist/chunk-H6D4DZOC.mjs.map +0 -1
  131. package/dist/chunk-INBJ7SND.mjs.map +0 -1
  132. package/dist/chunk-MENKFEPC.mjs.map +0 -1
  133. package/dist/chunk-U6MVJSXX.mjs.map +0 -1
  134. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-B06LYYS9.js +0 -110
  135. package/dist-cli-web/assets/CanvasRenderer-DDRdIyZ8.js +0 -1
  136. package/dist-cli-web/assets/DataDirCleanupNotice-CP8P1lsL.js +0 -1
  137. package/dist-cli-web/assets/EChartWordcloud-CqknPGui.js +0 -1
  138. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-BFaXTz1c.js +0 -1
  139. package/dist-cli-web/assets/MessageExportModal-CZge6qub.js +0 -1
  140. package/dist-cli-web/assets/PageHeader-CxKbcLDc.js +0 -1
  141. package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-DVmpDz05.js +0 -1
  142. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-CCH1UQGc.js +0 -1
  143. package/dist-cli-web/assets/annual-summary-time-range-R3pLPEuN.js +0 -1
  144. package/dist-cli-web/assets/base-CLwWn3Rs.js +0 -1
  145. package/dist-cli-web/assets/cli-web-CVLb5Pkq.js +0 -1
  146. package/dist-cli-web/assets/fetch-Cm2WR2Cv.js +0 -1
  147. package/dist-cli-web/assets/index-AkF_KqVI.js +0 -1
  148. package/dist-cli-web/assets/index-BVOFyB9E.js +0 -137
  149. package/dist-cli-web/assets/index-BkdOH41D.js +0 -1
  150. package/dist-cli-web/assets/index-C4TuoOLM.js +0 -2
  151. package/dist-cli-web/assets/index-C6Mk-Xqt.js +0 -1
  152. package/dist-cli-web/assets/index-CkgUsaeX.js +0 -1
  153. package/dist-cli-web/assets/index-CuAy1Xmt.js +0 -64
  154. package/dist-cli-web/assets/index-D_0qeKKc.js +0 -53
  155. package/dist-cli-web/assets/index-DeR0Vukh.js +0 -1
  156. package/dist-cli-web/assets/index-DrjoMv9s.css +0 -1
  157. package/dist-cli-web/assets/index-Dx-XvfIK.js +0 -2
  158. package/dist-cli-web/assets/index-Jhwca9kg.css +0 -1
  159. package/dist-cli-web/assets/index-_DrviTnP.js +0 -1
  160. package/dist-cli-web/assets/index-vtF05fh7.css +0 -1
  161. package/dist-cli-web/assets/index-xN0sjOLK.js +0 -1
  162. package/dist-cli-web/assets/people-page-header-CCNJOrmK.js +0 -1
  163. package/dist-cli-web/assets/vendor-echarts-B-i_56Av.js +0 -11
  164. package/dist-cli-web/assets/vendor-zrender-5DcYjSZk.js +0 -8
  165. /package/dist/{chat-command-6IOH2QRF.mjs.map → chat-command-24RYGJAS.mjs.map} +0 -0
  166. /package/dist/{chunk-4RLZFGO5.mjs.map → chunk-GQMCDWZQ.mjs.map} +0 -0
  167. /package/dist/{chunk-52P5ZRBD.mjs.map → chunk-KIMJXKZO.mjs.map} +0 -0
  168. /package/dist/{chunk-652KEAX3.mjs.map → chunk-KXDJ7N6N.mjs.map} +0 -0
  169. /package/dist/{chunk-UMBEHBIZ.mjs.map → chunk-U36TQMAF.mjs.map} +0 -0
  170. /package/dist/{chunk-JX6MFS6F.mjs.map → chunk-ZBPPLXM4.mjs.map} +0 -0
  171. /package/dist/{http-HSK46XEU.mjs.map → http-3K4YMWDE.mjs.map} +0 -0
  172. /package/dist/{import-DF2WD2HE.mjs.map → import-D4LV565A.mjs.map} +0 -0
  173. /package/dist/{mcp-A2RND7KN.mjs.map → mcp-KL22FKQ2.mjs.map} +0 -0
  174. /package/dist/{src-SHFHW2QB.mjs.map → src-COIB6Z4P.mjs.map} +0 -0
  175. /package/dist/{stream-import-GZ2QDE3Z.mjs.map → stream-import-FSXCFG4M.mjs.map} +0 -0
  176. /package/dist/{worker-runtime-OWN56GG5.mjs.map → worker-runtime-DPS2LURI.mjs.map} +0 -0
@@ -11,14 +11,14 @@ import {
11
11
  getServerAiLogger,
12
12
  getSkillManagerCore,
13
13
  initServerAiLogger
14
- } from "./chunk-H6D4DZOC.mjs";
14
+ } from "./chunk-DEFEU567.mjs";
15
15
  import {
16
16
  AGENT_TOOL_REGISTRY,
17
17
  CoreDataProvider
18
- } from "./chunk-72RWABYJ.mjs";
18
+ } from "./chunk-BRZ6YIBR.mjs";
19
19
  import {
20
20
  resolveCliLocalEmbeddingRuntimeConfig
21
- } from "./chunk-UMBEHBIZ.mjs";
21
+ } from "./chunk-U36TQMAF.mjs";
22
22
  import {
23
23
  analyzeIncrementalImport,
24
24
  analyzeNewImport,
@@ -26,10 +26,10 @@ import {
26
26
  autoImportBatch,
27
27
  incrementalImport,
28
28
  streamImport
29
- } from "./chunk-U6MVJSXX.mjs";
29
+ } from "./chunk-QKEARRFH.mjs";
30
30
  import {
31
31
  assertCliDataDirCompatible
32
- } from "./chunk-4RLZFGO5.mjs";
32
+ } from "./chunk-GQMCDWZQ.mjs";
33
33
  import {
34
34
  getVersion
35
35
  } from "./chunk-5ADKYYNA.mjs";
@@ -43,18 +43,26 @@ import {
43
43
  applyPendingNodeDataDirMigrationIfNeeded,
44
44
  buildMergedOutput,
45
45
  checkConflictsFromSources,
46
+ computeWordFrequency,
46
47
  createJiebaNlpProvider,
47
48
  createNodeDataDirSwitch,
48
49
  createSemanticIndexWorkerRuntimeClient,
50
+ deleteDict,
49
51
  deletePendingDataDirCleanup,
50
52
  dismissPendingDataDirCleanupNotice,
53
+ downloadDict,
54
+ ensureDefaultDict,
51
55
  getDefaultNodeUserDataDir,
56
+ getDictList,
52
57
  getPendingDataDirCleanups,
53
58
  getPendingNodeDataDirMigration,
54
59
  hasPendingElectronDataWarning,
55
60
  importDemoSessions,
61
+ initNlpDir,
62
+ isDictDownloaded,
63
+ segmentText,
56
64
  serializeChatLabToJsonl
57
- } from "./chunk-2XCNTG4O.mjs";
65
+ } from "./chunk-DC7IUDNV.mjs";
58
66
  import {
59
67
  AIChatManager,
60
68
  ArchiveImportError,
@@ -63,32 +71,27 @@ import {
63
71
  ImportIdempotencyCache,
64
72
  ImportInProgressError,
65
73
  MergeSessionCache,
74
+ PARSER_FORMAT_IDS,
66
75
  SEMANTIC_INDEX_CONFIG_FILE,
67
76
  SemanticIndexConfigStore,
68
77
  TempDbWriter,
69
78
  buildPiModel,
70
- computeWordFrequency,
71
79
  countMessagesTokens,
72
80
  createChatLabTempDir,
73
81
  createContactsService,
74
82
  createGlobalInsightService,
75
83
  createLlmRuntimeStores,
76
84
  createPeopleRelationshipsService,
77
- deleteDict,
78
85
  detectAllFormats,
79
86
  detectFormat,
80
- downloadDict,
81
- ensureDefaultDict,
82
87
  exportSessionToJson,
83
88
  export_service_exports,
84
89
  fetchRemoteModels,
85
90
  findEntryFileInDirectory,
86
91
  getChatLabTempScopeDir,
87
92
  getDefaultRulesForLocale,
88
- getDictList,
89
93
  getSupportedFormats,
90
94
  hashImportBody,
91
- isDictDownloaded,
92
95
  isSemanticIndexConfigured,
93
96
  isValidImportSessionId,
94
97
  logNativeParserStatus,
@@ -100,13 +103,12 @@ import {
100
103
  resolveSemanticIndexApiKeySet,
101
104
  runSimpleLlmStream,
102
105
  scanMultiChatFile,
103
- segmentText,
104
106
  session_index_service_exports,
105
107
  session_service_exports,
106
108
  streamParseFileInfo,
107
109
  summary_service_exports,
108
110
  validateApiKey
109
- } from "./chunk-4LW6443F.mjs";
111
+ } from "./chunk-4GWWKHWA.mjs";
110
112
  import {
111
113
  ALL_MIGRATIONS,
112
114
  BUILTIN_MODELS,
@@ -116,6 +118,7 @@ import {
116
118
  CONTACTS_TIME_RANGE_PRESETS,
117
119
  DataDirCompatibilityError,
118
120
  DatabaseManager,
121
+ GROUP_RELATIONSHIP_GALAXY_ALGORITHM_VERSION,
119
122
  MigrationRunner,
120
123
  POS_TAG_DEFINITIONS,
121
124
  appLogger,
@@ -131,6 +134,7 @@ import {
131
134
  getDbFileVersion,
132
135
  getDivingAnalysis,
133
136
  getDragonKingAnalysis,
137
+ getGroupRelationshipGalaxy,
134
138
  getHourlyActivity,
135
139
  getJourneyStats,
136
140
  getLanguagePreferenceAnalysis,
@@ -142,7 +146,6 @@ import {
142
146
  getMembersWithAliases,
143
147
  getMemeBattleAnalysis,
144
148
  getMentionAnalysis,
145
- getMentionGraph,
146
149
  getMessageLengthDistribution,
147
150
  getMessageTypeStats,
148
151
  getMonthlyActivity,
@@ -160,14 +163,13 @@ import {
160
163
  getWeekdayActivity,
161
164
  getYearlyActivity,
162
165
  initAppLogger,
163
- initNlpDir,
164
166
  isNewerStableVersion,
165
167
  loadConfig,
166
168
  queryMessages,
167
169
  stripAvatarFields,
168
170
  verifyCliDataPath,
169
171
  writeConfigField
170
- } from "./chunk-INBJ7SND.mjs";
172
+ } from "./chunk-22YJOBA3.mjs";
171
173
 
172
174
  // src/http/index.ts
173
175
  import * as fs11 from "fs";
@@ -1675,19 +1677,26 @@ function registerAnalyticsRoutes(server2, ctx) {
1675
1677
  }
1676
1678
  );
1677
1679
  server2.get(
1678
- "/_web/sessions/:id/analytics/mention-graph",
1680
+ "/_web/sessions/:id/analytics/relationship-galaxy",
1679
1681
  async (request) => {
1680
1682
  const id = request.params.id;
1681
1683
  const filter = parseTimeFilter(request.query);
1682
- return cached("mention-graph", id, { ...filter }, () => getMentionGraph(adapter.ensureReadonly(id), filter));
1684
+ return cached(
1685
+ "relationship-galaxy",
1686
+ id,
1687
+ { ...filter },
1688
+ () => getGroupRelationshipGalaxy(adapter.ensureReadonly(id), filter),
1689
+ { extraVersion: GROUP_RELATIONSHIP_GALAXY_ALGORITHM_VERSION }
1690
+ );
1683
1691
  }
1684
1692
  );
1685
- server2.get(
1693
+ server2.post(
1686
1694
  "/_web/sessions/:id/analytics/laugh",
1687
1695
  async (request) => {
1688
1696
  const id = request.params.id;
1689
1697
  const filter = parseTimeFilter(request.query);
1690
- return cached("laugh", id, { ...filter }, () => getLaughAnalysis(adapter.ensureReadonly(id), filter));
1698
+ const keywords = Array.isArray(request.body?.keywords) ? request.body.keywords : [];
1699
+ return getLaughAnalysis(adapter.ensureReadonly(id), filter, keywords);
1691
1700
  }
1692
1701
  );
1693
1702
  server2.get("/_web/sessions/:id/analytics/cluster", async (request) => {
@@ -2278,6 +2287,7 @@ ${stack}` : null].filter(Boolean).join(" ");
2278
2287
  // ../../packages/http-routes/src/routes/web/members.ts
2279
2288
  function registerMemberRoutes(server2, ctx) {
2280
2289
  const { sessionAdapter: adapter } = ctx;
2290
+ const cacheDir = ctx.pathProvider.getCacheDir();
2281
2291
  server2.get("/_web/sessions/:id/members", async (request) => {
2282
2292
  return member_service_exports.getMembers(adapter, request.params.id);
2283
2293
  });
@@ -2301,7 +2311,7 @@ function registerMemberRoutes(server2, ctx) {
2301
2311
  "/_web/sessions/:id/members/:memberId",
2302
2312
  async (request) => {
2303
2313
  const memberId = parseInt(request.params.memberId, 10);
2304
- member_service_exports.deleteMember(adapter, request.params.id, memberId);
2314
+ member_service_exports.deleteMember(adapter, request.params.id, memberId, cacheDir);
2305
2315
  return { success: true };
2306
2316
  }
2307
2317
  );
@@ -2317,7 +2327,7 @@ function registerMemberRoutes(server2, ctx) {
2317
2327
  }
2318
2328
  const uniqueMemberIds = Array.from(new Set(memberIds));
2319
2329
  try {
2320
- const success = member_service_exports.deleteMembers(adapter, request.params.id, uniqueMemberIds);
2330
+ const success = member_service_exports.deleteMembers(adapter, request.params.id, uniqueMemberIds, cacheDir);
2321
2331
  if (!success) {
2322
2332
  throw new Error("Member deletion transaction returned no result");
2323
2333
  }
@@ -2337,7 +2347,7 @@ function registerMemberRoutes(server2, ctx) {
2337
2347
  "/_web/sessions/:id/members/merge",
2338
2348
  async (request) => {
2339
2349
  const { memberId1, memberId2 } = request.body;
2340
- member_service_exports.mergeMembers(adapter, request.params.id, memberId1, memberId2);
2350
+ member_service_exports.mergeMembers(adapter, request.params.id, memberId1, memberId2, cacheDir);
2341
2351
  return { success: true };
2342
2352
  }
2343
2353
  );
@@ -2523,7 +2533,8 @@ function registerMergeRoutes(server2, ctx) {
2523
2533
  platform: exported.meta.platform,
2524
2534
  type: exported.meta.type,
2525
2535
  groupId: exported.meta.groupId,
2526
- groupAvatar: exported.meta.groupAvatar
2536
+ groupAvatar: exported.meta.groupAvatar,
2537
+ ownerId: exported.meta.ownerId
2527
2538
  });
2528
2539
  writer.writeMembers(
2529
2540
  exported.members.map((m) => ({
@@ -2535,12 +2546,14 @@ function registerMergeRoutes(server2, ctx) {
2535
2546
  );
2536
2547
  writer.writeMessages(
2537
2548
  exported.messages.map((msg) => ({
2549
+ platformMessageId: msg.platformMessageId,
2538
2550
  senderPlatformId: msg.sender,
2539
2551
  senderAccountName: msg.accountName,
2540
2552
  senderGroupNickname: msg.groupNickname,
2541
2553
  timestamp: msg.timestamp,
2542
2554
  type: msg.type,
2543
- content: msg.content
2555
+ content: msg.content,
2556
+ replyToMessageId: msg.replyToMessageId
2544
2557
  }))
2545
2558
  );
2546
2559
  writer.finish();
@@ -2655,6 +2668,13 @@ function registerPreferencesRoutes(server2, ctx) {
2655
2668
  server2.get("/_web/preferences", async () => {
2656
2669
  return prefManager.load();
2657
2670
  });
2671
+ server2.get("/_web/preferences/bootstrap", async () => {
2672
+ const config = loadConfig();
2673
+ return {
2674
+ locale: config.locale.lang,
2675
+ uiConfig: config.ui
2676
+ };
2677
+ });
2658
2678
  server2.patch("/_web/preferences", async (request) => {
2659
2679
  return prefManager.save(request.body);
2660
2680
  });
@@ -2708,28 +2728,12 @@ function registerSessionIndexRoutes(server2, ctx) {
2708
2728
  session_index_service_exports.clearIndex(adapter, request.params.id);
2709
2729
  return { success: true };
2710
2730
  });
2711
- server2.get("/_web/sessions/:id/search/fts", async (request, reply) => {
2712
- if (!session_index_service_exports.getFtsStatus(adapter, request.params.id)) {
2713
- return reply.code(400).send({ error: "FTS index not built for this session" });
2714
- }
2715
- const keywords = request.query.keywords.split(/\s+/).filter(Boolean);
2716
- if (keywords.length === 0) return { rowids: [], total: 0 };
2717
- const limit = parseInt(request.query.limit || "100", 10);
2718
- const offset = parseInt(request.query.offset || "0", 10);
2719
- return session_index_service_exports.searchFts(adapter, request.params.id, keywords, limit, offset);
2720
- });
2721
- server2.get("/_web/sessions/:id/fts/status", async (request) => {
2722
- return { hasFtsIndex: session_index_service_exports.getFtsStatus(adapter, request.params.id) };
2723
- });
2724
- server2.post("/_web/sessions/:id/fts/rebuild", async (request) => {
2725
- const result = session_index_service_exports.rebuildFts(adapter, request.params.id);
2726
- return { success: true, indexed: result.indexed };
2727
- });
2728
2731
  }
2729
2732
 
2730
2733
  // ../../packages/http-routes/src/routes/web/sessions.ts
2731
2734
  function registerSessionRoutes(server2, ctx) {
2732
2735
  const { sessionAdapter: adapter } = ctx;
2736
+ const cacheDir = ctx.pathProvider.getCacheDir();
2733
2737
  let preferencesInstance = null;
2734
2738
  const preferences = () => {
2735
2739
  preferencesInstance ??= ctx.preferencesManager ?? new PreferencesManager(ctx.pathProvider.getSystemDir());
@@ -2738,11 +2742,14 @@ function registerSessionRoutes(server2, ctx) {
2738
2742
  server2.get("/_web/sessions", async () => {
2739
2743
  const aiChatCounts = ctx.aiChatManager?.getAIChatCountsBySession();
2740
2744
  return session_service_exports.listAnalysisSessions(adapter, {
2745
+ resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir),
2741
2746
  enrichSession: aiChatCounts?.size ? (dto) => ({ ...dto, aiConversationCount: aiChatCounts.get(dto.id) ?? 0 }) : void 0
2742
2747
  });
2743
2748
  });
2744
2749
  server2.get("/_web/sessions/:id", async (request) => {
2745
- const session = session_service_exports.getAnalysisSession(adapter, request.params.id);
2750
+ const session = session_service_exports.getAnalysisSession(adapter, request.params.id, {
2751
+ resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir)
2752
+ });
2746
2753
  if (!session) {
2747
2754
  throw Object.assign(new Error(`Session not found: ${request.params.id}`), { statusCode: 404 });
2748
2755
  }
@@ -2754,6 +2761,7 @@ function registerSessionRoutes(server2, ctx) {
2754
2761
  server2.delete("/_web/sessions/:id", async (request, reply) => {
2755
2762
  const { id } = request.params;
2756
2763
  try {
2764
+ await ctx.beforeDeleteSession?.(id);
2757
2765
  const deleted = session_service_exports.deleteSession(adapter, id);
2758
2766
  if (!deleted) {
2759
2767
  return reply.code(404).send({ success: false, error: "File not found" });
@@ -3078,7 +3086,7 @@ function registerImportRoutes2(server2, dbManager2, options = {}) {
3078
3086
  const runAutoImportBatch = options.runAutoImportBatch ?? autoImportBatch.bind(null, dbManager2);
3079
3087
  const runPreparedImport = options.runPreparedImport ?? (async (manifestPath, onProgress, sessionGapThreshold) => {
3080
3088
  const result = await runAutoImport(manifestPath, {
3081
- formatId: "google-chat-takeout",
3089
+ formatId: PARSER_FORMAT_IDS.GOOGLE_CHAT_NATIVE,
3082
3090
  sessionGapThreshold,
3083
3091
  nativeBinding: resolveNativeBinding(),
3084
3092
  onProgress
@@ -3564,10 +3572,10 @@ function registerWebRoutes2(server2, dbManager2, options) {
3564
3572
  const resolvedPathProvider = options?.pathProvider ?? fallbackPathProvider;
3565
3573
  const ai = options?.aiContext;
3566
3574
  const cliStreamImport = async (dm, filePath) => {
3567
- const { streamImport: streamImport2 } = await import("./stream-import-GZ2QDE3Z.mjs");
3575
+ const { streamImport: streamImport2 } = await import("./stream-import-FSXCFG4M.mjs");
3568
3576
  const result = await streamImport2(dm, filePath);
3569
3577
  if (!result.success) {
3570
- const { IMPORT_IN_PROGRESS_ERROR_KEY: IMPORT_IN_PROGRESS_ERROR_KEY2, ImportInProgressError: ImportInProgressError2 } = await import("./src-SHFHW2QB.mjs");
3578
+ const { IMPORT_IN_PROGRESS_ERROR_KEY: IMPORT_IN_PROGRESS_ERROR_KEY2, ImportInProgressError: ImportInProgressError2 } = await import("./src-COIB6Z4P.mjs");
3571
3579
  if (result.error === IMPORT_IN_PROGRESS_ERROR_KEY2) throw new ImportInProgressError2();
3572
3580
  throw new Error(result.error || "Import failed");
3573
3581
  }
@@ -4743,4 +4751,4 @@ export {
4743
4751
  startHttpServer,
4744
4752
  stopHttpServer
4745
4753
  };
4746
- //# sourceMappingURL=chunk-MENKFEPC.mjs.map
4754
+ //# sourceMappingURL=chunk-7IGBPZMI.mjs.map