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
|
@@ -350,6 +350,52 @@ const filtersConfigSchema = zod.z.object({
|
|
|
350
350
|
});
|
|
351
351
|
});
|
|
352
352
|
//#endregion
|
|
353
|
+
//#region src/code/workspace.ts
|
|
354
|
+
const CODE_WORKSPACE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
|
|
355
|
+
/** Protocol-v1 ceiling enforced by the worker and Code API. */
|
|
356
|
+
const CODE_WORKSPACE_MAX_COUNT = 32;
|
|
357
|
+
/** API/client protocol for immutable conversation-owned environment decisions. */
|
|
358
|
+
const CODE_ENVIRONMENT_DECISION_VERSION = 1;
|
|
359
|
+
const CODE_WORKSPACE_OPERATIONS = [
|
|
360
|
+
"read_file",
|
|
361
|
+
"search_text",
|
|
362
|
+
"list_files",
|
|
363
|
+
"write_file",
|
|
364
|
+
"preview_edit",
|
|
365
|
+
"edit_file",
|
|
366
|
+
"execute_command"
|
|
367
|
+
];
|
|
368
|
+
const CODE_WORKSPACE_SELECTION_ERROR_REASONS = [
|
|
369
|
+
"required",
|
|
370
|
+
"invalid",
|
|
371
|
+
"worker_unavailable",
|
|
372
|
+
"unsupported",
|
|
373
|
+
"missing",
|
|
374
|
+
"locked"
|
|
375
|
+
];
|
|
376
|
+
const CODE_ENVIRONMENT_MODES = ["attached", "without_attached"];
|
|
377
|
+
function isCodeEnvironmentMode(value) {
|
|
378
|
+
return CODE_ENVIRONMENT_MODES.some((mode) => mode === value);
|
|
379
|
+
}
|
|
380
|
+
function isCodeWorkspaceSelectionErrorReason(value) {
|
|
381
|
+
return CODE_WORKSPACE_SELECTION_ERROR_REASONS.some((reason) => reason === value);
|
|
382
|
+
}
|
|
383
|
+
function isCodeWorkspaceSelection(value) {
|
|
384
|
+
if (value == null || typeof value !== "object" || Array.isArray(value)) return false;
|
|
385
|
+
const selection = value;
|
|
386
|
+
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);
|
|
387
|
+
}
|
|
388
|
+
/** One exact workspace per attached environment used by a conversation. */
|
|
389
|
+
function isCodeWorkspaceSelections(value) {
|
|
390
|
+
if (!Array.isArray(value)) return false;
|
|
391
|
+
const environmentIds = /* @__PURE__ */ new Set();
|
|
392
|
+
return value.every((selection) => {
|
|
393
|
+
if (!isCodeWorkspaceSelection(selection) || environmentIds.has(selection.environmentId)) return false;
|
|
394
|
+
environmentIds.add(selection.environmentId);
|
|
395
|
+
return true;
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
//#endregion
|
|
353
399
|
//#region src/feedback.ts
|
|
354
400
|
const FEEDBACK_RATINGS = ["thumbsUp", "thumbsDown"];
|
|
355
401
|
const FEEDBACK_REASON_KEYS = [
|
|
@@ -459,6 +505,63 @@ function getTagByKey(key) {
|
|
|
459
505
|
return FEEDBACK_TAGS.find((tag) => tag.key === key);
|
|
460
506
|
}
|
|
461
507
|
//#endregion
|
|
508
|
+
//#region src/code/approval.ts
|
|
509
|
+
const CODE_APPROVAL_MODES = [
|
|
510
|
+
"ask",
|
|
511
|
+
"acceptEdits",
|
|
512
|
+
"fullAccess"
|
|
513
|
+
];
|
|
514
|
+
const MODE_PERMISSIONS = {
|
|
515
|
+
ask: {
|
|
516
|
+
fileWrite: "ask",
|
|
517
|
+
commandExecution: "ask"
|
|
518
|
+
},
|
|
519
|
+
acceptEdits: {
|
|
520
|
+
fileWrite: "allow",
|
|
521
|
+
commandExecution: "ask"
|
|
522
|
+
},
|
|
523
|
+
fullAccess: {
|
|
524
|
+
fileWrite: "allow",
|
|
525
|
+
commandExecution: "allow"
|
|
526
|
+
}
|
|
527
|
+
};
|
|
528
|
+
/** Omitted deployment configuration never grants unattended execution. */
|
|
529
|
+
function getAllowedCodeApprovalModes({ enabled, allowedModes, configSchema, settings, environment }) {
|
|
530
|
+
if (enabled === false) return [];
|
|
531
|
+
const permitted = new Set(allowedModes ?? ["ask"]);
|
|
532
|
+
return CODE_APPROVAL_MODES.filter((mode) => {
|
|
533
|
+
if (!permitted.has(mode)) return false;
|
|
534
|
+
if (environment === "managed") return true;
|
|
535
|
+
for (const category of ["fileWrite", "commandExecution"]) {
|
|
536
|
+
if (MODE_PERMISSIONS[mode][category] !== "allow") continue;
|
|
537
|
+
const field = configSchema?.permissions?.[category];
|
|
538
|
+
const configured = settings?.permissions?.[category];
|
|
539
|
+
if ((configured != null && field?.allowed.includes(configured) === true ? configured : field?.default ?? "ask") === "deny" || field?.allowed.includes("allow") !== true) return false;
|
|
540
|
+
}
|
|
541
|
+
return true;
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
var CodeApprovalModeError = class extends Error {
|
|
545
|
+
constructor() {
|
|
546
|
+
super("The selected code approval mode is not permitted by the current policy.");
|
|
547
|
+
this.code = "CODE_APPROVAL_MODE_NOT_ALLOWED";
|
|
548
|
+
this.name = "CodeApprovalModeError";
|
|
549
|
+
}
|
|
550
|
+
};
|
|
551
|
+
/** Validate untrusted request state again at admission, including after policy changes. */
|
|
552
|
+
function resolveCodeApprovalMode(requested, constraints) {
|
|
553
|
+
if (requested == null) return void 0;
|
|
554
|
+
const selected = getAllowedCodeApprovalModes(constraints).find((mode) => mode === requested);
|
|
555
|
+
if (selected == null) throw new CodeApprovalModeError();
|
|
556
|
+
return selected;
|
|
557
|
+
}
|
|
558
|
+
/** Apply a turn preference without modifying machine settings or overriding an existing deny. */
|
|
559
|
+
function resolveCodePermissionDecision({ mode, category, decision }) {
|
|
560
|
+
if (mode == null || decision === "deny") return decision;
|
|
561
|
+
if (MODE_PERMISSIONS[mode] == null) throw new CodeApprovalModeError();
|
|
562
|
+
return MODE_PERMISSIONS[mode][category];
|
|
563
|
+
}
|
|
564
|
+
//#endregion
|
|
462
565
|
//#region src/stateful-code.ts
|
|
463
566
|
const STATEFUL_CODE_ENVIRONMENTS = [
|
|
464
567
|
"user",
|
|
@@ -502,6 +605,10 @@ let EToolResources = /* @__PURE__ */ function(EToolResources) {
|
|
|
502
605
|
EToolResources["ocr"] = "ocr";
|
|
503
606
|
return EToolResources;
|
|
504
607
|
}({});
|
|
608
|
+
const agentGitIdentitySchema = zod.z.object({
|
|
609
|
+
name: zod.z.string().trim().min(1).max(128).refine((value) => !/[\0\r\n]/.test(value)),
|
|
610
|
+
email: zod.z.string().trim().email().max(254).refine((value) => !/[\0\r\n]/.test(value))
|
|
611
|
+
}).optional();
|
|
505
612
|
let AnnotationTypes = /* @__PURE__ */ function(AnnotationTypes) {
|
|
506
613
|
AnnotationTypes["FILE_CITATION"] = "file_citation";
|
|
507
614
|
AnnotationTypes["FILE_PATH"] = "file_path";
|
|
@@ -693,7 +800,35 @@ const inputTokensIncludesCache = (provider) => {
|
|
|
693
800
|
return cacheSubsetProviders.has(provider ?? "");
|
|
694
801
|
};
|
|
695
802
|
const isDocumentSupportedProvider = (provider) => {
|
|
696
|
-
|
|
803
|
+
const normalized = provider?.toLowerCase() ?? "";
|
|
804
|
+
return Array.from(documentSupportedProviders).some((candidate) => candidate.toLowerCase() === normalized);
|
|
805
|
+
};
|
|
806
|
+
/**
|
|
807
|
+
* Endpoints whose encoders actually build native audio/video payloads. Narrower than
|
|
808
|
+
* `documentSupportedProviders`: a provider can accept PDFs and still emit nothing for
|
|
809
|
+
* media, in which case the upload has to fall back to text/STT.
|
|
810
|
+
*/
|
|
811
|
+
const mediaSupportedProviders = new Set([
|
|
812
|
+
"google",
|
|
813
|
+
"vertexai",
|
|
814
|
+
"openrouter"
|
|
815
|
+
]);
|
|
816
|
+
const isMediaSupportedProvider = (provider) => {
|
|
817
|
+
return mediaSupportedProviders.has(provider?.toLowerCase() ?? "");
|
|
818
|
+
};
|
|
819
|
+
/**
|
|
820
|
+
* Built-in endpoint and provider identifiers. A name outside this set is a custom
|
|
821
|
+
* endpoint whose real provider is resolved at request time, so its capabilities
|
|
822
|
+
* cannot be judged from the name alone.
|
|
823
|
+
*/
|
|
824
|
+
const knownProviderIdentifiers = new Set([
|
|
825
|
+
...Object.values(EModelEndpoint),
|
|
826
|
+
...Object.values(Providers),
|
|
827
|
+
...Object.values(EModelEndpoint).map((provider) => provider.toLowerCase()),
|
|
828
|
+
...Object.values(Providers).map((provider) => provider.toLowerCase())
|
|
829
|
+
]);
|
|
830
|
+
const isKnownProviderIdentifier = (provider) => {
|
|
831
|
+
return knownProviderIdentifiers.has(provider?.toLowerCase() ?? "");
|
|
697
832
|
};
|
|
698
833
|
const paramEndpoints = new Set([
|
|
699
834
|
"agents",
|
|
@@ -896,6 +1031,7 @@ const defaultAgentFormValues = {
|
|
|
896
1031
|
["memory"]: false,
|
|
897
1032
|
stateful_code_environment: "user",
|
|
898
1033
|
code_environment_id: void 0,
|
|
1034
|
+
code_workspace_id: void 0,
|
|
899
1035
|
category: "general",
|
|
900
1036
|
support_contact: {
|
|
901
1037
|
name: "",
|
|
@@ -1386,6 +1522,12 @@ const tConversationSchema = zod.z.object({
|
|
|
1386
1522
|
pinned: zod.z.boolean().optional(),
|
|
1387
1523
|
/** Server-derived: an active shared link exists for this conversation. Not persisted. */
|
|
1388
1524
|
isShared: zod.z.boolean().optional(),
|
|
1525
|
+
codeApprovalMode: zod.z.enum(CODE_APPROVAL_MODES).optional(),
|
|
1526
|
+
codeEnvironmentMode: zod.z.enum(CODE_ENVIRONMENT_MODES).optional(),
|
|
1527
|
+
codeWorkspaces: zod.z.array(zod.z.object({
|
|
1528
|
+
environmentId: zod.z.string().regex(CODE_WORKSPACE_ID_PATTERN),
|
|
1529
|
+
workspaceId: zod.z.string().regex(CODE_WORKSPACE_ID_PATTERN)
|
|
1530
|
+
}).strict()).optional(),
|
|
1389
1531
|
title: zod.z.string().nullable().or(zod.z.literal("New Chat")).default("New Chat"),
|
|
1390
1532
|
user: zod.z.string().optional(),
|
|
1391
1533
|
messages: zod.z.array(zod.z.string()).optional(),
|
|
@@ -2289,6 +2431,7 @@ const MAX_GRAPH_SUBAGENT_MEMBERS = 32;
|
|
|
2289
2431
|
const modelSpecSubagentsSchema = zod.z.object({
|
|
2290
2432
|
enabled: zod.z.boolean().optional(),
|
|
2291
2433
|
allowSelf: zod.z.boolean().optional(),
|
|
2434
|
+
shareFiles: zod.z.boolean().optional(),
|
|
2292
2435
|
agent_ids: zod.z.array(zod.z.string()).optional()
|
|
2293
2436
|
}).superRefine((subagents, ctx) => {
|
|
2294
2437
|
const maxSubagents = getMaxSubagents();
|
|
@@ -2570,6 +2713,49 @@ const bedrockDocumentFormats = {
|
|
|
2570
2713
|
"text/plain": "txt",
|
|
2571
2714
|
"text/markdown": "md"
|
|
2572
2715
|
};
|
|
2716
|
+
/**
|
|
2717
|
+
* Whether an upload belongs to the conversation rather than to the agent. The value
|
|
2718
|
+
* arrives from multipart form data, so it can be the string "false", which is truthy.
|
|
2719
|
+
* Shared so the route, the authorization check and processing cannot disagree about it.
|
|
2720
|
+
*/
|
|
2721
|
+
const isMessageFileUpload = (value) => value === true || value === "true";
|
|
2722
|
+
/**
|
|
2723
|
+
* Whether the upload's conversation uses the Responses API, which decides whether Azure
|
|
2724
|
+
* can carry a document natively. Multipart form data has no booleans, so it arrives as
|
|
2725
|
+
* the string "true".
|
|
2726
|
+
*/
|
|
2727
|
+
const isResponsesApiUpload = (value) => value === true || value === "true";
|
|
2728
|
+
/**
|
|
2729
|
+
* The name a file carries inside the code sandbox.
|
|
2730
|
+
*
|
|
2731
|
+
* Image uploads are converted to the configured output type while the record keeps the
|
|
2732
|
+
* original filename, so the extension has to follow the stored bytes or the sandbox
|
|
2733
|
+
* decoder is handed a mismatch. Provisioning and priming both resolve the mount path
|
|
2734
|
+
* from here: deriving it twice under different rules leaves a later turn advertising a
|
|
2735
|
+
* path that does not exist in the sandbox.
|
|
2736
|
+
*/
|
|
2737
|
+
const resolveSandboxFilename = (filename, mimeType) => {
|
|
2738
|
+
if (!mimeType?.startsWith("image/")) return filename;
|
|
2739
|
+
const subtype = mimeType.slice(6);
|
|
2740
|
+
if (![
|
|
2741
|
+
"webp",
|
|
2742
|
+
"png",
|
|
2743
|
+
"jpeg",
|
|
2744
|
+
"gif"
|
|
2745
|
+
].includes(subtype)) return filename;
|
|
2746
|
+
const accepted = subtype === "jpeg" ? [".jpg", ".jpeg"] : [`.${subtype}`];
|
|
2747
|
+
const lastDot = filename.lastIndexOf(".");
|
|
2748
|
+
const currentExt = lastDot > 0 ? filename.slice(lastDot).toLowerCase() : "";
|
|
2749
|
+
if (accepted.includes(currentExt)) return filename;
|
|
2750
|
+
return `${lastDot > 0 ? filename.slice(0, lastDot) : filename}${accepted[0]}`;
|
|
2751
|
+
};
|
|
2752
|
+
/**
|
|
2753
|
+
* The Responses setting a turn actually runs on. A saved agent's own record wins, since
|
|
2754
|
+
* execution reads its model parameters; a conversation only answers for itself. Upload
|
|
2755
|
+
* and delivery must agree here, or a document is stored as raw provider content and then
|
|
2756
|
+
* re-resolved to text it has no extraction for.
|
|
2757
|
+
*/
|
|
2758
|
+
const resolveUseResponsesApi = (agentValue, conversationValue) => agentValue ?? conversationValue ?? void 0;
|
|
2573
2759
|
const isBedrockDocumentType = (mimeType) => mimeType != null && mimeType in bedrockDocumentFormats;
|
|
2574
2760
|
/** MIME types Bedrock's Converse document path can send to the model (mirrors `bedrockDocumentFormats`). */
|
|
2575
2761
|
const bedrockDocumentMimeTypes = Object.keys(bedrockDocumentFormats);
|
|
@@ -2803,6 +2989,8 @@ const mbToBytes = (mb) => mb * megabyte;
|
|
|
2803
2989
|
const defaultSizeLimit = mbToBytes(512);
|
|
2804
2990
|
const defaultSkillImportSizeLimit = mbToBytes(50);
|
|
2805
2991
|
const defaultTokenLimit = 1e5;
|
|
2992
|
+
const defaultContextSizeLimit = mbToBytes(128);
|
|
2993
|
+
const defaultContextCharLimit = 1e6;
|
|
2806
2994
|
const assistantsFileConfig = {
|
|
2807
2995
|
fileLimit: 10,
|
|
2808
2996
|
fileSizeLimit: defaultSizeLimit,
|
|
@@ -2834,6 +3022,8 @@ const fileConfig = {
|
|
|
2834
3022
|
serverFileSizeLimit: defaultSizeLimit,
|
|
2835
3023
|
avatarSizeLimit: mbToBytes(2),
|
|
2836
3024
|
fileTokenLimit: defaultTokenLimit,
|
|
3025
|
+
fileContextSizeLimit: defaultContextSizeLimit,
|
|
3026
|
+
fileContextCharLimit: defaultContextCharLimit,
|
|
2837
3027
|
clientImageResize: {
|
|
2838
3028
|
enabled: false,
|
|
2839
3029
|
maxWidth: 1900,
|
|
@@ -2849,12 +3039,23 @@ const fileConfig = {
|
|
|
2849
3039
|
}
|
|
2850
3040
|
};
|
|
2851
3041
|
const supportedMimeTypesSchema = zod.z.array(zod.z.string()).optional();
|
|
3042
|
+
const DefaultLLMDeliveryPath = zod.z.enum([
|
|
3043
|
+
"provider",
|
|
3044
|
+
"text",
|
|
3045
|
+
"none"
|
|
3046
|
+
]);
|
|
3047
|
+
const defaultLLMDeliveryPathSchema = zod.z.object({
|
|
3048
|
+
fallback: DefaultLLMDeliveryPath.optional(),
|
|
3049
|
+
overrides: zod.z.record(DefaultLLMDeliveryPath).optional()
|
|
3050
|
+
});
|
|
2852
3051
|
const endpointFileConfigSchema = zod.z.object({
|
|
2853
3052
|
disabled: zod.z.boolean().optional(),
|
|
2854
3053
|
fileLimit: zod.z.number().min(0).optional(),
|
|
2855
3054
|
fileSizeLimit: zod.z.number().min(0).optional(),
|
|
2856
3055
|
totalSizeLimit: zod.z.number().min(0).optional(),
|
|
2857
|
-
supportedMimeTypes: supportedMimeTypesSchema.optional()
|
|
3056
|
+
supportedMimeTypes: supportedMimeTypesSchema.optional(),
|
|
3057
|
+
defaultLLMDeliveryPath: defaultLLMDeliveryPathSchema.optional(),
|
|
3058
|
+
legacyFileUploadUX: zod.z.boolean().optional()
|
|
2858
3059
|
});
|
|
2859
3060
|
const skillFileConfigSchema = zod.z.object({ fileSizeLimit: zod.z.number().min(0).optional() });
|
|
2860
3061
|
const fileConfigSchema = zod.z.object({
|
|
@@ -2863,6 +3064,9 @@ const fileConfigSchema = zod.z.object({
|
|
|
2863
3064
|
serverFileSizeLimit: zod.z.number().min(0).optional(),
|
|
2864
3065
|
avatarSizeLimit: zod.z.number().min(0).optional(),
|
|
2865
3066
|
fileTokenLimit: zod.z.number().min(0).optional(),
|
|
3067
|
+
fileContextSizeLimit: zod.z.number().min(0).optional(),
|
|
3068
|
+
fileContextCharLimit: zod.z.number().min(0).optional(),
|
|
3069
|
+
codeEnvLivenessSafeWindowMs: zod.z.number().min(0).optional(),
|
|
2866
3070
|
imageGeneration: zod.z.object({
|
|
2867
3071
|
percentage: zod.z.number().min(0).max(100).optional(),
|
|
2868
3072
|
px: zod.z.number().min(0).optional()
|
|
@@ -2874,7 +3078,9 @@ const fileConfigSchema = zod.z.object({
|
|
|
2874
3078
|
quality: zod.z.number().min(0).max(1).optional()
|
|
2875
3079
|
}).optional(),
|
|
2876
3080
|
ocr: zod.z.object({ supportedMimeTypes: supportedMimeTypesSchema.optional() }).optional(),
|
|
2877
|
-
text: zod.z.object({ supportedMimeTypes: supportedMimeTypesSchema.optional() }).optional()
|
|
3081
|
+
text: zod.z.object({ supportedMimeTypes: supportedMimeTypesSchema.optional() }).optional(),
|
|
3082
|
+
defaultLLMDeliveryPath: defaultLLMDeliveryPathSchema.optional(),
|
|
3083
|
+
legacyFileUploadUX: zod.z.boolean().optional()
|
|
2878
3084
|
});
|
|
2879
3085
|
/**
|
|
2880
3086
|
* Compiler for admin-supplied MIME patterns. Defaults to native `RegExp`, which browser
|
|
@@ -3010,6 +3216,12 @@ const documentMimeExtensions = [
|
|
|
3010
3216
|
["text/calendar", [".ics"]],
|
|
3011
3217
|
["message/rfc822", [".eml"]]
|
|
3012
3218
|
];
|
|
3219
|
+
/** Preferred extension for a known document MIME type, including its leading dot. */
|
|
3220
|
+
function getDocumentFileExtension(mimeType) {
|
|
3221
|
+
const normalized = mimeType?.split(";", 1)[0].trim().toLowerCase();
|
|
3222
|
+
const canonical = normalized === "text/comma-separated-values" ? "text/csv" : normalized;
|
|
3223
|
+
return documentMimeExtensions.find(([type]) => type === canonical)?.[1][0];
|
|
3224
|
+
}
|
|
3013
3225
|
const documentMimeSet = new Set(documentMimeExtensions.map(([mimeType]) => mimeType));
|
|
3014
3226
|
/** Every MIME type LibreChat may accept, used to detect patterns that reach beyond the representable set. */
|
|
3015
3227
|
const knownMimeUniverse = Array.from(new Set([
|
|
@@ -3103,7 +3315,45 @@ function mergeWithDefault(endpointConfig, defaultConfig, endpoint) {
|
|
|
3103
3315
|
fileLimit: endpointConfig.fileLimit ?? defaultConfig.fileLimit,
|
|
3104
3316
|
fileSizeLimit: endpointConfig.fileSizeLimit ?? defaultConfig.fileSizeLimit,
|
|
3105
3317
|
totalSizeLimit: endpointConfig.totalSizeLimit ?? defaultConfig.totalSizeLimit,
|
|
3106
|
-
supportedMimeTypes: endpointConfig.supportedMimeTypes ?? defaultMimeTypes
|
|
3318
|
+
supportedMimeTypes: endpointConfig.supportedMimeTypes ?? defaultMimeTypes,
|
|
3319
|
+
defaultLLMDeliveryPath: mergeDeliveryPathConfig(endpointConfig.defaultLLMDeliveryPath, defaultConfig.defaultLLMDeliveryPath),
|
|
3320
|
+
legacyFileUploadUX: endpointConfig.legacyFileUploadUX ?? defaultConfig.legacyFileUploadUX
|
|
3321
|
+
};
|
|
3322
|
+
}
|
|
3323
|
+
/**
|
|
3324
|
+
* Deep-merges delivery-path config so an endpoint that supplies only one override
|
|
3325
|
+
* still inherits the default's fallback and shared overrides. Whole-object
|
|
3326
|
+
* replacement would silently drop the inherited routing.
|
|
3327
|
+
*/
|
|
3328
|
+
function mergeDeliveryPathConfig(endpointValue, defaultValue) {
|
|
3329
|
+
if (!endpointValue) return defaultValue;
|
|
3330
|
+
if (!defaultValue) return endpointValue;
|
|
3331
|
+
if (endpointValue.fallback != null) return endpointValue;
|
|
3332
|
+
const hasOverrides = endpointValue.overrides != null || defaultValue.overrides != null;
|
|
3333
|
+
return {
|
|
3334
|
+
...defaultValue.fallback != null ? { fallback: defaultValue.fallback } : {},
|
|
3335
|
+
...hasOverrides ? { overrides: { ...shadowByWildcard(defaultValue.overrides, endpointValue.overrides) } } : {}
|
|
3336
|
+
};
|
|
3337
|
+
}
|
|
3338
|
+
/**
|
|
3339
|
+
* Flattens two override layers into one map that still resolves like the layered chain.
|
|
3340
|
+
* Resolution reads exact keys before wildcards, so a plain spread would let a lower
|
|
3341
|
+
* layer's `image/png` outrank the upper layer's `image/*`. Dropping the entries an
|
|
3342
|
+
* upper wildcard covers restores precedence without changing how lookups work.
|
|
3343
|
+
*/
|
|
3344
|
+
function shadowByWildcard(lower, upper) {
|
|
3345
|
+
if (!lower) return { ...upper };
|
|
3346
|
+
const upperWildcards = /* @__PURE__ */ new Set();
|
|
3347
|
+
for (const key in upper) if (key.endsWith("/*")) upperWildcards.add(key.slice(0, -1));
|
|
3348
|
+
if (upperWildcards.size === 0) return {
|
|
3349
|
+
...lower,
|
|
3350
|
+
...upper
|
|
3351
|
+
};
|
|
3352
|
+
const retained = {};
|
|
3353
|
+
for (const key in lower) if (!(!key.endsWith("/*") && upperWildcards.has(key.slice(0, key.indexOf("/") + 1)) && upper?.[key] == null)) retained[key] = lower[key];
|
|
3354
|
+
return {
|
|
3355
|
+
...retained,
|
|
3356
|
+
...upper
|
|
3107
3357
|
};
|
|
3108
3358
|
}
|
|
3109
3359
|
function getEndpointFileConfig(params) {
|
|
@@ -3111,8 +3361,13 @@ function getEndpointFileConfig(params) {
|
|
|
3111
3361
|
if (!mergedFileConfig?.endpoints) return fileConfig.endpoints.default;
|
|
3112
3362
|
/** Compute an effective default by merging user-configured default over the base default */
|
|
3113
3363
|
const baseDefaultConfig = fileConfig.endpoints.default;
|
|
3364
|
+
const globalDefaultConfig = {
|
|
3365
|
+
...baseDefaultConfig,
|
|
3366
|
+
defaultLLMDeliveryPath: mergeDeliveryPathConfig(mergedFileConfig.defaultLLMDeliveryPath, baseDefaultConfig.defaultLLMDeliveryPath),
|
|
3367
|
+
legacyFileUploadUX: mergedFileConfig.legacyFileUploadUX ?? baseDefaultConfig.legacyFileUploadUX
|
|
3368
|
+
};
|
|
3114
3369
|
const userDefaultConfig = mergedFileConfig.endpoints.default;
|
|
3115
|
-
const defaultConfig = userDefaultConfig ? mergeWithDefault(userDefaultConfig,
|
|
3370
|
+
const defaultConfig = userDefaultConfig ? mergeWithDefault(userDefaultConfig, globalDefaultConfig, "default") : globalDefaultConfig;
|
|
3116
3371
|
const normalizedEndpoint = normalizeEndpointName(endpoint ?? "");
|
|
3117
3372
|
const standardEndpoints = new Set([
|
|
3118
3373
|
"default",
|
|
@@ -3167,9 +3422,13 @@ function mergeFileConfig(dynamic) {
|
|
|
3167
3422
|
}
|
|
3168
3423
|
};
|
|
3169
3424
|
if (!dynamic) return mergedConfig;
|
|
3425
|
+
if (dynamic.defaultLLMDeliveryPath !== void 0) mergedConfig.defaultLLMDeliveryPath = dynamic.defaultLLMDeliveryPath;
|
|
3426
|
+
if (dynamic.legacyFileUploadUX !== void 0) mergedConfig.legacyFileUploadUX = dynamic.legacyFileUploadUX;
|
|
3170
3427
|
if (dynamic.serverFileSizeLimit !== void 0) mergedConfig.serverFileSizeLimit = mbToBytes(dynamic.serverFileSizeLimit);
|
|
3171
3428
|
if (dynamic.avatarSizeLimit !== void 0) mergedConfig.avatarSizeLimit = mbToBytes(dynamic.avatarSizeLimit);
|
|
3172
3429
|
if (dynamic.fileTokenLimit !== void 0) mergedConfig.fileTokenLimit = dynamic.fileTokenLimit;
|
|
3430
|
+
if (dynamic.fileContextSizeLimit !== void 0) mergedConfig.fileContextSizeLimit = mbToBytes(dynamic.fileContextSizeLimit);
|
|
3431
|
+
if (dynamic.fileContextCharLimit !== void 0) mergedConfig.fileContextCharLimit = dynamic.fileContextCharLimit;
|
|
3173
3432
|
if (dynamic.skills?.fileSizeLimit !== void 0) mergedConfig.skills = {
|
|
3174
3433
|
...mergedConfig.skills,
|
|
3175
3434
|
fileSizeLimit: mbToBytes(dynamic.skills.fileSizeLimit)
|
|
@@ -3217,6 +3476,8 @@ function mergeFileConfig(dynamic) {
|
|
|
3217
3476
|
});
|
|
3218
3477
|
if (dynamicEndpoint.disabled !== void 0) mergedEndpoint.disabled = dynamicEndpoint.disabled;
|
|
3219
3478
|
if (dynamicEndpoint.supportedMimeTypes) mergedEndpoint.supportedMimeTypes = convertStringsToRegex(dynamicEndpoint.supportedMimeTypes);
|
|
3479
|
+
if (dynamicEndpoint.defaultLLMDeliveryPath !== void 0) mergedEndpoint.defaultLLMDeliveryPath = dynamicEndpoint.defaultLLMDeliveryPath;
|
|
3480
|
+
if (dynamicEndpoint.legacyFileUploadUX !== void 0) mergedEndpoint.legacyFileUploadUX = dynamicEndpoint.legacyFileUploadUX;
|
|
3220
3481
|
}
|
|
3221
3482
|
return mergedConfig;
|
|
3222
3483
|
}
|
|
@@ -3246,6 +3507,7 @@ const codeEnvironments = () => `${BASE_URL}/api/code-environments`;
|
|
|
3246
3507
|
const codeEnvironmentPairings = () => `${codeEnvironments()}/pairings`;
|
|
3247
3508
|
const codeEnvironmentById = (id) => `${codeEnvironments()}/${encodeURIComponent(id)}`;
|
|
3248
3509
|
const codeEnvironmentSettings = (id) => `${codeEnvironmentById(id)}/settings`;
|
|
3510
|
+
const codeEnvironmentStatus = (id) => `${codeEnvironmentById(id)}/status`;
|
|
3249
3511
|
const messagesRoot = `${BASE_URL}/api/messages`;
|
|
3250
3512
|
const messages = (params) => {
|
|
3251
3513
|
const { conversationId, messageId, ...rest } = params;
|
|
@@ -3458,8 +3720,15 @@ const listSkillsWithFilters = (filter) => {
|
|
|
3458
3720
|
};
|
|
3459
3721
|
const skillFiles = (id) => `${getSkill$1(id)}/files`;
|
|
3460
3722
|
const skillFile = (id, relativePath) => `${skillFiles(id)}/${encodeURIComponent(relativePath)}`;
|
|
3461
|
-
const insights = () => `${BASE_URL}/api/
|
|
3723
|
+
const insights = () => `${BASE_URL}/api/insights`;
|
|
3462
3724
|
const insightsAccess = () => `${insights()}/access`;
|
|
3725
|
+
const conversationTrace = (conversationId) => `${BASE_URL}/api/traces/${encodeURIComponent(conversationId)}`;
|
|
3726
|
+
const conversationTraceAvailability = (conversationId) => `${conversationTrace(conversationId)}/availability`;
|
|
3727
|
+
const conversationTraceRecords = (conversationId, cursor) => `${conversationTrace(conversationId)}/records${cursor ? `?${new URLSearchParams({ cursor }).toString()}` : ""}`;
|
|
3728
|
+
const conversationTraceRecord = (conversationId, recordId, messageId, sourceId) => `${conversationTrace(conversationId)}/records/${encodeURIComponent(recordId)}?${new URLSearchParams({
|
|
3729
|
+
message: messageId,
|
|
3730
|
+
...sourceId ? { source: sourceId } : {}
|
|
3731
|
+
}).toString()}`;
|
|
3463
3732
|
const adminSkillsSync = () => `${BASE_URL}/api/admin/skills/sync`;
|
|
3464
3733
|
const adminSkillsSyncStatus = () => `${adminSkillsSync()}/status`;
|
|
3465
3734
|
const adminSkillsSyncRun = () => `${adminSkillsSync()}/run`;
|
|
@@ -3468,6 +3737,7 @@ const skillStates = () => `${BASE_URL}/api/user/settings/skills/active`;
|
|
|
3468
3737
|
const adminLangfuseConnection = () => `${BASE_URL}/api/admin/langfuse/connection`;
|
|
3469
3738
|
const adminLangfuseConnectionTest = () => `${adminLangfuseConnection()}/test`;
|
|
3470
3739
|
const adminLangfuseSessionLink = (conversationId) => `${adminLangfuseConnection()}/session/${encodeURIComponent(conversationId)}`;
|
|
3740
|
+
const pinnedOrder = () => `${BASE_URL}/api/user/settings/pinned-order`;
|
|
3471
3741
|
const toolFavorites = () => `${BASE_URL}/api/user/settings/favorites/tools`;
|
|
3472
3742
|
const toolFavorite = (itemType, itemId) => `${toolFavorites()}/${itemType}/${encodeURIComponent(itemId)}`;
|
|
3473
3743
|
const roles = () => `${BASE_URL}/api/roles`;
|
|
@@ -3539,6 +3809,7 @@ let FileContext = /* @__PURE__ */ function(FileContext) {
|
|
|
3539
3809
|
FileContext["image_generation"] = "image_generation";
|
|
3540
3810
|
FileContext["assistants_output"] = "assistants_output";
|
|
3541
3811
|
FileContext["message_attachment"] = "message_attachment";
|
|
3812
|
+
FileContext["run_artifact"] = "run_artifact";
|
|
3542
3813
|
FileContext["skill_file"] = "skill_file";
|
|
3543
3814
|
FileContext["filename"] = "filename";
|
|
3544
3815
|
FileContext["updatedAt"] = "updatedAt";
|
|
@@ -3569,6 +3840,12 @@ let TokenExchangeMethodEnum = /* @__PURE__ */ function(TokenExchangeMethodEnum)
|
|
|
3569
3840
|
}({});
|
|
3570
3841
|
//#endregion
|
|
3571
3842
|
//#region src/mcp.ts
|
|
3843
|
+
/**
|
|
3844
|
+
* Upper bound on a stored MCP `iconPath` (URL or data URI). Enforced by
|
|
3845
|
+
* `sanitizeMcpIconPath`, not a schema `.max()`, so re-submitting a server whose
|
|
3846
|
+
* stored icon predates the cap clears the icon instead of rejecting the update.
|
|
3847
|
+
*/
|
|
3848
|
+
const MAX_MCP_ICON_PATH_LENGTH = 256 * 1024;
|
|
3572
3849
|
const validateOAuthClientCredentials = (oauth, ctx) => {
|
|
3573
3850
|
if (oauth.client_secret && !oauth.client_id) ctx.addIssue({
|
|
3574
3851
|
code: zod.z.ZodIssueCode.custom,
|
|
@@ -3977,6 +4254,8 @@ const excludedKeys = new Set([
|
|
|
3977
4254
|
"conversationId",
|
|
3978
4255
|
"agentEventBinding",
|
|
3979
4256
|
"agentEventActor",
|
|
4257
|
+
"agentEventActorCleanup",
|
|
4258
|
+
"agentEventActorSuspension",
|
|
3980
4259
|
"agentEventActorReconciliations",
|
|
3981
4260
|
"agentEventActorEpoch",
|
|
3982
4261
|
"agentEventActorLegacyTurn",
|
|
@@ -4485,13 +4764,13 @@ function isRemoteOidcUrlAllowed(value) {
|
|
|
4485
4764
|
}
|
|
4486
4765
|
const remoteApiOidcUrlSchema = zod.z.string().url().refine(isRemoteOidcUrlAllowed, { message: "must use https:// unless targeting localhost" });
|
|
4487
4766
|
const remoteApiOidcScopeSchema = zod.z.string().refine((scope) => !scope.includes(","), { message: "scopes must be space-separated" });
|
|
4488
|
-
const
|
|
4767
|
+
const oidcAccessTokenSchema = zod.z.object({
|
|
4489
4768
|
enabled: zod.z.boolean().default(false),
|
|
4490
4769
|
issuer: remoteApiOidcUrlSchema.optional(),
|
|
4491
4770
|
audience: zod.z.string().min(1).optional(),
|
|
4492
|
-
jwksUri: remoteApiOidcUrlSchema.optional()
|
|
4493
|
-
|
|
4494
|
-
|
|
4771
|
+
jwksUri: remoteApiOidcUrlSchema.optional()
|
|
4772
|
+
});
|
|
4773
|
+
function validateEnabledOidc(oidc, ctx) {
|
|
4495
4774
|
if (oidc.enabled === true && !oidc.issuer) ctx.addIssue({
|
|
4496
4775
|
code: zod.z.ZodIssueCode.custom,
|
|
4497
4776
|
path: ["issuer"],
|
|
@@ -4502,12 +4781,46 @@ const remoteApiOidcSchema = zod.z.object({
|
|
|
4502
4781
|
path: ["audience"],
|
|
4503
4782
|
message: "audience is required when OIDC auth is enabled"
|
|
4504
4783
|
});
|
|
4505
|
-
}
|
|
4784
|
+
}
|
|
4785
|
+
const remoteApiOidcSchema = oidcAccessTokenSchema.extend({ scope: remoteApiOidcScopeSchema.optional() }).superRefine(validateEnabledOidc);
|
|
4506
4786
|
const remoteApiAuthSchema = zod.z.object({
|
|
4507
4787
|
apiKey: zod.z.object({ enabled: zod.z.boolean().default(true) }).optional(),
|
|
4508
4788
|
oidc: remoteApiOidcSchema.optional()
|
|
4509
4789
|
});
|
|
4510
4790
|
const remoteApiSchema = zod.z.object({ auth: remoteApiAuthSchema.optional() });
|
|
4791
|
+
const managementClientBindingSchema = zod.z.object({
|
|
4792
|
+
clientId: zod.z.string().trim().min(1).max(128),
|
|
4793
|
+
subject: zod.z.string().trim().min(1).max(512).optional(),
|
|
4794
|
+
userId: zod.z.string().trim().regex(/^[a-f\d]{24}$/i, "must be a MongoDB ObjectId").transform((userId) => userId.toLowerCase()),
|
|
4795
|
+
tenantId: zod.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"),
|
|
4796
|
+
enabled: zod.z.boolean().default(true)
|
|
4797
|
+
}).strict();
|
|
4798
|
+
const managementApiOidcSchema = oidcAccessTokenSchema.strict().superRefine(validateEnabledOidc);
|
|
4799
|
+
const managementApiAuthSchema = zod.z.object({
|
|
4800
|
+
oidc: managementApiOidcSchema,
|
|
4801
|
+
clients: zod.z.array(managementClientBindingSchema).max(100).default([])
|
|
4802
|
+
}).strict().superRefine((auth, ctx) => {
|
|
4803
|
+
if (auth.oidc.enabled === true && auth.clients.length === 0) ctx.addIssue({
|
|
4804
|
+
code: zod.z.ZodIssueCode.custom,
|
|
4805
|
+
path: ["clients"],
|
|
4806
|
+
message: "at least one client binding is required when management auth is enabled"
|
|
4807
|
+
});
|
|
4808
|
+
const clientIds = /* @__PURE__ */ new Set();
|
|
4809
|
+
for (let index = 0; index < auth.clients.length; index++) {
|
|
4810
|
+
const client = auth.clients[index];
|
|
4811
|
+
if (clientIds.has(client.clientId)) ctx.addIssue({
|
|
4812
|
+
code: zod.z.ZodIssueCode.custom,
|
|
4813
|
+
path: [
|
|
4814
|
+
"clients",
|
|
4815
|
+
index,
|
|
4816
|
+
"clientId"
|
|
4817
|
+
],
|
|
4818
|
+
message: "client IDs must be unique"
|
|
4819
|
+
});
|
|
4820
|
+
clientIds.add(client.clientId);
|
|
4821
|
+
}
|
|
4822
|
+
});
|
|
4823
|
+
const managementApiSchema = zod.z.object({ auth: managementApiAuthSchema.optional() }).strict();
|
|
4511
4824
|
/**
|
|
4512
4825
|
* Permission mode applied to a tool call. Mirrors `@librechat/agents`'s
|
|
4513
4826
|
* `ToolPolicyMode` 1:1.
|
|
@@ -4646,15 +4959,25 @@ const codeEnvironmentPermissionFieldSchema = zod.z.object({
|
|
|
4646
4959
|
message: "Permission default must be included in allowed values"
|
|
4647
4960
|
});
|
|
4648
4961
|
});
|
|
4962
|
+
/** Existing attached commands used a fixed 30-second execution budget. */
|
|
4963
|
+
const CODE_ENVIRONMENT_COMMAND_TIMEOUT_DEFAULT_MS = 3e4;
|
|
4964
|
+
/** Protocol-level ceiling; deployments may only lower this value. */
|
|
4965
|
+
const CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS = 5 * 6e4;
|
|
4649
4966
|
/**
|
|
4650
4967
|
* Typed user-tunable surface for one attached code environment. Omitted fields
|
|
4651
4968
|
* remain fixed at LibreChat's safe baseline. Isolation, networking, mounts,
|
|
4652
4969
|
* privileged execution, and secrets are deliberately not representable here.
|
|
4653
4970
|
*/
|
|
4654
|
-
const codeEnvironmentUserConfigSchema = zod.z.object({
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4971
|
+
const codeEnvironmentUserConfigSchema = zod.z.object({
|
|
4972
|
+
permissions: zod.z.object({
|
|
4973
|
+
fileWrite: codeEnvironmentPermissionFieldSchema.optional(),
|
|
4974
|
+
commandExecution: codeEnvironmentPermissionFieldSchema.optional()
|
|
4975
|
+
}).strict().optional(),
|
|
4976
|
+
limits: zod.z.object({
|
|
4977
|
+
/** Maximum timeout a Bash invocation may request. Omission preserves
|
|
4978
|
+
* the historical 30-second command budget. */
|
|
4979
|
+
maxCommandTimeoutMs: zod.z.number().int().min(1).max(CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS).optional() }).strict().optional()
|
|
4980
|
+
}).strict();
|
|
4658
4981
|
const codeEnvironmentUserSettingsSchema = zod.z.object({ permissions: zod.z.object({
|
|
4659
4982
|
fileWrite: codeEnvironmentPermissionDecisionSchema.optional(),
|
|
4660
4983
|
commandExecution: codeEnvironmentPermissionDecisionSchema.optional()
|
|
@@ -4679,12 +5002,32 @@ const agentsEndpointSchema = baseEndpointSchema.omit({ baseURL: true }).merge(zo
|
|
|
4679
5002
|
* the shipped default of 10 for orchestration-heavy deployments, bounded by
|
|
4680
5003
|
* `MAX_SUBAGENTS_CEILING`. */
|
|
4681
5004
|
maxSubagents: zod.z.number().int().min(1).max(50).optional().default(10),
|
|
5005
|
+
/** Run-scoped file access for explicitly opted-in subagent delegations. */
|
|
5006
|
+
fileSharing: zod.z.object({
|
|
5007
|
+
enabled: zod.z.boolean().optional().default(false),
|
|
5008
|
+
allowSiblingSharing: zod.z.boolean().optional().default(false),
|
|
5009
|
+
maxFiles: zod.z.number().int().min(1).max(1e3).optional().default(100),
|
|
5010
|
+
/** Aggregate disk budget for private output versions retained during a run. */
|
|
5011
|
+
maxPrivateBytes: zod.z.number().int().min(1).max(10737418240).optional().default(268435456),
|
|
5012
|
+
ttlMs: zod.z.number().int().min(1).max(864e5).optional().default(36e5)
|
|
5013
|
+
}).optional(),
|
|
5014
|
+
/** Maximum concurrent Code API uploads per route and authenticated principal. */
|
|
5015
|
+
codeApiUploadConcurrency: zod.z.number().int().min(1).max(100).optional().default(3),
|
|
5016
|
+
/** Maximum wall-clock time spent waiting on Code API rate limits per operation. */
|
|
5017
|
+
codeApiMaxRetryWaitMs: zod.z.number().int().min(0).max(3e5).optional().default(2e4),
|
|
4682
5018
|
allowedProviders: zod.z.array(zod.z.union([zod.z.string(), eModelEndpointSchema])).optional(),
|
|
4683
5019
|
capabilities: zod.z.array(zod.z.nativeEnum(AgentCapabilities)).optional().default(defaultAgentCapabilities),
|
|
4684
5020
|
/** Controls which workspace-sharing scopes users may select for stateful code sessions.
|
|
4685
5021
|
* Omit this block to preserve the legacy behavior of allowing every scope. */
|
|
4686
5022
|
statefulCodeSessions: zod.z.object({
|
|
4687
5023
|
allowedEnvironments: zod.z.array(zod.z.enum(STATEFUL_CODE_ENVIRONMENTS)).min(1),
|
|
5024
|
+
/** Server-only personal worker enrollment policy. Effective principal
|
|
5025
|
+
* policy may tighten, but never raise, the deployment ceiling. */
|
|
5026
|
+
principalWorkers: zod.z.object({
|
|
5027
|
+
enabled: zod.z.boolean().optional(),
|
|
5028
|
+
/** Defaults to five. Zero disables enrollment; existing machines remain usable. */
|
|
5029
|
+
maxPerUser: zod.z.number().int().min(0).max(Number.MAX_SAFE_INTEGER).optional()
|
|
5030
|
+
}).optional(),
|
|
4688
5031
|
/** Operator-managed execution environments. Attached entries route to a
|
|
4689
5032
|
* Code API deployment backed by an outbound librechat-code worker. */
|
|
4690
5033
|
environments: zod.z.array(zod.z.object({
|
|
@@ -4791,8 +5134,14 @@ const agentsEndpointSchema = baseEndpointSchema.omit({ baseURL: true }).merge(zo
|
|
|
4791
5134
|
eventDriven: zod.z.object({ selfUrl: zod.z.string().url().optional() }).optional(),
|
|
4792
5135
|
/** Conversational background-task delivery policy. Automatic completion wakeups are
|
|
4793
5136
|
* enabled unless an administrator explicitly restores poll-only behavior. */
|
|
4794
|
-
backgroundTasks: zod.z.object({
|
|
5137
|
+
backgroundTasks: zod.z.object({
|
|
5138
|
+
completionWakeups: zod.z.boolean().optional().default(true),
|
|
5139
|
+
/** Cooperative cancellation for process-local ordinary tools. Off
|
|
5140
|
+
* by default so existing deployments opt into the new control. */
|
|
5141
|
+
ordinaryToolCancellation: zod.z.boolean().optional().default(false)
|
|
5142
|
+
}).optional(),
|
|
4795
5143
|
skills: zod.z.object({ maxCatalogSkills: zod.z.number().int().min(1).max(100).optional() }).optional(),
|
|
5144
|
+
managementApi: managementApiSchema.optional(),
|
|
4796
5145
|
remoteApi: remoteApiSchema.optional(),
|
|
4797
5146
|
/** Human-in-the-loop tool approval policy. Off by default. */
|
|
4798
5147
|
toolApproval: toolApprovalPolicySchema,
|
|
@@ -5050,6 +5399,21 @@ const sttSchema = zod.z.object({
|
|
|
5050
5399
|
openai: sttOpenaiSchema.optional(),
|
|
5051
5400
|
azureOpenAI: sttAzureOpenAISchema.optional()
|
|
5052
5401
|
});
|
|
5402
|
+
/**
|
|
5403
|
+
* The speech providers a schema actually configures. `allowedAddresses` is transport
|
|
5404
|
+
* policy rather than a provider, and a provider key present but empty configures
|
|
5405
|
+
* nothing. The speech services accept a schema only when exactly one survives here, so
|
|
5406
|
+
* the upload router reads availability from the same list and never routes audio to a
|
|
5407
|
+
* transcription that cannot run.
|
|
5408
|
+
*/
|
|
5409
|
+
function listConfiguredSpeechProviders(schema) {
|
|
5410
|
+
if (schema == null) return [];
|
|
5411
|
+
return Object.entries(schema).filter(([key, value]) => key !== "allowedAddresses" && value != null && typeof value === "object" && Object.keys(value).length > 0);
|
|
5412
|
+
}
|
|
5413
|
+
/** Whether a speech schema names exactly one usable provider. */
|
|
5414
|
+
function isSpeechProviderConfigured(schema) {
|
|
5415
|
+
return listConfiguredSpeechProviders(schema).length === 1;
|
|
5416
|
+
}
|
|
5053
5417
|
const speechTab = zod.z.object({
|
|
5054
5418
|
conversationMode: zod.z.boolean().optional(),
|
|
5055
5419
|
advancedMode: zod.z.boolean().optional(),
|
|
@@ -5134,7 +5498,14 @@ const termsOfServiceSchema = zod.z.object({
|
|
|
5134
5498
|
modalContent: zod.z.string().or(zod.z.array(zod.z.string())).optional()
|
|
5135
5499
|
});
|
|
5136
5500
|
const localizedStringSchema = zod.z.union([zod.z.string(), zod.z.record(zod.z.string())]);
|
|
5501
|
+
const mcpRefreshDefaults = {
|
|
5502
|
+
toolsRefreshInterval: 300 * 1e3,
|
|
5503
|
+
statusRefreshInterval: 30 * 1e3
|
|
5504
|
+
};
|
|
5137
5505
|
const mcpServersSchema = zod.z.object({
|
|
5506
|
+
/** Foreground polling intervals in milliseconds; 0 disables polling. */
|
|
5507
|
+
toolsRefreshInterval: zod.z.number().int().nonnegative().max(2147483647).optional(),
|
|
5508
|
+
statusRefreshInterval: zod.z.number().int().nonnegative().max(2147483647).optional(),
|
|
5138
5509
|
placeholder: zod.z.string().optional(),
|
|
5139
5510
|
use: zod.z.boolean().optional(),
|
|
5140
5511
|
create: zod.z.boolean().optional(),
|
|
@@ -5146,6 +5517,68 @@ const mcpServersSchema = zod.z.object({
|
|
|
5146
5517
|
subLabel: localizedStringSchema.optional()
|
|
5147
5518
|
}).optional()
|
|
5148
5519
|
}).optional();
|
|
5520
|
+
/** Values the trace viewer uses for any `interface.traceViewer` field left unset. */
|
|
5521
|
+
const traceViewerDefaults = {
|
|
5522
|
+
enabled: false,
|
|
5523
|
+
showInputOutput: false,
|
|
5524
|
+
maxRecords: 1e3,
|
|
5525
|
+
maxContentLength: 5e4,
|
|
5526
|
+
requestsPerMinute: 30,
|
|
5527
|
+
requestTimeoutMs: 1e4
|
|
5528
|
+
};
|
|
5529
|
+
/** Inclusive bounds for the numeric `interface.traceViewer` fields. */
|
|
5530
|
+
const traceViewerLimits = {
|
|
5531
|
+
maxRecords: {
|
|
5532
|
+
min: 1,
|
|
5533
|
+
max: 1e4
|
|
5534
|
+
},
|
|
5535
|
+
maxContentLength: {
|
|
5536
|
+
min: 1,
|
|
5537
|
+
max: 1e6
|
|
5538
|
+
},
|
|
5539
|
+
requestsPerMinute: {
|
|
5540
|
+
min: 1,
|
|
5541
|
+
max: 1e3
|
|
5542
|
+
},
|
|
5543
|
+
requestTimeoutMs: {
|
|
5544
|
+
min: 1e3,
|
|
5545
|
+
max: 3e5
|
|
5546
|
+
}
|
|
5547
|
+
};
|
|
5548
|
+
const boundedIntegerSchema = (field) => zod.z.number().int().min(traceViewerLimits[field].min).max(traceViewerLimits[field].max).optional();
|
|
5549
|
+
const traceViewerSchema = zod.z.object({
|
|
5550
|
+
/** Shows the conversation trace control for traces this deployment exported. */
|
|
5551
|
+
enabled: zod.z.boolean().optional(),
|
|
5552
|
+
/** Returns observation input, output and metadata in the record inspector. */
|
|
5553
|
+
showInputOutput: zod.z.boolean().optional(),
|
|
5554
|
+
/** Observations read from the tracing backend per request. */
|
|
5555
|
+
maxRecords: boundedIntegerSchema("maxRecords"),
|
|
5556
|
+
/** Characters kept from each input, output and metadata value before truncation. */
|
|
5557
|
+
maxContentLength: boundedIntegerSchema("maxContentLength"),
|
|
5558
|
+
/** Trace reads one user may start per minute. */
|
|
5559
|
+
requestsPerMinute: boundedIntegerSchema("requestsPerMinute"),
|
|
5560
|
+
/** Budget for each round trip to the tracing backend, in milliseconds. */
|
|
5561
|
+
requestTimeoutMs: boundedIntegerSchema("requestTimeoutMs")
|
|
5562
|
+
});
|
|
5563
|
+
function boundedInteger(value, field) {
|
|
5564
|
+
const { min, max } = traceViewerLimits[field];
|
|
5565
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= min ? Math.min(value, max) : traceViewerDefaults[field];
|
|
5566
|
+
}
|
|
5567
|
+
/**
|
|
5568
|
+
* Fills unset or invalid `interface.traceViewer` fields from
|
|
5569
|
+
* {@link traceViewerDefaults}. Admin config overrides reach runtime without
|
|
5570
|
+
* schema validation, so every consumer reads the section through this.
|
|
5571
|
+
*/
|
|
5572
|
+
function resolveTraceViewerConfig(config) {
|
|
5573
|
+
return {
|
|
5574
|
+
enabled: config?.enabled === true,
|
|
5575
|
+
showInputOutput: config?.showInputOutput === true,
|
|
5576
|
+
maxRecords: boundedInteger(config?.maxRecords, "maxRecords"),
|
|
5577
|
+
maxContentLength: boundedInteger(config?.maxContentLength, "maxContentLength"),
|
|
5578
|
+
requestsPerMinute: boundedInteger(config?.requestsPerMinute, "requestsPerMinute"),
|
|
5579
|
+
requestTimeoutMs: boundedInteger(config?.requestTimeoutMs, "requestTimeoutMs")
|
|
5580
|
+
};
|
|
5581
|
+
}
|
|
5149
5582
|
let RetentionMode = /* @__PURE__ */ function(RetentionMode) {
|
|
5150
5583
|
RetentionMode["ALL"] = "all";
|
|
5151
5584
|
RetentionMode["TEMPORARY"] = "temporary";
|
|
@@ -5179,6 +5612,7 @@ const interfaceSchema = zod.z.object({
|
|
|
5179
5612
|
})]).optional(),
|
|
5180
5613
|
temporaryChat: zod.z.boolean().optional(),
|
|
5181
5614
|
temporaryChatRetention: zod.z.number().min(1).max(8760).optional(),
|
|
5615
|
+
generalChatRetention: zod.z.number().min(1).max(8760).optional(),
|
|
5182
5616
|
autoSubmitFromUrl: zod.z.boolean().optional(),
|
|
5183
5617
|
retentionMode: zod.z.nativeEnum(RetentionMode).default("temporary"),
|
|
5184
5618
|
retainAgentFiles: zod.z.boolean().optional(),
|
|
@@ -5199,6 +5633,7 @@ const interfaceSchema = zod.z.object({
|
|
|
5199
5633
|
marketplace: zod.z.object({ use: zod.z.boolean().optional() }).optional(),
|
|
5200
5634
|
fileSearch: zod.z.boolean().optional(),
|
|
5201
5635
|
fileCitations: zod.z.boolean().optional(),
|
|
5636
|
+
traceViewer: traceViewerSchema.optional(),
|
|
5202
5637
|
/** Tool keys (and `'mcp'` or an MCP server name) pinned to the prompt bar by default */
|
|
5203
5638
|
defaultPinnedTools: zod.z.array(zod.z.string()).optional(),
|
|
5204
5639
|
buildInfo: zod.z.boolean().optional(),
|
|
@@ -5227,7 +5662,10 @@ const interfaceSchema = zod.z.object({
|
|
|
5227
5662
|
maxPerUser: zod.z.number().int().min(0).optional(),
|
|
5228
5663
|
minIntervalMinutes: zod.z.number().int().min(1).optional(),
|
|
5229
5664
|
autoDisableAfterFailures: zod.z.number().int().min(1).optional(),
|
|
5665
|
+
admissionConcurrency: zod.z.number().int().min(1).max(100).optional(),
|
|
5230
5666
|
fireConcurrency: zod.z.number().int().min(1).optional(),
|
|
5667
|
+
mcpPreflightConcurrency: zod.z.number().int().min(1).max(10).optional(),
|
|
5668
|
+
mcpPreflightTimeoutMs: zod.z.number().int().min(1e3).max(6e5).optional(),
|
|
5231
5669
|
/** Refuse schedules that are not filed under a chat project. Enforced on
|
|
5232
5670
|
* create/update AND at every fire, so raising it later stops schedules
|
|
5233
5671
|
* that predate the policy instead of grandfathering them. */
|
|
@@ -5620,6 +6058,57 @@ const messageFilterPiiSchema = zod.z.object({
|
|
|
5620
6058
|
});
|
|
5621
6059
|
});
|
|
5622
6060
|
const messageFilterSchema = zod.z.object({ pii: messageFilterPiiSchema.optional() });
|
|
6061
|
+
/** User fields a deployment may select as the Langfuse trace `userId`. */
|
|
6062
|
+
const LANGFUSE_TRACE_USER_ID_FIELDS = [
|
|
6063
|
+
"id",
|
|
6064
|
+
"email",
|
|
6065
|
+
"username",
|
|
6066
|
+
"name",
|
|
6067
|
+
"openidId",
|
|
6068
|
+
"samlId",
|
|
6069
|
+
"ldapId",
|
|
6070
|
+
"googleId",
|
|
6071
|
+
"githubId",
|
|
6072
|
+
"discordId",
|
|
6073
|
+
"appleId",
|
|
6074
|
+
"facebookId"
|
|
6075
|
+
];
|
|
6076
|
+
/** User fields a deployment may copy into Langfuse trace metadata. */
|
|
6077
|
+
const LANGFUSE_TRACE_USER_METADATA_FIELDS = [
|
|
6078
|
+
...LANGFUSE_TRACE_USER_ID_FIELDS,
|
|
6079
|
+
"role",
|
|
6080
|
+
"provider"
|
|
6081
|
+
];
|
|
6082
|
+
/** Request fields a deployment may copy into Langfuse trace metadata. */
|
|
6083
|
+
const LANGFUSE_TRACE_CONVERSATION_METADATA_FIELDS = [
|
|
6084
|
+
"conversationId",
|
|
6085
|
+
"endpoint",
|
|
6086
|
+
"endpointType",
|
|
6087
|
+
"provider",
|
|
6088
|
+
"model",
|
|
6089
|
+
"modelLabel",
|
|
6090
|
+
"spec"
|
|
6091
|
+
];
|
|
6092
|
+
/**
|
|
6093
|
+
* What a deployment attaches to every Langfuse trace beyond the defaults.
|
|
6094
|
+
* Nothing here is exported unless explicitly listed, so the default trace
|
|
6095
|
+
* carries only the internal user id and no user or request metadata.
|
|
6096
|
+
*/
|
|
6097
|
+
const langfuseTraceConfigSchema = zod.z.object({
|
|
6098
|
+
/**
|
|
6099
|
+
* Which user field becomes the trace `userId`. Defaults to the internal user
|
|
6100
|
+
* id; a user with no value for the chosen field keeps the internal id.
|
|
6101
|
+
*/
|
|
6102
|
+
userIdField: zod.z.enum(LANGFUSE_TRACE_USER_ID_FIELDS).optional(),
|
|
6103
|
+
/** User fields exported as `librechat.user.<field>` trace metadata. */
|
|
6104
|
+
userMetadataFields: zod.z.array(zod.z.enum(LANGFUSE_TRACE_USER_METADATA_FIELDS)).optional(),
|
|
6105
|
+
/**
|
|
6106
|
+
* Request fields exported as trace metadata: `librechat.conversation.id`,
|
|
6107
|
+
* `librechat.endpoint`, `librechat.endpoint.type`, `librechat.provider`,
|
|
6108
|
+
* `librechat.model`, `librechat.model.label`, and `librechat.spec`.
|
|
6109
|
+
*/
|
|
6110
|
+
conversationMetadataFields: zod.z.array(zod.z.enum(LANGFUSE_TRACE_CONVERSATION_METADATA_FIELDS)).optional()
|
|
6111
|
+
});
|
|
5623
6112
|
const langfuseConfigSchema = zod.z.object({
|
|
5624
6113
|
enabled: zod.z.boolean().optional(),
|
|
5625
6114
|
publicKey: zod.z.string().optional(),
|
|
@@ -5651,7 +6140,9 @@ const langfuseConfigSchema = zod.z.object({
|
|
|
5651
6140
|
* schema does not yet express — and note the fanout collector forwards only
|
|
5652
6141
|
* `Authorization` upstream regardless.
|
|
5653
6142
|
*/
|
|
5654
|
-
headers: zod.z.record(zod.z.string()).optional()
|
|
6143
|
+
headers: zod.z.record(zod.z.string()).optional(),
|
|
6144
|
+
/** Trace user identity and allowlisted user/request metadata. */
|
|
6145
|
+
trace: langfuseTraceConfigSchema.optional()
|
|
5655
6146
|
});
|
|
5656
6147
|
const configSchema = zod.z.object({
|
|
5657
6148
|
version: zod.z.string(),
|
|
@@ -5669,7 +6160,35 @@ const configSchema = zod.z.object({
|
|
|
5669
6160
|
mcpServers: MCPServersSchema.optional(),
|
|
5670
6161
|
mcpSettings: zod.z.object({
|
|
5671
6162
|
allowedDomains: zod.z.array(zod.z.string()).optional(),
|
|
5672
|
-
allowedAddresses: allowedAddressesSchema
|
|
6163
|
+
allowedAddresses: allowedAddressesSchema,
|
|
6164
|
+
catalogRecovery: zod.z.object({
|
|
6165
|
+
discoveryBackoffMs: zod.z.array(zod.z.number().int().positive().max(1440 * 6e4)).min(1).max(8).default([
|
|
6166
|
+
5 * 6e4,
|
|
6167
|
+
10 * 6e4,
|
|
6168
|
+
20 * 6e4,
|
|
6169
|
+
30 * 6e4
|
|
6170
|
+
]),
|
|
6171
|
+
discoveryTimeoutMs: zod.z.number().int().positive().max(5 * 6e4).default(3e3),
|
|
6172
|
+
/** How long past `discoveryTimeoutMs` a stalled discovery may hold its catalog slot and
|
|
6173
|
+
* coalesced requests. It is never cancelled, so OAuth tokens it redeemed still persist,
|
|
6174
|
+
* and no other discovery for the same server state starts until it settles. */
|
|
6175
|
+
discoverySettleGraceMs: zod.z.number().int().nonnegative().max(5 * 6e4).default(1e4),
|
|
6176
|
+
reauthRetryMs: zod.z.number().int().positive().max(1440 * 6e4).default(30 * 6e4),
|
|
6177
|
+
maxStateEntries: zod.z.number().int().positive().max(1e6).default(1e4),
|
|
6178
|
+
/** Process-wide: how many discoveries released past `discoverySettleGraceMs` may still be
|
|
6179
|
+
* running before recovery starts no new discovery until one settles. The default matches
|
|
6180
|
+
* the three catalog slots a stalled dependency could hold before discoveries were released. */
|
|
6181
|
+
maxDetachedDiscoveries: zod.z.number().int().positive().max(1e3).default(3),
|
|
6182
|
+
generationReadTimeoutMs: zod.z.number().int().positive().max(1e4).default(500),
|
|
6183
|
+
authorizationFenceRetryMs: zod.z.array(zod.z.number().int().nonnegative().max(6e4)).min(1).max(8).default([
|
|
6184
|
+
0,
|
|
6185
|
+
50,
|
|
6186
|
+
200
|
|
6187
|
+
]),
|
|
6188
|
+
authorizationFenceTimeoutMs: zod.z.number().int().positive().max(3e4).default(1e3),
|
|
6189
|
+
authorizationFenceRetryIntervalMs: zod.z.number().int().positive().max(60 * 6e4).default(3e4),
|
|
6190
|
+
authorizationFenceRetryBatchSize: zod.z.number().int().positive().max(1e4).default(100)
|
|
6191
|
+
}).default({})
|
|
5673
6192
|
}).optional(),
|
|
5674
6193
|
interface: interfaceSchema,
|
|
5675
6194
|
turnstile: turnstileSchema.optional(),
|
|
@@ -5728,6 +6247,7 @@ let KnownEndpoints = /* @__PURE__ */ function(KnownEndpoints) {
|
|
|
5728
6247
|
KnownEndpoints["groq"] = "groq";
|
|
5729
6248
|
KnownEndpoints["helicone"] = "helicone";
|
|
5730
6249
|
KnownEndpoints["huggingface"] = "huggingface";
|
|
6250
|
+
KnownEndpoints["lemonade"] = "lemonade";
|
|
5731
6251
|
KnownEndpoints["mistral"] = "mistral";
|
|
5732
6252
|
KnownEndpoints["mlx"] = "mlx";
|
|
5733
6253
|
KnownEndpoints["ollama"] = "ollama";
|
|
@@ -5766,6 +6286,7 @@ const alternateName = {
|
|
|
5766
6286
|
["anthropic"]: "Anthropic",
|
|
5767
6287
|
["custom"]: "Custom",
|
|
5768
6288
|
["bedrock"]: "AWS Bedrock",
|
|
6289
|
+
["lemonade"]: "AMD Lemonade",
|
|
5769
6290
|
["ollama"]: "Ollama",
|
|
5770
6291
|
["deepseek"]: "DeepSeek",
|
|
5771
6292
|
["moonshot"]: "Moonshot",
|
|
@@ -5773,6 +6294,14 @@ const alternateName = {
|
|
|
5773
6294
|
["vercel"]: "Vercel",
|
|
5774
6295
|
["helicone"]: "Helicone"
|
|
5775
6296
|
};
|
|
6297
|
+
/**
|
|
6298
|
+
* Models the Assistants endpoints cannot run. GPT-6 Astra serves tool calls only
|
|
6299
|
+
* from the Responses API, and the Assistants surface does not route through
|
|
6300
|
+
* `getOpenAILLMConfig`, so listing it there would offer a configuration the
|
|
6301
|
+
* provider rejects. Kept out of `sharedOpenAIModels`, which both Assistants
|
|
6302
|
+
* catalogs consume.
|
|
6303
|
+
*/
|
|
6304
|
+
const responsesOnlyOpenAIModels = ["gpt-6-astra"];
|
|
5776
6305
|
const sharedOpenAIModels = [
|
|
5777
6306
|
"gpt-5.6",
|
|
5778
6307
|
"gpt-5.6-terra",
|
|
@@ -5868,7 +6397,7 @@ const bedrockModels = [
|
|
|
5868
6397
|
const defaultModels = {
|
|
5869
6398
|
["azureAssistants"]: sharedOpenAIModels,
|
|
5870
6399
|
["assistants"]: [...sharedOpenAIModels, "chatgpt-4o-latest"],
|
|
5871
|
-
["agents"]: sharedOpenAIModels,
|
|
6400
|
+
["agents"]: [...responsesOnlyOpenAIModels, ...sharedOpenAIModels],
|
|
5872
6401
|
["google"]: [
|
|
5873
6402
|
"gemini-3.8-flash",
|
|
5874
6403
|
"gemini-3.7-flash",
|
|
@@ -5886,6 +6415,7 @@ const defaultModels = {
|
|
|
5886
6415
|
],
|
|
5887
6416
|
["anthropic"]: sharedAnthropicModels,
|
|
5888
6417
|
["openAI"]: [
|
|
6418
|
+
...responsesOnlyOpenAIModels,
|
|
5889
6419
|
...sharedOpenAIModels,
|
|
5890
6420
|
"chatgpt-4o-latest",
|
|
5891
6421
|
"gpt-4-vision-preview",
|
|
@@ -5898,12 +6428,19 @@ const fitlerAssistantModels = (str) => {
|
|
|
5898
6428
|
return /gpt-4|gpt-3\\.5/i.test(str) && !/vision|instruct/i.test(str);
|
|
5899
6429
|
};
|
|
5900
6430
|
const openAIModels = defaultModels["openAI"];
|
|
6431
|
+
/**
|
|
6432
|
+
* The OpenAI catalog without the models only the first-party OpenAI endpoint
|
|
6433
|
+
* can run. Azure OpenAI shares this list, but Astra is neither routed to the
|
|
6434
|
+
* Responses API nor given its request constraints there, and listing it first
|
|
6435
|
+
* would let it become the default selection.
|
|
6436
|
+
*/
|
|
6437
|
+
const nonResponsesOnlyOpenAIModels = openAIModels.filter((model) => !responsesOnlyOpenAIModels.includes(model));
|
|
5901
6438
|
const initialModelsConfig = {
|
|
5902
6439
|
initial: [],
|
|
5903
6440
|
["openAI"]: openAIModels,
|
|
5904
6441
|
["assistants"]: openAIModels.filter(fitlerAssistantModels),
|
|
5905
6442
|
["agents"]: openAIModels,
|
|
5906
|
-
["azureOpenAI"]:
|
|
6443
|
+
["azureOpenAI"]: nonResponsesOnlyOpenAIModels,
|
|
5907
6444
|
["google"]: defaultModels["google"],
|
|
5908
6445
|
["anthropic"]: defaultModels["anthropic"],
|
|
5909
6446
|
["bedrock"]: defaultModels["bedrock"]
|
|
@@ -6201,6 +6738,10 @@ let ViolationTypes = /* @__PURE__ */ function(ViolationTypes) {
|
|
|
6201
6738
|
* Registration violations.
|
|
6202
6739
|
*/
|
|
6203
6740
|
ViolationTypes["REGISTRATIONS"] = "registrations";
|
|
6741
|
+
/**
|
|
6742
|
+
* Shared link retrieval limit violations.
|
|
6743
|
+
*/
|
|
6744
|
+
ViolationTypes["SHARE_LIMIT"] = "share_limit";
|
|
6204
6745
|
return ViolationTypes;
|
|
6205
6746
|
}({});
|
|
6206
6747
|
/**
|
|
@@ -6268,6 +6809,10 @@ let ErrorTypes = /* @__PURE__ */ function(ErrorTypes) {
|
|
|
6268
6809
|
*/
|
|
6269
6810
|
ErrorTypes["STATEFUL_CODE_ENVIRONMENT_NOT_ALLOWED"] = "stateful_code_environment_not_allowed";
|
|
6270
6811
|
/**
|
|
6812
|
+
* A conversation's selected attached workspace cannot be used as requested.
|
|
6813
|
+
*/
|
|
6814
|
+
ErrorTypes["CODE_WORKSPACE_UNAVAILABLE"] = "code_workspace_unavailable";
|
|
6815
|
+
/**
|
|
6271
6816
|
* Invalid Agent Provider (excluded by Admin)
|
|
6272
6817
|
*/
|
|
6273
6818
|
ErrorTypes["INVALID_AGENT_PROVIDER"] = "invalid_agent_provider";
|
|
@@ -6311,6 +6856,26 @@ let ErrorTypes = /* @__PURE__ */ function(ErrorTypes) {
|
|
|
6311
6856
|
* Provider throttled or refused the request for exceeding a rate/spend allowance
|
|
6312
6857
|
*/
|
|
6313
6858
|
ErrorTypes["MODEL_RATE_LIMIT"] = "model_rate_limit";
|
|
6859
|
+
/**
|
|
6860
|
+
* An agent model provider failed and the run could not recover.
|
|
6861
|
+
*/
|
|
6862
|
+
ErrorTypes["UPSTREAM_MODEL_ERROR"] = "upstream_model_error";
|
|
6863
|
+
/**
|
|
6864
|
+
* Context pruning removed every message; nothing fits the configured context window
|
|
6865
|
+
*/
|
|
6866
|
+
ErrorTypes["EMPTY_MESSAGES"] = "empty_messages";
|
|
6867
|
+
/**
|
|
6868
|
+
* Formatted provider payload exceeded the context budget before invocation
|
|
6869
|
+
*/
|
|
6870
|
+
ErrorTypes["FINAL_CONTEXT_OVERFLOW"] = "final_context_overflow";
|
|
6871
|
+
/**
|
|
6872
|
+
* A manual compaction the graph could not attempt; `reason` says why
|
|
6873
|
+
*/
|
|
6874
|
+
ErrorTypes["COMPACTION_SKIPPED"] = "compaction_skipped";
|
|
6875
|
+
/**
|
|
6876
|
+
* A manual compaction whose summarizer produced nothing; history is untouched
|
|
6877
|
+
*/
|
|
6878
|
+
ErrorTypes["COMPACTION_FAILED"] = "compaction_failed";
|
|
6314
6879
|
return ErrorTypes;
|
|
6315
6880
|
}({});
|
|
6316
6881
|
/**
|
|
@@ -6442,7 +7007,7 @@ let TTSProviders = /* @__PURE__ */ function(TTSProviders) {
|
|
|
6442
7007
|
/** Enum for app-wide constants */
|
|
6443
7008
|
let Constants = /* @__PURE__ */ function(Constants) {
|
|
6444
7009
|
/**
|
|
6445
|
-
* Key for the app's version. The placeholder `v0.8.8-
|
|
7010
|
+
* Key for the app's version. The placeholder `v0.8.8-rc3` is
|
|
6446
7011
|
* swapped in by `@rollup/plugin-replace` during `npm run build:data-provider`
|
|
6447
7012
|
* using the value of the root `package.json`'s `version` field. Consumers
|
|
6448
7013
|
* always import this via the built dist bundle (see `main` field in
|
|
@@ -6450,9 +7015,9 @@ let Constants = /* @__PURE__ */ function(Constants) {
|
|
|
6450
7015
|
* substituted value. Only tests that import the TypeScript source directly
|
|
6451
7016
|
* would observe the raw placeholder.
|
|
6452
7017
|
*/
|
|
6453
|
-
Constants["VERSION"] = "v0.8.8-
|
|
7018
|
+
Constants["VERSION"] = "v0.8.8-rc3";
|
|
6454
7019
|
/** Key for the Custom Config's version (librechat.yaml). */
|
|
6455
|
-
Constants["CONFIG_VERSION"] = "1.3.
|
|
7020
|
+
Constants["CONFIG_VERSION"] = "1.3.16";
|
|
6456
7021
|
/** Standard value for the first message's `parentMessageId` value, to indicate no parent exists. */
|
|
6457
7022
|
Constants["NO_PARENT"] = "00000000-0000-0000-0000-000000000000";
|
|
6458
7023
|
/** Standard value to use whatever the submission prelim. `responseMessageId` is */
|
|
@@ -6929,6 +7494,8 @@ let PermissionBits = /* @__PURE__ */ function(PermissionBits) {
|
|
|
6929
7494
|
PermissionBits[PermissionBits["DELETE"] = 4] = "DELETE";
|
|
6930
7495
|
/** 1000 - Can share agent with others (future) */
|
|
6931
7496
|
PermissionBits[PermissionBits["SHARE"] = 8] = "SHARE";
|
|
7497
|
+
/** 10000 - Can view Insights data for an agent when VIEW is also present */
|
|
7498
|
+
PermissionBits[PermissionBits["VIEW_INSIGHTS"] = 16] = "VIEW_INSIGHTS";
|
|
6932
7499
|
return PermissionBits;
|
|
6933
7500
|
}({});
|
|
6934
7501
|
/**
|
|
@@ -6970,6 +7537,8 @@ const principalSchema = zod.z.object({
|
|
|
6970
7537
|
description: zod.z.string().optional(),
|
|
6971
7538
|
idOnTheSource: zod.z.string().optional(),
|
|
6972
7539
|
accessRoleId: zod.z.nativeEnum(AccessRoleIds).optional(),
|
|
7540
|
+
viewInsights: zod.z.boolean().optional(),
|
|
7541
|
+
isAdmin: zod.z.boolean().optional(),
|
|
6973
7542
|
memberCount: zod.z.number().optional()
|
|
6974
7543
|
});
|
|
6975
7544
|
/**
|
|
@@ -7103,6 +7672,9 @@ let QueryKeys = /* @__PURE__ */ function(QueryKeys) {
|
|
|
7103
7672
|
QueryKeys["searchEnabled"] = "searchEnabled";
|
|
7104
7673
|
QueryKeys["langfuseConnection"] = "langfuseConnection";
|
|
7105
7674
|
QueryKeys["langfuseSessionLink"] = "langfuseSessionLink";
|
|
7675
|
+
QueryKeys["conversationTraceAvailability"] = "conversationTraceAvailability";
|
|
7676
|
+
QueryKeys["conversationTraceRecords"] = "conversationTraceRecords";
|
|
7677
|
+
QueryKeys["conversationTraceRecord"] = "conversationTraceRecord";
|
|
7106
7678
|
QueryKeys["user"] = "user";
|
|
7107
7679
|
QueryKeys["name"] = "name";
|
|
7108
7680
|
QueryKeys["models"] = "models";
|
|
@@ -7179,13 +7751,26 @@ let QueryKeys = /* @__PURE__ */ function(QueryKeys) {
|
|
|
7179
7751
|
QueryKeys["subagentThread"] = "subagentThread";
|
|
7180
7752
|
QueryKeys["codeEnvironments"] = "codeEnvironments";
|
|
7181
7753
|
QueryKeys["agentQueuedTurns"] = "agentQueuedTurns";
|
|
7754
|
+
QueryKeys["pinnedOrder"] = "pinnedOrder";
|
|
7182
7755
|
return QueryKeys;
|
|
7183
7756
|
}({});
|
|
7184
|
-
const DynamicQueryKeys = {
|
|
7757
|
+
const DynamicQueryKeys = {
|
|
7758
|
+
agentFiles: (agentId) => ["agentFiles", agentId],
|
|
7759
|
+
codeEnvironmentStatus: (id) => [
|
|
7760
|
+
"codeEnvironments",
|
|
7761
|
+
id,
|
|
7762
|
+
"status"
|
|
7763
|
+
]
|
|
7764
|
+
};
|
|
7185
7765
|
let MutationKeys = /* @__PURE__ */ function(MutationKeys) {
|
|
7186
7766
|
MutationKeys["subagentControl"] = "subagentControl";
|
|
7187
7767
|
MutationKeys["enqueueAgentQueuedTurn"] = "enqueueAgentQueuedTurn";
|
|
7188
7768
|
MutationKeys["cancelAgentQueuedTurn"] = "cancelAgentQueuedTurn";
|
|
7769
|
+
/** Whole-array favorites write, keyed so every hook instance's write is
|
|
7770
|
+
* visible to the others through the query client. */
|
|
7771
|
+
MutationKeys["updateFavorites"] = "updateFavorites";
|
|
7772
|
+
/** Pinned-section display order write, keyed for the same reason. */
|
|
7773
|
+
MutationKeys["updatePinnedOrder"] = "updatePinnedOrder";
|
|
7189
7774
|
MutationKeys["updateLangfuseConnection"] = "updateLangfuseConnection";
|
|
7190
7775
|
MutationKeys["testLangfuseConnection"] = "testLangfuseConnection";
|
|
7191
7776
|
MutationKeys["createAgentApiKey"] = "createAgentApiKey";
|
|
@@ -7707,10 +8292,14 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
|
|
|
7707
8292
|
getAvailableTools: () => getAvailableTools,
|
|
7708
8293
|
getBanner: () => getBanner,
|
|
7709
8294
|
getCategories: () => getCategories,
|
|
8295
|
+
getCodeEnvironmentStatus: () => getCodeEnvironmentStatus,
|
|
7710
8296
|
getCodeEnvironments: () => getCodeEnvironments,
|
|
7711
8297
|
getCodeOutputDownload: () => getCodeOutputDownload,
|
|
7712
8298
|
getConversationById: () => getConversationById,
|
|
7713
8299
|
getConversationTags: () => getConversationTags,
|
|
8300
|
+
getConversationTraceAvailability: () => getConversationTraceAvailability,
|
|
8301
|
+
getConversationTraceRecord: () => getConversationTraceRecord,
|
|
8302
|
+
getConversationTraceRecords: () => getConversationTraceRecords,
|
|
7714
8303
|
getConversations: () => getConversations,
|
|
7715
8304
|
getCustomConfigSpeech: () => getCustomConfigSpeech,
|
|
7716
8305
|
getDomainServerBaseUrl: () => getDomainServerBaseUrl,
|
|
@@ -7742,6 +8331,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
|
|
|
7742
8331
|
getMessagesByConvoId: () => getMessagesByConvoId,
|
|
7743
8332
|
getModels: () => getModels,
|
|
7744
8333
|
getParentSubagents: () => getParentSubagents,
|
|
8334
|
+
getPinnedOrder: () => getPinnedOrder,
|
|
7745
8335
|
getPresets: () => getPresets,
|
|
7746
8336
|
getProjectById: () => getProjectById,
|
|
7747
8337
|
getPrompt: () => getPrompt,
|
|
@@ -7833,6 +8423,7 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
|
|
|
7833
8423
|
updateMessage: () => updateMessage,
|
|
7834
8424
|
updateMessageContent: () => updateMessageContent,
|
|
7835
8425
|
updatePeoplePickerPermissions: () => updatePeoplePickerPermissions,
|
|
8426
|
+
updatePinnedOrder: () => updatePinnedOrder,
|
|
7836
8427
|
updatePreset: () => updatePreset,
|
|
7837
8428
|
updateProject: () => updateProject,
|
|
7838
8429
|
updatePromptGroup: () => updatePromptGroup,
|
|
@@ -7864,13 +8455,23 @@ var data_service_exports = /* @__PURE__ */ __exportAll({
|
|
|
7864
8455
|
});
|
|
7865
8456
|
function getInsights(params = {}) {
|
|
7866
8457
|
const query = new URLSearchParams();
|
|
7867
|
-
for (const [key, value] of Object.entries(params)) if (value
|
|
8458
|
+
for (const [key, value] of Object.entries(params)) if (Array.isArray(value)) value.forEach((item) => query.append(key, String(item)));
|
|
8459
|
+
else if (value !== void 0 && value !== null && value !== "") query.set(key, String(value));
|
|
7868
8460
|
const suffix = query.toString() ? `?${query.toString()}` : "";
|
|
7869
8461
|
return request_default.get(`${insights()}${suffix}`);
|
|
7870
8462
|
}
|
|
7871
8463
|
function getInsightsAccess() {
|
|
7872
8464
|
return request_default.get(insightsAccess());
|
|
7873
8465
|
}
|
|
8466
|
+
function getConversationTraceAvailability(conversationId) {
|
|
8467
|
+
return request_default.get(conversationTraceAvailability(conversationId));
|
|
8468
|
+
}
|
|
8469
|
+
function getConversationTraceRecords({ conversationId, cursor }, signal) {
|
|
8470
|
+
return request_default.get(conversationTraceRecords(conversationId, cursor), signal ? { signal } : void 0);
|
|
8471
|
+
}
|
|
8472
|
+
function getConversationTraceRecord({ conversationId, recordId, messageId, sourceId }, signal) {
|
|
8473
|
+
return request_default.get(conversationTraceRecord(conversationId, recordId, messageId, sourceId), signal ? { signal } : void 0);
|
|
8474
|
+
}
|
|
7874
8475
|
function getLangfuseConnection() {
|
|
7875
8476
|
return request_default.get(adminLangfuseConnection());
|
|
7876
8477
|
}
|
|
@@ -7895,6 +8496,9 @@ function deleteUser(payload) {
|
|
|
7895
8496
|
function getCodeEnvironments() {
|
|
7896
8497
|
return request_default.get(codeEnvironments());
|
|
7897
8498
|
}
|
|
8499
|
+
function getCodeEnvironmentStatus(id) {
|
|
8500
|
+
return request_default.get(codeEnvironmentStatus(id));
|
|
8501
|
+
}
|
|
7898
8502
|
function pairCodeEnvironment(payload) {
|
|
7899
8503
|
return request_default.post(codeEnvironmentPairings(), payload);
|
|
7900
8504
|
}
|
|
@@ -7910,6 +8514,13 @@ function getFavorites() {
|
|
|
7910
8514
|
function updateFavorites(favorites) {
|
|
7911
8515
|
return request_default.post(`${apiBaseUrl()}/api/user/settings/favorites`, { favorites });
|
|
7912
8516
|
}
|
|
8517
|
+
/** Combined Pinned-section display order: favorite and pinned-chat entry keys interleaved. */
|
|
8518
|
+
function getPinnedOrder() {
|
|
8519
|
+
return request_default.get(pinnedOrder());
|
|
8520
|
+
}
|
|
8521
|
+
function updatePinnedOrder(pinnedOrder$1) {
|
|
8522
|
+
return request_default.post(pinnedOrder(), { pinnedOrder: pinnedOrder$1 });
|
|
8523
|
+
}
|
|
7913
8524
|
/** Tool favorites — starred marketplace items (builtins, tools, MCP servers, skills). */
|
|
7914
8525
|
function getToolFavorites() {
|
|
7915
8526
|
return request_default.get(toolFavorites());
|
|
@@ -8854,6 +9465,60 @@ Object.defineProperty(exports, "BedrockReasoningConfig", {
|
|
|
8854
9465
|
return BedrockReasoningConfig;
|
|
8855
9466
|
}
|
|
8856
9467
|
});
|
|
9468
|
+
Object.defineProperty(exports, "CODE_APPROVAL_MODES", {
|
|
9469
|
+
enumerable: true,
|
|
9470
|
+
get: function() {
|
|
9471
|
+
return CODE_APPROVAL_MODES;
|
|
9472
|
+
}
|
|
9473
|
+
});
|
|
9474
|
+
Object.defineProperty(exports, "CODE_ENVIRONMENT_COMMAND_TIMEOUT_DEFAULT_MS", {
|
|
9475
|
+
enumerable: true,
|
|
9476
|
+
get: function() {
|
|
9477
|
+
return CODE_ENVIRONMENT_COMMAND_TIMEOUT_DEFAULT_MS;
|
|
9478
|
+
}
|
|
9479
|
+
});
|
|
9480
|
+
Object.defineProperty(exports, "CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS", {
|
|
9481
|
+
enumerable: true,
|
|
9482
|
+
get: function() {
|
|
9483
|
+
return CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS;
|
|
9484
|
+
}
|
|
9485
|
+
});
|
|
9486
|
+
Object.defineProperty(exports, "CODE_ENVIRONMENT_DECISION_VERSION", {
|
|
9487
|
+
enumerable: true,
|
|
9488
|
+
get: function() {
|
|
9489
|
+
return CODE_ENVIRONMENT_DECISION_VERSION;
|
|
9490
|
+
}
|
|
9491
|
+
});
|
|
9492
|
+
Object.defineProperty(exports, "CODE_ENVIRONMENT_MODES", {
|
|
9493
|
+
enumerable: true,
|
|
9494
|
+
get: function() {
|
|
9495
|
+
return CODE_ENVIRONMENT_MODES;
|
|
9496
|
+
}
|
|
9497
|
+
});
|
|
9498
|
+
Object.defineProperty(exports, "CODE_WORKSPACE_ID_PATTERN", {
|
|
9499
|
+
enumerable: true,
|
|
9500
|
+
get: function() {
|
|
9501
|
+
return CODE_WORKSPACE_ID_PATTERN;
|
|
9502
|
+
}
|
|
9503
|
+
});
|
|
9504
|
+
Object.defineProperty(exports, "CODE_WORKSPACE_MAX_COUNT", {
|
|
9505
|
+
enumerable: true,
|
|
9506
|
+
get: function() {
|
|
9507
|
+
return CODE_WORKSPACE_MAX_COUNT;
|
|
9508
|
+
}
|
|
9509
|
+
});
|
|
9510
|
+
Object.defineProperty(exports, "CODE_WORKSPACE_OPERATIONS", {
|
|
9511
|
+
enumerable: true,
|
|
9512
|
+
get: function() {
|
|
9513
|
+
return CODE_WORKSPACE_OPERATIONS;
|
|
9514
|
+
}
|
|
9515
|
+
});
|
|
9516
|
+
Object.defineProperty(exports, "CODE_WORKSPACE_SELECTION_ERROR_REASONS", {
|
|
9517
|
+
enumerable: true,
|
|
9518
|
+
get: function() {
|
|
9519
|
+
return CODE_WORKSPACE_SELECTION_ERROR_REASONS;
|
|
9520
|
+
}
|
|
9521
|
+
});
|
|
8857
9522
|
Object.defineProperty(exports, "CONVERSATION_STARTER_FILTER_FIELDS", {
|
|
8858
9523
|
enumerable: true,
|
|
8859
9524
|
get: function() {
|
|
@@ -8878,6 +9543,12 @@ Object.defineProperty(exports, "Capabilities", {
|
|
|
8878
9543
|
return Capabilities;
|
|
8879
9544
|
}
|
|
8880
9545
|
});
|
|
9546
|
+
Object.defineProperty(exports, "CodeApprovalModeError", {
|
|
9547
|
+
enumerable: true,
|
|
9548
|
+
get: function() {
|
|
9549
|
+
return CodeApprovalModeError;
|
|
9550
|
+
}
|
|
9551
|
+
});
|
|
8881
9552
|
Object.defineProperty(exports, "CohereConstants", {
|
|
8882
9553
|
enumerable: true,
|
|
8883
9554
|
get: function() {
|
|
@@ -8902,6 +9573,12 @@ Object.defineProperty(exports, "DEFAULT_MEMORY_MAX_INPUT_TOKENS", {
|
|
|
8902
9573
|
return DEFAULT_MEMORY_MAX_INPUT_TOKENS;
|
|
8903
9574
|
}
|
|
8904
9575
|
});
|
|
9576
|
+
Object.defineProperty(exports, "DefaultLLMDeliveryPath", {
|
|
9577
|
+
enumerable: true,
|
|
9578
|
+
get: function() {
|
|
9579
|
+
return DefaultLLMDeliveryPath;
|
|
9580
|
+
}
|
|
9581
|
+
});
|
|
8905
9582
|
Object.defineProperty(exports, "DynamicQueryKeys", {
|
|
8906
9583
|
enumerable: true,
|
|
8907
9584
|
get: function() {
|
|
@@ -9040,6 +9717,24 @@ Object.defineProperty(exports, "KnownEndpoints", {
|
|
|
9040
9717
|
return KnownEndpoints;
|
|
9041
9718
|
}
|
|
9042
9719
|
});
|
|
9720
|
+
Object.defineProperty(exports, "LANGFUSE_TRACE_CONVERSATION_METADATA_FIELDS", {
|
|
9721
|
+
enumerable: true,
|
|
9722
|
+
get: function() {
|
|
9723
|
+
return LANGFUSE_TRACE_CONVERSATION_METADATA_FIELDS;
|
|
9724
|
+
}
|
|
9725
|
+
});
|
|
9726
|
+
Object.defineProperty(exports, "LANGFUSE_TRACE_USER_ID_FIELDS", {
|
|
9727
|
+
enumerable: true,
|
|
9728
|
+
get: function() {
|
|
9729
|
+
return LANGFUSE_TRACE_USER_ID_FIELDS;
|
|
9730
|
+
}
|
|
9731
|
+
});
|
|
9732
|
+
Object.defineProperty(exports, "LANGFUSE_TRACE_USER_METADATA_FIELDS", {
|
|
9733
|
+
enumerable: true,
|
|
9734
|
+
get: function() {
|
|
9735
|
+
return LANGFUSE_TRACE_USER_METADATA_FIELDS;
|
|
9736
|
+
}
|
|
9737
|
+
});
|
|
9043
9738
|
Object.defineProperty(exports, "LocalStorageKeys", {
|
|
9044
9739
|
enumerable: true,
|
|
9045
9740
|
get: function() {
|
|
@@ -9064,6 +9759,12 @@ Object.defineProperty(exports, "MAX_GRAPH_SUBAGENT_MEMBERS", {
|
|
|
9064
9759
|
return MAX_GRAPH_SUBAGENT_MEMBERS;
|
|
9065
9760
|
}
|
|
9066
9761
|
});
|
|
9762
|
+
Object.defineProperty(exports, "MAX_MCP_ICON_PATH_LENGTH", {
|
|
9763
|
+
enumerable: true,
|
|
9764
|
+
get: function() {
|
|
9765
|
+
return MAX_MCP_ICON_PATH_LENGTH;
|
|
9766
|
+
}
|
|
9767
|
+
});
|
|
9067
9768
|
Object.defineProperty(exports, "MAX_PII_CUSTOM_PATTERNS_TOTAL", {
|
|
9068
9769
|
enumerable: true,
|
|
9069
9770
|
get: function() {
|
|
@@ -9562,6 +10263,12 @@ Object.defineProperty(exports, "actionMetadataFilterFieldSchema", {
|
|
|
9562
10263
|
return actionMetadataFilterFieldSchema;
|
|
9563
10264
|
}
|
|
9564
10265
|
});
|
|
10266
|
+
Object.defineProperty(exports, "agentGitIdentitySchema", {
|
|
10267
|
+
enumerable: true,
|
|
10268
|
+
get: function() {
|
|
10269
|
+
return agentGitIdentitySchema;
|
|
10270
|
+
}
|
|
10271
|
+
});
|
|
9565
10272
|
Object.defineProperty(exports, "agentInstructionFilterFieldSchema", {
|
|
9566
10273
|
enumerable: true,
|
|
9567
10274
|
get: function() {
|
|
@@ -9940,6 +10647,12 @@ Object.defineProperty(exports, "defaultEndpoints", {
|
|
|
9940
10647
|
return defaultEndpoints;
|
|
9941
10648
|
}
|
|
9942
10649
|
});
|
|
10650
|
+
Object.defineProperty(exports, "defaultLLMDeliveryPathSchema", {
|
|
10651
|
+
enumerable: true,
|
|
10652
|
+
get: function() {
|
|
10653
|
+
return defaultLLMDeliveryPathSchema;
|
|
10654
|
+
}
|
|
10655
|
+
});
|
|
9943
10656
|
Object.defineProperty(exports, "defaultModels", {
|
|
9944
10657
|
enumerable: true,
|
|
9945
10658
|
get: function() {
|
|
@@ -10276,6 +10989,12 @@ Object.defineProperty(exports, "getAllEffectivePermissions", {
|
|
|
10276
10989
|
return getAllEffectivePermissions;
|
|
10277
10990
|
}
|
|
10278
10991
|
});
|
|
10992
|
+
Object.defineProperty(exports, "getAllowedCodeApprovalModes", {
|
|
10993
|
+
enumerable: true,
|
|
10994
|
+
get: function() {
|
|
10995
|
+
return getAllowedCodeApprovalModes;
|
|
10996
|
+
}
|
|
10997
|
+
});
|
|
10279
10998
|
Object.defineProperty(exports, "getAvailablePlugins", {
|
|
10280
10999
|
enumerable: true,
|
|
10281
11000
|
get: function() {
|
|
@@ -10312,6 +11031,12 @@ Object.defineProperty(exports, "getDefaultParamsEndpoint", {
|
|
|
10312
11031
|
return getDefaultParamsEndpoint;
|
|
10313
11032
|
}
|
|
10314
11033
|
});
|
|
11034
|
+
Object.defineProperty(exports, "getDocumentFileExtension", {
|
|
11035
|
+
enumerable: true,
|
|
11036
|
+
get: function() {
|
|
11037
|
+
return getDocumentFileExtension;
|
|
11038
|
+
}
|
|
11039
|
+
});
|
|
10315
11040
|
Object.defineProperty(exports, "getEffectivePermissions", {
|
|
10316
11041
|
enumerable: true,
|
|
10317
11042
|
get: function() {
|
|
@@ -10594,6 +11319,30 @@ Object.defineProperty(exports, "isBedrockDocumentType", {
|
|
|
10594
11319
|
return isBedrockDocumentType;
|
|
10595
11320
|
}
|
|
10596
11321
|
});
|
|
11322
|
+
Object.defineProperty(exports, "isCodeEnvironmentMode", {
|
|
11323
|
+
enumerable: true,
|
|
11324
|
+
get: function() {
|
|
11325
|
+
return isCodeEnvironmentMode;
|
|
11326
|
+
}
|
|
11327
|
+
});
|
|
11328
|
+
Object.defineProperty(exports, "isCodeWorkspaceSelection", {
|
|
11329
|
+
enumerable: true,
|
|
11330
|
+
get: function() {
|
|
11331
|
+
return isCodeWorkspaceSelection;
|
|
11332
|
+
}
|
|
11333
|
+
});
|
|
11334
|
+
Object.defineProperty(exports, "isCodeWorkspaceSelectionErrorReason", {
|
|
11335
|
+
enumerable: true,
|
|
11336
|
+
get: function() {
|
|
11337
|
+
return isCodeWorkspaceSelectionErrorReason;
|
|
11338
|
+
}
|
|
11339
|
+
});
|
|
11340
|
+
Object.defineProperty(exports, "isCodeWorkspaceSelections", {
|
|
11341
|
+
enumerable: true,
|
|
11342
|
+
get: function() {
|
|
11343
|
+
return isCodeWorkspaceSelections;
|
|
11344
|
+
}
|
|
11345
|
+
});
|
|
10597
11346
|
Object.defineProperty(exports, "isDocumentSupportedProvider", {
|
|
10598
11347
|
enumerable: true,
|
|
10599
11348
|
get: function() {
|
|
@@ -10606,6 +11355,24 @@ Object.defineProperty(exports, "isImageVisionTool", {
|
|
|
10606
11355
|
return isImageVisionTool;
|
|
10607
11356
|
}
|
|
10608
11357
|
});
|
|
11358
|
+
Object.defineProperty(exports, "isKnownProviderIdentifier", {
|
|
11359
|
+
enumerable: true,
|
|
11360
|
+
get: function() {
|
|
11361
|
+
return isKnownProviderIdentifier;
|
|
11362
|
+
}
|
|
11363
|
+
});
|
|
11364
|
+
Object.defineProperty(exports, "isMediaSupportedProvider", {
|
|
11365
|
+
enumerable: true,
|
|
11366
|
+
get: function() {
|
|
11367
|
+
return isMediaSupportedProvider;
|
|
11368
|
+
}
|
|
11369
|
+
});
|
|
11370
|
+
Object.defineProperty(exports, "isMessageFileUpload", {
|
|
11371
|
+
enumerable: true,
|
|
11372
|
+
get: function() {
|
|
11373
|
+
return isMessageFileUpload;
|
|
11374
|
+
}
|
|
11375
|
+
});
|
|
10609
11376
|
Object.defineProperty(exports, "isMythosClassModel", {
|
|
10610
11377
|
enumerable: true,
|
|
10611
11378
|
get: function() {
|
|
@@ -10648,6 +11415,12 @@ Object.defineProperty(exports, "isRemoteOidcUrlAllowed", {
|
|
|
10648
11415
|
return isRemoteOidcUrlAllowed;
|
|
10649
11416
|
}
|
|
10650
11417
|
});
|
|
11418
|
+
Object.defineProperty(exports, "isResponsesApiUpload", {
|
|
11419
|
+
enumerable: true,
|
|
11420
|
+
get: function() {
|
|
11421
|
+
return isResponsesApiUpload;
|
|
11422
|
+
}
|
|
11423
|
+
});
|
|
10651
11424
|
Object.defineProperty(exports, "isSecureCodeEnvironmentControlURL", {
|
|
10652
11425
|
enumerable: true,
|
|
10653
11426
|
get: function() {
|
|
@@ -10660,6 +11433,12 @@ Object.defineProperty(exports, "isSensitiveEnvVar", {
|
|
|
10660
11433
|
return isSensitiveEnvVar;
|
|
10661
11434
|
}
|
|
10662
11435
|
});
|
|
11436
|
+
Object.defineProperty(exports, "isSpeechProviderConfigured", {
|
|
11437
|
+
enumerable: true,
|
|
11438
|
+
get: function() {
|
|
11439
|
+
return isSpeechProviderConfigured;
|
|
11440
|
+
}
|
|
11441
|
+
});
|
|
10663
11442
|
Object.defineProperty(exports, "isUUID", {
|
|
10664
11443
|
enumerable: true,
|
|
10665
11444
|
get: function() {
|
|
@@ -10672,6 +11451,18 @@ Object.defineProperty(exports, "langfuseConfigSchema", {
|
|
|
10672
11451
|
return langfuseConfigSchema;
|
|
10673
11452
|
}
|
|
10674
11453
|
});
|
|
11454
|
+
Object.defineProperty(exports, "langfuseTraceConfigSchema", {
|
|
11455
|
+
enumerable: true,
|
|
11456
|
+
get: function() {
|
|
11457
|
+
return langfuseTraceConfigSchema;
|
|
11458
|
+
}
|
|
11459
|
+
});
|
|
11460
|
+
Object.defineProperty(exports, "listConfiguredSpeechProviders", {
|
|
11461
|
+
enumerable: true,
|
|
11462
|
+
get: function() {
|
|
11463
|
+
return listConfiguredSpeechProviders;
|
|
11464
|
+
}
|
|
11465
|
+
});
|
|
10675
11466
|
Object.defineProperty(exports, "loginPage", {
|
|
10676
11467
|
enumerable: true,
|
|
10677
11468
|
get: function() {
|
|
@@ -10690,6 +11481,18 @@ Object.defineProperty(exports, "mbToBytes", {
|
|
|
10690
11481
|
return mbToBytes;
|
|
10691
11482
|
}
|
|
10692
11483
|
});
|
|
11484
|
+
Object.defineProperty(exports, "mcpRefreshDefaults", {
|
|
11485
|
+
enumerable: true,
|
|
11486
|
+
get: function() {
|
|
11487
|
+
return mcpRefreshDefaults;
|
|
11488
|
+
}
|
|
11489
|
+
});
|
|
11490
|
+
Object.defineProperty(exports, "mediaSupportedProviders", {
|
|
11491
|
+
enumerable: true,
|
|
11492
|
+
get: function() {
|
|
11493
|
+
return mediaSupportedProviders;
|
|
11494
|
+
}
|
|
11495
|
+
});
|
|
10693
11496
|
Object.defineProperty(exports, "megabyte", {
|
|
10694
11497
|
enumerable: true,
|
|
10695
11498
|
get: function() {
|
|
@@ -10918,6 +11721,18 @@ Object.defineProperty(exports, "resolveAllowedStatefulCodeEnvironments", {
|
|
|
10918
11721
|
return resolveAllowedStatefulCodeEnvironments;
|
|
10919
11722
|
}
|
|
10920
11723
|
});
|
|
11724
|
+
Object.defineProperty(exports, "resolveCodeApprovalMode", {
|
|
11725
|
+
enumerable: true,
|
|
11726
|
+
get: function() {
|
|
11727
|
+
return resolveCodeApprovalMode;
|
|
11728
|
+
}
|
|
11729
|
+
});
|
|
11730
|
+
Object.defineProperty(exports, "resolveCodePermissionDecision", {
|
|
11731
|
+
enumerable: true,
|
|
11732
|
+
get: function() {
|
|
11733
|
+
return resolveCodePermissionDecision;
|
|
11734
|
+
}
|
|
11735
|
+
});
|
|
10921
11736
|
Object.defineProperty(exports, "resolveEndpointType", {
|
|
10922
11737
|
enumerable: true,
|
|
10923
11738
|
get: function() {
|
|
@@ -10930,12 +11745,30 @@ Object.defineProperty(exports, "resolveModelSpecEndpoint", {
|
|
|
10930
11745
|
return resolveModelSpecEndpoint;
|
|
10931
11746
|
}
|
|
10932
11747
|
});
|
|
11748
|
+
Object.defineProperty(exports, "resolveSandboxFilename", {
|
|
11749
|
+
enumerable: true,
|
|
11750
|
+
get: function() {
|
|
11751
|
+
return resolveSandboxFilename;
|
|
11752
|
+
}
|
|
11753
|
+
});
|
|
10933
11754
|
Object.defineProperty(exports, "resolveStatefulCodeEnvironment", {
|
|
10934
11755
|
enumerable: true,
|
|
10935
11756
|
get: function() {
|
|
10936
11757
|
return resolveStatefulCodeEnvironment;
|
|
10937
11758
|
}
|
|
10938
11759
|
});
|
|
11760
|
+
Object.defineProperty(exports, "resolveTraceViewerConfig", {
|
|
11761
|
+
enumerable: true,
|
|
11762
|
+
get: function() {
|
|
11763
|
+
return resolveTraceViewerConfig;
|
|
11764
|
+
}
|
|
11765
|
+
});
|
|
11766
|
+
Object.defineProperty(exports, "resolveUseResponsesApi", {
|
|
11767
|
+
enumerable: true,
|
|
11768
|
+
get: function() {
|
|
11769
|
+
return resolveUseResponsesApi;
|
|
11770
|
+
}
|
|
11771
|
+
});
|
|
10939
11772
|
Object.defineProperty(exports, "resourcePermissionsResponseSchema", {
|
|
10940
11773
|
enumerable: true,
|
|
10941
11774
|
get: function() {
|
|
@@ -11218,6 +12051,18 @@ Object.defineProperty(exports, "toolArgumentFilterFieldSchema", {
|
|
|
11218
12051
|
return toolArgumentFilterFieldSchema;
|
|
11219
12052
|
}
|
|
11220
12053
|
});
|
|
12054
|
+
Object.defineProperty(exports, "traceViewerDefaults", {
|
|
12055
|
+
enumerable: true,
|
|
12056
|
+
get: function() {
|
|
12057
|
+
return traceViewerDefaults;
|
|
12058
|
+
}
|
|
12059
|
+
});
|
|
12060
|
+
Object.defineProperty(exports, "traceViewerLimits", {
|
|
12061
|
+
enumerable: true,
|
|
12062
|
+
get: function() {
|
|
12063
|
+
return traceViewerLimits;
|
|
12064
|
+
}
|
|
12065
|
+
});
|
|
11221
12066
|
Object.defineProperty(exports, "transactionsSchema", {
|
|
11222
12067
|
enumerable: true,
|
|
11223
12068
|
get: function() {
|
|
@@ -11351,4 +12196,4 @@ Object.defineProperty(exports, "webSearchSchema", {
|
|
|
11351
12196
|
}
|
|
11352
12197
|
});
|
|
11353
12198
|
|
|
11354
|
-
//# sourceMappingURL=data-service-
|
|
12199
|
+
//# sourceMappingURL=data-service-CTX0tVO5.js.map
|