libre-webui 0.16.1 → 0.18.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.
- package/README.md +232 -154
- package/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +155 -6
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +17 -10
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/middleware/auth.d.ts.map +1 -1
- package/backend/dist/middleware/auth.js +35 -3
- package/backend/dist/middleware/auth.js.map +1 -1
- package/backend/dist/models/userModel.d.ts +23 -0
- package/backend/dist/models/userModel.d.ts.map +1 -1
- package/backend/dist/models/userModel.js +89 -24
- package/backend/dist/models/userModel.js.map +1 -1
- package/backend/dist/routes/agentCli.d.ts +3 -0
- package/backend/dist/routes/agentCli.d.ts.map +1 -0
- package/backend/dist/routes/agentCli.js +35 -0
- package/backend/dist/routes/agentCli.js.map +1 -0
- package/backend/dist/routes/auth.d.ts.map +1 -1
- package/backend/dist/routes/auth.js +46 -33
- package/backend/dist/routes/auth.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +30 -1
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/documents.d.ts.map +1 -1
- package/backend/dist/routes/documents.js +49 -41
- package/backend/dist/routes/documents.js.map +1 -1
- package/backend/dist/routes/embeddings.js +2 -2
- package/backend/dist/routes/embeddings.js.map +1 -1
- package/backend/dist/routes/huggingfaceHub.d.ts.map +1 -1
- package/backend/dist/routes/huggingfaceHub.js +3 -1
- package/backend/dist/routes/huggingfaceHub.js.map +1 -1
- package/backend/dist/routes/imageGen.d.ts.map +1 -1
- package/backend/dist/routes/imageGen.js +2 -0
- package/backend/dist/routes/imageGen.js.map +1 -1
- package/backend/dist/routes/media.d.ts +3 -0
- package/backend/dist/routes/media.d.ts.map +1 -0
- package/backend/dist/routes/media.js +429 -0
- package/backend/dist/routes/media.js.map +1 -0
- package/backend/dist/routes/ollama.d.ts.map +1 -1
- package/backend/dist/routes/ollama.js +15 -83
- package/backend/dist/routes/ollama.js.map +1 -1
- package/backend/dist/routes/personas.d.ts.map +1 -1
- package/backend/dist/routes/personas.js +2 -0
- package/backend/dist/routes/personas.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +28 -0
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/routes/systemDiagnostics.d.ts +3 -0
- package/backend/dist/routes/systemDiagnostics.d.ts.map +1 -0
- package/backend/dist/routes/systemDiagnostics.js +49 -0
- package/backend/dist/routes/systemDiagnostics.js.map +1 -0
- package/backend/dist/routes/tts.d.ts.map +1 -1
- package/backend/dist/routes/tts.js +4 -0
- package/backend/dist/routes/tts.js.map +1 -1
- package/backend/dist/routes/users.d.ts.map +1 -1
- package/backend/dist/routes/users.js +58 -0
- package/backend/dist/routes/users.js.map +1 -1
- package/backend/dist/routes/work.d.ts.map +1 -1
- package/backend/dist/routes/work.js +107 -2
- package/backend/dist/routes/work.js.map +1 -1
- package/backend/dist/services/agentCliService.d.ts +30 -0
- package/backend/dist/services/agentCliService.d.ts.map +1 -0
- package/backend/dist/services/agentCliService.js +328 -0
- package/backend/dist/services/agentCliService.js.map +1 -0
- package/backend/dist/services/authService.d.ts +15 -9
- package/backend/dist/services/authService.d.ts.map +1 -1
- package/backend/dist/services/authService.js +34 -29
- package/backend/dist/services/authService.js.map +1 -1
- package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/chatGenerationService.js +19 -1
- package/backend/dist/services/chatGenerationService.js.map +1 -1
- package/backend/dist/services/chatRequestService.d.ts +8 -2
- package/backend/dist/services/chatRequestService.d.ts.map +1 -1
- package/backend/dist/services/chatRequestService.js +30 -3
- package/backend/dist/services/chatRequestService.js.map +1 -1
- package/backend/dist/services/documentService.d.ts +11 -10
- package/backend/dist/services/documentService.d.ts.map +1 -1
- package/backend/dist/services/documentService.js +62 -54
- package/backend/dist/services/documentService.js.map +1 -1
- package/backend/dist/services/encryptionService.d.ts.map +1 -1
- package/backend/dist/services/encryptionService.js +18 -8
- package/backend/dist/services/encryptionService.js.map +1 -1
- package/backend/dist/services/galleryService.d.ts +23 -1
- package/backend/dist/services/galleryService.d.ts.map +1 -1
- package/backend/dist/services/galleryService.js +125 -8
- package/backend/dist/services/galleryService.js.map +1 -1
- package/backend/dist/services/mediaGenerationJobService.d.ts +25 -0
- package/backend/dist/services/mediaGenerationJobService.d.ts.map +1 -0
- package/backend/dist/services/mediaGenerationJobService.js +82 -0
- package/backend/dist/services/mediaGenerationJobService.js.map +1 -0
- package/backend/dist/services/pluginAudioGenerationService.d.ts +34 -0
- package/backend/dist/services/pluginAudioGenerationService.d.ts.map +1 -0
- package/backend/dist/services/pluginAudioGenerationService.js +211 -0
- package/backend/dist/services/pluginAudioGenerationService.js.map +1 -0
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.js +6 -0
- package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.d.ts +2 -0
- package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.js +66 -35
- package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.d.ts +2 -0
- package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.js +63 -38
- package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
- package/backend/dist/services/pluginService.d.ts +38 -1
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +390 -69
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/pluginTTSService.d.ts +2 -0
- package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
- package/backend/dist/services/pluginTTSService.js +27 -2
- package/backend/dist/services/pluginTTSService.js.map +1 -1
- package/backend/dist/services/pluginUsageService.d.ts +82 -0
- package/backend/dist/services/pluginUsageService.d.ts.map +1 -0
- package/backend/dist/services/pluginUsageService.js +238 -0
- package/backend/dist/services/pluginUsageService.js.map +1 -0
- package/backend/dist/services/pluginVideoGenerationService.d.ts +45 -0
- package/backend/dist/services/pluginVideoGenerationService.d.ts.map +1 -0
- package/backend/dist/services/pluginVideoGenerationService.js +198 -0
- package/backend/dist/services/pluginVideoGenerationService.js.map +1 -0
- package/backend/dist/services/preferencesService.d.ts.map +1 -1
- package/backend/dist/services/preferencesService.js +15 -1
- package/backend/dist/services/preferencesService.js.map +1 -1
- package/backend/dist/services/registrationPolicy.d.ts +5 -0
- package/backend/dist/services/registrationPolicy.d.ts.map +1 -0
- package/backend/dist/services/registrationPolicy.js +21 -0
- package/backend/dist/services/registrationPolicy.js.map +1 -0
- package/backend/dist/services/simpleGitHubOAuth.d.ts.map +1 -1
- package/backend/dist/services/simpleGitHubOAuth.js +8 -12
- package/backend/dist/services/simpleGitHubOAuth.js.map +1 -1
- package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -1
- package/backend/dist/services/simpleHuggingFaceOAuth.js +7 -12
- package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -1
- package/backend/dist/services/systemDiagnosticsService.d.ts +117 -0
- package/backend/dist/services/systemDiagnosticsService.d.ts.map +1 -0
- package/backend/dist/services/systemDiagnosticsService.js +326 -0
- package/backend/dist/services/systemDiagnosticsService.js.map +1 -0
- package/backend/dist/services/turnstileService.d.ts +2 -1
- package/backend/dist/services/turnstileService.d.ts.map +1 -1
- package/backend/dist/services/turnstileService.js +28 -2
- package/backend/dist/services/turnstileService.js.map +1 -1
- package/backend/dist/services/workAgentGuidance.js +1 -1
- package/backend/dist/services/workAgentGuidance.js.map +1 -1
- package/backend/dist/services/workAgentService.d.ts.map +1 -1
- package/backend/dist/services/workAgentService.js +37 -0
- package/backend/dist/services/workAgentService.js.map +1 -1
- package/backend/dist/services/workHostWorkspaceService.d.ts +22 -0
- package/backend/dist/services/workHostWorkspaceService.d.ts.map +1 -0
- package/backend/dist/services/workHostWorkspaceService.js +136 -0
- package/backend/dist/services/workHostWorkspaceService.js.map +1 -0
- package/backend/dist/services/workModelProviderService.d.ts +3 -0
- package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
- package/backend/dist/services/workModelProviderService.js +37 -4
- package/backend/dist/services/workModelProviderService.js.map +1 -1
- package/backend/dist/services/workPreviewProxyService.d.ts +27 -0
- package/backend/dist/services/workPreviewProxyService.d.ts.map +1 -0
- package/backend/dist/services/workPreviewProxyService.js +514 -0
- package/backend/dist/services/workPreviewProxyService.js.map +1 -0
- package/backend/dist/services/workRuntimeService.d.ts +65 -3
- package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeService.js +536 -14
- package/backend/dist/services/workRuntimeService.js.map +1 -1
- package/backend/dist/services/workTaskService.d.ts +3 -3
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +10 -6
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/services/workTerminalService.d.ts +46 -0
- package/backend/dist/services/workTerminalService.d.ts.map +1 -0
- package/backend/dist/services/workTerminalService.js +241 -0
- package/backend/dist/services/workTerminalService.js.map +1 -0
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js +3 -3
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/types/index.d.ts +78 -2
- package/backend/dist/types/index.d.ts.map +1 -1
- package/backend/dist/types/index.js.map +1 -1
- package/backend/dist/types/work.d.ts +53 -0
- package/backend/dist/types/work.d.ts.map +1 -1
- package/backend/dist/utils/chatDocumentContext.d.ts +1 -1
- package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
- package/backend/dist/utils/chatDocumentContext.js +4 -4
- package/backend/dist/utils/chatDocumentContext.js.map +1 -1
- package/backend/dist/utils/chatProviderSelection.d.ts.map +1 -1
- package/backend/dist/utils/chatProviderSelection.js +7 -5
- package/backend/dist/utils/chatProviderSelection.js.map +1 -1
- package/backend/dist/utils/pluginDefinitionTrust.js +1 -1
- package/backend/dist/utils/pluginValidation.d.ts +3 -2
- package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
- package/backend/dist/utils/pluginValidation.js +30 -2
- package/backend/dist/utils/pluginValidation.js.map +1 -1
- package/backend/dist/utils/workGit.d.ts +14 -0
- package/backend/dist/utils/workGit.d.ts.map +1 -0
- package/backend/dist/utils/workGit.js +207 -0
- package/backend/dist/utils/workGit.js.map +1 -0
- package/backend/dist/websocketServer.d.ts +1 -0
- package/backend/dist/websocketServer.d.ts.map +1 -1
- package/backend/dist/websocketServer.js +156 -35
- package/backend/dist/websocketServer.js.map +1 -1
- package/backend/dist/workTerminalServer.d.ts +17 -0
- package/backend/dist/workTerminalServer.d.ts.map +1 -0
- package/backend/dist/workTerminalServer.js +226 -0
- package/backend/dist/workTerminalServer.js.map +1 -0
- package/backend/package.json +1 -1
- package/frontend/dist/assets/index-ChhWhug2.css +1 -0
- package/frontend/dist/assets/index-CmZntyR1.js +3 -0
- package/frontend/dist/assets/xterm-CmMoOwwu.css +1 -0
- package/frontend/dist/index.html +28 -6
- package/frontend/dist/js/ArtifactContainer-CBAbdoIJ.js +1 -0
- package/frontend/dist/js/{ArtifactDemoPage-CWDhGWrz.js → ArtifactDemoPage-BWN0MWCx.js} +1 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-D-AvYkfk.js +1 -0
- package/frontend/dist/js/{Button-DBk-AREB.js → Button-CRwzOaDZ.js} +1 -1
- package/frontend/dist/js/ChatPage-w2FkF_fE.js +16 -0
- package/frontend/dist/js/FirstTimeSetup-CzBxl7UH.js +1 -0
- package/frontend/dist/js/GalleryPage-Cv8pniRW.js +1 -0
- package/frontend/dist/js/HomePage-Vyj4ndU4.js +1 -0
- package/frontend/dist/js/LibreClawPage-CYhLgQB-.js +1 -0
- package/frontend/dist/js/{ModelManagerModals-DltRprHU.js → ModelManagerModals-C2rwHd01.js} +1 -1
- package/frontend/dist/js/ModelSelector-D7kDjZV9.js +1 -0
- package/frontend/dist/js/ModelsPage-BnUddkrs.js +2 -0
- package/frontend/dist/js/{PersonasPage-C2pqDsWA.js → PersonasPage-BL5XlrEm.js} +2 -2
- package/frontend/dist/js/PluginUsagePage-BXqweCCs.js +1 -0
- package/frontend/dist/js/RichMessageContent-nAEaPTpH.js +3 -0
- package/frontend/dist/js/SettingsModal-DZYCI5-y.js +1 -0
- package/frontend/dist/js/SystemPage-jdHYfn9A.js +1 -0
- package/frontend/dist/js/UserManagementPage-BpOnt6os.js +1 -0
- package/frontend/dist/js/WorkPage-DAp1T1dl.js +5 -0
- package/frontend/dist/js/addon-fit-Cj0_dfHF.js +1 -0
- package/frontend/dist/js/api-BCqWXjZI.js +19 -0
- package/frontend/dist/js/appStore-CDM6V5ny.js +2 -0
- package/frontend/dist/js/ar-DS8gs8WK.js +2 -0
- package/frontend/dist/js/authStore-Bl5ofD_h.js +4 -0
- package/frontend/dist/js/bn-CrMPJwTR.js +2 -0
- package/frontend/dist/js/cs-BL116Ezu.js +2 -0
- package/frontend/dist/js/da-TDNaKzqy.js +2 -0
- package/frontend/dist/js/de-DkIqdAB5.js +2 -0
- package/frontend/dist/js/es-CHRXt6Fd.js +2 -0
- package/frontend/dist/js/{estree-BRklD62a.js → estree-BFya-bSu.js} +1 -1
- package/frontend/dist/js/fr-8715yUKq.js +2 -0
- package/frontend/dist/js/hi-C2O08SBU.js +2 -0
- package/frontend/dist/js/{html-BgGIAGmn.js → html-DJot0Wwf.js} +1 -1
- package/frontend/dist/js/id-Dq7UXUEV.js +2 -0
- package/frontend/dist/js/is-B3dbbhSl.js +2 -0
- package/frontend/dist/js/it-CLSuu2K7.js +2 -0
- package/frontend/dist/js/ja-CthrqyCR.js +2 -0
- package/frontend/dist/js/ko-BJvFDJ82.js +2 -0
- package/frontend/dist/js/{markdown-CM2nBJJi.js → markdown-CXwWsPYG.js} +1 -1
- package/frontend/dist/js/ms-QV0202Mj.js +2 -0
- package/frontend/dist/js/nl-Dob1m1pV.js +2 -0
- package/frontend/dist/js/pl-urfOKnYI.js +2 -0
- package/frontend/dist/js/pt-D52Xkpi0.js +2 -0
- package/frontend/dist/js/ru-CwnW9Xe2.js +2 -0
- package/frontend/dist/js/{standalone-CUBo-NGt.js → standalone-C0NjJpWr.js} +1 -1
- package/frontend/dist/js/sv-BNclj-Fo.js +2 -0
- package/frontend/dist/js/th-BlQ4PL57.js +2 -0
- package/frontend/dist/js/tr-B80aZ1px.js +2 -0
- package/frontend/dist/js/{typescript-Dcy9qxSB.js → typescript-d0TUM2-0.js} +1 -1
- package/frontend/dist/js/ui-vendor-ChfdHf5M.js +177 -0
- package/frontend/dist/js/uk-DZuuaI56.js +2 -0
- package/frontend/dist/js/utils-DmZD5uA3.js +1 -0
- package/frontend/dist/js/vi-Bg42fPfF.js +2 -0
- package/frontend/dist/js/work-DVgm81bJ.js +1 -0
- package/frontend/dist/js/xterm-DKl1QLiw.js +7 -0
- package/frontend/dist/js/zh-BSt87zs6.js +2 -0
- package/package.json +3 -3
- package/plugins/openrouter.json +89 -0
- package/backend/dist/services/systemSettingsService.d.ts +0 -12
- package/backend/dist/services/systemSettingsService.d.ts.map +0 -1
- package/backend/dist/services/systemSettingsService.js +0 -70
- package/backend/dist/services/systemSettingsService.js.map +0 -1
- package/frontend/dist/assets/index-BVgyQN3z.js +0 -5
- package/frontend/dist/assets/index-Dme2Ozol.css +0 -1
- package/frontend/dist/js/ArtifactContainer-CbMAYwvr.js +0 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-CzUpDM59.js +0 -1
- package/frontend/dist/js/ChatPage-D0fdzy7a.js +0 -16
- package/frontend/dist/js/FirstTimeSetup-CfnOmy9w.js +0 -1
- package/frontend/dist/js/GalleryPage-CMkCur9v.js +0 -1
- package/frontend/dist/js/LibreClawPage-CHEfny1k.js +0 -1
- package/frontend/dist/js/ModelSelector-COnlNsVM.js +0 -1
- package/frontend/dist/js/ModelsPage-nxheiYJp.js +0 -2
- package/frontend/dist/js/RichMessageContent-Cz9y-bgl.js +0 -3
- package/frontend/dist/js/SettingsModal-B6Se68Hd.js +0 -1
- package/frontend/dist/js/UserManagementPage-DQeL-Twp.js +0 -1
- package/frontend/dist/js/WorkPage-AcZMp8OB.js +0 -2
- package/frontend/dist/js/api-Fi-lJlfu.js +0 -19
- package/frontend/dist/js/ar-KceI0PfT.js +0 -2
- package/frontend/dist/js/bn-DsKo2dzS.js +0 -2
- package/frontend/dist/js/cs-6UKhKj0A.js +0 -2
- package/frontend/dist/js/da-CJgZ3YuL.js +0 -2
- package/frontend/dist/js/de-BZAmOuCT.js +0 -2
- package/frontend/dist/js/es-CD4u7no9.js +0 -2
- package/frontend/dist/js/fr-Cou2jOS3.js +0 -2
- package/frontend/dist/js/hi-ZxkbNCyB.js +0 -2
- package/frontend/dist/js/id-DT9CqaWQ.js +0 -2
- package/frontend/dist/js/is-BWSbAIoq.js +0 -2
- package/frontend/dist/js/it-CdNoTXm3.js +0 -2
- package/frontend/dist/js/ja-CIuQg0xv.js +0 -2
- package/frontend/dist/js/ko-BWRUjDOH.js +0 -2
- package/frontend/dist/js/ms-gJstIj2a.js +0 -2
- package/frontend/dist/js/nl-CydjVNUw.js +0 -2
- package/frontend/dist/js/pl-DPN9mAa5.js +0 -2
- package/frontend/dist/js/pt-MRXGqIjQ.js +0 -2
- package/frontend/dist/js/ru-CvQ9GkJF.js +0 -2
- package/frontend/dist/js/sv-BxS2fvhU.js +0 -2
- package/frontend/dist/js/th-DMxyn6e4.js +0 -2
- package/frontend/dist/js/tr-BTPldUaA.js +0 -2
- package/frontend/dist/js/ui-vendor-CAFEDSaO.js +0 -177
- package/frontend/dist/js/uk-BGxZOKgp.js +0 -2
- package/frontend/dist/js/useBaseQuery-CFTidwqz.js +0 -1
- package/frontend/dist/js/useQuery-UsSBfWzs.js +0 -1
- package/frontend/dist/js/utils-pTFqSV8c.js +0 -1
- package/frontend/dist/js/vi-82JkwFsQ.js +0 -2
- package/frontend/dist/js/zh-Bxxfwci3.js +0 -2
|
@@ -6,11 +6,19 @@ export interface AuthTokenPayload {
|
|
|
6
6
|
username: string;
|
|
7
7
|
role: 'admin' | 'user';
|
|
8
8
|
}
|
|
9
|
+
export type AuthResult = {
|
|
10
|
+
status: 'authenticated';
|
|
11
|
+
user: UserPublic;
|
|
12
|
+
token: string;
|
|
13
|
+
} | {
|
|
14
|
+
status: 'pending';
|
|
15
|
+
user: UserPublic;
|
|
16
|
+
};
|
|
9
17
|
export interface SystemInfo {
|
|
10
18
|
requiresAuth: boolean;
|
|
11
19
|
hasUsers: boolean;
|
|
12
20
|
userCount: number;
|
|
13
|
-
|
|
21
|
+
signupEnabled: boolean;
|
|
14
22
|
version?: string;
|
|
15
23
|
turnstile: TurnstilePublicConfig;
|
|
16
24
|
}
|
|
@@ -26,14 +34,15 @@ export declare class AuthService {
|
|
|
26
34
|
/**
|
|
27
35
|
* Login user
|
|
28
36
|
*/
|
|
29
|
-
login(username: string, password: string): Promise<
|
|
30
|
-
user: UserPublic;
|
|
31
|
-
token: string;
|
|
32
|
-
} | null>;
|
|
37
|
+
login(username: string, password: string): Promise<AuthResult | null>;
|
|
33
38
|
/**
|
|
34
39
|
* Get system information
|
|
35
40
|
*/
|
|
36
41
|
getSystemInfo(): SystemInfo;
|
|
42
|
+
/** Whether public registration is enabled by configuration. */
|
|
43
|
+
isPublicRegistrationEnabled(): boolean;
|
|
44
|
+
/** Whether the local signup endpoint may create an account right now. */
|
|
45
|
+
canCreateLocalAccount(): boolean;
|
|
37
46
|
/**
|
|
38
47
|
* Get user from token
|
|
39
48
|
*/
|
|
@@ -45,10 +54,7 @@ export declare class AuthService {
|
|
|
45
54
|
/**
|
|
46
55
|
* Signup user
|
|
47
56
|
*/
|
|
48
|
-
signup(username: string, password: string, email?: string): Promise<
|
|
49
|
-
user: UserPublic;
|
|
50
|
-
token: string;
|
|
51
|
-
} | null>;
|
|
57
|
+
signup(username: string, password: string, email?: string): Promise<AuthResult | null>;
|
|
52
58
|
}
|
|
53
59
|
export declare const authService: AuthService;
|
|
54
60
|
//# sourceMappingURL=authService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authService.d.ts","sourceRoot":"","sources":["../../src/services/authService.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAa,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"authService.d.ts","sourceRoot":"","sources":["../../src/services/authService.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAa,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,EAAoB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAuBhF,eAAO,MAAM,UAAU,QAWjB,CAAC;AAEP,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAE5C,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,qBAAqB,CAAC;CAClC;AAED,qBAAa,WAAW;IACtB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAcvC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAiBnD;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAc3E;;OAEG;IACH,aAAa,IAAI,UAAU;IAa3B,+DAA+D;IAC/D,2BAA2B,IAAI,OAAO;IAItC,yEAAyE;IACzE,qBAAqB,IAAI,OAAO;IAIhC;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQjE;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAOrE;;OAEG;IACG,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;CA+B9B;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -20,8 +20,8 @@ import { readFileSync } from 'fs';
|
|
|
20
20
|
import { fileURLToPath } from 'url';
|
|
21
21
|
import { dirname, join } from 'path';
|
|
22
22
|
import { randomBytes } from 'crypto';
|
|
23
|
-
import { systemSettingsService } from './systemSettingsService.js';
|
|
24
23
|
import { turnstileService } from './turnstileService.js';
|
|
24
|
+
import { canCreateLocalAccount, isPublicRegistrationEnabled, } from './registrationPolicy.js';
|
|
25
25
|
import { createLogger } from '../utils/logger.js';
|
|
26
26
|
const logger = createLogger('services:auth-service');
|
|
27
27
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -49,6 +49,9 @@ export class AuthService {
|
|
|
49
49
|
* Generate JWT token for user
|
|
50
50
|
*/
|
|
51
51
|
generateToken(user) {
|
|
52
|
+
if (user.status !== 'active') {
|
|
53
|
+
throw new Error('Cannot create a session for an inactive account');
|
|
54
|
+
}
|
|
52
55
|
const payload = {
|
|
53
56
|
userId: user.id,
|
|
54
57
|
username: user.username,
|
|
@@ -80,17 +83,14 @@ export class AuthService {
|
|
|
80
83
|
const user = await userModel.verifyPassword(username, password);
|
|
81
84
|
if (!user)
|
|
82
85
|
return null;
|
|
83
|
-
const userPublic =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
createdAt: new Date(user.created_at).toISOString(),
|
|
90
|
-
updatedAt: new Date(user.updated_at).toISOString(),
|
|
91
|
-
};
|
|
86
|
+
const userPublic = userModel.getUserById(user.id);
|
|
87
|
+
if (!userPublic)
|
|
88
|
+
return null;
|
|
89
|
+
if (userPublic.status !== 'active') {
|
|
90
|
+
return { status: 'pending', user: userPublic };
|
|
91
|
+
}
|
|
92
92
|
const token = this.generateToken(userPublic);
|
|
93
|
-
return { user: userPublic, token };
|
|
93
|
+
return { status: 'authenticated', user: userPublic, token };
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
96
|
* Get system information
|
|
@@ -101,11 +101,19 @@ export class AuthService {
|
|
|
101
101
|
requiresAuth: true, // For now, always require auth
|
|
102
102
|
hasUsers: userCount > 0,
|
|
103
103
|
userCount,
|
|
104
|
-
|
|
104
|
+
signupEnabled: canCreateLocalAccount(userCount),
|
|
105
105
|
version: packageVersion,
|
|
106
106
|
turnstile: turnstileService.getPublicConfig(),
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
|
+
/** Whether public registration is enabled by configuration. */
|
|
110
|
+
isPublicRegistrationEnabled() {
|
|
111
|
+
return isPublicRegistrationEnabled();
|
|
112
|
+
}
|
|
113
|
+
/** Whether the local signup endpoint may create an account right now. */
|
|
114
|
+
canCreateLocalAccount() {
|
|
115
|
+
return canCreateLocalAccount(userModel.getUserCount());
|
|
116
|
+
}
|
|
109
117
|
/**
|
|
110
118
|
* Get user from token
|
|
111
119
|
*/
|
|
@@ -113,7 +121,8 @@ export class AuthService {
|
|
|
113
121
|
const payload = this.verifyToken(token);
|
|
114
122
|
if (!payload)
|
|
115
123
|
return null;
|
|
116
|
-
|
|
124
|
+
const user = userModel.getUserById(payload.userId);
|
|
125
|
+
return user?.status === 'active' ? user : null;
|
|
117
126
|
}
|
|
118
127
|
/**
|
|
119
128
|
* Get user by username
|
|
@@ -122,36 +131,32 @@ export class AuthService {
|
|
|
122
131
|
const user = userModel.getUserByUsername(username);
|
|
123
132
|
if (!user)
|
|
124
133
|
return null;
|
|
125
|
-
return
|
|
126
|
-
id: user.id,
|
|
127
|
-
username: user.username,
|
|
128
|
-
email: user.email,
|
|
129
|
-
role: user.role,
|
|
130
|
-
avatar: user.avatar,
|
|
131
|
-
createdAt: new Date(user.created_at).toISOString(),
|
|
132
|
-
updatedAt: new Date(user.updated_at).toISOString(),
|
|
133
|
-
};
|
|
134
|
+
return userModel.getUserById(user.id);
|
|
134
135
|
}
|
|
135
136
|
/**
|
|
136
137
|
* Signup user
|
|
137
138
|
*/
|
|
138
139
|
async signup(username, password, email) {
|
|
139
140
|
try {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
if (!this.canCreateLocalAccount()) {
|
|
142
|
+
logger.warn('Blocked account creation because registration is disabled');
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
143
145
|
const userData = {
|
|
144
146
|
username,
|
|
145
147
|
password,
|
|
146
148
|
email: email || null, // Use null instead of empty string
|
|
147
|
-
// First real user becomes admin, subsequent users are regular users
|
|
148
|
-
role: isFirstRealUser ? 'admin' : 'user',
|
|
149
149
|
};
|
|
150
|
-
|
|
150
|
+
// Bootstrap must remain possible. The model atomically makes the first
|
|
151
|
+
// real user active/admin and holds every later registration for review.
|
|
152
|
+
const user = await userModel.createPublicUser(userData);
|
|
151
153
|
if (!user)
|
|
152
154
|
return null;
|
|
155
|
+
if (user.status === 'pending') {
|
|
156
|
+
return { status: 'pending', user };
|
|
157
|
+
}
|
|
153
158
|
const token = this.generateToken(user);
|
|
154
|
-
return { user, token };
|
|
159
|
+
return { status: 'authenticated', user, token };
|
|
155
160
|
}
|
|
156
161
|
catch (error) {
|
|
157
162
|
logger.error('Signup error:', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authService.js","sourceRoot":"","sources":["../../src/services/authService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAc,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"authService.js","sourceRoot":"","sources":["../../src/services/authService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatGenerationService.d.ts","sourceRoot":"","sources":["../../src/services/chatGenerationService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chatGenerationService.d.ts","sourceRoot":"","sources":["../../src/services/chatGenerationService.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,cAAc,EACf,MAAM,mBAAmB,CAAC;AAM3B,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,iBAAiB,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAC3D,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,UAAU,CAAC;AAExD,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,gBAAgB,CAAC;IACzB,cAAc,EAAE,iBAAiB,EAAE,CAAC;IACpC,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,cAAM,qBAAqB;IACnB,sBAAsB,CAC1B,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,MAAM,CAAC;IA2BlB,YAAY,CAAC,OAAO,GAAE,iBAAsB,GAAG,iBAAiB;IAO1D,uBAAuB,CAC3B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,EAC/B,iBAAiB,CAAC,EAAE,qBAAqB,GACxC,OAAO,CAAC,gBAAgB,CAAC;IA4B5B,6BAA6B,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;IAI/D,wBAAwB,CACtB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,kBAAkB;IAaf,mBAAmB,CAAC,EACxB,MAAM,EACN,cAAc,EACd,cAAc,EACd,MAAM,EACN,oBAAiC,GAClC,EAAE,4BAA4B,GAAG,OAAO,CAAC,2BAA2B,CAAC;CA2FvE;;AAED,wBAA2C"}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
import { mergeGenerationOptions } from '../utils/generationUtils.js';
|
|
18
18
|
import { OPENAI_RESPONSES_INCOMPLETE_REASON_METADATA_KEY } from '../utils/openAIResponsesAdapter.js';
|
|
19
19
|
import { extractPluginAssistantContent } from '../utils/pluginResponse.js';
|
|
20
|
+
import agentCliService from './agentCliService.js';
|
|
20
21
|
import ollamaService from './ollamaService.js';
|
|
21
22
|
import { personaService } from './personaService.js';
|
|
22
23
|
import pluginService from './pluginService.js';
|
|
@@ -53,7 +54,7 @@ class ChatGenerationService {
|
|
|
53
54
|
const actualModelName = await this.resolveActualModelName(sessionModel, userId);
|
|
54
55
|
const mergedOptions = this.mergeOptions(options);
|
|
55
56
|
const provider = normalizeChatProviderSelection(providerSelection);
|
|
56
|
-
const activePlugin = provider?.providerType === 'ollama'
|
|
57
|
+
const activePlugin = provider?.providerType === 'ollama' || provider?.providerType === 'agent'
|
|
57
58
|
? null
|
|
58
59
|
: pluginService.getActivePluginForModel(actualModelName, userId, provider?.providerId);
|
|
59
60
|
const pluginVariables = activePlugin
|
|
@@ -89,6 +90,23 @@ class ChatGenerationService {
|
|
|
89
90
|
stream: false,
|
|
90
91
|
options: target.mergedOptions,
|
|
91
92
|
};
|
|
93
|
+
if (target.providerType === 'agent' && target.providerId) {
|
|
94
|
+
let assistantContent = '';
|
|
95
|
+
let providerMetadata;
|
|
96
|
+
for await (const chunk of agentCliService.executeAgentStreamRequest(target.providerId, pluginMessages, userId)) {
|
|
97
|
+
if (chunk.type === 'content' && chunk.content) {
|
|
98
|
+
assistantContent += chunk.content;
|
|
99
|
+
}
|
|
100
|
+
else if (chunk.type === 'done' && chunk.providerMetadata) {
|
|
101
|
+
providerMetadata = chunk.providerMetadata;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
response: this.createPluginChatResponse(target.actualModelName, assistantContent, providerMetadata),
|
|
106
|
+
assistantContent,
|
|
107
|
+
source: 'plugin',
|
|
108
|
+
};
|
|
109
|
+
}
|
|
92
110
|
if (target.activePlugin) {
|
|
93
111
|
try {
|
|
94
112
|
const pluginResponse = await pluginService.executePluginRequest(target.actualModelName, pluginMessages, target.mergedOptions, userId, target.activePlugin.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatGenerationService.js","sourceRoot":"","sources":["../../src/services/chatGenerationService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,+CAA+C,EAAE,MAAM,oCAAoC,CAAC;AACrG,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAWzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAEnF,MAAM,MAAM,GAAG,YAAY,CAAC,kCAAkC,CAAC,CAAC;AA4BhE,MAAM,qBAAqB;IACzB,KAAK,CAAC,sBAAsB,CAC1B,YAAoB,EACpB,SAAiB,SAAS;QAE1B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAEvD,IAAI,OAAO,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,KAAK,CAAC;YACvB,CAAC;YAED,MAAM,CAAC,IAAI,CACT,WAAW,SAAS,2CAA2C,CAChE,CAAC;YACF,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,YAAY,CAAC,UAA6B,EAAE;QAC1C,OAAO,sBAAsB,CAC3B,kBAAkB,CAAC,oBAAoB,EAAE,EACzC,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,YAAoB,EACpB,MAAc,EACd,UAA6B,EAAE,EAC/B,iBAAyC;QAEzC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sBAAsB,CACvD,YAAY,EACZ,MAAM,CACP,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,8BAA8B,CAAC,iBAAiB,CAAC,CAAC;QACnE,MAAM,YAAY,GAChB,QAAQ,EAAE,YAAY,KAAK,QAAQ;
|
|
1
|
+
{"version":3,"file":"chatGenerationService.js","sourceRoot":"","sources":["../../src/services/chatGenerationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { type ChatContextMessage } from '../utils/chatContext.js';
|
|
2
2
|
import { type PluginVariables } from '../utils/pluginChatContext.js';
|
|
3
3
|
import type { GenerationTarget } from './chatGenerationService.js';
|
|
4
|
-
import type { ChatMessage, ChatProviderSelection, ChatSession, GenerationOptions, OllamaChatMessage, Persona } from '../types/index.js';
|
|
4
|
+
import type { ChatMessage, ChatProviderSelection, ChatSession, GenerationOptions, OllamaChatMessage, Persona, UserPreferences } from '../types/index.js';
|
|
5
5
|
export interface ChatGenerationTargetService {
|
|
6
6
|
prepareGenerationTarget(sessionModel: string, userId: string, options?: GenerationOptions, providerSelection?: ChatProviderSelection): Promise<GenerationTarget>;
|
|
7
7
|
}
|
|
8
8
|
export interface ChatPersonaLookupService {
|
|
9
9
|
getPersonaById(id: string, userId?: string): Promise<Persona | null>;
|
|
10
10
|
}
|
|
11
|
+
export interface ChatPreferencesLookupService {
|
|
12
|
+
getPreferences(userId?: string): Pick<UserPreferences, 'visionModel' | 'visionProviderType' | 'visionProviderId'>;
|
|
13
|
+
}
|
|
11
14
|
export interface ChatRequestServiceDependencies {
|
|
12
15
|
chatGenerationService: ChatGenerationTargetService;
|
|
13
16
|
personaService?: ChatPersonaLookupService;
|
|
17
|
+
preferencesService?: ChatPreferencesLookupService;
|
|
14
18
|
}
|
|
15
19
|
export interface PrepareGenerationMessagesOptions {
|
|
16
20
|
isPrivate?: boolean;
|
|
@@ -45,12 +49,14 @@ export interface PrepareChatGenerationRequestOptions extends Omit<PrepareGenerat
|
|
|
45
49
|
export interface PreparedChatGenerationRequest extends PreparedGenerationMessages, GenerationTarget {
|
|
46
50
|
target: GenerationTarget;
|
|
47
51
|
}
|
|
52
|
+
export declare function generationContextContainsImages({ images, persistedMessages, messageHistory, }: Pick<PrepareGenerationMessagesOptions, 'images' | 'persistedMessages' | 'messageHistory'>): boolean;
|
|
48
53
|
export declare function buildDocumentEnhancedContent(content: string, relevantContext: readonly string[]): string;
|
|
49
54
|
export declare function prepareGenerationMessages({ isPrivate, persistedMessages, messageHistory, regenerate, content, images, hasRelevantContext, enhancedContent, personaSystemPrompt, pluginVariables, now, }: PrepareGenerationMessagesOptions): PreparedGenerationMessages;
|
|
50
55
|
export declare class ChatRequestService {
|
|
51
56
|
private readonly chatGenerationService;
|
|
52
57
|
private readonly personaService?;
|
|
53
|
-
|
|
58
|
+
private readonly preferencesService?;
|
|
59
|
+
constructor({ chatGenerationService, personaService, preferencesService, }: ChatRequestServiceDependencies);
|
|
54
60
|
resolvePersonaSystemPrompt(session: Pick<ChatSession, 'personaId'>, userId: string): Promise<string | undefined>;
|
|
55
61
|
prepareGenerationRequest({ session, userId, options, providerType, providerId, personaSystemPrompt, includePersonaPrompt, ...messageOptions }: PrepareChatGenerationRequestOptions): Promise<PreparedChatGenerationRequest>;
|
|
56
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatRequestService.d.ts","sourceRoot":"","sources":["../../src/services/chatRequestService.ts"],"names":[],"mappings":"AAiBA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,OAAO,
|
|
1
|
+
{"version":3,"file":"chatRequestService.d.ts","sourceRoot":"","sources":["../../src/services/chatRequestService.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,16 @@
|
|
|
17
17
|
import { toOllamaMessages, withSystemPrompt, } from '../utils/chatContext.js';
|
|
18
18
|
import { preparePluginChatContext, } from '../utils/pluginChatContext.js';
|
|
19
19
|
import { createLogger } from '../utils/logger.js';
|
|
20
|
-
import { normalizeChatProviderSelection } from '../utils/chatProviderSelection.js';
|
|
20
|
+
import { ChatProviderSelectionError, normalizeChatProviderSelection, } from '../utils/chatProviderSelection.js';
|
|
21
21
|
const logger = createLogger('services:chat-request-service');
|
|
22
|
+
function messagesContainImages(messages) {
|
|
23
|
+
return messages.some(message => (message.images?.length ?? 0) > 0);
|
|
24
|
+
}
|
|
25
|
+
export function generationContextContainsImages({ images, persistedMessages, messageHistory = [], }) {
|
|
26
|
+
return ((images?.length ?? 0) > 0 ||
|
|
27
|
+
messagesContainImages(persistedMessages) ||
|
|
28
|
+
messagesContainImages(messageHistory));
|
|
29
|
+
}
|
|
22
30
|
export function buildDocumentEnhancedContent(content, relevantContext) {
|
|
23
31
|
if (relevantContext.length === 0) {
|
|
24
32
|
return content;
|
|
@@ -66,9 +74,10 @@ export function prepareGenerationMessages({ isPrivate = false, persistedMessages
|
|
|
66
74
|
};
|
|
67
75
|
}
|
|
68
76
|
export class ChatRequestService {
|
|
69
|
-
constructor({ chatGenerationService, personaService, }) {
|
|
77
|
+
constructor({ chatGenerationService, personaService, preferencesService, }) {
|
|
70
78
|
this.chatGenerationService = chatGenerationService;
|
|
71
79
|
this.personaService = personaService;
|
|
80
|
+
this.preferencesService = preferencesService;
|
|
72
81
|
}
|
|
73
82
|
async resolvePersonaSystemPrompt(session, userId) {
|
|
74
83
|
if (!session.personaId || !this.personaService) {
|
|
@@ -91,7 +100,25 @@ export class ChatRequestService {
|
|
|
91
100
|
const providerSelection = messageOptions.isPrivate
|
|
92
101
|
? (sessionProviderSelection ?? requestProviderSelection)
|
|
93
102
|
: sessionProviderSelection;
|
|
94
|
-
|
|
103
|
+
let generationModel = session.model;
|
|
104
|
+
let generationProviderSelection = providerSelection;
|
|
105
|
+
if (this.preferencesService &&
|
|
106
|
+
generationContextContainsImages(messageOptions)) {
|
|
107
|
+
const preferences = this.preferencesService.getPreferences(userId);
|
|
108
|
+
const visionModel = preferences.visionModel?.trim();
|
|
109
|
+
if (visionModel) {
|
|
110
|
+
const visionProviderSelection = normalizeChatProviderSelection({
|
|
111
|
+
providerType: preferences.visionProviderType,
|
|
112
|
+
providerId: preferences.visionProviderId,
|
|
113
|
+
});
|
|
114
|
+
if (!visionProviderSelection) {
|
|
115
|
+
throw new ChatProviderSelectionError('The configured vision model has no provider identity. Re-select it in Settings > Model > Vision Model.');
|
|
116
|
+
}
|
|
117
|
+
generationModel = visionModel;
|
|
118
|
+
generationProviderSelection = visionProviderSelection;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const target = await this.chatGenerationService.prepareGenerationTarget(generationModel, userId, options, generationProviderSelection);
|
|
95
122
|
const resolvedPersonaSystemPrompt = personaSystemPrompt ??
|
|
96
123
|
(includePersonaPrompt
|
|
97
124
|
? await this.resolvePersonaSystemPrompt(session, userId)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatRequestService.js","sourceRoot":"","sources":["../../src/services/chatRequestService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,GAEzB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"chatRequestService.js","sourceRoot":"","sources":["../../src/services/chatRequestService.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,26 +8,27 @@ declare class DocumentService {
|
|
|
8
8
|
private loadChunks;
|
|
9
9
|
private saveDocuments;
|
|
10
10
|
private saveChunks;
|
|
11
|
-
processDocument(fileName: string, fileBuffer: Buffer, mimeType: string, sessionId?: string): Promise<Document>;
|
|
11
|
+
processDocument(fileName: string, fileBuffer: Buffer, mimeType: string, userId: string, sessionId?: string): Promise<Document>;
|
|
12
12
|
private chunkDocument;
|
|
13
13
|
private generateEmbeddingForText;
|
|
14
14
|
private generateEmbeddingsForChunks;
|
|
15
|
-
regenerateAllEmbeddings(): Promise<void>;
|
|
16
|
-
getEmbeddingModelInfo(): Promise<{
|
|
15
|
+
regenerateAllEmbeddings(userId: string): Promise<void>;
|
|
16
|
+
getEmbeddingModelInfo(userId: string): Promise<{
|
|
17
17
|
available: boolean;
|
|
18
18
|
model: string;
|
|
19
19
|
chunksWithEmbeddings: number;
|
|
20
20
|
totalChunks: number;
|
|
21
21
|
}>;
|
|
22
|
-
getDocument(documentId: string): Document | undefined;
|
|
23
|
-
getDocuments(sessionId?: string): Document[];
|
|
24
|
-
getDocumentChunks(documentId: string): DocumentChunk[];
|
|
25
|
-
deleteDocument(documentId: string): boolean;
|
|
26
|
-
searchDocuments(query: string, sessionId?: string, limit?: number): Promise<DocumentChunk[]>;
|
|
22
|
+
getDocument(documentId: string, userId: string): Document | undefined;
|
|
23
|
+
getDocuments(userId: string, sessionId?: string): Document[];
|
|
24
|
+
getDocumentChunks(documentId: string, userId: string): DocumentChunk[];
|
|
25
|
+
deleteDocument(documentId: string, userId: string): boolean;
|
|
26
|
+
searchDocuments(query: string, userId: string, sessionId?: string, limit?: number): Promise<DocumentChunk[]>;
|
|
27
27
|
private semanticSearchDocuments;
|
|
28
28
|
private keywordSearchDocuments;
|
|
29
|
-
getRelevantContext(query: string, sessionId?: string): Promise<string[]>;
|
|
30
|
-
restoreDocument(document: Document): void;
|
|
29
|
+
getRelevantContext(query: string, userId: string, sessionId?: string): Promise<string[]>;
|
|
30
|
+
restoreDocument(document: Document, userId: string): void;
|
|
31
|
+
private loadDocumentChunks;
|
|
31
32
|
}
|
|
32
33
|
declare const _default: DocumentService;
|
|
33
34
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentService.d.ts","sourceRoot":"","sources":["../../src/services/documentService.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA0CzC,cAAM,eAAe;IACnB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,MAAM,CAA2C;;IAOzD,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAKZ,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"documentService.d.ts","sourceRoot":"","sources":["../../src/services/documentService.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA0CzC,cAAM,eAAe;IACnB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,MAAM,CAA2C;;IAOzD,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAKZ,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC;IA8EpB,OAAO,CAAC,aAAa;YAiFP,wBAAwB;YAyBxB,2BAA2B;IA8BnC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BtD,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACnD,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,oBAAoB,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAmBF,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIrE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE;IAQ5D,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE;IAKtE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IASrD,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,SAAI,GACR,OAAO,CAAC,aAAa,EAAE,CAAC;YAYb,uBAAuB;IA0DrC,OAAO,CAAC,sBAAsB;IAoDxB,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBpB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAkBzD,OAAO,CAAC,kBAAkB;CAO3B;;AAED,wBAAqC"}
|