librechat-data-provider 0.8.523 → 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 (48) hide show
  1. package/dist/{data-service-Bx6IFaSa.mjs → data-service-B-WUVvTH.mjs} +434 -174
  2. package/dist/data-service-B-WUVvTH.mjs.map +1 -0
  3. package/dist/{data-service-CTX0tVO5.js → data-service-CUG1qdeC.js} +577 -203
  4. package/dist/data-service-CUG1qdeC.js.map +1 -0
  5. package/dist/index.js +346 -72
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +307 -68
  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/actions.d.ts +1 -1
  12. package/dist/types/agentToolOptions.d.ts +1 -1
  13. package/dist/types/api-endpoints.d.ts +1 -0
  14. package/dist/types/backgroundResults.d.ts +13 -0
  15. package/dist/types/balance.d.ts +4 -0
  16. package/dist/types/bedrock.d.ts +77 -70
  17. package/dist/types/code/workspace.d.ts +22 -0
  18. package/dist/types/config.d.ts +5362 -4206
  19. package/dist/types/data-service.d.ts +14 -12
  20. package/dist/types/file-config.d.ts +81 -42
  21. package/dist/types/filters.d.ts +205 -205
  22. package/dist/types/footer.d.ts +20 -0
  23. package/dist/types/generate.d.ts +28 -28
  24. package/dist/types/index.d.ts +4 -0
  25. package/dist/types/keys.d.ts +2 -1
  26. package/dist/types/limits.d.ts +8 -0
  27. package/dist/types/mcp.d.ts +999 -352
  28. package/dist/types/messages.d.ts +12 -7
  29. package/dist/types/models.d.ts +429 -429
  30. package/dist/types/parameterSettings.d.ts +2 -1
  31. package/dist/types/parsers.d.ts +25 -1
  32. package/dist/types/resolve-llm-delivery-path.d.ts +97 -4
  33. package/dist/types/schemas.d.ts +646 -643
  34. package/dist/types/types/agents.d.ts +233 -2
  35. package/dist/types/types/assistants.d.ts +2 -641
  36. package/dist/types/types/content.d.ts +286 -0
  37. package/dist/types/types/files.d.ts +14 -1
  38. package/dist/types/types/mutations.d.ts +3 -2
  39. package/dist/types/types/queuedTurns.d.ts +124 -90
  40. package/dist/types/types/runs.d.ts +9 -0
  41. package/dist/types/types/schedules.d.ts +10 -10
  42. package/dist/types/types/skills.d.ts +43 -0
  43. package/dist/types/types/tools.d.ts +132 -0
  44. package/dist/types/types/traces.d.ts +49 -0
  45. package/dist/types/types.d.ts +31 -1
  46. package/package.json +1 -1
  47. package/dist/data-service-Bx6IFaSa.mjs.map +0 -1
  48. package/dist/data-service-CTX0tVO5.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-CTX0tVO5.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;
@@ -1074,6 +1090,45 @@ function replaceSpecialVars({ text, user, now: inputNow, timezone }) {
1074
1090
  function getEphemeralSender({ modelLabel, specLabel, modelDisplayLabel }) {
1075
1091
  return modelLabel ?? specLabel ?? modelDisplayLabel ?? "";
1076
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
+ };
1077
1132
  /**
1078
1133
  * Encodes an ephemeral agent ID from endpoint, model, optional sender, and optional index.
1079
1134
  * Uses __ to replace : (reserved in graph node names) and ___ to separate sender.
@@ -1366,6 +1421,20 @@ function mapGroupToAzureConfig({ groupName, groupMap }) {
1366
1421
  return result;
1367
1422
  }
1368
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
1369
1438
  //#region src/langchain.ts
1370
1439
  /**
1371
1440
  * LangChain classifies a provider failure by mutating the error: it stamps `lc_error_code` and
@@ -1456,12 +1525,83 @@ function parseLangChainErrorCode(message) {
1456
1525
  }
1457
1526
  }
1458
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
1459
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
+ };
1460
1600
  /** Audio and video reach the model only through the media encoders, which support a
1461
1601
  * narrower provider set than documents. Images use the broadly supported vision
1462
1602
  * path and are never gated here. */
1463
- const isProviderCapable = (mimeType, endpoint, useResponsesApi) => {
1464
- if (mimeType.startsWith("audio/") || mimeType.startsWith("video/")) return require_data_service.isMediaSupportedProvider(endpoint);
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);
1465
1605
  if (mimeType === "application/pdf") return useResponsesApi === true || require_data_service.isDocumentSupportedProvider(endpoint);
1466
1606
  return true;
1467
1607
  };
@@ -1522,7 +1662,7 @@ function hasTextExtractionPath(mimeType) {
1522
1662
  * Resolves the default file path destination for a given mime type.
1523
1663
  * Resolution chain: endpoint overrides -> endpoint fallback -> global overrides -> global fallback -> system defaults.
1524
1664
  */
1525
- function resolveDefaultLLMDeliveryPath(mimeType, endpointConfig, globalConfig, endpoint, useResponsesApi, sttConfigured) {
1665
+ function resolveDefaultLLMDeliveryPath(mimeType, endpointConfig, globalConfig, endpoint, useResponsesApi, sttConfigured, supportedMimeTypes) {
1526
1666
  const wildcard = mimeType.split("/")[0] + "/*";
1527
1667
  if (endpointConfig?.overrides) {
1528
1668
  if (endpointConfig.overrides[mimeType]) return endpointConfig.overrides[mimeType];
@@ -1548,7 +1688,7 @@ function resolveDefaultLLMDeliveryPath(mimeType, endpointConfig, globalConfig, e
1548
1688
  const providerKnown = namedEndpoint && require_data_service.isKnownProviderIdentifier(endpoint);
1549
1689
  const isMedia = mimeType.startsWith("audio/") || mimeType.startsWith("video/");
1550
1690
  const canRecoverText = (type) => type.startsWith("audio/") && sttConfigured === false ? false : hasTextExtractionPath(type);
1551
- if (systemDefault === "provider" && (isMedia ? namedEndpoint : providerKnown) && !isProviderCapable(mimeType, endpoint, useResponsesApi)) return canRecoverText(mimeType) ? "text" : "none";
1691
+ if (systemDefault === "provider" && (isMedia ? namedEndpoint : providerKnown) && !isProviderCapable(mimeType, endpoint, useResponsesApi, supportedMimeTypes)) return canRecoverText(mimeType) ? "text" : "none";
1552
1692
  /** Bedrock's Converse document path natively accepts more than PDF, so on that
1553
1693
  * endpoint its document types belong on the provider path rather than being
1554
1694
  * extracted, which would drop non-text content and layout. */
@@ -1560,12 +1700,13 @@ function resolveDefaultLLMDeliveryPath(mimeType, endpointConfig, globalConfig, e
1560
1700
  * Delivery path for an upload that named no tool resource. The legacy chooser makes the
1561
1701
  * destination explicit, so nothing is inferred there.
1562
1702
  */
1563
- function resolveDefaultUploadLLMDeliveryPath({ mimeType, endpointConfig, fileConfig, endpoint, useResponsesApi, sttConfigured }) {
1703
+ function resolveDefaultUploadLLMDeliveryPath({ mimeType, endpointConfig, fileConfig, endpoint, endpointProvider, useResponsesApi, sttConfigured }) {
1564
1704
  if (endpointConfig?.legacyFileUploadUX === true) return "provider";
1565
- return resolveDefaultLLMDeliveryPath(mimeType, endpointConfig?.defaultLLMDeliveryPath, fileConfig?.defaultLLMDeliveryPath, endpoint, useResponsesApi, sttConfigured);
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);
1566
1707
  }
1567
1708
  /** Delivery path for an upload, honoring an explicitly chosen tool resource. */
1568
- function resolveUploadLLMDeliveryPath({ toolResource, mimeType, endpointConfig, fileConfig, endpoint, useResponsesApi, sttConfigured }) {
1709
+ function resolveUploadLLMDeliveryPath({ toolResource, mimeType, endpointConfig, fileConfig, endpoint, useResponsesApi, endpointProvider, sttConfigured }) {
1569
1710
  if (toolResource === "context" || toolResource === "ocr") return "text";
1570
1711
  if (toolResource === "file_search" || toolResource === "execute_code") return "none";
1571
1712
  return resolveDefaultUploadLLMDeliveryPath({
@@ -1573,6 +1714,7 @@ function resolveUploadLLMDeliveryPath({ toolResource, mimeType, endpointConfig,
1573
1714
  endpointConfig,
1574
1715
  fileConfig,
1575
1716
  endpoint,
1717
+ endpointProvider,
1576
1718
  useResponsesApi,
1577
1719
  sttConfigured
1578
1720
  });
@@ -1591,6 +1733,65 @@ function canToolResourceConsume(toolResource, mimeType) {
1591
1733
  }
1592
1734
  const matchesMimeList = (mimeType, patterns) => patterns.some((pattern) => pattern.test(mimeType));
1593
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
+ /**
1594
1795
  * Where a unified upload will end up, and whether it can be accepted at all.
1595
1796
  *
1596
1797
  * An upload has to be readable by something: the model, an extraction step, or a file
@@ -1725,17 +1926,22 @@ function findMessageById(messages, messageId) {
1725
1926
  }
1726
1927
  /**
1727
1928
  * True when a turn carries the marker the server stamps on a manual compaction:
1728
- * `markCompactionSummary` sets `initiatedBy: 'user'` on the summary a Compact
1729
- * action produced, and nothing else writes it, so an automatic summary detour is
1730
- * not one. This is the compaction's own identity, independent of where it hangs:
1731
- * Compact runs on whatever leaf the branch ends with, so its response can parent
1732
- * onto a user message as easily as onto the answer it summarized. Redoing one is
1733
- * the context indicator's Compact action, never a rerun of the turn behind it.
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.
1734
1940
  */
1735
1941
  function isUserInitiatedCompaction(message) {
1736
1942
  const content = message?.content;
1737
1943
  if (!Array.isArray(content)) return false;
1738
- return content.some((part) => part?.type === "summary" && part.initiatedBy === "user");
1944
+ return content.some((part) => (part?.type === "summary" || part?.type === "error") && part.initiatedBy === "user");
1739
1945
  }
1740
1946
  /**
1741
1947
  * True when a message is a finished manual compaction: every content part is a
@@ -1749,7 +1955,9 @@ function isCompactedLeaf(message) {
1749
1955
  let usable = false;
1750
1956
  for (const part of content) {
1751
1957
  if (part?.type !== "summary") return false;
1752
- if (part.summarizing === true || part.failed === true) continue;
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;
1753
1961
  const hasText = (part.content ?? []).some((block) => typeof block?.text === "string" && block.text.trim().length > 0);
1754
1962
  usable = usable || hasText;
1755
1963
  }
@@ -5396,6 +5604,28 @@ let InvocationMode = /* @__PURE__ */ function(InvocationMode) {
5396
5604
  return InvocationMode;
5397
5605
  }({});
5398
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
5399
5629
  //#region src/types/schedules.ts
5400
5630
  /** Cadences the dialog builds from structured pickers (hour, minute, weekday). */
5401
5631
  const scheduleStructuredFrequencies = [
@@ -5786,7 +6016,12 @@ const agentQueuedTurnFileRefSchema = zod.z.object({
5786
6016
  filename: zod.z.string().optional(),
5787
6017
  height: zod.z.number().optional(),
5788
6018
  width: zod.z.number().optional(),
5789
- 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()
5790
6025
  });
5791
6026
  const enqueueAgentQueuedTurnSchema = zod.z.object({
5792
6027
  conversationId: zod.z.string().trim().min(1),
@@ -7796,8 +8031,50 @@ const agentParamSettings = Object.entries(presetSettings).reduce((acc, [key, val
7796
8031
  * current models (2.5 and 3+) surface their 64K output limit instead of the legacy 8K value.
7797
8032
  * Anthropic prompt-cache controls are only surfaced for models that support them.
7798
8033
  */
7799
- function applyModelAwareDefaults(settings, endpoint, model) {
8034
+ function applyModelAwareDefaults(settings, endpoint, model, responsesApiRouting) {
7800
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));
7801
8078
  const modelAwareSettings = endpoint === "google" ? settings.map((setting) => {
7802
8079
  if (setting.key === "maxOutputTokens") return {
7803
8080
  ...setting,
@@ -7861,55 +8138,17 @@ function removeCodeExecutionCaller(toolOptions) {
7861
8138
  return normalized;
7862
8139
  }
7863
8140
  //#endregion
7864
- //#region src/codeEnvRef.ts
7865
- /**
7866
- * Closed set of resource kinds for sandbox file caching. Defined as a
7867
- * `as const` tuple so the runtime list and the TypeScript union can't
7868
- * drift on future additions — adding a new kind to the tuple updates
7869
- * both at once.
7870
- *
7871
- * - `skill`: shared per skill identity. Cross-user-within-tenant
7872
- * sharing. Code API sessionKey omits the user dimension.
7873
- * `version` is required (the skill's monotonic counter scopes the
7874
- * cache per revision so any edit invalidates the prior cache
7875
- * entry naturally).
7876
- * - `agent`: shared per agent identity. Same sharing semantic as
7877
- * skills (agents are addressable resources accessible to a
7878
- * permission-defined audience).
7879
- * - `user`: user-private. Code API sessionKey is keyed by the
7880
- * requesting user from auth context. Used for chat attachments
7881
- * and code-output artifacts.
7882
- */
7883
- const CODE_ENV_KINDS = [
7884
- "skill",
7885
- "agent",
7886
- "user"
7887
- ];
7888
- function getCodeEnvRefForProfile(refs, routeKey) {
7889
- const profileRef = refs?.codeEnvRefs?.[routeKey];
7890
- if (profileRef) return profileRef;
7891
- const legacyRef = refs?.codeEnvRef;
7892
- if (legacyRef && (legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default") === routeKey) return legacyRef;
7893
- }
7894
- /** Adds one profile pointer without discarding the other profile's storage object. */
7895
- function mergeCodeEnvRef(refs, ref) {
7896
- const codeEnvRefs = { ...refs?.codeEnvRefs };
7897
- const legacyRef = refs?.codeEnvRef;
7898
- if (legacyRef) codeEnvRefs[legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default"] ??= legacyRef;
7899
- const routeKey = ref.executionRouteKey ?? ref.executionProfile ?? "default";
7900
- codeEnvRefs[routeKey] = ref;
8141
+ //#region src/backgroundResults.ts
8142
+ /** Shared serialized metadata shape for admission budgeting and continuation rendering. */
8143
+ function backgroundResultMetadata(result) {
7901
8144
  return {
7902
- codeEnvRef: codeEnvRefs.default ?? codeEnvRefs.stateful ?? ref,
7903
- codeEnvRefs
8145
+ background_task_id: result.taskId,
8146
+ tool_call_id: result.toolCallId,
8147
+ tool: result.toolName,
8148
+ status: result.status,
8149
+ result: ""
7904
8150
  };
7905
8151
  }
7906
- /** Enumerates every deployment-local pointer, including legacy single-pointer records. */
7907
- function getCodeEnvRefs(refs) {
7908
- const merged = { ...refs?.codeEnvRefs };
7909
- const legacyRef = refs?.codeEnvRef;
7910
- if (legacyRef) merged[legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default"] ??= legacyRef;
7911
- return Object.entries(merged).flatMap(([routeKey, ref]) => ref ? [[routeKey, ref]] : []);
7912
- }
7913
8152
  //#endregion
7914
8153
  //#region src/code/worker.ts
7915
8154
  function isCodeWorkerShell(value) {
@@ -7934,13 +8173,15 @@ function createCodeWorkerSetupCommand(pairing, shell, options = {}) {
7934
8173
  }
7935
8174
  //#endregion
7936
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;
7937
8178
  exports.AGENT_INSTRUCTION_FILTER_FIELDS = require_data_service.AGENT_INSTRUCTION_FILTER_FIELDS;
7938
8179
  exports.AUTH_USER_DOC_BY_ID_PREFIX = require_data_service.AUTH_USER_DOC_BY_ID_PREFIX;
7939
8180
  exports.AccessRoleIds = require_data_service.AccessRoleIds;
7940
8181
  exports.ActionRequest = ActionRequest;
7941
8182
  exports.ActivityLabelEvents = ActivityLabelEvents;
7942
8183
  exports.AgentCapabilities = require_data_service.AgentCapabilities;
7943
- exports.AnnotationTypes = require_data_service.AnnotationTypes;
8184
+ exports.AnnotationTypes = AnnotationTypes;
7944
8185
  exports.AnthropicEffort = require_data_service.AnthropicEffort;
7945
8186
  exports.ApprovalEvents = ApprovalEvents;
7946
8187
  exports.ArtifactModes = ArtifactModes;
@@ -7960,8 +8201,11 @@ exports.CODE_ENVIRONMENT_COMMAND_TIMEOUT_DEFAULT_MS = require_data_service.CODE_
7960
8201
  exports.CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS = require_data_service.CODE_ENVIRONMENT_COMMAND_TIMEOUT_HARD_MAX_MS;
7961
8202
  exports.CODE_ENVIRONMENT_DECISION_VERSION = require_data_service.CODE_ENVIRONMENT_DECISION_VERSION;
7962
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;
7963
8206
  exports.CODE_ENV_KINDS = CODE_ENV_KINDS;
7964
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;
7965
8209
  exports.CODE_WORKSPACE_MAX_COUNT = require_data_service.CODE_WORKSPACE_MAX_COUNT;
7966
8210
  exports.CODE_WORKSPACE_OPERATIONS = require_data_service.CODE_WORKSPACE_OPERATIONS;
7967
8211
  exports.CODE_WORKSPACE_SELECTION_ERROR_REASONS = require_data_service.CODE_WORKSPACE_SELECTION_ERROR_REASONS;
@@ -7975,7 +8219,15 @@ exports.ComponentTypes = require_data_service.ComponentTypes;
7975
8219
  exports.Constants = require_data_service.Constants;
7976
8220
  exports.ContentTypes = ContentTypes;
7977
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;
7978
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;
7979
8231
  exports.DefaultLLMDeliveryPath = require_data_service.DefaultLLMDeliveryPath;
7980
8232
  exports.DynamicQueryKeys = require_data_service.DynamicQueryKeys;
7981
8233
  exports.EImageOutputType = require_data_service.EImageOutputType;
@@ -8015,6 +8267,7 @@ exports.MAX_CHAT_PROJECT_DESCRIPTION_LENGTH = require_data_service.MAX_CHAT_PROJ
8015
8267
  exports.MAX_CHAT_PROJECT_NAME_LENGTH = require_data_service.MAX_CHAT_PROJECT_NAME_LENGTH;
8016
8268
  exports.MAX_GRAPH_SUBAGENT_MEMBERS = require_data_service.MAX_GRAPH_SUBAGENT_MEMBERS;
8017
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;
8018
8271
  exports.MAX_PII_CUSTOM_PATTERNS_TOTAL = require_data_service.MAX_PII_CUSTOM_PATTERNS_TOTAL;
8019
8272
  exports.MAX_PII_CUSTOM_REGEX_CHARACTERS = require_data_service.MAX_PII_CUSTOM_REGEX_CHARACTERS;
8020
8273
  exports.MAX_PII_CUSTOM_REGEX_INSTRUCTIONS = require_data_service.MAX_PII_CUSTOM_REGEX_INSTRUCTIONS;
@@ -8035,13 +8288,15 @@ exports.MCP_SERVER_TITLE_PATTERN = require_data_service.MCP_SERVER_TITLE_PATTERN
8035
8288
  exports.MCP_USER_INPUT_FIELDS = require_data_service.MCP_USER_INPUT_FIELDS;
8036
8289
  exports.MEMORY_FILTER_FIELDS = require_data_service.MEMORY_FILTER_FIELDS;
8037
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;
8038
8292
  exports.MIN_REPORTABLE_RUN_STEP_DURATION_MS = MIN_REPORTABLE_RUN_STEP_DURATION_MS;
8039
8293
  exports.MODEL_PARAMETER_FILTER_FIELDS = require_data_service.MODEL_PARAMETER_FILTER_FIELDS;
8040
8294
  exports.MYTHOS_CLASS_FAMILIES = require_data_service.MYTHOS_CLASS_FAMILIES;
8041
8295
  exports.MemoryScope = require_data_service.MemoryScope;
8042
- exports.MessageContentTypes = require_data_service.MessageContentTypes;
8296
+ exports.MessageContentTypes = MessageContentTypes;
8043
8297
  exports.MutationKeys = require_data_service.MutationKeys;
8044
8298
  exports.OCRStrategy = require_data_service.OCRStrategy;
8299
+ exports.OPUS_55_BLOCK_BINDING = OPUS_55_BLOCK_BINDING;
8045
8300
  exports.OptionTypes = require_data_service.OptionTypes;
8046
8301
  exports.PERMISSION_SUB_KEYS = PERMISSION_SUB_KEYS;
8047
8302
  exports.PERMISSION_TYPE_INTERFACE_FIELDS = PERMISSION_TYPE_INTERFACE_FIELDS;
@@ -8098,11 +8353,12 @@ exports.SkillsScope = require_data_service.SkillsScope;
8098
8353
  exports.StdioOptionsSchema = require_data_service.StdioOptionsSchema;
8099
8354
  exports.SteerEvents = SteerEvents;
8100
8355
  exports.StepEvents = StepEvents;
8101
- exports.StepStatus = require_data_service.StepStatus;
8356
+ exports.StepStatus = StepStatus;
8102
8357
  exports.StepTypes = StepTypes;
8103
8358
  exports.StreamableHTTPOptionsSchema = require_data_service.StreamableHTTPOptionsSchema;
8104
8359
  exports.SystemCategories = require_data_service.SystemCategories;
8105
8360
  exports.SystemRoles = SystemRoles;
8361
+ exports.THINKING_BINDING_BETA = THINKING_BINDING_BETA;
8106
8362
  exports.TOOL_ARGUMENT_FILTER_FIELDS = require_data_service.TOOL_ARGUMENT_FILTER_FIELDS;
8107
8363
  exports.TRACE_CURSOR_MAX_LENGTH = TRACE_CURSOR_MAX_LENGTH;
8108
8364
  exports.TRACE_RECORD_ID_MAX_LENGTH = TRACE_RECORD_ID_MAX_LENGTH;
@@ -8150,6 +8406,8 @@ exports.apiBaseUrl = require_data_service.apiBaseUrl;
8150
8406
  exports.appendAgentIdSuffix = appendAgentIdSuffix;
8151
8407
  exports.applicationMimeTypes = require_data_service.applicationMimeTypes;
8152
8408
  exports.applyModelAwareDefaults = applyModelAwareDefaults;
8409
+ exports.askUserQuestionConfigSchema = require_data_service.askUserQuestionConfigSchema;
8410
+ exports.askUserQuestionRetainedAnswersSchema = require_data_service.askUserQuestionRetainedAnswersSchema;
8153
8411
  exports.assistantEndpointSchema = require_data_service.assistantEndpointSchema;
8154
8412
  exports.assistantSchema = require_data_service.assistantSchema;
8155
8413
  exports.audioMimeTypes = require_data_service.audioMimeTypes;
@@ -8159,6 +8417,7 @@ exports.azureBaseSchema = require_data_service.azureBaseSchema;
8159
8417
  exports.azureEndpointSchema = require_data_service.azureEndpointSchema;
8160
8418
  exports.azureGroupConfigsSchema = require_data_service.azureGroupConfigsSchema;
8161
8419
  exports.azureGroupSchema = require_data_service.azureGroupSchema;
8420
+ exports.backgroundResultMetadata = backgroundResultMetadata;
8162
8421
  exports.badge = badge;
8163
8422
  exports.balanceSchema = require_data_service.balanceSchema;
8164
8423
  exports.baseEndpointSchema = require_data_service.baseEndpointSchema;
@@ -8300,6 +8559,7 @@ exports.getCodeEnvRefForProfile = getCodeEnvRefForProfile;
8300
8559
  exports.getCodeEnvRefs = getCodeEnvRefs;
8301
8560
  exports.getConfigDefaults = require_data_service.getConfigDefaults;
8302
8561
  exports.getConfiguredMimeAccept = require_data_service.getConfiguredMimeAccept;
8562
+ exports.getCustomEndpointProvider = getCustomEndpointProvider;
8303
8563
  exports.getDefaultParamsEndpoint = require_data_service.getDefaultParamsEndpoint;
8304
8564
  exports.getDocumentFileExtension = require_data_service.getDocumentFileExtension;
8305
8565
  exports.getEnabledEndpoints = getEnabledEndpoints;
@@ -8330,12 +8590,16 @@ exports.googleSettings = require_data_service.googleSettings;
8330
8590
  exports.hasActiveFiltersConfig = require_data_service.hasActiveFiltersConfig;
8331
8591
  exports.hasActivePiiFields = require_data_service.hasActivePiiFields;
8332
8592
  exports.hasActivePiiPatterns = require_data_service.hasActivePiiPatterns;
8593
+ exports.hasConfiguredFooter = hasConfiguredFooter;
8594
+ exports.hasInferredLLMDeliveryPath = hasInferredLLMDeliveryPath;
8333
8595
  exports.hasPermissions = require_data_service.hasPermissions;
8334
8596
  exports.hasProcessMCPServerConfig = require_data_service.hasProcessMCPServerConfig;
8335
8597
  exports.hasTextExtractionPath = hasTextExtractionPath;
8336
8598
  exports.hasToolCallErrorPrefix = hasToolCallErrorPrefix;
8337
- exports.hostImageIdSuffix = require_data_service.hostImageIdSuffix;
8338
- exports.hostImageNamePrefix = require_data_service.hostImageNamePrefix;
8599
+ exports.hasToolResourceProvisioning = hasToolResourceProvisioning;
8600
+ exports.hasTurnFileConsumer = hasTurnFileConsumer;
8601
+ exports.hostImageIdSuffix = hostImageIdSuffix;
8602
+ exports.hostImageNamePrefix = hostImageNamePrefix;
8339
8603
  exports.hoverCard = hoverCard;
8340
8604
  exports.imageDetailNumeric = require_data_service.imageDetailNumeric;
8341
8605
  exports.imageDetailValue = require_data_service.imageDetailValue;
@@ -8356,13 +8620,16 @@ exports.isAssistantsEndpoint = require_data_service.isAssistantsEndpoint;
8356
8620
  exports.isBedrockDocumentType = require_data_service.isBedrockDocumentType;
8357
8621
  exports.isCodeEnvironmentMode = require_data_service.isCodeEnvironmentMode;
8358
8622
  exports.isCodeWorkerShell = isCodeWorkerShell;
8623
+ exports.isCodeWorkspaceEnvironment = require_data_service.isCodeWorkspaceEnvironment;
8359
8624
  exports.isCodeWorkspaceSelection = require_data_service.isCodeWorkspaceSelection;
8360
8625
  exports.isCodeWorkspaceSelectionErrorReason = require_data_service.isCodeWorkspaceSelectionErrorReason;
8361
8626
  exports.isCodeWorkspaceSelections = require_data_service.isCodeWorkspaceSelections;
8362
8627
  exports.isCompactedLeaf = isCompactedLeaf;
8628
+ exports.isConfiguredSender = isConfiguredSender;
8363
8629
  exports.isCronCadence = isCronCadence;
8364
8630
  exports.isDocumentSupportedProvider = require_data_service.isDocumentSupportedProvider;
8365
8631
  exports.isEphemeralAgentId = isEphemeralAgentId;
8632
+ exports.isExplicitMimeConfig = require_data_service.isExplicitMimeConfig;
8366
8633
  exports.isImageVisionTool = require_data_service.isImageVisionTool;
8367
8634
  exports.isKnownProviderIdentifier = require_data_service.isKnownProviderIdentifier;
8368
8635
  exports.isMediaSupportedProvider = require_data_service.isMediaSupportedProvider;
@@ -8370,12 +8637,14 @@ exports.isMessageFileUpload = require_data_service.isMessageFileUpload;
8370
8637
  exports.isMythosClassModel = require_data_service.isMythosClassModel;
8371
8638
  exports.isNativelyReadableText = isNativelyReadableText;
8372
8639
  exports.isOpenAILikeProvider = require_data_service.isOpenAILikeProvider;
8640
+ exports.isOpus55Model = isOpus55Model;
8373
8641
  exports.isParamEndpoint = require_data_service.isParamEndpoint;
8374
8642
  exports.isPermissiveMimeConfig = require_data_service.isPermissiveMimeConfig;
8375
8643
  exports.isProcessMCPServerConfig = require_data_service.isProcessMCPServerConfig;
8376
8644
  exports.isProcessMCPServerField = require_data_service.isProcessMCPServerField;
8377
8645
  exports.isRemoteOidcUrlAllowed = require_data_service.isRemoteOidcUrlAllowed;
8378
8646
  exports.isReportableRunStepDuration = isReportableRunStepDuration;
8647
+ exports.isRepositoryInstructionDescriptor = require_data_service.isRepositoryInstructionDescriptor;
8379
8648
  exports.isResponsesApiUpload = require_data_service.isResponsesApiUpload;
8380
8649
  exports.isSecureCodeEnvironmentControlURL = require_data_service.isSecureCodeEnvironmentControlURL;
8381
8650
  exports.isSensitiveEnvVar = require_data_service.isSensitiveEnvVar;
@@ -8431,6 +8700,7 @@ exports.omitsThinkingByDefault = omitsThinkingByDefault;
8431
8700
  exports.openAIBaseSchema = require_data_service.openAIBaseSchema;
8432
8701
  exports.openAISchema = require_data_service.openAISchema;
8433
8702
  exports.openAISettings = require_data_service.openAISettings;
8703
+ exports.openIdDiscoverySchema = require_data_service.openIdDiscoverySchema;
8434
8704
  exports.openRouterSchema = require_data_service.openRouterSchema;
8435
8705
  exports.openapiToFunction = openapiToFunction;
8436
8706
  exports.orderEndpointsConfig = orderEndpointsConfig;
@@ -8447,8 +8717,10 @@ exports.parseTextParts = parseTextParts;
8447
8717
  exports.peoplePickerPermissionsSchema = peoplePickerPermissionsSchema;
8448
8718
  exports.permBitsToAccessLevel = require_data_service.permBitsToAccessLevel;
8449
8719
  exports.permissionEntrySchema = require_data_service.permissionEntrySchema;
8720
+ exports.permissionWriteAttemptsSchema = require_data_service.permissionWriteAttemptsSchema;
8450
8721
  exports.permissionsSchema = permissionsSchema;
8451
8722
  exports.popover = popover;
8723
+ exports.prefersResponsesApiByModel = require_data_service.prefersResponsesApiByModel;
8452
8724
  exports.presetSettings = presetSettings;
8453
8725
  exports.principalSchema = require_data_service.principalSchema;
8454
8726
  exports.progress = progress;
@@ -8475,6 +8747,7 @@ exports.resolveCodePermissionDecision = require_data_service.resolveCodePermissi
8475
8747
  exports.resolveDefaultLLMDeliveryPath = resolveDefaultLLMDeliveryPath;
8476
8748
  exports.resolveDefaultUploadLLMDeliveryPath = resolveDefaultUploadLLMDeliveryPath;
8477
8749
  exports.resolveDropParamsUIKeys = resolveDropParamsUIKeys;
8750
+ exports.resolveEffectiveUseResponsesApi = require_data_service.resolveEffectiveUseResponsesApi;
8478
8751
  exports.resolveEndpointType = require_data_service.resolveEndpointType;
8479
8752
  exports.resolveModelCatalogKey = resolveModelCatalogKey;
8480
8753
  exports.resolveModelSpecEndpoint = require_data_service.resolveModelSpecEndpoint;
@@ -8484,6 +8757,7 @@ exports.resolveSandboxFilename = require_data_service.resolveSandboxFilename;
8484
8757
  exports.resolveStatefulCodeEnvironment = require_data_service.resolveStatefulCodeEnvironment;
8485
8758
  exports.resolveThinkingDisplay = resolveThinkingDisplay;
8486
8759
  exports.resolveTraceViewerConfig = require_data_service.resolveTraceViewerConfig;
8760
+ exports.resolveTurnLLMDeliveryPath = resolveTurnLLMDeliveryPath;
8487
8761
  exports.resolveUploadDestination = resolveUploadDestination;
8488
8762
  exports.resolveUploadLLMDeliveryPath = resolveUploadLLMDeliveryPath;
8489
8763
  exports.resolveUseResponsesApi = require_data_service.resolveUseResponsesApi;