libre-webui 0.23.1 → 0.24.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.
Files changed (206) hide show
  1. package/backend/dist/index.d.ts.map +1 -1
  2. package/backend/dist/index.js +2 -0
  3. package/backend/dist/index.js.map +1 -1
  4. package/backend/dist/routes/chat.d.ts.map +1 -1
  5. package/backend/dist/routes/chat.js +148 -3
  6. package/backend/dist/routes/chat.js.map +1 -1
  7. package/backend/dist/routes/ollama.d.ts.map +1 -1
  8. package/backend/dist/routes/ollama.js +48 -1
  9. package/backend/dist/routes/ollama.js.map +1 -1
  10. package/backend/dist/services/apiTokenService.d.ts.map +1 -1
  11. package/backend/dist/services/apiTokenService.js +1 -0
  12. package/backend/dist/services/apiTokenService.js.map +1 -1
  13. package/backend/dist/services/chatGenerationService.d.ts +11 -1
  14. package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
  15. package/backend/dist/services/chatGenerationService.js +22 -2
  16. package/backend/dist/services/chatGenerationService.js.map +1 -1
  17. package/backend/dist/services/chatService.d.ts +14 -1
  18. package/backend/dist/services/chatService.d.ts.map +1 -1
  19. package/backend/dist/services/chatService.js +109 -5
  20. package/backend/dist/services/chatService.js.map +1 -1
  21. package/backend/dist/services/contextCompactionService.d.ts +36 -0
  22. package/backend/dist/services/contextCompactionService.d.ts.map +1 -0
  23. package/backend/dist/services/contextCompactionService.js +285 -0
  24. package/backend/dist/services/contextCompactionService.js.map +1 -0
  25. package/backend/dist/services/durableChatGenerationService.d.ts.map +1 -1
  26. package/backend/dist/services/durableChatGenerationService.js +121 -11
  27. package/backend/dist/services/durableChatGenerationService.js.map +1 -1
  28. package/backend/dist/services/followUpService.d.ts.map +1 -1
  29. package/backend/dist/services/followUpService.js +8 -2
  30. package/backend/dist/services/followUpService.js.map +1 -1
  31. package/backend/dist/services/modelVisibilityService.d.ts +45 -0
  32. package/backend/dist/services/modelVisibilityService.d.ts.map +1 -0
  33. package/backend/dist/services/modelVisibilityService.js +215 -0
  34. package/backend/dist/services/modelVisibilityService.js.map +1 -0
  35. package/backend/dist/services/ollamaService.d.ts +16 -1
  36. package/backend/dist/services/ollamaService.d.ts.map +1 -1
  37. package/backend/dist/services/ollamaService.js +52 -13
  38. package/backend/dist/services/ollamaService.js.map +1 -1
  39. package/backend/dist/services/pluginService.d.ts +14 -0
  40. package/backend/dist/services/pluginService.d.ts.map +1 -1
  41. package/backend/dist/services/pluginService.js +111 -13
  42. package/backend/dist/services/pluginService.js.map +1 -1
  43. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  44. package/backend/dist/services/preferencesService.js +3 -0
  45. package/backend/dist/services/preferencesService.js.map +1 -1
  46. package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
  47. package/backend/dist/services/titleGenerationService.js +20 -2
  48. package/backend/dist/services/titleGenerationService.js.map +1 -1
  49. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  50. package/backend/dist/services/workAgentService.js +22 -0
  51. package/backend/dist/services/workAgentService.js.map +1 -1
  52. package/backend/dist/types/index.d.ts +23 -2
  53. package/backend/dist/types/index.d.ts.map +1 -1
  54. package/backend/dist/types/index.js.map +1 -1
  55. package/backend/dist/utils/chatContext.d.ts +7 -0
  56. package/backend/dist/utils/chatContext.d.ts.map +1 -1
  57. package/backend/dist/utils/chatContext.js +13 -2
  58. package/backend/dist/utils/chatContext.js.map +1 -1
  59. package/backend/dist/utils/ollamaModelDefaults.d.ts +10 -0
  60. package/backend/dist/utils/ollamaModelDefaults.d.ts.map +1 -1
  61. package/backend/dist/utils/ollamaModelDefaults.js +19 -1
  62. package/backend/dist/utils/ollamaModelDefaults.js.map +1 -1
  63. package/backend/dist/utils/openAIResponsesAdapter.d.ts +2 -0
  64. package/backend/dist/utils/openAIResponsesAdapter.d.ts.map +1 -1
  65. package/backend/dist/utils/openAIResponsesAdapter.js +5 -0
  66. package/backend/dist/utils/openAIResponsesAdapter.js.map +1 -1
  67. package/backend/dist/utils/pluginChatAdapter.d.ts +1 -0
  68. package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
  69. package/backend/dist/utils/pluginChatAdapter.js +101 -11
  70. package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
  71. package/backend/dist/utils/pluginModelCatalog.d.ts +50 -0
  72. package/backend/dist/utils/pluginModelCatalog.d.ts.map +1 -0
  73. package/backend/dist/utils/pluginModelCatalog.js +221 -0
  74. package/backend/dist/utils/pluginModelCatalog.js.map +1 -0
  75. package/backend/dist/utils/pluginStreamAdapter.d.ts +12 -1
  76. package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -1
  77. package/backend/dist/utils/pluginStreamAdapter.js +32 -2
  78. package/backend/dist/utils/pluginStreamAdapter.js.map +1 -1
  79. package/backend/dist/utils/pluginStreaming.d.ts +10 -0
  80. package/backend/dist/utils/pluginStreaming.d.ts.map +1 -1
  81. package/backend/dist/utils/pluginStreaming.js.map +1 -1
  82. package/backend/dist/utils/thinkingOptions.d.ts +68 -0
  83. package/backend/dist/utils/thinkingOptions.d.ts.map +1 -0
  84. package/backend/dist/utils/thinkingOptions.js +130 -0
  85. package/backend/dist/utils/thinkingOptions.js.map +1 -0
  86. package/backend/dist/websocketServer.d.ts.map +1 -1
  87. package/backend/dist/websocketServer.js +1 -1
  88. package/backend/dist/websocketServer.js.map +1 -1
  89. package/backend/package.json +3 -3
  90. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  91. package/frontend/dist/artifact-runtime/framer-motion.js +3 -3
  92. package/frontend/dist/artifact-runtime/papaparse.js +5 -5
  93. package/frontend/dist/assets/index-CDQ12KBq.js +34 -0
  94. package/frontend/dist/assets/index-DkFWzmFD.css +1 -0
  95. package/frontend/dist/assets/{markdown-math-ClTedVi7.css → markdown-math-Ddr6Z9Sf.css} +1 -1
  96. package/frontend/dist/index.html +15 -15
  97. package/frontend/dist/js/ArtifactContainer-B-hs0F5K.js +1 -0
  98. package/frontend/dist/js/{ArtifactDemoPage-QRve-734.js → ArtifactDemoPage-QFtJw-u4.js} +1 -1
  99. package/frontend/dist/js/{ArtifactSandboxFrame-DhvA-t-7.js → ArtifactSandboxFrame-S9g_q47-.js} +2 -2
  100. package/frontend/dist/js/ArtifactSlideOutPanel-D0UOo8RW.js +1 -0
  101. package/frontend/dist/js/{Button-BV44cTnj.js → Button-BPf_pOxH.js} +1 -1
  102. package/frontend/dist/js/ChatPage-fdd8500b.js +23 -0
  103. package/frontend/dist/js/FirstTimeSetup-BTjafGOq.js +1 -0
  104. package/frontend/dist/js/GalleryPage-hR9AJ6b-.js +1 -0
  105. package/frontend/dist/js/HomePage-JvTzq-Pp.js +1 -0
  106. package/frontend/dist/js/LibreClawPage-CLJvtXft.js +1 -0
  107. package/frontend/dist/js/{ModelManagerModals-CZAWUxjI.js → ModelManagerModals-DBmm_slu.js} +1 -1
  108. package/frontend/dist/js/ModelSelector-A-viVFEc.js +1 -0
  109. package/frontend/dist/js/ModelsPage-C4Rm-TZF.js +2 -0
  110. package/frontend/dist/js/NotesPage-C7bPU_KF.js +1 -0
  111. package/frontend/dist/js/{OptimizedSyntaxHighlighter-XwqZEoTf.js → OptimizedSyntaxHighlighter-Dz7D1LPB.js} +1 -1
  112. package/frontend/dist/js/{PersonasPage-DpN8DQkY.js → PersonasPage-DpvxbFzv.js} +2 -2
  113. package/frontend/dist/js/{PluginUsagePage-5PXXZXle.js → PluginUsagePage-laF-M2X9.js} +1 -1
  114. package/frontend/dist/js/RichMessageContent-D0mK9vRA.js +3 -0
  115. package/frontend/dist/js/SettingsModal-DNEQ5sTt.js +1 -0
  116. package/frontend/dist/js/{SettingsToggle-WTa0rgvY.js → SettingsToggle-woG_WebF.js} +1 -1
  117. package/frontend/dist/js/{SystemPage-FUnoW7Er.js → SystemPage-Xr7XJv8c.js} +1 -1
  118. package/frontend/dist/js/UserManagementPage-DGmbGTC2.js +1 -0
  119. package/frontend/dist/js/WorkPage-DNKFD9gS.js +6 -0
  120. package/frontend/dist/js/{api-Dw_IuHaz.js → api-DGVZHSkS.js} +2 -2
  121. package/frontend/dist/js/{appStore-DAT2R-5p.js → appStore-DXlmTjIC.js} +2 -2
  122. package/frontend/dist/js/ar-DW79oSyN.js +2 -0
  123. package/frontend/dist/js/authStore-B97lJ5Ee.js +4 -0
  124. package/frontend/dist/js/bn-BEAmE7VH.js +2 -0
  125. package/frontend/dist/js/chatStore-zilBUd1p.js +3 -0
  126. package/frontend/dist/js/{config-0eBxRk6E.js → config-CmEh9o8U.js} +1 -1
  127. package/frontend/dist/js/cs-irpRMzRo.js +2 -0
  128. package/frontend/dist/js/da-cgilTVxc.js +2 -0
  129. package/frontend/dist/js/de-BU-eH3gU.js +2 -0
  130. package/frontend/dist/js/es-B2LRpZ0p.js +2 -0
  131. package/frontend/dist/js/{estree-Db_NKIE7.js → estree-CZO8RS52.js} +1 -1
  132. package/frontend/dist/js/fr-Cd5JM-oQ.js +2 -0
  133. package/frontend/dist/js/hi-CvOhdtiK.js +2 -0
  134. package/frontend/dist/js/{html-INl_p8N8.js → html-C31pxhBG.js} +1 -1
  135. package/frontend/dist/js/id-BtRK5nR_.js +2 -0
  136. package/frontend/dist/js/is-CnEqwgRF.js +2 -0
  137. package/frontend/dist/js/it-CI6WjId6.js +2 -0
  138. package/frontend/dist/js/ja-B6gFOHi6.js +2 -0
  139. package/frontend/dist/js/ko-DuAhnmMf.js +2 -0
  140. package/frontend/dist/js/{markdown-DQbfLH11.js → markdown-C1CEqXpL.js} +1 -1
  141. package/frontend/dist/js/{messageCodeStyles-D7zXzjgH.js → messageCodeStyles-BqQ6kOSU.js} +2 -2
  142. package/frontend/dist/js/ms-C8BIP7MZ.js +2 -0
  143. package/frontend/dist/js/nl-DnEdspER.js +2 -0
  144. package/frontend/dist/js/pl-Ddyyvbse.js +2 -0
  145. package/frontend/dist/js/pt-BYuzm70F.js +2 -0
  146. package/frontend/dist/js/ru-CmSPFxPX.js +2 -0
  147. package/frontend/dist/js/{standalone-CFSd7xCM.js → standalone-Dz0pkxn0.js} +1 -1
  148. package/frontend/dist/js/sv-Dd6SQ9f1.js +2 -0
  149. package/frontend/dist/js/th-CpH8745B.js +2 -0
  150. package/frontend/dist/js/thinking-DwlkTfPX.js +1 -0
  151. package/frontend/dist/js/tr-DuVD75iJ.js +2 -0
  152. package/frontend/dist/js/{typescript-BIFKSiW0.js → typescript-DeXPhp90.js} +1 -1
  153. package/frontend/dist/js/ui-CO0DPqrI.js +2 -0
  154. package/frontend/dist/js/{ui-vendor-54SgntkX.js → ui-vendor-mqjSfAaS.js} +1 -1
  155. package/frontend/dist/js/uk-B0MU-M8k.js +2 -0
  156. package/frontend/dist/js/{useTranslation-C3ei3mJq.js → useTranslation-Bho4HCyg.js} +1 -1
  157. package/frontend/dist/js/{utils-CuC1beTY.js → utils-D9W1Lnkn.js} +1 -1
  158. package/frontend/dist/js/{utils-vendor-BBa8OxtB.js → utils-vendor-DWh39_3x.js} +1 -1
  159. package/frontend/dist/js/vi-BLmFNp_z.js +2 -0
  160. package/frontend/dist/js/{workApi-DlmJ72dN.js → workApi-C4QtuhcE.js} +2 -2
  161. package/frontend/dist/js/zh-BQu0TLhw.js +2 -0
  162. package/package.json +3 -3
  163. package/frontend/dist/assets/index-BXMQqOXF.js +0 -11
  164. package/frontend/dist/assets/index-DBaj1DRj.css +0 -1
  165. package/frontend/dist/js/ArtifactContainer-BUjOZ5M5.js +0 -1
  166. package/frontend/dist/js/ArtifactSlideOutPanel-B8w1Orr1.js +0 -1
  167. package/frontend/dist/js/ChatPage-DKVwaYxn.js +0 -23
  168. package/frontend/dist/js/FirstTimeSetup-DaQveC0v.js +0 -1
  169. package/frontend/dist/js/GalleryPage-Cz-VvarV.js +0 -1
  170. package/frontend/dist/js/HomePage-DF9pZ5V5.js +0 -1
  171. package/frontend/dist/js/LibreClawPage-Dw8YQyFj.js +0 -1
  172. package/frontend/dist/js/ModelSelector-Cc91MEm4.js +0 -1
  173. package/frontend/dist/js/ModelsPage-BgaQuCry.js +0 -2
  174. package/frontend/dist/js/NotesPage-CRAo-TFI.js +0 -1
  175. package/frontend/dist/js/RichMessageContent-C67tFlr1.js +0 -3
  176. package/frontend/dist/js/SettingsModal-BEzMSDlp.js +0 -1
  177. package/frontend/dist/js/UserManagementPage-SBsRbt0H.js +0 -1
  178. package/frontend/dist/js/WorkPage-D3ChSFo-.js +0 -6
  179. package/frontend/dist/js/ar-D0z0P4rC.js +0 -2
  180. package/frontend/dist/js/authStore-CwSMGkEM.js +0 -4
  181. package/frontend/dist/js/bn-BYYU41A7.js +0 -2
  182. package/frontend/dist/js/chatStore-BK6YcouV.js +0 -3
  183. package/frontend/dist/js/cs-BFx6KNZe.js +0 -2
  184. package/frontend/dist/js/da-DSDuY5Du.js +0 -2
  185. package/frontend/dist/js/de-YqhP0FmX.js +0 -2
  186. package/frontend/dist/js/es-Dpr_y1cN.js +0 -2
  187. package/frontend/dist/js/fr-nVg_iAEC.js +0 -2
  188. package/frontend/dist/js/hi-gHKYCgkP.js +0 -2
  189. package/frontend/dist/js/id-C_yID1Zk.js +0 -2
  190. package/frontend/dist/js/is-MoRPLbOM.js +0 -2
  191. package/frontend/dist/js/it-BZTscLxR.js +0 -2
  192. package/frontend/dist/js/ja-DpIbtmZq.js +0 -2
  193. package/frontend/dist/js/ko-LkWggmjU.js +0 -2
  194. package/frontend/dist/js/ms-p3XiQSAo.js +0 -2
  195. package/frontend/dist/js/nl-sEHHO2Kb.js +0 -2
  196. package/frontend/dist/js/pl-D2GD6PDW.js +0 -2
  197. package/frontend/dist/js/pt-DPkn3GUn.js +0 -2
  198. package/frontend/dist/js/ru-C42iHrEd.js +0 -2
  199. package/frontend/dist/js/sv-CGvHo4os.js +0 -2
  200. package/frontend/dist/js/th-BaDNpCdY.js +0 -2
  201. package/frontend/dist/js/tr-BHQvi1cN.js +0 -2
  202. package/frontend/dist/js/ui-CS8EAgvS.js +0 -2
  203. package/frontend/dist/js/uk-7pNGS1b2.js +0 -2
  204. package/frontend/dist/js/vi-DgAfh6mo.js +0 -2
  205. package/frontend/dist/js/zh-FRTz6ZqA.js +0 -2
  206. /package/frontend/dist/js/{markdown-math-mH7AZ_mb.js → markdown-math-DK846gXU.js} +0 -0
@@ -28,6 +28,55 @@ const requestService = new ChatRequestService({
28
28
  personaService,
29
29
  preferencesService,
30
30
  });
31
+ /**
32
+ * A completion event has to fit the durable payload ceiling, and a long reply
33
+ * with reasoning does not. The message itself is persisted in the same
34
+ * transaction, so an oversized event drops the bulky fields and marks itself
35
+ * truncated; a client that was not streaming reloads the session instead of
36
+ * reading them off the event.
37
+ */
38
+ const boundCompletionPayload = (value) => {
39
+ const BUDGET_BYTES = 48 * 1024;
40
+ const size = (candidate) => Buffer.byteLength(JSON.stringify(candidate), 'utf8');
41
+ if (size(value) <= BUDGET_BYTES)
42
+ return value;
43
+ // The payload must hold JSON values only, so bulky fields are removed
44
+ // rather than blanked with undefined.
45
+ const withoutThinking = {
46
+ ...value,
47
+ truncated: true,
48
+ };
49
+ delete withoutThinking.thinking;
50
+ if (size(withoutThinking) <= BUDGET_BYTES)
51
+ return withoutThinking;
52
+ return { ...withoutThinking, content: '' };
53
+ };
54
+ /**
55
+ * Split text into pieces that each fit a byte budget, never cutting a
56
+ * character in half. A provider is free to emit one enormous delta, and a
57
+ * single event that exceeds the durable payload ceiling would fail the whole
58
+ * generation.
59
+ */
60
+ const sliceByBytes = (text, maxBytes) => {
61
+ if (Buffer.byteLength(text, 'utf8') <= maxBytes)
62
+ return text ? [text] : [];
63
+ const pieces = [];
64
+ let current = '';
65
+ let currentBytes = 0;
66
+ for (const character of text) {
67
+ const width = Buffer.byteLength(character, 'utf8');
68
+ if (currentBytes + width > maxBytes) {
69
+ pieces.push(current);
70
+ current = '';
71
+ currentBytes = 0;
72
+ }
73
+ current += character;
74
+ currentBytes += width;
75
+ }
76
+ if (current)
77
+ pieces.push(current);
78
+ return pieces;
79
+ };
31
80
  const streamId = (sessionId) => `chat:${sessionId}`;
32
81
  const append = async (input, eventType, payload, occurrenceId) => {
33
82
  await getDurableEventGateway().append({
@@ -61,15 +110,34 @@ const streamGeneratedAssistant = async (input, prepared, context) => {
61
110
  // Chunk events carry only their delta. Persisting the accumulated total in
62
111
  // every event made storage quadratic in message length; consumers rebuild
63
112
  // the message by replaying the generation's ordered deltas.
113
+ // Leaves room for the event envelope inside the durable payload ceiling.
114
+ const MAX_DELTA_BYTES = 32 * 1024;
64
115
  const publish = async (batch) => {
65
116
  await context.assertSideEffectAllowed();
66
- await append(input, 'chat.stream.v1', {
67
- type: 'chunk',
68
- messageId: input.assistantMessageId,
69
- content: batch.contentDelta,
70
- ...(batch.thinkingDelta ? { thinking: batch.thinkingDelta } : {}),
71
- done: false,
72
- }, `attempt:${context.attemptCount}:stream:${++streamEventSequence}`);
117
+ const emit = async (content, thinking) => {
118
+ await append(input, 'chat.stream.v1', {
119
+ type: 'chunk',
120
+ messageId: input.assistantMessageId,
121
+ content,
122
+ ...(thinking ? { thinking } : {}),
123
+ done: false,
124
+ }, `attempt:${context.attemptCount}:stream:${++streamEventSequence}`);
125
+ };
126
+ const fitsInOneEvent = Buffer.byteLength(batch.contentDelta, 'utf8') +
127
+ Buffer.byteLength(batch.thinkingDelta, 'utf8') <=
128
+ MAX_DELTA_BYTES;
129
+ if (fitsInOneEvent) {
130
+ await emit(batch.contentDelta, batch.thinkingDelta || undefined);
131
+ return;
132
+ }
133
+ // Ordered pieces: reasoning first, then the answer, exactly as a
134
+ // consumer replaying the stream would rebuild them.
135
+ for (const piece of sliceByBytes(batch.thinkingDelta, MAX_DELTA_BYTES)) {
136
+ await emit('', piece);
137
+ }
138
+ for (const piece of sliceByBytes(batch.contentDelta, MAX_DELTA_BYTES)) {
139
+ await emit(piece);
140
+ }
73
141
  };
74
142
  const streamPublisher = createChatStreamCoalescer(publish);
75
143
  const queuePublish = (contentDelta = '', thinkingDelta = '') => {
@@ -105,6 +173,10 @@ const streamGeneratedAssistant = async (input, prepared, context) => {
105
173
  }
106
174
  if (prepared.target.activePlugin && prepared.shouldStreamPlugin) {
107
175
  const toolCalls = [];
176
+ // Token counts the provider reported; without them the statistics strip
177
+ // shows nothing for provider-backed replies.
178
+ let usage;
179
+ let providerTimings;
108
180
  try {
109
181
  for await (const chunk of pluginService.executePluginStreamRequest(prepared.target.actualModelName, prepared.pluginMessages, prepared.target.mergedOptions, input.actorUserId, prepared.target.activePlugin.id, context.signal)) {
110
182
  if (chunk.type === 'content' && chunk.content) {
@@ -118,6 +190,12 @@ const streamGeneratedAssistant = async (input, prepared, context) => {
118
190
  else if (chunk.type === 'tool_call' && chunk.toolCall) {
119
191
  toolCalls.push(chunk.toolCall);
120
192
  }
193
+ else if (chunk.type === 'usage') {
194
+ if (chunk.usage)
195
+ usage = { ...usage, ...chunk.usage };
196
+ if (chunk.timings)
197
+ providerTimings = { ...providerTimings, ...chunk.timings };
198
+ }
121
199
  else if (chunk.type === 'done') {
122
200
  if (chunk.doneReason?.startsWith('incomplete:')) {
123
201
  throw new Error(`Provider returned an incomplete response (${chunk.doneReason.slice('incomplete:'.length) || 'unknown'})`);
@@ -136,7 +214,33 @@ const streamGeneratedAssistant = async (input, prepared, context) => {
136
214
  await streamPublisher.drain();
137
215
  }
138
216
  return {
139
- response: chatGenerationService.createPluginChatResponse(prepared.target.actualModelName, content, thinking || undefined, providerMetadata),
217
+ response: chatGenerationService.createPluginChatResponse(prepared.target.actualModelName, content, thinking || undefined, providerMetadata, {
218
+ ...(usage?.promptTokens !== undefined
219
+ ? { prompt_tokens: usage.promptTokens }
220
+ : {}),
221
+ ...(usage?.completionTokens !== undefined
222
+ ? { completion_tokens: usage.completionTokens }
223
+ : {}),
224
+ },
225
+ // The server reports milliseconds; the statistics contract is
226
+ // nanoseconds, matching Ollama.
227
+ providerTimings
228
+ ? {
229
+ ...(providerTimings.promptMs !== undefined
230
+ ? { firstTokenNs: providerTimings.promptMs * 1e6 }
231
+ : {}),
232
+ ...(providerTimings.predictedMs !== undefined
233
+ ? { generationNs: providerTimings.predictedMs * 1e6 }
234
+ : {}),
235
+ ...(providerTimings.promptMs !== undefined &&
236
+ providerTimings.predictedMs !== undefined
237
+ ? {
238
+ totalNs: (providerTimings.promptMs + providerTimings.predictedMs) *
239
+ 1e6,
240
+ }
241
+ : {}),
242
+ }
243
+ : undefined),
140
244
  content,
141
245
  ...(thinking ? { thinking } : {}),
142
246
  };
@@ -247,11 +351,17 @@ class DurableChatGenerationService {
247
351
  throw error;
248
352
  }
249
353
  }
354
+ // getMessagesForContext may compact the session — a real side effect,
355
+ // so it must run fenced like the generation below it.
356
+ await context.assertSideEffectAllowed();
250
357
  const prepared = await requestService.prepareGenerationRequest({
251
358
  session,
252
359
  userId: input.actorUserId,
253
360
  options: input.options,
254
- persistedMessages: (await chatService.getMessagesForContext(input.sessionId, input.actorUserId)).filter(message => {
361
+ persistedMessages: (await chatService.getMessagesForContext(input.sessionId, input.actorUserId, undefined, context.signal,
362
+ // Compaction runs once, on the first attempt; a retry serves
363
+ // whatever that attempt already persisted.
364
+ context.attemptCount > 1)).filter(message => {
255
365
  if (!input.regenerate || !input.originalMessageId)
256
366
  return true;
257
367
  const original = session.messages.find(candidate => candidate.id === input.originalMessageId);
@@ -319,7 +429,7 @@ class DurableChatGenerationService {
319
429
  actorUserId: input.actorUserId,
320
430
  payload: {
321
431
  mode: 'encrypted',
322
- value: {
432
+ value: boundCompletionPayload({
323
433
  type: 'done',
324
434
  messageId: input.assistantMessageId,
325
435
  content: assistant.content,
@@ -330,7 +440,7 @@ class DurableChatGenerationService {
330
440
  ...(assistant.providerMetadata
331
441
  ? { providerMetadata: assistant.providerMetadata }
332
442
  : {}),
333
- },
443
+ }),
334
444
  },
335
445
  },
336
446
  });
@@ -1 +1 @@
1
- {"version":3,"file":"durableChatGenerationService.js","sourceRoot":"","sources":["../../src/services/durableChatGenerationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"durableChatGenerationService.js","sourceRoot":"","sources":["../../src/services/durableChatGenerationService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"followUpService.d.ts","sourceRoot":"","sources":["../../src/services/followUpService.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAWnF,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAQR;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB9D;AAED,UAAU,qBAAqB;IAC7B,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CACrC;AAED,UAAU,+BAA+B;IACvC,uBAAuB,CACrB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,iBAAiB,EAC3B,iBAAiB,CAAC,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,GACpE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B,6BAA6B,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC;CACjE;AAED,UAAU,uBAAuB;IAC/B,oBAAoB,CAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,UAAU,uBAAuB;IAC/B,gBAAgB,CACd,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,qBAAqB,CAAC;IACnC,qBAAqB,EAAE,+BAA+B,CAAC;IACvD,aAAa,EAAE,uBAAuB,CAAC;IACvC,aAAa,EAAE,uBAAuB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,qBAAqB,CAAkC;IAC/D,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,MAAM,CAAyB;IAEvC,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,GAAc,EACd,MAAgB,GACjB,EAAE,2BAA2B,EAO7B;IAED;;;;OAIG;IACG,2BAA2B,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,SAAY,GACjB,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAiC1B;YAEa,iBAAiB;CAkDhC"}
1
+ {"version":3,"file":"followUpService.d.ts","sourceRoot":"","sources":["../../src/services/followUpService.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAWnF,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAQR;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB9D;AAED,UAAU,qBAAqB;IAC7B,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CACrC;AAED,UAAU,+BAA+B;IACvC,uBAAuB,CACrB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,iBAAiB,EAC3B,iBAAiB,CAAC,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,GACpE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B,6BAA6B,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC;CACjE;AAED,UAAU,uBAAuB;IAC/B,oBAAoB,CAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,UAAU,uBAAuB;IAC/B,gBAAgB,CACd,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,qBAAqB,CAAC;IACnC,qBAAqB,EAAE,+BAA+B,CAAC;IACvD,aAAa,EAAE,uBAAuB,CAAC;IACvC,aAAa,EAAE,uBAAuB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,qBAAqB,CAAkC;IAC/D,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,MAAM,CAAyB;IAEvC,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,GAAc,EACd,MAAgB,GACjB,EAAE,2BAA2B,EAO7B;IAED;;;;OAIG;IACG,2BAA2B,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,SAAY,GACjB,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAiC1B;YAEa,iBAAiB;CAwDhC"}
@@ -103,16 +103,22 @@ export class FollowUpService {
103
103
  content: prompt,
104
104
  timestamp: this.now(),
105
105
  },
106
- ], target.mergedOptions, userId, target.activePlugin.id);
106
+ ],
107
+ // Suggestions are a side task; they should not spend the chat's
108
+ // reasoning budget, whatever it is set to.
109
+ { ...target.mergedOptions, think: false }, userId, target.activePlugin.id);
107
110
  return this.chatGenerationService.extractPluginAssistantContent(pluginResponse);
108
111
  }
112
+ // Ollama takes the thinking setting beside the options, never inside
113
+ // them, and this call answers it for itself below.
114
+ const { think: _think, ...ollamaOptions } = target.mergedOptions;
109
115
  const response = await this.ollamaService.generateResponse({
110
116
  model: target.actualModelName,
111
117
  prompt,
112
118
  stream: false,
113
119
  think: false,
114
120
  options: {
115
- ...target.mergedOptions,
121
+ ...ollamaOptions,
116
122
  temperature: FOLLOW_UP_GENERATION_OPTIONS.temperature,
117
123
  num_predict: FOLLOW_UP_GENERATION_OPTIONS.num_predict,
118
124
  },
@@ -1 +1 @@
1
- {"version":3,"file":"followUpService.js","sourceRoot":"","sources":["../../src/services/followUpService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"followUpService.js","sourceRoot":"","sources":["../../src/services/followUpService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export declare const MODEL_VISIBILITY_KEY = "model_visibility";
2
+ /** Upper bound on stored hidden keys, keeping the setting row bounded. */
3
+ export declare const MODEL_VISIBILITY_MAX_KEYS = 5000;
4
+ /**
5
+ * The hidden model keys, or [] when nothing is hidden. Fails open: an
6
+ * unreadable or corrupted setting must never blank every model picker.
7
+ */
8
+ export declare function getHiddenModels(): Promise<string[]>;
9
+ /** Validates and dedupes a hidden-model list; throws on invalid input. */
10
+ export declare function normalizeHiddenModels(keys: unknown): string[];
11
+ /** Persists the hidden-model set and returns the normalized list. */
12
+ export declare function setHiddenModels(keys: string[]): Promise<string[]>;
13
+ export declare const MODEL_ORDER_KEY = "model_order";
14
+ export declare const MODEL_METADATA_KEY = "model_metadata";
15
+ /** Presentation an administrator set for one model. */
16
+ export interface ModelMetadata {
17
+ /** Shown instead of the raw model id. Empty means use the id. */
18
+ label?: string;
19
+ /** Data URL for the model's picture. Empty means the provider default. */
20
+ avatar?: string;
21
+ }
22
+ /**
23
+ * The administrator-chosen model order, most important first. Models missing
24
+ * from the list keep their provider order after the ones listed here.
25
+ */
26
+ export declare function getModelOrder(): Promise<string[]>;
27
+ export declare function normalizeModelOrder(keys: unknown): string[];
28
+ export declare function setModelOrder(keys: string[]): Promise<string[]>;
29
+ /** Labels and pictures administrators set, keyed the same way as visibility. */
30
+ export declare function getModelMetadata(): Promise<Record<string, ModelMetadata>>;
31
+ export declare function normalizeModelMetadata(value: unknown): Record<string, ModelMetadata>;
32
+ export declare function setModelMetadata(value: Record<string, ModelMetadata>): Promise<Record<string, ModelMetadata>>;
33
+ declare const _default: {
34
+ getHiddenModels: typeof getHiddenModels;
35
+ setHiddenModels: typeof setHiddenModels;
36
+ normalizeHiddenModels: typeof normalizeHiddenModels;
37
+ getModelOrder: typeof getModelOrder;
38
+ setModelOrder: typeof setModelOrder;
39
+ normalizeModelOrder: typeof normalizeModelOrder;
40
+ getModelMetadata: typeof getModelMetadata;
41
+ setModelMetadata: typeof setModelMetadata;
42
+ normalizeModelMetadata: typeof normalizeModelMetadata;
43
+ };
44
+ export default _default;
45
+ //# sourceMappingURL=modelVisibilityService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelVisibilityService.d.ts","sourceRoot":"","sources":["../../src/services/modelVisibilityService.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAK9C;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBzD;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CA0B7D;AAED,qEAAqE;AACrE,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIvE;AAED,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAOnD,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAavD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CAsB3D;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIrE;AAED,gFAAgF;AAChF,wBAAsB,gBAAgB,IAAI,OAAO,CAC/C,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAC9B,CAaA;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAyD/B;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAIxC"}
@@ -0,0 +1,215 @@
1
+ /*
2
+ * Libre WebUI
3
+ * Copyright (C) 2025 Kroonen AI, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at:
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Which models administrators removed from the shared model pickers. The set
19
+ * is a persisted system setting holding hidden model keys: an Ollama model is
20
+ * keyed by its plain name, a plugin model by `${pluginId}/${modelName}`.
21
+ *
22
+ * Visibility is a listing refinement, not an authorization gate: hidden
23
+ * models drop out of the pickers non-administrators see, while administrators
24
+ * always keep the full list.
25
+ */
26
+ import { createLogger } from '../utils/logger.js';
27
+ import { getSystemSetting, setSystemSetting } from './systemSettingsService.js';
28
+ const logger = createLogger('services:model-visibility');
29
+ export const MODEL_VISIBILITY_KEY = 'model_visibility';
30
+ /** Upper bound on stored hidden keys, keeping the setting row bounded. */
31
+ export const MODEL_VISIBILITY_MAX_KEYS = 5000;
32
+ /** Longer than any real model key; guards the row against garbage input. */
33
+ const MODEL_KEY_MAX_CHARS = 512;
34
+ /**
35
+ * The hidden model keys, or [] when nothing is hidden. Fails open: an
36
+ * unreadable or corrupted setting must never blank every model picker.
37
+ */
38
+ export async function getHiddenModels() {
39
+ try {
40
+ const raw = await getSystemSetting(MODEL_VISIBILITY_KEY);
41
+ if (!raw)
42
+ return [];
43
+ const parsed = JSON.parse(raw);
44
+ if (!Array.isArray(parsed))
45
+ return [];
46
+ return parsed.filter((key) => typeof key === 'string' && key.length > 0);
47
+ }
48
+ catch (error) {
49
+ logger.warn('Could not read model visibility; treating every model as visible:', error);
50
+ return [];
51
+ }
52
+ }
53
+ /** Validates and dedupes a hidden-model list; throws on invalid input. */
54
+ export function normalizeHiddenModels(keys) {
55
+ if (!Array.isArray(keys)) {
56
+ throw new Error('hidden must be an array of model keys.');
57
+ }
58
+ if (keys.length > MODEL_VISIBILITY_MAX_KEYS) {
59
+ throw new Error(`At most ${MODEL_VISIBILITY_MAX_KEYS} models can be hidden.`);
60
+ }
61
+ const deduped = new Set();
62
+ for (const key of keys) {
63
+ if (typeof key !== 'string') {
64
+ throw new Error('Every hidden model key must be a string.');
65
+ }
66
+ const trimmed = key.trim();
67
+ if (!trimmed) {
68
+ throw new Error('Hidden model keys must be non-empty.');
69
+ }
70
+ if (trimmed.length > MODEL_KEY_MAX_CHARS) {
71
+ throw new Error(`Hidden model keys are limited to ${MODEL_KEY_MAX_CHARS} characters.`);
72
+ }
73
+ deduped.add(trimmed);
74
+ }
75
+ return [...deduped];
76
+ }
77
+ /** Persists the hidden-model set and returns the normalized list. */
78
+ export async function setHiddenModels(keys) {
79
+ const normalized = normalizeHiddenModels(keys);
80
+ await setSystemSetting(MODEL_VISIBILITY_KEY, JSON.stringify(normalized));
81
+ return normalized;
82
+ }
83
+ export const MODEL_ORDER_KEY = 'model_order';
84
+ export const MODEL_METADATA_KEY = 'model_metadata';
85
+ /** Data URLs are stored inline, so each one stays small enough to serve. */
86
+ const MODEL_AVATAR_MAX_CHARS = 256000;
87
+ const MODEL_LABEL_MAX_CHARS = 128;
88
+ const MODEL_METADATA_MAX_ENTRIES = 2000;
89
+ /**
90
+ * The administrator-chosen model order, most important first. Models missing
91
+ * from the list keep their provider order after the ones listed here.
92
+ */
93
+ export async function getModelOrder() {
94
+ try {
95
+ const raw = await getSystemSetting(MODEL_ORDER_KEY);
96
+ if (!raw)
97
+ return [];
98
+ const parsed = JSON.parse(raw);
99
+ if (!Array.isArray(parsed))
100
+ return [];
101
+ return parsed.filter((key) => typeof key === 'string' && key.length > 0);
102
+ }
103
+ catch (error) {
104
+ logger.warn('Could not read model order; using provider order:', error);
105
+ return [];
106
+ }
107
+ }
108
+ export function normalizeModelOrder(keys) {
109
+ if (!Array.isArray(keys)) {
110
+ throw new Error('order must be an array of model keys.');
111
+ }
112
+ if (keys.length > MODEL_VISIBILITY_MAX_KEYS) {
113
+ throw new Error(`At most ${MODEL_VISIBILITY_MAX_KEYS} models can be ordered.`);
114
+ }
115
+ const deduped = new Set();
116
+ for (const key of keys) {
117
+ if (typeof key !== 'string' || !key.trim()) {
118
+ throw new Error('Every ordered model key must be a non-empty string.');
119
+ }
120
+ if (key.trim().length > MODEL_KEY_MAX_CHARS) {
121
+ throw new Error(`Model keys are limited to ${MODEL_KEY_MAX_CHARS} characters.`);
122
+ }
123
+ deduped.add(key.trim());
124
+ }
125
+ return [...deduped];
126
+ }
127
+ export async function setModelOrder(keys) {
128
+ const normalized = normalizeModelOrder(keys);
129
+ await setSystemSetting(MODEL_ORDER_KEY, JSON.stringify(normalized));
130
+ return normalized;
131
+ }
132
+ /** Labels and pictures administrators set, keyed the same way as visibility. */
133
+ export async function getModelMetadata() {
134
+ try {
135
+ const raw = await getSystemSetting(MODEL_METADATA_KEY);
136
+ if (!raw)
137
+ return {};
138
+ const parsed = JSON.parse(raw);
139
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
140
+ return {};
141
+ }
142
+ return parsed;
143
+ }
144
+ catch (error) {
145
+ logger.warn('Could not read model metadata; using provider names:', error);
146
+ return {};
147
+ }
148
+ }
149
+ export function normalizeModelMetadata(value) {
150
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
151
+ throw new Error('metadata must be an object keyed by model.');
152
+ }
153
+ const entries = Object.entries(value);
154
+ if (entries.length > MODEL_METADATA_MAX_ENTRIES) {
155
+ throw new Error(`At most ${MODEL_METADATA_MAX_ENTRIES} models can carry metadata.`);
156
+ }
157
+ const normalized = {};
158
+ for (const [key, raw] of entries) {
159
+ if (!key.trim() || key.length > MODEL_KEY_MAX_CHARS) {
160
+ throw new Error('Model metadata keys must be short, non-empty strings.');
161
+ }
162
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
163
+ throw new Error(`Metadata for ${key} must be an object.`);
164
+ }
165
+ const { label, avatar } = raw;
166
+ const entry = {};
167
+ if (label !== undefined) {
168
+ if (typeof label !== 'string') {
169
+ throw new Error(`Label for ${key} must be a string.`);
170
+ }
171
+ const trimmed = label.trim();
172
+ if (trimmed.length > MODEL_LABEL_MAX_CHARS) {
173
+ throw new Error(`Labels are limited to ${MODEL_LABEL_MAX_CHARS} characters.`);
174
+ }
175
+ if (trimmed)
176
+ entry.label = trimmed;
177
+ }
178
+ if (avatar !== undefined) {
179
+ if (typeof avatar !== 'string') {
180
+ throw new Error(`Picture for ${key} must be a string.`);
181
+ }
182
+ const trimmed = avatar.trim();
183
+ if (trimmed) {
184
+ if (trimmed.length > MODEL_AVATAR_MAX_CHARS) {
185
+ throw new Error(`Model pictures are limited to ${Math.floor(MODEL_AVATAR_MAX_CHARS / 1000)} KB.`);
186
+ }
187
+ if (!/^data:image\/(png|jpeg|jpg|gif|webp|svg\+xml);base64,/i.test(trimmed)) {
188
+ throw new Error(`Picture for ${key} must be an image data URL.`);
189
+ }
190
+ entry.avatar = trimmed;
191
+ }
192
+ }
193
+ // An entry stripped back to nothing is a reset, not a stored blank.
194
+ if (entry.label || entry.avatar)
195
+ normalized[key.trim()] = entry;
196
+ }
197
+ return normalized;
198
+ }
199
+ export async function setModelMetadata(value) {
200
+ const normalized = normalizeModelMetadata(value);
201
+ await setSystemSetting(MODEL_METADATA_KEY, JSON.stringify(normalized));
202
+ return normalized;
203
+ }
204
+ export default {
205
+ getHiddenModels,
206
+ setHiddenModels,
207
+ normalizeHiddenModels,
208
+ getModelOrder,
209
+ setModelOrder,
210
+ normalizeModelOrder,
211
+ getModelMetadata,
212
+ setModelMetadata,
213
+ normalizeModelMetadata,
214
+ };
215
+ //# sourceMappingURL=modelVisibilityService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelVisibilityService.js","sourceRoot":"","sources":["../../src/services/modelVisibilityService.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export declare function isCloudModel(model: string | undefined): boolean;
12
12
  * unlimited), but the cloud backend maps num_predict -> max_tokens, which must
13
13
  * be positive, so for cloud we omit it and let the host apply its default.
14
14
  */
15
- export declare function sanitizeOptionsForModel(model: string, options: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
15
+ export declare function sanitizeOptionsForModel(model: string, rawOptions: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
16
16
  /**
17
17
  * Ollama's native /api/chat requires tool_call function arguments to be an
18
18
  * object; a JSON string there fails its request parser with a 400 ("Value
@@ -64,6 +64,21 @@ export declare class OllamaService {
64
64
  }>;
65
65
  /** Meter a chat call into the usage analytics shown on the Usage page. */
66
66
  private recordChatUsage;
67
+ /**
68
+ * The thinking setting a request should actually be sent with.
69
+ *
70
+ * A model that does not reason answers a `think` request with a 400, and the
71
+ * setting can arrive from global preferences that were never written with
72
+ * this model in mind. Where Ollama says what the model can do, that answer
73
+ * is respected; where it says nothing, the request is left alone.
74
+ */
75
+ private resolveThinking;
76
+ /**
77
+ * The wire form of a chat request: messages Ollama can parse, options it
78
+ * accepts, and `think` where it belongs, in the body rather than the
79
+ * options.
80
+ */
81
+ private buildChatRequestBody;
67
82
  generateChatResponse(request: OllamaChatRequest, signal?: AbortSignal, usage?: {
68
83
  userId?: string;
69
84
  }): Promise<OllamaChatResponse>;