librechat-data-provider 0.8.521 → 0.8.522

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 (57) hide show
  1. package/dist/{data-service-pwrlWjJs.mjs → data-service-CaB7saTP.mjs} +1145 -37
  2. package/dist/data-service-CaB7saTP.mjs.map +1 -0
  3. package/dist/{data-service-DOIF4BkW.js → data-service-D5kHzBt-.js} +1588 -36
  4. package/dist/data-service-D5kHzBt-.js.map +1 -0
  5. package/dist/index.js +947 -36
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +825 -37
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/react-query/index.js +2 -1
  10. package/dist/react-query/index.js.map +1 -1
  11. package/dist/react-query/index.mjs +2 -1
  12. package/dist/react-query/index.mjs.map +1 -1
  13. package/dist/types/accessPermissions.d.ts +4 -0
  14. package/dist/types/actions.d.ts +2 -2
  15. package/dist/types/agentToolOptions.d.ts +11 -0
  16. package/dist/types/api-endpoints.d.ts +18 -0
  17. package/dist/types/bedrock.d.ts +168 -0
  18. package/dist/types/cadence.d.ts +33 -0
  19. package/dist/types/codeEnvRef.d.ts +21 -0
  20. package/dist/types/config.d.ts +9060 -1135
  21. package/dist/types/data-service.d.ts +40 -2
  22. package/dist/types/file-config.d.ts +1 -0
  23. package/dist/types/filters.d.ts +1422 -0
  24. package/dist/types/generate.d.ts +79 -1
  25. package/dist/types/index.d.ts +10 -0
  26. package/dist/types/keys.d.ts +23 -2
  27. package/dist/types/langchain.d.ts +4 -0
  28. package/dist/types/limits.d.ts +13 -0
  29. package/dist/types/mcp.d.ts +299 -210
  30. package/dist/types/messages.d.ts +5 -0
  31. package/dist/types/models.d.ts +732 -68
  32. package/dist/types/parameterSettings.d.ts +5 -1
  33. package/dist/types/parsers.d.ts +10 -0
  34. package/dist/types/permissions.d.ts +42 -1
  35. package/dist/types/providers.d.ts +36 -0
  36. package/dist/types/request.d.ts +2 -2
  37. package/dist/types/roles.d.ts +34 -0
  38. package/dist/types/runSteps.d.ts +59 -0
  39. package/dist/types/schemas.d.ts +1191 -26
  40. package/dist/types/stateful-code.d.ts +7 -0
  41. package/dist/types/types/agents.d.ts +92 -7
  42. package/dist/types/types/assistants.d.ts +96 -5
  43. package/dist/types/types/files.d.ts +12 -2
  44. package/dist/types/types/index.d.ts +2 -0
  45. package/dist/types/types/insights.d.ts +62 -0
  46. package/dist/types/types/mutations.d.ts +1 -0
  47. package/dist/types/types/queries.d.ts +30 -2
  48. package/dist/types/types/queuedTurns.d.ts +870 -0
  49. package/dist/types/types/runs.d.ts +95 -4
  50. package/dist/types/types/schedules.d.ts +306 -0
  51. package/dist/types/types/skills.d.ts +9 -0
  52. package/dist/types/types/subagents.d.ts +159 -0
  53. package/dist/types/types/web.d.ts +12 -2
  54. package/dist/types/types.d.ts +61 -1
  55. package/package.json +4 -2
  56. package/dist/data-service-DOIF4BkW.js.map +0 -1
  57. package/dist/data-service-pwrlWjJs.mjs.map +0 -1
@@ -30,6 +30,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  }) : target, mod));
31
31
  //#endregion
32
32
  let zod = require("zod");
33
+ let re2js = require("re2js");
33
34
  let axios = require("axios");
34
35
  axios = __toESM(axios);
35
36
  //#region src/utils.ts
@@ -97,6 +98,258 @@ function normalizeEndpointName(name = "") {
97
98
  return name.toLowerCase() === "ollama" ? "ollama" : name;
98
99
  }
99
100
  //#endregion
101
+ //#region src/filters.ts
102
+ const FILTER_PII_STARTER_PATTERNS = [
103
+ "sk_prefix",
104
+ "bearer_header",
105
+ "api_key_header"
106
+ ];
107
+ const MAX_PII_PATTERNS_PER_SOURCE = 256;
108
+ const MAX_PII_PATTERN_LENGTH = 512;
109
+ const MAX_PII_PATTERN_ID_LENGTH = 256;
110
+ const MAX_PII_PATTERN_LABEL_LENGTH = 512;
111
+ const MAX_PII_CUSTOM_REGEX_CHARACTERS = 8192;
112
+ const MAX_PII_CUSTOM_REGEX_INSTRUCTIONS = 8192;
113
+ const MAX_PII_CUSTOM_PATTERNS_TOTAL = 256;
114
+ const MAX_PII_REGEX_SIZE_CACHE_ENTRIES = 512;
115
+ const PII_REGEX_PROGRAM_SIZE_CACHE = /* @__PURE__ */ new Map();
116
+ function getPiiRegexProgramSize(pattern) {
117
+ if (PII_REGEX_PROGRAM_SIZE_CACHE.has(pattern)) return PII_REGEX_PROGRAM_SIZE_CACHE.get(pattern) ?? null;
118
+ let programSize = null;
119
+ let compiled;
120
+ try {
121
+ compiled = re2js.RE2JS.compile(pattern);
122
+ const candidate = compiled.programSize();
123
+ if (Number.isSafeInteger(candidate) && candidate > 0) programSize = candidate;
124
+ } catch {
125
+ programSize = null;
126
+ } finally {
127
+ compiled?.reset();
128
+ }
129
+ if (PII_REGEX_PROGRAM_SIZE_CACHE.size >= MAX_PII_REGEX_SIZE_CACHE_ENTRIES) PII_REGEX_PROGRAM_SIZE_CACHE.clear();
130
+ PII_REGEX_PROGRAM_SIZE_CACHE.set(pattern, programSize);
131
+ return programSize;
132
+ }
133
+ const MESSAGE_FILTER_FIELDS = [
134
+ "name",
135
+ "text",
136
+ "summary",
137
+ "quote",
138
+ "answer",
139
+ "decision_response",
140
+ "decision_reason",
141
+ "content_part",
142
+ "attachment_reference",
143
+ "assembled_context"
144
+ ];
145
+ const HITL_MESSAGE_FILTER_FIELDS = [
146
+ "answer",
147
+ "decision_response",
148
+ "decision_reason"
149
+ ];
150
+ const REQUEST_ONLY_MESSAGE_FILTER_FIELDS = new Set(HITL_MESSAGE_FILTER_FIELDS);
151
+ /** Message fields structurally recoverable without exact semantic provenance. */
152
+ const STORED_MESSAGE_FILTER_FIELDS = MESSAGE_FILTER_FIELDS.filter((field) => !REQUEST_ONLY_MESSAGE_FILTER_FIELDS.has(field));
153
+ const PROMPT_FILTER_FIELDS = [
154
+ "name",
155
+ "description",
156
+ "oneliner",
157
+ "category",
158
+ "command",
159
+ "text",
160
+ "preset_text",
161
+ "system",
162
+ "context",
163
+ "instructions",
164
+ "additional_instructions",
165
+ "greeting",
166
+ "example_input",
167
+ "example_output"
168
+ ];
169
+ const AGENT_INSTRUCTION_FILTER_FIELDS = [
170
+ "name",
171
+ "category",
172
+ "description",
173
+ "instructions",
174
+ "additional_instructions",
175
+ "edge_description",
176
+ "edge_prompt",
177
+ "edge_prompt_key",
178
+ "artifacts",
179
+ "support_contact_name",
180
+ "support_contact_email"
181
+ ];
182
+ const CONVERSATION_STARTER_FILTER_FIELDS = ["text"];
183
+ const CONVERSATION_TITLE_FILTER_FIELDS = ["title"];
184
+ const FEEDBACK_FILTER_FIELDS = ["text"];
185
+ const SKILL_FILTER_FIELDS = [
186
+ "name",
187
+ "display_title",
188
+ "description",
189
+ "category",
190
+ "frontmatter",
191
+ "instructions",
192
+ "imported_text",
193
+ "file_name",
194
+ "file_text"
195
+ ];
196
+ const MEMORY_FILTER_FIELDS = [
197
+ "key",
198
+ "value",
199
+ "summary"
200
+ ];
201
+ const FILE_FILTER_FIELDS = [
202
+ "name",
203
+ "content",
204
+ "extracted_text",
205
+ "transcript",
206
+ "uri"
207
+ ];
208
+ const TOOL_ARGUMENT_FILTER_FIELDS = [
209
+ "name",
210
+ "arguments",
211
+ "output"
212
+ ];
213
+ const MODEL_PARAMETER_FILTER_FIELDS = [
214
+ "stop",
215
+ "request_fields",
216
+ "response_format",
217
+ "metadata"
218
+ ];
219
+ const ACTION_METADATA_FILTER_FIELDS = [
220
+ "raw_spec",
221
+ "domain",
222
+ "privacy_policy_url",
223
+ "authorization_type",
224
+ "custom_auth_header",
225
+ "authorization_content_type",
226
+ "authorization_url",
227
+ "client_url",
228
+ "scope",
229
+ "token_exchange_method",
230
+ "api_key",
231
+ "oauth_client_id",
232
+ "oauth_client_secret"
233
+ ];
234
+ const messageFilterFieldSchema = zod.z.enum(MESSAGE_FILTER_FIELDS);
235
+ const promptFilterFieldSchema = zod.z.enum(PROMPT_FILTER_FIELDS);
236
+ const agentInstructionFilterFieldSchema = zod.z.enum(AGENT_INSTRUCTION_FILTER_FIELDS);
237
+ const conversationStarterFilterFieldSchema = zod.z.enum(CONVERSATION_STARTER_FILTER_FIELDS);
238
+ const conversationTitleFilterFieldSchema = zod.z.enum(CONVERSATION_TITLE_FILTER_FIELDS);
239
+ const feedbackFilterFieldSchema = zod.z.enum(FEEDBACK_FILTER_FIELDS);
240
+ const skillFilterFieldSchema = zod.z.enum(SKILL_FILTER_FIELDS);
241
+ const memoryFilterFieldSchema = zod.z.enum(MEMORY_FILTER_FIELDS);
242
+ const fileFilterFieldSchema = zod.z.enum(FILE_FILTER_FIELDS);
243
+ const toolArgumentFilterFieldSchema = zod.z.enum(TOOL_ARGUMENT_FILTER_FIELDS);
244
+ const modelParameterFilterFieldSchema = zod.z.enum(MODEL_PARAMETER_FILTER_FIELDS);
245
+ const filterPiiStarterPatternSchema = zod.z.enum(FILTER_PII_STARTER_PATTERNS);
246
+ const filterPiiActionSchema = zod.z.enum(["block", "audit"]);
247
+ const actionMetadataFilterFieldSchema = zod.z.enum(ACTION_METADATA_FILTER_FIELDS);
248
+ const unattributedAssistantContentSchema = zod.z.enum(["model_output", "inspect"]);
249
+ const userSubmittedMessageFieldPathSchema = zod.z.object({
250
+ path: zod.z.string().startsWith("/").max(2048),
251
+ field: zod.z.enum(HITL_MESSAGE_FILTER_FIELDS)
252
+ }).strict();
253
+ const UNINSPECTABLE_FILE_FIELDS = new Set([
254
+ "content",
255
+ "extracted_text",
256
+ "transcript"
257
+ ]);
258
+ /**
259
+ * An omitted starter selection enables the built-in catalog. An explicit
260
+ * empty selection disables it, so a source is active only when custom rules
261
+ * remain. This mirrors the documented filter semantics without compiling
262
+ * regular expressions.
263
+ */
264
+ function hasActivePiiPatterns(config) {
265
+ return config != null && (config.starterPatterns == null || config.starterPatterns.length > 0 || (config.customPatterns?.length ?? 0) > 0);
266
+ }
267
+ /** Returns whether an active PII rule can inspect at least one candidate field. */
268
+ function hasActivePiiFields(config, candidates) {
269
+ return hasActivePiiPatterns(config) && (config?.fields == null || candidates.some((field) => config.fields?.includes(field)));
270
+ }
271
+ /**
272
+ * Returns whether a parsed source-aware config can enforce any rule. An
273
+ * explicit fail-close file policy remains active even without text patterns.
274
+ */
275
+ function hasActiveFiltersConfig(filters) {
276
+ if (filters == null) return false;
277
+ if (filters.messages?.unattributedAssistantContent === "inspect") return true;
278
+ if ([
279
+ filters.messages?.pii,
280
+ filters.prompts?.pii,
281
+ filters.agentInstructions?.pii,
282
+ filters.conversationStarters?.pii,
283
+ filters.conversationTitles?.pii,
284
+ filters.feedback?.pii,
285
+ filters.skills?.pii,
286
+ filters.memories?.pii,
287
+ filters.files?.pii,
288
+ filters.toolArguments?.pii,
289
+ filters.modelParameters?.pii,
290
+ filters.actionMetadata?.pii
291
+ ].some(hasActivePiiPatterns)) return true;
292
+ const filePii = filters.files?.pii;
293
+ return filePii?.uninspectable === "block" && (filePii.fields == null || filePii.fields.some((field) => UNINSPECTABLE_FILE_FIELDS.has(field)));
294
+ }
295
+ const filterPiiRegexSchema = zod.z.string().min(1).max(512).refine((value) => getPiiRegexProgramSize(value) != null, { message: "Regex must use supported linear-time syntax" });
296
+ const filterPiiCustomPatternSchema = zod.z.object({
297
+ id: zod.z.string().min(1).max(256),
298
+ label: zod.z.string().min(1).max(512),
299
+ regex: filterPiiRegexSchema
300
+ }).strict();
301
+ function createPiiFilterSchema(fieldSchema) {
302
+ return zod.z.object({
303
+ action: filterPiiActionSchema.optional(),
304
+ fields: zod.z.array(fieldSchema).min(1).max(256).optional(),
305
+ starterPatterns: zod.z.array(filterPiiStarterPatternSchema).max(256).optional(),
306
+ customPatterns: zod.z.array(filterPiiCustomPatternSchema).max(256).optional()
307
+ }).strict();
308
+ }
309
+ function createSourceFilterSchema(fieldSchema) {
310
+ return zod.z.object({ pii: createPiiFilterSchema(fieldSchema).optional() }).strict();
311
+ }
312
+ const messageSourceFilterSchema = zod.z.object({
313
+ pii: createPiiFilterSchema(messageFilterFieldSchema).optional(),
314
+ unattributedAssistantContent: unattributedAssistantContentSchema.optional()
315
+ }).strict();
316
+ const fileSourceFilterSchema = zod.z.object({ pii: createPiiFilterSchema(fileFilterFieldSchema).extend({ uninspectable: zod.z.enum(["allow", "block"]).optional() }).optional() }).strict();
317
+ const filtersConfigSchema = zod.z.object({
318
+ messages: messageSourceFilterSchema.optional(),
319
+ prompts: createSourceFilterSchema(promptFilterFieldSchema).optional(),
320
+ agentInstructions: createSourceFilterSchema(agentInstructionFilterFieldSchema).optional(),
321
+ conversationStarters: createSourceFilterSchema(conversationStarterFilterFieldSchema).optional(),
322
+ conversationTitles: createSourceFilterSchema(conversationTitleFilterFieldSchema).optional(),
323
+ feedback: createSourceFilterSchema(feedbackFilterFieldSchema).optional(),
324
+ skills: createSourceFilterSchema(skillFilterFieldSchema).optional(),
325
+ memories: createSourceFilterSchema(memoryFilterFieldSchema).optional(),
326
+ files: fileSourceFilterSchema.optional(),
327
+ toolArguments: createSourceFilterSchema(toolArgumentFilterFieldSchema).optional(),
328
+ modelParameters: createSourceFilterSchema(modelParameterFilterFieldSchema).optional(),
329
+ actionMetadata: createSourceFilterSchema(actionMetadataFilterFieldSchema).optional()
330
+ }).strict().superRefine((filters, context) => {
331
+ let customPatterns = 0;
332
+ let regexCharacters = 0;
333
+ let regexInstructions = 0;
334
+ for (const source of Object.values(filters)) for (const pattern of source?.pii?.customPatterns ?? []) {
335
+ customPatterns++;
336
+ regexCharacters += pattern.regex.length;
337
+ regexInstructions += getPiiRegexProgramSize(pattern.regex) ?? 0;
338
+ }
339
+ if (customPatterns > 256) context.addIssue({
340
+ code: zod.z.ZodIssueCode.custom,
341
+ message: `At most 256 custom PII patterns may be configured in total`
342
+ });
343
+ if (regexCharacters > 8192) context.addIssue({
344
+ code: zod.z.ZodIssueCode.custom,
345
+ message: `Custom PII regexes may contain at most ${MAX_PII_CUSTOM_REGEX_CHARACTERS} characters in total`
346
+ });
347
+ if (regexInstructions > 8192) context.addIssue({
348
+ code: zod.z.ZodIssueCode.custom,
349
+ message: `Custom PII regexes may compile to at most ${MAX_PII_CUSTOM_REGEX_INSTRUCTIONS} instructions in total`
350
+ });
351
+ });
352
+ //#endregion
100
353
  //#region src/feedback.ts
101
354
  const FEEDBACK_RATINGS = ["thumbsUp", "thumbsDown"];
102
355
  const FEEDBACK_REASON_KEYS = [
@@ -206,6 +459,25 @@ function getTagByKey(key) {
206
459
  return FEEDBACK_TAGS.find((tag) => tag.key === key);
207
460
  }
208
461
  //#endregion
462
+ //#region src/stateful-code.ts
463
+ const STATEFUL_CODE_ENVIRONMENTS = [
464
+ "user",
465
+ "agent-user",
466
+ "conversation"
467
+ ];
468
+ /** Resolve a deployment allowlist in stable UI order. An omitted value preserves
469
+ * the backward-compatible behavior where every environment is available. */
470
+ function resolveAllowedStatefulCodeEnvironments(configured) {
471
+ if (configured == null) return [...STATEFUL_CODE_ENVIRONMENTS];
472
+ const configuredSet = new Set(configured);
473
+ return STATEFUL_CODE_ENVIRONMENTS.filter((environment) => configuredSet.has(environment));
474
+ }
475
+ /** Keep an allowed preference, otherwise select the first deployment-allowed scope. */
476
+ function resolveStatefulCodeEnvironment(preferred, configured) {
477
+ const allowed = resolveAllowedStatefulCodeEnvironments(configured);
478
+ return preferred != null && allowed.includes(preferred) ? preferred : allowed[0];
479
+ }
480
+ //#endregion
209
481
  //#region src/types/assistants.ts
210
482
  let Tools = /* @__PURE__ */ function(Tools) {
211
483
  Tools["execute_code"] = "execute_code";
@@ -622,6 +894,8 @@ const defaultAgentFormValues = {
622
894
  ["file_search"]: false,
623
895
  ["web_search"]: false,
624
896
  ["memory"]: false,
897
+ stateful_code_environment: "user",
898
+ code_environment_id: void 0,
625
899
  category: "general",
626
900
  support_contact: {
627
901
  name: "",
@@ -633,6 +907,10 @@ const defaultAgentFormValues = {
633
907
  /** Master toggle for skill use on this agent. `true` activates skills
634
908
  * (full catalog unless `skills` narrows it). Anything else = inactive. */
635
909
  skills_enabled: void 0,
910
+ /** Enables runtime skill creation without exposing an existing skill catalog. */
911
+ skill_authoring_enabled: void 0,
912
+ /** Explicit catalog scope. Missing preserves the legacy enabled + empty = all behavior. */
913
+ skills_scope: void 0,
636
914
  /** `undefined` = feature disabled by default (no subagent tool injected). */
637
915
  subagents: void 0,
638
916
  /** Memory partition: 'agent' isolates memories per (user, agent); default shared pool */
@@ -650,6 +928,8 @@ const ImageVisionTool = {
650
928
  }
651
929
  }
652
930
  };
931
+ /** Structural on purpose: accepts assistants tools/tool calls and agents function tool
932
+ * calls alike — the check only ever reads `type` and `function.name`. */
653
933
  const isImageVisionTool = (tool) => tool.type === "function" && tool.function?.name === ImageVisionTool.function?.name;
654
934
  const openAISettings = {
655
935
  model: { default: "gpt-4o-mini" },
@@ -708,8 +988,45 @@ const getGoogleMaxOutputTokens = (modelName) => {
708
988
  }
709
989
  return GOOGLE_LEGACY_MAX_OUTPUT;
710
990
  };
991
+ /**
992
+ * Per-model thinking budget bounds, documented in
993
+ * `com_endpoint_google_thinking_budget`: Gemini 2.5 Pro accepts 128-32,768,
994
+ * Flash accepts 0-24,576, and Flash Lite accepts 512-24,576. The generic
995
+ * 32,000 in the shared definition both under-limits Pro and lets invalid
996
+ * Flash values through.
997
+ *
998
+ * `-1` remains the "decide automatically" sentinel and is not part of these
999
+ * floors. Callers must keep `range.min` at -1 and apply `min` only to
1000
+ * non-negative values.
1001
+ */
1002
+ const GOOGLE_THINKING_BUDGET_PRO_MAX = 32768;
1003
+ const GOOGLE_THINKING_BUDGET_FLASH_MAX = 24576;
1004
+ const GOOGLE_THINKING_BUDGET_PRO_MIN = 128;
1005
+ const GOOGLE_THINKING_BUDGET_FLASH_MIN = 0;
1006
+ const GOOGLE_THINKING_BUDGET_FLASH_LITE_MIN = 512;
1007
+ const getGoogleThinkingBudgetBounds = (modelName) => {
1008
+ if (!/gemini-2\.5/i.test(modelName)) return;
1009
+ if (/flash[-_.]?lite/i.test(modelName)) return {
1010
+ min: GOOGLE_THINKING_BUDGET_FLASH_LITE_MIN,
1011
+ max: GOOGLE_THINKING_BUDGET_FLASH_MAX
1012
+ };
1013
+ if (/flash/i.test(modelName)) return {
1014
+ min: GOOGLE_THINKING_BUDGET_FLASH_MIN,
1015
+ max: GOOGLE_THINKING_BUDGET_FLASH_MAX
1016
+ };
1017
+ if (/pro/i.test(modelName)) return {
1018
+ min: GOOGLE_THINKING_BUDGET_PRO_MIN,
1019
+ max: GOOGLE_THINKING_BUDGET_PRO_MAX
1020
+ };
1021
+ };
1022
+ const getGoogleThinkingBudgetMax = (modelName) => getGoogleThinkingBudgetBounds(modelName)?.max;
711
1023
  const googleSettings = {
712
1024
  model: { default: "gemini-1.5-flash-latest" },
1025
+ maxContextTokens: {
1026
+ min: 10,
1027
+ max: 2e6,
1028
+ step: 1e3
1029
+ },
713
1030
  maxOutputTokens: {
714
1031
  min: 1,
715
1032
  max: GOOGLE_MAX_OUTPUT,
@@ -928,12 +1245,21 @@ const tPluginSchema = zod.z.object({
928
1245
  authenticated: zod.z.boolean().optional(),
929
1246
  chatMenu: zod.z.boolean().optional(),
930
1247
  isButton: zod.z.boolean().optional(),
931
- toolkit: zod.z.boolean().optional()
1248
+ toolkit: zod.z.boolean().optional(),
1249
+ /** Raw upstream tool name when the model-facing key stripped a redundant
1250
+ * server-name prefix — proves upstream identity for legacy id migration. */
1251
+ serverToolName: zod.z.string().optional()
932
1252
  });
933
1253
  const tExampleSchema = zod.z.object({
934
1254
  input: zod.z.object({ content: zod.z.string() }),
935
1255
  output: zod.z.object({ content: zod.z.string() })
936
1256
  });
1257
+ /** Compact context-fading tier persisted beside a message's calibration ratio. */
1258
+ const agentFadingTierSchema = zod.z.object({
1259
+ v: zod.z.literal(1),
1260
+ budgetTokens: zod.z.number().positive(),
1261
+ masked: zod.z.boolean()
1262
+ });
937
1263
  const tMessageSchema = zod.z.object({
938
1264
  messageId: zod.z.string(),
939
1265
  endpoint: zod.z.string().optional(),
@@ -950,6 +1276,12 @@ const tMessageSchema = zod.z.object({
950
1276
  /** @deprecated */
951
1277
  generation: zod.z.string().nullable().optional(),
952
1278
  isCreatedByUser: zod.z.boolean(),
1279
+ /** True when the complete stored row came from outside the model. */
1280
+ isUserSubmitted: zod.z.boolean().optional(),
1281
+ /** JSON pointers to caller-authored fields in an otherwise mixed model response. */
1282
+ userSubmittedPaths: zod.z.array(zod.z.string().startsWith("/")).optional(),
1283
+ /** Exact HITL message-field identity for caller-authored values stored in mixed responses. */
1284
+ userSubmittedMessageFieldPaths: zod.z.array(userSubmittedMessageFieldPathSchema).optional(),
953
1285
  isTemporary: zod.z.boolean().optional(),
954
1286
  expiredAt: zod.z.string().nullable().optional(),
955
1287
  error: zod.z.boolean().optional(),
@@ -969,7 +1301,9 @@ const tMessageSchema = zod.z.object({
969
1301
  tokenCount: zod.z.number().optional(),
970
1302
  contextMeta: zod.z.object({
971
1303
  calibrationRatio: zod.z.number().optional().describe("EMA ratio of provider-reported vs local token estimates; seeds the pruner on subsequent runs"),
972
- encoding: zod.z.string().optional().describe("Tokenizer encoding used when this ratio was computed (e.g. \"claude\", \"o200k_base\")")
1304
+ encoding: zod.z.string().optional().describe("Tokenizer encoding used when this ratio was computed (e.g. \"claude\", \"o200k_base\")"),
1305
+ fading: agentFadingTierSchema.optional().describe("Latched context-fading tier of the default agent; seeds the next run so the provider projection of history keeps the same bytes"),
1306
+ fadingTiers: zod.z.array(agentFadingTierSchema.extend({ agentId: zod.z.string().min(1) })).optional().describe("Latched context-fading tiers keyed by agent ID, stored as entries")
973
1307
  }).optional(),
974
1308
  /**
975
1309
  * Skill names the user invoked manually via the `$` popover on this turn.
@@ -1007,6 +1341,19 @@ let MemoryScope = /* @__PURE__ */ function(MemoryScope) {
1007
1341
  MemoryScope["agent"] = "agent";
1008
1342
  return MemoryScope;
1009
1343
  }({});
1344
+ /** Catalog exposure for a persisted agent with skills enabled. */
1345
+ let SkillsScope = /* @__PURE__ */ function(SkillsScope) {
1346
+ SkillsScope["all"] = "all";
1347
+ SkillsScope["selected"] = "selected";
1348
+ SkillsScope["none"] = "none";
1349
+ return SkillsScope;
1350
+ }({});
1351
+ /** Resolves explicit and legacy persisted-agent skill catalog states. */
1352
+ function resolveAgentSkillsScope(skills, enabled, scope) {
1353
+ if (enabled !== true) return "none";
1354
+ if (scope !== void 0) return scope;
1355
+ return (skills ?? []).length > 0 ? "selected" : "all";
1356
+ }
1010
1357
  const coerceNumber = zod.z.union([zod.z.number(), zod.z.string()]).transform((val) => {
1011
1358
  if (typeof val === "string") return val.trim() === "" ? void 0 : parseFloat(val);
1012
1359
  return val;
@@ -1019,11 +1366,23 @@ const DocumentType = zod.z.lazy(() => zod.z.union([
1019
1366
  zod.z.array(zod.z.lazy(() => DocumentType)),
1020
1367
  zod.z.record(zod.z.lazy(() => DocumentType))
1021
1368
  ]));
1369
+ const subagentThreadLineageSchema = zod.z.object({
1370
+ rootConversationId: zod.z.string().min(1),
1371
+ parentConversationId: zod.z.string().min(1),
1372
+ parentMessageId: zod.z.string().min(1),
1373
+ parentToolCallId: zod.z.string().min(1),
1374
+ parentAgentId: zod.z.string().min(1).optional(),
1375
+ subagentType: zod.z.string().min(1),
1376
+ subagentKind: zod.z.enum(["agent", "graph"]),
1377
+ depth: zod.z.number().int().positive()
1378
+ });
1022
1379
  const tConversationSchema = zod.z.object({
1023
1380
  conversationId: zod.z.string().nullable(),
1024
1381
  endpoint: eModelEndpointSchema.nullable(),
1025
1382
  endpointType: eModelEndpointSchema.nullable().optional(),
1026
1383
  isArchived: zod.z.boolean().optional(),
1384
+ /** When the chat was archived; absent on chats archived before this was recorded. */
1385
+ archivedAt: zod.z.string().nullable().optional(),
1027
1386
  pinned: zod.z.boolean().optional(),
1028
1387
  /** Server-derived: an active shared link exists for this conversation. Not persisted. */
1029
1388
  isShared: zod.z.boolean().optional(),
@@ -1075,6 +1434,8 @@ const tConversationSchema = zod.z.object({
1075
1434
  disableStreaming: zod.z.boolean().optional(),
1076
1435
  assistant_id: zod.z.string().optional(),
1077
1436
  agent_id: zod.z.string().optional(),
1437
+ /** Durable parent/child navigation for a subagent thread. */
1438
+ subagentThread: subagentThreadLineageSchema.optional(),
1078
1439
  region: zod.z.string().optional(),
1079
1440
  maxTokens: coerceNumber.optional(),
1080
1441
  additionalModelRequestFields: DocumentType.optional(),
@@ -1230,6 +1591,26 @@ const tModelSpecPresetSchema = tPresetSchema.omit({
1230
1591
  chatGptLabel: true,
1231
1592
  presetOverride: true,
1232
1593
  spec: true
1594
+ }).merge(zod.z.object({
1595
+ /**
1596
+ * Optional here, unlike `tPresetSchema`, where the key is required (though
1597
+ * nullable). A preset naming an `agent_id` has an unambiguous endpoint, so
1598
+ * config may omit it and `resolveModelSpecEndpoint` infers `agents` when
1599
+ * specs are materialized at config load.
1600
+ */
1601
+ endpoint: extendedModelEndpointSchema.nullish() })).superRefine((preset, ctx) => {
1602
+ /**
1603
+ * Omission is only legal when the endpoint is inferable, which requires a
1604
+ * NON-EMPTY `agent_id` — form-backed writers persist untouched fields as
1605
+ * `''`, which names no agent. An explicit `endpoint: null` stays accepted:
1606
+ * it validated before the key became optional, so rejecting it now would
1607
+ * break previously valid configs.
1608
+ */
1609
+ if (preset.endpoint === void 0 && !preset.agent_id) ctx.addIssue({
1610
+ code: zod.z.ZodIssueCode.custom,
1611
+ path: ["endpoint"],
1612
+ message: "endpoint is required unless the preset names a non-empty agent_id (the agents endpoint is then inferred)"
1613
+ });
1233
1614
  });
1234
1615
  const tSharedLinkSchema = zod.z.object({
1235
1616
  conversationId: zod.z.string(),
@@ -1258,6 +1639,7 @@ const googleBaseSchema = tConversationSchema.pick({
1258
1639
  examples: true,
1259
1640
  temperature: true,
1260
1641
  maxOutputTokens: true,
1642
+ resendFiles: true,
1261
1643
  artifacts: true,
1262
1644
  topP: true,
1263
1645
  topK: true,
@@ -1516,15 +1898,39 @@ const requiredSettingFields = [
1516
1898
  "type",
1517
1899
  "component"
1518
1900
  ];
1901
+ function clampSettingRange(value, range) {
1902
+ if (range.positiveMin != null) {
1903
+ /** The minimum carries its own meaning here (Google's -1 for automatic),
1904
+ * and the schema admits it outright, so it survives rather than being
1905
+ * lifted to the floor. It need not be negative to be the sentinel. */
1906
+ if (value === range.min) return range.min;
1907
+ /** Below the sentinel there is nothing admissible to lift to, so the value
1908
+ * resolves to it. Between the sentinel and the floor, the floor is the
1909
+ * nearest value the generated schema accepts. */
1910
+ if (value < Math.max(range.min, 0)) return range.min;
1911
+ return Math.min(Math.max(value, range.positiveMin), range.max);
1912
+ }
1913
+ return Math.min(Math.max(value, range.min), range.max);
1914
+ }
1519
1915
  function generateDynamicSchema(settings) {
1520
1916
  const schemaFields = {};
1521
1917
  for (const setting of settings) {
1522
1918
  const { key, type, default: defaultValue, range, options, minText, maxText, minTags, maxTags } = setting;
1523
1919
  if (type === "number") {
1524
- let schema = zod.z.number();
1920
+ let numberSchema = zod.z.number();
1525
1921
  if (range) {
1526
- schema = schema.min(range.min);
1527
- schema = schema.max(range.max);
1922
+ numberSchema = numberSchema.min(range.min);
1923
+ numberSchema = numberSchema.max(range.max);
1924
+ }
1925
+ /** Widened deliberately: refine returns ZodEffects, not ZodNumber, and
1926
+ * the number-specific chaining is already done above. */
1927
+ let schema = numberSchema;
1928
+ if (range?.positiveMin != null) {
1929
+ /** Mirrors clampSettingRange so the generated schema and the clamp
1930
+ * agree: `min` only admits the sentinel, and any non-negative value
1931
+ * must clear the documented floor. */
1932
+ const { positiveMin, min } = range;
1933
+ schema = numberSchema.refine((value) => value === min || value >= positiveMin, `Expected ${min} or a value of at least ${positiveMin}`);
1528
1934
  }
1529
1935
  if (typeof defaultValue === "number") schemaFields[key] = schema.default(defaultValue);
1530
1936
  else schemaFields[key] = schema;
@@ -1666,7 +2072,14 @@ function validateSettingDefinitions(settings) {
1666
2072
  setting.includeInput = setting.type === "number" ? setting.includeInput ?? true : false;
1667
2073
  }
1668
2074
  if (setting.component === "slider" && setting.type === "number") {
1669
- if (setting.default === void 0 && setting.range) setting.default = Math.round((setting.range.min + setting.range.max) / 2);
2075
+ if (setting.default === void 0 && setting.range) {
2076
+ /** The midpoint of the admissible interval, which a positive floor
2077
+ * narrows: the span between the sentinel and that floor holds no value
2078
+ * the generated schema accepts, so a midpoint taken across it would
2079
+ * fail the validation below. */
2080
+ const floor = Math.max(setting.range.min, setting.range.positiveMin ?? setting.range.min);
2081
+ setting.default = Math.round((floor + setting.range.max) / 2);
2082
+ }
1670
2083
  }
1671
2084
  if (setting.component === "checkbox" || setting.component === "switch") {
1672
2085
  if (setting.options && setting.options.length > 2) errors.push({
@@ -1744,6 +2157,16 @@ function validateSettingDefinitions(settings) {
1744
2157
  message: `Invalid default value for setting ${setting.key}. Must be within the range [${setting.range.min}, ${setting.range.max}].`,
1745
2158
  path: ["default"]
1746
2159
  });
2160
+ if (setting.type === "number" && setting.range?.positiveMin != null && setting.range.positiveMin > setting.range.max) errors.push({
2161
+ code: zod.ZodIssueCode.custom,
2162
+ message: `Invalid range for setting ${setting.key}. positiveMin (${setting.range.positiveMin}) cannot exceed max (${setting.range.max}).`,
2163
+ path: ["range"]
2164
+ });
2165
+ if (setting.type === "number" && setting.range?.positiveMin != null && typeof setting.default === "number" && setting.default !== setting.range.min && setting.default < setting.range.positiveMin) errors.push({
2166
+ code: zod.ZodIssueCode.custom,
2167
+ message: `Invalid default value for setting ${setting.key}. Must be ${setting.range.min} or at least ${setting.range.positiveMin}.`,
2168
+ path: ["default"]
2169
+ });
1747
2170
  if (setting.enumMappings && setting.type === "enum" && setting.options) {
1748
2171
  for (const option of setting.options) if (!(option in setting.enumMappings)) errors.push({
1749
2172
  code: zod.ZodIssueCode.custom,
@@ -1845,13 +2268,83 @@ const generateGoogleSchema = (customGoogle) => {
1845
2268
  //#region src/limits.ts
1846
2269
  /** Maximum number of explicit subagents per parent agent. UI + Zod schema share this. */
1847
2270
  const MAX_SUBAGENTS = 10;
2271
+ /** Hard upper bound for `endpoints.agents.maxSubagents`, keeping the request-validation
2272
+ * cap bounded no matter what the config file says. */
2273
+ const MAX_SUBAGENTS_CEILING = 50;
2274
+ let maxSubagents = 10;
2275
+ /** Effective subagents-per-agent cap; initialized from `endpoints.agents.maxSubagents` at startup. */
2276
+ const getMaxSubagents = () => maxSubagents;
2277
+ /** Applies a configured cap; any missing or out-of-range value resets to the default. */
2278
+ const setMaxSubagents = (value) => {
2279
+ maxSubagents = typeof value === "number" && Number.isInteger(value) && value >= 1 && value <= 50 ? value : 10;
2280
+ };
2281
+ /** Chat project field limits. The dialogs and the persistence layer share these,
2282
+ * so the inputs stop at the same point the server would otherwise truncate. */
2283
+ const MAX_CHAT_PROJECT_NAME_LENGTH = 100;
2284
+ const MAX_CHAT_PROJECT_DESCRIPTION_LENGTH = 1e3;
2285
+ /** Mirrors the bounded graph-child member limit in `@librechat/agents`. */
2286
+ const MAX_GRAPH_SUBAGENT_MEMBERS = 32;
1848
2287
  //#endregion
1849
2288
  //#region src/models.ts
1850
2289
  const modelSpecSubagentsSchema = zod.z.object({
1851
2290
  enabled: zod.z.boolean().optional(),
1852
2291
  allowSelf: zod.z.boolean().optional(),
1853
- agent_ids: zod.z.array(zod.z.string()).max(10).optional()
2292
+ agent_ids: zod.z.array(zod.z.string()).optional()
2293
+ }).superRefine((subagents, ctx) => {
2294
+ const maxSubagents = getMaxSubagents();
2295
+ if ((subagents.agent_ids?.length ?? 0) > maxSubagents) ctx.addIssue({
2296
+ code: zod.z.ZodIssueCode.custom,
2297
+ path: ["agent_ids"],
2298
+ message: `agent_ids must contain at most ${maxSubagents} item(s)`
2299
+ });
1854
2300
  });
2301
+ function resolveModelSpecEndpoint(modelSpec) {
2302
+ const preset = modelSpec?.preset;
2303
+ if (preset?.endpoint != null) return preset.endpoint;
2304
+ /**
2305
+ * An explicit `endpoint: null` is a statement, not an omission — such specs
2306
+ * validated (and were skipped downstream) before inference existed, so
2307
+ * inferring here would silently activate them. Only an absent key infers,
2308
+ * and only from a non-empty `agent_id`: form-backed writers persist
2309
+ * untouched fields as `''`, which names no agent.
2310
+ */
2311
+ if (preset?.endpoint === null) return;
2312
+ return preset?.agent_id ? "agents" : void 0;
2313
+ }
2314
+ /**
2315
+ * Writes each spec's resolved endpoint back onto its preset so every consumer —
2316
+ * endpoint matching, the selector, access filters, startup presets, provider-key
2317
+ * reachability — reads a complete spec instead of re-deriving it. Apply once
2318
+ * where the effective config is assembled (YAML load and DB-override merge);
2319
+ * downstream code then needs no awareness of inference.
2320
+ *
2321
+ * Returns the original object, and the original spec objects, when nothing
2322
+ * needs filling in, so cached configs and memoized consumers see no new
2323
+ * identities.
2324
+ */
2325
+ function materializeModelSpecEndpoints(modelSpecs) {
2326
+ const list = modelSpecs?.list;
2327
+ if (!list?.length) return modelSpecs;
2328
+ let changed = false;
2329
+ const materialized = list.map((spec) => {
2330
+ if (spec?.preset == null || spec.preset.endpoint != null) return spec;
2331
+ const endpoint = resolveModelSpecEndpoint(spec);
2332
+ if (endpoint == null) return spec;
2333
+ changed = true;
2334
+ return {
2335
+ ...spec,
2336
+ preset: {
2337
+ ...spec.preset,
2338
+ endpoint
2339
+ }
2340
+ };
2341
+ });
2342
+ if (!changed) return modelSpecs;
2343
+ return {
2344
+ ...modelSpecs,
2345
+ list: materialized
2346
+ };
2347
+ }
1855
2348
  const tModelSpecSchema = zod.z.object({
1856
2349
  name: zod.z.string(),
1857
2350
  label: zod.z.string(),
@@ -2345,7 +2838,8 @@ const fileConfig = {
2345
2838
  enabled: false,
2346
2839
  maxWidth: 1900,
2347
2840
  maxHeight: 1900,
2348
- quality: .92
2841
+ quality: .92,
2842
+ enforced: false
2349
2843
  },
2350
2844
  ocr: { supportedMimeTypes: defaultOCRMimeTypes },
2351
2845
  text: { supportedMimeTypes: defaultTextMimeTypes },
@@ -2375,8 +2869,8 @@ const fileConfigSchema = zod.z.object({
2375
2869
  }).optional(),
2376
2870
  clientImageResize: zod.z.object({
2377
2871
  enabled: zod.z.boolean().optional(),
2378
- maxWidth: zod.z.number().min(0).optional(),
2379
- maxHeight: zod.z.number().min(0).optional(),
2872
+ maxWidth: zod.z.number().min(1).optional(),
2873
+ maxHeight: zod.z.number().min(1).optional(),
2380
2874
  quality: zod.z.number().min(0).max(1).optional()
2381
2875
  }).optional(),
2382
2876
  ocr: zod.z.object({ supportedMimeTypes: supportedMimeTypesSchema.optional() }).optional(),
@@ -2682,7 +3176,8 @@ function mergeFileConfig(dynamic) {
2682
3176
  };
2683
3177
  if (dynamic.clientImageResize !== void 0) mergedConfig.clientImageResize = {
2684
3178
  ...mergedConfig.clientImageResize,
2685
- ...dynamic.clientImageResize
3179
+ ...dynamic.clientImageResize,
3180
+ enforced: dynamic.clientImageResize.enabled !== void 0
2686
3181
  };
2687
3182
  if (dynamic.ocr !== void 0) {
2688
3183
  const { supportedMimeTypes: ocrMimeTypes, ...ocrRest } = dynamic.ocr;
@@ -2743,9 +3238,14 @@ const buildQuery = (params) => {
2743
3238
  };
2744
3239
  const health = () => `${BASE_URL}/health`;
2745
3240
  const user = () => `${BASE_URL}/api/user`;
3241
+ const userPreferences = () => `${user()}/preferences`;
2746
3242
  const balance = () => `${BASE_URL}/api/balance`;
2747
3243
  const userPlugins = () => `${BASE_URL}/api/user/plugins`;
2748
3244
  const deleteUser$1 = () => `${BASE_URL}/api/user/delete`;
3245
+ const codeEnvironments = () => `${BASE_URL}/api/code-environments`;
3246
+ const codeEnvironmentPairings = () => `${codeEnvironments()}/pairings`;
3247
+ const codeEnvironmentById = (id) => `${codeEnvironments()}/${encodeURIComponent(id)}`;
3248
+ const codeEnvironmentSettings = (id) => `${codeEnvironmentById(id)}/settings`;
2749
3249
  const messagesRoot = `${BASE_URL}/api/messages`;
2750
3250
  const messages = (params) => {
2751
3251
  const { conversationId, messageId, ...rest } = params;
@@ -2786,9 +3286,17 @@ const conversations = (params) => {
2786
3286
  return `${conversationsRoot}${buildQuery(params)}`;
2787
3287
  };
2788
3288
  const conversationById = (id) => `${conversationsRoot}/${id}`;
3289
+ const parentSubagents = (parentConversationId) => `${conversationsRoot}/${encodeURIComponent(parentConversationId)}/subagents`;
3290
+ const subagentThread = (parentConversationId, threadId, taskId, cursor) => {
3291
+ const endpoint = `${conversationsRoot}/${encodeURIComponent(parentConversationId)}/subagents/${encodeURIComponent(threadId)}`;
3292
+ if (taskId != null) return `${endpoint}?taskId=${encodeURIComponent(taskId)}`;
3293
+ return cursor == null ? endpoint : `${endpoint}?cursor=${encodeURIComponent(cursor)}`;
3294
+ };
3295
+ const subagentControl = (parentConversationId, threadId) => `${conversationsRoot}/${encodeURIComponent(parentConversationId)}/subagents/${encodeURIComponent(threadId)}/control`;
2789
3296
  const genTitle$1 = (conversationId) => `${conversationsRoot}/gen_title/${encodeURIComponent(conversationId)}`;
2790
3297
  const updateConversation$1 = () => `${conversationsRoot}/update`;
2791
3298
  const archiveConversation$1 = () => `${conversationsRoot}/archive`;
3299
+ const archiveAllConversations$1 = () => `${conversationsRoot}/archive/all`;
2792
3300
  const pinConversation$1 = () => `${conversationsRoot}/pin`;
2793
3301
  const deleteConversation$1 = () => `${conversationsRoot}`;
2794
3302
  const deleteAllConversation = () => `${conversationsRoot}/all`;
@@ -2873,6 +3381,14 @@ const agents = ({ path = "", options }) => {
2873
3381
  return url;
2874
3382
  };
2875
3383
  const activeJobs = () => `${BASE_URL}/api/agents/chat/active`;
3384
+ const agentQueuedTurnsRoot = `${BASE_URL}/api/agents/chat/queued-turns`;
3385
+ const agentQueuedTurns = () => agentQueuedTurnsRoot;
3386
+ const agentQueuedTurnsByConversation = (conversationId, clientRequestIds = []) => {
3387
+ const uniqueIds = Array.from(new Set(clientRequestIds)).slice(0, 100);
3388
+ const knownIds = uniqueIds.length > 0 ? `&${uniqueIds.map((id) => `clientRequestIds=${encodeURIComponent(id)}`).join("&")}` : "";
3389
+ return `${agentQueuedTurnsRoot}?conversationId=${encodeURIComponent(conversationId)}${knownIds}`;
3390
+ };
3391
+ const agentQueuedTurn = (queuedTurnId) => `${agentQueuedTurnsRoot}/${encodeURIComponent(queuedTurnId)}`;
2876
3392
  const mcp = {
2877
3393
  tools: `${BASE_URL}/api/mcp/tools`,
2878
3394
  servers: `${BASE_URL}/api/mcp/servers`
@@ -2926,6 +3442,9 @@ const deletePrompt$1 = ({ _id, groupId }) => {
2926
3442
  };
2927
3443
  const getCategories$1 = () => `${BASE_URL}/api/categories`;
2928
3444
  const getAllPromptGroups$1 = () => `${prompts()}/all`;
3445
+ const schedules = () => `${BASE_URL}/api/schedules`;
3446
+ const schedule = (id) => `${schedules()}/${encodeURIComponent(id)}`;
3447
+ const runSchedule = (id) => `${schedule(id)}/run`;
2929
3448
  const skills = () => `${BASE_URL}/api/skills`;
2930
3449
  const importSkill$1 = () => `${skills()}/import`;
2931
3450
  const getSkill$1 = (id) => `${skills()}/${encodeURIComponent(id)}`;
@@ -2939,6 +3458,8 @@ const listSkillsWithFilters = (filter) => {
2939
3458
  };
2940
3459
  const skillFiles = (id) => `${getSkill$1(id)}/files`;
2941
3460
  const skillFile = (id, relativePath) => `${skillFiles(id)}/${encodeURIComponent(relativePath)}`;
3461
+ const insights = () => `${BASE_URL}/api/admin/insights`;
3462
+ const insightsAccess = () => `${insights()}/access`;
2942
3463
  const adminSkillsSync = () => `${BASE_URL}/api/admin/skills/sync`;
2943
3464
  const adminSkillsSyncStatus = () => `${adminSkillsSync()}/status`;
2944
3465
  const adminSkillsSyncRun = () => `${adminSkillsSync()}/run`;
@@ -2974,6 +3495,7 @@ const regenerateBackupCodes$1 = () => `${BASE_URL}/api/auth/2fa/backup/regenerat
2974
3495
  const verifyTwoFactorTemp$1 = () => `${BASE_URL}/api/auth/2fa/verify-temp`;
2975
3496
  const memories = () => `${BASE_URL}/api/memories`;
2976
3497
  const memory = (key, agentId) => `${memories()}/${encodeURIComponent(key)}${agentId ? `?agentId=${encodeURIComponent(agentId)}` : ""}`;
3498
+ const memoryById = (id, agentId) => `${memories()}/id/${encodeURIComponent(id)}${agentId ? `?agentId=${encodeURIComponent(agentId)}` : ""}`;
2977
3499
  const memoryPreferences = () => `${memories()}/preferences`;
2978
3500
  const searchPrincipals$1 = (params) => {
2979
3501
  const { q: query, limit, types } = params;
@@ -3151,9 +3673,11 @@ const UserOAuthOptionsSchema = OAuthOptionsBaseSchema.omit({
3151
3673
  const OboOptionsSchema = zod.z.object({
3152
3674
  /** Scopes to request for the downstream MCP server (e.g., "api://<client-id>/Mcp.Tools.ReadWrite") */
3153
3675
  scopes: zod.z.string().min(1) });
3676
+ const MCP_SERVER_TITLE_PATTERN = /* @__PURE__ */ new RegExp("^[\\p{L}\\p{N}][\\p{L}\\p{N}\\p{M}'’ -]*$", "u");
3677
+ const MCP_SERVER_TITLE_ERROR = "Title must start with a letter or number and can include spaces, hyphens, and apostrophes";
3154
3678
  const BaseOptionsSchema = zod.z.object({
3155
- /** Display name for the MCP server - only letters, numbers, and spaces allowed */
3156
- title: zod.z.string().regex(/^[a-zA-Z0-9 ]+$/, "Title can only contain letters, numbers, and spaces").optional(),
3679
+ /** Display name for the MCP server */
3680
+ title: zod.z.string().regex(MCP_SERVER_TITLE_PATTERN, MCP_SERVER_TITLE_ERROR).optional(),
3157
3681
  /** Description of the MCP server */
3158
3682
  description: zod.z.string().optional(),
3159
3683
  /**
@@ -3168,7 +3692,14 @@ const BaseOptionsSchema = zod.z.object({
3168
3692
  /** Timeout (ms) for the long-lived SSE GET stream body before undici aborts it. Default: 300_000 (5 min). */
3169
3693
  sseReadTimeout: zod.z.number().int().positive().optional(),
3170
3694
  initTimeout: zod.z.number().int().nonnegative().optional(),
3171
- /** Controls visibility in chat dropdown menu (MCPSelect) */
3695
+ /**
3696
+ * Whether the server is offered in chat.
3697
+ *
3698
+ * `false` hides it from the chat dropdown (MCPSelect) AND bars it from the
3699
+ * chat selection a request carries, so a stale or hand-written request cannot
3700
+ * reach it either. It does not restrict agents, nor a server a model spec
3701
+ * pins through `mcpServers` — both are the operator's own choice.
3702
+ */
3172
3703
  chatMenu: zod.z.boolean().optional(),
3173
3704
  /**
3174
3705
  * Controls server instruction behavior:
@@ -3224,6 +3755,26 @@ const ProxyUrlSchema = zod.z.string().transform((val) => extractEnvVariable(val)
3224
3755
  const protocol = new URL(val).protocol;
3225
3756
  return protocol === "http:" || protocol === "https:" || protocol === "socks:" || protocol === "socks5:";
3226
3757
  }, { message: "Proxy URL must use http://, https://, socks://, or socks5://" });
3758
+ const PROCESS_MCP_SERVER_FIELDS = new Set([
3759
+ "command",
3760
+ "args",
3761
+ "env",
3762
+ "cwd",
3763
+ "stderr"
3764
+ ]);
3765
+ function isProcessMCPServerField(field) {
3766
+ return PROCESS_MCP_SERVER_FIELDS.has(field);
3767
+ }
3768
+ function isProcessMCPServerConfig(value) {
3769
+ if (value == null || typeof value !== "object" || Array.isArray(value)) return false;
3770
+ const config = value;
3771
+ if (config.type === "stdio") return true;
3772
+ return Object.keys(config).some(isProcessMCPServerField);
3773
+ }
3774
+ function hasProcessMCPServerConfig(value) {
3775
+ if (value == null || typeof value !== "object" || Array.isArray(value)) return false;
3776
+ return Object.values(value).some(isProcessMCPServerConfig);
3777
+ }
3227
3778
  const StdioOptionsSchema = BaseOptionsSchema.extend({
3228
3779
  type: zod.z.literal("stdio").default("stdio"),
3229
3780
  obo: zod.z.undefined().optional(),
@@ -3396,7 +3947,7 @@ const defaultSocialLogins = [
3396
3947
  "discord",
3397
3948
  "saml"
3398
3949
  ];
3399
- const BASE_ONLY_CONFIG_SECTIONS = [];
3950
+ const BASE_ONLY_CONFIG_SECTIONS = ["filters"];
3400
3951
  /** Sections that may be stored in the tenant's base config document but must
3401
3952
  * not be overridden or tombstoned by role, group, or user config documents. */
3402
3953
  const BASE_PRINCIPAL_CONFIG_SECTIONS = ["langfuse"];
@@ -3424,6 +3975,12 @@ const defaultRetrievalModels = [
3424
3975
  ];
3425
3976
  const excludedKeys = new Set([
3426
3977
  "conversationId",
3978
+ "agentEventBinding",
3979
+ "agentEventActor",
3980
+ "agentEventActorReconciliations",
3981
+ "agentEventActorEpoch",
3982
+ "agentEventActorLegacyTurn",
3983
+ "subagentThread",
3427
3984
  "title",
3428
3985
  "iconURL",
3429
3986
  "greeting",
@@ -3435,6 +3992,8 @@ const excludedKeys = new Set([
3435
3992
  "isTemporary",
3436
3993
  "messages",
3437
3994
  "isArchived",
3995
+ "pinned",
3996
+ "archivedAt",
3438
3997
  "tags",
3439
3998
  "user",
3440
3999
  "__v",
@@ -3824,6 +4383,22 @@ const baseEndpointSchema = zod.z.object({
3824
4383
  activityPhasePrompt: zod.z.string().optional(),
3825
4384
  /** Cost cap: maximum phase summaries generated per run. Default 5. */
3826
4385
  activityPhaseMaxPerRun: zod.z.number().int().positive().optional(),
4386
+ /** Generates a live orientation label for sufficiently long top-level response reasoning. */
4387
+ reasoningLabel: zod.z.boolean().optional(),
4388
+ /** Model used for reasoning labels. Defaults to activityModel, titleModel, then run model. */
4389
+ reasoningLabelModel: zod.z.string().optional(),
4390
+ /** Endpoint receiving the bounded visible-reasoning snapshot. Defaults to activityEndpoint. */
4391
+ reasoningLabelEndpoint: zod.z.string().optional(),
4392
+ /** Overrides the dedicated reasoning-label system prompt. */
4393
+ reasoningLabelPrompt: zod.z.string().optional(),
4394
+ /** Characters required before the first reasoning label. Default 500. */
4395
+ reasoningLabelMinChars: zod.z.number().int().positive().optional(),
4396
+ /** New characters required between streaming revisions. Default 400. */
4397
+ reasoningLabelUpdateChars: zod.z.number().int().positive().optional(),
4398
+ /** Minimum milliseconds between streaming revisions. Default 3000. */
4399
+ reasoningLabelUpdateIntervalMs: zod.z.number().int().nonnegative().optional(),
4400
+ /** Cost cap: maximum reasoning-label provider calls attempted per run. Default 8. */
4401
+ reasoningLabelMaxPerRun: zod.z.number().int().positive().optional(),
3827
4402
  /** Maximum characters allowed in a single tool result before truncation. */
3828
4403
  maxToolResultChars: zod.z.number().positive().optional()
3829
4404
  });
@@ -3955,7 +4530,7 @@ const toolApprovalModeSchema = zod.z.enum([
3955
4530
  *
3956
4531
  * Shape mirrors `@librechat/agents`'s `ToolPolicyConfig` so the host can map it
3957
4532
  * directly into `createToolPolicyHook(config)`. The SDK does the evaluation
3958
- * (`deny → bypass → allow → ask → dontAsk → fallthrough(ask)`); this config
4533
+ * (`deny → ask → allow → bypass → dontAsk → fallthrough(ask)`); this config
3959
4534
  * just describes the surface.
3960
4535
  *
3961
4536
  * Conventions:
@@ -4038,6 +4613,52 @@ const checkpointerSchema = zod.z.object({
4038
4613
  checkpointCollectionName: zod.z.string().optional(),
4039
4614
  checkpointWritesCollectionName: zod.z.string().optional()
4040
4615
  }).optional();
4616
+ const codeEnvironmentBaseURLSchema = zod.z.string().trim().url().refine((value) => {
4617
+ try {
4618
+ const url = new URL(value);
4619
+ return (url.protocol === "http:" || url.protocol === "https:") && !value.includes("?") && !value.includes("#") && url.search.length === 0 && url.hash.length === 0;
4620
+ } catch {
4621
+ return false;
4622
+ }
4623
+ }, { message: "Code environment baseURL must be an HTTP(S) base URL without query or fragment" });
4624
+ function isSecureCodeEnvironmentControlURL(baseURL) {
4625
+ try {
4626
+ const url = new URL(baseURL.trim());
4627
+ if (url.protocol === "https:") return true;
4628
+ if (url.protocol !== "http:") return false;
4629
+ return url.hostname === "localhost" || url.hostname === "127.0.0.1" || url.hostname === "[::1]";
4630
+ } catch {
4631
+ return false;
4632
+ }
4633
+ }
4634
+ const codeEnvironmentPermissionDecisionSchema = zod.z.enum([
4635
+ "allow",
4636
+ "ask",
4637
+ "deny"
4638
+ ]);
4639
+ const codeEnvironmentPermissionFieldSchema = zod.z.object({
4640
+ allowed: zod.z.array(codeEnvironmentPermissionDecisionSchema).min(1),
4641
+ default: codeEnvironmentPermissionDecisionSchema.optional().default("ask")
4642
+ }).strict().superRefine((field, context) => {
4643
+ if (!field.allowed.includes(field.default)) context.addIssue({
4644
+ code: zod.z.ZodIssueCode.custom,
4645
+ path: ["default"],
4646
+ message: "Permission default must be included in allowed values"
4647
+ });
4648
+ });
4649
+ /**
4650
+ * Typed user-tunable surface for one attached code environment. Omitted fields
4651
+ * remain fixed at LibreChat's safe baseline. Isolation, networking, mounts,
4652
+ * privileged execution, and secrets are deliberately not representable here.
4653
+ */
4654
+ const codeEnvironmentUserConfigSchema = zod.z.object({ permissions: zod.z.object({
4655
+ fileWrite: codeEnvironmentPermissionFieldSchema.optional(),
4656
+ commandExecution: codeEnvironmentPermissionFieldSchema.optional()
4657
+ }).strict().optional() }).strict();
4658
+ const codeEnvironmentUserSettingsSchema = zod.z.object({ permissions: zod.z.object({
4659
+ fileWrite: codeEnvironmentPermissionDecisionSchema.optional(),
4660
+ commandExecution: codeEnvironmentPermissionDecisionSchema.optional()
4661
+ }).strict().optional() }).strict();
4041
4662
  const agentsEndpointSchema = baseEndpointSchema.omit({ baseURL: true }).merge(zod.z.object({
4042
4663
  recursionLimit: zod.z.number().optional(),
4043
4664
  disableBuilder: zod.z.boolean().optional().default(false),
@@ -4054,8 +4675,123 @@ const agentsEndpointSchema = baseEndpointSchema.omit({ baseURL: true }).merge(zo
4054
4675
  maxCitations: zod.z.number().min(1).max(50).optional().default(30),
4055
4676
  maxCitationsPerFile: zod.z.number().min(1).max(10).optional().default(7),
4056
4677
  minRelevanceScore: zod.z.number().min(0).max(1).optional().default(.45),
4678
+ /** Maximum explicit subagents per agent (`agent_ids` and `graphs`); raised from
4679
+ * the shipped default of 10 for orchestration-heavy deployments, bounded by
4680
+ * `MAX_SUBAGENTS_CEILING`. */
4681
+ maxSubagents: zod.z.number().int().min(1).max(50).optional().default(10),
4057
4682
  allowedProviders: zod.z.array(zod.z.union([zod.z.string(), eModelEndpointSchema])).optional(),
4058
4683
  capabilities: zod.z.array(zod.z.nativeEnum(AgentCapabilities)).optional().default(defaultAgentCapabilities),
4684
+ /** Controls which workspace-sharing scopes users may select for stateful code sessions.
4685
+ * Omit this block to preserve the legacy behavior of allowing every scope. */
4686
+ statefulCodeSessions: zod.z.object({
4687
+ allowedEnvironments: zod.z.array(zod.z.enum(STATEFUL_CODE_ENVIRONMENTS)).min(1),
4688
+ /** Operator-managed execution environments. Attached entries route to a
4689
+ * Code API deployment backed by an outbound librechat-code worker. */
4690
+ environments: zod.z.array(zod.z.object({
4691
+ id: zod.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
4692
+ name: zod.z.string().min(1).max(100),
4693
+ type: zod.z.enum(["managed", "attached"]),
4694
+ baseURL: codeEnvironmentBaseURLSchema,
4695
+ default: zod.z.boolean().optional(),
4696
+ /** Server-only outbound worker route. Removed from public config. */
4697
+ workerId: zod.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/).optional(),
4698
+ /** Distinguishes operator policy from a principal-authorized
4699
+ * environment merged into request-scoped server config. */
4700
+ owner: zod.z.enum(["deployment", "principal"]).optional().default("deployment"),
4701
+ /** Administrator-controlled user-tunable settings. Only fields
4702
+ * represented here may be changed by a principal. */
4703
+ configSchema: codeEnvironmentUserConfigSchema.optional(),
4704
+ /** Request-scoped effective settings for a principal-owned environment.
4705
+ * Deployment config should define defaults through configSchema instead. */
4706
+ settings: codeEnvironmentUserSettingsSchema.optional(),
4707
+ /** Server-only enrollment metadata. `tokenEnv` names an
4708
+ * environment variable and never contains the token itself. */
4709
+ pairing: zod.z.object({
4710
+ workerId: zod.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/).optional(),
4711
+ allowPrincipalWorkers: zod.z.boolean().optional().default(false),
4712
+ tokenEnv: zod.z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/)
4713
+ }).superRefine((pairing, pairingContext) => {
4714
+ if (pairing.workerId != null || pairing.allowPrincipalWorkers === true) return;
4715
+ pairingContext.addIssue({
4716
+ code: zod.z.ZodIssueCode.custom,
4717
+ message: "Pairing requires a workerId or principal workers"
4718
+ });
4719
+ }).optional()
4720
+ })).optional()
4721
+ }).superRefine((value, context) => {
4722
+ if (!value?.environments) return;
4723
+ const ids = /* @__PURE__ */ new Set();
4724
+ let defaults = 0;
4725
+ let executableEnvironments = 0;
4726
+ for (const environment of value.environments) {
4727
+ const pairingOnly = environment.pairing?.allowPrincipalWorkers === true && environment.pairing.workerId == null && environment.workerId == null;
4728
+ if (environment.pairing != null && environment.type !== "attached") context.addIssue({
4729
+ code: zod.z.ZodIssueCode.custom,
4730
+ message: "Only attached code environments may configure pairing",
4731
+ path: [
4732
+ "environments",
4733
+ environment.id,
4734
+ "pairing"
4735
+ ]
4736
+ });
4737
+ if (environment.pairing != null && environment.owner !== "deployment") context.addIssue({
4738
+ code: zod.z.ZodIssueCode.custom,
4739
+ message: "Only deployment-owned code environments may configure pairing",
4740
+ path: [
4741
+ "environments",
4742
+ environment.id,
4743
+ "pairing"
4744
+ ]
4745
+ });
4746
+ if (environment.pairing != null && !isSecureCodeEnvironmentControlURL(environment.baseURL)) context.addIssue({
4747
+ code: zod.z.ZodIssueCode.custom,
4748
+ message: "Paired code environments require HTTPS outside loopback development",
4749
+ path: [
4750
+ "environments",
4751
+ environment.id,
4752
+ "baseURL"
4753
+ ]
4754
+ });
4755
+ if (environment.workerId != null && environment.pairing?.workerId != null && environment.workerId !== environment.pairing.workerId) context.addIssue({
4756
+ code: zod.z.ZodIssueCode.custom,
4757
+ message: "Code environment workerId must match pairing.workerId",
4758
+ path: [
4759
+ "environments",
4760
+ environment.id,
4761
+ "workerId"
4762
+ ]
4763
+ });
4764
+ if (pairingOnly && environment.default === true) context.addIssue({
4765
+ code: zod.z.ZodIssueCode.custom,
4766
+ message: "Pairing-only code control planes cannot be execution defaults",
4767
+ path: [
4768
+ "environments",
4769
+ environment.id,
4770
+ "default"
4771
+ ]
4772
+ });
4773
+ if (ids.has(environment.id)) context.addIssue({
4774
+ code: zod.z.ZodIssueCode.custom,
4775
+ message: `Duplicate code environment id: ${environment.id}`,
4776
+ path: ["environments"]
4777
+ });
4778
+ ids.add(environment.id);
4779
+ if (!pairingOnly) {
4780
+ executableEnvironments += 1;
4781
+ if (environment.default === true) defaults += 1;
4782
+ }
4783
+ }
4784
+ if (executableEnvironments > 0 && defaults !== 1) context.addIssue({
4785
+ code: zod.z.ZodIssueCode.custom,
4786
+ message: "Exactly one stateful code environment must be the default",
4787
+ path: ["environments"]
4788
+ });
4789
+ }).optional(),
4790
+ /** Optional trusted origin for in-process agent event delivery. */
4791
+ eventDriven: zod.z.object({ selfUrl: zod.z.string().url().optional() }).optional(),
4792
+ /** Conversational background-task delivery policy. Automatic completion wakeups are
4793
+ * enabled unless an administrator explicitly restores poll-only behavior. */
4794
+ backgroundTasks: zod.z.object({ completionWakeups: zod.z.boolean().optional().default(true) }).optional(),
4059
4795
  skills: zod.z.object({ maxCatalogSkills: zod.z.number().int().min(1).max(100).optional() }).optional(),
4060
4796
  remoteApi: remoteApiSchema.optional(),
4061
4797
  /** Human-in-the-loop tool approval policy. Off by default. */
@@ -4068,7 +4804,8 @@ const agentsEndpointSchema = baseEndpointSchema.omit({ baseURL: true }).merge(zo
4068
4804
  capabilities: defaultAgentCapabilities,
4069
4805
  maxCitations: 30,
4070
4806
  maxCitationsPerFile: 7,
4071
- minRelevanceScore: .45
4807
+ minRelevanceScore: .45,
4808
+ maxSubagents: 10
4072
4809
  });
4073
4810
  const paramDefinitionSchema = zod.z.object({
4074
4811
  key: zod.z.string(),
@@ -4086,7 +4823,11 @@ const paramDefinitionSchema = zod.z.object({
4086
4823
  range: zod.z.object({
4087
4824
  min: zod.z.number(),
4088
4825
  max: zod.z.number(),
4089
- step: zod.z.number().optional()
4826
+ step: zod.z.number().optional(),
4827
+ positiveMin: zod.z.number().optional()
4828
+ }).refine((value) => value.positiveMin == null || value.positiveMin <= value.max, {
4829
+ message: "range.positiveMin cannot exceed range.max",
4830
+ path: ["positiveMin"]
4090
4831
  }).optional(),
4091
4832
  enumMappings: zod.z.record(zod.z.union([
4092
4833
  zod.z.number(),
@@ -4197,7 +4938,15 @@ const azureEndpointSchema = zod.z.object({
4197
4938
  activityPhaseModel: true,
4198
4939
  activityPhaseEndpoint: true,
4199
4940
  activityPhasePrompt: true,
4200
- activityPhaseMaxPerRun: true
4941
+ activityPhaseMaxPerRun: true,
4942
+ reasoningLabel: true,
4943
+ reasoningLabelModel: true,
4944
+ reasoningLabelEndpoint: true,
4945
+ reasoningLabelPrompt: true,
4946
+ reasoningLabelMinChars: true,
4947
+ reasoningLabelUpdateChars: true,
4948
+ reasoningLabelUpdateIntervalMs: true,
4949
+ reasoningLabelMaxPerRun: true
4201
4950
  }).partial()
4202
4951
  );
4203
4952
  /**
@@ -4342,6 +5091,10 @@ let RateLimitPrefix = /* @__PURE__ */ function(RateLimitPrefix) {
4342
5091
  return RateLimitPrefix;
4343
5092
  }({});
4344
5093
  const rateLimitSchema = zod.z.object({
5094
+ agentEvents: zod.z.object({
5095
+ userMax: zod.z.number().int().positive().optional(),
5096
+ userWindowInMinutes: zod.z.number().positive().optional()
5097
+ }).optional(),
4345
5098
  fileUploads: zod.z.object({
4346
5099
  ipMax: zod.z.number().optional(),
4347
5100
  ipWindowInMinutes: zod.z.number().optional(),
@@ -4433,6 +5186,7 @@ const interfaceSchema = zod.z.object({
4433
5186
  webSearch: zod.z.boolean().optional(),
4434
5187
  contextUsage: zod.z.boolean().optional(),
4435
5188
  contextCost: zod.z.boolean().optional(),
5189
+ feedback: zod.z.boolean().optional(),
4436
5190
  currency: zod.z.object({
4437
5191
  code: zod.z.string(),
4438
5192
  rate: zod.z.number().positive()
@@ -4466,6 +5220,23 @@ const interfaceSchema = zod.z.object({
4466
5220
  share: zod.z.boolean().optional(),
4467
5221
  public: zod.z.boolean().optional(),
4468
5222
  snapshotFiles: zod.z.boolean().optional()
5223
+ })]).optional(),
5224
+ schedules: zod.z.union([zod.z.boolean(), zod.z.object({
5225
+ use: zod.z.boolean().optional(),
5226
+ create: zod.z.boolean().optional(),
5227
+ maxPerUser: zod.z.number().int().min(0).optional(),
5228
+ minIntervalMinutes: zod.z.number().int().min(1).optional(),
5229
+ autoDisableAfterFailures: zod.z.number().int().min(1).optional(),
5230
+ fireConcurrency: zod.z.number().int().min(1).optional(),
5231
+ /** Refuse schedules that are not filed under a chat project. Enforced on
5232
+ * create/update AND at every fire, so raising it later stops schedules
5233
+ * that predate the policy instead of grandfathering them. */
5234
+ requireProject: zod.z.boolean().optional(),
5235
+ /** Pins every scheduled run to ONE chat project, ignoring any client
5236
+ * choice. Implies `requireProject`. The project must belong to the
5237
+ * schedule's owner, so a deployment-wide value only makes sense with a
5238
+ * per-user/per-role config override. */
5239
+ projectId: zod.z.string().trim().min(1).optional()
4469
5240
  })]).optional()
4470
5241
  }).default({
4471
5242
  modelSelect: true,
@@ -4492,6 +5263,7 @@ const interfaceSchema = zod.z.object({
4492
5263
  webSearch: true,
4493
5264
  contextUsage: true,
4494
5265
  contextCost: false,
5266
+ feedback: true,
4495
5267
  peoplePicker: {
4496
5268
  users: true,
4497
5269
  groups: true,
@@ -4561,12 +5333,14 @@ let SearchProviders = /* @__PURE__ */ function(SearchProviders) {
4561
5333
  SearchProviders["SERPER"] = "serper";
4562
5334
  SearchProviders["SEARXNG"] = "searxng";
4563
5335
  SearchProviders["TAVILY"] = "tavily";
5336
+ SearchProviders["KEENABLE"] = "keenable";
4564
5337
  return SearchProviders;
4565
5338
  }({});
4566
5339
  let ScraperProviders = /* @__PURE__ */ function(ScraperProviders) {
4567
5340
  ScraperProviders["FIRECRAWL"] = "firecrawl";
4568
5341
  ScraperProviders["SERPER"] = "serper";
4569
5342
  ScraperProviders["TAVILY"] = "tavily";
5343
+ ScraperProviders["KEENABLE"] = "keenable";
4570
5344
  return ScraperProviders;
4571
5345
  }({});
4572
5346
  let RerankerTypes = /* @__PURE__ */ function(RerankerTypes) {
@@ -4581,6 +5355,17 @@ let SafeSearchTypes = /* @__PURE__ */ function(SafeSearchTypes) {
4581
5355
  SafeSearchTypes[SafeSearchTypes["STRICT"] = 2] = "STRICT";
4582
5356
  return SafeSearchTypes;
4583
5357
  }({});
5358
+ /**
5359
+ * Normalizes a SearXNG engine list into the comma-separated form the API expects.
5360
+ * Accepts the YAML list or comma-separated string an operator may write, and is
5361
+ * applied both at the schema boundary and when loading the runtime config, since
5362
+ * `loadCustomConfig` returns the raw YAML object rather than the parsed result.
5363
+ */
5364
+ function normalizeSearxngEngines(engines) {
5365
+ if (engines == null) return;
5366
+ const normalized = (Array.isArray(engines) ? engines : engines.split(",")).map((engine) => engine.trim()).filter(Boolean);
5367
+ return normalized.length ? normalized.join(",") : void 0;
5368
+ }
4584
5369
  const webSearchSchema = zod.z.object({
4585
5370
  allowedAddresses: allowedAddressesSchema,
4586
5371
  serperApiKey: zod.z.string().optional().default("${SERPER_API_KEY}"),
@@ -4596,6 +5381,8 @@ const webSearchSchema = zod.z.object({
4596
5381
  tavilyApiKeyPreview: apiKeyPreviewSchema,
4597
5382
  tavilySearchUrl: zod.z.string().optional().default("${TAVILY_SEARCH_URL}"),
4598
5383
  tavilyExtractUrl: zod.z.string().optional().default("${TAVILY_EXTRACT_URL}"),
5384
+ keenableApiKey: zod.z.string().optional().default("${KEENABLE_API_KEY}"),
5385
+ keenableApiUrl: zod.z.string().optional().default("${KEENABLE_API_URL}"),
4599
5386
  jinaApiKey: zod.z.string().optional().default("${JINA_API_KEY}"),
4600
5387
  jinaApiKeyPreview: apiKeyPreviewSchema,
4601
5388
  jinaApiUrl: zod.z.string().optional().default("${JINA_API_URL}"),
@@ -4633,6 +5420,16 @@ const webSearchSchema = zod.z.object({
4633
5420
  tag: zod.z.string().nullable().optional()
4634
5421
  }).optional()
4635
5422
  }).optional(),
5423
+ searxngSearchOptions: zod.z.object({
5424
+ engines: zod.z.union([zod.z.string(), zod.z.array(zod.z.string())]).transform(normalizeSearxngEngines).optional(),
5425
+ language: zod.z.string().optional(),
5426
+ timeRange: zod.z.enum([
5427
+ "day",
5428
+ "month",
5429
+ "year"
5430
+ ]).optional(),
5431
+ timeout: zod.z.number().int().positive().max(12e4).optional()
5432
+ }).optional(),
4636
5433
  tavilySearchOptions: zod.z.object({
4637
5434
  searchDepth: zod.z.enum([
4638
5435
  "basic",
@@ -4673,6 +5470,16 @@ const webSearchSchema = zod.z.object({
4673
5470
  includeFavicon: zod.z.boolean().optional(),
4674
5471
  format: zod.z.enum(["markdown", "text"]).optional(),
4675
5472
  timeout: zod.z.number().int().nonnegative().max(12e4).optional()
5473
+ }).optional(),
5474
+ keenableSearchOptions: zod.z.object({
5475
+ maxResults: zod.z.number().int().min(1).max(20).optional(),
5476
+ site: zod.z.string().optional(),
5477
+ attributionTitle: zod.z.string().optional(),
5478
+ timeout: zod.z.number().int().nonnegative().max(12e4).optional()
5479
+ }).optional(),
5480
+ keenableScraperOptions: zod.z.object({
5481
+ attributionTitle: zod.z.string().optional(),
5482
+ timeout: zod.z.number().int().nonnegative().max(12e4).optional()
4676
5483
  }).optional()
4677
5484
  });
4678
5485
  const ocrSchema = zod.z.object({
@@ -4760,13 +5567,6 @@ const summarizationConfigSchema = zod.z.object({
4760
5567
  retainRecent: retainRecentConfigSchema.optional()
4761
5568
  });
4762
5569
  const customEndpointsSchema = zod.z.array(endpointSchema.partial()).optional();
4763
- /**
4764
- * Validates a messageFilter PII regex at config load. Defaults to native RegExp so browser
4765
- * builds add no extra engine; the server injects a check backed by the linear-time runtime
4766
- * engine (RE2) via setMessageFilterRegexValidator, so a pattern the runtime cannot compile
4767
- * (backreferences, lookaround, control escapes, and so on) is rejected at load rather than
4768
- * silently dropped at request time.
4769
- */
4770
5570
  let messageFilterRegexValidator = (value) => {
4771
5571
  try {
4772
5572
  new RegExp(value, "g");
@@ -4779,13 +5579,45 @@ const setMessageFilterRegexValidator = (validate) => {
4779
5579
  messageFilterRegexValidator = validate;
4780
5580
  };
4781
5581
  const messageFilterPiiCustomPatternSchema = zod.z.object({
4782
- id: zod.z.string().min(1),
4783
- label: zod.z.string().min(1),
4784
- regex: zod.z.string().min(1).refine((value) => messageFilterRegexValidator(value), { message: "Unsupported regex: not compatible with the RE2 engine (no backreferences, lookaround, or control escapes)" })
5582
+ id: zod.z.string().min(1).max(256),
5583
+ label: zod.z.string().min(1).max(512),
5584
+ regex: zod.z.string().min(1).max(512)
4785
5585
  });
4786
5586
  const messageFilterPiiSchema = zod.z.object({
4787
- starterPatterns: zod.z.array(zod.z.string()).optional(),
4788
- customPatterns: zod.z.array(messageFilterPiiCustomPatternSchema).optional()
5587
+ starterPatterns: zod.z.array(zod.z.string().max(256)).max(256).optional(),
5588
+ customPatterns: zod.z.array(messageFilterPiiCustomPatternSchema).max(256).optional()
5589
+ }).superRefine((pii, context) => {
5590
+ let regexCharacters = 0;
5591
+ let regexInstructions = 0;
5592
+ for (let index = 0; index < (pii.customPatterns?.length ?? 0); index++) {
5593
+ const pattern = pii.customPatterns?.[index];
5594
+ if (pattern == null) continue;
5595
+ regexCharacters += pattern.regex.length;
5596
+ const result = messageFilterRegexValidator(pattern.regex);
5597
+ if (!(typeof result === "boolean" ? result : result.supported)) {
5598
+ context.addIssue({
5599
+ code: zod.z.ZodIssueCode.custom,
5600
+ path: [
5601
+ "customPatterns",
5602
+ index,
5603
+ "regex"
5604
+ ],
5605
+ message: "Unsupported regex: not compatible with the RE2 engine (no backreferences, lookaround, or control escapes)"
5606
+ });
5607
+ continue;
5608
+ }
5609
+ if (typeof result !== "boolean" && result.programSize != null) regexInstructions += result.programSize;
5610
+ }
5611
+ if (regexCharacters > 8192) context.addIssue({
5612
+ code: zod.z.ZodIssueCode.custom,
5613
+ path: ["customPatterns"],
5614
+ message: `Custom PII regexes may contain at most ${MAX_PII_CUSTOM_REGEX_CHARACTERS} characters in total`
5615
+ });
5616
+ if (regexInstructions > 8192) context.addIssue({
5617
+ code: zod.z.ZodIssueCode.custom,
5618
+ path: ["customPatterns"],
5619
+ message: `Custom PII regexes may compile to at most ${MAX_PII_CUSTOM_REGEX_INSTRUCTIONS} instructions in total`
5620
+ });
4789
5621
  });
4790
5622
  const messageFilterSchema = zod.z.object({ pii: messageFilterPiiSchema.optional() });
4791
5623
  const langfuseConfigSchema = zod.z.object({
@@ -4798,7 +5630,28 @@ const langfuseConfigSchema = zod.z.object({
4798
5630
  * admin reads can show which secret key is configured without returning the secret. */
4799
5631
  secretKeyPreview: zod.z.string().optional(),
4800
5632
  /** Routing key for one of the deployment-configured tenant Langfuse destinations. */
4801
- destination: zod.z.string().optional()
5633
+ destination: zod.z.string().optional(),
5634
+ /**
5635
+ * Custom request headers sent on every outbound Langfuse request — trace and
5636
+ * media export, feedback scores, and credential verification — for
5637
+ * self-hosted instances behind an authenticating proxy or gateway. Values
5638
+ * support `${ENV_VAR}` interpolation.
5639
+ *
5640
+ * Deployment-level only. Trace export batches spans from every user through
5641
+ * one exporter, so unlike endpoint headers these cannot carry per-user
5642
+ * placeholders. Headers referencing an unset variable, naming an
5643
+ * infrastructure secret, or carrying an invalid HTTP field name are dropped
5644
+ * with a warning rather than sent.
5645
+ *
5646
+ * Sent only when the deployment configures exactly one Langfuse origin, and
5647
+ * only to that origin. The map cannot say which endpoint it authenticates
5648
+ * to, so with several configured origins any choice of recipient would risk
5649
+ * disclosing a gateway credential to the others; a warning is logged instead.
5650
+ * Multi-destination deployments need per-destination headers, which this
5651
+ * schema does not yet express — and note the fanout collector forwards only
5652
+ * `Authorization` upstream regardless.
5653
+ */
5654
+ headers: zod.z.record(zod.z.string()).optional()
4802
5655
  });
4803
5656
  const configSchema = zod.z.object({
4804
5657
  version: zod.z.string(),
@@ -4841,6 +5694,7 @@ const configSchema = zod.z.object({
4841
5694
  rateLimits: rateLimitSchema.optional(),
4842
5695
  fileConfig: fileConfigSchema.optional(),
4843
5696
  modelSpecs: specsConfigSchema.optional(),
5697
+ filters: filtersConfigSchema.optional(),
4844
5698
  messageFilter: messageFilterSchema.optional(),
4845
5699
  endpoints: zod.z.object({
4846
5700
  allowedAddresses: allowedAddressesSchema,
@@ -4946,6 +5800,7 @@ const sharedOpenAIModels = [
4946
5800
  "gpt-4o"
4947
5801
  ];
4948
5802
  const sharedAnthropicModels = [
5803
+ "claude-fable-5-1",
4949
5804
  "claude-fable-5",
4950
5805
  "claude-opus-5",
4951
5806
  "claude-opus-4-8",
@@ -4980,6 +5835,7 @@ const sharedAnthropicModels = [
4980
5835
  * availability); Opus 4.1 has no global profile, so it uses `us.`.
4981
5836
  */
4982
5837
  const bedrockModels = [
5838
+ "global.anthropic.claude-fable-5-1",
4983
5839
  "global.anthropic.claude-fable-5",
4984
5840
  "global.anthropic.claude-opus-5",
4985
5841
  "global.anthropic.claude-opus-4-8",
@@ -5014,6 +5870,7 @@ const defaultModels = {
5014
5870
  ["assistants"]: [...sharedOpenAIModels, "chatgpt-4o-latest"],
5015
5871
  ["agents"]: sharedOpenAIModels,
5016
5872
  ["google"]: [
5873
+ "gemini-3.8-flash",
5017
5874
  "gemini-3.7-flash",
5018
5875
  "gemini-3.6-flash",
5019
5876
  "gemini-3.5-flash",
@@ -5181,6 +6038,10 @@ let CacheKeys = /* @__PURE__ */ function(CacheKeys) {
5181
6038
  */
5182
6039
  CacheKeys["USER_PRINCIPALS"] = "USER_PRINCIPALS";
5183
6040
  /**
6041
+ * Key for cached prompt group access ID sets (accessible, public, owned).
6042
+ */
6043
+ CacheKeys["PROMPT_GROUPS_ACCESS"] = "PROMPT_GROUPS_ACCESS";
6044
+ /**
5184
6045
  * Key for per-conversation stateful code sandbox prewarm/warm state.
5185
6046
  */
5186
6047
  CacheKeys["SANDBOX_PREWARM"] = "SANDBOX_PREWARM";
@@ -5403,6 +6264,10 @@ let ErrorTypes = /* @__PURE__ */ function(ErrorTypes) {
5403
6264
  */
5404
6265
  ErrorTypes["RESOURCE_RECOVERY_REQUIRED"] = "resource_recovery_required";
5405
6266
  /**
6267
+ * Agent selected a stateful Code API workspace scope disabled by the deployment.
6268
+ */
6269
+ ErrorTypes["STATEFUL_CODE_ENVIRONMENT_NOT_ALLOWED"] = "stateful_code_environment_not_allowed";
6270
+ /**
5406
6271
  * Invalid Agent Provider (excluded by Admin)
5407
6272
  */
5408
6273
  ErrorTypes["INVALID_AGENT_PROVIDER"] = "invalid_agent_provider";
@@ -5423,6 +6288,14 @@ let ErrorTypes = /* @__PURE__ */ function(ErrorTypes) {
5423
6288
  */
5424
6289
  ErrorTypes["AUTH_FAILED"] = "auth_failed";
5425
6290
  /**
6291
+ * Authentication rejected by a rate limiter
6292
+ */
6293
+ ErrorTypes["AUTH_RATE_LIMITED"] = "auth_rate_limited";
6294
+ /**
6295
+ * Authentication rejected because the account or IP is banned
6296
+ */
6297
+ ErrorTypes["AUTH_BANNED"] = "auth_banned";
6298
+ /**
5426
6299
  * Model refused to respond (content policy violation)
5427
6300
  */
5428
6301
  ErrorTypes["REFUSAL"] = "refusal";
@@ -5430,6 +6303,14 @@ let ErrorTypes = /* @__PURE__ */ function(ErrorTypes) {
5430
6303
  * SSE stream 404 — job completed, expired, or was deleted before the subscriber connected
5431
6304
  */
5432
6305
  ErrorTypes["STREAM_EXPIRED"] = "stream_expired";
6306
+ /**
6307
+ * Provider does not serve the requested model
6308
+ */
6309
+ ErrorTypes["MODEL_NOT_FOUND"] = "model_not_found";
6310
+ /**
6311
+ * Provider throttled or refused the request for exceeding a rate/spend allowance
6312
+ */
6313
+ ErrorTypes["MODEL_RATE_LIMIT"] = "model_rate_limit";
5433
6314
  return ErrorTypes;
5434
6315
  }({});
5435
6316
  /**
@@ -5561,7 +6442,7 @@ let TTSProviders = /* @__PURE__ */ function(TTSProviders) {
5561
6442
  /** Enum for app-wide constants */
5562
6443
  let Constants = /* @__PURE__ */ function(Constants) {
5563
6444
  /**
5564
- * Key for the app's version. The placeholder `v0.8.8-rc1` is
6445
+ * Key for the app's version. The placeholder `v0.8.8-rc2` is
5565
6446
  * swapped in by `@rollup/plugin-replace` during `npm run build:data-provider`
5566
6447
  * using the value of the root `package.json`'s `version` field. Consumers
5567
6448
  * always import this via the built dist bundle (see `main` field in
@@ -5569,9 +6450,9 @@ let Constants = /* @__PURE__ */ function(Constants) {
5569
6450
  * substituted value. Only tests that import the TypeScript source directly
5570
6451
  * would observe the raw placeholder.
5571
6452
  */
5572
- Constants["VERSION"] = "v0.8.8-rc1";
6453
+ Constants["VERSION"] = "v0.8.8-rc2";
5573
6454
  /** Key for the Custom Config's version (librechat.yaml). */
5574
- Constants["CONFIG_VERSION"] = "1.3.14";
6455
+ Constants["CONFIG_VERSION"] = "1.3.15";
5575
6456
  /** Standard value for the first message's `parentMessageId` value, to indicate no parent exists. */
5576
6457
  Constants["NO_PARENT"] = "00000000-0000-0000-0000-000000000000";
5577
6458
  /** Standard value to use whatever the submission prelim. `responseMessageId` is */
@@ -5625,6 +6506,15 @@ let Constants = /* @__PURE__ */ function(Constants) {
5625
6506
  Constants["SUBAGENT"] = "subagent";
5626
6507
  /** Poll tool for retrieving the status/result of a backgrounded tool call. */
5627
6508
  Constants["CHECK_BACKGROUND_TASK"] = "check_background_task";
6509
+ /**
6510
+ * `finish_reason` stamped on an assistant message whose turn ended because the
6511
+ * agent exhausted its per-turn graph step budget (`recursionLimit`) rather than
6512
+ * because the model chose to stop. Distinct from a user abort: nothing failed and
6513
+ * nothing was cancelled, the turn simply ran out of room. The UI keys its
6514
+ * "tool call limit reached" notice off this value. The hover Continue control
6515
+ * is withheld for this reason because the notice already offers the way forward.
6516
+ */
6517
+ Constants["TOOL_CALL_LIMIT_FINISH_REASON"] = "tool_call_limit";
5628
6518
  return Constants;
5629
6519
  }({});
5630
6520
  /**
@@ -5711,6 +6601,95 @@ function normalizeMCPToolKey(toolKey, rawServerNames) {
5711
6601
  if (normalized === matched) return toolKey;
5712
6602
  return `${toolKey.slice(0, toolKey.length - matched.length)}${normalized}`;
5713
6603
  }
6604
+ /**
6605
+ * Strips a redundant leading server-name prefix from a raw upstream tool name
6606
+ * before it is embedded into a model-facing key, so the key doesn't carry the
6607
+ * server twice (`acme_trace_..._mcp_acme`) and push long tool names
6608
+ * past provider function-name limits (64 chars). The match is case-insensitive
6609
+ * because display-cased server names ("Acme") conventionally prefix their
6610
+ * tools in lowercase. Ingestion that strips must record the original name
6611
+ * (`serverToolName` on the cached definition) — tool calls send THAT name back
6612
+ * to the server, never the stripped one. Catalog producers must not call this
6613
+ * directly: only {@link stripServerNamePrefixes} sees the whole sibling set and
6614
+ * can keep colliding results apart.
6615
+ */
6616
+ function stripServerNamePrefix(toolName, normalizedServerName) {
6617
+ const prefixLength = normalizedServerName.length + 1;
6618
+ if (toolName.length <= prefixLength) return toolName;
6619
+ if (toolName.slice(0, prefixLength).toLowerCase() !== `${normalizedServerName.toLowerCase()}_`) return toolName;
6620
+ const stripped = toolName.slice(prefixLength);
6621
+ if (isReservedMCPToolName(stripped)) return toolName;
6622
+ /** `isActionTool` classifies keys by the RELATIVE position of `_action_`
6623
+ * and `_mcp_`; stripping moves the first `_mcp_` earlier, so a server
6624
+ * whose normalized name contains `_action_` could see a real MCP tool
6625
+ * reclassified as an OpenAPI action (bypassing MCP authorization). Never
6626
+ * produce a key whose classification differs from the raw key's. */
6627
+ const keySuffix = `_mcp_${normalizedServerName}`;
6628
+ if (isActionTool(`${stripped}${keySuffix}`) !== isActionTool(`${toolName}${keySuffix}`)) return toolName;
6629
+ return stripped;
6630
+ }
6631
+ /**
6632
+ * Synthetic markers consumed by prefix (`isMCPAllPlaceholder`, the server-pin
6633
+ * skip, the client's OAuth stream classification), so each reserves BOTH its
6634
+ * exact name and its `${marker}${mcp_delimiter}` namespace: a stripped
6635
+ * remainder inside any of them would turn a real upstream tool into the
6636
+ * server-wide wildcard, the UI pin placeholder, or a synthetic OAuth call.
6637
+ */
6638
+ const RESERVED_MCP_TOOL_MARKERS = [
6639
+ `sys__all__sys`,
6640
+ `sys__server__sys`,
6641
+ "oauth"
6642
+ ];
6643
+ function isReservedMCPToolName(toolName) {
6644
+ /** `mcp_` opens the server-scoped pluginKey namespace (`mcp_${serverName}`),
6645
+ * and `lc_transfer_to_` opens the agent-handoff namespace (the client
6646
+ * renders such calls as handoffs; the background and intent passes exclude
6647
+ * them) — pre-strip tool keys could never enter either, since they always
6648
+ * began with the server name itself. */
6649
+ if (toolName.startsWith(`mcp_`) || toolName.startsWith(`lc_transfer_to_`)) return true;
6650
+ return RESERVED_MCP_TOOL_MARKERS.some((marker) => toolName === marker || toolName.startsWith(`${marker}_mcp_`));
6651
+ }
6652
+ /**
6653
+ * Maps every raw tool name in a server's catalog to its model-facing name,
6654
+ * stripping redundant server-name prefixes collision-free: when two names
6655
+ * yield the same result — a bare `foo` next to `<server>_foo`, or the
6656
+ * case-variant pair `<server>_Foo` / `<Server>_Foo` under the case-insensitive
6657
+ * prefix match — every collider keeps its raw name, so two distinct upstream
6658
+ * tools can never collapse onto one key. Unprefixed names count against the
6659
+ * result set through their identity mapping, which is what makes the bare-name
6660
+ * case fall out of the same counter.
6661
+ */
6662
+ function stripServerNamePrefixes(toolNames, normalizedServerName) {
6663
+ const rawNames = new Set(toolNames);
6664
+ const finalNames = new Map(toolNames.map((name) => {
6665
+ const stripped = stripServerNamePrefix(name, normalizedServerName);
6666
+ /** Every sibling's RAW name is reserved even when that sibling itself
6667
+ * strips away: keys persisted BEFORE stripping embed raw names, so a
6668
+ * stripped result landing on another sibling's raw name would route
6669
+ * that sibling's legacy references to the wrong upstream tool. */
6670
+ return [name, stripped !== name && rawNames.has(stripped) ? name : stripped];
6671
+ }));
6672
+ /** Reverting a collider to its raw name can itself collide with ANOTHER
6673
+ * sibling's stripped result (`foo` / `acme_foo` / `acme_acme_foo`), so the
6674
+ * guard iterates to a fixpoint. Each pass converts at least one stripped
6675
+ * result back to its unique raw name, so it terminates within the catalog
6676
+ * size. */
6677
+ let changed = true;
6678
+ while (changed) {
6679
+ changed = false;
6680
+ const counts = /* @__PURE__ */ new Map();
6681
+ finalNames.forEach((result) => {
6682
+ counts.set(result, (counts.get(result) ?? 0) + 1);
6683
+ });
6684
+ finalNames.forEach((result, raw) => {
6685
+ if (result !== raw && (counts.get(result) ?? 0) > 1) {
6686
+ finalNames.set(raw, raw);
6687
+ changed = true;
6688
+ }
6689
+ });
6690
+ }
6691
+ return finalNames;
6692
+ }
5714
6693
  function splitMCPToolKey(toolKey, knownServerNames) {
5715
6694
  if (knownServerNames?.length) {
5716
6695
  let matched;
@@ -5930,6 +6909,7 @@ let PrincipalModel = /* @__PURE__ */ function(PrincipalModel) {
5930
6909
  */
5931
6910
  let ResourceType = /* @__PURE__ */ function(ResourceType) {
5932
6911
  ResourceType["AGENT"] = "agent";
6912
+ ResourceType["CODE_ENVIRONMENT"] = "codeEnvironment";
5933
6913
  ResourceType["PROMPTGROUP"] = "promptGroup";
5934
6914
  ResourceType["MCPSERVER"] = "mcpServer";
5935
6915
  ResourceType["REMOTE_AGENT"] = "remoteAgent";
@@ -5958,6 +6938,9 @@ let AccessRoleIds = /* @__PURE__ */ function(AccessRoleIds) {
5958
6938
  AccessRoleIds["AGENT_VIEWER"] = "agent_viewer";
5959
6939
  AccessRoleIds["AGENT_EDITOR"] = "agent_editor";
5960
6940
  AccessRoleIds["AGENT_OWNER"] = "agent_owner";
6941
+ AccessRoleIds["CODE_ENVIRONMENT_VIEWER"] = "codeEnvironment_viewer";
6942
+ AccessRoleIds["CODE_ENVIRONMENT_EDITOR"] = "codeEnvironment_editor";
6943
+ AccessRoleIds["CODE_ENVIRONMENT_OWNER"] = "codeEnvironment_owner";
5961
6944
  AccessRoleIds["PROMPTGROUP_VIEWER"] = "promptGroup_viewer";
5962
6945
  AccessRoleIds["PROMPTGROUP_EDITOR"] = "promptGroup_editor";
5963
6946
  AccessRoleIds["PROMPTGROUP_OWNER"] = "promptGroup_owner";
@@ -6074,17 +7057,20 @@ function permBitsToAccessLevel(permBits) {
6074
7057
  function accessRoleToPermBits(accessRoleId) {
6075
7058
  switch (accessRoleId) {
6076
7059
  case "agent_viewer":
7060
+ case "codeEnvironment_viewer":
6077
7061
  case "promptGroup_viewer":
6078
7062
  case "mcpServer_viewer":
6079
7063
  case "remoteAgent_viewer":
6080
7064
  case "skill_viewer":
6081
7065
  case "sharedLink_viewer": return 1;
6082
7066
  case "agent_editor":
7067
+ case "codeEnvironment_editor":
6083
7068
  case "promptGroup_editor":
6084
7069
  case "mcpServer_editor":
6085
7070
  case "remoteAgent_editor":
6086
7071
  case "skill_editor": return 3;
6087
7072
  case "agent_owner":
7073
+ case "codeEnvironment_owner":
6088
7074
  case "promptGroup_owner":
6089
7075
  case "mcpServer_owner":
6090
7076
  case "remoteAgent_owner":
@@ -6111,6 +7097,7 @@ let QueryKeys = /* @__PURE__ */ function(QueryKeys) {
6111
7097
  QueryKeys["sharedLinks"] = "sharedLinks";
6112
7098
  QueryKeys["allConversations"] = "allConversations";
6113
7099
  QueryKeys["archivedConversations"] = "archivedConversations";
7100
+ QueryKeys["pinnedConversations"] = "pinnedConversations";
6114
7101
  QueryKeys["searchConversations"] = "searchConversations";
6115
7102
  QueryKeys["conversation"] = "conversation";
6116
7103
  QueryKeys["searchEnabled"] = "searchEnabled";
@@ -6127,6 +7114,8 @@ let QueryKeys = /* @__PURE__ */ function(QueryKeys) {
6127
7114
  QueryKeys["tokenCount"] = "tokenCount";
6128
7115
  QueryKeys["availablePlugins"] = "availablePlugins";
6129
7116
  QueryKeys["startupConfig"] = "startupConfig";
7117
+ QueryKeys["insights"] = "insights";
7118
+ QueryKeys["insightsAccess"] = "insightsAccess";
6130
7119
  QueryKeys["assistants"] = "assistants";
6131
7120
  QueryKeys["assistant"] = "assistant";
6132
7121
  QueryKeys["agents"] = "agents";
@@ -6184,10 +7173,19 @@ let QueryKeys = /* @__PURE__ */ function(QueryKeys) {
6184
7173
  QueryKeys["toolFavorites"] = "toolFavorites";
6185
7174
  QueryKeys["skillStates"] = "skillStates";
6186
7175
  QueryKeys["favorites"] = "favorites";
7176
+ QueryKeys["schedules"] = "schedules";
7177
+ QueryKeys["schedule"] = "schedule";
7178
+ QueryKeys["parentSubagents"] = "parentSubagents";
7179
+ QueryKeys["subagentThread"] = "subagentThread";
7180
+ QueryKeys["codeEnvironments"] = "codeEnvironments";
7181
+ QueryKeys["agentQueuedTurns"] = "agentQueuedTurns";
6187
7182
  return QueryKeys;
6188
7183
  }({});
6189
7184
  const DynamicQueryKeys = { agentFiles: (agentId) => ["agentFiles", agentId] };
6190
7185
  let MutationKeys = /* @__PURE__ */ function(MutationKeys) {
7186
+ MutationKeys["subagentControl"] = "subagentControl";
7187
+ MutationKeys["enqueueAgentQueuedTurn"] = "enqueueAgentQueuedTurn";
7188
+ MutationKeys["cancelAgentQueuedTurn"] = "cancelAgentQueuedTurn";
6191
7189
  MutationKeys["updateLangfuseConnection"] = "updateLangfuseConnection";
6192
7190
  MutationKeys["testLangfuseConnection"] = "testLangfuseConnection";
6193
7191
  MutationKeys["createAgentApiKey"] = "createAgentApiKey";
@@ -6211,6 +7209,7 @@ let MutationKeys = /* @__PURE__ */ function(MutationKeys) {
6211
7209
  MutationKeys["deleteAgentAction"] = "deleteAgentAction";
6212
7210
  MutationKeys["revertAgentVersion"] = "revertAgentVersion";
6213
7211
  MutationKeys["deleteUser"] = "deleteUser";
7212
+ MutationKeys["updateUserPreferences"] = "updateUserPreferences";
6214
7213
  MutationKeys["updateRole"] = "updateRole";
6215
7214
  MutationKeys["enableTwoFactor"] = "enableTwoFactor";
6216
7215
  MutationKeys["verifyTwoFactor"] = "verifyTwoFactor";
@@ -6224,6 +7223,14 @@ let MutationKeys = /* @__PURE__ */ function(MutationKeys) {
6224
7223
  MutationKeys["deleteSkillNode"] = "deleteSkillNode";
6225
7224
  MutationKeys["updateSkillNodeContent"] = "updateSkillNodeContent";
6226
7225
  MutationKeys["convoPin"] = "convoPin";
7226
+ MutationKeys["archiveAllConversations"] = "archiveAllConversations";
7227
+ MutationKeys["createSchedule"] = "createSchedule";
7228
+ MutationKeys["updateSchedule"] = "updateSchedule";
7229
+ MutationKeys["deleteSchedule"] = "deleteSchedule";
7230
+ MutationKeys["runSchedule"] = "runSchedule";
7231
+ MutationKeys["pairCodeEnvironment"] = "pairCodeEnvironment";
7232
+ MutationKeys["updateCodeEnvironmentSettings"] = "updateCodeEnvironmentSettings";
7233
+ MutationKeys["deleteCodeEnvironment"] = "deleteCodeEnvironment";
6227
7234
  return MutationKeys;
6228
7235
  }({});
6229
7236
  //#endregion
@@ -6625,15 +7632,18 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6625
7632
  addPromptToGroup: () => addPromptToGroup,
6626
7633
  addTagToConversation: () => addTagToConversation,
6627
7634
  addToolFavorite: () => addToolFavorite,
7635
+ archiveAllConversations: () => archiveAllConversations,
6628
7636
  archiveConversation: () => archiveConversation,
6629
7637
  assignConversationToProject: () => assignConversationToProject,
6630
7638
  bindActionOAuth: () => bindActionOAuth,
6631
7639
  bindMCPOAuth: () => bindMCPOAuth,
6632
7640
  branchMessage: () => branchMessage,
6633
7641
  callTool: () => callTool,
7642
+ cancelAgentQueuedTurn: () => cancelAgentQueuedTurn,
6634
7643
  cancelMCPOAuth: () => cancelMCPOAuth,
6635
7644
  clearAllConversations: () => clearAllConversations,
6636
7645
  confirmTwoFactor: () => confirmTwoFactor,
7646
+ controlSubagentTask: () => controlSubagentTask,
6637
7647
  createAgent: () => createAgent,
6638
7648
  createAgentApiKey: () => createAgentApiKey,
6639
7649
  createAssistant: () => createAssistant,
@@ -6643,6 +7653,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6643
7653
  createPreset: () => createPreset,
6644
7654
  createProject: () => createProject,
6645
7655
  createPrompt: () => createPrompt,
7656
+ createSchedule: () => createSchedule,
6646
7657
  createSharedLink: () => createSharedLink,
6647
7658
  createSkill: () => createSkill,
6648
7659
  createSkillNode: () => createSkillNode,
@@ -6651,16 +7662,19 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6651
7662
  deleteAgentAction: () => deleteAgentAction,
6652
7663
  deleteAgentApiKey: () => deleteAgentApiKey,
6653
7664
  deleteAssistant: () => deleteAssistant,
7665
+ deleteCodeEnvironment: () => deleteCodeEnvironment,
6654
7666
  deleteConversation: () => deleteConversation,
6655
7667
  deleteConversationTag: () => deleteConversationTag,
6656
7668
  deleteFiles: () => deleteFiles,
6657
7669
  deleteGitHubSkillSyncCredential: () => deleteGitHubSkillSyncCredential,
6658
7670
  deleteMCPServer: () => deleteMCPServer,
6659
7671
  deleteMemory: () => deleteMemory,
7672
+ deleteMemoryById: () => deleteMemoryById,
6660
7673
  deletePreset: () => deletePreset,
6661
7674
  deleteProject: () => deleteProject,
6662
7675
  deletePrompt: () => deletePrompt,
6663
7676
  deletePromptGroup: () => deletePromptGroup,
7677
+ deleteSchedule: () => deleteSchedule,
6664
7678
  deleteSharedLink: () => deleteSharedLink,
6665
7679
  deleteSkill: () => deleteSkill,
6666
7680
  deleteSkillFile: () => deleteSkillFile,
@@ -6671,6 +7685,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6671
7685
  duplicateConversation: () => duplicateConversation,
6672
7686
  editArtifact: () => editArtifact,
6673
7687
  enableTwoFactor: () => enableTwoFactor,
7688
+ enqueueAgentQueuedTurn: () => enqueueAgentQueuedTurn,
6674
7689
  forkConversation: () => forkConversation,
6675
7690
  forkSharedConversation: () => forkSharedConversation,
6676
7691
  genTitle: () => genTitle,
@@ -6692,6 +7707,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6692
7707
  getAvailableTools: () => getAvailableTools,
6693
7708
  getBanner: () => getBanner,
6694
7709
  getCategories: () => getCategories,
7710
+ getCodeEnvironments: () => getCodeEnvironments,
6695
7711
  getCodeOutputDownload: () => getCodeOutputDownload,
6696
7712
  getConversationById: () => getConversationById,
6697
7713
  getConversationTags: () => getConversationTags,
@@ -6708,6 +7724,8 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6708
7724
  getFiles: () => getFiles,
6709
7725
  getGitHubSkillSyncStatus: () => getGitHubSkillSyncStatus,
6710
7726
  getGraphApiToken: () => getGraphApiToken,
7727
+ getInsights: () => getInsights,
7728
+ getInsightsAccess: () => getInsightsAccess,
6711
7729
  getLangfuseConnection: () => getLangfuseConnection,
6712
7730
  getLangfuseSessionLink: () => getLangfuseSessionLink,
6713
7731
  getLoginGoogle: () => getLoginGoogle,
@@ -6720,8 +7738,10 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6720
7738
  getMCPTools: () => getMCPTools,
6721
7739
  getMarketplaceAgents: () => getMarketplaceAgents,
6722
7740
  getMemories: () => getMemories,
7741
+ getMessageById: () => getMessageById,
6723
7742
  getMessagesByConvoId: () => getMessagesByConvoId,
6724
7743
  getModels: () => getModels,
7744
+ getParentSubagents: () => getParentSubagents,
6725
7745
  getPresets: () => getPresets,
6726
7746
  getProjectById: () => getProjectById,
6727
7747
  getPrompt: () => getPrompt,
@@ -6731,6 +7751,8 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6731
7751
  getRandomPrompts: () => getRandomPrompts,
6732
7752
  getResourcePermissions: () => getResourcePermissions,
6733
7753
  getRole: () => getRole,
7754
+ getSchedule: () => getSchedule,
7755
+ getSchedules: () => getSchedules,
6734
7756
  getSearchEnabled: () => getSearchEnabled,
6735
7757
  getSharedFileDownload: () => getSharedFileDownload,
6736
7758
  getSharedFilePreview: () => getSharedFilePreview,
@@ -6743,6 +7765,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6743
7765
  getSkillStates: () => getSkillStates,
6744
7766
  getSkillTree: () => getSkillTree,
6745
7767
  getStartupConfig: () => getStartupConfig,
7768
+ getSubagentThread: () => getSubagentThread,
6746
7769
  getTokenConfig: () => getTokenConfig,
6747
7770
  getToolCalls: () => getToolCalls,
6748
7771
  getToolFavorites: () => getToolFavorites,
@@ -6754,6 +7777,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6754
7777
  healthCheck: () => healthCheck,
6755
7778
  importConversationsFile: () => importConversationsFile,
6756
7779
  importSkill: () => importSkill,
7780
+ listAgentQueuedTurns: () => listAgentQueuedTurns,
6757
7781
  listAgents: () => listAgents,
6758
7782
  listAssistants: () => listAssistants,
6759
7783
  listConversations: () => listConversations,
@@ -6767,6 +7791,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6767
7791
  logout: () => logout,
6768
7792
  makePromptProduction: () => makePromptProduction,
6769
7793
  markFilesUsage: () => markFilesUsage,
7794
+ pairCodeEnvironment: () => pairCodeEnvironment,
6770
7795
  pinConversation: () => pinConversation,
6771
7796
  rebuildConversationTags: () => rebuildConversationTags,
6772
7797
  recordPromptGroupUsage: () => recordPromptGroupUsage,
@@ -6781,6 +7806,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6781
7806
  revokeAllUserKeys: () => revokeAllUserKeys,
6782
7807
  revokeUserKey: () => revokeUserKey,
6783
7808
  runGitHubSkillSync: () => runGitHubSkillSync,
7809
+ runScheduleNow: () => runScheduleNow,
6784
7810
  searchPrincipals: () => searchPrincipals,
6785
7811
  setGitHubSkillSyncCredential: () => setGitHubSkillSyncCredential,
6786
7812
  speechToText: () => speechToText,
@@ -6791,6 +7817,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6791
7817
  updateAgentAction: () => updateAgentAction,
6792
7818
  updateAgentPermissions: () => updateAgentPermissions,
6793
7819
  updateAssistant: () => updateAssistant,
7820
+ updateCodeEnvironmentSettings: () => updateCodeEnvironmentSettings,
6794
7821
  updateConversation: () => updateConversation,
6795
7822
  updateConversationTag: () => updateConversationTag,
6796
7823
  updateFavorites: () => updateFavorites,
@@ -6800,6 +7827,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6800
7827
  updateMCPServersPermissions: () => updateMCPServersPermissions,
6801
7828
  updateMarketplacePermissions: () => updateMarketplacePermissions,
6802
7829
  updateMemory: () => updateMemory,
7830
+ updateMemoryById: () => updateMemoryById,
6803
7831
  updateMemoryPermissions: () => updateMemoryPermissions,
6804
7832
  updateMemoryPreferences: () => updateMemoryPreferences,
6805
7833
  updateMessage: () => updateMessage,
@@ -6812,6 +7840,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6812
7840
  updatePromptPermissions: () => updatePromptPermissions,
6813
7841
  updateRemoteAgentsPermissions: () => updateRemoteAgentsPermissions,
6814
7842
  updateResourcePermissions: () => updateResourcePermissions,
7843
+ updateSchedule: () => updateSchedule,
6815
7844
  updateSharedLink: () => updateSharedLink,
6816
7845
  updateSkill: () => updateSkill,
6817
7846
  updateSkillNode: () => updateSkillNode,
@@ -6821,6 +7850,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6821
7850
  updateTokenCount: () => updateTokenCount,
6822
7851
  updateUserKey: () => updateUserKey,
6823
7852
  updateUserPlugins: () => updateUserPlugins,
7853
+ updateUserPreferences: () => updateUserPreferences,
6824
7854
  uploadAgentAvatar: () => uploadAgentAvatar,
6825
7855
  uploadAssistantAvatar: () => uploadAssistantAvatar,
6826
7856
  uploadAvatar: () => uploadAvatar,
@@ -6832,6 +7862,15 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
6832
7862
  verifyTwoFactor: () => verifyTwoFactor,
6833
7863
  verifyTwoFactorTemp: () => verifyTwoFactorTemp
6834
7864
  });
7865
+ function getInsights(params = {}) {
7866
+ const query = new URLSearchParams();
7867
+ for (const [key, value] of Object.entries(params)) if (value !== void 0 && value !== null && value !== "") query.set(key, String(value));
7868
+ const suffix = query.toString() ? `?${query.toString()}` : "";
7869
+ return request_default.get(`${insights()}${suffix}`);
7870
+ }
7871
+ function getInsightsAccess() {
7872
+ return request_default.get(insightsAccess());
7873
+ }
6835
7874
  function getLangfuseConnection() {
6836
7875
  return request_default.get(adminLangfuseConnection());
6837
7876
  }
@@ -6853,6 +7892,18 @@ function revokeAllUserKeys() {
6853
7892
  function deleteUser(payload) {
6854
7893
  return request_default.deleteWithOptions(deleteUser$1(), { data: payload });
6855
7894
  }
7895
+ function getCodeEnvironments() {
7896
+ return request_default.get(codeEnvironments());
7897
+ }
7898
+ function pairCodeEnvironment(payload) {
7899
+ return request_default.post(codeEnvironmentPairings(), payload);
7900
+ }
7901
+ function deleteCodeEnvironment(id) {
7902
+ return request_default.delete(codeEnvironmentById(id));
7903
+ }
7904
+ function updateCodeEnvironmentSettings({ id, settings }) {
7905
+ return request_default.patch(codeEnvironmentSettings(id), { settings });
7906
+ }
6856
7907
  function getFavorites() {
6857
7908
  return request_default.get(`${apiBaseUrl()}/api/user/settings/favorites`);
6858
7909
  }
@@ -6936,6 +7987,9 @@ function getSearchEnabled() {
6936
7987
  function getUser() {
6937
7988
  return request_default.get(user());
6938
7989
  }
7990
+ function updateUserPreferences(preferences) {
7991
+ return request_default.patch(userPreferences(), preferences);
7992
+ }
6939
7993
  function getUserBalance() {
6940
7994
  return request_default.get(balance());
6941
7995
  }
@@ -7314,6 +8368,9 @@ function updateConversation(payload) {
7314
8368
  function archiveConversation(payload) {
7315
8369
  return request_default.post(archiveConversation$1(), { arg: payload });
7316
8370
  }
8371
+ function archiveAllConversations() {
8372
+ return request_default.post(archiveAllConversations$1(), {});
8373
+ }
7317
8374
  function listProjects(params) {
7318
8375
  return request_default.get(projects(params ?? {}));
7319
8376
  }
@@ -7372,6 +8429,21 @@ function getMessagesByConvoId(conversationId) {
7372
8429
  if (conversationId === "new" || conversationId === "PENDING") return Promise.resolve([]);
7373
8430
  return request_default.get(messages({ conversationId }));
7374
8431
  }
8432
+ function getMessageById(conversationId, messageId) {
8433
+ return request_default.get(messages({
8434
+ conversationId,
8435
+ messageId
8436
+ }));
8437
+ }
8438
+ function getParentSubagents(parentConversationId) {
8439
+ return request_default.get(parentSubagents(parentConversationId));
8440
+ }
8441
+ function getSubagentThread(parentConversationId, threadId, taskId, cursor) {
8442
+ return request_default.get(subagentThread(parentConversationId, threadId, taskId, cursor));
8443
+ }
8444
+ function controlSubagentTask(parentConversationId, threadId, body) {
8445
+ return request_default.post(subagentControl(parentConversationId, threadId), body);
8446
+ }
7375
8447
  function getPrompt(id) {
7376
8448
  return request_default.get(getPrompt$1(id));
7377
8449
  }
@@ -7420,6 +8492,33 @@ function getRandomPrompts(variables) {
7420
8492
  function listSkills(params) {
7421
8493
  return request_default.get(listSkillsWithFilters(params ?? {}));
7422
8494
  }
8495
+ function getSchedules() {
8496
+ return request_default.get(schedules());
8497
+ }
8498
+ function enqueueAgentQueuedTurn(payload) {
8499
+ return request_default.post(agentQueuedTurns(), payload);
8500
+ }
8501
+ function listAgentQueuedTurns(conversationId, clientRequestIds) {
8502
+ return request_default.get(agentQueuedTurnsByConversation(conversationId, clientRequestIds));
8503
+ }
8504
+ function cancelAgentQueuedTurn(queuedTurnId) {
8505
+ return request_default.delete(agentQueuedTurn(queuedTurnId));
8506
+ }
8507
+ function getSchedule(id) {
8508
+ return request_default.get(schedule(id));
8509
+ }
8510
+ function createSchedule(payload) {
8511
+ return request_default.post(schedules(), payload);
8512
+ }
8513
+ function updateSchedule(id, payload) {
8514
+ return request_default.patch(schedule(id), payload);
8515
+ }
8516
+ function deleteSchedule(id) {
8517
+ return request_default.delete(schedule(id));
8518
+ }
8519
+ function runScheduleNow(id) {
8520
+ return request_default.post(runSchedule(id), {});
8521
+ }
7423
8522
  function getSkill(id) {
7424
8523
  return request_default.get(getSkill$1(id));
7425
8524
  }
@@ -7610,12 +8709,21 @@ const getMemories = () => {
7610
8709
  const deleteMemory = (key, agentId) => {
7611
8710
  return request_default.delete(memory(key, agentId));
7612
8711
  };
8712
+ const deleteMemoryById = (id, agentId) => {
8713
+ return request_default.delete(memoryById(id, agentId));
8714
+ };
7613
8715
  const updateMemory = (key, value, originalKey, agentId) => {
7614
8716
  return request_default.patch(memory(originalKey || key, agentId), {
7615
8717
  key,
7616
8718
  value
7617
8719
  });
7618
8720
  };
8721
+ const updateMemoryById = (id, value, key, agentId) => {
8722
+ return request_default.patch(memoryById(id, agentId), {
8723
+ value,
8724
+ ...key ? { key } : {}
8725
+ });
8726
+ };
7619
8727
  const updateMemoryPreferences = (preferences) => {
7620
8728
  return request_default.patch(memoryPreferences(), preferences);
7621
8729
  };
@@ -7650,6 +8758,18 @@ const getActiveJobs = () => {
7650
8758
  return request_default.get(activeJobs());
7651
8759
  };
7652
8760
  //#endregion
8761
+ Object.defineProperty(exports, "ACTION_METADATA_FILTER_FIELDS", {
8762
+ enumerable: true,
8763
+ get: function() {
8764
+ return ACTION_METADATA_FILTER_FIELDS;
8765
+ }
8766
+ });
8767
+ Object.defineProperty(exports, "AGENT_INSTRUCTION_FILTER_FIELDS", {
8768
+ enumerable: true,
8769
+ get: function() {
8770
+ return AGENT_INSTRUCTION_FILTER_FIELDS;
8771
+ }
8772
+ });
7653
8773
  Object.defineProperty(exports, "AUTH_USER_DOC_BY_ID_PREFIX", {
7654
8774
  enumerable: true,
7655
8775
  get: function() {
@@ -7734,6 +8854,18 @@ Object.defineProperty(exports, "BedrockReasoningConfig", {
7734
8854
  return BedrockReasoningConfig;
7735
8855
  }
7736
8856
  });
8857
+ Object.defineProperty(exports, "CONVERSATION_STARTER_FILTER_FIELDS", {
8858
+ enumerable: true,
8859
+ get: function() {
8860
+ return CONVERSATION_STARTER_FILTER_FIELDS;
8861
+ }
8862
+ });
8863
+ Object.defineProperty(exports, "CONVERSATION_TITLE_FILTER_FIELDS", {
8864
+ enumerable: true,
8865
+ get: function() {
8866
+ return CONVERSATION_TITLE_FILTER_FIELDS;
8867
+ }
8868
+ });
7737
8869
  Object.defineProperty(exports, "CacheKeys", {
7738
8870
  enumerable: true,
7739
8871
  get: function() {
@@ -7806,6 +8938,12 @@ Object.defineProperty(exports, "ErrorTypes", {
7806
8938
  return ErrorTypes;
7807
8939
  }
7808
8940
  });
8941
+ Object.defineProperty(exports, "FEEDBACK_FILTER_FIELDS", {
8942
+ enumerable: true,
8943
+ get: function() {
8944
+ return FEEDBACK_FILTER_FIELDS;
8945
+ }
8946
+ });
7809
8947
  Object.defineProperty(exports, "FEEDBACK_RATINGS", {
7810
8948
  enumerable: true,
7811
8949
  get: function() {
@@ -7824,6 +8962,18 @@ Object.defineProperty(exports, "FEEDBACK_TAGS", {
7824
8962
  return FEEDBACK_TAGS;
7825
8963
  }
7826
8964
  });
8965
+ Object.defineProperty(exports, "FILE_FILTER_FIELDS", {
8966
+ enumerable: true,
8967
+ get: function() {
8968
+ return FILE_FILTER_FIELDS;
8969
+ }
8970
+ });
8971
+ Object.defineProperty(exports, "FILTER_PII_STARTER_PATTERNS", {
8972
+ enumerable: true,
8973
+ get: function() {
8974
+ return FILTER_PII_STARTER_PATTERNS;
8975
+ }
8976
+ });
7827
8977
  Object.defineProperty(exports, "FetchTokenConfig", {
7828
8978
  enumerable: true,
7829
8979
  get: function() {
@@ -7854,6 +9004,12 @@ Object.defineProperty(exports, "ForkOptions", {
7854
9004
  return ForkOptions;
7855
9005
  }
7856
9006
  });
9007
+ Object.defineProperty(exports, "HITL_MESSAGE_FILTER_FIELDS", {
9008
+ enumerable: true,
9009
+ get: function() {
9010
+ return HITL_MESSAGE_FILTER_FIELDS;
9011
+ }
9012
+ });
7857
9013
  Object.defineProperty(exports, "ImageDetail", {
7858
9014
  enumerable: true,
7859
9015
  get: function() {
@@ -7890,12 +9046,78 @@ Object.defineProperty(exports, "LocalStorageKeys", {
7890
9046
  return LocalStorageKeys;
7891
9047
  }
7892
9048
  });
9049
+ Object.defineProperty(exports, "MAX_CHAT_PROJECT_DESCRIPTION_LENGTH", {
9050
+ enumerable: true,
9051
+ get: function() {
9052
+ return MAX_CHAT_PROJECT_DESCRIPTION_LENGTH;
9053
+ }
9054
+ });
9055
+ Object.defineProperty(exports, "MAX_CHAT_PROJECT_NAME_LENGTH", {
9056
+ enumerable: true,
9057
+ get: function() {
9058
+ return MAX_CHAT_PROJECT_NAME_LENGTH;
9059
+ }
9060
+ });
9061
+ Object.defineProperty(exports, "MAX_GRAPH_SUBAGENT_MEMBERS", {
9062
+ enumerable: true,
9063
+ get: function() {
9064
+ return MAX_GRAPH_SUBAGENT_MEMBERS;
9065
+ }
9066
+ });
9067
+ Object.defineProperty(exports, "MAX_PII_CUSTOM_PATTERNS_TOTAL", {
9068
+ enumerable: true,
9069
+ get: function() {
9070
+ return MAX_PII_CUSTOM_PATTERNS_TOTAL;
9071
+ }
9072
+ });
9073
+ Object.defineProperty(exports, "MAX_PII_CUSTOM_REGEX_CHARACTERS", {
9074
+ enumerable: true,
9075
+ get: function() {
9076
+ return MAX_PII_CUSTOM_REGEX_CHARACTERS;
9077
+ }
9078
+ });
9079
+ Object.defineProperty(exports, "MAX_PII_CUSTOM_REGEX_INSTRUCTIONS", {
9080
+ enumerable: true,
9081
+ get: function() {
9082
+ return MAX_PII_CUSTOM_REGEX_INSTRUCTIONS;
9083
+ }
9084
+ });
9085
+ Object.defineProperty(exports, "MAX_PII_PATTERNS_PER_SOURCE", {
9086
+ enumerable: true,
9087
+ get: function() {
9088
+ return MAX_PII_PATTERNS_PER_SOURCE;
9089
+ }
9090
+ });
9091
+ Object.defineProperty(exports, "MAX_PII_PATTERN_ID_LENGTH", {
9092
+ enumerable: true,
9093
+ get: function() {
9094
+ return MAX_PII_PATTERN_ID_LENGTH;
9095
+ }
9096
+ });
9097
+ Object.defineProperty(exports, "MAX_PII_PATTERN_LABEL_LENGTH", {
9098
+ enumerable: true,
9099
+ get: function() {
9100
+ return MAX_PII_PATTERN_LABEL_LENGTH;
9101
+ }
9102
+ });
9103
+ Object.defineProperty(exports, "MAX_PII_PATTERN_LENGTH", {
9104
+ enumerable: true,
9105
+ get: function() {
9106
+ return MAX_PII_PATTERN_LENGTH;
9107
+ }
9108
+ });
7893
9109
  Object.defineProperty(exports, "MAX_SUBAGENTS", {
7894
9110
  enumerable: true,
7895
9111
  get: function() {
7896
9112
  return MAX_SUBAGENTS;
7897
9113
  }
7898
9114
  });
9115
+ Object.defineProperty(exports, "MAX_SUBAGENTS_CEILING", {
9116
+ enumerable: true,
9117
+ get: function() {
9118
+ return MAX_SUBAGENTS_CEILING;
9119
+ }
9120
+ });
7899
9121
  Object.defineProperty(exports, "MAX_SUBAGENT_DEPTH", {
7900
9122
  enumerable: true,
7901
9123
  get: function() {
@@ -7932,12 +9154,42 @@ Object.defineProperty(exports, "MCPServersSchema", {
7932
9154
  return MCPServersSchema;
7933
9155
  }
7934
9156
  });
9157
+ Object.defineProperty(exports, "MCP_SERVER_TITLE_ERROR", {
9158
+ enumerable: true,
9159
+ get: function() {
9160
+ return MCP_SERVER_TITLE_ERROR;
9161
+ }
9162
+ });
9163
+ Object.defineProperty(exports, "MCP_SERVER_TITLE_PATTERN", {
9164
+ enumerable: true,
9165
+ get: function() {
9166
+ return MCP_SERVER_TITLE_PATTERN;
9167
+ }
9168
+ });
7935
9169
  Object.defineProperty(exports, "MCP_USER_INPUT_FIELDS", {
7936
9170
  enumerable: true,
7937
9171
  get: function() {
7938
9172
  return MCP_USER_INPUT_FIELDS;
7939
9173
  }
7940
9174
  });
9175
+ Object.defineProperty(exports, "MEMORY_FILTER_FIELDS", {
9176
+ enumerable: true,
9177
+ get: function() {
9178
+ return MEMORY_FILTER_FIELDS;
9179
+ }
9180
+ });
9181
+ Object.defineProperty(exports, "MESSAGE_FILTER_FIELDS", {
9182
+ enumerable: true,
9183
+ get: function() {
9184
+ return MESSAGE_FILTER_FIELDS;
9185
+ }
9186
+ });
9187
+ Object.defineProperty(exports, "MODEL_PARAMETER_FILTER_FIELDS", {
9188
+ enumerable: true,
9189
+ get: function() {
9190
+ return MODEL_PARAMETER_FILTER_FIELDS;
9191
+ }
9192
+ });
7941
9193
  Object.defineProperty(exports, "MYTHOS_CLASS_FAMILIES", {
7942
9194
  enumerable: true,
7943
9195
  get: function() {
@@ -7974,6 +9226,12 @@ Object.defineProperty(exports, "OptionTypes", {
7974
9226
  return OptionTypes;
7975
9227
  }
7976
9228
  });
9229
+ Object.defineProperty(exports, "PROMPT_FILTER_FIELDS", {
9230
+ enumerable: true,
9231
+ get: function() {
9232
+ return PROMPT_FILTER_FIELDS;
9233
+ }
9234
+ });
7977
9235
  Object.defineProperty(exports, "PermissionBits", {
7978
9236
  enumerable: true,
7979
9237
  get: function() {
@@ -8076,6 +9334,12 @@ Object.defineProperty(exports, "RunStatus", {
8076
9334
  return RunStatus;
8077
9335
  }
8078
9336
  });
9337
+ Object.defineProperty(exports, "SKILL_FILTER_FIELDS", {
9338
+ enumerable: true,
9339
+ get: function() {
9340
+ return SKILL_FILTER_FIELDS;
9341
+ }
9342
+ });
8079
9343
  Object.defineProperty(exports, "SKILL_SYNC_DEFAULT_DISCOVERY_DEPTH", {
8080
9344
  enumerable: true,
8081
9345
  get: function() {
@@ -8106,6 +9370,18 @@ Object.defineProperty(exports, "SSEOptionsSchema", {
8106
9370
  return SSEOptionsSchema;
8107
9371
  }
8108
9372
  });
9373
+ Object.defineProperty(exports, "STATEFUL_CODE_ENVIRONMENTS", {
9374
+ enumerable: true,
9375
+ get: function() {
9376
+ return STATEFUL_CODE_ENVIRONMENTS;
9377
+ }
9378
+ });
9379
+ Object.defineProperty(exports, "STORED_MESSAGE_FILTER_FIELDS", {
9380
+ enumerable: true,
9381
+ get: function() {
9382
+ return STORED_MESSAGE_FILTER_FIELDS;
9383
+ }
9384
+ });
8109
9385
  Object.defineProperty(exports, "STTProviders", {
8110
9386
  enumerable: true,
8111
9387
  get: function() {
@@ -8154,6 +9430,12 @@ Object.defineProperty(exports, "SettingsViews", {
8154
9430
  return SettingsViews;
8155
9431
  }
8156
9432
  });
9433
+ Object.defineProperty(exports, "SkillsScope", {
9434
+ enumerable: true,
9435
+ get: function() {
9436
+ return SkillsScope;
9437
+ }
9438
+ });
8157
9439
  Object.defineProperty(exports, "StdioOptionsSchema", {
8158
9440
  enumerable: true,
8159
9441
  get: function() {
@@ -8178,6 +9460,12 @@ Object.defineProperty(exports, "SystemCategories", {
8178
9460
  return SystemCategories;
8179
9461
  }
8180
9462
  });
9463
+ Object.defineProperty(exports, "TOOL_ARGUMENT_FILTER_FIELDS", {
9464
+ enumerable: true,
9465
+ get: function() {
9466
+ return TOOL_ARGUMENT_FILTER_FIELDS;
9467
+ }
9468
+ });
8181
9469
  Object.defineProperty(exports, "TTSProviders", {
8182
9470
  enumerable: true,
8183
9471
  get: function() {
@@ -8268,6 +9556,18 @@ Object.defineProperty(exports, "actionDomainSeparator", {
8268
9556
  return actionDomainSeparator;
8269
9557
  }
8270
9558
  });
9559
+ Object.defineProperty(exports, "actionMetadataFilterFieldSchema", {
9560
+ enumerable: true,
9561
+ get: function() {
9562
+ return actionMetadataFilterFieldSchema;
9563
+ }
9564
+ });
9565
+ Object.defineProperty(exports, "agentInstructionFilterFieldSchema", {
9566
+ enumerable: true,
9567
+ get: function() {
9568
+ return agentInstructionFilterFieldSchema;
9569
+ }
9570
+ });
8271
9571
  Object.defineProperty(exports, "agentsBaseSchema", {
8272
9572
  enumerable: true,
8273
9573
  get: function() {
@@ -8478,6 +9778,12 @@ Object.defineProperty(exports, "checkpointerTypeSchema", {
8478
9778
  return checkpointerTypeSchema;
8479
9779
  }
8480
9780
  });
9781
+ Object.defineProperty(exports, "clampSettingRange", {
9782
+ enumerable: true,
9783
+ get: function() {
9784
+ return clampSettingRange;
9785
+ }
9786
+ });
8481
9787
  Object.defineProperty(exports, "clearAllConversations", {
8482
9788
  enumerable: true,
8483
9789
  get: function() {
@@ -8490,6 +9796,24 @@ Object.defineProperty(exports, "cloudfrontConfigSchema", {
8490
9796
  return cloudfrontConfigSchema;
8491
9797
  }
8492
9798
  });
9799
+ Object.defineProperty(exports, "codeEnvironmentPermissionDecisionSchema", {
9800
+ enumerable: true,
9801
+ get: function() {
9802
+ return codeEnvironmentPermissionDecisionSchema;
9803
+ }
9804
+ });
9805
+ Object.defineProperty(exports, "codeEnvironmentUserConfigSchema", {
9806
+ enumerable: true,
9807
+ get: function() {
9808
+ return codeEnvironmentUserConfigSchema;
9809
+ }
9810
+ });
9811
+ Object.defineProperty(exports, "codeEnvironmentUserSettingsSchema", {
9812
+ enumerable: true,
9813
+ get: function() {
9814
+ return codeEnvironmentUserSettingsSchema;
9815
+ }
9816
+ });
8493
9817
  Object.defineProperty(exports, "codeInterpreterMimeTypes", {
8494
9818
  enumerable: true,
8495
9819
  get: function() {
@@ -8550,6 +9874,18 @@ Object.defineProperty(exports, "contextPruningSchema", {
8550
9874
  return contextPruningSchema;
8551
9875
  }
8552
9876
  });
9877
+ Object.defineProperty(exports, "conversationStarterFilterFieldSchema", {
9878
+ enumerable: true,
9879
+ get: function() {
9880
+ return conversationStarterFilterFieldSchema;
9881
+ }
9882
+ });
9883
+ Object.defineProperty(exports, "conversationTitleFilterFieldSchema", {
9884
+ enumerable: true,
9885
+ get: function() {
9886
+ return conversationTitleFilterFieldSchema;
9887
+ }
9888
+ });
8553
9889
  Object.defineProperty(exports, "convertStringsToRegex", {
8554
9890
  enumerable: true,
8555
9891
  get: function() {
@@ -8808,6 +10144,12 @@ Object.defineProperty(exports, "extractVariableName", {
8808
10144
  return extractVariableName;
8809
10145
  }
8810
10146
  });
10147
+ Object.defineProperty(exports, "feedbackFilterFieldSchema", {
10148
+ enumerable: true,
10149
+ get: function() {
10150
+ return feedbackFilterFieldSchema;
10151
+ }
10152
+ });
8811
10153
  Object.defineProperty(exports, "feedbackRatingSchema", {
8812
10154
  enumerable: true,
8813
10155
  get: function() {
@@ -8838,6 +10180,12 @@ Object.defineProperty(exports, "fileConfigSchema", {
8838
10180
  return fileConfigSchema;
8839
10181
  }
8840
10182
  });
10183
+ Object.defineProperty(exports, "fileFilterFieldSchema", {
10184
+ enumerable: true,
10185
+ get: function() {
10186
+ return fileFilterFieldSchema;
10187
+ }
10188
+ });
8841
10189
  Object.defineProperty(exports, "fileSourceSchema", {
8842
10190
  enumerable: true,
8843
10191
  get: function() {
@@ -8856,6 +10204,36 @@ Object.defineProperty(exports, "fileStrategiesSchema", {
8856
10204
  return fileStrategiesSchema;
8857
10205
  }
8858
10206
  });
10207
+ Object.defineProperty(exports, "filterPiiActionSchema", {
10208
+ enumerable: true,
10209
+ get: function() {
10210
+ return filterPiiActionSchema;
10211
+ }
10212
+ });
10213
+ Object.defineProperty(exports, "filterPiiCustomPatternSchema", {
10214
+ enumerable: true,
10215
+ get: function() {
10216
+ return filterPiiCustomPatternSchema;
10217
+ }
10218
+ });
10219
+ Object.defineProperty(exports, "filterPiiRegexSchema", {
10220
+ enumerable: true,
10221
+ get: function() {
10222
+ return filterPiiRegexSchema;
10223
+ }
10224
+ });
10225
+ Object.defineProperty(exports, "filterPiiStarterPatternSchema", {
10226
+ enumerable: true,
10227
+ get: function() {
10228
+ return filterPiiStarterPatternSchema;
10229
+ }
10230
+ });
10231
+ Object.defineProperty(exports, "filtersConfigSchema", {
10232
+ enumerable: true,
10233
+ get: function() {
10234
+ return filtersConfigSchema;
10235
+ }
10236
+ });
8859
10237
  Object.defineProperty(exports, "fullMimeTypesList", {
8860
10238
  enumerable: true,
8861
10239
  get: function() {
@@ -8952,12 +10330,30 @@ Object.defineProperty(exports, "getEndpointFileConfig", {
8952
10330
  return getEndpointFileConfig;
8953
10331
  }
8954
10332
  });
10333
+ Object.defineProperty(exports, "getGoogleThinkingBudgetBounds", {
10334
+ enumerable: true,
10335
+ get: function() {
10336
+ return getGoogleThinkingBudgetBounds;
10337
+ }
10338
+ });
10339
+ Object.defineProperty(exports, "getGoogleThinkingBudgetMax", {
10340
+ enumerable: true,
10341
+ get: function() {
10342
+ return getGoogleThinkingBudgetMax;
10343
+ }
10344
+ });
8955
10345
  Object.defineProperty(exports, "getMCPServerConnectionStatus", {
8956
10346
  enumerable: true,
8957
10347
  get: function() {
8958
10348
  return getMCPServerConnectionStatus;
8959
10349
  }
8960
10350
  });
10351
+ Object.defineProperty(exports, "getMaxSubagents", {
10352
+ enumerable: true,
10353
+ get: function() {
10354
+ return getMaxSubagents;
10355
+ }
10356
+ });
8961
10357
  Object.defineProperty(exports, "getModelKey", {
8962
10358
  enumerable: true,
8963
10359
  get: function() {
@@ -8970,6 +10366,12 @@ Object.defineProperty(exports, "getModels", {
8970
10366
  return getModels;
8971
10367
  }
8972
10368
  });
10369
+ Object.defineProperty(exports, "getPiiRegexProgramSize", {
10370
+ enumerable: true,
10371
+ get: function() {
10372
+ return getPiiRegexProgramSize;
10373
+ }
10374
+ });
8973
10375
  Object.defineProperty(exports, "getRefillEligibilityDate", {
8974
10376
  enumerable: true,
8975
10377
  get: function() {
@@ -9054,12 +10456,36 @@ Object.defineProperty(exports, "googleSettings", {
9054
10456
  return googleSettings;
9055
10457
  }
9056
10458
  });
10459
+ Object.defineProperty(exports, "hasActiveFiltersConfig", {
10460
+ enumerable: true,
10461
+ get: function() {
10462
+ return hasActiveFiltersConfig;
10463
+ }
10464
+ });
10465
+ Object.defineProperty(exports, "hasActivePiiFields", {
10466
+ enumerable: true,
10467
+ get: function() {
10468
+ return hasActivePiiFields;
10469
+ }
10470
+ });
10471
+ Object.defineProperty(exports, "hasActivePiiPatterns", {
10472
+ enumerable: true,
10473
+ get: function() {
10474
+ return hasActivePiiPatterns;
10475
+ }
10476
+ });
9057
10477
  Object.defineProperty(exports, "hasPermissions", {
9058
10478
  enumerable: true,
9059
10479
  get: function() {
9060
10480
  return hasPermissions;
9061
10481
  }
9062
10482
  });
10483
+ Object.defineProperty(exports, "hasProcessMCPServerConfig", {
10484
+ enumerable: true,
10485
+ get: function() {
10486
+ return hasProcessMCPServerConfig;
10487
+ }
10488
+ });
9063
10489
  Object.defineProperty(exports, "hostImageIdSuffix", {
9064
10490
  enumerable: true,
9065
10491
  get: function() {
@@ -9204,12 +10630,30 @@ Object.defineProperty(exports, "isPermissiveMimeConfig", {
9204
10630
  return isPermissiveMimeConfig;
9205
10631
  }
9206
10632
  });
10633
+ Object.defineProperty(exports, "isProcessMCPServerConfig", {
10634
+ enumerable: true,
10635
+ get: function() {
10636
+ return isProcessMCPServerConfig;
10637
+ }
10638
+ });
10639
+ Object.defineProperty(exports, "isProcessMCPServerField", {
10640
+ enumerable: true,
10641
+ get: function() {
10642
+ return isProcessMCPServerField;
10643
+ }
10644
+ });
9207
10645
  Object.defineProperty(exports, "isRemoteOidcUrlAllowed", {
9208
10646
  enumerable: true,
9209
10647
  get: function() {
9210
10648
  return isRemoteOidcUrlAllowed;
9211
10649
  }
9212
10650
  });
10651
+ Object.defineProperty(exports, "isSecureCodeEnvironmentControlURL", {
10652
+ enumerable: true,
10653
+ get: function() {
10654
+ return isSecureCodeEnvironmentControlURL;
10655
+ }
10656
+ });
9213
10657
  Object.defineProperty(exports, "isSensitiveEnvVar", {
9214
10658
  enumerable: true,
9215
10659
  get: function() {
@@ -9234,6 +10678,12 @@ Object.defineProperty(exports, "loginPage", {
9234
10678
  return loginPage;
9235
10679
  }
9236
10680
  });
10681
+ Object.defineProperty(exports, "materializeModelSpecEndpoints", {
10682
+ enumerable: true,
10683
+ get: function() {
10684
+ return materializeModelSpecEndpoints;
10685
+ }
10686
+ });
9237
10687
  Object.defineProperty(exports, "mbToBytes", {
9238
10688
  enumerable: true,
9239
10689
  get: function() {
@@ -9246,6 +10696,12 @@ Object.defineProperty(exports, "megabyte", {
9246
10696
  return megabyte;
9247
10697
  }
9248
10698
  });
10699
+ Object.defineProperty(exports, "memoryFilterFieldSchema", {
10700
+ enumerable: true,
10701
+ get: function() {
10702
+ return memoryFilterFieldSchema;
10703
+ }
10704
+ });
9249
10705
  Object.defineProperty(exports, "memorySchema", {
9250
10706
  enumerable: true,
9251
10707
  get: function() {
@@ -9258,6 +10714,12 @@ Object.defineProperty(exports, "mergeFileConfig", {
9258
10714
  return mergeFileConfig;
9259
10715
  }
9260
10716
  });
10717
+ Object.defineProperty(exports, "messageFilterFieldSchema", {
10718
+ enumerable: true,
10719
+ get: function() {
10720
+ return messageFilterFieldSchema;
10721
+ }
10722
+ });
9261
10723
  Object.defineProperty(exports, "messageFilterPiiSchema", {
9262
10724
  enumerable: true,
9263
10725
  get: function() {
@@ -9282,6 +10744,12 @@ Object.defineProperty(exports, "modelConfigSchema", {
9282
10744
  return modelConfigSchema;
9283
10745
  }
9284
10746
  });
10747
+ Object.defineProperty(exports, "modelParameterFilterFieldSchema", {
10748
+ enumerable: true,
10749
+ get: function() {
10750
+ return modelParameterFilterFieldSchema;
10751
+ }
10752
+ });
9285
10753
  Object.defineProperty(exports, "modelSpecSubagentsSchema", {
9286
10754
  enumerable: true,
9287
10755
  get: function() {
@@ -9306,6 +10774,12 @@ Object.defineProperty(exports, "normalizeMCPToolKey", {
9306
10774
  return normalizeMCPToolKey;
9307
10775
  }
9308
10776
  });
10777
+ Object.defineProperty(exports, "normalizeSearxngEngines", {
10778
+ enumerable: true,
10779
+ get: function() {
10780
+ return normalizeSearxngEngines;
10781
+ }
10782
+ });
9309
10783
  Object.defineProperty(exports, "normalizeServerName", {
9310
10784
  enumerable: true,
9311
10785
  get: function() {
@@ -9372,6 +10846,12 @@ Object.defineProperty(exports, "principalSchema", {
9372
10846
  return principalSchema;
9373
10847
  }
9374
10848
  });
10849
+ Object.defineProperty(exports, "promptFilterFieldSchema", {
10850
+ enumerable: true,
10851
+ get: function() {
10852
+ return promptFilterFieldSchema;
10853
+ }
10854
+ });
9375
10855
  Object.defineProperty(exports, "providerEndpointMap", {
9376
10856
  enumerable: true,
9377
10857
  get: function() {
@@ -9426,12 +10906,36 @@ Object.defineProperty(exports, "resetPassword", {
9426
10906
  return resetPassword;
9427
10907
  }
9428
10908
  });
10909
+ Object.defineProperty(exports, "resolveAgentSkillsScope", {
10910
+ enumerable: true,
10911
+ get: function() {
10912
+ return resolveAgentSkillsScope;
10913
+ }
10914
+ });
10915
+ Object.defineProperty(exports, "resolveAllowedStatefulCodeEnvironments", {
10916
+ enumerable: true,
10917
+ get: function() {
10918
+ return resolveAllowedStatefulCodeEnvironments;
10919
+ }
10920
+ });
9429
10921
  Object.defineProperty(exports, "resolveEndpointType", {
9430
10922
  enumerable: true,
9431
10923
  get: function() {
9432
10924
  return resolveEndpointType;
9433
10925
  }
9434
10926
  });
10927
+ Object.defineProperty(exports, "resolveModelSpecEndpoint", {
10928
+ enumerable: true,
10929
+ get: function() {
10930
+ return resolveModelSpecEndpoint;
10931
+ }
10932
+ });
10933
+ Object.defineProperty(exports, "resolveStatefulCodeEnvironment", {
10934
+ enumerable: true,
10935
+ get: function() {
10936
+ return resolveStatefulCodeEnvironment;
10937
+ }
10938
+ });
9435
10939
  Object.defineProperty(exports, "resourcePermissionsResponseSchema", {
9436
10940
  enumerable: true,
9437
10941
  get: function() {
@@ -9486,6 +10990,12 @@ Object.defineProperty(exports, "setFileConfigRegexCompiler", {
9486
10990
  return setFileConfigRegexCompiler;
9487
10991
  }
9488
10992
  });
10993
+ Object.defineProperty(exports, "setMaxSubagents", {
10994
+ enumerable: true,
10995
+ get: function() {
10996
+ return setMaxSubagents;
10997
+ }
10998
+ });
9489
10999
  Object.defineProperty(exports, "setMessageFilterRegexValidator", {
9490
11000
  enumerable: true,
9491
11001
  get: function() {
@@ -9504,6 +11014,12 @@ Object.defineProperty(exports, "sharedFileDownload", {
9504
11014
  return sharedFileDownload;
9505
11015
  }
9506
11016
  });
11017
+ Object.defineProperty(exports, "skillFilterFieldSchema", {
11018
+ enumerable: true,
11019
+ get: function() {
11020
+ return skillFilterFieldSchema;
11021
+ }
11022
+ });
9507
11023
  Object.defineProperty(exports, "skillSyncConfigSchema", {
9508
11024
  enumerable: true,
9509
11025
  get: function() {
@@ -9540,6 +11056,24 @@ Object.defineProperty(exports, "splitToolCallName", {
9540
11056
  return splitToolCallName;
9541
11057
  }
9542
11058
  });
11059
+ Object.defineProperty(exports, "stripServerNamePrefix", {
11060
+ enumerable: true,
11061
+ get: function() {
11062
+ return stripServerNamePrefix;
11063
+ }
11064
+ });
11065
+ Object.defineProperty(exports, "stripServerNamePrefixes", {
11066
+ enumerable: true,
11067
+ get: function() {
11068
+ return stripServerNamePrefixes;
11069
+ }
11070
+ });
11071
+ Object.defineProperty(exports, "subagentThreadLineageSchema", {
11072
+ enumerable: true,
11073
+ get: function() {
11074
+ return subagentThreadLineageSchema;
11075
+ }
11076
+ });
9543
11077
  Object.defineProperty(exports, "summarizationConfigSchema", {
9544
11078
  enumerable: true,
9545
11079
  get: function() {
@@ -9678,6 +11212,12 @@ Object.defineProperty(exports, "toolApprovalPolicySchema", {
9678
11212
  return toolApprovalPolicySchema;
9679
11213
  }
9680
11214
  });
11215
+ Object.defineProperty(exports, "toolArgumentFilterFieldSchema", {
11216
+ enumerable: true,
11217
+ get: function() {
11218
+ return toolArgumentFilterFieldSchema;
11219
+ }
11220
+ });
9681
11221
  Object.defineProperty(exports, "transactionsSchema", {
9682
11222
  enumerable: true,
9683
11223
  get: function() {
@@ -9696,6 +11236,12 @@ Object.defineProperty(exports, "turnstileSchema", {
9696
11236
  return turnstileSchema;
9697
11237
  }
9698
11238
  });
11239
+ Object.defineProperty(exports, "unattributedAssistantContentSchema", {
11240
+ enumerable: true,
11241
+ get: function() {
11242
+ return unattributedAssistantContentSchema;
11243
+ }
11244
+ });
9699
11245
  Object.defineProperty(exports, "updateFeedback", {
9700
11246
  enumerable: true,
9701
11247
  get: function() {
@@ -9756,6 +11302,12 @@ Object.defineProperty(exports, "userKeyQuery", {
9756
11302
  return userKeyQuery;
9757
11303
  }
9758
11304
  });
11305
+ Object.defineProperty(exports, "userSubmittedMessageFieldPathSchema", {
11306
+ enumerable: true,
11307
+ get: function() {
11308
+ return userSubmittedMessageFieldPathSchema;
11309
+ }
11310
+ });
9759
11311
  Object.defineProperty(exports, "validateSettingDefinitions", {
9760
11312
  enumerable: true,
9761
11313
  get: function() {
@@ -9799,4 +11351,4 @@ Object.defineProperty(exports, "webSearchSchema", {
9799
11351
  }
9800
11352
  });
9801
11353
 
9802
- //# sourceMappingURL=data-service-DOIF4BkW.js.map
11354
+ //# sourceMappingURL=data-service-D5kHzBt-.js.map