chatlab-cli 0.35.0 → 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 (185) hide show
  1. package/dist/{chat-command-24RYGJAS.mjs → chat-command-SXW67RF7.mjs} +9 -9
  2. package/dist/{chunk-4GWWKHWA.mjs → chunk-4YPNYQSP.mjs} +672 -7064
  3. package/dist/chunk-4YPNYQSP.mjs.map +1 -0
  4. package/dist/{chunk-KXDJ7N6N.mjs → chunk-AAGDVTP2.mjs} +2 -2
  5. package/dist/{chunk-7IGBPZMI.mjs → chunk-BSGLH6G3.mjs} +163 -36
  6. package/dist/chunk-BSGLH6G3.mjs.map +1 -0
  7. package/dist/{chunk-ZBPPLXM4.mjs → chunk-CNEWMCGX.mjs} +18 -18
  8. package/dist/{chunk-QKEARRFH.mjs → chunk-GVW3BDGZ.mjs} +3 -3
  9. package/dist/{chunk-BRZ6YIBR.mjs → chunk-JHON5FN7.mjs} +2 -2
  10. package/dist/{chunk-DEFEU567.mjs → chunk-LZGOIRLV.mjs} +8 -10
  11. package/dist/{chunk-DEFEU567.mjs.map → chunk-LZGOIRLV.mjs.map} +1 -1
  12. package/dist/chunk-OWOEWZIC.mjs +19072 -0
  13. package/dist/chunk-OWOEWZIC.mjs.map +1 -0
  14. package/dist/{chunk-DC7IUDNV.mjs → chunk-U2NXHIJK.mjs} +27 -9
  15. package/dist/chunk-U2NXHIJK.mjs.map +1 -0
  16. package/dist/{chunk-U36TQMAF.mjs → chunk-UNIKQFI5.mjs} +2 -2
  17. package/dist/{chunk-GQMCDWZQ.mjs → chunk-VDWI4A4U.mjs} +2 -2
  18. package/dist/{chunk-KIMJXKZO.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-3K4YMWDE.mjs → http-LVOGJFDL.mjs} +13 -13
  26. package/dist/{import-D4LV565A.mjs → import-7OU57ZHM.mjs} +8 -8
  27. package/dist/index.mjs +13 -13
  28. package/dist/{mcp-KL22FKQ2.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-COIB6Z4P.mjs → src-LORFXAUE.mjs} +120 -98
  32. package/dist/{stream-import-FSXCFG4M.mjs → stream-import-7YUWIAD6.mjs} +8 -8
  33. package/dist/{worker-runtime-DPS2LURI.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-CtXl4I28.js → ApiSettingsTab-DvDm421U.js} +1 -1
  39. package/dist-cli-web/assets/BatchManageTab-DhIDH3Q1.js +1 -0
  40. package/dist-cli-web/assets/{BufferResource-BXSJADxx.js → BufferResource-DY3P-dGs.js} +1 -1
  41. package/dist-cli-web/assets/{CanvasRenderer-Cq--8UQ_.js → CanvasRenderer-As2MJTWZ.js} +1 -1
  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-C4CsoIlq.js → DatePicker.vue_vue_type_script_setup_true_lang-Cal624eP.js} +1 -1
  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-KV0MdsDE.js → EChartWordcloud-C16xh7Tx.js} +1 -1
  52. package/dist-cli-web/assets/{Filter-DVaqcFmI.js → Filter-BEtPORqF.js} +1 -1
  53. package/dist-cli-web/assets/GlobalTaskBar-BvNmFO7q.js +1 -0
  54. package/dist-cli-web/assets/GroupRelationshipGalaxyView-DEUIrvgz.js +1 -0
  55. package/dist-cli-web/assets/Label-Dgl3ghzT.js +1 -0
  56. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-CwDIA0UP.js +1 -0
  57. package/dist-cli-web/assets/{MessageExportModal-BozaR9UZ.js → MessageExportModal-DYjhBuzO.js} +1 -1
  58. package/dist-cli-web/assets/PageHeader-CL9AFfvl.js +1 -0
  59. package/dist-cli-web/assets/PageTabs.vue_vue_type_script_setup_true_lang-C22kOxIK.js +1 -0
  60. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-6EamagxG.js → RelationshipGalaxyCanvas-BnkcrIpk.js} +3 -3
  61. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-B6GB4PWS.js → RelationshipGalaxyThreeCanvas-CqdqveEJ.js} +1 -1
  62. package/dist-cli-web/assets/{RenderTargetSystem-mYuj4uBS.js → RenderTargetSystem-CPwnC2X3.js} +1 -1
  63. package/dist-cli-web/assets/{RovingFocusItem-B2y6BG1a.js → RovingFocusItem-j33Nsbbn.js} +1 -1
  64. package/dist-cli-web/assets/ScreenCaptureModal-ByKxzNQe.js +1 -0
  65. package/dist-cli-web/assets/{SectionTabs.vue_vue_type_script_setup_true_lang-ueEF4zHE.js → SectionTabs.vue_vue_type_script_setup_true_lang-C6EHKB_i.js} +1 -1
  66. package/dist-cli-web/assets/Select-jVtfc_xc.js +1 -0
  67. package/dist-cli-web/assets/SettingsModal-Dg27piEO.js +2 -0
  68. package/dist-cli-web/assets/StorageTab-QdcDqA6Q.js +1 -0
  69. package/dist-cli-web/assets/Switch-DYHM64k9.js +1 -0
  70. package/dist-cli-web/assets/Tabs-B6Nzq2NQ.js +1 -0
  71. package/dist-cli-web/assets/{Tabs-Dqwkh3Ea.js → Tabs-CRZdCcU4.js} +1 -1
  72. package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-DPIvbq75.js → ThemeCard.vue_vue_type_script_setup_true_lang-Bsq7gpC0.js} +1 -1
  73. package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-dEdo6CqM.js → TimeSelect.vue_vue_type_script_setup_true_lang-BLpQds4F.js} +1 -1
  74. package/dist-cli-web/assets/{VisuallyHiddenInput-BOdkR_GC.js → VisuallyHiddenInput-IQpmK9yR.js} +1 -1
  75. package/dist-cli-web/assets/{WebGLRenderer-BB8ukBI_.js → WebGLRenderer-8JHbnkTc.js} +1 -1
  76. package/dist-cli-web/assets/{WebGPURenderer-DDOzF1Kc.js → WebGPURenderer-CLWfB4CC.js} +1 -1
  77. package/dist-cli-web/assets/{aiChat-CzFSFuOJ.js → aiChat-4JvxWGXZ.js} +6 -6
  78. package/dist-cli-web/assets/base-D6fxqD_X.js +1 -0
  79. package/dist-cli-web/assets/{browserAll-BRqlnNxq.js → browserAll-Cin6ghNg.js} +1 -1
  80. package/dist-cli-web/assets/{cli-web-ClAJ6Tao.js → cli-web-D7IBc3AX.js} +1 -1
  81. package/dist-cli-web/assets/{dateFormat-DXuDxIye.js → dateFormat-Bu4-Ux3L.js} +1 -1
  82. package/dist-cli-web/assets/{fetch-CGu53cxT.js → fetch-1NiXh-_B.js} +1 -1
  83. package/dist-cli-web/assets/{fetch-q480XYZQ.js → fetch-2QEQPA9q.js} +8 -5
  84. package/dist-cli-web/assets/fetch-B2agy1hy.js +1 -0
  85. package/dist-cli-web/assets/{fetch-LY-yerw1.js → fetch-B7kuohCt.js} +1 -1
  86. package/dist-cli-web/assets/{fetch-Dy38lkAa.js → fetch-BR71C0K9.js} +1 -1
  87. package/dist-cli-web/assets/{fetch-CP1afnT0.js → fetch-Bk-7vxHV.js} +1 -1
  88. package/dist-cli-web/assets/fetch-C8tTTsCm.js +1 -0
  89. package/dist-cli-web/assets/{fetch-DijSOvop.js → fetch-CuUeyk0N.js} +1 -1
  90. package/dist-cli-web/assets/{fetch-DzKlTaLz.js → fetch-DPRDSI39.js} +1 -1
  91. package/dist-cli-web/assets/{fetch-Bcy2T8Fe.js → fetch-OnnCjzee.js} +1 -1
  92. package/dist-cli-web/assets/{fetch-DWAIk_6_.js → fetch-_CN1EVMt.js} +1 -1
  93. package/dist-cli-web/assets/index-B4J99zv3.css +1 -0
  94. package/dist-cli-web/assets/index-BBeqtL8d.css +1 -0
  95. package/dist-cli-web/assets/{index-Di6FmCdk.js → index-BCEk6ZpL.js} +9 -9
  96. package/dist-cli-web/assets/{index-CNzv7aBW.js → index-BIHFuCJK.js} +1 -1
  97. package/dist-cli-web/assets/index-BUz_Vl9U.js +2 -0
  98. package/dist-cli-web/assets/index-BWZIoPV3.css +1 -0
  99. package/dist-cli-web/assets/index-BYQV3OA5.js +1 -0
  100. package/dist-cli-web/assets/index-CVVv_6qu.js +2 -0
  101. package/dist-cli-web/assets/index-CacwXQL4.js +1 -0
  102. package/dist-cli-web/assets/{index-BRV_D8dv.js → index-Colc58j-.js} +1 -1
  103. package/dist-cli-web/assets/index-DImo7TQN.js +1 -0
  104. package/dist-cli-web/assets/index-DV9zQVPV.js +137 -0
  105. package/dist-cli-web/assets/index-DXKS-q-w.css +1 -0
  106. package/dist-cli-web/assets/index-DZc5A4_J.js +1 -0
  107. package/dist-cli-web/assets/index-DkWTvE7d.js +36 -0
  108. package/dist-cli-web/assets/index-DmEn0PAI.js +1 -0
  109. package/dist-cli-web/assets/index-b9eEQeVt.js +1 -0
  110. package/dist-cli-web/assets/index-waDxab2e.css +1 -0
  111. package/dist-cli-web/assets/insight-time-range-MJxLEu6o.js +1 -0
  112. package/dist-cli-web/assets/{people-page-header-Bh3KXD4g.js → people-page-header-DNPjaSt4.js} +1 -1
  113. package/dist-cli-web/assets/{prompt-DcAcgQiB.js → prompt-BgywZQ_g.js} +1 -1
  114. package/dist-cli-web/assets/{semantic-index-config-builder-CK6v64Y1.js → semantic-index-config-builder-bji_UxYE.js} +1 -1
  115. package/dist-cli-web/assets/{service-YZnJyEMq.js → service-DpU9fa-l.js} +1 -1
  116. package/dist-cli-web/assets/{useFormControl-B-aXrJZN.js → useFormControl-De24E2zT.js} +1 -1
  117. package/dist-cli-web/assets/useTable-C7BH94MF.js +1 -0
  118. package/dist-cli-web/assets/{useToast-B36MzFFy.js → useToast-CxhJkhXK.js} +1 -1
  119. package/dist-cli-web/assets/{webworkerAll-Dwqmy_YO.js → webworkerAll-BRnv6GvJ.js} +1 -1
  120. package/dist-cli-web/index.html +2 -2
  121. package/package.json +1 -1
  122. package/dist/chunk-22YJOBA3.mjs +0 -9826
  123. package/dist/chunk-22YJOBA3.mjs.map +0 -1
  124. package/dist/chunk-4GWWKHWA.mjs.map +0 -1
  125. package/dist/chunk-7IGBPZMI.mjs.map +0 -1
  126. package/dist/chunk-DC7IUDNV.mjs.map +0 -1
  127. package/dist/chunk-QZCNVAH6.mjs +0 -14
  128. package/dist/chunk-QZCNVAH6.mjs.map +0 -1
  129. package/dist-cli-web/assets/AISettingsTab-rQC2ocFH.js +0 -1
  130. package/dist-cli-web/assets/AboutTab-DMPziKjj.js +0 -1
  131. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-CnRLt_1j.js +0 -110
  132. package/dist-cli-web/assets/Alert--bTQXRcZ.js +0 -1
  133. package/dist-cli-web/assets/BatchManageTab-1KaCPweN.js +0 -1
  134. package/dist-cli-web/assets/ChatRecordDrawer-BC0F7ok1.js +0 -11
  135. package/dist-cli-web/assets/ChatRecordDrawer-Tt6UduRC.css +0 -1
  136. package/dist-cli-web/assets/Checkbox-CwajNPGF.js +0 -1
  137. package/dist-cli-web/assets/DataDirCleanupNotice-D0Oruka2.js +0 -1
  138. package/dist-cli-web/assets/DebugToolsPanel-DVDwS-wz.js +0 -1
  139. package/dist-cli-web/assets/GlobalTaskBar-DpPMX0jx.js +0 -1
  140. package/dist-cli-web/assets/GroupRelationshipGalaxyView-CLnO3phW.js +0 -1
  141. package/dist-cli-web/assets/Label-Bt2U4lGy.js +0 -1
  142. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-Cnshyn0f.js +0 -1
  143. package/dist-cli-web/assets/PageHeader-CEe0xTl3.js +0 -1
  144. package/dist-cli-web/assets/PageTabs.vue_vue_type_script_setup_true_lang-D2DZrrnv.js +0 -1
  145. package/dist-cli-web/assets/ScreenCaptureModal-BvAtSNNR.js +0 -1
  146. package/dist-cli-web/assets/Select-Cm4I8u9n.js +0 -1
  147. package/dist-cli-web/assets/SettingsModal-Cwshzj7i.js +0 -2
  148. package/dist-cli-web/assets/StorageTab-D7HzH16Y.js +0 -1
  149. package/dist-cli-web/assets/Switch-BVw4e_19.js +0 -1
  150. package/dist-cli-web/assets/Tabs-OrJkANIA.js +0 -1
  151. package/dist-cli-web/assets/annual-summary-time-range-CmrAqcuj.js +0 -1
  152. package/dist-cli-web/assets/base-CawUl6ET.js +0 -1
  153. package/dist-cli-web/assets/fetch-3_xX8Yi8.js +0 -1
  154. package/dist-cli-web/assets/index-0dp58uL4.css +0 -1
  155. package/dist-cli-web/assets/index-1X7zdLgJ.css +0 -1
  156. package/dist-cli-web/assets/index-4enwdBcq.css +0 -1
  157. package/dist-cli-web/assets/index-AudHHbMs.js +0 -1
  158. package/dist-cli-web/assets/index-CF4DTbvD.js +0 -1
  159. package/dist-cli-web/assets/index-CMLoht5R.js +0 -1
  160. package/dist-cli-web/assets/index-CMPHZH6B.css +0 -1
  161. package/dist-cli-web/assets/index-CXUTiy-V.js +0 -1
  162. package/dist-cli-web/assets/index-D5m0P4ss.js +0 -36
  163. package/dist-cli-web/assets/index-DkOrt7_X.js +0 -2
  164. package/dist-cli-web/assets/index-Dlb6fC68.js +0 -1
  165. package/dist-cli-web/assets/index-IA7YUjQX.js +0 -2
  166. package/dist-cli-web/assets/index-ZsZwPLWy.css +0 -1
  167. package/dist-cli-web/assets/index-kzU381y1.js +0 -1
  168. package/dist-cli-web/assets/index-z8Vogc-b.js +0 -137
  169. package/dist-cli-web/assets/lazy-overlay-visibility-Bd9ZFOgR.js +0 -1
  170. package/dist-cli-web/assets/member-select-utils-BXZ3oHct.js +0 -1
  171. package/dist-cli-web/assets/useTable-DPEMaGby.js +0 -1
  172. /package/dist/{chat-command-24RYGJAS.mjs.map → chat-command-SXW67RF7.mjs.map} +0 -0
  173. /package/dist/{chunk-KXDJ7N6N.mjs.map → chunk-AAGDVTP2.mjs.map} +0 -0
  174. /package/dist/{chunk-ZBPPLXM4.mjs.map → chunk-CNEWMCGX.mjs.map} +0 -0
  175. /package/dist/{chunk-QKEARRFH.mjs.map → chunk-GVW3BDGZ.mjs.map} +0 -0
  176. /package/dist/{chunk-BRZ6YIBR.mjs.map → chunk-JHON5FN7.mjs.map} +0 -0
  177. /package/dist/{chunk-U36TQMAF.mjs.map → chunk-UNIKQFI5.mjs.map} +0 -0
  178. /package/dist/{chunk-GQMCDWZQ.mjs.map → chunk-VDWI4A4U.mjs.map} +0 -0
  179. /package/dist/{chunk-KIMJXKZO.mjs.map → chunk-XDF6PMVZ.mjs.map} +0 -0
  180. /package/dist/{http-3K4YMWDE.mjs.map → http-LVOGJFDL.mjs.map} +0 -0
  181. /package/dist/{import-D4LV565A.mjs.map → import-7OU57ZHM.mjs.map} +0 -0
  182. /package/dist/{mcp-KL22FKQ2.mjs.map → mcp-CUKHTTII.mjs.map} +0 -0
  183. /package/dist/{src-COIB6Z4P.mjs.map → src-LORFXAUE.mjs.map} +0 -0
  184. /package/dist/{stream-import-FSXCFG4M.mjs.map → stream-import-7YUWIAD6.mjs.map} +0 -0
  185. /package/dist/{worker-runtime-DPS2LURI.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-22YJOBA3.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-KXDJ7N6N.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-DEFEU567.mjs";
14
+ } from "./chunk-LZGOIRLV.mjs";
15
15
  import {
16
16
  AGENT_TOOL_REGISTRY,
17
17
  CoreDataProvider
18
- } from "./chunk-BRZ6YIBR.mjs";
18
+ } from "./chunk-JHON5FN7.mjs";
19
19
  import {
20
20
  resolveCliLocalEmbeddingRuntimeConfig
21
- } from "./chunk-U36TQMAF.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-QKEARRFH.mjs";
29
+ } from "./chunk-GVW3BDGZ.mjs";
30
30
  import {
31
31
  assertCliDataDirCompatible
32
- } from "./chunk-GQMCDWZQ.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-DC7IUDNV.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-4GWWKHWA.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,
@@ -122,9 +115,17 @@ import {
122
115
  MigrationRunner,
123
116
  POS_TAG_DEFINITIONS,
124
117
  appLogger,
118
+ assertValidTopicDayKey,
119
+ buildPiModel,
120
+ chatTopicWorkCoordinator,
121
+ countMessagesTokens,
122
+ createChatTopicModelClient,
123
+ createChatTopicService,
125
124
  createDatabaseManagerAdapter,
125
+ createLlmRuntimeStores,
126
126
  executeReadonlySql,
127
127
  executeSql,
128
+ fetchRemoteModels,
128
129
  getAvailableYears,
129
130
  getBuiltinModelsByProvider,
130
131
  getCatchphraseAnalysis,
@@ -132,6 +133,7 @@ import {
132
133
  getClusterGraph,
133
134
  getDailyActivity,
134
135
  getDbFileVersion,
136
+ getDefaultRulesForLocale,
135
137
  getDivingAnalysis,
136
138
  getDragonKingAnalysis,
137
139
  getGroupRelationshipGalaxy,
@@ -165,11 +167,14 @@ import {
165
167
  initAppLogger,
166
168
  isNewerStableVersion,
167
169
  loadConfig,
170
+ mergeRulesForLocale,
168
171
  queryMessages,
172
+ runSimpleLlmStream,
169
173
  stripAvatarFields,
174
+ validateApiKey,
170
175
  verifyCliDataPath,
171
176
  writeConfigField
172
- } from "./chunk-22YJOBA3.mjs";
177
+ } from "./chunk-OWOEWZIC.mjs";
173
178
 
174
179
  // src/http/index.ts
175
180
  import * as fs11 from "fs";
@@ -823,6 +828,7 @@ data: ${JSON.stringify(data)}
823
828
  reply.raw.end();
824
829
  };
825
830
  safeSendSSE("meta", { requestId });
831
+ const releaseInteractiveWork = chatTopicWorkCoordinator.beginInteractiveWork();
826
832
  reply.raw.on("close", () => {
827
833
  if (!abortController.signal.aborted) {
828
834
  abortController.abort();
@@ -842,6 +848,7 @@ data: ${JSON.stringify(data)}
842
848
  const msg = error instanceof Error ? error.message : String(error);
843
849
  safeSendSSE("error", { type: "error", error: { name: "ServerError", message: msg } });
844
850
  } finally {
851
+ releaseInteractiveWork();
845
852
  if (!emittedDone) safeSendSSE("done", { type: "done", isFinished: true });
846
853
  activeAgentAborts.delete(requestId);
847
854
  safeEnd();
@@ -1024,6 +1031,93 @@ function registerAiChatRoutes(server2, ctx) {
1024
1031
  });
1025
1032
  }
1026
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
+
1027
1121
  // ../../packages/http-routes/src/routes/web/ai-llm-stream.ts
1028
1122
  function registerAiLlmStreamRoutes(server2, ctx) {
1029
1123
  const store = ctx.llmConfigStore;
@@ -1550,6 +1644,7 @@ function registerAiRoutes(server2, ctx, options) {
1550
1644
  registerAiAgentStreamRoutes(server2, ctx);
1551
1645
  registerAiToolRoutes(server2, ctx);
1552
1646
  registerAiChatRoutes(server2, ctx);
1647
+ registerAiChatTopicRoutes(server2, ctx);
1553
1648
  registerAiSummaryRoutes(server2, ctx);
1554
1649
  registerAiLogRoutes(server2, ctx);
1555
1650
  registerSemanticIndexRoutes(server2, ctx);
@@ -2236,13 +2331,28 @@ function registerExportRoutes(server2, ctx) {
2236
2331
 
2237
2332
  // ../../packages/http-routes/src/routes/web/global-insight.ts
2238
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
+ };
2239
2339
  const service = ctx.globalInsightService ?? createGlobalInsightService({
2240
2340
  adapter: ctx.sessionAdapter,
2241
2341
  pathProvider: ctx.pathProvider,
2242
2342
  runtimeIdentity: ctx.runtimeIdentity,
2243
- 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()]);
2244
2355
  });
2245
- server2.addHook("onClose", async () => service.close());
2246
2356
  server2.get("/_web/global-insight/annual-summary", async (request) => {
2247
2357
  return service.getAnnualSummary({
2248
2358
  ...parseRange(request.query),
@@ -2253,6 +2363,17 @@ function registerGlobalInsightRoutes(server2, ctx) {
2253
2363
  "/_web/global-insight/annual-summary/recompute",
2254
2364
  async (request) => service.startRecompute(parseRange(request.query))
2255
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
+ );
2256
2377
  }
2257
2378
  function parseRange(query) {
2258
2379
  const mode = query.mode === "recent" ? "recent" : "year";
@@ -2741,14 +2862,21 @@ function registerSessionRoutes(server2, ctx) {
2741
2862
  };
2742
2863
  server2.get("/_web/sessions", async () => {
2743
2864
  const aiChatCounts = ctx.aiChatManager?.getAIChatCountsBySession();
2865
+ const excludedSessionIds = new Set(preferences().load().ownerExcludedSessionIds);
2744
2866
  return session_service_exports.listAnalysisSessions(adapter, {
2745
2867
  resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir),
2746
- enrichSession: aiChatCounts?.size ? (dto) => ({ ...dto, aiConversationCount: aiChatCounts.get(dto.id) ?? 0 }) : void 0
2868
+ enrichSession: (dto) => ({
2869
+ ...dto,
2870
+ aiConversationCount: aiChatCounts?.get(dto.id) ?? 0,
2871
+ ownerExcluded: excludedSessionIds.has(dto.id)
2872
+ })
2747
2873
  });
2748
2874
  });
2749
2875
  server2.get("/_web/sessions/:id", async (request) => {
2876
+ const excludedSessionIds = new Set(preferences().load().ownerExcludedSessionIds);
2750
2877
  const session = session_service_exports.getAnalysisSession(adapter, request.params.id, {
2751
- resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir)
2878
+ resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir),
2879
+ enrichSession: (dto) => ({ ...dto, ownerExcluded: excludedSessionIds.has(dto.id) })
2752
2880
  });
2753
2881
  if (!session) {
2754
2882
  throw Object.assign(new Error(`Session not found: ${request.params.id}`), { statusCode: 404 });
@@ -2760,16 +2888,14 @@ function registerSessionRoutes(server2, ctx) {
2760
2888
  });
2761
2889
  server2.delete("/_web/sessions/:id", async (request, reply) => {
2762
2890
  const { id } = request.params;
2763
- try {
2764
- await ctx.beforeDeleteSession?.(id);
2765
- const deleted = session_service_exports.deleteSession(adapter, id);
2766
- if (!deleted) {
2767
- return reply.code(404).send({ success: false, error: "File not found" });
2768
- }
2769
- return { success: true };
2770
- } catch (err) {
2771
- 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" });
2772
2896
  }
2897
+ owner_profile_service_exports.clearOwnerExclusions(preferences(), [id]);
2898
+ return { success: true };
2773
2899
  });
2774
2900
  server2.patch("/_web/sessions/:id/name", async (request) => {
2775
2901
  session_service_exports.renameSession(adapter, request.params.id, request.body.name);
@@ -2779,6 +2905,7 @@ function registerSessionRoutes(server2, ctx) {
2779
2905
  "/_web/sessions/:id/owner",
2780
2906
  async (request) => {
2781
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]);
2782
2909
  return { success: true };
2783
2910
  }
2784
2911
  );
@@ -2796,8 +2923,8 @@ function registerSessionRoutes(server2, ctx) {
2796
2923
  );
2797
2924
  }
2798
2925
  );
2799
- server2.post("/_web/sessions/:id/owner/dismiss-prompt", async (request) => {
2800
- 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);
2801
2928
  return { success: true };
2802
2929
  });
2803
2930
  }
@@ -3572,10 +3699,10 @@ function registerWebRoutes2(server2, dbManager2, options) {
3572
3699
  const resolvedPathProvider = options?.pathProvider ?? fallbackPathProvider;
3573
3700
  const ai = options?.aiContext;
3574
3701
  const cliStreamImport = async (dm, filePath) => {
3575
- const { streamImport: streamImport2 } = await import("./stream-import-FSXCFG4M.mjs");
3702
+ const { streamImport: streamImport2 } = await import("./stream-import-7YUWIAD6.mjs");
3576
3703
  const result = await streamImport2(dm, filePath);
3577
3704
  if (!result.success) {
3578
- const { IMPORT_IN_PROGRESS_ERROR_KEY: IMPORT_IN_PROGRESS_ERROR_KEY2, ImportInProgressError: ImportInProgressError2 } = await import("./src-COIB6Z4P.mjs");
3705
+ const { IMPORT_IN_PROGRESS_ERROR_KEY: IMPORT_IN_PROGRESS_ERROR_KEY2, ImportInProgressError: ImportInProgressError2 } = await import("./src-LORFXAUE.mjs");
3579
3706
  if (result.error === IMPORT_IN_PROGRESS_ERROR_KEY2) throw new ImportInProgressError2();
3580
3707
  throw new Error(result.error || "Import failed");
3581
3708
  }
@@ -4751,4 +4878,4 @@ export {
4751
4878
  startHttpServer,
4752
4879
  stopHttpServer
4753
4880
  };
4754
- //# sourceMappingURL=chunk-7IGBPZMI.mjs.map
4881
+ //# sourceMappingURL=chunk-BSGLH6G3.mjs.map