librechat-data-provider 0.8.522 → 0.8.523
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{data-service-CaB7saTP.mjs → data-service-Bx6IFaSa.mjs} +638 -27
- package/dist/data-service-Bx6IFaSa.mjs.map +1 -0
- package/dist/{data-service-D5kHzBt-.js → data-service-CTX0tVO5.js} +871 -26
- package/dist/data-service-CTX0tVO5.js.map +1 -0
- package/dist/index.js +557 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +491 -20
- package/dist/index.mjs.map +1 -1
- package/dist/react-query/index.js +1 -1
- package/dist/react-query/index.mjs +1 -1
- package/dist/types/accessPermissions.d.ts +54 -1
- package/dist/types/api-endpoints.d.ts +6 -0
- package/dist/types/bedrock.d.ts +80 -20
- package/dist/types/code/approval.d.ts +26 -0
- package/dist/types/code/worker.d.ts +10 -0
- package/dist/types/code/workspace.d.ts +28 -0
- package/dist/types/codeEnvRef.d.ts +5 -0
- package/dist/types/config.d.ts +6062 -3828
- package/dist/types/data-service.d.ts +8 -0
- package/dist/types/errors.d.ts +2 -0
- package/dist/types/file-config.d.ts +137 -9
- package/dist/types/filters.d.ts +176 -176
- package/dist/types/generate.d.ts +28 -4
- package/dist/types/index.d.ts +7 -0
- package/dist/types/keys.d.ts +11 -1
- package/dist/types/mcp.d.ts +336 -330
- package/dist/types/messages.d.ts +19 -0
- package/dist/types/models.d.ts +367 -238
- package/dist/types/parameterSettings.d.ts +8 -0
- package/dist/types/providers.d.ts +1 -0
- package/dist/types/resolve-llm-delivery-path.d.ts +68 -0
- package/dist/types/schemas.d.ts +628 -317
- package/dist/types/svg.d.ts +34 -0
- package/dist/types/types/agents.d.ts +24 -0
- package/dist/types/types/assistants.d.ts +27 -3
- package/dist/types/types/files.d.ts +34 -0
- package/dist/types/types/insights.d.ts +9 -0
- package/dist/types/types/queries.d.ts +8 -1
- package/dist/types/types/queuedTurns.d.ts +16 -16
- package/dist/types/types/runs.d.ts +24 -5
- package/dist/types/types/schedules.d.ts +44 -11
- package/dist/types/types/traces.d.ts +85 -0
- package/dist/types/types.d.ts +41 -1
- package/package.json +2 -2
- package/dist/data-service-CaB7saTP.mjs.map +0 -1
- package/dist/data-service-D5kHzBt-.js.map +0 -1
|
@@ -330,6 +330,52 @@ const filtersConfigSchema = z.object({
|
|
|
330
330
|
});
|
|
331
331
|
});
|
|
332
332
|
//#endregion
|
|
333
|
+
//#region src/code/workspace.ts
|
|
334
|
+
const CODE_WORKSPACE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
|
|
335
|
+
/** Protocol-v1 ceiling enforced by the worker and Code API. */
|
|
336
|
+
const CODE_WORKSPACE_MAX_COUNT = 32;
|
|
337
|
+
/** API/client protocol for immutable conversation-owned environment decisions. */
|
|
338
|
+
const CODE_ENVIRONMENT_DECISION_VERSION = 1;
|
|
339
|
+
const CODE_WORKSPACE_OPERATIONS = [
|
|
340
|
+
"read_file",
|
|
341
|
+
"search_text",
|
|
342
|
+
"list_files",
|
|
343
|
+
"write_file",
|
|
344
|
+
"preview_edit",
|
|
345
|
+
"edit_file",
|
|
346
|
+
"execute_command"
|
|
347
|
+
];
|
|
348
|
+
const CODE_WORKSPACE_SELECTION_ERROR_REASONS = [
|
|
349
|
+
"required",
|
|
350
|
+
"invalid",
|
|
351
|
+
"worker_unavailable",
|
|
352
|
+
"unsupported",
|
|
353
|
+
"missing",
|
|
354
|
+
"locked"
|
|
355
|
+
];
|
|
356
|
+
const CODE_ENVIRONMENT_MODES = ["attached", "without_attached"];
|
|
357
|
+
function isCodeEnvironmentMode(value) {
|
|
358
|
+
return CODE_ENVIRONMENT_MODES.some((mode) => mode === value);
|
|
359
|
+
}
|
|
360
|
+
function isCodeWorkspaceSelectionErrorReason(value) {
|
|
361
|
+
return CODE_WORKSPACE_SELECTION_ERROR_REASONS.some((reason) => reason === value);
|
|
362
|
+
}
|
|
363
|
+
function isCodeWorkspaceSelection(value) {
|
|
364
|
+
if (value == null || typeof value !== "object" || Array.isArray(value)) return false;
|
|
365
|
+
const selection = value;
|
|
366
|
+
return Object.keys(selection).every((key) => key === "environmentId" || key === "workspaceId") && typeof selection.environmentId === "string" && CODE_WORKSPACE_ID_PATTERN.test(selection.environmentId) && typeof selection.workspaceId === "string" && CODE_WORKSPACE_ID_PATTERN.test(selection.workspaceId);
|
|
367
|
+
}
|
|
368
|
+
/** One exact workspace per attached environment used by a conversation. */
|
|
369
|
+
function isCodeWorkspaceSelections(value) {
|
|
370
|
+
if (!Array.isArray(value)) return false;
|
|
371
|
+
const environmentIds = /* @__PURE__ */ new Set();
|
|
372
|
+
return value.every((selection) => {
|
|
373
|
+
if (!isCodeWorkspaceSelection(selection) || environmentIds.has(selection.environmentId)) return false;
|
|
374
|
+
environmentIds.add(selection.environmentId);
|
|
375
|
+
return true;
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
//#endregion
|
|
333
379
|
//#region src/feedback.ts
|
|
334
380
|
const FEEDBACK_RATINGS = ["thumbsUp", "thumbsDown"];
|
|
335
381
|
const FEEDBACK_REASON_KEYS = [
|
|
@@ -439,6 +485,63 @@ function getTagByKey(key) {
|
|
|
439
485
|
return FEEDBACK_TAGS.find((tag) => tag.key === key);
|
|
440
486
|
}
|
|
441
487
|
//#endregion
|
|
488
|
+
//#region src/code/approval.ts
|
|
489
|
+
const CODE_APPROVAL_MODES = [
|
|
490
|
+
"ask",
|
|
491
|
+
"acceptEdits",
|
|
492
|
+
"fullAccess"
|
|
493
|
+
];
|
|
494
|
+
const MODE_PERMISSIONS = {
|
|
495
|
+
ask: {
|
|
496
|
+
fileWrite: "ask",
|
|
497
|
+
commandExecution: "ask"
|
|
498
|
+
},
|
|
499
|
+
acceptEdits: {
|
|
500
|
+
fileWrite: "allow",
|
|
501
|
+
commandExecution: "ask"
|
|
502
|
+
},
|
|
503
|
+
fullAccess: {
|
|
504
|
+
fileWrite: "allow",
|
|
505
|
+
commandExecution: "allow"
|
|
506
|
+
}
|
|
507
|
+
};
|
|
508
|
+
/** Omitted deployment configuration never grants unattended execution. */
|
|
509
|
+
function getAllowedCodeApprovalModes({ enabled, allowedModes, configSchema, settings, environment }) {
|
|
510
|
+
if (enabled === false) return [];
|
|
511
|
+
const permitted = new Set(allowedModes ?? ["ask"]);
|
|
512
|
+
return CODE_APPROVAL_MODES.filter((mode) => {
|
|
513
|
+
if (!permitted.has(mode)) return false;
|
|
514
|
+
if (environment === "managed") return true;
|
|
515
|
+
for (const category of ["fileWrite", "commandExecution"]) {
|
|
516
|
+
if (MODE_PERMISSIONS[mode][category] !== "allow") continue;
|
|
517
|
+
const field = configSchema?.permissions?.[category];
|
|
518
|
+
const configured = settings?.permissions?.[category];
|
|
519
|
+
if ((configured != null && field?.allowed.includes(configured) === true ? configured : field?.default ?? "ask") === "deny" || field?.allowed.includes("allow") !== true) return false;
|
|
520
|
+
}
|
|
521
|
+
return true;
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
var CodeApprovalModeError = class extends Error {
|
|
525
|
+
constructor() {
|
|
526
|
+
super("The selected code approval mode is not permitted by the current policy.");
|
|
527
|
+
this.code = "CODE_APPROVAL_MODE_NOT_ALLOWED";
|
|
528
|
+
this.name = "CodeApprovalModeError";
|
|
529
|
+
}
|
|
530
|
+
};
|
|
531
|
+
/** Validate untrusted request state again at admission, including after policy changes. */
|
|
532
|
+
function resolveCodeApprovalMode(requested, constraints) {
|
|
533
|
+
if (requested == null) return void 0;
|
|
534
|
+
const selected = getAllowedCodeApprovalModes(constraints).find((mode) => mode === requested);
|
|
535
|
+
if (selected == null) throw new CodeApprovalModeError();
|
|
536
|
+
return selected;
|
|
537
|
+
}
|
|
538
|
+
/** Apply a turn preference without modifying machine settings or overriding an existing deny. */
|
|
539
|
+
function resolveCodePermissionDecision({ mode, category, decision }) {
|
|
540
|
+
if (mode == null || decision === "deny") return decision;
|
|
541
|
+
if (MODE_PERMISSIONS[mode] == null) throw new CodeApprovalModeError();
|
|
542
|
+
return MODE_PERMISSIONS[mode][category];
|
|
543
|
+
}
|
|
544
|
+
//#endregion
|
|
442
545
|
//#region src/stateful-code.ts
|
|
443
546
|
const STATEFUL_CODE_ENVIRONMENTS = [
|
|
444
547
|
"user",
|
|
@@ -482,6 +585,10 @@ let EToolResources = /* @__PURE__ */ function(EToolResources) {
|
|
|
482
585
|
EToolResources["ocr"] = "ocr";
|
|
483
586
|
return EToolResources;
|
|
484
587
|
}({});
|
|
588
|
+
const agentGitIdentitySchema = z.object({
|
|
589
|
+
name: z.string().trim().min(1).max(128).refine((value) => !/[\0\r\n]/.test(value)),
|
|
590
|
+
email: z.string().trim().email().max(254).refine((value) => !/[\0\r\n]/.test(value))
|
|
591
|
+
}).optional();
|
|
485
592
|
let AnnotationTypes = /* @__PURE__ */ function(AnnotationTypes) {
|
|
486
593
|
AnnotationTypes["FILE_CITATION"] = "file_citation";
|
|
487
594
|
AnnotationTypes["FILE_PATH"] = "file_path";
|
|
@@ -673,7 +780,35 @@ const inputTokensIncludesCache = (provider) => {
|
|
|
673
780
|
return cacheSubsetProviders.has(provider ?? "");
|
|
674
781
|
};
|
|
675
782
|
const isDocumentSupportedProvider = (provider) => {
|
|
676
|
-
|
|
783
|
+
const normalized = provider?.toLowerCase() ?? "";
|
|
784
|
+
return Array.from(documentSupportedProviders).some((candidate) => candidate.toLowerCase() === normalized);
|
|
785
|
+
};
|
|
786
|
+
/**
|
|
787
|
+
* Endpoints whose encoders actually build native audio/video payloads. Narrower than
|
|
788
|
+
* `documentSupportedProviders`: a provider can accept PDFs and still emit nothing for
|
|
789
|
+
* media, in which case the upload has to fall back to text/STT.
|
|
790
|
+
*/
|
|
791
|
+
const mediaSupportedProviders = new Set([
|
|
792
|
+
"google",
|
|
793
|
+
"vertexai",
|
|
794
|
+
"openrouter"
|
|
795
|
+
]);
|
|
796
|
+
const isMediaSupportedProvider = (provider) => {
|
|
797
|
+
return mediaSupportedProviders.has(provider?.toLowerCase() ?? "");
|
|
798
|
+
};
|
|
799
|
+
/**
|
|
800
|
+
* Built-in endpoint and provider identifiers. A name outside this set is a custom
|
|
801
|
+
* endpoint whose real provider is resolved at request time, so its capabilities
|
|
802
|
+
* cannot be judged from the name alone.
|
|
803
|
+
*/
|
|
804
|
+
const knownProviderIdentifiers = new Set([
|
|
805
|
+
...Object.values(EModelEndpoint),
|
|
806
|
+
...Object.values(Providers),
|
|
807
|
+
...Object.values(EModelEndpoint).map((provider) => provider.toLowerCase()),
|
|
808
|
+
...Object.values(Providers).map((provider) => provider.toLowerCase())
|
|
809
|
+
]);
|
|
810
|
+
const isKnownProviderIdentifier = (provider) => {
|
|
811
|
+
return knownProviderIdentifiers.has(provider?.toLowerCase() ?? "");
|
|
677
812
|
};
|
|
678
813
|
const paramEndpoints = new Set([
|
|
679
814
|
"agents",
|
|
@@ -876,6 +1011,7 @@ const defaultAgentFormValues = {
|
|
|
876
1011
|
["memory"]: false,
|
|
877
1012
|
stateful_code_environment: "user",
|
|
878
1013
|
code_environment_id: void 0,
|
|
1014
|
+
code_workspace_id: void 0,
|
|
879
1015
|
category: "general",
|
|
880
1016
|
support_contact: {
|
|
881
1017
|
name: "",
|
|
@@ -1366,6 +1502,12 @@ const tConversationSchema = z.object({
|
|
|
1366
1502
|
pinned: z.boolean().optional(),
|
|
1367
1503
|
/** Server-derived: an active shared link exists for this conversation. Not persisted. */
|
|
1368
1504
|
isShared: z.boolean().optional(),
|
|
1505
|
+
codeApprovalMode: z.enum(CODE_APPROVAL_MODES).optional(),
|
|
1506
|
+
codeEnvironmentMode: z.enum(CODE_ENVIRONMENT_MODES).optional(),
|
|
1507
|
+
codeWorkspaces: z.array(z.object({
|
|
1508
|
+
environmentId: z.string().regex(CODE_WORKSPACE_ID_PATTERN),
|
|
1509
|
+
workspaceId: z.string().regex(CODE_WORKSPACE_ID_PATTERN)
|
|
1510
|
+
}).strict()).optional(),
|
|
1369
1511
|
title: z.string().nullable().or(z.literal("New Chat")).default("New Chat"),
|
|
1370
1512
|
user: z.string().optional(),
|
|
1371
1513
|
messages: z.array(z.string()).optional(),
|
|
@@ -2269,6 +2411,7 @@ const MAX_GRAPH_SUBAGENT_MEMBERS = 32;
|
|
|
2269
2411
|
const modelSpecSubagentsSchema = z.object({
|
|
2270
2412
|
enabled: z.boolean().optional(),
|
|
2271
2413
|
allowSelf: z.boolean().optional(),
|
|
2414
|
+
shareFiles: z.boolean().optional(),
|
|
2272
2415
|
agent_ids: z.array(z.string()).optional()
|
|
2273
2416
|
}).superRefine((subagents, ctx) => {
|
|
2274
2417
|
const maxSubagents = getMaxSubagents();
|
|
@@ -2550,6 +2693,49 @@ const bedrockDocumentFormats = {
|
|
|
2550
2693
|
"text/plain": "txt",
|
|
2551
2694
|
"text/markdown": "md"
|
|
2552
2695
|
};
|
|
2696
|
+
/**
|
|
2697
|
+
* Whether an upload belongs to the conversation rather than to the agent. The value
|
|
2698
|
+
* arrives from multipart form data, so it can be the string "false", which is truthy.
|
|
2699
|
+
* Shared so the route, the authorization check and processing cannot disagree about it.
|
|
2700
|
+
*/
|
|
2701
|
+
const isMessageFileUpload = (value) => value === true || value === "true";
|
|
2702
|
+
/**
|
|
2703
|
+
* Whether the upload's conversation uses the Responses API, which decides whether Azure
|
|
2704
|
+
* can carry a document natively. Multipart form data has no booleans, so it arrives as
|
|
2705
|
+
* the string "true".
|
|
2706
|
+
*/
|
|
2707
|
+
const isResponsesApiUpload = (value) => value === true || value === "true";
|
|
2708
|
+
/**
|
|
2709
|
+
* The name a file carries inside the code sandbox.
|
|
2710
|
+
*
|
|
2711
|
+
* Image uploads are converted to the configured output type while the record keeps the
|
|
2712
|
+
* original filename, so the extension has to follow the stored bytes or the sandbox
|
|
2713
|
+
* decoder is handed a mismatch. Provisioning and priming both resolve the mount path
|
|
2714
|
+
* from here: deriving it twice under different rules leaves a later turn advertising a
|
|
2715
|
+
* path that does not exist in the sandbox.
|
|
2716
|
+
*/
|
|
2717
|
+
const resolveSandboxFilename = (filename, mimeType) => {
|
|
2718
|
+
if (!mimeType?.startsWith("image/")) return filename;
|
|
2719
|
+
const subtype = mimeType.slice(6);
|
|
2720
|
+
if (![
|
|
2721
|
+
"webp",
|
|
2722
|
+
"png",
|
|
2723
|
+
"jpeg",
|
|
2724
|
+
"gif"
|
|
2725
|
+
].includes(subtype)) return filename;
|
|
2726
|
+
const accepted = subtype === "jpeg" ? [".jpg", ".jpeg"] : [`.${subtype}`];
|
|
2727
|
+
const lastDot = filename.lastIndexOf(".");
|
|
2728
|
+
const currentExt = lastDot > 0 ? filename.slice(lastDot).toLowerCase() : "";
|
|
2729
|
+
if (accepted.includes(currentExt)) return filename;
|
|
2730
|
+
return `${lastDot > 0 ? filename.slice(0, lastDot) : filename}${accepted[0]}`;
|
|
2731
|
+
};
|
|
2732
|
+
/**
|
|
2733
|
+
* The Responses setting a turn actually runs on. A saved agent's own record wins, since
|
|
2734
|
+
* execution reads its model parameters; a conversation only answers for itself. Upload
|
|
2735
|
+
* and delivery must agree here, or a document is stored as raw provider content and then
|
|
2736
|
+
* re-resolved to text it has no extraction for.
|
|
2737
|
+
*/
|
|
2738
|
+
const resolveUseResponsesApi = (agentValue, conversationValue) => agentValue ?? conversationValue ?? void 0;
|
|
2553
2739
|
const isBedrockDocumentType = (mimeType) => mimeType != null && mimeType in bedrockDocumentFormats;
|
|
2554
2740
|
/** MIME types Bedrock's Converse document path can send to the model (mirrors `bedrockDocumentFormats`). */
|
|
2555
2741
|
const bedrockDocumentMimeTypes = Object.keys(bedrockDocumentFormats);
|
|
@@ -2783,6 +2969,8 @@ const mbToBytes = (mb) => mb * megabyte;
|
|
|
2783
2969
|
const defaultSizeLimit = mbToBytes(512);
|
|
2784
2970
|
const defaultSkillImportSizeLimit = mbToBytes(50);
|
|
2785
2971
|
const defaultTokenLimit = 1e5;
|
|
2972
|
+
const defaultContextSizeLimit = mbToBytes(128);
|
|
2973
|
+
const defaultContextCharLimit = 1e6;
|
|
2786
2974
|
const assistantsFileConfig = {
|
|
2787
2975
|
fileLimit: 10,
|
|
2788
2976
|
fileSizeLimit: defaultSizeLimit,
|
|
@@ -2814,6 +3002,8 @@ const fileConfig = {
|
|
|
2814
3002
|
serverFileSizeLimit: defaultSizeLimit,
|
|
2815
3003
|
avatarSizeLimit: mbToBytes(2),
|
|
2816
3004
|
fileTokenLimit: defaultTokenLimit,
|
|
3005
|
+
fileContextSizeLimit: defaultContextSizeLimit,
|
|
3006
|
+
fileContextCharLimit: defaultContextCharLimit,
|
|
2817
3007
|
clientImageResize: {
|
|
2818
3008
|
enabled: false,
|
|
2819
3009
|
maxWidth: 1900,
|
|
@@ -2829,12 +3019,23 @@ const fileConfig = {
|
|
|
2829
3019
|
}
|
|
2830
3020
|
};
|
|
2831
3021
|
const supportedMimeTypesSchema = z.array(z.string()).optional();
|
|
3022
|
+
const DefaultLLMDeliveryPath = z.enum([
|
|
3023
|
+
"provider",
|
|
3024
|
+
"text",
|
|
3025
|
+
"none"
|
|
3026
|
+
]);
|
|
3027
|
+
const defaultLLMDeliveryPathSchema = z.object({
|
|
3028
|
+
fallback: DefaultLLMDeliveryPath.optional(),
|
|
3029
|
+
overrides: z.record(DefaultLLMDeliveryPath).optional()
|
|
3030
|
+
});
|
|
2832
3031
|
const endpointFileConfigSchema = z.object({
|
|
2833
3032
|
disabled: z.boolean().optional(),
|
|
2834
3033
|
fileLimit: z.number().min(0).optional(),
|
|
2835
3034
|
fileSizeLimit: z.number().min(0).optional(),
|
|
2836
3035
|
totalSizeLimit: z.number().min(0).optional(),
|
|
2837
|
-
supportedMimeTypes: supportedMimeTypesSchema.optional()
|
|
3036
|
+
supportedMimeTypes: supportedMimeTypesSchema.optional(),
|
|
3037
|
+
defaultLLMDeliveryPath: defaultLLMDeliveryPathSchema.optional(),
|
|
3038
|
+
legacyFileUploadUX: z.boolean().optional()
|
|
2838
3039
|
});
|
|
2839
3040
|
const skillFileConfigSchema = z.object({ fileSizeLimit: z.number().min(0).optional() });
|
|
2840
3041
|
const fileConfigSchema = z.object({
|
|
@@ -2843,6 +3044,9 @@ const fileConfigSchema = z.object({
|
|
|
2843
3044
|
serverFileSizeLimit: z.number().min(0).optional(),
|
|
2844
3045
|
avatarSizeLimit: z.number().min(0).optional(),
|
|
2845
3046
|
fileTokenLimit: z.number().min(0).optional(),
|
|
3047
|
+
fileContextSizeLimit: z.number().min(0).optional(),
|
|
3048
|
+
fileContextCharLimit: z.number().min(0).optional(),
|
|
3049
|
+
codeEnvLivenessSafeWindowMs: z.number().min(0).optional(),
|
|
2846
3050
|
imageGeneration: z.object({
|
|
2847
3051
|
percentage: z.number().min(0).max(100).optional(),
|
|
2848
3052
|
px: z.number().min(0).optional()
|
|
@@ -2854,7 +3058,9 @@ const fileConfigSchema = z.object({
|
|
|
2854
3058
|
quality: z.number().min(0).max(1).optional()
|
|
2855
3059
|
}).optional(),
|
|
2856
3060
|
ocr: z.object({ supportedMimeTypes: supportedMimeTypesSchema.optional() }).optional(),
|
|
2857
|
-
text: z.object({ supportedMimeTypes: supportedMimeTypesSchema.optional() }).optional()
|
|
3061
|
+
text: z.object({ supportedMimeTypes: supportedMimeTypesSchema.optional() }).optional(),
|
|
3062
|
+
defaultLLMDeliveryPath: defaultLLMDeliveryPathSchema.optional(),
|
|
3063
|
+
legacyFileUploadUX: z.boolean().optional()
|
|
2858
3064
|
});
|
|
2859
3065
|
/**
|
|
2860
3066
|
* Compiler for admin-supplied MIME patterns. Defaults to native `RegExp`, which browser
|
|
@@ -2990,6 +3196,12 @@ const documentMimeExtensions = [
|
|
|
2990
3196
|
["text/calendar", [".ics"]],
|
|
2991
3197
|
["message/rfc822", [".eml"]]
|
|
2992
3198
|
];
|
|
3199
|
+
/** Preferred extension for a known document MIME type, including its leading dot. */
|
|
3200
|
+
function getDocumentFileExtension(mimeType) {
|
|
3201
|
+
const normalized = mimeType?.split(";", 1)[0].trim().toLowerCase();
|
|
3202
|
+
const canonical = normalized === "text/comma-separated-values" ? "text/csv" : normalized;
|
|
3203
|
+
return documentMimeExtensions.find(([type]) => type === canonical)?.[1][0];
|
|
3204
|
+
}
|
|
2993
3205
|
const documentMimeSet = new Set(documentMimeExtensions.map(([mimeType]) => mimeType));
|
|
2994
3206
|
/** Every MIME type LibreChat may accept, used to detect patterns that reach beyond the representable set. */
|
|
2995
3207
|
const knownMimeUniverse = Array.from(new Set([
|
|
@@ -3083,7 +3295,45 @@ function mergeWithDefault(endpointConfig, defaultConfig, endpoint) {
|
|
|
3083
3295
|
fileLimit: endpointConfig.fileLimit ?? defaultConfig.fileLimit,
|
|
3084
3296
|
fileSizeLimit: endpointConfig.fileSizeLimit ?? defaultConfig.fileSizeLimit,
|
|
3085
3297
|
totalSizeLimit: endpointConfig.totalSizeLimit ?? defaultConfig.totalSizeLimit,
|
|
3086
|
-
supportedMimeTypes: endpointConfig.supportedMimeTypes ?? defaultMimeTypes
|
|
3298
|
+
supportedMimeTypes: endpointConfig.supportedMimeTypes ?? defaultMimeTypes,
|
|
3299
|
+
defaultLLMDeliveryPath: mergeDeliveryPathConfig(endpointConfig.defaultLLMDeliveryPath, defaultConfig.defaultLLMDeliveryPath),
|
|
3300
|
+
legacyFileUploadUX: endpointConfig.legacyFileUploadUX ?? defaultConfig.legacyFileUploadUX
|
|
3301
|
+
};
|
|
3302
|
+
}
|
|
3303
|
+
/**
|
|
3304
|
+
* Deep-merges delivery-path config so an endpoint that supplies only one override
|
|
3305
|
+
* still inherits the default's fallback and shared overrides. Whole-object
|
|
3306
|
+
* replacement would silently drop the inherited routing.
|
|
3307
|
+
*/
|
|
3308
|
+
function mergeDeliveryPathConfig(endpointValue, defaultValue) {
|
|
3309
|
+
if (!endpointValue) return defaultValue;
|
|
3310
|
+
if (!defaultValue) return endpointValue;
|
|
3311
|
+
if (endpointValue.fallback != null) return endpointValue;
|
|
3312
|
+
const hasOverrides = endpointValue.overrides != null || defaultValue.overrides != null;
|
|
3313
|
+
return {
|
|
3314
|
+
...defaultValue.fallback != null ? { fallback: defaultValue.fallback } : {},
|
|
3315
|
+
...hasOverrides ? { overrides: { ...shadowByWildcard(defaultValue.overrides, endpointValue.overrides) } } : {}
|
|
3316
|
+
};
|
|
3317
|
+
}
|
|
3318
|
+
/**
|
|
3319
|
+
* Flattens two override layers into one map that still resolves like the layered chain.
|
|
3320
|
+
* Resolution reads exact keys before wildcards, so a plain spread would let a lower
|
|
3321
|
+
* layer's `image/png` outrank the upper layer's `image/*`. Dropping the entries an
|
|
3322
|
+
* upper wildcard covers restores precedence without changing how lookups work.
|
|
3323
|
+
*/
|
|
3324
|
+
function shadowByWildcard(lower, upper) {
|
|
3325
|
+
if (!lower) return { ...upper };
|
|
3326
|
+
const upperWildcards = /* @__PURE__ */ new Set();
|
|
3327
|
+
for (const key in upper) if (key.endsWith("/*")) upperWildcards.add(key.slice(0, -1));
|
|
3328
|
+
if (upperWildcards.size === 0) return {
|
|
3329
|
+
...lower,
|
|
3330
|
+
...upper
|
|
3331
|
+
};
|
|
3332
|
+
const retained = {};
|
|
3333
|
+
for (const key in lower) if (!(!key.endsWith("/*") && upperWildcards.has(key.slice(0, key.indexOf("/") + 1)) && upper?.[key] == null)) retained[key] = lower[key];
|
|
3334
|
+
return {
|
|
3335
|
+
...retained,
|
|
3336
|
+
...upper
|
|
3087
3337
|
};
|
|
3088
3338
|
}
|
|
3089
3339
|
function getEndpointFileConfig(params) {
|
|
@@ -3091,8 +3341,13 @@ function getEndpointFileConfig(params) {
|
|
|
3091
3341
|
if (!mergedFileConfig?.endpoints) return fileConfig.endpoints.default;
|
|
3092
3342
|
/** Compute an effective default by merging user-configured default over the base default */
|
|
3093
3343
|
const baseDefaultConfig = fileConfig.endpoints.default;
|
|
3344
|
+
const globalDefaultConfig = {
|
|
3345
|
+
...baseDefaultConfig,
|
|
3346
|
+
defaultLLMDeliveryPath: mergeDeliveryPathConfig(mergedFileConfig.defaultLLMDeliveryPath, baseDefaultConfig.defaultLLMDeliveryPath),
|
|
3347
|
+
legacyFileUploadUX: mergedFileConfig.legacyFileUploadUX ?? baseDefaultConfig.legacyFileUploadUX
|
|
3348
|
+
};
|
|
3094
3349
|
const userDefaultConfig = mergedFileConfig.endpoints.default;
|
|
3095
|
-
const defaultConfig = userDefaultConfig ? mergeWithDefault(userDefaultConfig,
|
|
3350
|
+
const defaultConfig = userDefaultConfig ? mergeWithDefault(userDefaultConfig, globalDefaultConfig, "default") : globalDefaultConfig;
|
|
3096
3351
|
const normalizedEndpoint = normalizeEndpointName(endpoint ?? "");
|
|
3097
3352
|
const standardEndpoints = new Set([
|
|
3098
3353
|
"default",
|
|
@@ -3147,9 +3402,13 @@ function mergeFileConfig(dynamic) {
|
|
|
3147
3402
|
}
|
|
3148
3403
|
};
|
|
3149
3404
|
if (!dynamic) return mergedConfig;
|
|
3405
|
+
if (dynamic.defaultLLMDeliveryPath !== void 0) mergedConfig.defaultLLMDeliveryPath = dynamic.defaultLLMDeliveryPath;
|
|
3406
|
+
if (dynamic.legacyFileUploadUX !== void 0) mergedConfig.legacyFileUploadUX = dynamic.legacyFileUploadUX;
|
|
3150
3407
|
if (dynamic.serverFileSizeLimit !== void 0) mergedConfig.serverFileSizeLimit = mbToBytes(dynamic.serverFileSizeLimit);
|
|
3151
3408
|
if (dynamic.avatarSizeLimit !== void 0) mergedConfig.avatarSizeLimit = mbToBytes(dynamic.avatarSizeLimit);
|
|
3152
3409
|
if (dynamic.fileTokenLimit !== void 0) mergedConfig.fileTokenLimit = dynamic.fileTokenLimit;
|
|
3410
|
+
if (dynamic.fileContextSizeLimit !== void 0) mergedConfig.fileContextSizeLimit = mbToBytes(dynamic.fileContextSizeLimit);
|
|
3411
|
+
if (dynamic.fileContextCharLimit !== void 0) mergedConfig.fileContextCharLimit = dynamic.fileContextCharLimit;
|
|
3153
3412
|
if (dynamic.skills?.fileSizeLimit !== void 0) mergedConfig.skills = {
|
|
3154
3413
|
...mergedConfig.skills,
|
|
3155
3414
|
fileSizeLimit: mbToBytes(dynamic.skills.fileSizeLimit)
|
|
@@ -3197,6 +3456,8 @@ function mergeFileConfig(dynamic) {
|
|
|
3197
3456
|
});
|
|
3198
3457
|
if (dynamicEndpoint.disabled !== void 0) mergedEndpoint.disabled = dynamicEndpoint.disabled;
|
|
3199
3458
|
if (dynamicEndpoint.supportedMimeTypes) mergedEndpoint.supportedMimeTypes = convertStringsToRegex(dynamicEndpoint.supportedMimeTypes);
|
|
3459
|
+
if (dynamicEndpoint.defaultLLMDeliveryPath !== void 0) mergedEndpoint.defaultLLMDeliveryPath = dynamicEndpoint.defaultLLMDeliveryPath;
|
|
3460
|
+
if (dynamicEndpoint.legacyFileUploadUX !== void 0) mergedEndpoint.legacyFileUploadUX = dynamicEndpoint.legacyFileUploadUX;
|
|
3200
3461
|
}
|
|
3201
3462
|
return mergedConfig;
|
|
3202
3463
|
}
|
|
@@ -3226,6 +3487,7 @@ const codeEnvironments = () => `${BASE_URL}/api/code-environments`;
|
|
|
3226
3487
|
const codeEnvironmentPairings = () => `${codeEnvironments()}/pairings`;
|
|
3227
3488
|
const codeEnvironmentById = (id) => `${codeEnvironments()}/${encodeURIComponent(id)}`;
|
|
3228
3489
|
const codeEnvironmentSettings = (id) => `${codeEnvironmentById(id)}/settings`;
|
|
3490
|
+
const codeEnvironmentStatus = (id) => `${codeEnvironmentById(id)}/status`;
|
|
3229
3491
|
const messagesRoot = `${BASE_URL}/api/messages`;
|
|
3230
3492
|
const messages = (params) => {
|
|
3231
3493
|
const { conversationId, messageId, ...rest } = params;
|
|
@@ -3438,8 +3700,15 @@ const listSkillsWithFilters = (filter) => {
|
|
|
3438
3700
|
};
|
|
3439
3701
|
const skillFiles = (id) => `${getSkill$1(id)}/files`;
|
|
3440
3702
|
const skillFile = (id, relativePath) => `${skillFiles(id)}/${encodeURIComponent(relativePath)}`;
|
|
3441
|
-
const insights = () => `${BASE_URL}/api/
|
|
3703
|
+
const insights = () => `${BASE_URL}/api/insights`;
|
|
3442
3704
|
const insightsAccess = () => `${insights()}/access`;
|
|
3705
|
+
const conversationTrace = (conversationId) => `${BASE_URL}/api/traces/${encodeURIComponent(conversationId)}`;
|
|
3706
|
+
const conversationTraceAvailability = (conversationId) => `${conversationTrace(conversationId)}/availability`;
|
|
3707
|
+
const conversationTraceRecords = (conversationId, cursor) => `${conversationTrace(conversationId)}/records${cursor ? `?${new URLSearchParams({ cursor }).toString()}` : ""}`;
|
|
3708
|
+
const conversationTraceRecord = (conversationId, recordId, messageId, sourceId) => `${conversationTrace(conversationId)}/records/${encodeURIComponent(recordId)}?${new URLSearchParams({
|
|
3709
|
+
message: messageId,
|
|
3710
|
+
...sourceId ? { source: sourceId } : {}
|
|
3711
|
+
}).toString()}`;
|
|
3443
3712
|
const adminSkillsSync = () => `${BASE_URL}/api/admin/skills/sync`;
|
|
3444
3713
|
const adminSkillsSyncStatus = () => `${adminSkillsSync()}/status`;
|
|
3445
3714
|
const adminSkillsSyncRun = () => `${adminSkillsSync()}/run`;
|
|
@@ -3448,6 +3717,7 @@ const skillStates = () => `${BASE_URL}/api/user/settings/skills/active`;
|
|
|
3448
3717
|
const adminLangfuseConnection = () => `${BASE_URL}/api/admin/langfuse/connection`;
|
|
3449
3718
|
const adminLangfuseConnectionTest = () => `${adminLangfuseConnection()}/test`;
|
|
3450
3719
|
const adminLangfuseSessionLink = (conversationId) => `${adminLangfuseConnection()}/session/${encodeURIComponent(conversationId)}`;
|
|
3720
|
+
const pinnedOrder = () => `${BASE_URL}/api/user/settings/pinned-order`;
|
|
3451
3721
|
const toolFavorites = () => `${BASE_URL}/api/user/settings/favorites/tools`;
|
|
3452
3722
|
const toolFavorite = (itemType, itemId) => `${toolFavorites()}/${itemType}/${encodeURIComponent(itemId)}`;
|
|
3453
3723
|
const roles = () => `${BASE_URL}/api/roles`;
|
|
@@ -3519,6 +3789,7 @@ let FileContext = /* @__PURE__ */ function(FileContext) {
|
|
|
3519
3789
|
FileContext["image_generation"] = "image_generation";
|
|
3520
3790
|
FileContext["assistants_output"] = "assistants_output";
|
|
3521
3791
|
FileContext["message_attachment"] = "message_attachment";
|
|
3792
|
+
FileContext["run_artifact"] = "run_artifact";
|
|
3522
3793
|
FileContext["skill_file"] = "skill_file";
|
|
3523
3794
|
FileContext["filename"] = "filename";
|
|
3524
3795
|
FileContext["updatedAt"] = "updatedAt";
|
|
@@ -3549,6 +3820,12 @@ let TokenExchangeMethodEnum = /* @__PURE__ */ function(TokenExchangeMethodEnum)
|
|
|
3549
3820
|
}({});
|
|
3550
3821
|
//#endregion
|
|
3551
3822
|
//#region src/mcp.ts
|
|
3823
|
+
/**
|
|
3824
|
+
* Upper bound on a stored MCP `iconPath` (URL or data URI). Enforced by
|
|
3825
|
+
* `sanitizeMcpIconPath`, not a schema `.max()`, so re-submitting a server whose
|
|
3826
|
+
* stored icon predates the cap clears the icon instead of rejecting the update.
|
|
3827
|
+
*/
|
|
3828
|
+
const MAX_MCP_ICON_PATH_LENGTH = 256 * 1024;
|
|
3552
3829
|
const validateOAuthClientCredentials = (oauth, ctx) => {
|
|
3553
3830
|
if (oauth.client_secret && !oauth.client_id) ctx.addIssue({
|
|
3554
3831
|
code: z.ZodIssueCode.custom,
|
|
@@ -3957,6 +4234,8 @@ const excludedKeys = new Set([
|
|
|
3957
4234
|
"conversationId",
|
|
3958
4235
|
"agentEventBinding",
|
|
3959
4236
|
"agentEventActor",
|
|
4237
|
+
"agentEventActorCleanup",
|
|
4238
|
+
"agentEventActorSuspension",
|
|
3960
4239
|
"agentEventActorReconciliations",
|
|
3961
4240
|
"agentEventActorEpoch",
|
|
3962
4241
|
"agentEventActorLegacyTurn",
|
|
@@ -4465,13 +4744,13 @@ function isRemoteOidcUrlAllowed(value) {
|
|
|
4465
4744
|
}
|
|
4466
4745
|
const remoteApiOidcUrlSchema = z.string().url().refine(isRemoteOidcUrlAllowed, { message: "must use https:// unless targeting localhost" });
|
|
4467
4746
|
const remoteApiOidcScopeSchema = z.string().refine((scope) => !scope.includes(","), { message: "scopes must be space-separated" });
|
|
4468
|
-
const
|
|
4747
|
+
const oidcAccessTokenSchema = z.object({
|
|
4469
4748
|
enabled: z.boolean().default(false),
|
|
4470
4749
|
issuer: remoteApiOidcUrlSchema.optional(),
|
|
4471
4750
|
audience: z.string().min(1).optional(),
|
|
4472
|
-
jwksUri: remoteApiOidcUrlSchema.optional()
|
|
4473
|
-
|
|
4474
|
-
|
|
4751
|
+
jwksUri: remoteApiOidcUrlSchema.optional()
|
|
4752
|
+
});
|
|
4753
|
+
function validateEnabledOidc(oidc, ctx) {
|
|
4475
4754
|
if (oidc.enabled === true && !oidc.issuer) ctx.addIssue({
|
|
4476
4755
|
code: z.ZodIssueCode.custom,
|
|
4477
4756
|
path: ["issuer"],
|
|
@@ -4482,12 +4761,46 @@ const remoteApiOidcSchema = z.object({
|
|
|
4482
4761
|
path: ["audience"],
|
|
4483
4762
|
message: "audience is required when OIDC auth is enabled"
|
|
4484
4763
|
});
|
|
4485
|
-
}
|
|
4764
|
+
}
|
|
4765
|
+
const remoteApiOidcSchema = oidcAccessTokenSchema.extend({ scope: remoteApiOidcScopeSchema.optional() }).superRefine(validateEnabledOidc);
|
|
4486
4766
|
const remoteApiAuthSchema = z.object({
|
|
4487
4767
|
apiKey: z.object({ enabled: z.boolean().default(true) }).optional(),
|
|
4488
4768
|
oidc: remoteApiOidcSchema.optional()
|
|
4489
4769
|
});
|
|
4490
4770
|
const remoteApiSchema = z.object({ auth: remoteApiAuthSchema.optional() });
|
|
4771
|
+
const managementClientBindingSchema = z.object({
|
|
4772
|
+
clientId: z.string().trim().min(1).max(128),
|
|
4773
|
+
subject: z.string().trim().min(1).max(512).optional(),
|
|
4774
|
+
userId: z.string().trim().regex(/^[a-f\d]{24}$/i, "must be a MongoDB ObjectId").transform((userId) => userId.toLowerCase()),
|
|
4775
|
+
tenantId: z.string().trim().min(1).max(128).regex(/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/, "must be a valid tenant id").refine((tenantId) => tenantId !== "__SYSTEM__", "system tenant is not allowed"),
|
|
4776
|
+
enabled: z.boolean().default(true)
|
|
4777
|
+
}).strict();
|
|
4778
|
+
const managementApiOidcSchema = oidcAccessTokenSchema.strict().superRefine(validateEnabledOidc);
|
|
4779
|
+
const managementApiAuthSchema = z.object({
|
|
4780
|
+
oidc: managementApiOidcSchema,
|
|
4781
|
+
clients: z.array(managementClientBindingSchema).max(100).default([])
|
|
4782
|
+
}).strict().superRefine((auth, ctx) => {
|
|
4783
|
+
if (auth.oidc.enabled === true && auth.clients.length === 0) ctx.addIssue({
|
|
4784
|
+
code: z.ZodIssueCode.custom,
|
|
4785
|
+
path: ["clients"],
|
|
4786
|
+
message: "at least one client binding is required when management auth is enabled"
|
|
4787
|
+
});
|
|
4788
|
+
const clientIds = /* @__PURE__ */ new Set();
|
|
4789
|
+
for (let index = 0; index < auth.clients.length; index++) {
|
|
4790
|
+
const client = auth.clients[index];
|
|
4791
|
+
if (clientIds.has(client.clientId)) ctx.addIssue({
|
|
4792
|
+
code: z.ZodIssueCode.custom,
|
|
4793
|
+
path: [
|
|
4794
|
+
"clients",
|
|
4795
|
+
index,
|
|
4796
|
+
"clientId"
|
|
4797
|
+
],
|
|
4798
|
+
message: "client IDs must be unique"
|
|
4799
|
+
});
|
|
4800
|
+
clientIds.add(client.clientId);
|
|
4801
|
+
}
|
|
4802
|
+
});
|
|
4803
|
+
const managementApiSchema = z.object({ auth: managementApiAuthSchema.optional() }).strict();
|
|
4491
4804
|
/**
|
|
4492
4805
|
* Permission mode applied to a tool call. Mirrors `@librechat/agents`'s
|
|
4493
4806
|
* `ToolPolicyMode` 1:1.
|
|
@@ -4626,15 +4939,25 @@ const codeEnvironmentPermissionFieldSchema = z.object({
|
|
|
4626
4939
|
message: "Permission default must be included in allowed values"
|
|
4627
4940
|
});
|
|
4628
4941
|
});
|
|
4942
|
+
/** Existing attached commands used a fixed 30-second execution budget. */
|
|
4943
|
+
const CODE_ENVIRONMENT_COMMAND_TIMEOUT_DEFAULT_MS = 3e4;
|
|
4944
|
+
/** Protocol-level ceiling; deployments may only lower this value. */
|
|
4945
|
+
const CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS = 5 * 6e4;
|
|
4629
4946
|
/**
|
|
4630
4947
|
* Typed user-tunable surface for one attached code environment. Omitted fields
|
|
4631
4948
|
* remain fixed at LibreChat's safe baseline. Isolation, networking, mounts,
|
|
4632
4949
|
* privileged execution, and secrets are deliberately not representable here.
|
|
4633
4950
|
*/
|
|
4634
|
-
const codeEnvironmentUserConfigSchema = z.object({
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4951
|
+
const codeEnvironmentUserConfigSchema = z.object({
|
|
4952
|
+
permissions: z.object({
|
|
4953
|
+
fileWrite: codeEnvironmentPermissionFieldSchema.optional(),
|
|
4954
|
+
commandExecution: codeEnvironmentPermissionFieldSchema.optional()
|
|
4955
|
+
}).strict().optional(),
|
|
4956
|
+
limits: z.object({
|
|
4957
|
+
/** Maximum timeout a Bash invocation may request. Omission preserves
|
|
4958
|
+
* the historical 30-second command budget. */
|
|
4959
|
+
maxCommandTimeoutMs: z.number().int().min(1).max(CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS).optional() }).strict().optional()
|
|
4960
|
+
}).strict();
|
|
4638
4961
|
const codeEnvironmentUserSettingsSchema = z.object({ permissions: z.object({
|
|
4639
4962
|
fileWrite: codeEnvironmentPermissionDecisionSchema.optional(),
|
|
4640
4963
|
commandExecution: codeEnvironmentPermissionDecisionSchema.optional()
|
|
@@ -4659,12 +4982,32 @@ const agentsEndpointSchema = baseEndpointSchema.omit({ baseURL: true }).merge(z.
|
|
|
4659
4982
|
* the shipped default of 10 for orchestration-heavy deployments, bounded by
|
|
4660
4983
|
* `MAX_SUBAGENTS_CEILING`. */
|
|
4661
4984
|
maxSubagents: z.number().int().min(1).max(50).optional().default(10),
|
|
4985
|
+
/** Run-scoped file access for explicitly opted-in subagent delegations. */
|
|
4986
|
+
fileSharing: z.object({
|
|
4987
|
+
enabled: z.boolean().optional().default(false),
|
|
4988
|
+
allowSiblingSharing: z.boolean().optional().default(false),
|
|
4989
|
+
maxFiles: z.number().int().min(1).max(1e3).optional().default(100),
|
|
4990
|
+
/** Aggregate disk budget for private output versions retained during a run. */
|
|
4991
|
+
maxPrivateBytes: z.number().int().min(1).max(10737418240).optional().default(268435456),
|
|
4992
|
+
ttlMs: z.number().int().min(1).max(864e5).optional().default(36e5)
|
|
4993
|
+
}).optional(),
|
|
4994
|
+
/** Maximum concurrent Code API uploads per route and authenticated principal. */
|
|
4995
|
+
codeApiUploadConcurrency: z.number().int().min(1).max(100).optional().default(3),
|
|
4996
|
+
/** Maximum wall-clock time spent waiting on Code API rate limits per operation. */
|
|
4997
|
+
codeApiMaxRetryWaitMs: z.number().int().min(0).max(3e5).optional().default(2e4),
|
|
4662
4998
|
allowedProviders: z.array(z.union([z.string(), eModelEndpointSchema])).optional(),
|
|
4663
4999
|
capabilities: z.array(z.nativeEnum(AgentCapabilities)).optional().default(defaultAgentCapabilities),
|
|
4664
5000
|
/** Controls which workspace-sharing scopes users may select for stateful code sessions.
|
|
4665
5001
|
* Omit this block to preserve the legacy behavior of allowing every scope. */
|
|
4666
5002
|
statefulCodeSessions: z.object({
|
|
4667
5003
|
allowedEnvironments: z.array(z.enum(STATEFUL_CODE_ENVIRONMENTS)).min(1),
|
|
5004
|
+
/** Server-only personal worker enrollment policy. Effective principal
|
|
5005
|
+
* policy may tighten, but never raise, the deployment ceiling. */
|
|
5006
|
+
principalWorkers: z.object({
|
|
5007
|
+
enabled: z.boolean().optional(),
|
|
5008
|
+
/** Defaults to five. Zero disables enrollment; existing machines remain usable. */
|
|
5009
|
+
maxPerUser: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER).optional()
|
|
5010
|
+
}).optional(),
|
|
4668
5011
|
/** Operator-managed execution environments. Attached entries route to a
|
|
4669
5012
|
* Code API deployment backed by an outbound librechat-code worker. */
|
|
4670
5013
|
environments: z.array(z.object({
|
|
@@ -4771,8 +5114,14 @@ const agentsEndpointSchema = baseEndpointSchema.omit({ baseURL: true }).merge(z.
|
|
|
4771
5114
|
eventDriven: z.object({ selfUrl: z.string().url().optional() }).optional(),
|
|
4772
5115
|
/** Conversational background-task delivery policy. Automatic completion wakeups are
|
|
4773
5116
|
* enabled unless an administrator explicitly restores poll-only behavior. */
|
|
4774
|
-
backgroundTasks: z.object({
|
|
5117
|
+
backgroundTasks: z.object({
|
|
5118
|
+
completionWakeups: z.boolean().optional().default(true),
|
|
5119
|
+
/** Cooperative cancellation for process-local ordinary tools. Off
|
|
5120
|
+
* by default so existing deployments opt into the new control. */
|
|
5121
|
+
ordinaryToolCancellation: z.boolean().optional().default(false)
|
|
5122
|
+
}).optional(),
|
|
4775
5123
|
skills: z.object({ maxCatalogSkills: z.number().int().min(1).max(100).optional() }).optional(),
|
|
5124
|
+
managementApi: managementApiSchema.optional(),
|
|
4776
5125
|
remoteApi: remoteApiSchema.optional(),
|
|
4777
5126
|
/** Human-in-the-loop tool approval policy. Off by default. */
|
|
4778
5127
|
toolApproval: toolApprovalPolicySchema,
|
|
@@ -5030,6 +5379,21 @@ const sttSchema = z.object({
|
|
|
5030
5379
|
openai: sttOpenaiSchema.optional(),
|
|
5031
5380
|
azureOpenAI: sttAzureOpenAISchema.optional()
|
|
5032
5381
|
});
|
|
5382
|
+
/**
|
|
5383
|
+
* The speech providers a schema actually configures. `allowedAddresses` is transport
|
|
5384
|
+
* policy rather than a provider, and a provider key present but empty configures
|
|
5385
|
+
* nothing. The speech services accept a schema only when exactly one survives here, so
|
|
5386
|
+
* the upload router reads availability from the same list and never routes audio to a
|
|
5387
|
+
* transcription that cannot run.
|
|
5388
|
+
*/
|
|
5389
|
+
function listConfiguredSpeechProviders(schema) {
|
|
5390
|
+
if (schema == null) return [];
|
|
5391
|
+
return Object.entries(schema).filter(([key, value]) => key !== "allowedAddresses" && value != null && typeof value === "object" && Object.keys(value).length > 0);
|
|
5392
|
+
}
|
|
5393
|
+
/** Whether a speech schema names exactly one usable provider. */
|
|
5394
|
+
function isSpeechProviderConfigured(schema) {
|
|
5395
|
+
return listConfiguredSpeechProviders(schema).length === 1;
|
|
5396
|
+
}
|
|
5033
5397
|
const speechTab = z.object({
|
|
5034
5398
|
conversationMode: z.boolean().optional(),
|
|
5035
5399
|
advancedMode: z.boolean().optional(),
|
|
@@ -5114,7 +5478,14 @@ const termsOfServiceSchema = z.object({
|
|
|
5114
5478
|
modalContent: z.string().or(z.array(z.string())).optional()
|
|
5115
5479
|
});
|
|
5116
5480
|
const localizedStringSchema = z.union([z.string(), z.record(z.string())]);
|
|
5481
|
+
const mcpRefreshDefaults = {
|
|
5482
|
+
toolsRefreshInterval: 300 * 1e3,
|
|
5483
|
+
statusRefreshInterval: 30 * 1e3
|
|
5484
|
+
};
|
|
5117
5485
|
const mcpServersSchema = z.object({
|
|
5486
|
+
/** Foreground polling intervals in milliseconds; 0 disables polling. */
|
|
5487
|
+
toolsRefreshInterval: z.number().int().nonnegative().max(2147483647).optional(),
|
|
5488
|
+
statusRefreshInterval: z.number().int().nonnegative().max(2147483647).optional(),
|
|
5118
5489
|
placeholder: z.string().optional(),
|
|
5119
5490
|
use: z.boolean().optional(),
|
|
5120
5491
|
create: z.boolean().optional(),
|
|
@@ -5126,6 +5497,68 @@ const mcpServersSchema = z.object({
|
|
|
5126
5497
|
subLabel: localizedStringSchema.optional()
|
|
5127
5498
|
}).optional()
|
|
5128
5499
|
}).optional();
|
|
5500
|
+
/** Values the trace viewer uses for any `interface.traceViewer` field left unset. */
|
|
5501
|
+
const traceViewerDefaults = {
|
|
5502
|
+
enabled: false,
|
|
5503
|
+
showInputOutput: false,
|
|
5504
|
+
maxRecords: 1e3,
|
|
5505
|
+
maxContentLength: 5e4,
|
|
5506
|
+
requestsPerMinute: 30,
|
|
5507
|
+
requestTimeoutMs: 1e4
|
|
5508
|
+
};
|
|
5509
|
+
/** Inclusive bounds for the numeric `interface.traceViewer` fields. */
|
|
5510
|
+
const traceViewerLimits = {
|
|
5511
|
+
maxRecords: {
|
|
5512
|
+
min: 1,
|
|
5513
|
+
max: 1e4
|
|
5514
|
+
},
|
|
5515
|
+
maxContentLength: {
|
|
5516
|
+
min: 1,
|
|
5517
|
+
max: 1e6
|
|
5518
|
+
},
|
|
5519
|
+
requestsPerMinute: {
|
|
5520
|
+
min: 1,
|
|
5521
|
+
max: 1e3
|
|
5522
|
+
},
|
|
5523
|
+
requestTimeoutMs: {
|
|
5524
|
+
min: 1e3,
|
|
5525
|
+
max: 3e5
|
|
5526
|
+
}
|
|
5527
|
+
};
|
|
5528
|
+
const boundedIntegerSchema = (field) => z.number().int().min(traceViewerLimits[field].min).max(traceViewerLimits[field].max).optional();
|
|
5529
|
+
const traceViewerSchema = z.object({
|
|
5530
|
+
/** Shows the conversation trace control for traces this deployment exported. */
|
|
5531
|
+
enabled: z.boolean().optional(),
|
|
5532
|
+
/** Returns observation input, output and metadata in the record inspector. */
|
|
5533
|
+
showInputOutput: z.boolean().optional(),
|
|
5534
|
+
/** Observations read from the tracing backend per request. */
|
|
5535
|
+
maxRecords: boundedIntegerSchema("maxRecords"),
|
|
5536
|
+
/** Characters kept from each input, output and metadata value before truncation. */
|
|
5537
|
+
maxContentLength: boundedIntegerSchema("maxContentLength"),
|
|
5538
|
+
/** Trace reads one user may start per minute. */
|
|
5539
|
+
requestsPerMinute: boundedIntegerSchema("requestsPerMinute"),
|
|
5540
|
+
/** Budget for each round trip to the tracing backend, in milliseconds. */
|
|
5541
|
+
requestTimeoutMs: boundedIntegerSchema("requestTimeoutMs")
|
|
5542
|
+
});
|
|
5543
|
+
function boundedInteger(value, field) {
|
|
5544
|
+
const { min, max } = traceViewerLimits[field];
|
|
5545
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= min ? Math.min(value, max) : traceViewerDefaults[field];
|
|
5546
|
+
}
|
|
5547
|
+
/**
|
|
5548
|
+
* Fills unset or invalid `interface.traceViewer` fields from
|
|
5549
|
+
* {@link traceViewerDefaults}. Admin config overrides reach runtime without
|
|
5550
|
+
* schema validation, so every consumer reads the section through this.
|
|
5551
|
+
*/
|
|
5552
|
+
function resolveTraceViewerConfig(config) {
|
|
5553
|
+
return {
|
|
5554
|
+
enabled: config?.enabled === true,
|
|
5555
|
+
showInputOutput: config?.showInputOutput === true,
|
|
5556
|
+
maxRecords: boundedInteger(config?.maxRecords, "maxRecords"),
|
|
5557
|
+
maxContentLength: boundedInteger(config?.maxContentLength, "maxContentLength"),
|
|
5558
|
+
requestsPerMinute: boundedInteger(config?.requestsPerMinute, "requestsPerMinute"),
|
|
5559
|
+
requestTimeoutMs: boundedInteger(config?.requestTimeoutMs, "requestTimeoutMs")
|
|
5560
|
+
};
|
|
5561
|
+
}
|
|
5129
5562
|
let RetentionMode = /* @__PURE__ */ function(RetentionMode) {
|
|
5130
5563
|
RetentionMode["ALL"] = "all";
|
|
5131
5564
|
RetentionMode["TEMPORARY"] = "temporary";
|
|
@@ -5159,6 +5592,7 @@ const interfaceSchema = z.object({
|
|
|
5159
5592
|
})]).optional(),
|
|
5160
5593
|
temporaryChat: z.boolean().optional(),
|
|
5161
5594
|
temporaryChatRetention: z.number().min(1).max(8760).optional(),
|
|
5595
|
+
generalChatRetention: z.number().min(1).max(8760).optional(),
|
|
5162
5596
|
autoSubmitFromUrl: z.boolean().optional(),
|
|
5163
5597
|
retentionMode: z.nativeEnum(RetentionMode).default("temporary"),
|
|
5164
5598
|
retainAgentFiles: z.boolean().optional(),
|
|
@@ -5179,6 +5613,7 @@ const interfaceSchema = z.object({
|
|
|
5179
5613
|
marketplace: z.object({ use: z.boolean().optional() }).optional(),
|
|
5180
5614
|
fileSearch: z.boolean().optional(),
|
|
5181
5615
|
fileCitations: z.boolean().optional(),
|
|
5616
|
+
traceViewer: traceViewerSchema.optional(),
|
|
5182
5617
|
/** Tool keys (and `'mcp'` or an MCP server name) pinned to the prompt bar by default */
|
|
5183
5618
|
defaultPinnedTools: z.array(z.string()).optional(),
|
|
5184
5619
|
buildInfo: z.boolean().optional(),
|
|
@@ -5207,7 +5642,10 @@ const interfaceSchema = z.object({
|
|
|
5207
5642
|
maxPerUser: z.number().int().min(0).optional(),
|
|
5208
5643
|
minIntervalMinutes: z.number().int().min(1).optional(),
|
|
5209
5644
|
autoDisableAfterFailures: z.number().int().min(1).optional(),
|
|
5645
|
+
admissionConcurrency: z.number().int().min(1).max(100).optional(),
|
|
5210
5646
|
fireConcurrency: z.number().int().min(1).optional(),
|
|
5647
|
+
mcpPreflightConcurrency: z.number().int().min(1).max(10).optional(),
|
|
5648
|
+
mcpPreflightTimeoutMs: z.number().int().min(1e3).max(6e5).optional(),
|
|
5211
5649
|
/** Refuse schedules that are not filed under a chat project. Enforced on
|
|
5212
5650
|
* create/update AND at every fire, so raising it later stops schedules
|
|
5213
5651
|
* that predate the policy instead of grandfathering them. */
|
|
@@ -5600,6 +6038,57 @@ const messageFilterPiiSchema = z.object({
|
|
|
5600
6038
|
});
|
|
5601
6039
|
});
|
|
5602
6040
|
const messageFilterSchema = z.object({ pii: messageFilterPiiSchema.optional() });
|
|
6041
|
+
/** User fields a deployment may select as the Langfuse trace `userId`. */
|
|
6042
|
+
const LANGFUSE_TRACE_USER_ID_FIELDS = [
|
|
6043
|
+
"id",
|
|
6044
|
+
"email",
|
|
6045
|
+
"username",
|
|
6046
|
+
"name",
|
|
6047
|
+
"openidId",
|
|
6048
|
+
"samlId",
|
|
6049
|
+
"ldapId",
|
|
6050
|
+
"googleId",
|
|
6051
|
+
"githubId",
|
|
6052
|
+
"discordId",
|
|
6053
|
+
"appleId",
|
|
6054
|
+
"facebookId"
|
|
6055
|
+
];
|
|
6056
|
+
/** User fields a deployment may copy into Langfuse trace metadata. */
|
|
6057
|
+
const LANGFUSE_TRACE_USER_METADATA_FIELDS = [
|
|
6058
|
+
...LANGFUSE_TRACE_USER_ID_FIELDS,
|
|
6059
|
+
"role",
|
|
6060
|
+
"provider"
|
|
6061
|
+
];
|
|
6062
|
+
/** Request fields a deployment may copy into Langfuse trace metadata. */
|
|
6063
|
+
const LANGFUSE_TRACE_CONVERSATION_METADATA_FIELDS = [
|
|
6064
|
+
"conversationId",
|
|
6065
|
+
"endpoint",
|
|
6066
|
+
"endpointType",
|
|
6067
|
+
"provider",
|
|
6068
|
+
"model",
|
|
6069
|
+
"modelLabel",
|
|
6070
|
+
"spec"
|
|
6071
|
+
];
|
|
6072
|
+
/**
|
|
6073
|
+
* What a deployment attaches to every Langfuse trace beyond the defaults.
|
|
6074
|
+
* Nothing here is exported unless explicitly listed, so the default trace
|
|
6075
|
+
* carries only the internal user id and no user or request metadata.
|
|
6076
|
+
*/
|
|
6077
|
+
const langfuseTraceConfigSchema = z.object({
|
|
6078
|
+
/**
|
|
6079
|
+
* Which user field becomes the trace `userId`. Defaults to the internal user
|
|
6080
|
+
* id; a user with no value for the chosen field keeps the internal id.
|
|
6081
|
+
*/
|
|
6082
|
+
userIdField: z.enum(LANGFUSE_TRACE_USER_ID_FIELDS).optional(),
|
|
6083
|
+
/** User fields exported as `librechat.user.<field>` trace metadata. */
|
|
6084
|
+
userMetadataFields: z.array(z.enum(LANGFUSE_TRACE_USER_METADATA_FIELDS)).optional(),
|
|
6085
|
+
/**
|
|
6086
|
+
* Request fields exported as trace metadata: `librechat.conversation.id`,
|
|
6087
|
+
* `librechat.endpoint`, `librechat.endpoint.type`, `librechat.provider`,
|
|
6088
|
+
* `librechat.model`, `librechat.model.label`, and `librechat.spec`.
|
|
6089
|
+
*/
|
|
6090
|
+
conversationMetadataFields: z.array(z.enum(LANGFUSE_TRACE_CONVERSATION_METADATA_FIELDS)).optional()
|
|
6091
|
+
});
|
|
5603
6092
|
const langfuseConfigSchema = z.object({
|
|
5604
6093
|
enabled: z.boolean().optional(),
|
|
5605
6094
|
publicKey: z.string().optional(),
|
|
@@ -5631,7 +6120,9 @@ const langfuseConfigSchema = z.object({
|
|
|
5631
6120
|
* schema does not yet express — and note the fanout collector forwards only
|
|
5632
6121
|
* `Authorization` upstream regardless.
|
|
5633
6122
|
*/
|
|
5634
|
-
headers: z.record(z.string()).optional()
|
|
6123
|
+
headers: z.record(z.string()).optional(),
|
|
6124
|
+
/** Trace user identity and allowlisted user/request metadata. */
|
|
6125
|
+
trace: langfuseTraceConfigSchema.optional()
|
|
5635
6126
|
});
|
|
5636
6127
|
const configSchema = z.object({
|
|
5637
6128
|
version: z.string(),
|
|
@@ -5649,7 +6140,35 @@ const configSchema = z.object({
|
|
|
5649
6140
|
mcpServers: MCPServersSchema.optional(),
|
|
5650
6141
|
mcpSettings: z.object({
|
|
5651
6142
|
allowedDomains: z.array(z.string()).optional(),
|
|
5652
|
-
allowedAddresses: allowedAddressesSchema
|
|
6143
|
+
allowedAddresses: allowedAddressesSchema,
|
|
6144
|
+
catalogRecovery: z.object({
|
|
6145
|
+
discoveryBackoffMs: z.array(z.number().int().positive().max(1440 * 6e4)).min(1).max(8).default([
|
|
6146
|
+
5 * 6e4,
|
|
6147
|
+
10 * 6e4,
|
|
6148
|
+
20 * 6e4,
|
|
6149
|
+
30 * 6e4
|
|
6150
|
+
]),
|
|
6151
|
+
discoveryTimeoutMs: z.number().int().positive().max(5 * 6e4).default(3e3),
|
|
6152
|
+
/** How long past `discoveryTimeoutMs` a stalled discovery may hold its catalog slot and
|
|
6153
|
+
* coalesced requests. It is never cancelled, so OAuth tokens it redeemed still persist,
|
|
6154
|
+
* and no other discovery for the same server state starts until it settles. */
|
|
6155
|
+
discoverySettleGraceMs: z.number().int().nonnegative().max(5 * 6e4).default(1e4),
|
|
6156
|
+
reauthRetryMs: z.number().int().positive().max(1440 * 6e4).default(30 * 6e4),
|
|
6157
|
+
maxStateEntries: z.number().int().positive().max(1e6).default(1e4),
|
|
6158
|
+
/** Process-wide: how many discoveries released past `discoverySettleGraceMs` may still be
|
|
6159
|
+
* running before recovery starts no new discovery until one settles. The default matches
|
|
6160
|
+
* the three catalog slots a stalled dependency could hold before discoveries were released. */
|
|
6161
|
+
maxDetachedDiscoveries: z.number().int().positive().max(1e3).default(3),
|
|
6162
|
+
generationReadTimeoutMs: z.number().int().positive().max(1e4).default(500),
|
|
6163
|
+
authorizationFenceRetryMs: z.array(z.number().int().nonnegative().max(6e4)).min(1).max(8).default([
|
|
6164
|
+
0,
|
|
6165
|
+
50,
|
|
6166
|
+
200
|
|
6167
|
+
]),
|
|
6168
|
+
authorizationFenceTimeoutMs: z.number().int().positive().max(3e4).default(1e3),
|
|
6169
|
+
authorizationFenceRetryIntervalMs: z.number().int().positive().max(60 * 6e4).default(3e4),
|
|
6170
|
+
authorizationFenceRetryBatchSize: z.number().int().positive().max(1e4).default(100)
|
|
6171
|
+
}).default({})
|
|
5653
6172
|
}).optional(),
|
|
5654
6173
|
interface: interfaceSchema,
|
|
5655
6174
|
turnstile: turnstileSchema.optional(),
|
|
@@ -5708,6 +6227,7 @@ let KnownEndpoints = /* @__PURE__ */ function(KnownEndpoints) {
|
|
|
5708
6227
|
KnownEndpoints["groq"] = "groq";
|
|
5709
6228
|
KnownEndpoints["helicone"] = "helicone";
|
|
5710
6229
|
KnownEndpoints["huggingface"] = "huggingface";
|
|
6230
|
+
KnownEndpoints["lemonade"] = "lemonade";
|
|
5711
6231
|
KnownEndpoints["mistral"] = "mistral";
|
|
5712
6232
|
KnownEndpoints["mlx"] = "mlx";
|
|
5713
6233
|
KnownEndpoints["ollama"] = "ollama";
|
|
@@ -5746,6 +6266,7 @@ const alternateName = {
|
|
|
5746
6266
|
["anthropic"]: "Anthropic",
|
|
5747
6267
|
["custom"]: "Custom",
|
|
5748
6268
|
["bedrock"]: "AWS Bedrock",
|
|
6269
|
+
["lemonade"]: "AMD Lemonade",
|
|
5749
6270
|
["ollama"]: "Ollama",
|
|
5750
6271
|
["deepseek"]: "DeepSeek",
|
|
5751
6272
|
["moonshot"]: "Moonshot",
|
|
@@ -5753,6 +6274,14 @@ const alternateName = {
|
|
|
5753
6274
|
["vercel"]: "Vercel",
|
|
5754
6275
|
["helicone"]: "Helicone"
|
|
5755
6276
|
};
|
|
6277
|
+
/**
|
|
6278
|
+
* Models the Assistants endpoints cannot run. GPT-6 Astra serves tool calls only
|
|
6279
|
+
* from the Responses API, and the Assistants surface does not route through
|
|
6280
|
+
* `getOpenAILLMConfig`, so listing it there would offer a configuration the
|
|
6281
|
+
* provider rejects. Kept out of `sharedOpenAIModels`, which both Assistants
|
|
6282
|
+
* catalogs consume.
|
|
6283
|
+
*/
|
|
6284
|
+
const responsesOnlyOpenAIModels = ["gpt-6-astra"];
|
|
5756
6285
|
const sharedOpenAIModels = [
|
|
5757
6286
|
"gpt-5.6",
|
|
5758
6287
|
"gpt-5.6-terra",
|
|
@@ -5848,7 +6377,7 @@ const bedrockModels = [
|
|
|
5848
6377
|
const defaultModels = {
|
|
5849
6378
|
["azureAssistants"]: sharedOpenAIModels,
|
|
5850
6379
|
["assistants"]: [...sharedOpenAIModels, "chatgpt-4o-latest"],
|
|
5851
|
-
["agents"]: sharedOpenAIModels,
|
|
6380
|
+
["agents"]: [...responsesOnlyOpenAIModels, ...sharedOpenAIModels],
|
|
5852
6381
|
["google"]: [
|
|
5853
6382
|
"gemini-3.8-flash",
|
|
5854
6383
|
"gemini-3.7-flash",
|
|
@@ -5866,6 +6395,7 @@ const defaultModels = {
|
|
|
5866
6395
|
],
|
|
5867
6396
|
["anthropic"]: sharedAnthropicModels,
|
|
5868
6397
|
["openAI"]: [
|
|
6398
|
+
...responsesOnlyOpenAIModels,
|
|
5869
6399
|
...sharedOpenAIModels,
|
|
5870
6400
|
"chatgpt-4o-latest",
|
|
5871
6401
|
"gpt-4-vision-preview",
|
|
@@ -5878,12 +6408,19 @@ const fitlerAssistantModels = (str) => {
|
|
|
5878
6408
|
return /gpt-4|gpt-3\\.5/i.test(str) && !/vision|instruct/i.test(str);
|
|
5879
6409
|
};
|
|
5880
6410
|
const openAIModels = defaultModels["openAI"];
|
|
6411
|
+
/**
|
|
6412
|
+
* The OpenAI catalog without the models only the first-party OpenAI endpoint
|
|
6413
|
+
* can run. Azure OpenAI shares this list, but Astra is neither routed to the
|
|
6414
|
+
* Responses API nor given its request constraints there, and listing it first
|
|
6415
|
+
* would let it become the default selection.
|
|
6416
|
+
*/
|
|
6417
|
+
const nonResponsesOnlyOpenAIModels = openAIModels.filter((model) => !responsesOnlyOpenAIModels.includes(model));
|
|
5881
6418
|
const initialModelsConfig = {
|
|
5882
6419
|
initial: [],
|
|
5883
6420
|
["openAI"]: openAIModels,
|
|
5884
6421
|
["assistants"]: openAIModels.filter(fitlerAssistantModels),
|
|
5885
6422
|
["agents"]: openAIModels,
|
|
5886
|
-
["azureOpenAI"]:
|
|
6423
|
+
["azureOpenAI"]: nonResponsesOnlyOpenAIModels,
|
|
5887
6424
|
["google"]: defaultModels["google"],
|
|
5888
6425
|
["anthropic"]: defaultModels["anthropic"],
|
|
5889
6426
|
["bedrock"]: defaultModels["bedrock"]
|
|
@@ -6181,6 +6718,10 @@ let ViolationTypes = /* @__PURE__ */ function(ViolationTypes) {
|
|
|
6181
6718
|
* Registration violations.
|
|
6182
6719
|
*/
|
|
6183
6720
|
ViolationTypes["REGISTRATIONS"] = "registrations";
|
|
6721
|
+
/**
|
|
6722
|
+
* Shared link retrieval limit violations.
|
|
6723
|
+
*/
|
|
6724
|
+
ViolationTypes["SHARE_LIMIT"] = "share_limit";
|
|
6184
6725
|
return ViolationTypes;
|
|
6185
6726
|
}({});
|
|
6186
6727
|
/**
|
|
@@ -6248,6 +6789,10 @@ let ErrorTypes = /* @__PURE__ */ function(ErrorTypes) {
|
|
|
6248
6789
|
*/
|
|
6249
6790
|
ErrorTypes["STATEFUL_CODE_ENVIRONMENT_NOT_ALLOWED"] = "stateful_code_environment_not_allowed";
|
|
6250
6791
|
/**
|
|
6792
|
+
* A conversation's selected attached workspace cannot be used as requested.
|
|
6793
|
+
*/
|
|
6794
|
+
ErrorTypes["CODE_WORKSPACE_UNAVAILABLE"] = "code_workspace_unavailable";
|
|
6795
|
+
/**
|
|
6251
6796
|
* Invalid Agent Provider (excluded by Admin)
|
|
6252
6797
|
*/
|
|
6253
6798
|
ErrorTypes["INVALID_AGENT_PROVIDER"] = "invalid_agent_provider";
|
|
@@ -6291,6 +6836,26 @@ let ErrorTypes = /* @__PURE__ */ function(ErrorTypes) {
|
|
|
6291
6836
|
* Provider throttled or refused the request for exceeding a rate/spend allowance
|
|
6292
6837
|
*/
|
|
6293
6838
|
ErrorTypes["MODEL_RATE_LIMIT"] = "model_rate_limit";
|
|
6839
|
+
/**
|
|
6840
|
+
* An agent model provider failed and the run could not recover.
|
|
6841
|
+
*/
|
|
6842
|
+
ErrorTypes["UPSTREAM_MODEL_ERROR"] = "upstream_model_error";
|
|
6843
|
+
/**
|
|
6844
|
+
* Context pruning removed every message; nothing fits the configured context window
|
|
6845
|
+
*/
|
|
6846
|
+
ErrorTypes["EMPTY_MESSAGES"] = "empty_messages";
|
|
6847
|
+
/**
|
|
6848
|
+
* Formatted provider payload exceeded the context budget before invocation
|
|
6849
|
+
*/
|
|
6850
|
+
ErrorTypes["FINAL_CONTEXT_OVERFLOW"] = "final_context_overflow";
|
|
6851
|
+
/**
|
|
6852
|
+
* A manual compaction the graph could not attempt; `reason` says why
|
|
6853
|
+
*/
|
|
6854
|
+
ErrorTypes["COMPACTION_SKIPPED"] = "compaction_skipped";
|
|
6855
|
+
/**
|
|
6856
|
+
* A manual compaction whose summarizer produced nothing; history is untouched
|
|
6857
|
+
*/
|
|
6858
|
+
ErrorTypes["COMPACTION_FAILED"] = "compaction_failed";
|
|
6294
6859
|
return ErrorTypes;
|
|
6295
6860
|
}({});
|
|
6296
6861
|
/**
|
|
@@ -6422,7 +6987,7 @@ let TTSProviders = /* @__PURE__ */ function(TTSProviders) {
|
|
|
6422
6987
|
/** Enum for app-wide constants */
|
|
6423
6988
|
let Constants = /* @__PURE__ */ function(Constants) {
|
|
6424
6989
|
/**
|
|
6425
|
-
* Key for the app's version. The placeholder `v0.8.8-
|
|
6990
|
+
* Key for the app's version. The placeholder `v0.8.8-rc3` is
|
|
6426
6991
|
* swapped in by `@rollup/plugin-replace` during `npm run build:data-provider`
|
|
6427
6992
|
* using the value of the root `package.json`'s `version` field. Consumers
|
|
6428
6993
|
* always import this via the built dist bundle (see `main` field in
|
|
@@ -6430,9 +6995,9 @@ let Constants = /* @__PURE__ */ function(Constants) {
|
|
|
6430
6995
|
* substituted value. Only tests that import the TypeScript source directly
|
|
6431
6996
|
* would observe the raw placeholder.
|
|
6432
6997
|
*/
|
|
6433
|
-
Constants["VERSION"] = "v0.8.8-
|
|
6998
|
+
Constants["VERSION"] = "v0.8.8-rc3";
|
|
6434
6999
|
/** Key for the Custom Config's version (librechat.yaml). */
|
|
6435
|
-
Constants["CONFIG_VERSION"] = "1.3.
|
|
7000
|
+
Constants["CONFIG_VERSION"] = "1.3.16";
|
|
6436
7001
|
/** Standard value for the first message's `parentMessageId` value, to indicate no parent exists. */
|
|
6437
7002
|
Constants["NO_PARENT"] = "00000000-0000-0000-0000-000000000000";
|
|
6438
7003
|
/** Standard value to use whatever the submission prelim. `responseMessageId` is */
|
|
@@ -6909,6 +7474,8 @@ let PermissionBits = /* @__PURE__ */ function(PermissionBits) {
|
|
|
6909
7474
|
PermissionBits[PermissionBits["DELETE"] = 4] = "DELETE";
|
|
6910
7475
|
/** 1000 - Can share agent with others (future) */
|
|
6911
7476
|
PermissionBits[PermissionBits["SHARE"] = 8] = "SHARE";
|
|
7477
|
+
/** 10000 - Can view Insights data for an agent when VIEW is also present */
|
|
7478
|
+
PermissionBits[PermissionBits["VIEW_INSIGHTS"] = 16] = "VIEW_INSIGHTS";
|
|
6912
7479
|
return PermissionBits;
|
|
6913
7480
|
}({});
|
|
6914
7481
|
/**
|
|
@@ -6950,6 +7517,8 @@ const principalSchema = z.object({
|
|
|
6950
7517
|
description: z.string().optional(),
|
|
6951
7518
|
idOnTheSource: z.string().optional(),
|
|
6952
7519
|
accessRoleId: z.nativeEnum(AccessRoleIds).optional(),
|
|
7520
|
+
viewInsights: z.boolean().optional(),
|
|
7521
|
+
isAdmin: z.boolean().optional(),
|
|
6953
7522
|
memberCount: z.number().optional()
|
|
6954
7523
|
});
|
|
6955
7524
|
/**
|
|
@@ -7083,6 +7652,9 @@ let QueryKeys = /* @__PURE__ */ function(QueryKeys) {
|
|
|
7083
7652
|
QueryKeys["searchEnabled"] = "searchEnabled";
|
|
7084
7653
|
QueryKeys["langfuseConnection"] = "langfuseConnection";
|
|
7085
7654
|
QueryKeys["langfuseSessionLink"] = "langfuseSessionLink";
|
|
7655
|
+
QueryKeys["conversationTraceAvailability"] = "conversationTraceAvailability";
|
|
7656
|
+
QueryKeys["conversationTraceRecords"] = "conversationTraceRecords";
|
|
7657
|
+
QueryKeys["conversationTraceRecord"] = "conversationTraceRecord";
|
|
7086
7658
|
QueryKeys["user"] = "user";
|
|
7087
7659
|
QueryKeys["name"] = "name";
|
|
7088
7660
|
QueryKeys["models"] = "models";
|
|
@@ -7159,13 +7731,26 @@ let QueryKeys = /* @__PURE__ */ function(QueryKeys) {
|
|
|
7159
7731
|
QueryKeys["subagentThread"] = "subagentThread";
|
|
7160
7732
|
QueryKeys["codeEnvironments"] = "codeEnvironments";
|
|
7161
7733
|
QueryKeys["agentQueuedTurns"] = "agentQueuedTurns";
|
|
7734
|
+
QueryKeys["pinnedOrder"] = "pinnedOrder";
|
|
7162
7735
|
return QueryKeys;
|
|
7163
7736
|
}({});
|
|
7164
|
-
const DynamicQueryKeys = {
|
|
7737
|
+
const DynamicQueryKeys = {
|
|
7738
|
+
agentFiles: (agentId) => ["agentFiles", agentId],
|
|
7739
|
+
codeEnvironmentStatus: (id) => [
|
|
7740
|
+
"codeEnvironments",
|
|
7741
|
+
id,
|
|
7742
|
+
"status"
|
|
7743
|
+
]
|
|
7744
|
+
};
|
|
7165
7745
|
let MutationKeys = /* @__PURE__ */ function(MutationKeys) {
|
|
7166
7746
|
MutationKeys["subagentControl"] = "subagentControl";
|
|
7167
7747
|
MutationKeys["enqueueAgentQueuedTurn"] = "enqueueAgentQueuedTurn";
|
|
7168
7748
|
MutationKeys["cancelAgentQueuedTurn"] = "cancelAgentQueuedTurn";
|
|
7749
|
+
/** Whole-array favorites write, keyed so every hook instance's write is
|
|
7750
|
+
* visible to the others through the query client. */
|
|
7751
|
+
MutationKeys["updateFavorites"] = "updateFavorites";
|
|
7752
|
+
/** Pinned-section display order write, keyed for the same reason. */
|
|
7753
|
+
MutationKeys["updatePinnedOrder"] = "updatePinnedOrder";
|
|
7169
7754
|
MutationKeys["updateLangfuseConnection"] = "updateLangfuseConnection";
|
|
7170
7755
|
MutationKeys["testLangfuseConnection"] = "testLangfuseConnection";
|
|
7171
7756
|
MutationKeys["createAgentApiKey"] = "createAgentApiKey";
|
|
@@ -7687,10 +8272,14 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
|
|
|
7687
8272
|
getAvailableTools: () => getAvailableTools,
|
|
7688
8273
|
getBanner: () => getBanner,
|
|
7689
8274
|
getCategories: () => getCategories,
|
|
8275
|
+
getCodeEnvironmentStatus: () => getCodeEnvironmentStatus,
|
|
7690
8276
|
getCodeEnvironments: () => getCodeEnvironments,
|
|
7691
8277
|
getCodeOutputDownload: () => getCodeOutputDownload,
|
|
7692
8278
|
getConversationById: () => getConversationById,
|
|
7693
8279
|
getConversationTags: () => getConversationTags,
|
|
8280
|
+
getConversationTraceAvailability: () => getConversationTraceAvailability,
|
|
8281
|
+
getConversationTraceRecord: () => getConversationTraceRecord,
|
|
8282
|
+
getConversationTraceRecords: () => getConversationTraceRecords,
|
|
7694
8283
|
getConversations: () => getConversations,
|
|
7695
8284
|
getCustomConfigSpeech: () => getCustomConfigSpeech,
|
|
7696
8285
|
getDomainServerBaseUrl: () => getDomainServerBaseUrl,
|
|
@@ -7722,6 +8311,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
|
|
|
7722
8311
|
getMessagesByConvoId: () => getMessagesByConvoId,
|
|
7723
8312
|
getModels: () => getModels,
|
|
7724
8313
|
getParentSubagents: () => getParentSubagents,
|
|
8314
|
+
getPinnedOrder: () => getPinnedOrder,
|
|
7725
8315
|
getPresets: () => getPresets,
|
|
7726
8316
|
getProjectById: () => getProjectById,
|
|
7727
8317
|
getPrompt: () => getPrompt,
|
|
@@ -7813,6 +8403,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
|
|
|
7813
8403
|
updateMessage: () => updateMessage,
|
|
7814
8404
|
updateMessageContent: () => updateMessageContent,
|
|
7815
8405
|
updatePeoplePickerPermissions: () => updatePeoplePickerPermissions,
|
|
8406
|
+
updatePinnedOrder: () => updatePinnedOrder,
|
|
7816
8407
|
updatePreset: () => updatePreset,
|
|
7817
8408
|
updateProject: () => updateProject,
|
|
7818
8409
|
updatePromptGroup: () => updatePromptGroup,
|
|
@@ -7844,13 +8435,23 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
|
|
|
7844
8435
|
});
|
|
7845
8436
|
function getInsights(params = {}) {
|
|
7846
8437
|
const query = new URLSearchParams();
|
|
7847
|
-
for (const [key, value] of Object.entries(params)) if (value
|
|
8438
|
+
for (const [key, value] of Object.entries(params)) if (Array.isArray(value)) value.forEach((item) => query.append(key, String(item)));
|
|
8439
|
+
else if (value !== void 0 && value !== null && value !== "") query.set(key, String(value));
|
|
7848
8440
|
const suffix = query.toString() ? `?${query.toString()}` : "";
|
|
7849
8441
|
return request_default.get(`${insights()}${suffix}`);
|
|
7850
8442
|
}
|
|
7851
8443
|
function getInsightsAccess() {
|
|
7852
8444
|
return request_default.get(insightsAccess());
|
|
7853
8445
|
}
|
|
8446
|
+
function getConversationTraceAvailability(conversationId) {
|
|
8447
|
+
return request_default.get(conversationTraceAvailability(conversationId));
|
|
8448
|
+
}
|
|
8449
|
+
function getConversationTraceRecords({ conversationId, cursor }, signal) {
|
|
8450
|
+
return request_default.get(conversationTraceRecords(conversationId, cursor), signal ? { signal } : void 0);
|
|
8451
|
+
}
|
|
8452
|
+
function getConversationTraceRecord({ conversationId, recordId, messageId, sourceId }, signal) {
|
|
8453
|
+
return request_default.get(conversationTraceRecord(conversationId, recordId, messageId, sourceId), signal ? { signal } : void 0);
|
|
8454
|
+
}
|
|
7854
8455
|
function getLangfuseConnection() {
|
|
7855
8456
|
return request_default.get(adminLangfuseConnection());
|
|
7856
8457
|
}
|
|
@@ -7875,6 +8476,9 @@ function deleteUser(payload) {
|
|
|
7875
8476
|
function getCodeEnvironments() {
|
|
7876
8477
|
return request_default.get(codeEnvironments());
|
|
7877
8478
|
}
|
|
8479
|
+
function getCodeEnvironmentStatus(id) {
|
|
8480
|
+
return request_default.get(codeEnvironmentStatus(id));
|
|
8481
|
+
}
|
|
7878
8482
|
function pairCodeEnvironment(payload) {
|
|
7879
8483
|
return request_default.post(codeEnvironmentPairings(), payload);
|
|
7880
8484
|
}
|
|
@@ -7890,6 +8494,13 @@ function getFavorites() {
|
|
|
7890
8494
|
function updateFavorites(favorites) {
|
|
7891
8495
|
return request_default.post(`${apiBaseUrl()}/api/user/settings/favorites`, { favorites });
|
|
7892
8496
|
}
|
|
8497
|
+
/** Combined Pinned-section display order: favorite and pinned-chat entry keys interleaved. */
|
|
8498
|
+
function getPinnedOrder() {
|
|
8499
|
+
return request_default.get(pinnedOrder());
|
|
8500
|
+
}
|
|
8501
|
+
function updatePinnedOrder(pinnedOrder$1) {
|
|
8502
|
+
return request_default.post(pinnedOrder(), { pinnedOrder: pinnedOrder$1 });
|
|
8503
|
+
}
|
|
7893
8504
|
/** Tool favorites — starred marketplace items (builtins, tools, MCP servers, skills). */
|
|
7894
8505
|
function getToolFavorites() {
|
|
7895
8506
|
return request_default.get(toolFavorites());
|
|
@@ -8738,6 +9349,6 @@ const getActiveJobs = () => {
|
|
|
8738
9349
|
return request_default.get(activeJobs());
|
|
8739
9350
|
};
|
|
8740
9351
|
//#endregion
|
|
8741
|
-
export { permissionEntrySchema as $, googleSchema as $a, BedrockReasoningConfig as $i, specialVariables as $n, feedbackSchema as $o, defaultTextMimeTypes as $r, normalizeEndpointName as $s, azureGroupConfigsSchema as $t, updateResourcePermissions as A, defaultAgentFormValues as Aa, materializeModelSpecEndpoints as Ai, imageGenTools as An, tQueryParamsSchema as Ao, isProcessMCPServerField as Ar, feedbackFilterFieldSchema as As, SKILL_SYNC_DEFAULT_DISCOVERY_DEPTH as At, MutationKeys as B, eReasoningResponseKeySchema as Ba, getMaxSubagents as Bi, modularEndpoints as Bn, actionDelimiter as Bo, registerPage as Br, hasActivePiiPatterns as Bs, SettingsViews as Bt, resetPassword as C, authTypeSchema as Ca, setFileConfigRegexCompiler as Ci, fileSourceSchema as Cn, tConvoUpdateSchema as Co, MCP_USER_INPUT_FIELDS as Cr, SKILL_FILTER_FIELDS as Cs, MAX_SUBAGENT_DEPTH as Ct, updateFeedback as D, compactAgentsSchema as Da, videoMimeTypes as Di, getDefaultParamsEndpoint as Dn, tPluginAuthConfigSchema as Do, WebSocketOptionsSchema as Dr, agentInstructionFilterFieldSchema as Ds, RateLimitPrefix as Dt, searchPrincipals as E, compactAgentsBaseSchema as Ea, textMimeTypes as Ei, getConfigDefaults as En, tModelSpecPresetSchema as Eo, StreamableHTTPOptionsSchema as Er, actionMetadataFilterFieldSchema as Es, OCRStrategy as Et, request_default as F, eModelEndpointSchema as Fa, MAX_CHAT_PROJECT_DESCRIPTION_LENGTH as Fi, langfuseConfigSchema as Fn, FilePurpose as Fo, FileSources as Fr, filterPiiStarterPatternSchema as Fs, SafeSearchTypes as Ft, PrincipalType as G, endpointSettings as Ga, clampSettingRange as Gi, paramDefinitionSchema as Gn, isActionTool as Go, bedrockDocumentFormats as Gr, skillFilterFieldSchema as Gs, VisionModes as Gt, AccessRoleIds as H, eThinkingDisplaySchema as Ha, ComponentTypes as Hi, normalizeSearxngEngines as Hn, defaultOrderQuery as Ho, applicationMimeTypes as Hr, messageFilterFieldSchema as Hs, TTSProviders as Ht, getTokenHeader as I, eReasoningContextSchema as Ia, MAX_CHAT_PROJECT_NAME_LENGTH as Ii, memorySchema as In, MessageContentTypes as Io, checkOpenAIStorage as Ir, filtersConfigSchema as Is, ScraperProviders as It, accessRoleToPermBits as J, getGoogleThinkingBudgetMax as Ja, generateOpenAISchema as Ji, resolveEndpointType as Jn, resolveStatefulCodeEnvironment as Jo, codeInterpreterMimeTypesList as Jr, userSubmittedMessageFieldPathSchema as Js, alternateName as Jt, ResourceType as K, extendedModelEndpointSchema as Ka, generateDynamicSchema as Ki, providerEndpointMap as Kn, STATEFUL_CODE_ENVIRONMENTS as Ko, bedrockDocumentMimeTypes as Kr, toolArgumentFilterFieldSchema as Ks, agentsEndpointSchema as Kt, setAcceptLanguageHeader as L, eReasoningEffortSchema as La, MAX_GRAPH_SUBAGENT_MEMBERS as Li, messageFilterPiiSchema as Ln, RunStatus as Lo, apiBaseUrl as Lr, getPiiRegexProgramSize as Ls, SearchCategories as Lt, updateUserKey as M, documentSupportedProviders as Ma, resolveModelSpecEndpoint as Mi, interfaceSchema as Mn, AnnotationTypes as Mo, AuthorizationTypeEnum as Mr, filterPiiActionSchema as Ms, SKILL_SYNC_MAX_INTERVAL_MINUTES as Mt, updateUserPlugins as N, eAnthropicEffortSchema as Na, specsConfigSchema as Ni, isRemoteOidcUrlAllowed as Nn, AssistantStreamEvents as No, TokenExchangeMethodEnum as Nr, filterPiiCustomPatternSchema as Ns, SKILL_SYNC_MIN_INTERVAL_MINUTES as Nt, updateMessage as O, compactAssistantSchema as Oa, REFILL_INTERVAL_UNITS as Oi, getEndpointField as On, tPluginSchema as Oo, hasProcessMCPServerConfig as Or, conversationStarterFilterFieldSchema as Os, RerankerTypes as Ot, userKeyQuery as P, eImageDetailSchema as Pa, tModelSpecSchema as Pi, isSecureCodeEnvironmentControlURL as Pn, EToolResources as Po, FileContext as Pr, filterPiiRegexSchema as Ps, STTProviders as Pt, permBitsToAccessLevel as Q, googleGenConfigSchema as Qa, BedrockProviders as Qi, skillSyncGitHubSourceSchema as Qn, feedbackRatingSchema as Qo, defaultSTTMimeTypes as Qr, isSensitiveEnvVar as Qs, azureEndpointSchema as Qt, setTokenHeader as R, eReasoningModeSchema as Ra, MAX_SUBAGENTS as Ri, messageFilterSchema as Rn, StepStatus as Ro, buildLoginRedirectUrl as Rr, hasActiveFiltersConfig as Rs, SearchProviders as Rt, requestPasswordReset as S, assistantSchema as Sa, retrievalMimeTypesList as Si, excludedKeys as Sn, tConversationTagSchema as So, MCP_SERVER_TITLE_PATTERN as Sr, PROMPT_FILTER_FIELDS as Ss, LocalStorageKeys as St, revokeUserKey as T, coerceNumber as Ta, supportsFiles as Ti, fileStrategiesSchema as Tn, tMessageSchema as To, StdioOptionsSchema as Tr, TOOL_ARGUMENT_FILTER_FIELDS as Ts, MAX_SUBAGENT_RUN_CONFIGS as Tt, PermissionBits as U, eThinkingLevelSchema as Ua, OptionTypes as Ui, normalizeServerName as Un, hostImageIdSuffix as Uo, audioMimeTypes as Ur, modelParameterFilterFieldSchema as Us, Time as Ut, QueryKeys as V, eReasoningSummarySchema as Va, setMaxSubagents as Vi, normalizeMCPToolKey as Vn, actionDomainSeparator as Vo, sharedFileDownload as Vr, memoryFilterFieldSchema as Vs, SystemCategories as Vt, PrincipalModel as W, eVerbositySchema as Wa, SettingTypes as Wi, ocrSchema as Wn, hostImageNamePrefix as Wo, bedrockDocumentExtensions as Wr, promptFilterFieldSchema as Ws, ViolationTypes as Wt, getResourcePermissionsResponseSchema as X, getSettingsKeys as Xa, AnthropicEffort as Xi, setMessageFilterRegexValidator as Xn, FEEDBACK_REASON_KEYS as Xo, convertStringsToRegex as Xr, extractEnvVariable as Xs, assistantEndpointSchema as Xt, effectivePermissionsResponseSchema as Y, getModelKey as Ya, validateSettingDefinitions as Yi, retainRecentConfigSchema as Yn, FEEDBACK_RATINGS as Yo, codeTypeMapping as Yr, envVarRegex as Ys, anthropicEndpointSchema as Yt, hasPermissions as Z, googleBaseSchema as Za, AuthType as Zi, skillSyncConfigSchema as Zn, FEEDBACK_TAGS as Zo, defaultOCRMimeTypes as Zr, extractVariableName as Zs, azureBaseSchema as Zt, getResourcePermissions as _, agentsSchema as _a, mbToBytes as _i, defaultEndpoints as _n, removeNullishValues as _o, webSearchSchema as _r, MAX_PII_PATTERN_LABEL_LENGTH as _s, FetchTokenConfig as _t, data_service_exports as a, Providers as aa, fileConfigSchema as ai, bedrockModels as an, isAssistantsEndpoint as ao, summarizationTriggerSchema as ar, AGENT_INSTRUCTION_FILTER_FIELDS as as, AgentCapabilities as at, register as b, anthropicSchema as ba, mimeTypeAliases as bi, defaultSocialLogins as bn, tBannerSchema as bo, MCPServersSchema as br, MESSAGE_FILTER_FIELDS as bs, InfiniteCollections as bt, getAccessRoles as c, ReasoningMode as ca, getEndpointFileConfig as ci, checkpointerTypeSchema as cn, isMythosClassModel as co, toolApprovalModeSchema as cr, FEEDBACK_FILTER_FIELDS as cs, BASE_PRINCIPAL_CONFIG_SECTIONS as ct, getAvailablePlugins as d, ReasoningSummary as da, imageTypeMapping as di, codeEnvironmentUserConfigSchema as dn, isUUID as do, turnstileOptionsSchema as dr, HITL_MESSAGE_FILTER_FIELDS as ds, CohereConstants as dt, EModelEndpoint as ea, documentParserMimeTypes as ei, azureGroupSchema as en, googleSettings as eo, splitMCPToolKey as er, feedbackTagKeySchema as es, principalSchema as et, getConversationById as f, SkillsScope as fa, inferMimeType as fi, codeEnvironmentUserSettingsSchema as fn, openAIBaseSchema as fo, turnstileSchema as fr, MAX_PII_CUSTOM_PATTERNS_TOTAL as fs, Constants as ft, getModels as g, agentsBaseSchema as ga, isPermissiveMimeConfig as gi, defaultAssistantsVersion as gn, paramEndpoints as go, visionModels as gr, MAX_PII_PATTERN_ID_LENGTH as gs, ErrorTypes as gt, getMCPServerConnectionStatus as h, Verbosity as ha, isBedrockDocumentType as hi, defaultAgentCapabilities as hn, openRouterSchema as ho, vertexModelConfigSchema as hr, MAX_PII_PATTERNS_PER_SOURCE as hs, EndpointURLs as ht, createPreset as i, MemoryScope as ia, fileConfig as ii, bedrockGuardrailConfigSchema as in, isAgentsEndpoint as io, summarizationConfigSchema as ir, ACTION_METADATA_FILTER_FIELDS as is, AUTH_USER_DOC_BY_ID_PREFIX as it, updateTokenCount as j, defaultAssistantFormValues as ja, modelSpecSubagentsSchema as ji, initialModelsConfig as jn, tSharedLinkSchema as jo, AuthTypeEnum as jr, fileFilterFieldSchema as js, SKILL_SYNC_MAX_DISCOVERY_DEPTH as jt, updateMessageContent as k, compactGoogleSchema as ka, getRefillEligibilityDate as ki, getSchemaDefaults as kn, tPresetSchema as ko, isProcessMCPServerConfig as kr, conversationTitleFilterFieldSchema as ks, RetentionMode as kt, getAgentApiKeys as l, ReasoningParameterFormat as la, imageExtRegex as li, cloudfrontConfigSchema as ln, isOpenAILikeProvider as lo, toolApprovalPolicySchema as lr, FILE_FILTER_FIELDS as ls, CacheKeys as lt, getEffectivePermissions as m, ThinkingLevel as ma, isAnthropicTextDocumentType as mi, contextPruningSchema as mn, openAISettings as mo, vertexAISchema as mr, MAX_PII_CUSTOM_REGEX_INSTRUCTIONS as ms, EImageOutputType as mt, clearAllConversations as n, ImageVisionTool as na, excelFileTypes as ni, baseEndpointSchema as nn, imageDetailValue as no, stripServerNamePrefix as nr, getTagsForRating as ns, updateResourcePermissionsRequestSchema as nt, deleteAgentApiKey as o, ReasoningContext as oa, fullMimeTypesList as oi, buildServerNameAliases as on, isDocumentSupportedProvider as oo, supportsBalanceCheck as or, CONVERSATION_STARTER_FILTER_FIELDS as os, AuthKeys as ot, getCustomConfigSpeech as p, ThinkingDisplay as pa, isAnthropicDocumentType as pi, configSchema as pn, openAISchema as po, validateVisionModel as pr, MAX_PII_CUSTOM_REGEX_CHARACTERS as ps, DEFAULT_MEMORY_MAX_INPUT_TOKENS as pt, accessRoleSchema as q, getGoogleThinkingBudgetBounds as qa, generateGoogleSchema as qi, rateLimitSchema as qn, resolveAllowedStatefulCodeEnvironments as qo, codeInterpreterMimeTypes as qr, unattributedAssistantContentSchema as qs, allowedAddressesSchema as qt, createAgentApiKey as r, MYTHOS_CLASS_FAMILIES as ra, excelMimeTypes as ri, bedrockEndpointSchema as rn, inputTokensIncludesCache as ro, stripServerNamePrefixes as rr, toMinimalFeedback as rs, updateResourcePermissionsResponseSchema as rt, deletePreset as s, ReasoningEffort as sa, getConfiguredMimeAccept as si, checkpointerSchema as sn, isImageVisionTool as so, toolApprovalHookConfigSchema as sr, CONVERSATION_TITLE_FILTER_FIELDS as ss, BASE_ONLY_CONFIG_SECTIONS as st, cancelMCPOAuth as t, ImageDetail as ta, endpointFileConfigSchema as ti, balanceSchema as tn, imageDetailNumeric as to, splitToolCallName as tr, getTagByKey as ts, resourcePermissionsResponseSchema as tt, getAllEffectivePermissions as u, ReasoningResponseKey as ua, imageMimeTypes as ui, codeEnvironmentPermissionDecisionSchema as un, isParamEndpoint as uo, transactionsSchema as ur, FILTER_PII_STARTER_PATTERNS as us, Capabilities as ut, getSharedLink as v, agentsSettings as va, megabyte as vi, defaultModels as vn, resolveAgentSkillsScope as vo, MCPOptionsSchema as vr, MAX_PII_PATTERN_LENGTH as vs, ForkOptions as vt, revokeAllUserKeys as w, cacheSubsetProviders as wa, supportedMimeTypes as wi, fileStorageSchema as wn, tExampleSchema as wo, SSEOptionsSchema as wr, STORED_MESSAGE_FILTER_FIELDS as ws, MAX_SUBAGENT_GRAPH_NODES as wt, reinitializeMCPServer as x, anthropicSettings as xa, retrievalMimeTypes as xi, endpointSchema as xn, tConversationSchema as xo, MCP_SERVER_TITLE_ERROR as xr, MODEL_PARAMETER_FILTER_FIELDS as xs, KnownEndpoints as xt, getSharedMessages as y, anthropicBaseSchema as ya, mergeFileConfig as yi, defaultRetrievalModels as yn, subagentThreadLineageSchema as yo, MCPServerUserInputSchema as yr, MEMORY_FILTER_FIELDS as ys, ImageDetailCost as yt, DynamicQueryKeys as z, eReasoningParameterFormatSchema as za, MAX_SUBAGENTS_CEILING as zi, modelConfigSchema as zn, Tools as zo, loginPage as zr, hasActivePiiFields as zs, SettingsTabValues as zt };
|
|
9352
|
+
export { permissionEntrySchema as $, eAnthropicEffortSchema as $a, specsConfigSchema as $i, ocrSchema as $n, tQueryParamsSchema as $o, registerPage as $r, MAX_PII_CUSTOM_REGEX_INSTRUCTIONS as $s, alternateName as $t, updateResourcePermissions as A, ReasoningResponseKey as Aa, skillFilterFieldSchema as Ac, isAnthropicTextDocumentType as Ai, fileStrategiesSchema as An, isMythosClassModel as Ao, MAX_MCP_ICON_PATH_LENGTH as Ar, getTagByKey as As, MAX_SUBAGENT_RUN_CONFIGS as At, MutationKeys as B, anthropicSchema as Ba, resolveUseResponsesApi as Bi, isSpeechProviderConfigured as Bn, removeNullishValues as Bo, WebSocketOptionsSchema as Br, isCodeWorkspaceSelection as Bs, SafeSearchTypes as Bt, resetPassword as C, MYTHOS_CLASS_FAMILIES as Ca, hasActiveFiltersConfig as Cc, getDocumentFileExtension as Ci, defaultModels as Cn, inputTokensIncludesCache as Co, turnstileOptionsSchema as Cr, resolveCodePermissionDecision as Cs, KnownEndpoints as Ct, updateFeedback as D, ReasoningEffort as Da, messageFilterFieldSchema as Dc, imageTypeMapping as Di, excludedKeys as Dn, isImageVisionTool as Do, vertexModelConfigSchema as Dr, feedbackRatingSchema as Ds, LocalStorageKeys as Dt, searchPrincipals as E, ReasoningContext as Ea, memoryFilterFieldSchema as Ec, imageMimeTypes as Ei, endpointSchema as En, isDocumentSupportedProvider as Eo, vertexAISchema as Er, FEEDBACK_TAGS as Es, LANGFUSE_TRACE_USER_METADATA_FIELDS as Et, request_default as F, Verbosity as Fa, extractEnvVariable as Fc, mbToBytes as Fi, imageGenTools as Fn, openAIBaseSchema as Fo, MCP_SERVER_TITLE_PATTERN as Fr, CODE_WORKSPACE_ID_PATTERN as Fs, SKILL_SYNC_DEFAULT_DISCOVERY_DEPTH as Ft, PrincipalType as G, coerceNumber as Ga, supportsFiles as Gi, memorySchema as Gn, tConversationTagSchema as Go, AuthorizationTypeEnum as Gr, CONVERSATION_STARTER_FILTER_FIELDS as Gs, SettingsViews as Gt, AccessRoleIds as H, assistantSchema as Ha, retrievalMimeTypesList as Hi, langfuseTraceConfigSchema as Hn, subagentThreadLineageSchema as Ho, isProcessMCPServerConfig as Hr, isCodeWorkspaceSelections as Hs, SearchCategories as Ht, getTokenHeader as I, agentsBaseSchema as Ia, extractVariableName as Ic, megabyte as Ii, initialModelsConfig as In, openAISchema as Io, MCP_USER_INPUT_FIELDS as Ir, CODE_WORKSPACE_MAX_COUNT as Is, SKILL_SYNC_MAX_DISCOVERY_DEPTH as It, accessRoleToPermBits as J, compactAssistantSchema as Ja, REFILL_INTERVAL_UNITS as Ji, modelConfigSchema as Jn, tMessageSchema as Jo, FileSources as Jr, FILE_FILTER_FIELDS as Js, Time as Jt, ResourceType as K, compactAgentsBaseSchema as Ka, textMimeTypes as Ki, messageFilterPiiSchema as Kn, tConvoUpdateSchema as Ko, TokenExchangeMethodEnum as Kr, CONVERSATION_TITLE_FILTER_FIELDS as Ks, SystemCategories as Kt, setAcceptLanguageHeader as L, agentsSchema as La, isSensitiveEnvVar as Lc, mergeFileConfig as Li, interfaceSchema as Ln, openAISettings as Lo, SSEOptionsSchema as Lr, CODE_WORKSPACE_OPERATIONS as Ls, SKILL_SYNC_MAX_INTERVAL_MINUTES as Lt, updateUserKey as M, SkillsScope as Ma, unattributedAssistantContentSchema as Mc, isMessageFileUpload as Mi, getDefaultParamsEndpoint as Mn, isParamEndpoint as Mo, MCPServerUserInputSchema as Mr, toMinimalFeedback as Ms, RateLimitPrefix as Mt, updateUserPlugins as N, ThinkingDisplay as Na, userSubmittedMessageFieldPathSchema as Nc, isPermissiveMimeConfig as Ni, getEndpointField as Nn, isUUID as No, MCPServersSchema as Nr, CODE_ENVIRONMENT_DECISION_VERSION as Ns, RerankerTypes as Nt, updateMessage as O, ReasoningMode as Oa, modelParameterFilterFieldSchema as Oc, inferMimeType as Oi, fileSourceSchema as On, isKnownProviderIdentifier as Oo, visionModels as Or, feedbackSchema as Os, MAX_SUBAGENT_DEPTH as Ot, userKeyQuery as P, ThinkingLevel as Pa, envVarRegex as Pc, isResponsesApiUpload as Pi, getSchemaDefaults as Pn, mediaSupportedProviders as Po, MCP_SERVER_TITLE_ERROR as Pr, CODE_ENVIRONMENT_MODES as Ps, RetentionMode as Pt, permBitsToAccessLevel as Q, documentSupportedProviders as Qa, resolveModelSpecEndpoint as Qi, normalizeServerName as Qn, tPresetSchema as Qo, loginPage as Qr, MAX_PII_CUSTOM_REGEX_CHARACTERS as Qs, allowedAddressesSchema as Qt, setTokenHeader as R, agentsSettings as Ra, normalizeEndpointName as Rc, mimeTypeAliases as Ri, isRemoteOidcUrlAllowed as Rn, openRouterSchema as Ro, StdioOptionsSchema as Rr, CODE_WORKSPACE_SELECTION_ERROR_REASONS as Rs, SKILL_SYNC_MIN_INTERVAL_MINUTES as Rt, requestPasswordReset as S, ImageVisionTool as Sa, getPiiRegexProgramSize as Sc, getConfiguredMimeAccept as Si, defaultEndpoints as Sn, imageDetailValue as So, transactionsSchema as Sr, resolveCodeApprovalMode as Ss, InfiniteCollections as St, revokeUserKey as T, Providers as Ta, hasActivePiiPatterns as Tc, imageExtRegex as Ti, defaultSocialLogins as Tn, isAssistantsEndpoint as To, validateVisionModel as Tr, FEEDBACK_REASON_KEYS as Ts, LANGFUSE_TRACE_USER_ID_FIELDS as Tt, PermissionBits as U, authTypeSchema as Ua, setFileConfigRegexCompiler as Ui, listConfiguredSpeechProviders as Un, tBannerSchema as Uo, isProcessMCPServerField as Ur, ACTION_METADATA_FILTER_FIELDS as Us, SearchProviders as Ut, QueryKeys as V, anthropicSettings as Va, retrievalMimeTypes as Vi, langfuseConfigSchema as Vn, resolveAgentSkillsScope as Vo, hasProcessMCPServerConfig as Vr, isCodeWorkspaceSelectionErrorReason as Vs, ScraperProviders as Vt, PrincipalModel as W, cacheSubsetProviders as Wa, supportedMimeTypes as Wi, mcpRefreshDefaults as Wn, tConversationSchema as Wo, AuthTypeEnum as Wr, AGENT_INSTRUCTION_FILTER_FIELDS as Ws, SettingsTabValues as Wt, getResourcePermissionsResponseSchema as X, defaultAgentFormValues as Xa, materializeModelSpecEndpoints as Xi, normalizeMCPToolKey as Xn, tPluginAuthConfigSchema as Xo, apiBaseUrl as Xr, HITL_MESSAGE_FILTER_FIELDS as Xs, VisionModes as Xt, effectivePermissionsResponseSchema as Y, compactGoogleSchema as Ya, getRefillEligibilityDate as Yi, modularEndpoints as Yn, tModelSpecPresetSchema as Yo, checkOpenAIStorage as Yr, FILTER_PII_STARTER_PATTERNS as Ys, ViolationTypes as Yt, hasPermissions as Z, defaultAssistantFormValues as Za, modelSpecSubagentsSchema as Zi, normalizeSearxngEngines as Zn, tPluginSchema as Zo, buildLoginRedirectUrl as Zr, MAX_PII_CUSTOM_PATTERNS_TOTAL as Zs, agentsEndpointSchema as Zt, getResourcePermissions as _, AuthType as _a, filterPiiActionSchema as _c, excelFileTypes as _i, codeEnvironmentUserSettingsSchema as _n, googleBaseSchema as _o, toolApprovalHookConfigSchema as _r, resolveAllowedStatefulCodeEnvironments as _s, EndpointURLs as _t, data_service_exports as a, MAX_SUBAGENTS_CEILING as aa, MESSAGE_FILTER_FIELDS as ac, bedrockDocumentFormats as ai, azureGroupSchema as an, eReasoningParameterFormatSchema as ao, retainRecentConfigSchema as ar, MessageContentTypes as as, AgentCapabilities as at, register as b, EModelEndpoint as ba, filterPiiStarterPatternSchema as bc, fileConfigSchema as bi, defaultAgentCapabilities as bn, googleSettings as bo, traceViewerDefaults as br, CodeApprovalModeError as bs, ForkOptions as bt, getAccessRoles as c, ComponentTypes as ca, SKILL_FILTER_FIELDS as cc, codeInterpreterMimeTypesList as ci, bedrockEndpointSchema as cn, eThinkingDisplaySchema as co, skillSyncGitHubSourceSchema as cr, Tools as cs, BASE_PRINCIPAL_CONFIG_SECTIONS as ct, getAvailablePlugins as d, clampSettingRange as da, actionMetadataFilterFieldSchema as dc, defaultLLMDeliveryPathSchema as di, buildServerNameAliases as dn, endpointSettings as do, splitToolCallName as dr, agentGitIdentitySchema as ds, CacheKeys as dt, tModelSpecSchema as ea, MAX_PII_PATTERNS_PER_SOURCE as ec, sharedFileDownload as ei, anthropicEndpointSchema as en, eImageDetailSchema as eo, paramDefinitionSchema as er, tSharedLinkSchema as es, principalSchema as et, getConversationById as f, generateDynamicSchema as fa, agentInstructionFilterFieldSchema as fc, defaultOCRMimeTypes as fi, checkpointerSchema as fn, extendedModelEndpointSchema as fo, stripServerNamePrefix as fr, defaultOrderQuery as fs, Capabilities as ft, getModels as g, AnthropicEffort as ga, fileFilterFieldSchema as gc, endpointFileConfigSchema as gi, codeEnvironmentUserConfigSchema as gn, getSettingsKeys as go, supportsBalanceCheck as gr, STATEFUL_CODE_ENVIRONMENTS as gs, EImageOutputType as gt, getMCPServerConnectionStatus as h, validateSettingDefinitions as ha, feedbackFilterFieldSchema as hc, documentParserMimeTypes as hi, codeEnvironmentPermissionDecisionSchema as hn, getModelKey as ho, summarizationTriggerSchema as hr, isActionTool as hs, DEFAULT_MEMORY_MAX_INPUT_TOKENS as ht, createPreset as i, MAX_SUBAGENTS as ia, MEMORY_FILTER_FIELDS as ic, bedrockDocumentExtensions as ii, azureGroupConfigsSchema as in, eReasoningModeSchema as io, resolveTraceViewerConfig as ir, FilePurpose as is, AUTH_USER_DOC_BY_ID_PREFIX as it, updateTokenCount as j, ReasoningSummary as ja, toolArgumentFilterFieldSchema as jc, isBedrockDocumentType as ji, getConfigDefaults as jn, isOpenAILikeProvider as jo, MCPOptionsSchema as jr, getTagsForRating as js, OCRStrategy as jt, updateMessageContent as k, ReasoningParameterFormat as ka, promptFilterFieldSchema as kc, isAnthropicDocumentType as ki, fileStorageSchema as kn, isMediaSupportedProvider as ko, webSearchSchema as kr, feedbackTagKeySchema as ks, MAX_SUBAGENT_GRAPH_NODES as kt, getAgentApiKeys as l, OptionTypes as la, STORED_MESSAGE_FILTER_FIELDS as lc, codeTypeMapping as li, bedrockGuardrailConfigSchema as ln, eThinkingLevelSchema as lo, specialVariables as lr, actionDelimiter as ls, CODE_ENVIRONMENT_COMMAND_TIMEOUT_DEFAULT_MS as lt, getEffectivePermissions as m, generateOpenAISchema as ma, conversationTitleFilterFieldSchema as mc, defaultTextMimeTypes as mi, cloudfrontConfigSchema as mn, getGoogleThinkingBudgetMax as mo, summarizationConfigSchema as mr, hostImageNamePrefix as ms, Constants as mt, clearAllConversations as n, MAX_CHAT_PROJECT_NAME_LENGTH as na, MAX_PII_PATTERN_LABEL_LENGTH as nc, applicationMimeTypes as ni, azureBaseSchema as nn, eReasoningContextSchema as no, rateLimitSchema as nr, AssistantStreamEvents as ns, updateResourcePermissionsRequestSchema as nt, deleteAgentApiKey as o, getMaxSubagents as oa, MODEL_PARAMETER_FILTER_FIELDS as oc, bedrockDocumentMimeTypes as oi, balanceSchema as on, eReasoningResponseKeySchema as oo, setMessageFilterRegexValidator as or, RunStatus as os, AuthKeys as ot, getCustomConfigSpeech as p, generateGoogleSchema as pa, conversationStarterFilterFieldSchema as pc, defaultSTTMimeTypes as pi, checkpointerTypeSchema as pn, getGoogleThinkingBudgetBounds as po, stripServerNamePrefixes as pr, hostImageIdSuffix as ps, CohereConstants as pt, accessRoleSchema as q, compactAgentsSchema as qa, videoMimeTypes as qi, messageFilterSchema as qn, tExampleSchema as qo, FileContext as qr, FEEDBACK_FILTER_FIELDS as qs, TTSProviders as qt, createAgentApiKey as r, MAX_GRAPH_SUBAGENT_MEMBERS as ra, MAX_PII_PATTERN_LENGTH as rc, audioMimeTypes as ri, azureEndpointSchema as rn, eReasoningEffortSchema as ro, resolveEndpointType as rr, EToolResources as rs, updateResourcePermissionsResponseSchema as rt, deletePreset as s, setMaxSubagents as sa, PROMPT_FILTER_FIELDS as sc, codeInterpreterMimeTypes as si, baseEndpointSchema as sn, eReasoningSummarySchema as so, skillSyncConfigSchema as sr, StepStatus as ss, BASE_ONLY_CONFIG_SECTIONS as st, cancelMCPOAuth as t, MAX_CHAT_PROJECT_DESCRIPTION_LENGTH as ta, MAX_PII_PATTERN_ID_LENGTH as tc, DefaultLLMDeliveryPath as ti, assistantEndpointSchema as tn, eModelEndpointSchema as to, providerEndpointMap as tr, AnnotationTypes as ts, resourcePermissionsResponseSchema as tt, getAllEffectivePermissions as u, SettingTypes as ua, TOOL_ARGUMENT_FILTER_FIELDS as uc, convertStringsToRegex as ui, bedrockModels as un, eVerbositySchema as uo, splitMCPToolKey as ur, actionDomainSeparator as us, CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS as ut, getSharedLink as v, BedrockProviders as va, filterPiiCustomPatternSchema as vc, excelMimeTypes as vi, configSchema as vn, googleGenConfigSchema as vo, toolApprovalModeSchema as vr, resolveStatefulCodeEnvironment as vs, ErrorTypes as vt, revokeAllUserKeys as w, MemoryScope as wa, hasActivePiiFields as wc, getEndpointFileConfig as wi, defaultRetrievalModels as wn, isAgentsEndpoint as wo, turnstileSchema as wr, FEEDBACK_RATINGS as ws, LANGFUSE_TRACE_CONVERSATION_METADATA_FIELDS as wt, reinitializeMCPServer as x, ImageDetail as xa, filtersConfigSchema as xc, fullMimeTypesList as xi, defaultAssistantsVersion as xn, imageDetailNumeric as xo, traceViewerLimits as xr, getAllowedCodeApprovalModes as xs, ImageDetailCost as xt, getSharedMessages as y, BedrockReasoningConfig as ya, filterPiiRegexSchema as yc, fileConfig as yi, contextPruningSchema as yn, googleSchema as yo, toolApprovalPolicySchema as yr, CODE_APPROVAL_MODES as ys, FetchTokenConfig as yt, DynamicQueryKeys as z, anthropicBaseSchema as za, resolveSandboxFilename as zi, isSecureCodeEnvironmentControlURL as zn, paramEndpoints as zo, StreamableHTTPOptionsSchema as zr, isCodeEnvironmentMode as zs, STTProviders as zt };
|
|
8742
9353
|
|
|
8743
|
-
//# sourceMappingURL=data-service-
|
|
9354
|
+
//# sourceMappingURL=data-service-Bx6IFaSa.mjs.map
|