chatlab-cli 0.35.0 → 0.36.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.
- package/README.md +7 -7
- package/dist/{chat-command-24RYGJAS.mjs → chat-command-XPJ43KSW.mjs} +11 -11
- package/dist/chat-command-XPJ43KSW.mjs.map +1 -0
- package/dist/{chunk-7IGBPZMI.mjs → chunk-2JPFBIAG.mjs} +268 -76
- package/dist/chunk-2JPFBIAG.mjs.map +1 -0
- package/dist/{chunk-GQMCDWZQ.mjs → chunk-5MJO4AJB.mjs} +2 -2
- package/dist/{chunk-QKEARRFH.mjs → chunk-67HNPYZJ.mjs} +3 -3
- package/dist/{chunk-U36TQMAF.mjs → chunk-6QP47LID.mjs} +2 -2
- package/dist/{chunk-4GWWKHWA.mjs → chunk-FJOGBUXU.mjs} +892 -6990
- package/dist/chunk-FJOGBUXU.mjs.map +1 -0
- package/dist/{chunk-KIMJXKZO.mjs → chunk-JOVL7OTW.mjs} +2 -2
- package/dist/{chunk-ZBPPLXM4.mjs → chunk-L7TIIVAY.mjs} +63 -63
- package/dist/chunk-L7TIIVAY.mjs.map +1 -0
- package/dist/{chunk-DC7IUDNV.mjs → chunk-NFTCEJBJ.mjs} +27 -9
- package/dist/chunk-NFTCEJBJ.mjs.map +1 -0
- package/dist/{chunk-KXDJ7N6N.mjs → chunk-NQHZPSW2.mjs} +2 -2
- package/dist/chunk-Q3NEL2KK.mjs +19126 -0
- package/dist/chunk-Q3NEL2KK.mjs.map +1 -0
- package/dist/{chunk-DEFEU567.mjs → chunk-R73XMAB2.mjs} +13 -11
- package/dist/chunk-R73XMAB2.mjs.map +1 -0
- package/dist/{chunk-BRZ6YIBR.mjs → chunk-X2QBH24F.mjs} +8 -3
- package/dist/chunk-X2QBH24F.mjs.map +1 -0
- package/dist/chunk-YKMQLAVP.mjs +25 -0
- package/dist/chunk-YKMQLAVP.mjs.map +1 -0
- package/dist/cli.mjs +10 -10
- package/dist/contacts-worker.mjs +2 -2
- package/dist/global-insight-worker.mjs +136 -4
- package/dist/global-insight-worker.mjs.map +1 -1
- package/dist/{http-3K4YMWDE.mjs → http-5RVY5J5U.mjs} +13 -13
- package/dist/{import-D4LV565A.mjs → import-ILTWVHKU.mjs} +8 -8
- package/dist/index.mjs +13 -13
- package/dist/{mcp-KL22FKQ2.mjs → mcp-Y2YXOFB4.mjs} +9 -9
- package/dist/people-relationships-worker.mjs +2 -2
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{service-KZTHBDQ5.mjs → service-ZAHXRSFD.mjs} +6 -6
- package/dist/service-ZAHXRSFD.mjs.map +1 -0
- package/dist/{src-COIB6Z4P.mjs → src-OV5ZNE3Z.mjs} +124 -98
- package/dist/{stream-import-FSXCFG4M.mjs → stream-import-XOUM3Z5W.mjs} +8 -8
- package/dist/{undici-MU5I3L6Q.mjs → undici-UGXDRJLV.mjs} +193 -193
- package/dist/undici-UGXDRJLV.mjs.map +1 -0
- package/dist/{update-checker-3N7HQEP2.mjs → update-checker-UL2FBLXH.mjs} +3 -5
- package/dist/{update-checker-3N7HQEP2.mjs.map → update-checker-UL2FBLXH.mjs.map} +1 -1
- package/dist/{worker-runtime-DPS2LURI.mjs → worker-runtime-JNGURHDM.mjs} +6 -6
- package/dist-cli-web/assets/AISettingsTab-vvjijrc5.js +1 -0
- package/dist-cli-web/assets/{AboutTab-DMPziKjj.js → AboutTab-CxI8zJNz.js} +1 -1
- package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-w0hHEodr.js +110 -0
- package/dist-cli-web/assets/Alert-_MYcI_E2.js +1 -0
- package/dist-cli-web/assets/ApiSettingsTab-CK7U6dVA.js +2 -0
- package/dist-cli-web/assets/BatchManageTab-1WnEqqpB.js +1 -0
- package/dist-cli-web/assets/{BufferResource-BXSJADxx.js → BufferResource-i64DlwQT.js} +1 -1
- package/dist-cli-web/assets/{CanvasRenderer-Cq--8UQ_.js → CanvasRenderer-B76mEt9A.js} +1 -1
- package/dist-cli-web/assets/ChatRecordDrawer-Bp6OSCrz.js +1 -0
- package/dist-cli-web/assets/ChatRecordWorkspace-CyfPIlIy.js +11 -0
- package/dist-cli-web/assets/ChatRecordWorkspace-D_oJMtqh.css +1 -0
- package/dist-cli-web/assets/Checkbox-Ci7IeRw1.js +1 -0
- package/dist-cli-web/assets/DataDirCleanupNotice-Dh63pOLt.js +1 -0
- package/dist-cli-web/assets/DatePicker.vue_vue_type_script_setup_true_lang-DqNBNa1D.js +1 -0
- package/dist-cli-web/assets/DebugToolsPanel-CbNsD9co.js +1 -0
- package/dist-cli-web/assets/EChart.vue_vue_type_script_setup_true_lang-YeqmodwE.js +1 -0
- package/dist-cli-web/assets/EChartBar.vue_vue_type_script_setup_true_lang-C3pZmq0v.js +1 -0
- package/dist-cli-web/assets/EChartLine.vue_vue_type_script_setup_true_lang-Co6olfwv.js +1 -0
- package/dist-cli-web/assets/{EChartWordcloud-KV0MdsDE.js → EChartWordcloud-rDusZwSq.js} +1 -1
- package/dist-cli-web/assets/{Filter-DVaqcFmI.js → Filter-yxkeHO78.js} +1 -1
- package/dist-cli-web/assets/GlobalTaskBar-BlZ-fFiq.js +1 -0
- package/dist-cli-web/assets/GroupRelationshipGalaxyView-BXQBX0zJ.js +1 -0
- package/dist-cli-web/assets/Label-CFAZFBQX.js +1 -0
- package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-CwgpqtMZ.js +1 -0
- package/dist-cli-web/assets/MessageExportModal-DU71grc7.js +1 -0
- package/dist-cli-web/assets/PageHeader-BDPf4NuI.js +1 -0
- package/dist-cli-web/assets/PageTabs.vue_vue_type_script_setup_true_lang-_j82asQU.js +1 -0
- package/dist-cli-web/assets/{RelationshipGalaxyCanvas-6EamagxG.js → RelationshipGalaxyCanvas-BODk18aA.js} +14 -14
- package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-BJyuRiC-.js +4168 -0
- package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-CCasBcBQ.css +1 -0
- package/dist-cli-web/assets/{RenderTargetSystem-mYuj4uBS.js → RenderTargetSystem-CVMvAUSv.js} +1 -1
- package/dist-cli-web/assets/RovingFocusItem-DC_06OmN.js +1 -0
- package/dist-cli-web/assets/ScreenCaptureModal-DrBFDOtC.js +1 -0
- package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-C-Zj2biH.js +1 -0
- package/dist-cli-web/assets/Select-DLK2LYhO.js +1 -0
- package/dist-cli-web/assets/SettingsModal-BFkxzo0Y.css +1 -0
- package/dist-cli-web/assets/SettingsModal-DqaR4Dx5.js +2 -0
- package/dist-cli-web/assets/StorageTab-B0ebN0f8.js +1 -0
- package/dist-cli-web/assets/Switch-CokhQWxm.js +1 -0
- package/dist-cli-web/assets/Tabs-D1UiZNaZ.js +1 -0
- package/dist-cli-web/assets/Tabs-N3Q-Mpqi.js +1 -0
- package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-DPIvbq75.js → ThemeCard.vue_vue_type_script_setup_true_lang-OT-I0mbU.js} +1 -1
- package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-Ccunouyf.js +1 -0
- package/dist-cli-web/assets/{VisuallyHiddenInput-BOdkR_GC.js → VisuallyHiddenInput-OAJEt_Y5.js} +1 -1
- package/dist-cli-web/assets/{WebGLRenderer-BB8ukBI_.js → WebGLRenderer-DuUeftYD.js} +1 -1
- package/dist-cli-web/assets/{WebGPURenderer-DDOzF1Kc.js → WebGPURenderer-DoWQxiWZ.js} +1 -1
- package/dist-cli-web/assets/aiChat-CdADfRnU.js +8 -0
- package/dist-cli-web/assets/{browserAll-BRqlnNxq.js → browserAll-Cb-mtR2y.js} +1 -1
- package/dist-cli-web/assets/{cli-web-ClAJ6Tao.js → cli-web-BHQCZLLg.js} +1 -1
- package/dist-cli-web/assets/{fetch-LY-yerw1.js → fetch-AvsnJLWJ.js} +1 -1
- package/dist-cli-web/assets/{fetch-Dy38lkAa.js → fetch-B-6tyYWu.js} +1 -1
- package/dist-cli-web/assets/{fetch-Bcy2T8Fe.js → fetch-B4PYy5JS.js} +1 -1
- package/dist-cli-web/assets/{fetch-DWAIk_6_.js → fetch-BbcFaCRB.js} +1 -1
- package/dist-cli-web/assets/fetch-BkA_so1e.js +1 -0
- package/dist-cli-web/assets/{fetch-q480XYZQ.js → fetch-BzXuAaT3.js} +8 -5
- package/dist-cli-web/assets/fetch-CW2fKvGp.js +1 -0
- package/dist-cli-web/assets/{fetch-DijSOvop.js → fetch-DEub4tOo.js} +1 -1
- package/dist-cli-web/assets/{fetch-CGu53cxT.js → fetch-DLTlYnDB.js} +1 -1
- package/dist-cli-web/assets/fetch-Qs38Hx1V.js +1 -0
- package/dist-cli-web/assets/{fetch-CP1afnT0.js → fetch-sYDJ-Zs8.js} +1 -1
- package/dist-cli-web/assets/{fetch-DzKlTaLz.js → fetch-ul8-uQIb.js} +1 -1
- package/dist-cli-web/assets/host-B6SQ6OGo.js +1 -0
- package/dist-cli-web/assets/host-DYIkQqvY.js +1 -0
- package/dist-cli-web/assets/{index-Di6FmCdk.js → index--IEkRjKe.js} +10 -10
- package/dist-cli-web/assets/index-9iaY_EWG.js +1 -0
- package/dist-cli-web/assets/index-B4J99zv3.css +1 -0
- package/dist-cli-web/assets/index-BBeqtL8d.css +1 -0
- package/dist-cli-web/assets/index-BnaLj2dx.css +1 -0
- package/dist-cli-web/assets/index-C7omDgiJ.js +2 -0
- package/dist-cli-web/assets/index-CHsM84U1.js +2 -0
- package/dist-cli-web/assets/index-CL8u01Pf.js +137 -0
- package/dist-cli-web/assets/{index-CNzv7aBW.js → index-CShh95fU.js} +1 -1
- package/dist-cli-web/assets/index-C_OS8Y8W.js +1 -0
- package/dist-cli-web/assets/{index-BRV_D8dv.js → index-D64XYYts.js} +1 -1
- package/dist-cli-web/assets/index-DrCc8p_I.css +1 -0
- package/dist-cli-web/assets/index-Dz_ddyZS.css +1 -0
- package/dist-cli-web/assets/index-UpTe1KzQ.js +1 -0
- package/dist-cli-web/assets/index-a8Hw6eD8.js +1 -0
- package/dist-cli-web/assets/index-jwjzZNKm.js +1 -0
- package/dist-cli-web/assets/index-pkxlF8Ee.js +1 -0
- package/dist-cli-web/assets/index-sWxuTsa7.js +36 -0
- package/dist-cli-web/assets/{people-page-header-Bh3KXD4g.js → people-page-header-0jvXFFnh.js} +1 -1
- package/dist-cli-web/assets/{prompt-DcAcgQiB.js → prompt-BPYj29Vq.js} +1 -1
- package/dist-cli-web/assets/{semantic-index-config-builder-CK6v64Y1.js → semantic-index-config-builder-vO37z355.js} +1 -1
- package/dist-cli-web/assets/service-CVoA9yNf.js +1 -0
- package/dist-cli-web/assets/{service-YZnJyEMq.js → service-D29Vftq9.js} +1 -1
- package/dist-cli-web/assets/service-DMysyLCa.js +1 -0
- package/dist-cli-web/assets/{useFormControl-B-aXrJZN.js → useFormControl-DVawP2DO.js} +1 -1
- package/dist-cli-web/assets/useTable-Bv3R_Hux.js +1 -0
- package/dist-cli-web/assets/useToast-BA0EwImD.js +1 -0
- package/dist-cli-web/assets/{vendor-echarts-DfAMQxdr.js → vendor-echarts-hTLhTs52.js} +5 -5
- package/dist-cli-web/assets/{vendor-echarts-wordcloud-BsaEJTPY.js → vendor-echarts-wordcloud-B8CF_NgP.js} +1 -1
- package/dist-cli-web/assets/{vendor-zrender-PFmZe1EY.js → vendor-zrender-D8psf1AA.js} +2 -2
- package/dist-cli-web/assets/{webworkerAll-Dwqmy_YO.js → webworkerAll-ZPE_yGnC.js} +1 -1
- package/dist-cli-web/index.html +2 -2
- package/package.json +4 -4
- package/dist/chat-command-24RYGJAS.mjs.map +0 -1
- package/dist/chunk-22YJOBA3.mjs +0 -9826
- package/dist/chunk-22YJOBA3.mjs.map +0 -1
- package/dist/chunk-4GWWKHWA.mjs.map +0 -1
- package/dist/chunk-7IGBPZMI.mjs.map +0 -1
- package/dist/chunk-BRZ6YIBR.mjs.map +0 -1
- package/dist/chunk-DC7IUDNV.mjs.map +0 -1
- package/dist/chunk-DEFEU567.mjs.map +0 -1
- package/dist/chunk-QZCNVAH6.mjs +0 -14
- package/dist/chunk-QZCNVAH6.mjs.map +0 -1
- package/dist/chunk-ZBPPLXM4.mjs.map +0 -1
- package/dist/service-KZTHBDQ5.mjs.map +0 -1
- package/dist/undici-MU5I3L6Q.mjs.map +0 -1
- package/dist-cli-web/assets/AISettingsTab-rQC2ocFH.js +0 -1
- package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-CnRLt_1j.js +0 -110
- package/dist-cli-web/assets/Alert--bTQXRcZ.js +0 -1
- package/dist-cli-web/assets/ApiSettingsTab-CtXl4I28.js +0 -2
- package/dist-cli-web/assets/BatchManageTab-1KaCPweN.js +0 -1
- package/dist-cli-web/assets/ChatRecordDrawer-BC0F7ok1.js +0 -11
- package/dist-cli-web/assets/ChatRecordDrawer-Tt6UduRC.css +0 -1
- package/dist-cli-web/assets/Checkbox-CwajNPGF.js +0 -1
- package/dist-cli-web/assets/DataDirCleanupNotice-D0Oruka2.js +0 -1
- package/dist-cli-web/assets/DatePicker.vue_vue_type_script_setup_true_lang-C4CsoIlq.js +0 -1
- package/dist-cli-web/assets/DebugToolsPanel-DVDwS-wz.js +0 -1
- package/dist-cli-web/assets/GlobalTaskBar-DpPMX0jx.js +0 -1
- package/dist-cli-web/assets/GroupRelationshipGalaxyView-CLnO3phW.js +0 -1
- package/dist-cli-web/assets/Label-Bt2U4lGy.js +0 -1
- package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-Cnshyn0f.js +0 -1
- package/dist-cli-web/assets/MessageExportModal-BozaR9UZ.js +0 -1
- package/dist-cli-web/assets/PageHeader-CEe0xTl3.js +0 -1
- package/dist-cli-web/assets/PageTabs.vue_vue_type_script_setup_true_lang-D2DZrrnv.js +0 -1
- package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-B6GB4PWS.js +0 -4108
- package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-TYGOUDiv.css +0 -1
- package/dist-cli-web/assets/RovingFocusItem-B2y6BG1a.js +0 -1
- package/dist-cli-web/assets/ScreenCaptureModal-BvAtSNNR.js +0 -1
- package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-ueEF4zHE.js +0 -1
- package/dist-cli-web/assets/Select-Cm4I8u9n.js +0 -1
- package/dist-cli-web/assets/SettingsModal-CjVax3I6.css +0 -1
- package/dist-cli-web/assets/SettingsModal-Cwshzj7i.js +0 -2
- package/dist-cli-web/assets/StorageTab-D7HzH16Y.js +0 -1
- package/dist-cli-web/assets/Switch-BVw4e_19.js +0 -1
- package/dist-cli-web/assets/Tabs-Dqwkh3Ea.js +0 -1
- package/dist-cli-web/assets/Tabs-OrJkANIA.js +0 -1
- package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-dEdo6CqM.js +0 -1
- package/dist-cli-web/assets/aiChat-CzFSFuOJ.js +0 -8
- package/dist-cli-web/assets/annual-summary-time-range-CmrAqcuj.js +0 -1
- package/dist-cli-web/assets/base-CawUl6ET.js +0 -1
- package/dist-cli-web/assets/dateFormat-DXuDxIye.js +0 -1
- package/dist-cli-web/assets/fetch-3_xX8Yi8.js +0 -1
- package/dist-cli-web/assets/index-0dp58uL4.css +0 -1
- package/dist-cli-web/assets/index-1X7zdLgJ.css +0 -1
- package/dist-cli-web/assets/index-4enwdBcq.css +0 -1
- package/dist-cli-web/assets/index-AudHHbMs.js +0 -1
- package/dist-cli-web/assets/index-CF4DTbvD.js +0 -1
- package/dist-cli-web/assets/index-CMLoht5R.js +0 -1
- package/dist-cli-web/assets/index-CMPHZH6B.css +0 -1
- package/dist-cli-web/assets/index-CXUTiy-V.js +0 -1
- package/dist-cli-web/assets/index-D5m0P4ss.js +0 -36
- package/dist-cli-web/assets/index-DkOrt7_X.js +0 -2
- package/dist-cli-web/assets/index-Dlb6fC68.js +0 -1
- package/dist-cli-web/assets/index-IA7YUjQX.js +0 -2
- package/dist-cli-web/assets/index-ZsZwPLWy.css +0 -1
- package/dist-cli-web/assets/index-kzU381y1.js +0 -1
- package/dist-cli-web/assets/index-z8Vogc-b.js +0 -137
- package/dist-cli-web/assets/lazy-overlay-visibility-Bd9ZFOgR.js +0 -1
- package/dist-cli-web/assets/member-select-utils-BXZ3oHct.js +0 -1
- package/dist-cli-web/assets/useTable-DPEMaGby.js +0 -1
- package/dist-cli-web/assets/useToast-B36MzFFy.js +0 -1
- /package/dist/{chunk-GQMCDWZQ.mjs.map → chunk-5MJO4AJB.mjs.map} +0 -0
- /package/dist/{chunk-QKEARRFH.mjs.map → chunk-67HNPYZJ.mjs.map} +0 -0
- /package/dist/{chunk-U36TQMAF.mjs.map → chunk-6QP47LID.mjs.map} +0 -0
- /package/dist/{chunk-KIMJXKZO.mjs.map → chunk-JOVL7OTW.mjs.map} +0 -0
- /package/dist/{chunk-KXDJ7N6N.mjs.map → chunk-NQHZPSW2.mjs.map} +0 -0
- /package/dist/{http-3K4YMWDE.mjs.map → http-5RVY5J5U.mjs.map} +0 -0
- /package/dist/{import-D4LV565A.mjs.map → import-ILTWVHKU.mjs.map} +0 -0
- /package/dist/{mcp-KL22FKQ2.mjs.map → mcp-Y2YXOFB4.mjs.map} +0 -0
- /package/dist/{src-COIB6Z4P.mjs.map → src-OV5ZNE3Z.mjs.map} +0 -0
- /package/dist/{stream-import-FSXCFG4M.mjs.map → stream-import-XOUM3Z5W.mjs.map} +0 -0
- /package/dist/{worker-runtime-DPS2LURI.mjs.map → worker-runtime-JNGURHDM.mjs.map} +0 -0
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
getServerAiLogger,
|
|
12
12
|
getSkillManagerCore,
|
|
13
13
|
initServerAiLogger
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-R73XMAB2.mjs";
|
|
15
15
|
import {
|
|
16
16
|
AGENT_TOOL_REGISTRY,
|
|
17
17
|
CoreDataProvider
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-X2QBH24F.mjs";
|
|
19
19
|
import {
|
|
20
20
|
resolveCliLocalEmbeddingRuntimeConfig
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-6QP47LID.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-
|
|
29
|
+
} from "./chunk-67HNPYZJ.mjs";
|
|
30
30
|
import {
|
|
31
31
|
assertCliDataDirCompatible
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-5MJO4AJB.mjs";
|
|
33
33
|
import {
|
|
34
34
|
getVersion
|
|
35
35
|
} from "./chunk-5ADKYYNA.mjs";
|
|
@@ -62,55 +62,51 @@ import {
|
|
|
62
62
|
isDictDownloaded,
|
|
63
63
|
segmentText,
|
|
64
64
|
serializeChatLabToJsonl
|
|
65
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-NFTCEJBJ.mjs";
|
|
66
66
|
import {
|
|
67
|
-
AIChatManager,
|
|
68
67
|
ArchiveImportError,
|
|
69
68
|
ArchiveImportSourceManager,
|
|
70
69
|
IMPORT_IN_PROGRESS_ERROR_KEY,
|
|
71
70
|
ImportIdempotencyCache,
|
|
72
71
|
ImportInProgressError,
|
|
73
72
|
MergeSessionCache,
|
|
73
|
+
NavigationLayoutValidationError,
|
|
74
74
|
PARSER_FORMAT_IDS,
|
|
75
75
|
SEMANTIC_INDEX_CONFIG_FILE,
|
|
76
76
|
SemanticIndexConfigStore,
|
|
77
77
|
TempDbWriter,
|
|
78
|
-
buildPiModel,
|
|
79
|
-
countMessagesTokens,
|
|
80
78
|
createChatLabTempDir,
|
|
81
79
|
createContactsService,
|
|
82
80
|
createGlobalInsightService,
|
|
83
|
-
|
|
81
|
+
createNavigationLayoutService,
|
|
84
82
|
createPeopleRelationshipsService,
|
|
83
|
+
createTimeInvestmentService,
|
|
85
84
|
detectAllFormats,
|
|
86
85
|
detectFormat,
|
|
87
86
|
exportSessionToJson,
|
|
88
87
|
export_service_exports,
|
|
89
|
-
fetchRemoteModels,
|
|
90
88
|
findEntryFileInDirectory,
|
|
91
89
|
getChatLabTempScopeDir,
|
|
92
|
-
getDefaultRulesForLocale,
|
|
93
90
|
getSupportedFormats,
|
|
94
91
|
hashImportBody,
|
|
95
92
|
isSemanticIndexConfigured,
|
|
96
93
|
isValidImportSessionId,
|
|
97
94
|
logNativeParserStatus,
|
|
98
95
|
member_service_exports,
|
|
99
|
-
mergeRulesForLocale,
|
|
100
96
|
owner_profile_service_exports,
|
|
101
97
|
persistSemanticIndexConfig,
|
|
102
98
|
pushImport,
|
|
103
99
|
resolveSemanticIndexApiKeySet,
|
|
104
|
-
runSimpleLlmStream,
|
|
105
100
|
scanMultiChatFile,
|
|
106
101
|
session_index_service_exports,
|
|
107
102
|
session_service_exports,
|
|
108
103
|
streamParseFileInfo,
|
|
109
|
-
summary_service_exports
|
|
110
|
-
|
|
111
|
-
} from "./chunk-4GWWKHWA.mjs";
|
|
104
|
+
summary_service_exports
|
|
105
|
+
} from "./chunk-FJOGBUXU.mjs";
|
|
112
106
|
import {
|
|
107
|
+
AIChatManager,
|
|
113
108
|
ALL_MIGRATIONS,
|
|
109
|
+
ANNUAL_SUMMARY_PLUGIN_ID,
|
|
114
110
|
BUILTIN_MODELS,
|
|
115
111
|
BUILTIN_PROVIDERS,
|
|
116
112
|
BUILTIN_TOOL_CATALOG,
|
|
@@ -121,10 +117,19 @@ import {
|
|
|
121
117
|
GROUP_RELATIONSHIP_GALAXY_ALGORITHM_VERSION,
|
|
122
118
|
MigrationRunner,
|
|
123
119
|
POS_TAG_DEFINITIONS,
|
|
120
|
+
TIME_INVESTMENT_PLUGIN_ID,
|
|
124
121
|
appLogger,
|
|
122
|
+
assertValidTopicDayKey,
|
|
123
|
+
buildPiModel,
|
|
124
|
+
chatTopicWorkCoordinator,
|
|
125
|
+
countMessagesTokens,
|
|
126
|
+
createChatTopicModelClient,
|
|
127
|
+
createChatTopicService,
|
|
125
128
|
createDatabaseManagerAdapter,
|
|
129
|
+
createLlmRuntimeStores,
|
|
126
130
|
executeReadonlySql,
|
|
127
131
|
executeSql,
|
|
132
|
+
fetchRemoteModels,
|
|
128
133
|
getAvailableYears,
|
|
129
134
|
getBuiltinModelsByProvider,
|
|
130
135
|
getCatchphraseAnalysis,
|
|
@@ -132,6 +137,7 @@ import {
|
|
|
132
137
|
getClusterGraph,
|
|
133
138
|
getDailyActivity,
|
|
134
139
|
getDbFileVersion,
|
|
140
|
+
getDefaultRulesForLocale,
|
|
135
141
|
getDivingAnalysis,
|
|
136
142
|
getDragonKingAnalysis,
|
|
137
143
|
getGroupRelationshipGalaxy,
|
|
@@ -165,11 +171,14 @@ import {
|
|
|
165
171
|
initAppLogger,
|
|
166
172
|
isNewerStableVersion,
|
|
167
173
|
loadConfig,
|
|
174
|
+
mergeRulesForLocale,
|
|
168
175
|
queryMessages,
|
|
176
|
+
runSimpleLlmStream,
|
|
169
177
|
stripAvatarFields,
|
|
178
|
+
validateApiKey,
|
|
170
179
|
verifyCliDataPath,
|
|
171
180
|
writeConfigField
|
|
172
|
-
} from "./chunk-
|
|
181
|
+
} from "./chunk-Q3NEL2KK.mjs";
|
|
173
182
|
|
|
174
183
|
// src/http/index.ts
|
|
175
184
|
import * as fs11 from "fs";
|
|
@@ -795,6 +804,11 @@ function registerRestRoutes(server2, ctx) {
|
|
|
795
804
|
registerImportRoutes(server2, ctx);
|
|
796
805
|
}
|
|
797
806
|
|
|
807
|
+
// ../../packages/http-routes/src/plugins/node.ts
|
|
808
|
+
function registerNodePlugins(server2, context, plugins) {
|
|
809
|
+
for (const plugin of plugins) plugin.registerHttpRoutes(server2, context);
|
|
810
|
+
}
|
|
811
|
+
|
|
798
812
|
// ../../packages/http-routes/src/routes/web/ai-agent-stream.ts
|
|
799
813
|
var activeAgentAborts = /* @__PURE__ */ new Map();
|
|
800
814
|
function registerAiAgentStreamRoutes(server2, ctx) {
|
|
@@ -823,6 +837,7 @@ data: ${JSON.stringify(data)}
|
|
|
823
837
|
reply.raw.end();
|
|
824
838
|
};
|
|
825
839
|
safeSendSSE("meta", { requestId });
|
|
840
|
+
const releaseInteractiveWork = chatTopicWorkCoordinator.beginInteractiveWork();
|
|
826
841
|
reply.raw.on("close", () => {
|
|
827
842
|
if (!abortController.signal.aborted) {
|
|
828
843
|
abortController.abort();
|
|
@@ -842,6 +857,7 @@ data: ${JSON.stringify(data)}
|
|
|
842
857
|
const msg = error instanceof Error ? error.message : String(error);
|
|
843
858
|
safeSendSSE("error", { type: "error", error: { name: "ServerError", message: msg } });
|
|
844
859
|
} finally {
|
|
860
|
+
releaseInteractiveWork();
|
|
845
861
|
if (!emittedDone) safeSendSSE("done", { type: "done", isFinished: true });
|
|
846
862
|
activeAgentAborts.delete(requestId);
|
|
847
863
|
safeEnd();
|
|
@@ -1024,6 +1040,93 @@ function registerAiChatRoutes(server2, ctx) {
|
|
|
1024
1040
|
});
|
|
1025
1041
|
}
|
|
1026
1042
|
|
|
1043
|
+
// ../../packages/http-routes/src/routes/web/ai-chat-topics.ts
|
|
1044
|
+
function registerAiChatTopicRoutes(server2, ctx) {
|
|
1045
|
+
let service = null;
|
|
1046
|
+
const getService = () => {
|
|
1047
|
+
if (!ctx.runtimeIdentity) throw new Error("Chat topic routes require a runtime identity");
|
|
1048
|
+
service ??= createChatTopicService({
|
|
1049
|
+
runtime: ctx.sessionAdapter,
|
|
1050
|
+
pathProvider: ctx.pathProvider,
|
|
1051
|
+
runtimeIdentity: ctx.runtimeIdentity,
|
|
1052
|
+
nativeBinding: ctx.nativeBinding,
|
|
1053
|
+
getModelClient() {
|
|
1054
|
+
const config = ctx.llmConfigStore?.getFastModelConfig();
|
|
1055
|
+
return config ? createChatTopicModelClient(config) : null;
|
|
1056
|
+
}
|
|
1057
|
+
});
|
|
1058
|
+
return service;
|
|
1059
|
+
};
|
|
1060
|
+
server2.addHook("onClose", async () => {
|
|
1061
|
+
service?.close();
|
|
1062
|
+
});
|
|
1063
|
+
server2.post(
|
|
1064
|
+
"/_web/sessions/:id/topics/preflight",
|
|
1065
|
+
async (request) => getService().preflight(request.params.id, requireCreateRequest(request.body))
|
|
1066
|
+
);
|
|
1067
|
+
server2.post(
|
|
1068
|
+
"/_web/sessions/:id/topics/runs",
|
|
1069
|
+
async (request, reply) => {
|
|
1070
|
+
const run = getService().start(request.params.id, requireCreateRequest(request.body));
|
|
1071
|
+
return reply.code(run.status === "completed" ? 200 : 202).send(run);
|
|
1072
|
+
}
|
|
1073
|
+
);
|
|
1074
|
+
server2.post("/_web/sessions/:id/topics/days/:dayKey/generate", async (request, reply) => {
|
|
1075
|
+
const run = getService().generateDay(
|
|
1076
|
+
request.params.id,
|
|
1077
|
+
request.params.dayKey,
|
|
1078
|
+
requireTimezone(request.body?.timezone),
|
|
1079
|
+
request.body?.locale
|
|
1080
|
+
);
|
|
1081
|
+
return reply.code(run.status === "completed" ? 200 : 202).send(run);
|
|
1082
|
+
});
|
|
1083
|
+
server2.get(
|
|
1084
|
+
"/_web/sessions/:id/topics/runs/latest",
|
|
1085
|
+
async (request) => getService().getLatestRun(request.params.id)
|
|
1086
|
+
);
|
|
1087
|
+
server2.get(
|
|
1088
|
+
"/_web/sessions/:id/topics/runs/:runId",
|
|
1089
|
+
async (request, reply) => {
|
|
1090
|
+
const run = getService().getRun(request.params.id, request.params.runId);
|
|
1091
|
+
return run ?? reply.code(404).send({ error: "Chat topic run not found" });
|
|
1092
|
+
}
|
|
1093
|
+
);
|
|
1094
|
+
for (const action of ["pause", "resume", "cancel"]) {
|
|
1095
|
+
server2.post(
|
|
1096
|
+
`/_web/sessions/:id/topics/runs/:runId/${action}`,
|
|
1097
|
+
async (request) => getService()[action](request.params.id, request.params.runId)
|
|
1098
|
+
);
|
|
1099
|
+
}
|
|
1100
|
+
server2.get(
|
|
1101
|
+
"/_web/sessions/:id/topics/days/:dayKey",
|
|
1102
|
+
async (request) => getService().getDay(request.params.id, request.params.dayKey, requireTimezone(request.query.timezone))
|
|
1103
|
+
);
|
|
1104
|
+
server2.delete(
|
|
1105
|
+
"/_web/sessions/:id/topics/days/:dayKey",
|
|
1106
|
+
async (request) => ({ success: getService().deleteDay(request.params.id, request.params.dayKey) })
|
|
1107
|
+
);
|
|
1108
|
+
}
|
|
1109
|
+
function requireCreateRequest(value) {
|
|
1110
|
+
if (!value || !["today", "year", "custom", "all"].includes(value.rangeKind)) {
|
|
1111
|
+
throw Object.assign(new Error("Invalid chat topic range"), { statusCode: 400 });
|
|
1112
|
+
}
|
|
1113
|
+
const timezone = requireTimezone(value.timezone);
|
|
1114
|
+
if (value.rangeKind === "custom") {
|
|
1115
|
+
if (typeof value.startDay !== "string" || value.startDay.trim() === "") {
|
|
1116
|
+
throw Object.assign(new Error("A start day is required for a custom topic range"), { statusCode: 400 });
|
|
1117
|
+
}
|
|
1118
|
+
assertValidTopicDayKey(value.startDay);
|
|
1119
|
+
return { ...value, timezone, startDay: value.startDay };
|
|
1120
|
+
}
|
|
1121
|
+
return { rangeKind: value.rangeKind, timezone, locale: value.locale };
|
|
1122
|
+
}
|
|
1123
|
+
function requireTimezone(value) {
|
|
1124
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
1125
|
+
throw Object.assign(new Error("Timezone is required"), { statusCode: 400 });
|
|
1126
|
+
}
|
|
1127
|
+
return value;
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1027
1130
|
// ../../packages/http-routes/src/routes/web/ai-llm-stream.ts
|
|
1028
1131
|
function registerAiLlmStreamRoutes(server2, ctx) {
|
|
1029
1132
|
const store = ctx.llmConfigStore;
|
|
@@ -1550,6 +1653,7 @@ function registerAiRoutes(server2, ctx, options) {
|
|
|
1550
1653
|
registerAiAgentStreamRoutes(server2, ctx);
|
|
1551
1654
|
registerAiToolRoutes(server2, ctx);
|
|
1552
1655
|
registerAiChatRoutes(server2, ctx);
|
|
1656
|
+
registerAiChatTopicRoutes(server2, ctx);
|
|
1553
1657
|
registerAiSummaryRoutes(server2, ctx);
|
|
1554
1658
|
registerAiLogRoutes(server2, ctx);
|
|
1555
1659
|
registerSemanticIndexRoutes(server2, ctx);
|
|
@@ -2234,43 +2338,6 @@ function registerExportRoutes(server2, ctx) {
|
|
|
2234
2338
|
});
|
|
2235
2339
|
}
|
|
2236
2340
|
|
|
2237
|
-
// ../../packages/http-routes/src/routes/web/global-insight.ts
|
|
2238
|
-
function registerGlobalInsightRoutes(server2, ctx) {
|
|
2239
|
-
const service = ctx.globalInsightService ?? createGlobalInsightService({
|
|
2240
|
-
adapter: ctx.sessionAdapter,
|
|
2241
|
-
pathProvider: ctx.pathProvider,
|
|
2242
|
-
runtimeIdentity: ctx.runtimeIdentity,
|
|
2243
|
-
nativeBinding: ctx.nativeBinding
|
|
2244
|
-
});
|
|
2245
|
-
server2.addHook("onClose", async () => service.close());
|
|
2246
|
-
server2.get("/_web/global-insight/annual-summary", async (request) => {
|
|
2247
|
-
return service.getAnnualSummary({
|
|
2248
|
-
...parseRange(request.query),
|
|
2249
|
-
acceptStale: isTruthy2(request.query.acceptStale)
|
|
2250
|
-
});
|
|
2251
|
-
});
|
|
2252
|
-
server2.post(
|
|
2253
|
-
"/_web/global-insight/annual-summary/recompute",
|
|
2254
|
-
async (request) => service.startRecompute(parseRange(request.query))
|
|
2255
|
-
);
|
|
2256
|
-
}
|
|
2257
|
-
function parseRange(query) {
|
|
2258
|
-
const mode = query.mode === "recent" ? "recent" : "year";
|
|
2259
|
-
return {
|
|
2260
|
-
mode,
|
|
2261
|
-
year: parseInteger(query.year),
|
|
2262
|
-
days: query.days === "365" ? 365 : void 0
|
|
2263
|
-
};
|
|
2264
|
-
}
|
|
2265
|
-
function parseInteger(value) {
|
|
2266
|
-
if (!value) return void 0;
|
|
2267
|
-
const parsed = Number(value);
|
|
2268
|
-
return Number.isInteger(parsed) ? parsed : void 0;
|
|
2269
|
-
}
|
|
2270
|
-
function isTruthy2(value) {
|
|
2271
|
-
return value === "1" || value === "true" || value === "yes";
|
|
2272
|
-
}
|
|
2273
|
-
|
|
2274
2341
|
// ../../packages/http-routes/src/routes/web/logs.ts
|
|
2275
2342
|
function registerLogRoutes(server2) {
|
|
2276
2343
|
server2.post("/_web/logs/report", async (req, reply) => {
|
|
@@ -2363,6 +2430,27 @@ function isHttpClientError(error) {
|
|
|
2363
2430
|
return error instanceof Error && "statusCode" in error && typeof error.statusCode === "number" && error.statusCode >= 400 && error.statusCode < 500;
|
|
2364
2431
|
}
|
|
2365
2432
|
|
|
2433
|
+
// ../../packages/http-routes/src/routes/web/navigation-layout.ts
|
|
2434
|
+
function registerNavigationLayoutRoutes(server2, context) {
|
|
2435
|
+
const service = context.navigationLayoutService ?? createNavigationLayoutService(context.pathProvider.getSystemDir());
|
|
2436
|
+
server2.get("/_web/navigation-layout", async () => service.load());
|
|
2437
|
+
server2.put("/_web/navigation-layout", async (request, reply) => {
|
|
2438
|
+
try {
|
|
2439
|
+
const layout = service.save(request.body);
|
|
2440
|
+
return { status: "saved", layout };
|
|
2441
|
+
} catch (error) {
|
|
2442
|
+
if (error instanceof NavigationLayoutValidationError) {
|
|
2443
|
+
return reply.code(400).send({ error: "INVALID_NAVIGATION_LAYOUT" });
|
|
2444
|
+
}
|
|
2445
|
+
throw error;
|
|
2446
|
+
}
|
|
2447
|
+
});
|
|
2448
|
+
server2.delete("/_web/navigation-layout", async () => {
|
|
2449
|
+
service.reset();
|
|
2450
|
+
return { status: "missing", layout: null };
|
|
2451
|
+
});
|
|
2452
|
+
}
|
|
2453
|
+
|
|
2366
2454
|
// ../../packages/http-routes/src/routes/web/merge.ts
|
|
2367
2455
|
import * as fs4 from "fs";
|
|
2368
2456
|
import * as path6 from "path";
|
|
@@ -2628,7 +2716,7 @@ function registerPeopleRelationshipsRoutes(server2, ctx) {
|
|
|
2628
2716
|
});
|
|
2629
2717
|
server2.get("/_web/people/relationships", async (request) => {
|
|
2630
2718
|
return service.getGraph({
|
|
2631
|
-
acceptStale:
|
|
2719
|
+
acceptStale: isTruthy2(request.query.acceptStale),
|
|
2632
2720
|
timeRangePreset: parseContactsTimeRangePreset2(request.query.timeRange),
|
|
2633
2721
|
graphScope: parsePeopleRelationshipsGraphScope(request.query.scope),
|
|
2634
2722
|
query: request.query.q
|
|
@@ -2645,14 +2733,14 @@ function registerPeopleRelationshipsRoutes(server2, ctx) {
|
|
|
2645
2733
|
"/_web/people/relationships/:key/neighborhood",
|
|
2646
2734
|
async (request) => {
|
|
2647
2735
|
return service.getNeighborhood(request.params.key, {
|
|
2648
|
-
acceptStale:
|
|
2736
|
+
acceptStale: isTruthy2(request.query.acceptStale),
|
|
2649
2737
|
timeRangePreset: parseContactsTimeRangePreset2(request.query.timeRange),
|
|
2650
2738
|
graphScope: parsePeopleRelationshipsGraphScope(request.query.scope)
|
|
2651
2739
|
});
|
|
2652
2740
|
}
|
|
2653
2741
|
);
|
|
2654
2742
|
}
|
|
2655
|
-
function
|
|
2743
|
+
function isTruthy2(value) {
|
|
2656
2744
|
return value === "1" || value === "true" || value === "yes";
|
|
2657
2745
|
}
|
|
2658
2746
|
function parseContactsTimeRangePreset2(value) {
|
|
@@ -2741,14 +2829,21 @@ function registerSessionRoutes(server2, ctx) {
|
|
|
2741
2829
|
};
|
|
2742
2830
|
server2.get("/_web/sessions", async () => {
|
|
2743
2831
|
const aiChatCounts = ctx.aiChatManager?.getAIChatCountsBySession();
|
|
2832
|
+
const excludedSessionIds = new Set(preferences().load().ownerExcludedSessionIds);
|
|
2744
2833
|
return session_service_exports.listAnalysisSessions(adapter, {
|
|
2745
2834
|
resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir),
|
|
2746
|
-
enrichSession:
|
|
2835
|
+
enrichSession: (dto) => ({
|
|
2836
|
+
...dto,
|
|
2837
|
+
aiConversationCount: aiChatCounts?.get(dto.id) ?? 0,
|
|
2838
|
+
ownerExcluded: excludedSessionIds.has(dto.id)
|
|
2839
|
+
})
|
|
2747
2840
|
});
|
|
2748
2841
|
});
|
|
2749
2842
|
server2.get("/_web/sessions/:id", async (request) => {
|
|
2843
|
+
const excludedSessionIds = new Set(preferences().load().ownerExcludedSessionIds);
|
|
2750
2844
|
const session = session_service_exports.getAnalysisSession(adapter, request.params.id, {
|
|
2751
|
-
resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir)
|
|
2845
|
+
resolveOverview: (db, sessionId) => session_service_exports.resolveValidatedSessionOverview(db, sessionId, cacheDir),
|
|
2846
|
+
enrichSession: (dto) => ({ ...dto, ownerExcluded: excludedSessionIds.has(dto.id) })
|
|
2752
2847
|
});
|
|
2753
2848
|
if (!session) {
|
|
2754
2849
|
throw Object.assign(new Error(`Session not found: ${request.params.id}`), { statusCode: 404 });
|
|
@@ -2760,16 +2855,14 @@ function registerSessionRoutes(server2, ctx) {
|
|
|
2760
2855
|
});
|
|
2761
2856
|
server2.delete("/_web/sessions/:id", async (request, reply) => {
|
|
2762
2857
|
const { id } = request.params;
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
}
|
|
2769
|
-
return { success: true };
|
|
2770
|
-
} catch (err) {
|
|
2771
|
-
return reply.code(500).send({ success: false, error: String(err) });
|
|
2858
|
+
await chatTopicWorkCoordinator.prepareSessionDelete(id);
|
|
2859
|
+
await ctx.beforeDeleteSession?.(id);
|
|
2860
|
+
const deleted = session_service_exports.deleteSession(adapter, id);
|
|
2861
|
+
if (!deleted) {
|
|
2862
|
+
return reply.code(404).send({ success: false, error: "File not found" });
|
|
2772
2863
|
}
|
|
2864
|
+
owner_profile_service_exports.clearOwnerExclusions(preferences(), [id]);
|
|
2865
|
+
return { success: true };
|
|
2773
2866
|
});
|
|
2774
2867
|
server2.patch("/_web/sessions/:id/name", async (request) => {
|
|
2775
2868
|
session_service_exports.renameSession(adapter, request.params.id, request.body.name);
|
|
@@ -2779,6 +2872,7 @@ function registerSessionRoutes(server2, ctx) {
|
|
|
2779
2872
|
"/_web/sessions/:id/owner",
|
|
2780
2873
|
async (request) => {
|
|
2781
2874
|
session_service_exports.updateSessionOwnerId(adapter, request.params.id, request.body.ownerId ?? null);
|
|
2875
|
+
if (request.body.ownerId) owner_profile_service_exports.clearOwnerExclusions(preferences(), [request.params.id]);
|
|
2782
2876
|
return { success: true };
|
|
2783
2877
|
}
|
|
2784
2878
|
);
|
|
@@ -2796,8 +2890,8 @@ function registerSessionRoutes(server2, ctx) {
|
|
|
2796
2890
|
);
|
|
2797
2891
|
}
|
|
2798
2892
|
);
|
|
2799
|
-
server2.post("/_web/sessions/:id/owner/
|
|
2800
|
-
owner_profile_service_exports.
|
|
2893
|
+
server2.post("/_web/sessions/:id/owner/exclude", async (request) => {
|
|
2894
|
+
owner_profile_service_exports.excludeOwnerSession(preferences(), request.params.id);
|
|
2801
2895
|
return { success: true };
|
|
2802
2896
|
});
|
|
2803
2897
|
}
|
|
@@ -2879,7 +2973,8 @@ function registerWebRoutes(server2, ctx, options) {
|
|
|
2879
2973
|
registerMemberRoutes(server2, resolvedCtx);
|
|
2880
2974
|
registerContactsRoutes(server2, resolvedCtx);
|
|
2881
2975
|
registerPeopleRelationshipsRoutes(server2, resolvedCtx);
|
|
2882
|
-
|
|
2976
|
+
registerNavigationLayoutRoutes(server2, resolvedCtx);
|
|
2977
|
+
registerNodePlugins(server2, resolvedCtx, options?.nodePlugins ?? []);
|
|
2883
2978
|
registerPreferencesRoutes(server2, resolvedCtx);
|
|
2884
2979
|
registerAnalyticsRoutes(server2, resolvedCtx);
|
|
2885
2980
|
registerSqlRoutes(server2, resolvedCtx);
|
|
@@ -2899,6 +2994,100 @@ function registerSharedRoutes(server2, ctx, options) {
|
|
|
2899
2994
|
registerWebRoutes(server2, ctx, options);
|
|
2900
2995
|
}
|
|
2901
2996
|
|
|
2997
|
+
// ../../packages/http-routes/src/plugins/builtin/annual-summary/index.ts
|
|
2998
|
+
var annualSummaryNodePlugin = {
|
|
2999
|
+
id: ANNUAL_SUMMARY_PLUGIN_ID,
|
|
3000
|
+
registerHttpRoutes(server2, context) {
|
|
3001
|
+
let preferences = context.preferencesManager;
|
|
3002
|
+
const getExcludedSessionIds = () => {
|
|
3003
|
+
preferences ??= new PreferencesManager(context.pathProvider.getSystemDir());
|
|
3004
|
+
return preferences.load().ownerExcludedSessionIds;
|
|
3005
|
+
};
|
|
3006
|
+
const service = context.globalInsightService ?? createGlobalInsightService({
|
|
3007
|
+
adapter: context.sessionAdapter,
|
|
3008
|
+
pathProvider: context.pathProvider,
|
|
3009
|
+
runtimeIdentity: context.runtimeIdentity,
|
|
3010
|
+
nativeBinding: context.nativeBinding,
|
|
3011
|
+
getExcludedSessionIds
|
|
3012
|
+
});
|
|
3013
|
+
server2.addHook("onClose", () => service.close());
|
|
3014
|
+
server2.get(
|
|
3015
|
+
"/_web/global-insight/annual-summary",
|
|
3016
|
+
async (request) => service.getAnnualSummary({
|
|
3017
|
+
...parseRange(request.query),
|
|
3018
|
+
acceptStale: isTruthy3(request.query.acceptStale)
|
|
3019
|
+
})
|
|
3020
|
+
);
|
|
3021
|
+
server2.post(
|
|
3022
|
+
"/_web/global-insight/annual-summary/recompute",
|
|
3023
|
+
async (request) => service.startRecompute(parseRange(request.query))
|
|
3024
|
+
);
|
|
3025
|
+
}
|
|
3026
|
+
};
|
|
3027
|
+
function parseRange(query) {
|
|
3028
|
+
const mode = query.mode === "recent" ? "recent" : "year";
|
|
3029
|
+
return {
|
|
3030
|
+
mode,
|
|
3031
|
+
year: parseInteger(query.year),
|
|
3032
|
+
days: query.days === "365" ? 365 : void 0
|
|
3033
|
+
};
|
|
3034
|
+
}
|
|
3035
|
+
function parseInteger(value) {
|
|
3036
|
+
if (!value) return void 0;
|
|
3037
|
+
const parsed = Number(value);
|
|
3038
|
+
return Number.isInteger(parsed) ? parsed : void 0;
|
|
3039
|
+
}
|
|
3040
|
+
function isTruthy3(value) {
|
|
3041
|
+
return value === "1" || value === "true" || value === "yes";
|
|
3042
|
+
}
|
|
3043
|
+
|
|
3044
|
+
// ../../packages/http-routes/src/plugins/builtin/time-investment/index.ts
|
|
3045
|
+
var timeInvestmentNodePlugin = {
|
|
3046
|
+
id: TIME_INVESTMENT_PLUGIN_ID,
|
|
3047
|
+
registerHttpRoutes(server2, context) {
|
|
3048
|
+
let preferences = context.preferencesManager;
|
|
3049
|
+
const getExcludedSessionIds = () => {
|
|
3050
|
+
preferences ??= new PreferencesManager(context.pathProvider.getSystemDir());
|
|
3051
|
+
return preferences.load().ownerExcludedSessionIds;
|
|
3052
|
+
};
|
|
3053
|
+
const service = context.timeInvestmentService ?? createTimeInvestmentService({
|
|
3054
|
+
adapter: context.sessionAdapter,
|
|
3055
|
+
pathProvider: context.pathProvider,
|
|
3056
|
+
runtimeIdentity: context.runtimeIdentity,
|
|
3057
|
+
nativeBinding: context.nativeBinding,
|
|
3058
|
+
getExcludedSessionIds
|
|
3059
|
+
});
|
|
3060
|
+
server2.addHook("onClose", () => service.close());
|
|
3061
|
+
server2.get(
|
|
3062
|
+
"/_web/global-insight/time-investment",
|
|
3063
|
+
async (request) => service.getTimeInvestment({
|
|
3064
|
+
...parseRange2(request.query),
|
|
3065
|
+
acceptStale: isTruthy4(request.query.acceptStale)
|
|
3066
|
+
})
|
|
3067
|
+
);
|
|
3068
|
+
server2.post(
|
|
3069
|
+
"/_web/global-insight/time-investment/recompute",
|
|
3070
|
+
async (request) => service.startRecompute(parseRange2(request.query))
|
|
3071
|
+
);
|
|
3072
|
+
}
|
|
3073
|
+
};
|
|
3074
|
+
function parseRange2(query) {
|
|
3075
|
+
const mode = query.mode === "recent" ? "recent" : "year";
|
|
3076
|
+
return {
|
|
3077
|
+
mode,
|
|
3078
|
+
year: parseInteger2(query.year),
|
|
3079
|
+
days: query.days === "365" ? 365 : void 0
|
|
3080
|
+
};
|
|
3081
|
+
}
|
|
3082
|
+
function parseInteger2(value) {
|
|
3083
|
+
if (!value) return void 0;
|
|
3084
|
+
const parsed = Number(value);
|
|
3085
|
+
return Number.isInteger(parsed) ? parsed : void 0;
|
|
3086
|
+
}
|
|
3087
|
+
function isTruthy4(value) {
|
|
3088
|
+
return value === "1" || value === "true" || value === "yes";
|
|
3089
|
+
}
|
|
3090
|
+
|
|
2902
3091
|
// ../../packages/http-routes/src/routes/web/automation.ts
|
|
2903
3092
|
function requireAutomation(ctx) {
|
|
2904
3093
|
return ctx.automation ?? null;
|
|
@@ -3572,10 +3761,10 @@ function registerWebRoutes2(server2, dbManager2, options) {
|
|
|
3572
3761
|
const resolvedPathProvider = options?.pathProvider ?? fallbackPathProvider;
|
|
3573
3762
|
const ai = options?.aiContext;
|
|
3574
3763
|
const cliStreamImport = async (dm, filePath) => {
|
|
3575
|
-
const { streamImport: streamImport2 } = await import("./stream-import-
|
|
3764
|
+
const { streamImport: streamImport2 } = await import("./stream-import-XOUM3Z5W.mjs");
|
|
3576
3765
|
const result = await streamImport2(dm, filePath);
|
|
3577
3766
|
if (!result.success) {
|
|
3578
|
-
const { IMPORT_IN_PROGRESS_ERROR_KEY: IMPORT_IN_PROGRESS_ERROR_KEY2, ImportInProgressError: ImportInProgressError2 } = await import("./src-
|
|
3767
|
+
const { IMPORT_IN_PROGRESS_ERROR_KEY: IMPORT_IN_PROGRESS_ERROR_KEY2, ImportInProgressError: ImportInProgressError2 } = await import("./src-OV5ZNE3Z.mjs");
|
|
3579
3768
|
if (result.error === IMPORT_IN_PROGRESS_ERROR_KEY2) throw new ImportInProgressError2();
|
|
3580
3769
|
throw new Error(result.error || "Import failed");
|
|
3581
3770
|
}
|
|
@@ -3641,7 +3830,10 @@ function registerWebRoutes2(server2, dbManager2, options) {
|
|
|
3641
3830
|
runAgentStream: ai.runAgentStream
|
|
3642
3831
|
}
|
|
3643
3832
|
},
|
|
3644
|
-
|
|
3833
|
+
{
|
|
3834
|
+
nodePlugins: [annualSummaryNodePlugin, timeInvestmentNodePlugin],
|
|
3835
|
+
...ai && { requireAi: true }
|
|
3836
|
+
}
|
|
3645
3837
|
);
|
|
3646
3838
|
registerImportRoutes2(server2, dbManager2);
|
|
3647
3839
|
server2.get("/_web/system/check-update", async () => {
|
|
@@ -4751,4 +4943,4 @@ export {
|
|
|
4751
4943
|
startHttpServer,
|
|
4752
4944
|
stopHttpServer
|
|
4753
4945
|
};
|
|
4754
|
-
//# sourceMappingURL=chunk-
|
|
4946
|
+
//# sourceMappingURL=chunk-2JPFBIAG.mjs.map
|