chatlab-cli 0.34.3 → 0.36.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 (184) hide show
  1. package/dist/{chat-command-QH7DXCAJ.mjs → chat-command-SXW67RF7.mjs} +9 -9
  2. package/dist/{chunk-AWXHYTD5.mjs → chunk-4YPNYQSP.mjs} +701 -7065
  3. package/dist/chunk-4YPNYQSP.mjs.map +1 -0
  4. package/dist/{chunk-SWUTRDGZ.mjs → chunk-AAGDVTP2.mjs} +2 -2
  5. package/dist/{chunk-ZVGDOSGG.mjs → chunk-BSGLH6G3.mjs} +188 -41
  6. package/dist/chunk-BSGLH6G3.mjs.map +1 -0
  7. package/dist/{chunk-2Q3HHVTS.mjs → chunk-CNEWMCGX.mjs} +18 -18
  8. package/dist/{chunk-3X26JJIP.mjs → chunk-GVW3BDGZ.mjs} +3 -3
  9. package/dist/{chunk-WJVE5Q4Y.mjs → chunk-JHON5FN7.mjs} +2 -2
  10. package/dist/{chunk-JYBPJWE2.mjs → chunk-LZGOIRLV.mjs} +13 -23
  11. package/dist/chunk-LZGOIRLV.mjs.map +1 -0
  12. package/dist/chunk-OWOEWZIC.mjs +19072 -0
  13. package/dist/chunk-OWOEWZIC.mjs.map +1 -0
  14. package/dist/{chunk-XIWVJAXH.mjs → chunk-U2NXHIJK.mjs} +34 -24
  15. package/dist/chunk-U2NXHIJK.mjs.map +1 -0
  16. package/dist/{chunk-6U2QZO3N.mjs → chunk-UNIKQFI5.mjs} +2 -2
  17. package/dist/{chunk-C2PD3BS7.mjs → chunk-VDWI4A4U.mjs} +2 -2
  18. package/dist/{chunk-AWGXYFIC.mjs → chunk-XDF6PMVZ.mjs} +2 -2
  19. package/dist/chunk-YKMQLAVP.mjs +25 -0
  20. package/dist/chunk-YKMQLAVP.mjs.map +1 -0
  21. package/dist/cli.mjs +10 -10
  22. package/dist/contacts-worker.mjs +2 -2
  23. package/dist/global-insight-worker.mjs +136 -4
  24. package/dist/global-insight-worker.mjs.map +1 -1
  25. package/dist/{http-D2F4QTQW.mjs → http-LVOGJFDL.mjs} +13 -13
  26. package/dist/{import-H7X2JU2O.mjs → import-7OU57ZHM.mjs} +8 -8
  27. package/dist/index.mjs +13 -13
  28. package/dist/{mcp-UURXRGDF.mjs → mcp-CUKHTTII.mjs} +9 -9
  29. package/dist/people-relationships-worker.mjs +2 -2
  30. package/dist/semantic-index-worker.mjs +1 -1
  31. package/dist/{src-MHCO4HYY.mjs → src-LORFXAUE.mjs} +121 -97
  32. package/dist/{stream-import-BHXACUCA.mjs → stream-import-7YUWIAD6.mjs} +8 -8
  33. package/dist/{worker-runtime-JOUCP2L4.mjs → worker-runtime-GQ5SY7E3.mjs} +6 -6
  34. package/dist-cli-web/assets/AISettingsTab-BmhNcUEh.js +1 -0
  35. package/dist-cli-web/assets/AboutTab-CFklrZt8.js +1 -0
  36. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-B-dIPvcs.js +110 -0
  37. package/dist-cli-web/assets/Alert-DJzXKcec.js +1 -0
  38. package/dist-cli-web/assets/ApiSettingsTab-DvDm421U.js +2 -0
  39. package/dist-cli-web/assets/BatchManageTab-DhIDH3Q1.js +1 -0
  40. package/dist-cli-web/assets/{BufferResource-Dak23r3B.js → BufferResource-DY3P-dGs.js} +1 -1
  41. package/dist-cli-web/assets/CanvasRenderer-As2MJTWZ.js +1 -0
  42. package/dist-cli-web/assets/ChatRecordDrawer-DHdas7Jp.js +1 -0
  43. package/dist-cli-web/assets/ChatRecordWorkspace-CVDPBmcl.js +11 -0
  44. package/dist-cli-web/assets/ChatRecordWorkspace-D_oJMtqh.css +1 -0
  45. package/dist-cli-web/assets/Checkbox-4F1WAuVF.js +1 -0
  46. package/dist-cli-web/assets/DataDirCleanupNotice-jebQ9il3.js +1 -0
  47. package/dist-cli-web/assets/DatePicker.vue_vue_type_script_setup_true_lang-Cal624eP.js +1 -0
  48. package/dist-cli-web/assets/DebugToolsPanel-BLU6SY8a.js +1 -0
  49. package/dist-cli-web/assets/EChart.vue_vue_type_script_setup_true_lang-CsgJ-Xn3.js +1 -0
  50. package/dist-cli-web/assets/EChartLine.vue_vue_type_script_setup_true_lang-BYhukELX.js +1 -0
  51. package/dist-cli-web/assets/EChartWordcloud-C16xh7Tx.js +1 -0
  52. package/dist-cli-web/assets/{Filter-CHKZVYB3.js → Filter-BEtPORqF.js} +1 -1
  53. package/dist-cli-web/assets/GlobalTaskBar-BvNmFO7q.js +1 -0
  54. package/dist-cli-web/assets/GlobalTaskBar-COW_uBX6.css +1 -0
  55. package/dist-cli-web/assets/GroupRelationshipGalaxyView-DEUIrvgz.js +1 -0
  56. package/dist-cli-web/assets/Label-Dgl3ghzT.js +1 -0
  57. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-CwDIA0UP.js +1 -0
  58. package/dist-cli-web/assets/MessageExportModal-DYjhBuzO.js +1 -0
  59. package/dist-cli-web/assets/PageHeader-CL9AFfvl.js +1 -0
  60. package/dist-cli-web/assets/PageTabs.vue_vue_type_script_setup_true_lang-C22kOxIK.js +1 -0
  61. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-mJhEPzsY.js → RelationshipGalaxyCanvas-BnkcrIpk.js} +3 -3
  62. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-Bf76yzmQ.js → RelationshipGalaxyThreeCanvas-CqdqveEJ.js} +166 -166
  63. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-CMuibfiA.css → RelationshipGalaxyThreeCanvas-TYGOUDiv.css} +1 -1
  64. package/dist-cli-web/assets/{RenderTargetSystem-1rM7OF-M.js → RenderTargetSystem-CPwnC2X3.js} +1 -1
  65. package/dist-cli-web/assets/RovingFocusItem-j33Nsbbn.js +1 -0
  66. package/dist-cli-web/assets/ScreenCaptureModal-ByKxzNQe.js +1 -0
  67. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-C6EHKB_i.js +1 -0
  68. package/dist-cli-web/assets/Select-jVtfc_xc.js +1 -0
  69. package/dist-cli-web/assets/SettingsModal-CjVax3I6.css +1 -0
  70. package/dist-cli-web/assets/SettingsModal-Dg27piEO.js +2 -0
  71. package/dist-cli-web/assets/StorageTab-QdcDqA6Q.js +1 -0
  72. package/dist-cli-web/assets/Switch-DYHM64k9.js +1 -0
  73. package/dist-cli-web/assets/Tabs-B6Nzq2NQ.js +1 -0
  74. package/dist-cli-web/assets/Tabs-CRZdCcU4.js +1 -0
  75. package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-Bsq7gpC0.js +1 -0
  76. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-BLpQds4F.js +1 -0
  77. package/dist-cli-web/assets/VisuallyHiddenInput-IQpmK9yR.js +1 -0
  78. package/dist-cli-web/assets/{WebGLRenderer-Y0jQtBvK.js → WebGLRenderer-8JHbnkTc.js} +2 -2
  79. package/dist-cli-web/assets/{WebGPURenderer-BcUvCPhd.js → WebGPURenderer-CLWfB4CC.js} +2 -2
  80. package/dist-cli-web/assets/aiChat-4JvxWGXZ.js +8 -0
  81. package/dist-cli-web/assets/base-D6fxqD_X.js +1 -0
  82. package/dist-cli-web/assets/{browserAll-BsR1UaCC.js → browserAll-Cin6ghNg.js} +2 -2
  83. package/dist-cli-web/assets/chatlabSiteLocale-CrCNb8QP.js +1 -0
  84. package/dist-cli-web/assets/clamp-jFYhBC76.js +1 -0
  85. package/dist-cli-web/assets/cli-web-D7IBc3AX.js +1 -0
  86. package/dist-cli-web/assets/{dateFormat-B6JnNCxp.js → dateFormat-Bu4-Ux3L.js} +1 -1
  87. package/dist-cli-web/assets/{fetch-BAJ_VjWE.js → fetch-1NiXh-_B.js} +1 -1
  88. package/dist-cli-web/assets/{fetch-BNcHe2-O.js → fetch-2QEQPA9q.js} +8 -5
  89. package/dist-cli-web/assets/fetch-B2agy1hy.js +1 -0
  90. package/dist-cli-web/assets/{fetch-CPloHijF.js → fetch-B7kuohCt.js} +1 -1
  91. package/dist-cli-web/assets/{fetch-D7vgaLpy.js → fetch-BR71C0K9.js} +1 -1
  92. package/dist-cli-web/assets/{fetch-bdY0RMM3.js → fetch-Bk-7vxHV.js} +1 -1
  93. package/dist-cli-web/assets/fetch-C8tTTsCm.js +1 -0
  94. package/dist-cli-web/assets/{fetch-DtnhbqTN.js → fetch-CuUeyk0N.js} +1 -1
  95. package/dist-cli-web/assets/{fetch-bhHY8rO7.js → fetch-DPRDSI39.js} +1 -1
  96. package/dist-cli-web/assets/{fetch-DGvqctIb.js → fetch-OnnCjzee.js} +1 -1
  97. package/dist-cli-web/assets/{fetch-Clj_RVUD.js → fetch-_CN1EVMt.js} +1 -1
  98. package/dist-cli-web/assets/index-B4J99zv3.css +1 -0
  99. package/dist-cli-web/assets/index-BBeqtL8d.css +1 -0
  100. package/dist-cli-web/assets/index-BCEk6ZpL.js +64 -0
  101. package/dist-cli-web/assets/index-BIHFuCJK.js +1 -0
  102. package/dist-cli-web/assets/index-BUz_Vl9U.js +2 -0
  103. package/dist-cli-web/assets/index-BWZIoPV3.css +1 -0
  104. package/dist-cli-web/assets/index-BYQV3OA5.js +1 -0
  105. package/dist-cli-web/assets/index-CVVv_6qu.js +2 -0
  106. package/dist-cli-web/assets/index-CacwXQL4.js +1 -0
  107. package/dist-cli-web/assets/{index-DMYFpctK.js → index-Colc58j-.js} +3 -3
  108. package/dist-cli-web/assets/index-DImo7TQN.js +1 -0
  109. package/dist-cli-web/assets/index-DV9zQVPV.js +137 -0
  110. package/dist-cli-web/assets/index-DXKS-q-w.css +1 -0
  111. package/dist-cli-web/assets/index-DZc5A4_J.js +1 -0
  112. package/dist-cli-web/assets/index-DkWTvE7d.js +36 -0
  113. package/dist-cli-web/assets/index-DmEn0PAI.js +1 -0
  114. package/dist-cli-web/assets/index-b9eEQeVt.js +1 -0
  115. package/dist-cli-web/assets/index-waDxab2e.css +1 -0
  116. package/dist-cli-web/assets/insight-time-range-MJxLEu6o.js +1 -0
  117. package/dist-cli-web/assets/people-page-header-DNPjaSt4.js +1 -0
  118. package/dist-cli-web/assets/prompt-BgywZQ_g.js +1 -0
  119. package/dist-cli-web/assets/relationship-galaxy-connections-Cg4G5yYE.js +1 -0
  120. package/dist-cli-web/assets/semantic-index-config-builder-bji_UxYE.js +1 -0
  121. package/dist-cli-web/assets/service-DpU9fa-l.js +1 -0
  122. package/dist-cli-web/assets/useFormControl-De24E2zT.js +1 -0
  123. package/dist-cli-web/assets/useTable-C7BH94MF.js +1 -0
  124. package/dist-cli-web/assets/useToast-CxhJkhXK.js +1 -0
  125. package/dist-cli-web/assets/vendor-echarts-DfAMQxdr.js +11 -0
  126. package/dist-cli-web/assets/{vendor-echarts-wordcloud-Ca8n6qS6.js → vendor-echarts-wordcloud-BsaEJTPY.js} +1 -1
  127. package/dist-cli-web/assets/vendor-zrender-PFmZe1EY.js +8 -0
  128. package/dist-cli-web/assets/{webworkerAll-CfZWlukP.js → webworkerAll-BRnv6GvJ.js} +1 -1
  129. package/dist-cli-web/index.html +2 -2
  130. package/package.json +1 -1
  131. package/dist/chunk-2WYXD5ZP.mjs +0 -9451
  132. package/dist/chunk-2WYXD5ZP.mjs.map +0 -1
  133. package/dist/chunk-AWXHYTD5.mjs.map +0 -1
  134. package/dist/chunk-JYBPJWE2.mjs.map +0 -1
  135. package/dist/chunk-QZCNVAH6.mjs +0 -14
  136. package/dist/chunk-QZCNVAH6.mjs.map +0 -1
  137. package/dist/chunk-XIWVJAXH.mjs.map +0 -1
  138. package/dist/chunk-ZVGDOSGG.mjs.map +0 -1
  139. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-kN3uxTW8.js +0 -110
  140. package/dist-cli-web/assets/CanvasRenderer-Cmjtvski.js +0 -1
  141. package/dist-cli-web/assets/DataDirCleanupNotice-B5tyDzK-.js +0 -1
  142. package/dist-cli-web/assets/EChartWordcloud-Bd3L3G8I.js +0 -1
  143. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-CKf_gC1k.js +0 -1
  144. package/dist-cli-web/assets/MessageExportModal-ODYCcSnk.js +0 -1
  145. package/dist-cli-web/assets/PageHeader-Bn7Jn8JW.js +0 -1
  146. package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-CADZpPia.js +0 -1
  147. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-I3FYjhfs.js +0 -1
  148. package/dist-cli-web/assets/annual-summary-time-range-BIADd8qE.js +0 -1
  149. package/dist-cli-web/assets/base-BpxxC5Z5.js +0 -1
  150. package/dist-cli-web/assets/cli-web-BiWUOncc.js +0 -1
  151. package/dist-cli-web/assets/fetch-DSxgaVBO.js +0 -1
  152. package/dist-cli-web/assets/index-B6Gq11lw.css +0 -1
  153. package/dist-cli-web/assets/index-BJ2lywiG.js +0 -1
  154. package/dist-cli-web/assets/index-BT3_fSP6.js +0 -2
  155. package/dist-cli-web/assets/index-BVZhP1J5.js +0 -1
  156. package/dist-cli-web/assets/index-Br8r4pu8.js +0 -1
  157. package/dist-cli-web/assets/index-Byok4VaA.css +0 -1
  158. package/dist-cli-web/assets/index-CKnnxOci.js +0 -1
  159. package/dist-cli-web/assets/index-CXnYfvTv.js +0 -137
  160. package/dist-cli-web/assets/index-CsFLLk3T.css +0 -1
  161. package/dist-cli-web/assets/index-CzoOQ7zg.js +0 -1
  162. package/dist-cli-web/assets/index-D-dTTUGj.js +0 -1
  163. package/dist-cli-web/assets/index-DEbvEKzi.js +0 -2
  164. package/dist-cli-web/assets/index-KO7uPd8W.js +0 -64
  165. package/dist-cli-web/assets/index-ZsZwPLWy.css +0 -1
  166. package/dist-cli-web/assets/index-lkmJ6dI7.js +0 -1
  167. package/dist-cli-web/assets/index-y7xPDpsW.js +0 -53
  168. package/dist-cli-web/assets/people-page-header-gjTyODWs.js +0 -1
  169. package/dist-cli-web/assets/vendor-echarts-B-i_56Av.js +0 -11
  170. package/dist-cli-web/assets/vendor-zrender-5DcYjSZk.js +0 -8
  171. /package/dist/{chat-command-QH7DXCAJ.mjs.map → chat-command-SXW67RF7.mjs.map} +0 -0
  172. /package/dist/{chunk-SWUTRDGZ.mjs.map → chunk-AAGDVTP2.mjs.map} +0 -0
  173. /package/dist/{chunk-2Q3HHVTS.mjs.map → chunk-CNEWMCGX.mjs.map} +0 -0
  174. /package/dist/{chunk-3X26JJIP.mjs.map → chunk-GVW3BDGZ.mjs.map} +0 -0
  175. /package/dist/{chunk-WJVE5Q4Y.mjs.map → chunk-JHON5FN7.mjs.map} +0 -0
  176. /package/dist/{chunk-6U2QZO3N.mjs.map → chunk-UNIKQFI5.mjs.map} +0 -0
  177. /package/dist/{chunk-C2PD3BS7.mjs.map → chunk-VDWI4A4U.mjs.map} +0 -0
  178. /package/dist/{chunk-AWGXYFIC.mjs.map → chunk-XDF6PMVZ.mjs.map} +0 -0
  179. /package/dist/{http-D2F4QTQW.mjs.map → http-LVOGJFDL.mjs.map} +0 -0
  180. /package/dist/{import-H7X2JU2O.mjs.map → import-7OU57ZHM.mjs.map} +0 -0
  181. /package/dist/{mcp-UURXRGDF.mjs.map → mcp-CUKHTTII.mjs.map} +0 -0
  182. /package/dist/{src-MHCO4HYY.mjs.map → src-LORFXAUE.mjs.map} +0 -0
  183. /package/dist/{stream-import-BHXACUCA.mjs.map → stream-import-7YUWIAD6.mjs.map} +0 -0
  184. /package/dist/{worker-runtime-JOUCP2L4.mjs.map → worker-runtime-GQ5SY7E3.mjs.map} +0 -0
@@ -21,7 +21,7 @@ import {
21
21
  resolveOwnerMember,
22
22
  setCache,
23
23
  shouldScopeContactToSession
24
- } from "./chunk-2WYXD5ZP.mjs";
24
+ } from "./chunk-OWOEWZIC.mjs";
25
25
 
26
26
  // ../../packages/node-runtime/src/services/people/relationships/facts-cache.ts
27
27
  var PEOPLE_RELATIONSHIPS_FACTS_FORMAT_VERSION = 3;
@@ -1326,4 +1326,4 @@ export {
1326
1326
  compareNodes,
1327
1327
  compareEdges
1328
1328
  };
1329
- //# sourceMappingURL=chunk-SWUTRDGZ.mjs.map
1329
+ //# sourceMappingURL=chunk-AAGDVTP2.mjs.map
@@ -11,14 +11,14 @@ import {
11
11
  getServerAiLogger,
12
12
  getSkillManagerCore,
13
13
  initServerAiLogger
14
- } from "./chunk-JYBPJWE2.mjs";
14
+ } from "./chunk-LZGOIRLV.mjs";
15
15
  import {
16
16
  AGENT_TOOL_REGISTRY,
17
17
  CoreDataProvider
18
- } from "./chunk-WJVE5Q4Y.mjs";
18
+ } from "./chunk-JHON5FN7.mjs";
19
19
  import {
20
20
  resolveCliLocalEmbeddingRuntimeConfig
21
- } from "./chunk-6U2QZO3N.mjs";
21
+ } from "./chunk-UNIKQFI5.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-3X26JJIP.mjs";
29
+ } from "./chunk-GVW3BDGZ.mjs";
30
30
  import {
31
31
  assertCliDataDirCompatible
32
- } from "./chunk-C2PD3BS7.mjs";
32
+ } from "./chunk-VDWI4A4U.mjs";
33
33
  import {
34
34
  getVersion
35
35
  } from "./chunk-5ADKYYNA.mjs";
@@ -62,9 +62,8 @@ import {
62
62
  isDictDownloaded,
63
63
  segmentText,
64
64
  serializeChatLabToJsonl
65
- } from "./chunk-XIWVJAXH.mjs";
65
+ } from "./chunk-U2NXHIJK.mjs";
66
66
  import {
67
- AIChatManager,
68
67
  ArchiveImportError,
69
68
  ArchiveImportSourceManager,
70
69
  IMPORT_IN_PROGRESS_ERROR_KEY,
@@ -75,41 +74,35 @@ import {
75
74
  SEMANTIC_INDEX_CONFIG_FILE,
76
75
  SemanticIndexConfigStore,
77
76
  TempDbWriter,
78
- buildPiModel,
79
- countMessagesTokens,
80
77
  createChatLabTempDir,
81
78
  createContactsService,
82
79
  createGlobalInsightService,
83
- createLlmRuntimeStores,
84
80
  createPeopleRelationshipsService,
81
+ createTimeInvestmentService,
85
82
  detectAllFormats,
86
83
  detectFormat,
87
84
  exportSessionToJson,
88
85
  export_service_exports,
89
- fetchRemoteModels,
90
86
  findEntryFileInDirectory,
91
87
  getChatLabTempScopeDir,
92
- getDefaultRulesForLocale,
93
88
  getSupportedFormats,
94
89
  hashImportBody,
95
90
  isSemanticIndexConfigured,
96
91
  isValidImportSessionId,
97
92
  logNativeParserStatus,
98
93
  member_service_exports,
99
- mergeRulesForLocale,
100
94
  owner_profile_service_exports,
101
95
  persistSemanticIndexConfig,
102
96
  pushImport,
103
97
  resolveSemanticIndexApiKeySet,
104
- runSimpleLlmStream,
105
98
  scanMultiChatFile,
106
99
  session_index_service_exports,
107
100
  session_service_exports,
108
101
  streamParseFileInfo,
109
- summary_service_exports,
110
- validateApiKey
111
- } from "./chunk-AWXHYTD5.mjs";
102
+ summary_service_exports
103
+ } from "./chunk-4YPNYQSP.mjs";
112
104
  import {
105
+ AIChatManager,
113
106
  ALL_MIGRATIONS,
114
107
  BUILTIN_MODELS,
115
108
  BUILTIN_PROVIDERS,
@@ -118,12 +111,21 @@ import {
118
111
  CONTACTS_TIME_RANGE_PRESETS,
119
112
  DataDirCompatibilityError,
120
113
  DatabaseManager,
114
+ GROUP_RELATIONSHIP_GALAXY_ALGORITHM_VERSION,
121
115
  MigrationRunner,
122
116
  POS_TAG_DEFINITIONS,
123
117
  appLogger,
118
+ assertValidTopicDayKey,
119
+ buildPiModel,
120
+ chatTopicWorkCoordinator,
121
+ countMessagesTokens,
122
+ createChatTopicModelClient,
123
+ createChatTopicService,
124
124
  createDatabaseManagerAdapter,
125
+ createLlmRuntimeStores,
125
126
  executeReadonlySql,
126
127
  executeSql,
128
+ fetchRemoteModels,
127
129
  getAvailableYears,
128
130
  getBuiltinModelsByProvider,
129
131
  getCatchphraseAnalysis,
@@ -131,8 +133,10 @@ import {
131
133
  getClusterGraph,
132
134
  getDailyActivity,
133
135
  getDbFileVersion,
136
+ getDefaultRulesForLocale,
134
137
  getDivingAnalysis,
135
138
  getDragonKingAnalysis,
139
+ getGroupRelationshipGalaxy,
136
140
  getHourlyActivity,
137
141
  getJourneyStats,
138
142
  getLanguagePreferenceAnalysis,
@@ -144,7 +148,6 @@ import {
144
148
  getMembersWithAliases,
145
149
  getMemeBattleAnalysis,
146
150
  getMentionAnalysis,
147
- getMentionGraph,
148
151
  getMessageLengthDistribution,
149
152
  getMessageTypeStats,
150
153
  getMonthlyActivity,
@@ -164,11 +167,14 @@ import {
164
167
  initAppLogger,
165
168
  isNewerStableVersion,
166
169
  loadConfig,
170
+ mergeRulesForLocale,
167
171
  queryMessages,
172
+ runSimpleLlmStream,
168
173
  stripAvatarFields,
174
+ validateApiKey,
169
175
  verifyCliDataPath,
170
176
  writeConfigField
171
- } from "./chunk-2WYXD5ZP.mjs";
177
+ } from "./chunk-OWOEWZIC.mjs";
172
178
 
173
179
  // src/http/index.ts
174
180
  import * as fs11 from "fs";
@@ -822,6 +828,7 @@ data: ${JSON.stringify(data)}
822
828
  reply.raw.end();
823
829
  };
824
830
  safeSendSSE("meta", { requestId });
831
+ const releaseInteractiveWork = chatTopicWorkCoordinator.beginInteractiveWork();
825
832
  reply.raw.on("close", () => {
826
833
  if (!abortController.signal.aborted) {
827
834
  abortController.abort();
@@ -841,6 +848,7 @@ data: ${JSON.stringify(data)}
841
848
  const msg = error instanceof Error ? error.message : String(error);
842
849
  safeSendSSE("error", { type: "error", error: { name: "ServerError", message: msg } });
843
850
  } finally {
851
+ releaseInteractiveWork();
844
852
  if (!emittedDone) safeSendSSE("done", { type: "done", isFinished: true });
845
853
  activeAgentAborts.delete(requestId);
846
854
  safeEnd();
@@ -1023,6 +1031,93 @@ function registerAiChatRoutes(server2, ctx) {
1023
1031
  });
1024
1032
  }
1025
1033
 
1034
+ // ../../packages/http-routes/src/routes/web/ai-chat-topics.ts
1035
+ function registerAiChatTopicRoutes(server2, ctx) {
1036
+ let service = null;
1037
+ const getService = () => {
1038
+ if (!ctx.runtimeIdentity) throw new Error("Chat topic routes require a runtime identity");
1039
+ service ??= createChatTopicService({
1040
+ runtime: ctx.sessionAdapter,
1041
+ pathProvider: ctx.pathProvider,
1042
+ runtimeIdentity: ctx.runtimeIdentity,
1043
+ nativeBinding: ctx.nativeBinding,
1044
+ getModelClient() {
1045
+ const config = ctx.llmConfigStore?.getFastModelConfig();
1046
+ return config ? createChatTopicModelClient(config) : null;
1047
+ }
1048
+ });
1049
+ return service;
1050
+ };
1051
+ server2.addHook("onClose", async () => {
1052
+ service?.close();
1053
+ });
1054
+ server2.post(
1055
+ "/_web/sessions/:id/topics/preflight",
1056
+ async (request) => getService().preflight(request.params.id, requireCreateRequest(request.body))
1057
+ );
1058
+ server2.post(
1059
+ "/_web/sessions/:id/topics/runs",
1060
+ async (request, reply) => {
1061
+ const run = getService().start(request.params.id, requireCreateRequest(request.body));
1062
+ return reply.code(run.status === "completed" ? 200 : 202).send(run);
1063
+ }
1064
+ );
1065
+ server2.post("/_web/sessions/:id/topics/days/:dayKey/generate", async (request, reply) => {
1066
+ const run = getService().generateDay(
1067
+ request.params.id,
1068
+ request.params.dayKey,
1069
+ requireTimezone(request.body?.timezone),
1070
+ request.body?.locale
1071
+ );
1072
+ return reply.code(run.status === "completed" ? 200 : 202).send(run);
1073
+ });
1074
+ server2.get(
1075
+ "/_web/sessions/:id/topics/runs/latest",
1076
+ async (request) => getService().getLatestRun(request.params.id)
1077
+ );
1078
+ server2.get(
1079
+ "/_web/sessions/:id/topics/runs/:runId",
1080
+ async (request, reply) => {
1081
+ const run = getService().getRun(request.params.id, request.params.runId);
1082
+ return run ?? reply.code(404).send({ error: "Chat topic run not found" });
1083
+ }
1084
+ );
1085
+ for (const action of ["pause", "resume", "cancel"]) {
1086
+ server2.post(
1087
+ `/_web/sessions/:id/topics/runs/:runId/${action}`,
1088
+ async (request) => getService()[action](request.params.id, request.params.runId)
1089
+ );
1090
+ }
1091
+ server2.get(
1092
+ "/_web/sessions/:id/topics/days/:dayKey",
1093
+ async (request) => getService().getDay(request.params.id, request.params.dayKey, requireTimezone(request.query.timezone))
1094
+ );
1095
+ server2.delete(
1096
+ "/_web/sessions/:id/topics/days/:dayKey",
1097
+ async (request) => ({ success: getService().deleteDay(request.params.id, request.params.dayKey) })
1098
+ );
1099
+ }
1100
+ function requireCreateRequest(value) {
1101
+ if (!value || !["today", "year", "custom", "all"].includes(value.rangeKind)) {
1102
+ throw Object.assign(new Error("Invalid chat topic range"), { statusCode: 400 });
1103
+ }
1104
+ const timezone = requireTimezone(value.timezone);
1105
+ if (value.rangeKind === "custom") {
1106
+ if (typeof value.startDay !== "string" || value.startDay.trim() === "") {
1107
+ throw Object.assign(new Error("A start day is required for a custom topic range"), { statusCode: 400 });
1108
+ }
1109
+ assertValidTopicDayKey(value.startDay);
1110
+ return { ...value, timezone, startDay: value.startDay };
1111
+ }
1112
+ return { rangeKind: value.rangeKind, timezone, locale: value.locale };
1113
+ }
1114
+ function requireTimezone(value) {
1115
+ if (typeof value !== "string" || value.trim() === "") {
1116
+ throw Object.assign(new Error("Timezone is required"), { statusCode: 400 });
1117
+ }
1118
+ return value;
1119
+ }
1120
+
1026
1121
  // ../../packages/http-routes/src/routes/web/ai-llm-stream.ts
1027
1122
  function registerAiLlmStreamRoutes(server2, ctx) {
1028
1123
  const store = ctx.llmConfigStore;
@@ -1549,6 +1644,7 @@ function registerAiRoutes(server2, ctx, options) {
1549
1644
  registerAiAgentStreamRoutes(server2, ctx);
1550
1645
  registerAiToolRoutes(server2, ctx);
1551
1646
  registerAiChatRoutes(server2, ctx);
1647
+ registerAiChatTopicRoutes(server2, ctx);
1552
1648
  registerAiSummaryRoutes(server2, ctx);
1553
1649
  registerAiLogRoutes(server2, ctx);
1554
1650
  registerSemanticIndexRoutes(server2, ctx);
@@ -1676,11 +1772,17 @@ function registerAnalyticsRoutes(server2, ctx) {
1676
1772
  }
1677
1773
  );
1678
1774
  server2.get(
1679
- "/_web/sessions/:id/analytics/mention-graph",
1775
+ "/_web/sessions/:id/analytics/relationship-galaxy",
1680
1776
  async (request) => {
1681
1777
  const id = request.params.id;
1682
1778
  const filter = parseTimeFilter(request.query);
1683
- return cached("mention-graph", id, { ...filter }, () => getMentionGraph(adapter.ensureReadonly(id), filter));
1779
+ return cached(
1780
+ "relationship-galaxy",
1781
+ id,
1782
+ { ...filter },
1783
+ () => getGroupRelationshipGalaxy(adapter.ensureReadonly(id), filter),
1784
+ { extraVersion: GROUP_RELATIONSHIP_GALAXY_ALGORITHM_VERSION }
1785
+ );
1684
1786
  }
1685
1787
  );
1686
1788
  server2.post(
@@ -2229,13 +2331,28 @@ function registerExportRoutes(server2, ctx) {
2229
2331
 
2230
2332
  // ../../packages/http-routes/src/routes/web/global-insight.ts
2231
2333
  function registerGlobalInsightRoutes(server2, ctx) {
2334
+ let preferences = ctx.preferencesManager;
2335
+ const getExcludedSessionIds = () => {
2336
+ preferences ??= new PreferencesManager(ctx.pathProvider.getSystemDir());
2337
+ return preferences.load().ownerExcludedSessionIds;
2338
+ };
2232
2339
  const service = ctx.globalInsightService ?? createGlobalInsightService({
2233
2340
  adapter: ctx.sessionAdapter,
2234
2341
  pathProvider: ctx.pathProvider,
2235
2342
  runtimeIdentity: ctx.runtimeIdentity,
2236
- nativeBinding: ctx.nativeBinding
2343
+ nativeBinding: ctx.nativeBinding,
2344
+ getExcludedSessionIds
2345
+ });
2346
+ const timeInvestmentService = ctx.timeInvestmentService ?? createTimeInvestmentService({
2347
+ adapter: ctx.sessionAdapter,
2348
+ pathProvider: ctx.pathProvider,
2349
+ runtimeIdentity: ctx.runtimeIdentity,
2350
+ nativeBinding: ctx.nativeBinding,
2351
+ getExcludedSessionIds
2352
+ });
2353
+ server2.addHook("onClose", async () => {
2354
+ await Promise.all([service.close(), timeInvestmentService.close()]);
2237
2355
  });
2238
- server2.addHook("onClose", async () => service.close());
2239
2356
  server2.get("/_web/global-insight/annual-summary", async (request) => {
2240
2357
  return service.getAnnualSummary({
2241
2358
  ...parseRange(request.query),
@@ -2246,6 +2363,17 @@ function registerGlobalInsightRoutes(server2, ctx) {
2246
2363
  "/_web/global-insight/annual-summary/recompute",
2247
2364
  async (request) => service.startRecompute(parseRange(request.query))
2248
2365
  );
2366
+ server2.get(
2367
+ "/_web/global-insight/time-investment",
2368
+ async (request) => timeInvestmentService.getTimeInvestment({
2369
+ ...parseRange(request.query),
2370
+ acceptStale: isTruthy2(request.query.acceptStale)
2371
+ })
2372
+ );
2373
+ server2.post(
2374
+ "/_web/global-insight/time-investment/recompute",
2375
+ async (request) => timeInvestmentService.startRecompute(parseRange(request.query))
2376
+ );
2249
2377
  }
2250
2378
  function parseRange(query) {
2251
2379
  const mode = query.mode === "recent" ? "recent" : "year";
@@ -2280,6 +2408,7 @@ ${stack}` : null].filter(Boolean).join(" ");
2280
2408
  // ../../packages/http-routes/src/routes/web/members.ts
2281
2409
  function registerMemberRoutes(server2, ctx) {
2282
2410
  const { sessionAdapter: adapter } = ctx;
2411
+ const cacheDir = ctx.pathProvider.getCacheDir();
2283
2412
  server2.get("/_web/sessions/:id/members", async (request) => {
2284
2413
  return member_service_exports.getMembers(adapter, request.params.id);
2285
2414
  });
@@ -2303,7 +2432,7 @@ function registerMemberRoutes(server2, ctx) {
2303
2432
  "/_web/sessions/:id/members/:memberId",
2304
2433
  async (request) => {
2305
2434
  const memberId = parseInt(request.params.memberId, 10);
2306
- member_service_exports.deleteMember(adapter, request.params.id, memberId);
2435
+ member_service_exports.deleteMember(adapter, request.params.id, memberId, cacheDir);
2307
2436
  return { success: true };
2308
2437
  }
2309
2438
  );
@@ -2319,7 +2448,7 @@ function registerMemberRoutes(server2, ctx) {
2319
2448
  }
2320
2449
  const uniqueMemberIds = Array.from(new Set(memberIds));
2321
2450
  try {
2322
- const success = member_service_exports.deleteMembers(adapter, request.params.id, uniqueMemberIds);
2451
+ const success = member_service_exports.deleteMembers(adapter, request.params.id, uniqueMemberIds, cacheDir);
2323
2452
  if (!success) {
2324
2453
  throw new Error("Member deletion transaction returned no result");
2325
2454
  }
@@ -2339,7 +2468,7 @@ function registerMemberRoutes(server2, ctx) {
2339
2468
  "/_web/sessions/:id/members/merge",
2340
2469
  async (request) => {
2341
2470
  const { memberId1, memberId2 } = request.body;
2342
- member_service_exports.mergeMembers(adapter, request.params.id, memberId1, memberId2);
2471
+ member_service_exports.mergeMembers(adapter, request.params.id, memberId1, memberId2, cacheDir);
2343
2472
  return { success: true };
2344
2473
  }
2345
2474
  );
@@ -2660,6 +2789,13 @@ function registerPreferencesRoutes(server2, ctx) {
2660
2789
  server2.get("/_web/preferences", async () => {
2661
2790
  return prefManager.load();
2662
2791
  });
2792
+ server2.get("/_web/preferences/bootstrap", async () => {
2793
+ const config = loadConfig();
2794
+ return {
2795
+ locale: config.locale.lang,
2796
+ uiConfig: config.ui
2797
+ };
2798
+ });
2663
2799
  server2.patch("/_web/preferences", async (request) => {
2664
2800
  return prefManager.save(request.body);
2665
2801
  });
@@ -2718,6 +2854,7 @@ function registerSessionIndexRoutes(server2, ctx) {
2718
2854
  // ../../packages/http-routes/src/routes/web/sessions.ts
2719
2855
  function registerSessionRoutes(server2, ctx) {
2720
2856
  const { sessionAdapter: adapter } = ctx;
2857
+ const cacheDir = ctx.pathProvider.getCacheDir();
2721
2858
  let preferencesInstance = null;
2722
2859
  const preferences = () => {
2723
2860
  preferencesInstance ??= ctx.preferencesManager ?? new PreferencesManager(ctx.pathProvider.getSystemDir());
@@ -2725,12 +2862,22 @@ function registerSessionRoutes(server2, ctx) {
2725
2862
  };
2726
2863
  server2.get("/_web/sessions", async () => {
2727
2864
  const aiChatCounts = ctx.aiChatManager?.getAIChatCountsBySession();
2865
+ const excludedSessionIds = new Set(preferences().load().ownerExcludedSessionIds);
2728
2866
  return session_service_exports.listAnalysisSessions(adapter, {
2729
- enrichSession: aiChatCounts?.size ? (dto) => ({ ...dto, aiConversationCount: aiChatCounts.get(dto.id) ?? 0 }) : void 0
2867
+ resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir),
2868
+ enrichSession: (dto) => ({
2869
+ ...dto,
2870
+ aiConversationCount: aiChatCounts?.get(dto.id) ?? 0,
2871
+ ownerExcluded: excludedSessionIds.has(dto.id)
2872
+ })
2730
2873
  });
2731
2874
  });
2732
2875
  server2.get("/_web/sessions/:id", async (request) => {
2733
- const session = session_service_exports.getAnalysisSession(adapter, request.params.id);
2876
+ const excludedSessionIds = new Set(preferences().load().ownerExcludedSessionIds);
2877
+ const session = session_service_exports.getAnalysisSession(adapter, request.params.id, {
2878
+ resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir),
2879
+ enrichSession: (dto) => ({ ...dto, ownerExcluded: excludedSessionIds.has(dto.id) })
2880
+ });
2734
2881
  if (!session) {
2735
2882
  throw Object.assign(new Error(`Session not found: ${request.params.id}`), { statusCode: 404 });
2736
2883
  }
@@ -2741,15 +2888,14 @@ function registerSessionRoutes(server2, ctx) {
2741
2888
  });
2742
2889
  server2.delete("/_web/sessions/:id", async (request, reply) => {
2743
2890
  const { id } = request.params;
2744
- try {
2745
- const deleted = session_service_exports.deleteSession(adapter, id);
2746
- if (!deleted) {
2747
- return reply.code(404).send({ success: false, error: "File not found" });
2748
- }
2749
- return { success: true };
2750
- } catch (err) {
2751
- return reply.code(500).send({ success: false, error: String(err) });
2891
+ await chatTopicWorkCoordinator.prepareSessionDelete(id);
2892
+ await ctx.beforeDeleteSession?.(id);
2893
+ const deleted = session_service_exports.deleteSession(adapter, id);
2894
+ if (!deleted) {
2895
+ return reply.code(404).send({ success: false, error: "File not found" });
2752
2896
  }
2897
+ owner_profile_service_exports.clearOwnerExclusions(preferences(), [id]);
2898
+ return { success: true };
2753
2899
  });
2754
2900
  server2.patch("/_web/sessions/:id/name", async (request) => {
2755
2901
  session_service_exports.renameSession(adapter, request.params.id, request.body.name);
@@ -2759,6 +2905,7 @@ function registerSessionRoutes(server2, ctx) {
2759
2905
  "/_web/sessions/:id/owner",
2760
2906
  async (request) => {
2761
2907
  session_service_exports.updateSessionOwnerId(adapter, request.params.id, request.body.ownerId ?? null);
2908
+ if (request.body.ownerId) owner_profile_service_exports.clearOwnerExclusions(preferences(), [request.params.id]);
2762
2909
  return { success: true };
2763
2910
  }
2764
2911
  );
@@ -2776,8 +2923,8 @@ function registerSessionRoutes(server2, ctx) {
2776
2923
  );
2777
2924
  }
2778
2925
  );
2779
- server2.post("/_web/sessions/:id/owner/dismiss-prompt", async (request) => {
2780
- owner_profile_service_exports.dismissOwnerPrompt(preferences(), request.params.id);
2926
+ server2.post("/_web/sessions/:id/owner/exclude", async (request) => {
2927
+ owner_profile_service_exports.excludeOwnerSession(preferences(), request.params.id);
2781
2928
  return { success: true };
2782
2929
  });
2783
2930
  }
@@ -3552,10 +3699,10 @@ function registerWebRoutes2(server2, dbManager2, options) {
3552
3699
  const resolvedPathProvider = options?.pathProvider ?? fallbackPathProvider;
3553
3700
  const ai = options?.aiContext;
3554
3701
  const cliStreamImport = async (dm, filePath) => {
3555
- const { streamImport: streamImport2 } = await import("./stream-import-BHXACUCA.mjs");
3702
+ const { streamImport: streamImport2 } = await import("./stream-import-7YUWIAD6.mjs");
3556
3703
  const result = await streamImport2(dm, filePath);
3557
3704
  if (!result.success) {
3558
- const { IMPORT_IN_PROGRESS_ERROR_KEY: IMPORT_IN_PROGRESS_ERROR_KEY2, ImportInProgressError: ImportInProgressError2 } = await import("./src-MHCO4HYY.mjs");
3705
+ const { IMPORT_IN_PROGRESS_ERROR_KEY: IMPORT_IN_PROGRESS_ERROR_KEY2, ImportInProgressError: ImportInProgressError2 } = await import("./src-LORFXAUE.mjs");
3559
3706
  if (result.error === IMPORT_IN_PROGRESS_ERROR_KEY2) throw new ImportInProgressError2();
3560
3707
  throw new Error(result.error || "Import failed");
3561
3708
  }
@@ -4731,4 +4878,4 @@ export {
4731
4878
  startHttpServer,
4732
4879
  stopHttpServer
4733
4880
  };
4734
- //# sourceMappingURL=chunk-ZVGDOSGG.mjs.map
4881
+ //# sourceMappingURL=chunk-BSGLH6G3.mjs.map