librechat-data-provider 0.8.522 → 0.8.524
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-B-WUVvTH.mjs} +1044 -173
- package/dist/data-service-B-WUVvTH.mjs.map +1 -0
- package/dist/{data-service-D5kHzBt-.js → data-service-CUG1qdeC.js} +1426 -207
- package/dist/data-service-CUG1qdeC.js.map +1 -0
- package/dist/index.js +886 -74
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +780 -70
- 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/actions.d.ts +1 -1
- package/dist/types/agentToolOptions.d.ts +1 -1
- package/dist/types/api-endpoints.d.ts +7 -0
- package/dist/types/backgroundResults.d.ts +13 -0
- package/dist/types/balance.d.ts +4 -0
- package/dist/types/bedrock.d.ts +132 -65
- 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 +50 -0
- package/dist/types/codeEnvRef.d.ts +5 -0
- package/dist/types/config.d.ts +5859 -2469
- package/dist/types/data-service.d.ts +22 -12
- package/dist/types/errors.d.ts +2 -0
- package/dist/types/file-config.d.ts +179 -12
- package/dist/types/filters.d.ts +97 -97
- package/dist/types/footer.d.ts +20 -0
- package/dist/types/generate.d.ts +48 -24
- package/dist/types/index.d.ts +11 -0
- package/dist/types/keys.d.ts +13 -2
- package/dist/types/limits.d.ts +8 -0
- package/dist/types/mcp.d.ts +683 -30
- package/dist/types/messages.d.ts +25 -1
- package/dist/types/models.d.ts +312 -183
- package/dist/types/parameterSettings.d.ts +10 -1
- package/dist/types/parsers.d.ts +25 -1
- package/dist/types/providers.d.ts +1 -0
- package/dist/types/resolve-llm-delivery-path.d.ts +161 -0
- package/dist/types/schemas.d.ts +771 -457
- package/dist/types/svg.d.ts +34 -0
- package/dist/types/types/agents.d.ts +257 -2
- package/dist/types/types/assistants.d.ts +2 -617
- package/dist/types/types/content.d.ts +286 -0
- package/dist/types/types/files.d.ts +48 -1
- package/dist/types/types/insights.d.ts +9 -0
- package/dist/types/types/mutations.d.ts +3 -2
- package/dist/types/types/queries.d.ts +8 -1
- package/dist/types/types/queuedTurns.d.ts +140 -106
- package/dist/types/types/runs.d.ts +33 -5
- package/dist/types/types/schedules.d.ts +40 -7
- package/dist/types/types/skills.d.ts +43 -0
- package/dist/types/types/tools.d.ts +132 -0
- package/dist/types/types/traces.d.ts +134 -0
- package/dist/types/types.d.ts +72 -2
- package/package.json +2 -2
- package/dist/data-service-CaB7saTP.mjs.map +0 -1
- package/dist/data-service-D5kHzBt-.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_data_service = require("./data-service-
|
|
2
|
+
const require_data_service = require("./data-service-CUG1qdeC.js");
|
|
3
3
|
let zod = require("zod");
|
|
4
4
|
let dayjs = require("dayjs");
|
|
5
5
|
dayjs = require_data_service.__toESM(dayjs);
|
|
@@ -15,13 +15,18 @@ let crypto = require("crypto");
|
|
|
15
15
|
crypto = require_data_service.__toESM(crypto);
|
|
16
16
|
let js_yaml = require("js-yaml");
|
|
17
17
|
//#region src/bedrock.ts
|
|
18
|
+
const THINKING_BINDING_BETA = "thinking-binding-controls-2026-08-01";
|
|
18
19
|
const DEFAULT_THINKING_BUDGET = 2e3;
|
|
19
20
|
const BEDROCK_CLAUDE_SONNET_4_6_MAX_OUTPUT = 64e3;
|
|
20
21
|
const BEDROCK_OUTPUT_128K_BETA = "output-128k-2025-02-19";
|
|
21
22
|
const BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA = "fine-grained-tool-streaming-2025-05-14";
|
|
22
23
|
/** Betas LibreChat injects itself, safe to strip from persisted AMRF when a
|
|
23
24
|
* model no longer supports them; anything else in `anthropic_beta` is a user opt-in. */
|
|
24
|
-
const GENERATED_BEDROCK_BETAS = new Set([
|
|
25
|
+
const GENERATED_BEDROCK_BETAS = new Set([
|
|
26
|
+
BEDROCK_OUTPUT_128K_BETA,
|
|
27
|
+
BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA,
|
|
28
|
+
THINKING_BINDING_BETA
|
|
29
|
+
]);
|
|
25
30
|
const bedrockReasoningConfigValues = new Set(Object.values(require_data_service.BedrockReasoningConfig));
|
|
26
31
|
/**
|
|
27
32
|
* Resolves the final `thinking.display` value for an adaptive-thinking request.
|
|
@@ -65,6 +70,13 @@ function parseOpusVersion(model) {
|
|
|
65
70
|
};
|
|
66
71
|
return null;
|
|
67
72
|
}
|
|
73
|
+
/** Opus 5.5 has an always-on, conversation-bound thinking contract unlike Opus 5. */
|
|
74
|
+
function isOpus55Model(model) {
|
|
75
|
+
const opus = parseOpusVersion(model);
|
|
76
|
+
return opus?.major === 5 && opus.minor === 5;
|
|
77
|
+
}
|
|
78
|
+
/** LibreChat permits edits and compaction of earlier turns; drop only invalidated blocks. */
|
|
79
|
+
const OPUS_55_BLOCK_BINDING = { prefix_mismatch_behavior: "drop_block" };
|
|
68
80
|
/** Extracts sonnet major/minor version from both naming formats.
|
|
69
81
|
* Uses bounded minor capture to avoid matching date suffixes (e.g., -20250514). */
|
|
70
82
|
function parseSonnetVersion(model) {
|
|
@@ -133,6 +145,7 @@ function omitsSamplingParameters(model) {
|
|
|
133
145
|
* See https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-sonnet-5
|
|
134
146
|
*/
|
|
135
147
|
function requiresExplicitThinkingDisabled(model) {
|
|
148
|
+
if (isOpus55Model(model)) return false;
|
|
136
149
|
const sonnet = parseSonnetVersion(model);
|
|
137
150
|
if (sonnet != null && sonnet.major >= 5) return true;
|
|
138
151
|
const opus = parseOpusVersion(model);
|
|
@@ -150,6 +163,7 @@ const EFFORTS_REJECTED_WHEN_THINKING_DISABLED = new Set(["xhigh", "max"]);
|
|
|
150
163
|
* off, so the cap is Opus 5+ only.
|
|
151
164
|
*/
|
|
152
165
|
function capsEffortWhenThinkingDisabled(model) {
|
|
166
|
+
if (isOpus55Model(model)) return false;
|
|
153
167
|
const opus = parseOpusVersion(model);
|
|
154
168
|
return opus != null && opus.major >= 5;
|
|
155
169
|
}
|
|
@@ -222,6 +236,7 @@ function isBedrockClaudeModel(model) {
|
|
|
222
236
|
* @returns Array of beta header strings, or empty array if not applicable
|
|
223
237
|
*/
|
|
224
238
|
function getBedrockAnthropicBetaHeaders(model) {
|
|
239
|
+
if (isOpus55Model(model)) return [THINKING_BINDING_BETA];
|
|
225
240
|
const betaHeaders = [];
|
|
226
241
|
/** Mythos-class (Fable/Mythos) is intentionally not matched: these betas are built-in/no-op for the
|
|
227
242
|
* 4.7+ generation (Fable has native 128K output), so omitting them on Bedrock is lossless. */
|
|
@@ -369,7 +384,7 @@ const bedrockInputParser = require_data_service.tConversationSchema.pick({
|
|
|
369
384
|
/** Persisted AMRF is spread into the final request, so clearing only
|
|
370
385
|
* `additionalFields` leaves a stale value from a prior selection. */
|
|
371
386
|
const persistedAmrf = typedData.additionalModelRequestFields;
|
|
372
|
-
const thinkingDisabled = additionalFields.thinking === false;
|
|
387
|
+
const thinkingDisabled = additionalFields.thinking === false && !isOpus55Model(typedData.model);
|
|
373
388
|
const effort = additionalFields.effort;
|
|
374
389
|
if (typeof effort === "string" && effort !== "") additionalFields.output_config = { effort };
|
|
375
390
|
else if (effort !== void 0 && persistedAmrf)
|
|
@@ -385,7 +400,7 @@ const bedrockInputParser = require_data_service.tConversationSchema.pick({
|
|
|
385
400
|
* `effort`, so the branch above leaves it untouched).
|
|
386
401
|
*/
|
|
387
402
|
if (thinkingDisabled) [additionalFields, persistedAmrf].forEach((target) => clampOutputConfigEffort(typedData.model, target?.output_config));
|
|
388
|
-
if (
|
|
403
|
+
if (thinkingDisabled) {
|
|
389
404
|
delete additionalFields.thinkingBudget;
|
|
390
405
|
delete additionalFields.thinkingDisplay;
|
|
391
406
|
if (requiresExplicitThinkingDisabled(typedData.model)) additionalFields.thinking = { type: "disabled" };
|
|
@@ -407,6 +422,7 @@ const bedrockInputParser = require_data_service.tConversationSchema.pick({
|
|
|
407
422
|
const topLevelDisplay = additionalFields.thinkingDisplay;
|
|
408
423
|
const persistedDisplay = extractPersistedDisplay(typedData.additionalModelRequestFields);
|
|
409
424
|
const thinkingConfig = { type: "adaptive" };
|
|
425
|
+
if (isOpus55Model(typedData.model)) thinkingConfig.block_binding = { ...OPUS_55_BLOCK_BINDING };
|
|
410
426
|
const display = resolveThinkingDisplay(typedData.model, topLevelDisplay ?? persistedDisplay);
|
|
411
427
|
if (display) thinkingConfig.display = display;
|
|
412
428
|
additionalFields.thinking = thinkingConfig;
|
|
@@ -711,6 +727,10 @@ let ReasoningLabelEvents = /* @__PURE__ */ function(ReasoningLabelEvents) {
|
|
|
711
727
|
ReasoningLabelEvents["ON_REASONING_LABEL_ATTEMPT"] = "on_reasoning_label_attempt";
|
|
712
728
|
return ReasoningLabelEvents;
|
|
713
729
|
}({});
|
|
730
|
+
const finiteNonNegativeInteger = (value) => {
|
|
731
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return;
|
|
732
|
+
return Math.min(Number.MAX_SAFE_INTEGER, Math.max(0, Math.floor(value)));
|
|
733
|
+
};
|
|
714
734
|
/**
|
|
715
735
|
* Full prompt token count for one completed model call — the EXACT context the
|
|
716
736
|
* model saw, provider-aware: additive providers (Bedrock) report `input_tokens`
|
|
@@ -722,37 +742,114 @@ let ReasoningLabelEvents = /* @__PURE__ */ function(ReasoningLabelEvents) {
|
|
|
722
742
|
* gauge reconciles its calibrated estimate to.
|
|
723
743
|
*/
|
|
724
744
|
const promptTokensFromUsage = (event) => {
|
|
725
|
-
const input = event.input_tokens ?? 0;
|
|
745
|
+
const input = finiteNonNegativeInteger(event.input_tokens) ?? 0;
|
|
726
746
|
const details = event.input_token_details ?? {};
|
|
727
|
-
const cacheRead = details.cache_read ?? 0;
|
|
728
|
-
const cacheCreation = details.cache_creation ?? 0;
|
|
729
|
-
return (event.provider != null ? require_data_service.inputTokensIncludesCache(event.provider) : cacheRead + cacheCreation <= input) ? input : input + cacheRead + cacheCreation;
|
|
747
|
+
const cacheRead = finiteNonNegativeInteger(details.cache_read) ?? 0;
|
|
748
|
+
const cacheCreation = finiteNonNegativeInteger(details.cache_creation) ?? 0;
|
|
749
|
+
return (event.provider != null ? require_data_service.inputTokensIncludesCache(event.provider) : cacheRead + cacheCreation <= input) ? input : Math.min(Number.MAX_SAFE_INTEGER, input + cacheRead + cacheCreation);
|
|
750
|
+
};
|
|
751
|
+
/**
|
|
752
|
+
* Scales per-tool result-message counts while bounding both malformed input and
|
|
753
|
+
* rounding error. Null-prototype records keep tool names as ordinary data keys;
|
|
754
|
+
* cumulative apportionment preserves the scaled sum in one linear pass.
|
|
755
|
+
*/
|
|
756
|
+
const scaleToolMessageTokenCounts = (value, oldTotal, newTotal) => {
|
|
757
|
+
if (value == null || typeof value !== "object" || Array.isArray(value)) return;
|
|
758
|
+
const scaled = Object.create(null);
|
|
759
|
+
let remaining = oldTotal;
|
|
760
|
+
let cumulative = 0;
|
|
761
|
+
let allocated = 0;
|
|
762
|
+
let found = false;
|
|
763
|
+
for (const [name, rawCount] of Object.entries(value)) {
|
|
764
|
+
const count = finiteNonNegativeInteger(rawCount);
|
|
765
|
+
if (count == null || count === 0) continue;
|
|
766
|
+
const bounded = Math.min(count, remaining);
|
|
767
|
+
remaining -= bounded;
|
|
768
|
+
cumulative += bounded;
|
|
769
|
+
const target = oldTotal > 0 ? Math.round(cumulative / oldTotal * newTotal) : 0;
|
|
770
|
+
const apportioned = target - allocated;
|
|
771
|
+
allocated = target;
|
|
772
|
+
if (apportioned > 0) {
|
|
773
|
+
scaled[name] = apportioned;
|
|
774
|
+
found = true;
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
return found ? scaled : void 0;
|
|
730
778
|
};
|
|
731
779
|
/**
|
|
732
780
|
* Reconciles a pre-invoke context snapshot's CALIBRATED estimate to a call's
|
|
733
781
|
* ACTUAL prompt tokens. The SDK's calibration multiplier scales only
|
|
734
|
-
* `messageTokens` (instructions/summary are raw tiktoken counts)
|
|
782
|
+
* `messageTokens` (instructions/summary are raw tiktoken counts) and can
|
|
735
783
|
* over-shoot badly when a provider injects server-side content the SDK never
|
|
736
784
|
* counted (e.g. Anthropic web search) — pinning the gauge several× too high and
|
|
737
785
|
* persisting it. Trust the provider's own prompt count: keep the raw
|
|
738
|
-
* instruction/summary rows, set `messageTokens` to the remainder,
|
|
739
|
-
*
|
|
786
|
+
* instruction/summary rows, set `messageTokens` to the remainder, recompute the
|
|
787
|
+
* free space, and rescale the `toolMessageTokens` share to the new message
|
|
788
|
+
* total. No-op when `promptTokens` is unusable.
|
|
740
789
|
*/
|
|
741
790
|
const reconcileContextUsage = (snapshot, promptTokens) => {
|
|
742
791
|
if (!Number.isFinite(promptTokens) || promptTokens <= 0) return snapshot;
|
|
792
|
+
const normalizedPromptTokens = Math.min(Number.MAX_SAFE_INTEGER, Math.floor(promptTokens));
|
|
793
|
+
if (normalizedPromptTokens <= 0) return snapshot;
|
|
743
794
|
const { breakdown } = snapshot;
|
|
744
|
-
const
|
|
745
|
-
const
|
|
746
|
-
const
|
|
747
|
-
|
|
795
|
+
const instructionTokens = finiteNonNegativeInteger(breakdown.instructionTokens) ?? 0;
|
|
796
|
+
const summaryTokens = finiteNonNegativeInteger(breakdown.summaryTokens) ?? 0;
|
|
797
|
+
const budget = finiteNonNegativeInteger(snapshot.contextBudget) ?? finiteNonNegativeInteger(breakdown.maxContextTokens);
|
|
798
|
+
const nonMessageTokens = instructionTokens + summaryTokens;
|
|
799
|
+
const messageTokens = Math.max(0, normalizedPromptTokens - nonMessageTokens);
|
|
800
|
+
/** `toolMessageTokens` is a subset of the OLD (calibrated) `messageTokens`;
|
|
801
|
+
* rescale it by the same proportion so the split tracks the provider's real
|
|
802
|
+
* total. A supplied zero remains a known-zero split; absent fields stay absent
|
|
803
|
+
* for older snapshots. */
|
|
804
|
+
const priorMessageTokens = finiteNonNegativeInteger(breakdown.messageTokens) ?? 0;
|
|
805
|
+
const priorToolMessageTokens = finiteNonNegativeInteger(breakdown.toolMessageTokens);
|
|
806
|
+
let toolMessageTokens;
|
|
807
|
+
if (priorToolMessageTokens != null) {
|
|
808
|
+
toolMessageTokens = 0;
|
|
809
|
+
if (priorMessageTokens > 0 && priorToolMessageTokens > 0) toolMessageTokens = Math.min(messageTokens, Math.round(Math.min(priorToolMessageTokens, priorMessageTokens) / priorMessageTokens * messageTokens));
|
|
810
|
+
}
|
|
811
|
+
const toolMessageTokenCounts = toolMessageTokens != null ? scaleToolMessageTokenCounts(breakdown.toolMessageTokenCounts, Math.min(priorToolMessageTokens ?? 0, priorMessageTokens), toolMessageTokens) : void 0;
|
|
812
|
+
const nextBreakdown = {
|
|
813
|
+
...breakdown,
|
|
814
|
+
instructionTokens,
|
|
815
|
+
summaryTokens,
|
|
816
|
+
messageTokens
|
|
817
|
+
};
|
|
818
|
+
if (toolMessageTokens == null) {
|
|
819
|
+
delete nextBreakdown.toolMessageTokens;
|
|
820
|
+
delete nextBreakdown.toolMessageTokenCounts;
|
|
821
|
+
} else {
|
|
822
|
+
nextBreakdown.toolMessageTokens = toolMessageTokens;
|
|
823
|
+
if (toolMessageTokenCounts == null) delete nextBreakdown.toolMessageTokenCounts;
|
|
824
|
+
else nextBreakdown.toolMessageTokenCounts = toolMessageTokenCounts;
|
|
825
|
+
}
|
|
826
|
+
const result = {
|
|
748
827
|
...snapshot,
|
|
749
|
-
breakdown:
|
|
750
|
-
...breakdown,
|
|
751
|
-
messageTokens
|
|
752
|
-
},
|
|
753
|
-
remainingContextTokens: budget != null ? Math.max(0, budget - promptTokens) : snapshot.remainingContextTokens
|
|
828
|
+
breakdown: nextBreakdown
|
|
754
829
|
};
|
|
830
|
+
if (budget != null) result.remainingContextTokens = Math.max(0, budget - normalizedPromptTokens);
|
|
831
|
+
else {
|
|
832
|
+
const remaining = finiteNonNegativeInteger(snapshot.remainingContextTokens);
|
|
833
|
+
if (remaining == null) delete result.remainingContextTokens;
|
|
834
|
+
else result.remainingContextTokens = remaining;
|
|
835
|
+
}
|
|
836
|
+
return result;
|
|
755
837
|
};
|
|
838
|
+
/** Provider output, including reasoning omitted from an under-reported output count. */
|
|
839
|
+
const outputTokensFromUsage = (event) => {
|
|
840
|
+
const output = finiteNonNegativeInteger(event.output_tokens) ?? 0;
|
|
841
|
+
const total = finiteNonNegativeInteger(event.total_tokens) ?? 0;
|
|
842
|
+
return Math.max(output, total - promptTokensFromUsage(event));
|
|
843
|
+
};
|
|
844
|
+
/** Reconcile and retain the primary call details on live, saved, and resumable snapshots. */
|
|
845
|
+
const reconcileContextUsageFromEvent = (snapshot, event) => ({
|
|
846
|
+
...reconcileContextUsage(snapshot, promptTokensFromUsage(event)),
|
|
847
|
+
model: event.model,
|
|
848
|
+
provider: event.provider,
|
|
849
|
+
completedOutputTokens: outputTokensFromUsage(event),
|
|
850
|
+
cacheRead: finiteNonNegativeInteger(event.input_token_details?.cache_read) ?? 0,
|
|
851
|
+
cacheWrite: finiteNonNegativeInteger(event.input_token_details?.cache_creation) ?? 0
|
|
852
|
+
});
|
|
756
853
|
//#endregion
|
|
757
854
|
//#region src/parsers.ts
|
|
758
855
|
dayjs.default.extend(dayjs_plugin_utc_js.default);
|
|
@@ -993,6 +1090,45 @@ function replaceSpecialVars({ text, user, now: inputNow, timezone }) {
|
|
|
993
1090
|
function getEphemeralSender({ modelLabel, specLabel, modelDisplayLabel }) {
|
|
994
1091
|
return modelLabel ?? specLabel ?? modelDisplayLabel ?? "";
|
|
995
1092
|
}
|
|
1093
|
+
/** Built-in endpoints; anything else in `endpoint` is a custom endpoint's own name. */
|
|
1094
|
+
const builtInEndpoints = new Set(Object.values(require_data_service.EModelEndpoint));
|
|
1095
|
+
/**
|
|
1096
|
+
* Whether a persisted `sender` is a label someone configured rather than the
|
|
1097
|
+
* model-derived name `getResponseSender` produces.
|
|
1098
|
+
*
|
|
1099
|
+
* The sender is the one thing that records which it was: `resolveSender` writes an
|
|
1100
|
+
* agent's name, then the `getEphemeralSender` chain (`modelLabel` → a model spec's
|
|
1101
|
+
* `label` → an endpoint's `modelDisplayLabel`), and falls back to `getResponseSender`
|
|
1102
|
+
* only when none of those is set. Asking the message rather than the conversation
|
|
1103
|
+
* settles three things a settings lookup cannot: labels that live in config a caller
|
|
1104
|
+
* may not hold, labels an endpoint ignores (Anthropic keeps reading `Claude` whatever
|
|
1105
|
+
* `chatGptLabel` says, and matches here), and labels changed since the message was
|
|
1106
|
+
* written — its header still shows the sender it was written under.
|
|
1107
|
+
*
|
|
1108
|
+
* Equality is the test, so the only way to be wrong is a stored name that no longer
|
|
1109
|
+
* matches what the current heuristics produce, which withholds a model rather than
|
|
1110
|
+
* revealing one.
|
|
1111
|
+
*/
|
|
1112
|
+
const isConfiguredSender = ({ sender, endpoint, endpointType, model, isCreatedByUser }) => {
|
|
1113
|
+
/** A user turn is headed by the person who wrote it, so it has no model to withhold
|
|
1114
|
+
* and its `User` sender would never match a derived name. */
|
|
1115
|
+
if (isCreatedByUser === true) return false;
|
|
1116
|
+
/** Agents and assistants are named by whoever authored them: the header shows that
|
|
1117
|
+
* name whether or not the response stored a sender, and `getResponseSender` has no
|
|
1118
|
+
* branch to derive one. */
|
|
1119
|
+
if (require_data_service.isAgentsEndpoint(endpoint) || require_data_service.isAssistantsEndpoint(endpoint)) return true;
|
|
1120
|
+
if (sender == null || sender === "") return false;
|
|
1121
|
+
const derived = getResponseSender({
|
|
1122
|
+
endpoint,
|
|
1123
|
+
endpointType: endpointType ?? (endpoint != null && !builtInEndpoints.has(endpoint) ? "custom" : void 0),
|
|
1124
|
+
model
|
|
1125
|
+
});
|
|
1126
|
+
/** An endpoint this cannot name — an older message stored without one, say — says
|
|
1127
|
+
* nothing either way, and reading that silence as "configured" would withhold the
|
|
1128
|
+
* model from every unlabelled row it reached. */
|
|
1129
|
+
if (derived === "") return false;
|
|
1130
|
+
return sender !== derived;
|
|
1131
|
+
};
|
|
996
1132
|
/**
|
|
997
1133
|
* Encodes an ephemeral agent ID from endpoint, model, optional sender, and optional index.
|
|
998
1134
|
* Uses __ to replace : (reserved in graph node names) and ___ to separate sender.
|
|
@@ -1285,6 +1421,20 @@ function mapGroupToAzureConfig({ groupName, groupMap }) {
|
|
|
1285
1421
|
return result;
|
|
1286
1422
|
}
|
|
1287
1423
|
//#endregion
|
|
1424
|
+
//#region src/footer.ts
|
|
1425
|
+
/**
|
|
1426
|
+
* Whether a deployment configured footer content of its own — a custom footer,
|
|
1427
|
+
* a privacy policy or terms of service.
|
|
1428
|
+
*
|
|
1429
|
+
* The footer bar is absolutely positioned in a zero-height wrapper, so the
|
|
1430
|
+
* composer above it is what reserves its band: this answer decides both the
|
|
1431
|
+
* bar and the clearance. The client and the server share it because the two
|
|
1432
|
+
* answering differently is exactly the layout correction it exists to remove.
|
|
1433
|
+
*/
|
|
1434
|
+
function hasConfiguredFooter(source) {
|
|
1435
|
+
return typeof source?.customFooter === "string" || source?.interface?.privacyPolicy?.externalUrl != null || source?.interface?.termsOfService?.externalUrl != null;
|
|
1436
|
+
}
|
|
1437
|
+
//#endregion
|
|
1288
1438
|
//#region src/langchain.ts
|
|
1289
1439
|
/**
|
|
1290
1440
|
* LangChain classifies a provider failure by mutating the error: it stamps `lc_error_code` and
|
|
@@ -1375,6 +1525,298 @@ function parseLangChainErrorCode(message) {
|
|
|
1375
1525
|
}
|
|
1376
1526
|
}
|
|
1377
1527
|
//#endregion
|
|
1528
|
+
//#region src/codeEnvRef.ts
|
|
1529
|
+
/**
|
|
1530
|
+
* Closed set of resource kinds for sandbox file caching. Defined as a
|
|
1531
|
+
* `as const` tuple so the runtime list and the TypeScript union can't
|
|
1532
|
+
* drift on future additions — adding a new kind to the tuple updates
|
|
1533
|
+
* both at once.
|
|
1534
|
+
*
|
|
1535
|
+
* - `skill`: shared per skill identity. Cross-user-within-tenant
|
|
1536
|
+
* sharing. Code API sessionKey omits the user dimension.
|
|
1537
|
+
* `version` is required (the skill's monotonic counter scopes the
|
|
1538
|
+
* cache per revision so any edit invalidates the prior cache
|
|
1539
|
+
* entry naturally).
|
|
1540
|
+
* - `agent`: shared per agent identity. Same sharing semantic as
|
|
1541
|
+
* skills (agents are addressable resources accessible to a
|
|
1542
|
+
* permission-defined audience).
|
|
1543
|
+
* - `user`: user-private. Code API sessionKey is keyed by the
|
|
1544
|
+
* requesting user from auth context. Used for chat attachments
|
|
1545
|
+
* and code-output artifacts.
|
|
1546
|
+
*/
|
|
1547
|
+
const CODE_ENV_KINDS = [
|
|
1548
|
+
"skill",
|
|
1549
|
+
"agent",
|
|
1550
|
+
"user"
|
|
1551
|
+
];
|
|
1552
|
+
function getCodeEnvRefForProfile(refs, routeKey) {
|
|
1553
|
+
const profileRef = refs?.codeEnvRefs?.[routeKey];
|
|
1554
|
+
if (profileRef) return profileRef;
|
|
1555
|
+
const legacyRef = refs?.codeEnvRef;
|
|
1556
|
+
if (legacyRef && (legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default") === routeKey) return legacyRef;
|
|
1557
|
+
}
|
|
1558
|
+
/** Adds one profile pointer without discarding the other profile's storage object. */
|
|
1559
|
+
function mergeCodeEnvRef(refs, ref) {
|
|
1560
|
+
const codeEnvRefs = { ...refs?.codeEnvRefs };
|
|
1561
|
+
const legacyRef = refs?.codeEnvRef;
|
|
1562
|
+
if (legacyRef) codeEnvRefs[legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default"] ??= legacyRef;
|
|
1563
|
+
const routeKey = ref.executionRouteKey ?? ref.executionProfile ?? "default";
|
|
1564
|
+
codeEnvRefs[routeKey] = ref;
|
|
1565
|
+
return {
|
|
1566
|
+
codeEnvRef: codeEnvRefs.default ?? codeEnvRefs.stateful ?? ref,
|
|
1567
|
+
codeEnvRefs
|
|
1568
|
+
};
|
|
1569
|
+
}
|
|
1570
|
+
/** Enumerates every deployment-local pointer, including legacy single-pointer records. */
|
|
1571
|
+
function getCodeEnvRefs(refs) {
|
|
1572
|
+
const merged = { ...refs?.codeEnvRefs };
|
|
1573
|
+
const legacyRef = refs?.codeEnvRef;
|
|
1574
|
+
if (legacyRef) merged[legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default"] ??= legacyRef;
|
|
1575
|
+
return Object.entries(merged).flatMap(([routeKey, ref]) => ref ? [[routeKey, ref]] : []);
|
|
1576
|
+
}
|
|
1577
|
+
//#endregion
|
|
1578
|
+
//#region src/resolve-llm-delivery-path.ts
|
|
1579
|
+
/**
|
|
1580
|
+
* The native provider a custom endpoint declares, when it declares one. A custom endpoint
|
|
1581
|
+
* speaks OpenAI's API unless its config names another dialect, and the upload route needs
|
|
1582
|
+
* that answer for the same reason request initialization does: the media encoders emit
|
|
1583
|
+
* OpenAI-format parts, so a custom endpoint running as Anthropic receives none.
|
|
1584
|
+
*/
|
|
1585
|
+
function getCustomEndpointProvider(customEndpoints, endpoint) {
|
|
1586
|
+
if (!customEndpoints || !endpoint) return;
|
|
1587
|
+
const normalized = require_data_service.normalizeEndpointName(endpoint);
|
|
1588
|
+
return customEndpoints.find((config) => require_data_service.normalizeEndpointName(config.name ?? "") === normalized)?.provider;
|
|
1589
|
+
}
|
|
1590
|
+
/** A custom endpoint emits OpenAI-format media parts only for the types the admin listed
|
|
1591
|
+
* in its `supportedMimeTypes`; the inherited default list is not an opt-in. A name that
|
|
1592
|
+
* is not a known provider is a custom endpoint. Mirrors `isConfiguredProviderMediaType`
|
|
1593
|
+
* on the encoder side, so the route and the encoder agree on which uploads the provider
|
|
1594
|
+
* actually receives; the built-in endpoints are left out because the client offers no
|
|
1595
|
+
* media for them. */
|
|
1596
|
+
const isConfiguredMediaEndpoint = (mimeType, endpoint, supportedMimeTypes) => {
|
|
1597
|
+
if (!require_data_service.isExplicitMimeConfig(supportedMimeTypes) || require_data_service.isKnownProviderIdentifier(endpoint)) return false;
|
|
1598
|
+
return require_data_service.fileConfig.checkType(mimeType, supportedMimeTypes);
|
|
1599
|
+
};
|
|
1600
|
+
/** Audio and video reach the model only through the media encoders, which support a
|
|
1601
|
+
* narrower provider set than documents. Images use the broadly supported vision
|
|
1602
|
+
* path and are never gated here. */
|
|
1603
|
+
const isProviderCapable = (mimeType, endpoint, useResponsesApi, supportedMimeTypes) => {
|
|
1604
|
+
if (mimeType.startsWith("audio/") || mimeType.startsWith("video/")) return require_data_service.isMediaSupportedProvider(endpoint) || isConfiguredMediaEndpoint(mimeType, endpoint, supportedMimeTypes);
|
|
1605
|
+
if (mimeType === "application/pdf") return useResponsesApi === true || require_data_service.isDocumentSupportedProvider(endpoint);
|
|
1606
|
+
return true;
|
|
1607
|
+
};
|
|
1608
|
+
const SYSTEM_LLM_DELIVERY_DEFAULTS = {
|
|
1609
|
+
fallback: "text",
|
|
1610
|
+
overrides: {
|
|
1611
|
+
"image/*": "provider",
|
|
1612
|
+
"video/*": "provider",
|
|
1613
|
+
"audio/*": "provider",
|
|
1614
|
+
"application/pdf": "provider"
|
|
1615
|
+
}
|
|
1616
|
+
};
|
|
1617
|
+
/**
|
|
1618
|
+
* Types some step in the upload pipeline can turn into text: natively readable text,
|
|
1619
|
+
* documents a parser or OCR handles, images through OCR, and audio through transcription.
|
|
1620
|
+
*
|
|
1621
|
+
* Everything absent from this list, notably archives, tarballs, columnar data files and
|
|
1622
|
+
* video, has no such step, and the default text matcher accepts any well-formed type, so
|
|
1623
|
+
* routing them to text ends in their bytes being decoded as UTF-8.
|
|
1624
|
+
*/
|
|
1625
|
+
const TEXT_RECOVERABLE_MIME_TYPES = [
|
|
1626
|
+
/^text\//,
|
|
1627
|
+
/^image\//,
|
|
1628
|
+
/^audio\//,
|
|
1629
|
+
/^application\/(json|javascript|xml|sql|yaml|x-yaml|csv|typescript|x-sh|vnd\.coffeescript)$/,
|
|
1630
|
+
/^application\/pdf$/,
|
|
1631
|
+
/^application\/vnd\.openxmlformats-officedocument\.(wordprocessingml\.document|spreadsheetml\.sheet)$/,
|
|
1632
|
+
/^application\/vnd\.oasis\.opendocument\.(text|spreadsheet)$/,
|
|
1633
|
+
/^application\/(vnd\.ms-excel|x-msexcel|msexcel|x-ms-excel|x-excel|x-dos_ms_excel|xls|x-xls)$/,
|
|
1634
|
+
/^message\/rfc822$/
|
|
1635
|
+
];
|
|
1636
|
+
/**
|
|
1637
|
+
* Types whose bytes are text already, so reading them directly is meaningful. Everything
|
|
1638
|
+
* else needs a real extractor: decoding it as UTF-8 produces mojibake rather than content.
|
|
1639
|
+
*/
|
|
1640
|
+
/** Application types whose payload is text. Mirrors the set the content-protection code
|
|
1641
|
+
* treats as textual, plus the source and data formats this pipeline also accepts. */
|
|
1642
|
+
const TEXTUAL_APPLICATION_MIME_TYPES = new Set([
|
|
1643
|
+
"application/json",
|
|
1644
|
+
"application/javascript",
|
|
1645
|
+
"application/sql",
|
|
1646
|
+
"application/xml",
|
|
1647
|
+
"application/x-yaml",
|
|
1648
|
+
"application/yaml",
|
|
1649
|
+
"application/csv",
|
|
1650
|
+
"application/typescript",
|
|
1651
|
+
"application/x-sh",
|
|
1652
|
+
"application/vnd.coffeescript"
|
|
1653
|
+
]);
|
|
1654
|
+
function isNativelyReadableText(mimeType) {
|
|
1655
|
+
const normalized = mimeType.split(";", 1)[0].trim().toLowerCase();
|
|
1656
|
+
return normalized.startsWith("text/") || TEXTUAL_APPLICATION_MIME_TYPES.has(normalized) || normalized === "message/rfc822";
|
|
1657
|
+
}
|
|
1658
|
+
function hasTextExtractionPath(mimeType) {
|
|
1659
|
+
return TEXT_RECOVERABLE_MIME_TYPES.some((pattern) => pattern.test(mimeType));
|
|
1660
|
+
}
|
|
1661
|
+
/**
|
|
1662
|
+
* Resolves the default file path destination for a given mime type.
|
|
1663
|
+
* Resolution chain: endpoint overrides -> endpoint fallback -> global overrides -> global fallback -> system defaults.
|
|
1664
|
+
*/
|
|
1665
|
+
function resolveDefaultLLMDeliveryPath(mimeType, endpointConfig, globalConfig, endpoint, useResponsesApi, sttConfigured, supportedMimeTypes) {
|
|
1666
|
+
const wildcard = mimeType.split("/")[0] + "/*";
|
|
1667
|
+
if (endpointConfig?.overrides) {
|
|
1668
|
+
if (endpointConfig.overrides[mimeType]) return endpointConfig.overrides[mimeType];
|
|
1669
|
+
if (endpointConfig.overrides[wildcard]) return endpointConfig.overrides[wildcard];
|
|
1670
|
+
}
|
|
1671
|
+
if (endpointConfig?.fallback) return endpointConfig.fallback;
|
|
1672
|
+
if (globalConfig?.overrides) {
|
|
1673
|
+
if (globalConfig.overrides[mimeType]) return globalConfig.overrides[mimeType];
|
|
1674
|
+
if (globalConfig.overrides[wildcard]) return globalConfig.overrides[wildcard];
|
|
1675
|
+
}
|
|
1676
|
+
if (globalConfig?.fallback) return globalConfig.fallback;
|
|
1677
|
+
const systemDefault = SYSTEM_LLM_DELIVERY_DEFAULTS.overrides[mimeType] ?? SYSTEM_LLM_DELIVERY_DEFAULTS.overrides[wildcard] ?? SYSTEM_LLM_DELIVERY_DEFAULTS.fallback;
|
|
1678
|
+
/** Only the system default is capability-gated: an explicit config above is the
|
|
1679
|
+
* admin's decision. A known endpoint that cannot encode documents or media would
|
|
1680
|
+
* otherwise accept the upload and hand the model nothing at all. */
|
|
1681
|
+
/** `agents` is a container, not a provider: it is what an upload reports when the
|
|
1682
|
+
* agent's real provider could not be resolved, as for ephemeral agents. A custom
|
|
1683
|
+
* endpoint name is likewise unresolvable here, since its real provider is chosen
|
|
1684
|
+
* at request time and is usually OpenAI- or Anthropic-compatible. Judging
|
|
1685
|
+
* capability from either would downgrade media the actual provider can deliver,
|
|
1686
|
+
* so an unresolved provider keeps the system default. */
|
|
1687
|
+
const namedEndpoint = endpoint != null && endpoint !== "agents";
|
|
1688
|
+
const providerKnown = namedEndpoint && require_data_service.isKnownProviderIdentifier(endpoint);
|
|
1689
|
+
const isMedia = mimeType.startsWith("audio/") || mimeType.startsWith("video/");
|
|
1690
|
+
const canRecoverText = (type) => type.startsWith("audio/") && sttConfigured === false ? false : hasTextExtractionPath(type);
|
|
1691
|
+
if (systemDefault === "provider" && (isMedia ? namedEndpoint : providerKnown) && !isProviderCapable(mimeType, endpoint, useResponsesApi, supportedMimeTypes)) return canRecoverText(mimeType) ? "text" : "none";
|
|
1692
|
+
/** Bedrock's Converse document path natively accepts more than PDF, so on that
|
|
1693
|
+
* endpoint its document types belong on the provider path rather than being
|
|
1694
|
+
* extracted, which would drop non-text content and layout. */
|
|
1695
|
+
if (systemDefault !== "provider" && endpoint === "bedrock" && require_data_service.isBedrockDocumentType(mimeType)) return "provider";
|
|
1696
|
+
if (systemDefault === "text" && !canRecoverText(mimeType)) return "none";
|
|
1697
|
+
return systemDefault;
|
|
1698
|
+
}
|
|
1699
|
+
/**
|
|
1700
|
+
* Delivery path for an upload that named no tool resource. The legacy chooser makes the
|
|
1701
|
+
* destination explicit, so nothing is inferred there.
|
|
1702
|
+
*/
|
|
1703
|
+
function resolveDefaultUploadLLMDeliveryPath({ mimeType, endpointConfig, fileConfig, endpoint, endpointProvider, useResponsesApi, sttConfigured }) {
|
|
1704
|
+
if (endpointConfig?.legacyFileUploadUX === true) return "provider";
|
|
1705
|
+
const runsAsOpenAI = endpointProvider == null || require_data_service.isOpenAILikeProvider(endpointProvider);
|
|
1706
|
+
return resolveDefaultLLMDeliveryPath(mimeType, endpointConfig?.defaultLLMDeliveryPath, fileConfig?.defaultLLMDeliveryPath, endpoint, useResponsesApi, sttConfigured, runsAsOpenAI ? endpointConfig?.supportedMimeTypes : void 0);
|
|
1707
|
+
}
|
|
1708
|
+
/** Delivery path for an upload, honoring an explicitly chosen tool resource. */
|
|
1709
|
+
function resolveUploadLLMDeliveryPath({ toolResource, mimeType, endpointConfig, fileConfig, endpoint, useResponsesApi, endpointProvider, sttConfigured }) {
|
|
1710
|
+
if (toolResource === "context" || toolResource === "ocr") return "text";
|
|
1711
|
+
if (toolResource === "file_search" || toolResource === "execute_code") return "none";
|
|
1712
|
+
return resolveDefaultUploadLLMDeliveryPath({
|
|
1713
|
+
mimeType,
|
|
1714
|
+
endpointConfig,
|
|
1715
|
+
fileConfig,
|
|
1716
|
+
endpoint,
|
|
1717
|
+
endpointProvider,
|
|
1718
|
+
useResponsesApi,
|
|
1719
|
+
sttConfigured
|
|
1720
|
+
});
|
|
1721
|
+
}
|
|
1722
|
+
/**
|
|
1723
|
+
* Whether a file tool can do anything with this type. `file_search` indexes extracted
|
|
1724
|
+
* text, so it needs a type some step can turn into text and cannot use media, whose
|
|
1725
|
+
* extraction paths are OCR and speech rather than the vector store. Code execution is
|
|
1726
|
+
* judged by the list the client offers it from. Shared by upload-time selection and
|
|
1727
|
+
* deferred provisioning so the two cannot queue a file the other would refuse.
|
|
1728
|
+
*/
|
|
1729
|
+
function canToolResourceConsume(toolResource, mimeType) {
|
|
1730
|
+
if (toolResource === "file_search") return !mimeType.startsWith("image") && !mimeType.startsWith("audio") && !mimeType.startsWith("video") && (hasTextExtractionPath(mimeType) || matchesMimeList(mimeType, require_data_service.retrievalMimeTypes));
|
|
1731
|
+
if (toolResource === "execute_code") return matchesMimeList(mimeType, require_data_service.codeInterpreterMimeTypes);
|
|
1732
|
+
return true;
|
|
1733
|
+
}
|
|
1734
|
+
const matchesMimeList = (mimeType, patterns) => patterns.some((pattern) => pattern.test(mimeType));
|
|
1735
|
+
/**
|
|
1736
|
+
* Whether the record shows this file reached a tool's own store: vectors for file search, a
|
|
1737
|
+
* sandbox pointer for code execution. Nothing else writes either, so their presence is proof
|
|
1738
|
+
* the file was provisioned and their absence proof it was not. The same evidence deferred
|
|
1739
|
+
* provisioning reads before queueing a file, so a turn cannot withhold content for a tool that
|
|
1740
|
+
* provisioning has yet to serve.
|
|
1741
|
+
*/
|
|
1742
|
+
function hasToolResourceProvisioning(file, toolResource) {
|
|
1743
|
+
if (toolResource === "execute_code") return getCodeEnvRefs(file.metadata).length > 0;
|
|
1744
|
+
return file.embedded === true || (file.metadata?.embeddedEntities?.length ?? 0) > 0;
|
|
1745
|
+
}
|
|
1746
|
+
/**
|
|
1747
|
+
* Whether a tool this turn runs can read a file of this type.
|
|
1748
|
+
*
|
|
1749
|
+
* Passing the record asks the stricter question a delivery decision needs where a tool serves
|
|
1750
|
+
* only what it already holds. File search reads the vector store, and an upload that named no
|
|
1751
|
+
* destination is filed under no tool at all, so an enabled search tool is a reader only once
|
|
1752
|
+
* the record shows the store holds the file. Run Code needs no copy in advance: its first call
|
|
1753
|
+
* uploads every attachment it can read to the sandbox, so enabling it is enough. Requiring a
|
|
1754
|
+
* copy there would hand the file's text to the prompt on every turn before the first code run,
|
|
1755
|
+
* and a turn that refuses that text never runs code, so the file would never become held.
|
|
1756
|
+
*/
|
|
1757
|
+
function hasTurnFileConsumer(mimeType, consumers, file) {
|
|
1758
|
+
const searchHolds = file == null || hasToolResourceProvisioning(file, "file_search");
|
|
1759
|
+
return consumers.executeCode && canToolResourceConsume("execute_code", mimeType) || consumers.fileSearch && canToolResourceConsume("file_search", mimeType) && searchHolds;
|
|
1760
|
+
}
|
|
1761
|
+
const isLLMDeliveryPath = (value) => value === "provider" || value === "text" || value === "none";
|
|
1762
|
+
/** Whether a record's stored route was inferred at upload, so each turn resolves it again. */
|
|
1763
|
+
function hasInferredLLMDeliveryPath(file) {
|
|
1764
|
+
return file.llmDeliveryPath != null && file.metadata?.destinationChosen !== true;
|
|
1765
|
+
}
|
|
1766
|
+
/**
|
|
1767
|
+
* Delivery path for one attachment on one agent's turn.
|
|
1768
|
+
*
|
|
1769
|
+
* A record predating routing and a destination the user chose keep what they stored. An
|
|
1770
|
+
* inferred route re-resolves against the endpoint handling the turn. A `none` route leaves
|
|
1771
|
+
* the file for a tool; where the endpoint enables `textFallbackWithoutTools` and no tool this
|
|
1772
|
+
* turn runs can read the file, the text extracted at upload is delivered rather than the file
|
|
1773
|
+
* reaching nothing. Consumers left undefined are unknown and not judged, as in
|
|
1774
|
+
* {@link resolveUploadDestination}.
|
|
1775
|
+
*
|
|
1776
|
+
* For file search, reading is asked of the record rather than of the tool set, because the two
|
|
1777
|
+
* disagree for the upload that needs the fallback most: one that named no destination is filed
|
|
1778
|
+
* under no tool, so enabling file search would otherwise withhold the text for a vector store
|
|
1779
|
+
* that never received the file. Run Code is judged by the tool set: see
|
|
1780
|
+
* {@link hasTurnFileConsumer}.
|
|
1781
|
+
*/
|
|
1782
|
+
function resolveTurnLLMDeliveryPath(routing, file, consumers) {
|
|
1783
|
+
if (routing == null || !hasInferredLLMDeliveryPath(file)) return isLLMDeliveryPath(file.llmDeliveryPath) ? file.llmDeliveryPath : void 0;
|
|
1784
|
+
const { endpointConfig } = routing;
|
|
1785
|
+
const mimeType = file.metadata?.routingMimeType ?? file.type ?? "";
|
|
1786
|
+
const path = resolveUploadLLMDeliveryPath({
|
|
1787
|
+
mimeType,
|
|
1788
|
+
...routing
|
|
1789
|
+
});
|
|
1790
|
+
const hasFallbackText = typeof file.text === "string" && file.text.length > 0;
|
|
1791
|
+
if (path === "none" && endpointConfig?.textFallbackWithoutTools === true && consumers != null && hasFallbackText && !hasTurnFileConsumer(mimeType, consumers, file)) return "text";
|
|
1792
|
+
return path;
|
|
1793
|
+
}
|
|
1794
|
+
/**
|
|
1795
|
+
* Where a unified upload will end up, and whether it can be accepted at all.
|
|
1796
|
+
*
|
|
1797
|
+
* An upload has to be readable by something: the model, an extraction step, or a file
|
|
1798
|
+
* tool. A permanent one has to land on an agent resource too, or storing it succeeds
|
|
1799
|
+
* while leaving the agent no reference to it. Both outcomes are decided here rather than
|
|
1800
|
+
* discovered later, so a request that would change nothing is refused with a reason.
|
|
1801
|
+
*
|
|
1802
|
+
* `agentTools` is undefined when no agent record backs the upload, as for an ephemeral
|
|
1803
|
+
* agent that exists only for the request. An unknown tool set is not judged.
|
|
1804
|
+
*/
|
|
1805
|
+
function resolveUploadDestination(params) {
|
|
1806
|
+
const { toolResource, deliveryPath, mimeType, agentTools, hasAgent, isMessageAttachment, allowUnknownMessageConsumer = false, contextEnabled } = params;
|
|
1807
|
+
const refusesContext = (resource) => resource === "context" && hasAgent && !isMessageAttachment && contextEnabled === false;
|
|
1808
|
+
if (toolResource) {
|
|
1809
|
+
const resolved = toolResource === "ocr" ? "context" : toolResource;
|
|
1810
|
+
return refusesContext(resolved) ? { rejection: "context-disabled" } : { toolResource: resolved };
|
|
1811
|
+
}
|
|
1812
|
+
if (deliveryPath === "text") return refusesContext("context") ? { rejection: "context-disabled" } : { toolResource: "context" };
|
|
1813
|
+
const consumingTool = agentTools?.find((tool) => (tool === "execute_code" || tool === "file_search") && canToolResourceConsume(tool, mimeType));
|
|
1814
|
+
if (deliveryPath === "none" && consumingTool) return { toolResource: consumingTool };
|
|
1815
|
+
if (hasAgent && !isMessageAttachment) return { rejection: "no-agent-resource" };
|
|
1816
|
+
if (deliveryPath === "none" && (!isMessageAttachment || !allowUnknownMessageConsumer)) return { rejection: "no-consumer" };
|
|
1817
|
+
return {};
|
|
1818
|
+
}
|
|
1819
|
+
//#endregion
|
|
1378
1820
|
//#region src/messages.ts
|
|
1379
1821
|
/** A generated reasoning title describes the text as it existed at generation time.
|
|
1380
1822
|
* Any manual edit or merge into a different reasoning step invalidates the entire
|
|
@@ -1463,6 +1905,73 @@ function buildTree({ messages, fileMap }) {
|
|
|
1463
1905
|
if (!cached) treeCache.set(messages, entry);
|
|
1464
1906
|
return tree;
|
|
1465
1907
|
}
|
|
1908
|
+
/**
|
|
1909
|
+
* Memoizes a messages array's id index. Every row that needs to look another
|
|
1910
|
+
* message up (the hover controls resolving the turn a rerun would replay) would
|
|
1911
|
+
* otherwise scan the whole array, which is quadratic in the conversation. A
|
|
1912
|
+
* cache write replaces the array, so the index dies with the array it indexes
|
|
1913
|
+
* and can never answer from stale rows.
|
|
1914
|
+
*/
|
|
1915
|
+
const indexCache = /* @__PURE__ */ new WeakMap();
|
|
1916
|
+
/** The message with this id, resolved through the array's memoized index. */
|
|
1917
|
+
function findMessageById(messages, messageId) {
|
|
1918
|
+
if (messages == null || messageId == null) return;
|
|
1919
|
+
let index = indexCache.get(messages);
|
|
1920
|
+
if (index == null) {
|
|
1921
|
+
index = /* @__PURE__ */ new Map();
|
|
1922
|
+
for (const message of messages) if (message?.messageId != null && !index.has(message.messageId)) index.set(message.messageId, message);
|
|
1923
|
+
indexCache.set(messages, index);
|
|
1924
|
+
}
|
|
1925
|
+
return index.get(messageId);
|
|
1926
|
+
}
|
|
1927
|
+
/**
|
|
1928
|
+
* True when a turn carries the marker the server stamps on a manual compaction:
|
|
1929
|
+
* `markCompactionOutcome` sets `initiatedBy: 'user'` on whichever part carries
|
|
1930
|
+
* the outcome — the summary a Compact action produced, or the error part a run
|
|
1931
|
+
* that produced none recorded instead — and nothing else writes it, so an
|
|
1932
|
+
* automatic summary detour is not one. This is the compaction's own identity,
|
|
1933
|
+
* independent of where it hangs: Compact runs on whatever leaf the branch ends
|
|
1934
|
+
* with, so its response can parent onto a user message as easily as onto the
|
|
1935
|
+
* answer it summarized. Redoing one is the context indicator's Compact action,
|
|
1936
|
+
* never a rerun of the turn behind it.
|
|
1937
|
+
*
|
|
1938
|
+
* Compactions stored before the marker existed carry none, so callers keep
|
|
1939
|
+
* their own ancestry test as the fallback.
|
|
1940
|
+
*/
|
|
1941
|
+
function isUserInitiatedCompaction(message) {
|
|
1942
|
+
const content = message?.content;
|
|
1943
|
+
if (!Array.isArray(content)) return false;
|
|
1944
|
+
return content.some((part) => (part?.type === "summary" || part?.type === "error") && part.initiatedBy === "user");
|
|
1945
|
+
}
|
|
1946
|
+
/**
|
|
1947
|
+
* True when a message is a finished manual compaction: every content part is a
|
|
1948
|
+
* summary and at least one of them carries text. A part that is still streaming
|
|
1949
|
+
* or that failed contributes no text of its own, so an interrupted compaction
|
|
1950
|
+
* can be retried.
|
|
1951
|
+
*/
|
|
1952
|
+
function isCompactedLeaf(message) {
|
|
1953
|
+
const content = message?.content;
|
|
1954
|
+
if (!Array.isArray(content) || content.length === 0) return false;
|
|
1955
|
+
let usable = false;
|
|
1956
|
+
for (const part of content) {
|
|
1957
|
+
if (part?.type !== "summary") return false;
|
|
1958
|
+
/** No `boundary` means the round never completed: only the final summary
|
|
1959
|
+
* block carries one, so a part holding streamed deltas alone lacks it. */
|
|
1960
|
+
if (part.summarizing === true || part.failed === true || part.boundary == null) continue;
|
|
1961
|
+
const hasText = (part.content ?? []).some((block) => typeof block?.text === "string" && block.text.trim().length > 0);
|
|
1962
|
+
usable = usable || hasText;
|
|
1963
|
+
}
|
|
1964
|
+
return usable;
|
|
1965
|
+
}
|
|
1966
|
+
//#endregion
|
|
1967
|
+
//#region src/errors.ts
|
|
1968
|
+
const TOOL_CALL_ERROR_PREFIX = /^Error:\s*(?:\[[^\]]*\]\s*)*tool call failed:\s*/i;
|
|
1969
|
+
function hasToolCallErrorPrefix(text) {
|
|
1970
|
+
return TOOL_CALL_ERROR_PREFIX.test(text);
|
|
1971
|
+
}
|
|
1972
|
+
function stripToolCallErrorPrefix(text) {
|
|
1973
|
+
return text.replace(TOOL_CALL_ERROR_PREFIX, "");
|
|
1974
|
+
}
|
|
1466
1975
|
//#endregion
|
|
1467
1976
|
//#region src/runSteps.ts
|
|
1468
1977
|
/**
|
|
@@ -5095,6 +5604,28 @@ let InvocationMode = /* @__PURE__ */ function(InvocationMode) {
|
|
|
5095
5604
|
return InvocationMode;
|
|
5096
5605
|
}({});
|
|
5097
5606
|
//#endregion
|
|
5607
|
+
//#region src/types/content.ts
|
|
5608
|
+
let AnnotationTypes = /* @__PURE__ */ function(AnnotationTypes) {
|
|
5609
|
+
AnnotationTypes["FILE_CITATION"] = "file_citation";
|
|
5610
|
+
AnnotationTypes["FILE_PATH"] = "file_path";
|
|
5611
|
+
return AnnotationTypes;
|
|
5612
|
+
}({});
|
|
5613
|
+
let StepStatus = /* @__PURE__ */ function(StepStatus) {
|
|
5614
|
+
StepStatus["IN_PROGRESS"] = "in_progress";
|
|
5615
|
+
StepStatus["CANCELLED"] = "cancelled";
|
|
5616
|
+
StepStatus["FAILED"] = "failed";
|
|
5617
|
+
StepStatus["COMPLETED"] = "completed";
|
|
5618
|
+
StepStatus["EXPIRED"] = "expired";
|
|
5619
|
+
return StepStatus;
|
|
5620
|
+
}({});
|
|
5621
|
+
let MessageContentTypes = /* @__PURE__ */ function(MessageContentTypes) {
|
|
5622
|
+
MessageContentTypes["TEXT"] = "text";
|
|
5623
|
+
MessageContentTypes["IMAGE_FILE"] = "image_file";
|
|
5624
|
+
return MessageContentTypes;
|
|
5625
|
+
}({});
|
|
5626
|
+
const hostImageIdSuffix = "_host_copy";
|
|
5627
|
+
const hostImageNamePrefix = "host_copy_";
|
|
5628
|
+
//#endregion
|
|
5098
5629
|
//#region src/types/schedules.ts
|
|
5099
5630
|
/** Cadences the dialog builds from structured pickers (hour, minute, weekday). */
|
|
5100
5631
|
const scheduleStructuredFrequencies = [
|
|
@@ -5161,6 +5692,35 @@ const updateSchedulePayloadSchema = createSchedulePayloadSchema.omit({ clientReq
|
|
|
5161
5692
|
* server-side fresh-read fence alone cannot detect this).
|
|
5162
5693
|
*/
|
|
5163
5694
|
expectedConfigRevision: zod.z.number().int().min(0).optional() });
|
|
5695
|
+
/** Only structured schedule preflight failures may request immediate suspension. */
|
|
5696
|
+
function getScheduleMCPDisabledReason(outcomes) {
|
|
5697
|
+
const statuses = new Set(outcomes?.map((outcome) => outcome.status));
|
|
5698
|
+
if (statuses.has("mcp_permission_denied")) return "mcp_permission_denied";
|
|
5699
|
+
if (statuses.has("mcp_configuration_missing")) return "mcp_configuration_missing";
|
|
5700
|
+
if (statuses.has("mcp_reauth_required")) return "mcp_reauth_required";
|
|
5701
|
+
}
|
|
5702
|
+
const scheduleMCPOutcomeSchema = zod.z.object({
|
|
5703
|
+
server: zod.z.string(),
|
|
5704
|
+
/** Agent whose selected tool requires this server. Used to open the correct
|
|
5705
|
+
* recovery chat when the requirement belongs to a handoff or subagent. */
|
|
5706
|
+
agentId: zod.z.string().optional(),
|
|
5707
|
+
status: zod.z.enum([
|
|
5708
|
+
"ready",
|
|
5709
|
+
"mcp_reauth_required",
|
|
5710
|
+
"mcp_configuration_missing",
|
|
5711
|
+
"mcp_permission_denied",
|
|
5712
|
+
"mcp_unavailable"
|
|
5713
|
+
])
|
|
5714
|
+
});
|
|
5715
|
+
function readScheduleMCPOutcomes(error) {
|
|
5716
|
+
if (!error || !/^mcp_(reauth_required|configuration_missing|permission_denied|unavailable): \[/.test(error)) return [];
|
|
5717
|
+
try {
|
|
5718
|
+
const result = scheduleMCPOutcomeSchema.array().safeParse(JSON.parse(error.slice(error.indexOf(": ") + 2)));
|
|
5719
|
+
return result.success ? result.data : [];
|
|
5720
|
+
} catch {
|
|
5721
|
+
return [];
|
|
5722
|
+
}
|
|
5723
|
+
}
|
|
5164
5724
|
//#endregion
|
|
5165
5725
|
//#region src/cadence.ts
|
|
5166
5726
|
/** Mirrors the server default when a weekly cadence omits `daysOfWeek`. */
|
|
@@ -5433,6 +5993,12 @@ let DATE_RANGE = /* @__PURE__ */ function(DATE_RANGE) {
|
|
|
5433
5993
|
const INSIGHTS_MAX_RANGE_DAYS = 30;
|
|
5434
5994
|
const INSIGHTS_SEARCH_MIN_LENGTH = 3;
|
|
5435
5995
|
const INSIGHTS_SEARCH_MAX_LENGTH = 200;
|
|
5996
|
+
const INSIGHTS_AGENT_ID_MAX_LENGTH = 256;
|
|
5997
|
+
//#endregion
|
|
5998
|
+
//#region src/types/traces.ts
|
|
5999
|
+
const TRACE_CURSOR_MAX_LENGTH = 4096;
|
|
6000
|
+
const TRACE_SOURCE_ID_MAX_LENGTH = 128;
|
|
6001
|
+
const TRACE_RECORD_ID_MAX_LENGTH = 256;
|
|
5436
6002
|
//#endregion
|
|
5437
6003
|
//#region src/types/queuedTurns.ts
|
|
5438
6004
|
const agentQueuedTurnStatuses = [
|
|
@@ -5450,7 +6016,12 @@ const agentQueuedTurnFileRefSchema = zod.z.object({
|
|
|
5450
6016
|
filename: zod.z.string().optional(),
|
|
5451
6017
|
height: zod.z.number().optional(),
|
|
5452
6018
|
width: zod.z.number().optional(),
|
|
5453
|
-
bytes: zod.z.number().nonnegative().optional()
|
|
6019
|
+
bytes: zod.z.number().nonnegative().optional(),
|
|
6020
|
+
llmDeliveryPath: zod.z.enum([
|
|
6021
|
+
"provider",
|
|
6022
|
+
"text",
|
|
6023
|
+
"none"
|
|
6024
|
+
]).optional()
|
|
5454
6025
|
});
|
|
5455
6026
|
const enqueueAgentQueuedTurnSchema = zod.z.object({
|
|
5456
6027
|
conversationId: zod.z.string().trim().min(1),
|
|
@@ -5519,6 +6090,7 @@ let ProviderId = /* @__PURE__ */ function(ProviderId) {
|
|
|
5519
6090
|
ProviderId["groq"] = "groq";
|
|
5520
6091
|
ProviderId["helicone"] = "helicone";
|
|
5521
6092
|
ProviderId["huggingface"] = "huggingface";
|
|
6093
|
+
ProviderId["lemonade"] = "lemonade";
|
|
5522
6094
|
ProviderId["mistral"] = "mistral";
|
|
5523
6095
|
ProviderId["mlx"] = "mlx";
|
|
5524
6096
|
ProviderId["ollama"] = "ollama";
|
|
@@ -5548,6 +6120,7 @@ const knownEndpointToProvider = {
|
|
|
5548
6120
|
["groq"]: "groq",
|
|
5549
6121
|
["helicone"]: "helicone",
|
|
5550
6122
|
["huggingface"]: "huggingface",
|
|
6123
|
+
["lemonade"]: "lemonade",
|
|
5551
6124
|
["mistral"]: "mistral",
|
|
5552
6125
|
["mlx"]: "mlx",
|
|
5553
6126
|
["ollama"]: "ollama",
|
|
@@ -5573,6 +6146,8 @@ const providerAliases = {
|
|
|
5573
6146
|
grok: "xai",
|
|
5574
6147
|
kimi: "moonshot",
|
|
5575
6148
|
moonshotai: "moonshot",
|
|
6149
|
+
amdlemonade: "lemonade",
|
|
6150
|
+
lemonadeserver: "lemonade",
|
|
5576
6151
|
mistralai: "mistral",
|
|
5577
6152
|
togetherai: "together"
|
|
5578
6153
|
};
|
|
@@ -5594,6 +6169,77 @@ function resolveModelCatalogKey(provider, catalogs) {
|
|
|
5594
6169
|
return catalogs?.[key] != null ? key : modelCatalogAliases[key] ?? key;
|
|
5595
6170
|
}
|
|
5596
6171
|
//#endregion
|
|
6172
|
+
//#region src/svg.ts
|
|
6173
|
+
/**
|
|
6174
|
+
* DOMPurify policy for user-provided SVG icons, shared by the browser uploader and
|
|
6175
|
+
* the server trust boundary so a preview and the persisted icon cannot disagree.
|
|
6176
|
+
* `use` is re-added for self-contained `<defs>` references (targets restricted by
|
|
6177
|
+
* `restrictSvgReferences`); every SMIL element is forbidden so a stored icon
|
|
6178
|
+
* cannot animate forever wherever it renders.
|
|
6179
|
+
*/
|
|
6180
|
+
const SVG_SANITIZE_CONFIG = {
|
|
6181
|
+
USE_PROFILES: {
|
|
6182
|
+
svg: true,
|
|
6183
|
+
svgFilters: true
|
|
6184
|
+
},
|
|
6185
|
+
ADD_TAGS: ["use"],
|
|
6186
|
+
ADD_ATTR: ["fr"],
|
|
6187
|
+
FORBID_TAGS: [
|
|
6188
|
+
"script",
|
|
6189
|
+
"foreignObject",
|
|
6190
|
+
"style",
|
|
6191
|
+
"a",
|
|
6192
|
+
"image",
|
|
6193
|
+
"animate",
|
|
6194
|
+
"animateColor",
|
|
6195
|
+
"animateMotion",
|
|
6196
|
+
"animateTransform",
|
|
6197
|
+
"mpath",
|
|
6198
|
+
"set"
|
|
6199
|
+
],
|
|
6200
|
+
FORBID_ATTR: ["style"]
|
|
6201
|
+
};
|
|
6202
|
+
const URL_TOKEN_PREFIX = /url\(\s*['"]?\s*/gi;
|
|
6203
|
+
/**
|
|
6204
|
+
* True when every `url()` token targets a fragment. Backslashes reject the value
|
|
6205
|
+
* outright: CSS unescapes idents before tokenizing, so `u\72l(...)` is a `url()`.
|
|
6206
|
+
*/
|
|
6207
|
+
function referencesOnlyFragments(value) {
|
|
6208
|
+
if (value.includes("\\")) return false;
|
|
6209
|
+
if (!value.toLowerCase().includes("url(")) return true;
|
|
6210
|
+
URL_TOKEN_PREFIX.lastIndex = 0;
|
|
6211
|
+
while (URL_TOKEN_PREFIX.exec(value) !== null) if (value[URL_TOKEN_PREFIX.lastIndex] !== "#") return false;
|
|
6212
|
+
return true;
|
|
6213
|
+
}
|
|
6214
|
+
/** DOMPurify hook that drops every attribute referencing outside the document. */
|
|
6215
|
+
function restrictSvgReferences(node) {
|
|
6216
|
+
const names = [];
|
|
6217
|
+
for (let i = 0; i < node.attributes.length; i += 1) names.push(node.attributes[i].name);
|
|
6218
|
+
for (const name of names) {
|
|
6219
|
+
const value = node.getAttribute(name)?.trim();
|
|
6220
|
+
if (value == null) continue;
|
|
6221
|
+
if (name === "href" || name === "xlink:href") {
|
|
6222
|
+
if (!value.startsWith("#")) node.removeAttribute(name);
|
|
6223
|
+
continue;
|
|
6224
|
+
}
|
|
6225
|
+
if (!referencesOnlyFragments(value)) node.removeAttribute(name);
|
|
6226
|
+
}
|
|
6227
|
+
}
|
|
6228
|
+
/** SVG names the HTML parser lowercases and its adjustment table does not restore. */
|
|
6229
|
+
const UNADJUSTED_SVG_TAGS = [[/(<\/?)fedropshadow\b/gi, "$1feDropShadow"]];
|
|
6230
|
+
const SVG_ROOT_TAG = /<svg(\s[^>]*)?>/i;
|
|
6231
|
+
/**
|
|
6232
|
+
* Makes HTML-mode sanitizer output valid as a standalone `image/svg+xml`
|
|
6233
|
+
* document: restores camelCase element names the HTML parser lowercased and
|
|
6234
|
+
* declares the SVG namespace on the root, without which an XML parser puts the
|
|
6235
|
+
* root in no namespace and the icon renders blank.
|
|
6236
|
+
*/
|
|
6237
|
+
function finalizeSvgMarkup(markup) {
|
|
6238
|
+
let restored = markup;
|
|
6239
|
+
for (const [pattern, canonical] of UNADJUSTED_SVG_TAGS) restored = restored.replace(pattern, canonical);
|
|
6240
|
+
return restored.replace(SVG_ROOT_TAG, (tag, attributes) => attributes != null && /\sxmlns\s*=/i.test(attributes) ? tag : `<svg xmlns="http://www.w3.org/2000/svg"${attributes ?? ""}>`);
|
|
6241
|
+
}
|
|
6242
|
+
//#endregion
|
|
5597
6243
|
//#region src/actions.ts
|
|
5598
6244
|
function sha1(input) {
|
|
5599
6245
|
return crypto.default.createHash("sha1").update(input).digest("hex");
|
|
@@ -6077,7 +6723,7 @@ function getUserTimezone() {
|
|
|
6077
6723
|
}
|
|
6078
6724
|
}
|
|
6079
6725
|
function createPayload(submission) {
|
|
6080
|
-
const { isEdited, addedConvo, userMessage, isContinued, isTemporary, isRegenerate, conversation, editedContent, ephemeralAgent, endpointOption, manualSkills, clientRequestId, recoverySteerId, expectedPredecessorCreatedAt } = submission;
|
|
6726
|
+
const { isEdited, addedConvo, userMessage, isContinued, isTemporary, isRegenerate, compact, conversation, editedContent, ephemeralAgent, endpointOption, manualSkills, codeApprovalMode, codeEnvironmentMode, codeWorkspaces, clientRequestId, recoverySteerId, expectedPredecessorCreatedAt } = submission;
|
|
6081
6727
|
const { conversationId } = require_data_service.tConvoUpdateSchema.parse(conversation);
|
|
6082
6728
|
const { endpoint: _e, endpointType } = endpointOption;
|
|
6083
6729
|
const endpoint = _e;
|
|
@@ -6091,12 +6737,18 @@ function createPayload(submission) {
|
|
|
6091
6737
|
endpoint,
|
|
6092
6738
|
addedConvo,
|
|
6093
6739
|
isTemporary,
|
|
6094
|
-
|
|
6740
|
+
/** A compaction borrows the regenerate shape client-side only: the server
|
|
6741
|
+
* must see it as a compaction, never as a regenerated user turn. */
|
|
6742
|
+
isRegenerate: compact === true ? void 0 : isRegenerate,
|
|
6743
|
+
...compact === true && { compact: true },
|
|
6095
6744
|
editedContent,
|
|
6096
6745
|
conversationId,
|
|
6097
6746
|
isContinued: !!(isEdited && isContinued),
|
|
6098
6747
|
ephemeralAgent: require_data_service.isAssistantsEndpoint(endpoint) ? void 0 : ephemeralAgent,
|
|
6099
6748
|
manualSkills: require_data_service.isAssistantsEndpoint(endpoint) ? void 0 : manualSkills,
|
|
6749
|
+
codeApprovalMode: require_data_service.isAssistantsEndpoint(endpoint) ? void 0 : codeApprovalMode,
|
|
6750
|
+
codeEnvironmentMode: require_data_service.isAssistantsEndpoint(endpoint) ? void 0 : codeEnvironmentMode,
|
|
6751
|
+
codeWorkspaces: require_data_service.isAssistantsEndpoint(endpoint) ? void 0 : codeWorkspaces,
|
|
6100
6752
|
timezone: getUserTimezone(),
|
|
6101
6753
|
clientRequestId,
|
|
6102
6754
|
recoverySteerId,
|
|
@@ -7279,6 +7931,38 @@ const paramSettings = {
|
|
|
7279
7931
|
[`bedrock-zai`]: bedrockZAI,
|
|
7280
7932
|
["google"]: googleConfig
|
|
7281
7933
|
};
|
|
7934
|
+
/**
|
|
7935
|
+
* Maps effective backend param names for OpenAI-compatible/Azure endpoints (as deleted from
|
|
7936
|
+
* `llmConfig` via `dropParams`, e.g. `maxTokens`) to their corresponding UI/conversation keys
|
|
7937
|
+
* (e.g. `max_tokens`). Native providers (anthropic, google, bedrock, ...) already render these
|
|
7938
|
+
* same camelCase names as their UI key (e.g. `topP`), so this alias must only be applied to
|
|
7939
|
+
* OpenAI-compatible parameter sets — see `resolveDropParamsUIKeys`.
|
|
7940
|
+
*/
|
|
7941
|
+
const dropParamsBackendToUIKey = {
|
|
7942
|
+
maxTokens: "max_tokens",
|
|
7943
|
+
topP: "top_p",
|
|
7944
|
+
frequencyPenalty: "frequency_penalty",
|
|
7945
|
+
presencePenalty: "presence_penalty"
|
|
7946
|
+
};
|
|
7947
|
+
/** Endpoint keys whose parameter settings render the OpenAI-compatible (snake_case) UI keys. */
|
|
7948
|
+
const openAILikeParamEndpointKeys = new Set([
|
|
7949
|
+
"openAI",
|
|
7950
|
+
"azureOpenAI",
|
|
7951
|
+
"custom",
|
|
7952
|
+
"openrouter"
|
|
7953
|
+
]);
|
|
7954
|
+
/**
|
|
7955
|
+
* Normalizes an admin-configured `dropParams` list into the UI/conversation keys used to hide
|
|
7956
|
+
* the matching controls in the settings panels. `endpointKey` should be the same key used to
|
|
7957
|
+
* resolve the panel's parameter settings (e.g. `overriddenEndpointKey`); the backend-name alias
|
|
7958
|
+
* is only applied for OpenAI-compatible endpoints, since native providers (anthropic, google,
|
|
7959
|
+
* bedrock, ...) already use these backend names as their UI key.
|
|
7960
|
+
*/
|
|
7961
|
+
function resolveDropParamsUIKeys(dropParams, endpointKey) {
|
|
7962
|
+
if (!dropParams || dropParams.length === 0) return /* @__PURE__ */ new Set();
|
|
7963
|
+
if (!openAILikeParamEndpointKeys.has(endpointKey)) return new Set(dropParams);
|
|
7964
|
+
return new Set(dropParams.map((param) => dropParamsBackendToUIKey[param] ?? param));
|
|
7965
|
+
}
|
|
7282
7966
|
const openAIColumns = {
|
|
7283
7967
|
col1: openAICol1,
|
|
7284
7968
|
col2: openAICol2
|
|
@@ -7347,8 +8031,50 @@ const agentParamSettings = Object.entries(presetSettings).reduce((acc, [key, val
|
|
|
7347
8031
|
* current models (2.5 and 3+) surface their 64K output limit instead of the legacy 8K value.
|
|
7348
8032
|
* Anthropic prompt-cache controls are only surfaced for models that support them.
|
|
7349
8033
|
*/
|
|
7350
|
-
function applyModelAwareDefaults(settings, endpoint, model) {
|
|
8034
|
+
function applyModelAwareDefaults(settings, endpoint, model, responsesApiRouting) {
|
|
7351
8035
|
if (!model) return settings;
|
|
8036
|
+
if (/^grok-4[.-]7(?:$|[-:])/.test(model.split("/").pop() ?? "")) return settings.map((setting) => setting.key === "reasoning_effort" ? {
|
|
8037
|
+
...setting,
|
|
8038
|
+
options: [
|
|
8039
|
+
"",
|
|
8040
|
+
"low",
|
|
8041
|
+
"medium",
|
|
8042
|
+
"high",
|
|
8043
|
+
"xhigh"
|
|
8044
|
+
]
|
|
8045
|
+
} : setting);
|
|
8046
|
+
if (/^gpt-6-(?:sol|luna)(?:$|-)/i.test(model)) return settings.map((setting) => {
|
|
8047
|
+
if (setting.key === "reasoning_effort") return {
|
|
8048
|
+
...setting,
|
|
8049
|
+
options: setting.options?.filter((effort) => effort !== "minimal")
|
|
8050
|
+
};
|
|
8051
|
+
/** Match the native backend's unset default without writing into stored
|
|
8052
|
+
* settings. Explicit false still overrides this rendered default. */
|
|
8053
|
+
if (setting.key === "useResponsesApi") {
|
|
8054
|
+
const route = (value) => require_data_service.resolveEffectiveUseResponsesApi({
|
|
8055
|
+
endpoint,
|
|
8056
|
+
model,
|
|
8057
|
+
routing: responsesApiRouting,
|
|
8058
|
+
value
|
|
8059
|
+
});
|
|
8060
|
+
return {
|
|
8061
|
+
...setting,
|
|
8062
|
+
default: route() ?? false,
|
|
8063
|
+
enumMappings: {
|
|
8064
|
+
true: route(true) ?? true,
|
|
8065
|
+
false: route(false) ?? false
|
|
8066
|
+
}
|
|
8067
|
+
};
|
|
8068
|
+
}
|
|
8069
|
+
return setting;
|
|
8070
|
+
});
|
|
8071
|
+
if (isOpus55Model(model)) return settings.filter((setting) => ![
|
|
8072
|
+
"thinking",
|
|
8073
|
+
"thinkingBudget",
|
|
8074
|
+
"temperature",
|
|
8075
|
+
"topP",
|
|
8076
|
+
"topK"
|
|
8077
|
+
].includes(setting.key));
|
|
7352
8078
|
const modelAwareSettings = endpoint === "google" ? settings.map((setting) => {
|
|
7353
8079
|
if (setting.key === "maxOutputTokens") return {
|
|
7354
8080
|
...setting,
|
|
@@ -7412,64 +8138,50 @@ function removeCodeExecutionCaller(toolOptions) {
|
|
|
7412
8138
|
return normalized;
|
|
7413
8139
|
}
|
|
7414
8140
|
//#endregion
|
|
7415
|
-
//#region src/
|
|
7416
|
-
/**
|
|
7417
|
-
|
|
7418
|
-
* `as const` tuple so the runtime list and the TypeScript union can't
|
|
7419
|
-
* drift on future additions — adding a new kind to the tuple updates
|
|
7420
|
-
* both at once.
|
|
7421
|
-
*
|
|
7422
|
-
* - `skill`: shared per skill identity. Cross-user-within-tenant
|
|
7423
|
-
* sharing. Code API sessionKey omits the user dimension.
|
|
7424
|
-
* `version` is required (the skill's monotonic counter scopes the
|
|
7425
|
-
* cache per revision so any edit invalidates the prior cache
|
|
7426
|
-
* entry naturally).
|
|
7427
|
-
* - `agent`: shared per agent identity. Same sharing semantic as
|
|
7428
|
-
* skills (agents are addressable resources accessible to a
|
|
7429
|
-
* permission-defined audience).
|
|
7430
|
-
* - `user`: user-private. Code API sessionKey is keyed by the
|
|
7431
|
-
* requesting user from auth context. Used for chat attachments
|
|
7432
|
-
* and code-output artifacts.
|
|
7433
|
-
*/
|
|
7434
|
-
const CODE_ENV_KINDS = [
|
|
7435
|
-
"skill",
|
|
7436
|
-
"agent",
|
|
7437
|
-
"user"
|
|
7438
|
-
];
|
|
7439
|
-
function getCodeEnvRefForProfile(refs, routeKey) {
|
|
7440
|
-
const profileRef = refs?.codeEnvRefs?.[routeKey];
|
|
7441
|
-
if (profileRef) return profileRef;
|
|
7442
|
-
const legacyRef = refs?.codeEnvRef;
|
|
7443
|
-
if (legacyRef && (legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default") === routeKey) return legacyRef;
|
|
7444
|
-
}
|
|
7445
|
-
/** Adds one profile pointer without discarding the other profile's storage object. */
|
|
7446
|
-
function mergeCodeEnvRef(refs, ref) {
|
|
7447
|
-
const codeEnvRefs = { ...refs?.codeEnvRefs };
|
|
7448
|
-
const legacyRef = refs?.codeEnvRef;
|
|
7449
|
-
if (legacyRef) codeEnvRefs[legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default"] ??= legacyRef;
|
|
7450
|
-
const routeKey = ref.executionRouteKey ?? ref.executionProfile ?? "default";
|
|
7451
|
-
codeEnvRefs[routeKey] = ref;
|
|
8141
|
+
//#region src/backgroundResults.ts
|
|
8142
|
+
/** Shared serialized metadata shape for admission budgeting and continuation rendering. */
|
|
8143
|
+
function backgroundResultMetadata(result) {
|
|
7452
8144
|
return {
|
|
7453
|
-
|
|
7454
|
-
|
|
8145
|
+
background_task_id: result.taskId,
|
|
8146
|
+
tool_call_id: result.toolCallId,
|
|
8147
|
+
tool: result.toolName,
|
|
8148
|
+
status: result.status,
|
|
8149
|
+
result: ""
|
|
7455
8150
|
};
|
|
7456
8151
|
}
|
|
7457
|
-
|
|
7458
|
-
|
|
7459
|
-
|
|
7460
|
-
|
|
7461
|
-
|
|
7462
|
-
|
|
8152
|
+
//#endregion
|
|
8153
|
+
//#region src/code/worker.ts
|
|
8154
|
+
function isCodeWorkerShell(value) {
|
|
8155
|
+
return value === "posix" || value === "powershell";
|
|
8156
|
+
}
|
|
8157
|
+
function quotePosix(value) {
|
|
8158
|
+
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
8159
|
+
}
|
|
8160
|
+
function quotePowerShell(value) {
|
|
8161
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
8162
|
+
}
|
|
8163
|
+
function createCodeWorkerSetupCommand(pairing, shell, options = {}) {
|
|
8164
|
+
const quote = shell === "powershell" ? quotePowerShell : quotePosix;
|
|
8165
|
+
const pair = `librechat-code pair ${quote(pairing.endpoint)} ${quote(pairing.code)} --worker-id ${quote(pairing.workerId)}`;
|
|
8166
|
+
const run = ["librechat-code run", ...[
|
|
8167
|
+
options.defaultWorkspace === false ? null : "--default-workspace",
|
|
8168
|
+
options.allowWorkspaceWrites === true ? "--allow-workspace-writes" : null,
|
|
8169
|
+
options.allowWorkspaceCommands === true ? "--allow-workspace-commands" : null
|
|
8170
|
+
].filter((value) => value != null)].join(" ");
|
|
8171
|
+
if (shell === "powershell") return `${pair}\n$env:LIBRECHAT_CODE_WORKER_ID = ${quote(pairing.workerId)}\n${run}`;
|
|
8172
|
+
return `${pair}\nLIBRECHAT_CODE_WORKER_ID=${quote(pairing.workerId)} ${run}`;
|
|
7463
8173
|
}
|
|
7464
8174
|
//#endregion
|
|
7465
8175
|
exports.ACTION_METADATA_FILTER_FIELDS = require_data_service.ACTION_METADATA_FILTER_FIELDS;
|
|
8176
|
+
exports.AGENT_BACKGROUND_COMPLETION_RESULT_MAX_CHARS_DEFAULT = require_data_service.AGENT_BACKGROUND_COMPLETION_RESULT_MAX_CHARS_DEFAULT;
|
|
8177
|
+
exports.AGENT_BACKGROUND_COMPLETION_RESULT_MAX_CHARS_HARD_MAX = require_data_service.AGENT_BACKGROUND_COMPLETION_RESULT_MAX_CHARS_HARD_MAX;
|
|
7466
8178
|
exports.AGENT_INSTRUCTION_FILTER_FIELDS = require_data_service.AGENT_INSTRUCTION_FILTER_FIELDS;
|
|
7467
8179
|
exports.AUTH_USER_DOC_BY_ID_PREFIX = require_data_service.AUTH_USER_DOC_BY_ID_PREFIX;
|
|
7468
8180
|
exports.AccessRoleIds = require_data_service.AccessRoleIds;
|
|
7469
8181
|
exports.ActionRequest = ActionRequest;
|
|
7470
8182
|
exports.ActivityLabelEvents = ActivityLabelEvents;
|
|
7471
8183
|
exports.AgentCapabilities = require_data_service.AgentCapabilities;
|
|
7472
|
-
exports.AnnotationTypes =
|
|
8184
|
+
exports.AnnotationTypes = AnnotationTypes;
|
|
7473
8185
|
exports.AnthropicEffort = require_data_service.AnthropicEffort;
|
|
7474
8186
|
exports.ApprovalEvents = ApprovalEvents;
|
|
7475
8187
|
exports.ArtifactModes = ArtifactModes;
|
|
@@ -7484,17 +8196,39 @@ exports.BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA = BEDROCK_FINE_GRAINED_TOOL_STR
|
|
|
7484
8196
|
exports.BEDROCK_OUTPUT_128K_BETA = BEDROCK_OUTPUT_128K_BETA;
|
|
7485
8197
|
exports.BedrockProviders = require_data_service.BedrockProviders;
|
|
7486
8198
|
exports.BedrockReasoningConfig = require_data_service.BedrockReasoningConfig;
|
|
8199
|
+
exports.CODE_APPROVAL_MODES = require_data_service.CODE_APPROVAL_MODES;
|
|
8200
|
+
exports.CODE_ENVIRONMENT_COMMAND_TIMEOUT_DEFAULT_MS = require_data_service.CODE_ENVIRONMENT_COMMAND_TIMEOUT_DEFAULT_MS;
|
|
8201
|
+
exports.CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS = require_data_service.CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS;
|
|
8202
|
+
exports.CODE_ENVIRONMENT_DECISION_VERSION = require_data_service.CODE_ENVIRONMENT_DECISION_VERSION;
|
|
8203
|
+
exports.CODE_ENVIRONMENT_MODES = require_data_service.CODE_ENVIRONMENT_MODES;
|
|
8204
|
+
exports.CODE_ENVIRONMENT_MOVE_VERSION = require_data_service.CODE_ENVIRONMENT_MOVE_VERSION;
|
|
8205
|
+
exports.CODE_ENVIRONMENT_QUEUE_WAIT_DEFAULT_MS = require_data_service.CODE_ENVIRONMENT_QUEUE_WAIT_DEFAULT_MS;
|
|
7487
8206
|
exports.CODE_ENV_KINDS = CODE_ENV_KINDS;
|
|
8207
|
+
exports.CODE_WORKSPACE_ID_PATTERN = require_data_service.CODE_WORKSPACE_ID_PATTERN;
|
|
8208
|
+
exports.CODE_WORKSPACE_INSTANCE_TYPES = require_data_service.CODE_WORKSPACE_INSTANCE_TYPES;
|
|
8209
|
+
exports.CODE_WORKSPACE_MAX_COUNT = require_data_service.CODE_WORKSPACE_MAX_COUNT;
|
|
8210
|
+
exports.CODE_WORKSPACE_OPERATIONS = require_data_service.CODE_WORKSPACE_OPERATIONS;
|
|
8211
|
+
exports.CODE_WORKSPACE_SELECTION_ERROR_REASONS = require_data_service.CODE_WORKSPACE_SELECTION_ERROR_REASONS;
|
|
7488
8212
|
exports.CONVERSATION_STARTER_FILTER_FIELDS = require_data_service.CONVERSATION_STARTER_FILTER_FIELDS;
|
|
7489
8213
|
exports.CONVERSATION_TITLE_FILTER_FIELDS = require_data_service.CONVERSATION_TITLE_FILTER_FIELDS;
|
|
7490
8214
|
exports.CacheKeys = require_data_service.CacheKeys;
|
|
7491
8215
|
exports.Capabilities = require_data_service.Capabilities;
|
|
8216
|
+
exports.CodeApprovalModeError = require_data_service.CodeApprovalModeError;
|
|
7492
8217
|
exports.CohereConstants = require_data_service.CohereConstants;
|
|
7493
8218
|
exports.ComponentTypes = require_data_service.ComponentTypes;
|
|
7494
8219
|
exports.Constants = require_data_service.Constants;
|
|
7495
8220
|
exports.ContentTypes = ContentTypes;
|
|
7496
8221
|
exports.DATE_RANGE = DATE_RANGE;
|
|
8222
|
+
exports.DEFAULT_AGENT_MODEL_RESPONSE_BODY_TIMEOUT_MS = require_data_service.DEFAULT_AGENT_MODEL_RESPONSE_BODY_TIMEOUT_MS;
|
|
8223
|
+
exports.DEFAULT_AGENT_MODEL_RESPONSE_HEADERS_TIMEOUT_MS = require_data_service.DEFAULT_AGENT_MODEL_RESPONSE_HEADERS_TIMEOUT_MS;
|
|
8224
|
+
exports.DEFAULT_BALANCE_RESERVATION_TTL_MS = require_data_service.DEFAULT_BALANCE_RESERVATION_TTL_MS;
|
|
8225
|
+
exports.DEFAULT_MAX_PROVIDER_ERROR_CHARS = require_data_service.DEFAULT_MAX_PROVIDER_ERROR_CHARS;
|
|
8226
|
+
exports.DEFAULT_MAX_RETAINED_TOOL_COUNT_CHARS = require_data_service.DEFAULT_MAX_RETAINED_TOOL_COUNT_CHARS;
|
|
7497
8227
|
exports.DEFAULT_MEMORY_MAX_INPUT_TOKENS = require_data_service.DEFAULT_MEMORY_MAX_INPUT_TOKENS;
|
|
8228
|
+
exports.DEFAULT_OAUTH_STATE_TTL_MS = require_data_service.DEFAULT_OAUTH_STATE_TTL_MS;
|
|
8229
|
+
exports.DEFAULT_RETAINED_ANSWER_TOKENS = require_data_service.DEFAULT_RETAINED_ANSWER_TOKENS;
|
|
8230
|
+
exports.DEFAULT_SKILL_IMPORT_CLEANUP_CONCURRENCY = require_data_service.DEFAULT_SKILL_IMPORT_CLEANUP_CONCURRENCY;
|
|
8231
|
+
exports.DefaultLLMDeliveryPath = require_data_service.DefaultLLMDeliveryPath;
|
|
7498
8232
|
exports.DynamicQueryKeys = require_data_service.DynamicQueryKeys;
|
|
7499
8233
|
exports.EImageOutputType = require_data_service.EImageOutputType;
|
|
7500
8234
|
exports.EModelEndpoint = require_data_service.EModelEndpoint;
|
|
@@ -7514,6 +8248,7 @@ exports.FileSources = require_data_service.FileSources;
|
|
|
7514
8248
|
exports.ForkOptions = require_data_service.ForkOptions;
|
|
7515
8249
|
exports.FunctionSignature = FunctionSignature;
|
|
7516
8250
|
exports.HITL_MESSAGE_FILTER_FIELDS = require_data_service.HITL_MESSAGE_FILTER_FIELDS;
|
|
8251
|
+
exports.INSIGHTS_AGENT_ID_MAX_LENGTH = INSIGHTS_AGENT_ID_MAX_LENGTH;
|
|
7517
8252
|
exports.INSIGHTS_MAX_RANGE_DAYS = INSIGHTS_MAX_RANGE_DAYS;
|
|
7518
8253
|
exports.INSIGHTS_SEARCH_MAX_LENGTH = INSIGHTS_SEARCH_MAX_LENGTH;
|
|
7519
8254
|
exports.INSIGHTS_SEARCH_MIN_LENGTH = INSIGHTS_SEARCH_MIN_LENGTH;
|
|
@@ -7524,10 +8259,15 @@ exports.ImageVisionTool = require_data_service.ImageVisionTool;
|
|
|
7524
8259
|
exports.InfiniteCollections = require_data_service.InfiniteCollections;
|
|
7525
8260
|
exports.InvocationMode = InvocationMode;
|
|
7526
8261
|
exports.KnownEndpoints = require_data_service.KnownEndpoints;
|
|
8262
|
+
exports.LANGFUSE_TRACE_CONVERSATION_METADATA_FIELDS = require_data_service.LANGFUSE_TRACE_CONVERSATION_METADATA_FIELDS;
|
|
8263
|
+
exports.LANGFUSE_TRACE_USER_ID_FIELDS = require_data_service.LANGFUSE_TRACE_USER_ID_FIELDS;
|
|
8264
|
+
exports.LANGFUSE_TRACE_USER_METADATA_FIELDS = require_data_service.LANGFUSE_TRACE_USER_METADATA_FIELDS;
|
|
7527
8265
|
exports.LocalStorageKeys = require_data_service.LocalStorageKeys;
|
|
7528
8266
|
exports.MAX_CHAT_PROJECT_DESCRIPTION_LENGTH = require_data_service.MAX_CHAT_PROJECT_DESCRIPTION_LENGTH;
|
|
7529
8267
|
exports.MAX_CHAT_PROJECT_NAME_LENGTH = require_data_service.MAX_CHAT_PROJECT_NAME_LENGTH;
|
|
7530
8268
|
exports.MAX_GRAPH_SUBAGENT_MEMBERS = require_data_service.MAX_GRAPH_SUBAGENT_MEMBERS;
|
|
8269
|
+
exports.MAX_MCP_ICON_PATH_LENGTH = require_data_service.MAX_MCP_ICON_PATH_LENGTH;
|
|
8270
|
+
exports.MAX_MCP_OAUTH_PERSISTENCE_WAIT_MS = require_data_service.MAX_MCP_OAUTH_PERSISTENCE_WAIT_MS;
|
|
7531
8271
|
exports.MAX_PII_CUSTOM_PATTERNS_TOTAL = require_data_service.MAX_PII_CUSTOM_PATTERNS_TOTAL;
|
|
7532
8272
|
exports.MAX_PII_CUSTOM_REGEX_CHARACTERS = require_data_service.MAX_PII_CUSTOM_REGEX_CHARACTERS;
|
|
7533
8273
|
exports.MAX_PII_CUSTOM_REGEX_INSTRUCTIONS = require_data_service.MAX_PII_CUSTOM_REGEX_INSTRUCTIONS;
|
|
@@ -7548,13 +8288,15 @@ exports.MCP_SERVER_TITLE_PATTERN = require_data_service.MCP_SERVER_TITLE_PATTERN
|
|
|
7548
8288
|
exports.MCP_USER_INPUT_FIELDS = require_data_service.MCP_USER_INPUT_FIELDS;
|
|
7549
8289
|
exports.MEMORY_FILTER_FIELDS = require_data_service.MEMORY_FILTER_FIELDS;
|
|
7550
8290
|
exports.MESSAGE_FILTER_FIELDS = require_data_service.MESSAGE_FILTER_FIELDS;
|
|
8291
|
+
exports.MIN_BALANCE_RESERVATION_TTL_MS = require_data_service.MIN_BALANCE_RESERVATION_TTL_MS;
|
|
7551
8292
|
exports.MIN_REPORTABLE_RUN_STEP_DURATION_MS = MIN_REPORTABLE_RUN_STEP_DURATION_MS;
|
|
7552
8293
|
exports.MODEL_PARAMETER_FILTER_FIELDS = require_data_service.MODEL_PARAMETER_FILTER_FIELDS;
|
|
7553
8294
|
exports.MYTHOS_CLASS_FAMILIES = require_data_service.MYTHOS_CLASS_FAMILIES;
|
|
7554
8295
|
exports.MemoryScope = require_data_service.MemoryScope;
|
|
7555
|
-
exports.MessageContentTypes =
|
|
8296
|
+
exports.MessageContentTypes = MessageContentTypes;
|
|
7556
8297
|
exports.MutationKeys = require_data_service.MutationKeys;
|
|
7557
8298
|
exports.OCRStrategy = require_data_service.OCRStrategy;
|
|
8299
|
+
exports.OPUS_55_BLOCK_BINDING = OPUS_55_BLOCK_BINDING;
|
|
7558
8300
|
exports.OptionTypes = require_data_service.OptionTypes;
|
|
7559
8301
|
exports.PERMISSION_SUB_KEYS = PERMISSION_SUB_KEYS;
|
|
7560
8302
|
exports.PERMISSION_TYPE_INTERFACE_FIELDS = PERMISSION_TYPE_INTERFACE_FIELDS;
|
|
@@ -7598,6 +8340,8 @@ exports.SSEOptionsSchema = require_data_service.SSEOptionsSchema;
|
|
|
7598
8340
|
exports.STATEFUL_CODE_ENVIRONMENTS = require_data_service.STATEFUL_CODE_ENVIRONMENTS;
|
|
7599
8341
|
exports.STORED_MESSAGE_FILTER_FIELDS = require_data_service.STORED_MESSAGE_FILTER_FIELDS;
|
|
7600
8342
|
exports.STTProviders = require_data_service.STTProviders;
|
|
8343
|
+
exports.SVG_SANITIZE_CONFIG = SVG_SANITIZE_CONFIG;
|
|
8344
|
+
exports.SYSTEM_LLM_DELIVERY_DEFAULTS = SYSTEM_LLM_DELIVERY_DEFAULTS;
|
|
7601
8345
|
exports.SafeSearchTypes = require_data_service.SafeSearchTypes;
|
|
7602
8346
|
exports.ScraperProviders = require_data_service.ScraperProviders;
|
|
7603
8347
|
exports.SearchCategories = require_data_service.SearchCategories;
|
|
@@ -7609,12 +8353,16 @@ exports.SkillsScope = require_data_service.SkillsScope;
|
|
|
7609
8353
|
exports.StdioOptionsSchema = require_data_service.StdioOptionsSchema;
|
|
7610
8354
|
exports.SteerEvents = SteerEvents;
|
|
7611
8355
|
exports.StepEvents = StepEvents;
|
|
7612
|
-
exports.StepStatus =
|
|
8356
|
+
exports.StepStatus = StepStatus;
|
|
7613
8357
|
exports.StepTypes = StepTypes;
|
|
7614
8358
|
exports.StreamableHTTPOptionsSchema = require_data_service.StreamableHTTPOptionsSchema;
|
|
7615
8359
|
exports.SystemCategories = require_data_service.SystemCategories;
|
|
7616
8360
|
exports.SystemRoles = SystemRoles;
|
|
8361
|
+
exports.THINKING_BINDING_BETA = THINKING_BINDING_BETA;
|
|
7617
8362
|
exports.TOOL_ARGUMENT_FILTER_FIELDS = require_data_service.TOOL_ARGUMENT_FILTER_FIELDS;
|
|
8363
|
+
exports.TRACE_CURSOR_MAX_LENGTH = TRACE_CURSOR_MAX_LENGTH;
|
|
8364
|
+
exports.TRACE_RECORD_ID_MAX_LENGTH = TRACE_RECORD_ID_MAX_LENGTH;
|
|
8365
|
+
exports.TRACE_SOURCE_ID_MAX_LENGTH = TRACE_SOURCE_ID_MAX_LENGTH;
|
|
7618
8366
|
exports.TTSProviders = require_data_service.TTSProviders;
|
|
7619
8367
|
exports.ThinkingDisplay = require_data_service.ThinkingDisplay;
|
|
7620
8368
|
exports.ThinkingLevel = require_data_service.ThinkingLevel;
|
|
@@ -7633,6 +8381,7 @@ exports.accordian = accordian;
|
|
|
7633
8381
|
exports.actionDelimiter = require_data_service.actionDelimiter;
|
|
7634
8382
|
exports.actionDomainSeparator = require_data_service.actionDomainSeparator;
|
|
7635
8383
|
exports.actionMetadataFilterFieldSchema = require_data_service.actionMetadataFilterFieldSchema;
|
|
8384
|
+
exports.agentGitIdentitySchema = require_data_service.agentGitIdentitySchema;
|
|
7636
8385
|
exports.agentInstructionFilterFieldSchema = require_data_service.agentInstructionFilterFieldSchema;
|
|
7637
8386
|
exports.agentParamSettings = agentParamSettings;
|
|
7638
8387
|
exports.agentPermissionsSchema = agentPermissionsSchema;
|
|
@@ -7657,6 +8406,8 @@ exports.apiBaseUrl = require_data_service.apiBaseUrl;
|
|
|
7657
8406
|
exports.appendAgentIdSuffix = appendAgentIdSuffix;
|
|
7658
8407
|
exports.applicationMimeTypes = require_data_service.applicationMimeTypes;
|
|
7659
8408
|
exports.applyModelAwareDefaults = applyModelAwareDefaults;
|
|
8409
|
+
exports.askUserQuestionConfigSchema = require_data_service.askUserQuestionConfigSchema;
|
|
8410
|
+
exports.askUserQuestionRetainedAnswersSchema = require_data_service.askUserQuestionRetainedAnswersSchema;
|
|
7660
8411
|
exports.assistantEndpointSchema = require_data_service.assistantEndpointSchema;
|
|
7661
8412
|
exports.assistantSchema = require_data_service.assistantSchema;
|
|
7662
8413
|
exports.audioMimeTypes = require_data_service.audioMimeTypes;
|
|
@@ -7666,6 +8417,7 @@ exports.azureBaseSchema = require_data_service.azureBaseSchema;
|
|
|
7666
8417
|
exports.azureEndpointSchema = require_data_service.azureEndpointSchema;
|
|
7667
8418
|
exports.azureGroupConfigsSchema = require_data_service.azureGroupConfigsSchema;
|
|
7668
8419
|
exports.azureGroupSchema = require_data_service.azureGroupSchema;
|
|
8420
|
+
exports.backgroundResultMetadata = backgroundResultMetadata;
|
|
7669
8421
|
exports.badge = badge;
|
|
7670
8422
|
exports.balanceSchema = require_data_service.balanceSchema;
|
|
7671
8423
|
exports.baseEndpointSchema = require_data_service.baseEndpointSchema;
|
|
@@ -7688,6 +8440,7 @@ exports.cacheSubsetProviders = require_data_service.cacheSubsetProviders;
|
|
|
7688
8440
|
exports.cadenceIntervalMinutes = cadenceIntervalMinutes;
|
|
7689
8441
|
exports.cadenceToCron = cadenceToCron;
|
|
7690
8442
|
exports.calendar = calendar;
|
|
8443
|
+
exports.canToolResourceConsume = canToolResourceConsume;
|
|
7691
8444
|
exports.cancelAgentQueuedTurnResponseSchema = cancelAgentQueuedTurnResponseSchema;
|
|
7692
8445
|
exports.cancelAgentQueuedTurnSchema = cancelAgentQueuedTurnSchema;
|
|
7693
8446
|
exports.capsEffortWhenThinkingDisabled = capsEffortWhenThinkingDisabled;
|
|
@@ -7718,6 +8471,7 @@ exports.contextPruningSchema = require_data_service.contextPruningSchema;
|
|
|
7718
8471
|
exports.conversationStarterFilterFieldSchema = require_data_service.conversationStarterFilterFieldSchema;
|
|
7719
8472
|
exports.conversationTitleFilterFieldSchema = require_data_service.conversationTitleFilterFieldSchema;
|
|
7720
8473
|
exports.convertStringsToRegex = require_data_service.convertStringsToRegex;
|
|
8474
|
+
exports.createCodeWorkerSetupCommand = createCodeWorkerSetupCommand;
|
|
7721
8475
|
exports.createPayload = createPayload;
|
|
7722
8476
|
exports.createSchedulePayloadSchema = createSchedulePayloadSchema;
|
|
7723
8477
|
exports.createURL = createURL;
|
|
@@ -7733,6 +8487,7 @@ exports.defaultAgentFormValues = require_data_service.defaultAgentFormValues;
|
|
|
7733
8487
|
exports.defaultAssistantFormValues = require_data_service.defaultAssistantFormValues;
|
|
7734
8488
|
exports.defaultAssistantsVersion = require_data_service.defaultAssistantsVersion;
|
|
7735
8489
|
exports.defaultEndpoints = require_data_service.defaultEndpoints;
|
|
8490
|
+
exports.defaultLLMDeliveryPathSchema = require_data_service.defaultLLMDeliveryPathSchema;
|
|
7736
8491
|
exports.defaultModels = require_data_service.defaultModels;
|
|
7737
8492
|
exports.defaultOCRMimeTypes = require_data_service.defaultOCRMimeTypes;
|
|
7738
8493
|
exports.defaultOrderQuery = require_data_service.defaultOrderQuery;
|
|
@@ -7792,16 +8547,21 @@ exports.filterPiiCustomPatternSchema = require_data_service.filterPiiCustomPatte
|
|
|
7792
8547
|
exports.filterPiiRegexSchema = require_data_service.filterPiiRegexSchema;
|
|
7793
8548
|
exports.filterPiiStarterPatternSchema = require_data_service.filterPiiStarterPatternSchema;
|
|
7794
8549
|
exports.filtersConfigSchema = require_data_service.filtersConfigSchema;
|
|
8550
|
+
exports.finalizeSvgMarkup = finalizeSvgMarkup;
|
|
7795
8551
|
exports.findLastSeparatorIndex = findLastSeparatorIndex;
|
|
8552
|
+
exports.findMessageById = findMessageById;
|
|
7796
8553
|
exports.fullMimeTypesList = require_data_service.fullMimeTypesList;
|
|
7797
8554
|
exports.generateDynamicSchema = require_data_service.generateDynamicSchema;
|
|
7798
8555
|
exports.generateGoogleSchema = require_data_service.generateGoogleSchema;
|
|
7799
8556
|
exports.generateOpenAISchema = require_data_service.generateOpenAISchema;
|
|
8557
|
+
exports.getAllowedCodeApprovalModes = require_data_service.getAllowedCodeApprovalModes;
|
|
7800
8558
|
exports.getCodeEnvRefForProfile = getCodeEnvRefForProfile;
|
|
7801
8559
|
exports.getCodeEnvRefs = getCodeEnvRefs;
|
|
7802
8560
|
exports.getConfigDefaults = require_data_service.getConfigDefaults;
|
|
7803
8561
|
exports.getConfiguredMimeAccept = require_data_service.getConfiguredMimeAccept;
|
|
8562
|
+
exports.getCustomEndpointProvider = getCustomEndpointProvider;
|
|
7804
8563
|
exports.getDefaultParamsEndpoint = require_data_service.getDefaultParamsEndpoint;
|
|
8564
|
+
exports.getDocumentFileExtension = require_data_service.getDocumentFileExtension;
|
|
7805
8565
|
exports.getEnabledEndpoints = getEnabledEndpoints;
|
|
7806
8566
|
exports.getEndpointField = require_data_service.getEndpointField;
|
|
7807
8567
|
exports.getEndpointFileConfig = require_data_service.getEndpointFileConfig;
|
|
@@ -7817,6 +8577,7 @@ exports.getRefillEligibilityDate = require_data_service.getRefillEligibilityDate
|
|
|
7817
8577
|
exports.getResourcePermissionsResponseSchema = require_data_service.getResourcePermissionsResponseSchema;
|
|
7818
8578
|
exports.getResponseSender = getResponseSender;
|
|
7819
8579
|
exports.getRunStepDurationMs = getRunStepDurationMs;
|
|
8580
|
+
exports.getScheduleMCPDisabledReason = getScheduleMCPDisabledReason;
|
|
7820
8581
|
exports.getSchemaDefaults = require_data_service.getSchemaDefaults;
|
|
7821
8582
|
exports.getSettingsKeys = require_data_service.getSettingsKeys;
|
|
7822
8583
|
exports.getTagByKey = require_data_service.getTagByKey;
|
|
@@ -7829,10 +8590,16 @@ exports.googleSettings = require_data_service.googleSettings;
|
|
|
7829
8590
|
exports.hasActiveFiltersConfig = require_data_service.hasActiveFiltersConfig;
|
|
7830
8591
|
exports.hasActivePiiFields = require_data_service.hasActivePiiFields;
|
|
7831
8592
|
exports.hasActivePiiPatterns = require_data_service.hasActivePiiPatterns;
|
|
8593
|
+
exports.hasConfiguredFooter = hasConfiguredFooter;
|
|
8594
|
+
exports.hasInferredLLMDeliveryPath = hasInferredLLMDeliveryPath;
|
|
7832
8595
|
exports.hasPermissions = require_data_service.hasPermissions;
|
|
7833
8596
|
exports.hasProcessMCPServerConfig = require_data_service.hasProcessMCPServerConfig;
|
|
7834
|
-
exports.
|
|
7835
|
-
exports.
|
|
8597
|
+
exports.hasTextExtractionPath = hasTextExtractionPath;
|
|
8598
|
+
exports.hasToolCallErrorPrefix = hasToolCallErrorPrefix;
|
|
8599
|
+
exports.hasToolResourceProvisioning = hasToolResourceProvisioning;
|
|
8600
|
+
exports.hasTurnFileConsumer = hasTurnFileConsumer;
|
|
8601
|
+
exports.hostImageIdSuffix = hostImageIdSuffix;
|
|
8602
|
+
exports.hostImageNamePrefix = hostImageNamePrefix;
|
|
7836
8603
|
exports.hoverCard = hoverCard;
|
|
7837
8604
|
exports.imageDetailNumeric = require_data_service.imageDetailNumeric;
|
|
7838
8605
|
exports.imageDetailValue = require_data_service.imageDetailValue;
|
|
@@ -7851,37 +8618,59 @@ exports.isAnthropicDocumentType = require_data_service.isAnthropicDocumentType;
|
|
|
7851
8618
|
exports.isAnthropicTextDocumentType = require_data_service.isAnthropicTextDocumentType;
|
|
7852
8619
|
exports.isAssistantsEndpoint = require_data_service.isAssistantsEndpoint;
|
|
7853
8620
|
exports.isBedrockDocumentType = require_data_service.isBedrockDocumentType;
|
|
8621
|
+
exports.isCodeEnvironmentMode = require_data_service.isCodeEnvironmentMode;
|
|
8622
|
+
exports.isCodeWorkerShell = isCodeWorkerShell;
|
|
8623
|
+
exports.isCodeWorkspaceEnvironment = require_data_service.isCodeWorkspaceEnvironment;
|
|
8624
|
+
exports.isCodeWorkspaceSelection = require_data_service.isCodeWorkspaceSelection;
|
|
8625
|
+
exports.isCodeWorkspaceSelectionErrorReason = require_data_service.isCodeWorkspaceSelectionErrorReason;
|
|
8626
|
+
exports.isCodeWorkspaceSelections = require_data_service.isCodeWorkspaceSelections;
|
|
8627
|
+
exports.isCompactedLeaf = isCompactedLeaf;
|
|
8628
|
+
exports.isConfiguredSender = isConfiguredSender;
|
|
7854
8629
|
exports.isCronCadence = isCronCadence;
|
|
7855
8630
|
exports.isDocumentSupportedProvider = require_data_service.isDocumentSupportedProvider;
|
|
7856
8631
|
exports.isEphemeralAgentId = isEphemeralAgentId;
|
|
8632
|
+
exports.isExplicitMimeConfig = require_data_service.isExplicitMimeConfig;
|
|
7857
8633
|
exports.isImageVisionTool = require_data_service.isImageVisionTool;
|
|
8634
|
+
exports.isKnownProviderIdentifier = require_data_service.isKnownProviderIdentifier;
|
|
8635
|
+
exports.isMediaSupportedProvider = require_data_service.isMediaSupportedProvider;
|
|
8636
|
+
exports.isMessageFileUpload = require_data_service.isMessageFileUpload;
|
|
7858
8637
|
exports.isMythosClassModel = require_data_service.isMythosClassModel;
|
|
8638
|
+
exports.isNativelyReadableText = isNativelyReadableText;
|
|
7859
8639
|
exports.isOpenAILikeProvider = require_data_service.isOpenAILikeProvider;
|
|
8640
|
+
exports.isOpus55Model = isOpus55Model;
|
|
7860
8641
|
exports.isParamEndpoint = require_data_service.isParamEndpoint;
|
|
7861
8642
|
exports.isPermissiveMimeConfig = require_data_service.isPermissiveMimeConfig;
|
|
7862
8643
|
exports.isProcessMCPServerConfig = require_data_service.isProcessMCPServerConfig;
|
|
7863
8644
|
exports.isProcessMCPServerField = require_data_service.isProcessMCPServerField;
|
|
7864
8645
|
exports.isRemoteOidcUrlAllowed = require_data_service.isRemoteOidcUrlAllowed;
|
|
7865
8646
|
exports.isReportableRunStepDuration = isReportableRunStepDuration;
|
|
8647
|
+
exports.isRepositoryInstructionDescriptor = require_data_service.isRepositoryInstructionDescriptor;
|
|
8648
|
+
exports.isResponsesApiUpload = require_data_service.isResponsesApiUpload;
|
|
7866
8649
|
exports.isSecureCodeEnvironmentControlURL = require_data_service.isSecureCodeEnvironmentControlURL;
|
|
7867
8650
|
exports.isSensitiveEnvVar = require_data_service.isSensitiveEnvVar;
|
|
8651
|
+
exports.isSpeechProviderConfigured = require_data_service.isSpeechProviderConfigured;
|
|
7868
8652
|
exports.isSystemRoleName = isSystemRoleName;
|
|
7869
8653
|
exports.isThinkingDisabled = isThinkingDisabled;
|
|
7870
8654
|
exports.isUUID = require_data_service.isUUID;
|
|
8655
|
+
exports.isUserInitiatedCompaction = isUserInitiatedCompaction;
|
|
7871
8656
|
exports.isValidCronExpression = isValidCronExpression;
|
|
7872
8657
|
exports.knownEndpointToProvider = knownEndpointToProvider;
|
|
7873
8658
|
exports.label = label;
|
|
7874
8659
|
exports.langfuseConfigSchema = require_data_service.langfuseConfigSchema;
|
|
8660
|
+
exports.langfuseTraceConfigSchema = require_data_service.langfuseTraceConfigSchema;
|
|
7875
8661
|
exports.librechat = librechat;
|
|
7876
8662
|
exports.listAgentQueuedTurnsResponseSchema = listAgentQueuedTurnsResponseSchema;
|
|
7877
8663
|
exports.listAgentQueuedTurnsSchema = listAgentQueuedTurnsSchema;
|
|
8664
|
+
exports.listConfiguredSpeechProviders = require_data_service.listConfiguredSpeechProviders;
|
|
7878
8665
|
exports.loginPage = require_data_service.loginPage;
|
|
7879
8666
|
exports.mapGroupToAzureConfig = mapGroupToAzureConfig;
|
|
7880
8667
|
exports.mapModelToAzureConfig = mapModelToAzureConfig;
|
|
7881
8668
|
exports.marketplacePermissionsSchema = marketplacePermissionsSchema;
|
|
7882
8669
|
exports.materializeModelSpecEndpoints = require_data_service.materializeModelSpecEndpoints;
|
|
7883
8670
|
exports.mbToBytes = require_data_service.mbToBytes;
|
|
8671
|
+
exports.mcpRefreshDefaults = require_data_service.mcpRefreshDefaults;
|
|
7884
8672
|
exports.mcpServersPermissionsSchema = mcpServersPermissionsSchema;
|
|
8673
|
+
exports.mediaSupportedProviders = require_data_service.mediaSupportedProviders;
|
|
7885
8674
|
exports.megabyte = require_data_service.megabyte;
|
|
7886
8675
|
exports.memoryFilterFieldSchema = require_data_service.memoryFilterFieldSchema;
|
|
7887
8676
|
exports.memoryPermissionsSchema = memoryPermissionsSchema;
|
|
@@ -7911,9 +8700,11 @@ exports.omitsThinkingByDefault = omitsThinkingByDefault;
|
|
|
7911
8700
|
exports.openAIBaseSchema = require_data_service.openAIBaseSchema;
|
|
7912
8701
|
exports.openAISchema = require_data_service.openAISchema;
|
|
7913
8702
|
exports.openAISettings = require_data_service.openAISettings;
|
|
8703
|
+
exports.openIdDiscoverySchema = require_data_service.openIdDiscoverySchema;
|
|
7914
8704
|
exports.openRouterSchema = require_data_service.openRouterSchema;
|
|
7915
8705
|
exports.openapiToFunction = openapiToFunction;
|
|
7916
8706
|
exports.orderEndpointsConfig = orderEndpointsConfig;
|
|
8707
|
+
exports.outputTokensFromUsage = outputTokensFromUsage;
|
|
7917
8708
|
exports.pagination = pagination;
|
|
7918
8709
|
exports.paramDefinitionSchema = require_data_service.paramDefinitionSchema;
|
|
7919
8710
|
exports.paramEndpoints = require_data_service.paramEndpoints;
|
|
@@ -7926,8 +8717,10 @@ exports.parseTextParts = parseTextParts;
|
|
|
7926
8717
|
exports.peoplePickerPermissionsSchema = peoplePickerPermissionsSchema;
|
|
7927
8718
|
exports.permBitsToAccessLevel = require_data_service.permBitsToAccessLevel;
|
|
7928
8719
|
exports.permissionEntrySchema = require_data_service.permissionEntrySchema;
|
|
8720
|
+
exports.permissionWriteAttemptsSchema = require_data_service.permissionWriteAttemptsSchema;
|
|
7929
8721
|
exports.permissionsSchema = permissionsSchema;
|
|
7930
8722
|
exports.popover = popover;
|
|
8723
|
+
exports.prefersResponsesApiByModel = require_data_service.prefersResponsesApiByModel;
|
|
7931
8724
|
exports.presetSettings = presetSettings;
|
|
7932
8725
|
exports.principalSchema = require_data_service.principalSchema;
|
|
7933
8726
|
exports.progress = progress;
|
|
@@ -7937,7 +8730,9 @@ exports.promptTokensFromUsage = promptTokensFromUsage;
|
|
|
7937
8730
|
exports.providerEndpointMap = require_data_service.providerEndpointMap;
|
|
7938
8731
|
exports.radioGroup = radioGroup;
|
|
7939
8732
|
exports.rateLimitSchema = require_data_service.rateLimitSchema;
|
|
8733
|
+
exports.readScheduleMCPOutcomes = readScheduleMCPOutcomes;
|
|
7940
8734
|
exports.reconcileContextUsage = reconcileContextUsage;
|
|
8735
|
+
exports.reconcileContextUsageFromEvent = reconcileContextUsageFromEvent;
|
|
7941
8736
|
exports.registerPage = require_data_service.registerPage;
|
|
7942
8737
|
exports.remoteAgentsPermissionsSchema = remoteAgentsPermissionsSchema;
|
|
7943
8738
|
exports.removeCodeExecutionCaller = removeCodeExecutionCaller;
|
|
@@ -7947,14 +8742,27 @@ exports.request = require_data_service.request_default;
|
|
|
7947
8742
|
exports.requiresExplicitThinkingDisabled = requiresExplicitThinkingDisabled;
|
|
7948
8743
|
exports.resolveAgentSkillsScope = require_data_service.resolveAgentSkillsScope;
|
|
7949
8744
|
exports.resolveAllowedStatefulCodeEnvironments = require_data_service.resolveAllowedStatefulCodeEnvironments;
|
|
8745
|
+
exports.resolveCodeApprovalMode = require_data_service.resolveCodeApprovalMode;
|
|
8746
|
+
exports.resolveCodePermissionDecision = require_data_service.resolveCodePermissionDecision;
|
|
8747
|
+
exports.resolveDefaultLLMDeliveryPath = resolveDefaultLLMDeliveryPath;
|
|
8748
|
+
exports.resolveDefaultUploadLLMDeliveryPath = resolveDefaultUploadLLMDeliveryPath;
|
|
8749
|
+
exports.resolveDropParamsUIKeys = resolveDropParamsUIKeys;
|
|
8750
|
+
exports.resolveEffectiveUseResponsesApi = require_data_service.resolveEffectiveUseResponsesApi;
|
|
7950
8751
|
exports.resolveEndpointType = require_data_service.resolveEndpointType;
|
|
7951
8752
|
exports.resolveModelCatalogKey = resolveModelCatalogKey;
|
|
7952
8753
|
exports.resolveModelSpecEndpoint = require_data_service.resolveModelSpecEndpoint;
|
|
7953
8754
|
exports.resolveProviderId = resolveProviderId;
|
|
7954
8755
|
exports.resolveRef = resolveRef;
|
|
8756
|
+
exports.resolveSandboxFilename = require_data_service.resolveSandboxFilename;
|
|
7955
8757
|
exports.resolveStatefulCodeEnvironment = require_data_service.resolveStatefulCodeEnvironment;
|
|
7956
8758
|
exports.resolveThinkingDisplay = resolveThinkingDisplay;
|
|
8759
|
+
exports.resolveTraceViewerConfig = require_data_service.resolveTraceViewerConfig;
|
|
8760
|
+
exports.resolveTurnLLMDeliveryPath = resolveTurnLLMDeliveryPath;
|
|
8761
|
+
exports.resolveUploadDestination = resolveUploadDestination;
|
|
8762
|
+
exports.resolveUploadLLMDeliveryPath = resolveUploadLLMDeliveryPath;
|
|
8763
|
+
exports.resolveUseResponsesApi = require_data_service.resolveUseResponsesApi;
|
|
7957
8764
|
exports.resourcePermissionsResponseSchema = require_data_service.resourcePermissionsResponseSchema;
|
|
8765
|
+
exports.restrictSvgReferences = restrictSvgReferences;
|
|
7958
8766
|
exports.retainRecentConfigSchema = require_data_service.retainRecentConfigSchema;
|
|
7959
8767
|
exports.retrievalMimeTypes = require_data_service.retrievalMimeTypes;
|
|
7960
8768
|
exports.retrievalMimeTypesList = require_data_service.retrievalMimeTypesList;
|
|
@@ -7963,6 +8771,7 @@ exports.roleSchema = roleSchema;
|
|
|
7963
8771
|
exports.runCodePermissionsSchema = runCodePermissionsSchema;
|
|
7964
8772
|
exports.scheduleCadenceSchema = scheduleCadenceSchema;
|
|
7965
8773
|
exports.scheduleFrequencies = scheduleFrequencies;
|
|
8774
|
+
exports.scheduleMCPOutcomeSchema = scheduleMCPOutcomeSchema;
|
|
7966
8775
|
exports.scheduleStructuredFrequencies = scheduleStructuredFrequencies;
|
|
7967
8776
|
exports.scheduleTargets = scheduleTargets;
|
|
7968
8777
|
exports.schedulesPermissionsSchema = schedulesPermissionsSchema;
|
|
@@ -7992,6 +8801,7 @@ exports.stripLangChainTroubleshootingUrl = stripLangChainTroubleshootingUrl;
|
|
|
7992
8801
|
exports.stripReasoningLabelMetadata = stripReasoningLabelMetadata;
|
|
7993
8802
|
exports.stripServerNamePrefix = require_data_service.stripServerNamePrefix;
|
|
7994
8803
|
exports.stripServerNamePrefixes = require_data_service.stripServerNamePrefixes;
|
|
8804
|
+
exports.stripToolCallErrorPrefix = stripToolCallErrorPrefix;
|
|
7995
8805
|
exports.structuredCadenceSchema = structuredCadenceSchema;
|
|
7996
8806
|
exports.subagentThreadLineageSchema = require_data_service.subagentThreadLineageSchema;
|
|
7997
8807
|
exports.summarizationConfigSchema = require_data_service.summarizationConfigSchema;
|
|
@@ -8031,6 +8841,8 @@ exports.toolApprovalModeSchema = require_data_service.toolApprovalModeSchema;
|
|
|
8031
8841
|
exports.toolApprovalPolicySchema = require_data_service.toolApprovalPolicySchema;
|
|
8032
8842
|
exports.toolArgumentFilterFieldSchema = require_data_service.toolArgumentFilterFieldSchema;
|
|
8033
8843
|
exports.tooltip = tooltip;
|
|
8844
|
+
exports.traceViewerDefaults = require_data_service.traceViewerDefaults;
|
|
8845
|
+
exports.traceViewerLimits = require_data_service.traceViewerLimits;
|
|
8034
8846
|
exports.transactionsSchema = require_data_service.transactionsSchema;
|
|
8035
8847
|
exports.turnstileOptionsSchema = require_data_service.turnstileOptionsSchema;
|
|
8036
8848
|
exports.turnstileSchema = require_data_service.turnstileSchema;
|