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.
Files changed (57) hide show
  1. package/dist/{data-service-CaB7saTP.mjs → data-service-B-WUVvTH.mjs} +1044 -173
  2. package/dist/data-service-B-WUVvTH.mjs.map +1 -0
  3. package/dist/{data-service-D5kHzBt-.js → data-service-CUG1qdeC.js} +1426 -207
  4. package/dist/data-service-CUG1qdeC.js.map +1 -0
  5. package/dist/index.js +886 -74
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +780 -70
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/react-query/index.js +1 -1
  10. package/dist/react-query/index.mjs +1 -1
  11. package/dist/types/accessPermissions.d.ts +54 -1
  12. package/dist/types/actions.d.ts +1 -1
  13. package/dist/types/agentToolOptions.d.ts +1 -1
  14. package/dist/types/api-endpoints.d.ts +7 -0
  15. package/dist/types/backgroundResults.d.ts +13 -0
  16. package/dist/types/balance.d.ts +4 -0
  17. package/dist/types/bedrock.d.ts +132 -65
  18. package/dist/types/code/approval.d.ts +26 -0
  19. package/dist/types/code/worker.d.ts +10 -0
  20. package/dist/types/code/workspace.d.ts +50 -0
  21. package/dist/types/codeEnvRef.d.ts +5 -0
  22. package/dist/types/config.d.ts +5859 -2469
  23. package/dist/types/data-service.d.ts +22 -12
  24. package/dist/types/errors.d.ts +2 -0
  25. package/dist/types/file-config.d.ts +179 -12
  26. package/dist/types/filters.d.ts +97 -97
  27. package/dist/types/footer.d.ts +20 -0
  28. package/dist/types/generate.d.ts +48 -24
  29. package/dist/types/index.d.ts +11 -0
  30. package/dist/types/keys.d.ts +13 -2
  31. package/dist/types/limits.d.ts +8 -0
  32. package/dist/types/mcp.d.ts +683 -30
  33. package/dist/types/messages.d.ts +25 -1
  34. package/dist/types/models.d.ts +312 -183
  35. package/dist/types/parameterSettings.d.ts +10 -1
  36. package/dist/types/parsers.d.ts +25 -1
  37. package/dist/types/providers.d.ts +1 -0
  38. package/dist/types/resolve-llm-delivery-path.d.ts +161 -0
  39. package/dist/types/schemas.d.ts +771 -457
  40. package/dist/types/svg.d.ts +34 -0
  41. package/dist/types/types/agents.d.ts +257 -2
  42. package/dist/types/types/assistants.d.ts +2 -617
  43. package/dist/types/types/content.d.ts +286 -0
  44. package/dist/types/types/files.d.ts +48 -1
  45. package/dist/types/types/insights.d.ts +9 -0
  46. package/dist/types/types/mutations.d.ts +3 -2
  47. package/dist/types/types/queries.d.ts +8 -1
  48. package/dist/types/types/queuedTurns.d.ts +140 -106
  49. package/dist/types/types/runs.d.ts +33 -5
  50. package/dist/types/types/schedules.d.ts +40 -7
  51. package/dist/types/types/skills.d.ts +43 -0
  52. package/dist/types/types/tools.d.ts +132 -0
  53. package/dist/types/types/traces.d.ts +134 -0
  54. package/dist/types/types.d.ts +72 -2
  55. package/package.json +2 -2
  56. package/dist/data-service-CaB7saTP.mjs.map +0 -1
  57. 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-D5kHzBt-.js");
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([BEDROCK_OUTPUT_128K_BETA, BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA]);
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 (additionalFields.thinking === false) {
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), and it can
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, and recompute
739
- * the free space. No-op when `promptTokens` is unusable.
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 budget = snapshot.contextBudget ?? breakdown.maxContextTokens;
745
- const nonMessageTokens = (breakdown.instructionTokens ?? 0) + (breakdown.summaryTokens ?? 0);
746
- const messageTokens = Math.max(0, promptTokens - nonMessageTokens);
747
- return {
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
- isRegenerate,
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/codeEnvRef.ts
7416
- /**
7417
- * Closed set of resource kinds for sandbox file caching. Defined as a
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
- codeEnvRef: codeEnvRefs.default ?? codeEnvRefs.stateful ?? ref,
7454
- codeEnvRefs
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
- /** Enumerates every deployment-local pointer, including legacy single-pointer records. */
7458
- function getCodeEnvRefs(refs) {
7459
- const merged = { ...refs?.codeEnvRefs };
7460
- const legacyRef = refs?.codeEnvRef;
7461
- if (legacyRef) merged[legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default"] ??= legacyRef;
7462
- return Object.entries(merged).flatMap(([routeKey, ref]) => ref ? [[routeKey, ref]] : []);
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 = require_data_service.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 = require_data_service.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 = require_data_service.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.hostImageIdSuffix = require_data_service.hostImageIdSuffix;
7835
- exports.hostImageNamePrefix = require_data_service.hostImageNamePrefix;
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;