librechat-data-provider 0.8.508 → 0.8.521
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{data-service-DN-HeTC-.js → data-service-DOIF4BkW.js} +1211 -92
- package/dist/data-service-DOIF4BkW.js.map +1 -0
- package/dist/{data-service-DgNwjhBS.mjs → data-service-pwrlWjJs.mjs} +1062 -93
- package/dist/data-service-pwrlWjJs.mjs.map +1 -0
- package/dist/index.js +472 -57
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +440 -58
- package/dist/index.mjs.map +1 -1
- package/dist/react-query/index.js +1 -1
- package/dist/react-query/index.js.map +1 -1
- package/dist/react-query/index.mjs +1 -1
- package/dist/react-query/index.mjs.map +1 -1
- package/dist/types/actions.d.ts +1 -1
- package/dist/types/api-endpoints.d.ts +11 -2
- package/dist/types/bedrock.d.ts +57 -0
- package/dist/types/config.d.ts +4230 -183
- package/dist/types/data-service.d.ts +28 -14
- package/dist/types/feedback.d.ts +9 -1
- package/dist/types/file-config.d.ts +41 -5
- package/dist/types/generate.d.ts +8 -0
- package/dist/types/keys.d.ts +7 -2
- package/dist/types/mcp.d.ts +45 -24
- package/dist/types/messages.d.ts +8 -0
- package/dist/types/models.d.ts +120 -0
- package/dist/types/parameterSettings.d.ts +2 -2
- package/dist/types/parsers.d.ts +3 -1
- package/dist/types/react-query/react-query-service.d.ts +2 -7
- package/dist/types/request.d.ts +3 -1
- package/dist/types/schemas.d.ts +211 -11
- package/dist/types/types/agents.d.ts +211 -1
- package/dist/types/types/assistants.d.ts +77 -5
- package/dist/types/types/files.d.ts +18 -7
- package/dist/types/types/mcpServers.d.ts +25 -0
- package/dist/types/types/mutations.d.ts +1 -0
- package/dist/types/types/queries.d.ts +17 -3
- package/dist/types/types/runs.d.ts +114 -25
- package/dist/types/types/skills.d.ts +25 -6
- package/dist/types/types.d.ts +117 -2
- package/dist/types/upload.d.ts +2 -0
- package/package.json +4 -4
- package/dist/data-service-DN-HeTC-.js.map +0 -1
- package/dist/data-service-DgNwjhBS.mjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_data_service = require("./data-service-
|
|
2
|
+
const require_data_service = require("./data-service-DOIF4BkW.js");
|
|
3
3
|
let zod = require("zod");
|
|
4
4
|
let dayjs = require("dayjs");
|
|
5
5
|
dayjs = require_data_service.__toESM(dayjs);
|
|
@@ -14,10 +14,13 @@ let crypto = require("crypto");
|
|
|
14
14
|
crypto = require_data_service.__toESM(crypto);
|
|
15
15
|
let js_yaml = require("js-yaml");
|
|
16
16
|
//#region src/bedrock.ts
|
|
17
|
-
const DEFAULT_ENABLED_MAX_TOKENS = 8192;
|
|
18
17
|
const DEFAULT_THINKING_BUDGET = 2e3;
|
|
18
|
+
const BEDROCK_CLAUDE_SONNET_4_6_MAX_OUTPUT = 64e3;
|
|
19
19
|
const BEDROCK_OUTPUT_128K_BETA = "output-128k-2025-02-19";
|
|
20
20
|
const BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA = "fine-grained-tool-streaming-2025-05-14";
|
|
21
|
+
/** Betas LibreChat injects itself, safe to strip from persisted AMRF when a
|
|
22
|
+
* model no longer supports them; anything else in `anthropic_beta` is a user opt-in. */
|
|
23
|
+
const GENERATED_BEDROCK_BETAS = new Set([BEDROCK_OUTPUT_128K_BETA, BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA]);
|
|
21
24
|
const bedrockReasoningConfigValues = new Set(Object.values(require_data_service.BedrockReasoningConfig));
|
|
22
25
|
/**
|
|
23
26
|
* Resolves the final `thinking.display` value for an adaptive-thinking request.
|
|
@@ -62,14 +65,14 @@ function parseOpusVersion(model) {
|
|
|
62
65
|
return null;
|
|
63
66
|
}
|
|
64
67
|
/** Extracts sonnet major/minor version from both naming formats.
|
|
65
|
-
* Uses
|
|
68
|
+
* Uses bounded minor capture to avoid matching date suffixes (e.g., -20250514). */
|
|
66
69
|
function parseSonnetVersion(model) {
|
|
67
|
-
const nameFirst = model.match(/claude-sonnet[-.]?(\d+)(?:[-.](\d)(?!\d))?/);
|
|
70
|
+
const nameFirst = model.match(/claude-sonnet[-.]?(\d+)(?:[-.](\d{1,2})(?!\d))?/);
|
|
68
71
|
if (nameFirst) return {
|
|
69
72
|
major: parseInt(nameFirst[1], 10),
|
|
70
73
|
minor: nameFirst[2] != null ? parseInt(nameFirst[2], 10) : 0
|
|
71
74
|
};
|
|
72
|
-
const numFirst = model.match(/claude-(\d+)(?:[-.](\d)(?!\d))?-sonnet/);
|
|
75
|
+
const numFirst = model.match(/claude-(\d+)(?:[-.](\d{1,2})(?!\d))?-sonnet/);
|
|
73
76
|
if (numFirst) return {
|
|
74
77
|
major: parseInt(numFirst[1], 10),
|
|
75
78
|
minor: numFirst[2] != null ? parseInt(numFirst[2], 10) : 0
|
|
@@ -103,15 +106,80 @@ function supportsAdaptiveThinking(model) {
|
|
|
103
106
|
function omitsThinkingByDefault(model) {
|
|
104
107
|
const opus = parseOpusVersion(model);
|
|
105
108
|
if (opus && (opus.major > 4 || opus.major === 4 && opus.minor >= 7)) return true;
|
|
109
|
+
const sonnet = parseSonnetVersion(model);
|
|
110
|
+
if (sonnet != null && sonnet.major >= 5) return true;
|
|
106
111
|
if (require_data_service.isMythosClassModel(model)) return true;
|
|
107
112
|
return false;
|
|
108
113
|
}
|
|
109
114
|
function omitsSamplingParameters(model) {
|
|
110
115
|
const opus = parseOpusVersion(model);
|
|
111
116
|
if (opus && (opus.major > 4 || opus.major === 4 && opus.minor >= 7)) return true;
|
|
117
|
+
const sonnet = parseSonnetVersion(model);
|
|
118
|
+
if (sonnet != null && sonnet.major >= 5) return true;
|
|
112
119
|
if (require_data_service.isMythosClassModel(model)) return true;
|
|
113
120
|
return false;
|
|
114
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Whether disabling thinking requires sending an explicit `{ type: 'disabled' }`
|
|
124
|
+
* config rather than simply omitting the `thinking` field.
|
|
125
|
+
*
|
|
126
|
+
* Sonnet 5 and Opus 5 treat an omitted `thinking` field as adaptive thinking ON
|
|
127
|
+
* by default, so honoring a user who turns thinking off means sending the
|
|
128
|
+
* disabled config explicitly. Opus 4.7/4.8 run without thinking when the field
|
|
129
|
+
* is omitted, and Fable/Mythos reject an explicit disabled config (400,
|
|
130
|
+
* thinking always on), so both are excluded.
|
|
131
|
+
*
|
|
132
|
+
* See https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-sonnet-5
|
|
133
|
+
*/
|
|
134
|
+
function requiresExplicitThinkingDisabled(model) {
|
|
135
|
+
const sonnet = parseSonnetVersion(model);
|
|
136
|
+
if (sonnet != null && sonnet.major >= 5) return true;
|
|
137
|
+
const opus = parseOpusVersion(model);
|
|
138
|
+
return opus != null && opus.major >= 5;
|
|
139
|
+
}
|
|
140
|
+
/** Effort levels Opus 5 rejects while thinking is explicitly disabled. */
|
|
141
|
+
const EFFORTS_REJECTED_WHEN_THINKING_DISABLED = new Set(["xhigh", "max"]);
|
|
142
|
+
/**
|
|
143
|
+
* Whether the model caps `output_config.effort` while thinking is disabled.
|
|
144
|
+
*
|
|
145
|
+
* Opus 5 rejects `xhigh`/`max` in that combination with a 400: "output_config
|
|
146
|
+
* .effort 'xhigh' is not supported when thinking is disabled on this model. Use
|
|
147
|
+
* effort 'high' or below, or enable thinking." Opus 4.7/4.8, Sonnet 5, and
|
|
148
|
+
* Sonnet 4.6 accept every effort level they otherwise support with thinking
|
|
149
|
+
* off, so the cap is Opus 5+ only.
|
|
150
|
+
*/
|
|
151
|
+
function capsEffortWhenThinkingDisabled(model) {
|
|
152
|
+
const opus = parseOpusVersion(model);
|
|
153
|
+
return opus != null && opus.major >= 5;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Lowers an effort level the model would reject while thinking is disabled to
|
|
157
|
+
* the highest accepted value (`high`, which is also the API default). Returns
|
|
158
|
+
* the effort unchanged when the combination is valid.
|
|
159
|
+
*/
|
|
160
|
+
function clampEffortForDisabledThinking(model, effort) {
|
|
161
|
+
if (capsEffortWhenThinkingDisabled(model) && EFFORTS_REJECTED_WHEN_THINKING_DISABLED.has(effort)) return "high";
|
|
162
|
+
return effort;
|
|
163
|
+
}
|
|
164
|
+
/** An `output_config` container carrying a usable effort level. */
|
|
165
|
+
function hasStringEffort(value) {
|
|
166
|
+
if (typeof value !== "object" || value === null || !("effort" in value)) return false;
|
|
167
|
+
return typeof value.effort === "string";
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Clamps an `output_config.effort` in place when the model would reject it
|
|
171
|
+
* while thinking is disabled. No-op when the container carries no string
|
|
172
|
+
* effort, so callers can pass a possibly-absent config directly.
|
|
173
|
+
*/
|
|
174
|
+
function clampOutputConfigEffort(model, outputConfig) {
|
|
175
|
+
if (!hasStringEffort(outputConfig)) return;
|
|
176
|
+
outputConfig.effort = clampEffortForDisabledThinking(model, outputConfig.effort);
|
|
177
|
+
}
|
|
178
|
+
/** Whether a resolved thinking config is an explicit `{ type: 'disabled' }`. */
|
|
179
|
+
function isThinkingDisabled(thinking) {
|
|
180
|
+
if (typeof thinking !== "object" || thinking === null || !("type" in thinking)) return false;
|
|
181
|
+
return thinking.type === "disabled";
|
|
182
|
+
}
|
|
115
183
|
/** Checks if a model has a 1M context window (Sonnet 4.6+, Opus 4.6+, Opus 5+, Fable/Mythos) */
|
|
116
184
|
function supportsContext1m(model) {
|
|
117
185
|
const sonnet = parseSonnetVersion(model);
|
|
@@ -122,6 +190,19 @@ function supportsContext1m(model) {
|
|
|
122
190
|
return false;
|
|
123
191
|
}
|
|
124
192
|
/**
|
|
193
|
+
* A Bedrock Claude model ID may be prefixed (`anthropic.claude-*`,
|
|
194
|
+
* `us.anthropic.claude-*`, `global.anthropic.claude-*`) or bare (`claude-*`,
|
|
195
|
+
* used when the LibreChat model ID maps to an application inference profile).
|
|
196
|
+
* Match on the `claude` family token so every form is recognized — requiring
|
|
197
|
+
* the literal `anthropic.` prefix silently dropped thinking config, beta
|
|
198
|
+
* headers, and sampling handling for inference-profile deployments.
|
|
199
|
+
*/
|
|
200
|
+
const BEDROCK_CLAUDE_4PLUS_THINKING = /claude-(?:[4-9](?:\.\d+)?(?:-\d+)?-(?:sonnet|opus|haiku)|(?:sonnet|opus|haiku)-[4-9])/;
|
|
201
|
+
/** Whether a Bedrock model ID is an Anthropic Claude model (prefixed or bare). */
|
|
202
|
+
function isBedrockClaudeModel(model) {
|
|
203
|
+
return model.includes("claude");
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
125
206
|
* Gets the appropriate anthropic_beta headers for Bedrock Anthropic models.
|
|
126
207
|
* Bedrock uses `anthropic_beta` (with underscore) in additionalModelRequestFields.
|
|
127
208
|
*
|
|
@@ -132,19 +213,33 @@ function getBedrockAnthropicBetaHeaders(model) {
|
|
|
132
213
|
const betaHeaders = [];
|
|
133
214
|
/** Mythos-class (Fable/Mythos) is intentionally not matched: these betas are built-in/no-op for the
|
|
134
215
|
* 4.7+ generation (Fable has native 128K output), so omitting them on Bedrock is lossless. */
|
|
135
|
-
const isClaude4PlusModel =
|
|
136
|
-
if (model.includes("
|
|
216
|
+
const isClaude4PlusModel = BEDROCK_CLAUDE_4PLUS_THINKING.test(model);
|
|
217
|
+
if (model.includes("claude-3-7-sonnet") || isClaude4PlusModel) betaHeaders.push(BEDROCK_OUTPUT_128K_BETA);
|
|
137
218
|
if (isClaude4PlusModel) betaHeaders.push(BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA);
|
|
138
219
|
return betaHeaders;
|
|
139
220
|
}
|
|
221
|
+
/** Flatten an anthropic_beta value (array, single string, or comma-delimited
|
|
222
|
+
* string) into trimmed, non-empty header tokens. */
|
|
223
|
+
function normalizeBetaHeaders(value) {
|
|
224
|
+
let values = [];
|
|
225
|
+
if (Array.isArray(value)) values = value;
|
|
226
|
+
else if (typeof value === "string") values = [value];
|
|
227
|
+
const headers = [];
|
|
228
|
+
values.forEach((entry) => {
|
|
229
|
+
if (typeof entry !== "string") return;
|
|
230
|
+
entry.split(",").map((header) => header.trim()).filter(Boolean).forEach((header) => headers.push(header));
|
|
231
|
+
});
|
|
232
|
+
return headers;
|
|
233
|
+
}
|
|
140
234
|
function mergeBedrockAnthropicBetaHeaders(existing, generated) {
|
|
141
|
-
|
|
142
|
-
if (Array.isArray(existing)) existingValues = existing;
|
|
143
|
-
else if (typeof existing === "string") existingValues = [existing];
|
|
235
|
+
const generatedSet = new Set(generated);
|
|
144
236
|
const betaHeaders = /* @__PURE__ */ new Set();
|
|
145
|
-
[...
|
|
146
|
-
|
|
147
|
-
|
|
237
|
+
[...normalizeBetaHeaders(existing), ...generated].forEach((header) => {
|
|
238
|
+
/** Drop a generated beta carried over from a prior model that the current
|
|
239
|
+
* model does not generate (e.g. fine-grained-tool-streaming on a 3.7
|
|
240
|
+
* profile); user opt-ins are always preserved. */
|
|
241
|
+
if (GENERATED_BEDROCK_BETAS.has(header) && !generatedSet.has(header)) return;
|
|
242
|
+
betaHeaders.add(header);
|
|
148
243
|
});
|
|
149
244
|
return Array.from(betaHeaders);
|
|
150
245
|
}
|
|
@@ -178,7 +273,7 @@ const bedrockInputSchema = require_data_service.tConversationSchema.pick({
|
|
|
178
273
|
}).transform((obj) => {
|
|
179
274
|
if (obj.additionalModelRequestFields?.thinking != null) {
|
|
180
275
|
const thinking = obj.additionalModelRequestFields.thinking;
|
|
181
|
-
obj.thinking = !!thinking;
|
|
276
|
+
obj.thinking = typeof thinking === "object" && thinking !== null && thinking.type === "disabled" ? false : !!thinking;
|
|
182
277
|
obj.thinkingBudget = typeof thinking === "object" && "budget_tokens" in thinking ? thinking.budget_tokens : void 0;
|
|
183
278
|
if (obj.thinkingDisplay == null) {
|
|
184
279
|
const persistedDisplay = extractPersistedDisplay({ thinking });
|
|
@@ -245,16 +340,49 @@ const bedrockInputParser = require_data_service.tConversationSchema.pick({
|
|
|
245
340
|
delete typedData[key];
|
|
246
341
|
}
|
|
247
342
|
});
|
|
248
|
-
/**
|
|
249
|
-
|
|
343
|
+
/**
|
|
344
|
+
* Persisted `model_parameters` can carry a prior "thinking off" only inside
|
|
345
|
+
* `additionalModelRequestFields.thinking = { type: 'disabled' }` (a known
|
|
346
|
+
* key that isn't spread into `additionalFields`). `initializeBedrock` feeds
|
|
347
|
+
* those params straight through this parser, so surface that as
|
|
348
|
+
* `thinking: false` — otherwise the disabled branch is skipped and the
|
|
349
|
+
* config rebuilds adaptive, flipping a user's Sonnet 5 setting back on.
|
|
350
|
+
*/
|
|
351
|
+
const persistedThinking = typedData.additionalModelRequestFields?.thinking;
|
|
352
|
+
if (additionalFields.thinking === void 0 && typeof persistedThinking === "object" && persistedThinking !== null && persistedThinking.type === "disabled") additionalFields.thinking = false;
|
|
353
|
+
/** Bedrock thinking-capable Claude models: 3.7 Sonnet, Claude 4+ (opus/sonnet/haiku), and Mythos-class (Fable/Mythos). */
|
|
354
|
+
const isThinkingModel = typeof typedData.model === "string" && (typedData.model.includes("claude-3-7-sonnet") || BEDROCK_CLAUDE_4PLUS_THINKING.test(typedData.model) || require_data_service.isMythosClassModel(typedData.model));
|
|
355
|
+
if (isThinkingModel) {
|
|
250
356
|
if (supportsAdaptiveThinking(typedData.model)) {
|
|
357
|
+
/** Persisted AMRF is spread into the final request, so clearing only
|
|
358
|
+
* `additionalFields` leaves a stale value from a prior selection. */
|
|
359
|
+
const persistedAmrf = typedData.additionalModelRequestFields;
|
|
360
|
+
const thinkingDisabled = additionalFields.thinking === false;
|
|
251
361
|
const effort = additionalFields.effort;
|
|
252
|
-
if (
|
|
362
|
+
if (typeof effort === "string" && effort !== "") additionalFields.output_config = { effort };
|
|
363
|
+
else if (effort !== void 0 && persistedAmrf)
|
|
364
|
+
/** Explicit unset ('' or null) clears the persisted effort. An absent
|
|
365
|
+
* effort (agent resume, where the prior llmConfig persisted
|
|
366
|
+
* `output_config` but no top-level `effort`) preserves it. */
|
|
367
|
+
delete persistedAmrf.output_config;
|
|
253
368
|
delete additionalFields.effort;
|
|
369
|
+
/**
|
|
370
|
+
* Opus 5 rejects `xhigh`/`max` effort while thinking is disabled, so
|
|
371
|
+
* clamp both the effort derived above and any effort still carried in
|
|
372
|
+
* persisted AMRF (agent resume sends `output_config` with no top-level
|
|
373
|
+
* `effort`, so the branch above leaves it untouched).
|
|
374
|
+
*/
|
|
375
|
+
if (thinkingDisabled) [additionalFields, persistedAmrf].forEach((target) => clampOutputConfigEffort(typedData.model, target?.output_config));
|
|
254
376
|
if (additionalFields.thinking === false) {
|
|
255
|
-
delete additionalFields.thinking;
|
|
256
377
|
delete additionalFields.thinkingBudget;
|
|
257
378
|
delete additionalFields.thinkingDisplay;
|
|
379
|
+
if (requiresExplicitThinkingDisabled(typedData.model)) additionalFields.thinking = { type: "disabled" };
|
|
380
|
+
else {
|
|
381
|
+
delete additionalFields.thinking;
|
|
382
|
+
/** Disable-by-omission models (Opus 4.7+): drop the persisted
|
|
383
|
+
* adaptive config so turning thinking off actually disables it. */
|
|
384
|
+
if (persistedAmrf) delete persistedAmrf.thinking;
|
|
385
|
+
}
|
|
258
386
|
} else {
|
|
259
387
|
/**
|
|
260
388
|
* Persisted agent `model_parameters` round-trip back through this
|
|
@@ -282,10 +410,18 @@ const bedrockInputParser = require_data_service.tConversationSchema.pick({
|
|
|
282
410
|
if (additionalFields.thinking === true && additionalFields.thinkingBudget === void 0) additionalFields.thinkingBudget = DEFAULT_THINKING_BUDGET;
|
|
283
411
|
delete additionalFields.effort;
|
|
284
412
|
delete additionalFields.thinkingDisplay;
|
|
413
|
+
/** A bare non-adaptive thinking profile (e.g. `claude-3-7-sonnet`) must
|
|
414
|
+
* not inherit an adaptive/disabled thinking object or `output_config`
|
|
415
|
+
* persisted from another model; this branch's own fields are authoritative. */
|
|
416
|
+
const persistedAmrf = typedData.additionalModelRequestFields;
|
|
417
|
+
if (persistedAmrf) {
|
|
418
|
+
delete persistedAmrf.thinking;
|
|
419
|
+
delete persistedAmrf.output_config;
|
|
420
|
+
}
|
|
285
421
|
}
|
|
286
422
|
/** Anthropic uses 'effort' via output_config, not reasoning_config */
|
|
287
423
|
delete additionalFields.reasoning_effort;
|
|
288
|
-
if (typedData.model
|
|
424
|
+
if (isBedrockClaudeModel(typedData.model)) {
|
|
289
425
|
const betaHeaders = getBedrockAnthropicBetaHeaders(typedData.model);
|
|
290
426
|
if (betaHeaders.length > 0) {
|
|
291
427
|
const existingBetaHeaders = typedData.additionalModelRequestFields?.anthropic_beta;
|
|
@@ -303,7 +439,7 @@ const bedrockInputParser = require_data_service.tConversationSchema.pick({
|
|
|
303
439
|
delete additionalFields.reasoning_effort;
|
|
304
440
|
if (typeof reasoningEffort === "string" && bedrockReasoningConfigValues.has(reasoningEffort)) additionalFields.reasoning_config = reasoningEffort;
|
|
305
441
|
}
|
|
306
|
-
const isAnthropicModel = typeof typedData.model === "string" && typedData.model
|
|
442
|
+
const isAnthropicModel = typeof typedData.model === "string" && isBedrockClaudeModel(typedData.model);
|
|
307
443
|
/** Strip stale fields from previously-persisted additionalModelRequestFields */
|
|
308
444
|
if (typeof typedData.additionalModelRequestFields === "object" && typedData.additionalModelRequestFields != null) {
|
|
309
445
|
const amrf = typedData.additionalModelRequestFields;
|
|
@@ -317,6 +453,22 @@ const bedrockInputParser = require_data_service.tConversationSchema.pick({
|
|
|
317
453
|
} else {
|
|
318
454
|
delete amrf.reasoning_config;
|
|
319
455
|
delete amrf.reasoning_effort;
|
|
456
|
+
/** A Claude model that does not support Bedrock thinking (e.g. a bare
|
|
457
|
+
* `claude-3-5-sonnet` inference profile) must not carry stale thinking
|
|
458
|
+
* fields from a previously-selected thinking model. Drop only the
|
|
459
|
+
* LibreChat-generated betas (output-128k, fine-grained tool streaming);
|
|
460
|
+
* user opt-ins in `anthropic_beta` are preserved. */
|
|
461
|
+
if (!isThinkingModel) {
|
|
462
|
+
delete amrf.thinking;
|
|
463
|
+
delete amrf.thinkingBudget;
|
|
464
|
+
delete amrf.effort;
|
|
465
|
+
delete amrf.output_config;
|
|
466
|
+
if (amrf.anthropic_beta !== void 0) {
|
|
467
|
+
const kept = normalizeBetaHeaders(amrf.anthropic_beta).filter((header) => !GENERATED_BEDROCK_BETAS.has(header));
|
|
468
|
+
if (kept.length > 0) amrf.anthropic_beta = kept;
|
|
469
|
+
else delete amrf.anthropic_beta;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
320
472
|
}
|
|
321
473
|
if (shouldOmitSamplingParameters) {
|
|
322
474
|
delete amrf.temperature;
|
|
@@ -359,11 +511,37 @@ const bedrockInputParser = require_data_service.tConversationSchema.pick({
|
|
|
359
511
|
* @param data - The parsed Bedrock request options object
|
|
360
512
|
* @returns The object with thinking configured appropriately
|
|
361
513
|
*/
|
|
514
|
+
/**
|
|
515
|
+
* `anthropicSettings.maxOutputTokens.reset` only matches the canonical
|
|
516
|
+
* family-first id (`claude-sonnet-5`); Bedrock also accepts number-first
|
|
517
|
+
* aliases (`claude-5-sonnet`, `claude-4-7-sonnet`) that this file gates as
|
|
518
|
+
* thinking models. Canonicalize to family-first so those aliases resolve to the
|
|
519
|
+
* real ceiling instead of the 8192 fallback.
|
|
520
|
+
*/
|
|
521
|
+
function toFamilyFirstClaudeId(model) {
|
|
522
|
+
return model.replace(/claude-(\d+(?:[-.]\d+)?)-(sonnet|opus|haiku)/, "claude-$2-$1");
|
|
523
|
+
}
|
|
524
|
+
function isBedrockClaudeSonnet46(model) {
|
|
525
|
+
return /claude-sonnet[-.]?4[-.]?6(?=$|[^0-9])/.test(toFamilyFirstClaudeId(model));
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* Thinking tokens share the `maxTokens` output budget with tool-call arguments
|
|
529
|
+
* (e.g. a `create_file` `content`), so a low default truncates large authored
|
|
530
|
+
* files mid-argument. Mirror the direct-Anthropic path and default to the
|
|
531
|
+
* model's full max output when the request does not set one explicitly.
|
|
532
|
+
*/
|
|
533
|
+
function resolveThinkingMaxTokens(data) {
|
|
534
|
+
const explicit = data.maxTokens ?? data.maxOutputTokens;
|
|
535
|
+
if (typeof explicit === "number" && explicit > 0) return explicit;
|
|
536
|
+
const model = typeof data.model === "string" ? data.model : "";
|
|
537
|
+
if (isBedrockClaudeSonnet46(model)) return BEDROCK_CLAUDE_SONNET_4_6_MAX_OUTPUT;
|
|
538
|
+
return require_data_service.anthropicSettings.maxOutputTokens.reset(toFamilyFirstClaudeId(model));
|
|
539
|
+
}
|
|
362
540
|
function configureThinking(data) {
|
|
363
541
|
const updatedData = { ...data };
|
|
364
542
|
const thinking = updatedData.additionalModelRequestFields?.thinking;
|
|
365
543
|
if (thinking === true) {
|
|
366
|
-
updatedData.maxTokens = updatedData
|
|
544
|
+
updatedData.maxTokens = resolveThinkingMaxTokens(updatedData);
|
|
367
545
|
delete updatedData.maxOutputTokens;
|
|
368
546
|
const thinkingConfig = {
|
|
369
547
|
type: "enabled",
|
|
@@ -373,12 +551,30 @@ function configureThinking(data) {
|
|
|
373
551
|
updatedData.additionalModelRequestFields.thinking = thinkingConfig;
|
|
374
552
|
delete updatedData.additionalModelRequestFields.thinkingBudget;
|
|
375
553
|
} else if (typeof thinking === "object" && thinking != null && thinking.type === "adaptive") {
|
|
376
|
-
|
|
554
|
+
updatedData.maxTokens = resolveThinkingMaxTokens(updatedData);
|
|
377
555
|
delete updatedData.maxOutputTokens;
|
|
378
556
|
delete updatedData.additionalModelRequestFields.thinkingBudget;
|
|
379
557
|
}
|
|
380
558
|
return updatedData;
|
|
381
559
|
}
|
|
560
|
+
/** Top-level Converse request fields (issue #14029: `system` from a preset).
|
|
561
|
+
* The input parser's catch-all routes unknown keys into
|
|
562
|
+
* additionalModelRequestFields, and Bedrock rejects any that collide with a
|
|
563
|
+
* field the request already sends (`messages`/`modelId` always,
|
|
564
|
+
* `inferenceConfig` whenever maxTokens is set, `toolConfig` for agents). */
|
|
565
|
+
const RESERVED_CONVERSE_FIELDS = [
|
|
566
|
+
"system",
|
|
567
|
+
"messages",
|
|
568
|
+
"modelId",
|
|
569
|
+
"toolConfig",
|
|
570
|
+
"inferenceConfig",
|
|
571
|
+
"guardrailConfig",
|
|
572
|
+
"promptVariables",
|
|
573
|
+
"requestMetadata",
|
|
574
|
+
"performanceConfig",
|
|
575
|
+
"additionalModelRequestFields",
|
|
576
|
+
"additionalModelResponseFieldPaths"
|
|
577
|
+
];
|
|
382
578
|
const bedrockOutputParser = (data) => {
|
|
383
579
|
const knownKeys = [
|
|
384
580
|
...Object.keys(require_data_service.tConversationSchema.shape),
|
|
@@ -397,7 +593,15 @@ const bedrockOutputParser = (data) => {
|
|
|
397
593
|
if (result.maxTokens !== void 0 && result.maxOutputTokens === void 0) result.maxOutputTokens = result.maxTokens;
|
|
398
594
|
else if (result.maxOutputTokens !== void 0 && result.maxTokens === void 0) result.maxTokens = result.maxOutputTokens;
|
|
399
595
|
result = configureThinking(result);
|
|
400
|
-
|
|
596
|
+
let amrf = result.additionalModelRequestFields;
|
|
597
|
+
if (amrf && typeof amrf === "object") {
|
|
598
|
+
const reserved = RESERVED_CONVERSE_FIELDS.filter((key) => key in (amrf ?? {}));
|
|
599
|
+
if (reserved.length > 0) {
|
|
600
|
+
amrf = { ...amrf };
|
|
601
|
+
for (const key of reserved) delete amrf[key];
|
|
602
|
+
result.additionalModelRequestFields = amrf;
|
|
603
|
+
}
|
|
604
|
+
}
|
|
401
605
|
if (!amrf || Object.keys(amrf).length === 0) delete result.additionalModelRequestFields;
|
|
402
606
|
return result;
|
|
403
607
|
};
|
|
@@ -414,6 +618,8 @@ let ContentTypes = /* @__PURE__ */ function(ContentTypes) {
|
|
|
414
618
|
ContentTypes["INPUT_AUDIO"] = "input_audio";
|
|
415
619
|
ContentTypes["AGENT_UPDATE"] = "agent_update";
|
|
416
620
|
ContentTypes["SUMMARY"] = "summary";
|
|
621
|
+
ContentTypes["ACTIVITY_LABEL"] = "activity_label";
|
|
622
|
+
ContentTypes["STEER"] = "steer";
|
|
417
623
|
ContentTypes["ERROR"] = "error";
|
|
418
624
|
return ContentTypes;
|
|
419
625
|
}({});
|
|
@@ -442,6 +648,7 @@ let StepEvents = /* @__PURE__ */ function(StepEvents) {
|
|
|
442
648
|
StepEvents["ON_SUMMARIZE_DELTA"] = "on_summarize_delta";
|
|
443
649
|
StepEvents["ON_SUMMARIZE_COMPLETE"] = "on_summarize_complete";
|
|
444
650
|
StepEvents["ON_SUBAGENT_UPDATE"] = "on_subagent_update";
|
|
651
|
+
StepEvents["ON_SANDBOX_STARTING"] = "on_sandbox_starting";
|
|
445
652
|
return StepEvents;
|
|
446
653
|
}({});
|
|
447
654
|
/** Token-tracking event names streamed to the client (separate from StepEvents dispatch). */
|
|
@@ -451,6 +658,38 @@ let UsageEvents = /* @__PURE__ */ function(UsageEvents) {
|
|
|
451
658
|
return UsageEvents;
|
|
452
659
|
}({});
|
|
453
660
|
/**
|
|
661
|
+
* Human-in-the-loop event names. Streamed to live clients when a run pauses for
|
|
662
|
+
* tool approval (or an ask-user question). Reconnecting clients instead read the
|
|
663
|
+
* same record from `resumeState.pendingAction` on the sync event / status route.
|
|
664
|
+
*/
|
|
665
|
+
let ApprovalEvents = /* @__PURE__ */ function(ApprovalEvents) {
|
|
666
|
+
ApprovalEvents["ON_PENDING_ACTION"] = "on_pending_action";
|
|
667
|
+
return ApprovalEvents;
|
|
668
|
+
}({});
|
|
669
|
+
/**
|
|
670
|
+
* Steering event names. `on_steer_applied` streams to live clients when a
|
|
671
|
+
* queued steer message is injected at a tool-batch boundary; reconnecting
|
|
672
|
+
* clients recover injected steers from `aggregatedContent` and still-queued
|
|
673
|
+
* ones from `resumeState.pendingSteers`. Steers that never reach a boundary
|
|
674
|
+
* ride the final/abort events as `pendingSteers`.
|
|
675
|
+
*/
|
|
676
|
+
let SteerEvents = /* @__PURE__ */ function(SteerEvents) {
|
|
677
|
+
SteerEvents["ON_STEER_APPLIED"] = "on_steer_applied";
|
|
678
|
+
/** Durable capability correction for queued steers after HITL handover. */
|
|
679
|
+
SteerEvents["ON_STEER_UPDATED"] = "on_steer_updated";
|
|
680
|
+
return SteerEvents;
|
|
681
|
+
}({});
|
|
682
|
+
/**
|
|
683
|
+
* Activity-label event names. `on_activity_label` streams to live clients
|
|
684
|
+
* when a tool-batch or parent-phase label part is claimed and again when the
|
|
685
|
+
* fast-model label resolves; reconnecting clients recover applied labels
|
|
686
|
+
* from `aggregatedContent` like any other content part.
|
|
687
|
+
*/
|
|
688
|
+
let ActivityLabelEvents = /* @__PURE__ */ function(ActivityLabelEvents) {
|
|
689
|
+
ActivityLabelEvents["ON_ACTIVITY_LABEL"] = "on_activity_label";
|
|
690
|
+
return ActivityLabelEvents;
|
|
691
|
+
}({});
|
|
692
|
+
/**
|
|
454
693
|
* Full prompt token count for one completed model call — the EXACT context the
|
|
455
694
|
* model saw, provider-aware: additive providers (Bedrock) report `input_tokens`
|
|
456
695
|
* excluding cache, so cache reads/writes are added back; subset providers
|
|
@@ -657,19 +896,21 @@ const parseCompactConvo = ({ endpoint, endpointType, conversation, possibleValue
|
|
|
657
896
|
if (models && convo) convo.model = getFirstDefinedValue(models) ?? convo.model;
|
|
658
897
|
return convo;
|
|
659
898
|
};
|
|
660
|
-
function parseTextParts(contentParts, skipReasoning = false) {
|
|
899
|
+
function parseTextParts(contentParts, skipReasoning = false, options) {
|
|
661
900
|
let result = "";
|
|
901
|
+
const append = (textValue) => {
|
|
902
|
+
if (result.length > 0 && textValue.length > 0 && result[result.length - 1] !== " " && textValue[0] !== " ") result += " ";
|
|
903
|
+
result += textValue;
|
|
904
|
+
};
|
|
662
905
|
for (const part of contentParts) {
|
|
663
906
|
if (!part?.type) continue;
|
|
664
|
-
if (part.type === "text")
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
result += textValue;
|
|
672
|
-
}
|
|
907
|
+
if (part.type === "text") append((typeof part.text === "string" ? part.text : part.text?.value) || "");
|
|
908
|
+
else if (part.type === "steer" && options?.includeSteer === true)
|
|
909
|
+
/** Mid-run user speech: excluded by default so generic extraction (TTS
|
|
910
|
+
* reading assistant output) never speaks the user's own words — the
|
|
911
|
+
* full-record surfaces (search indexing, persisted abort text) opt in. */
|
|
912
|
+
append(typeof part.steer === "string" ? part.steer : "");
|
|
913
|
+
else if (part.type === "think" && !skipReasoning) append(typeof part.think === "string" ? part.think : "");
|
|
673
914
|
}
|
|
674
915
|
return result;
|
|
675
916
|
}
|
|
@@ -1015,14 +1256,27 @@ function mapGroupToAzureConfig({ groupName, groupMap }) {
|
|
|
1015
1256
|
}
|
|
1016
1257
|
//#endregion
|
|
1017
1258
|
//#region src/messages.ts
|
|
1259
|
+
/**
|
|
1260
|
+
* Builds the render tree from the flat messages array. Order-robust: live
|
|
1261
|
+
* stream/steer/preempt cache writes can momentarily place a child before its
|
|
1262
|
+
* parent, and a single-pass link would hoist such rows into phantom root
|
|
1263
|
+
* branches — folding the visible thread to one dangling branch until a
|
|
1264
|
+
* refetch restores creation order. Linking happens only after every message
|
|
1265
|
+
* is indexed, so array order never changes the tree shape.
|
|
1266
|
+
*/
|
|
1018
1267
|
function buildTree({ messages, fileMap }) {
|
|
1019
1268
|
if (messages === null) return null;
|
|
1020
1269
|
const messageMap = {};
|
|
1270
|
+
const orderedMessages = [];
|
|
1021
1271
|
const rootMessages = [];
|
|
1022
1272
|
const childrenCount = {};
|
|
1023
|
-
|
|
1024
|
-
if (!message)
|
|
1025
|
-
|
|
1273
|
+
for (const message of messages) {
|
|
1274
|
+
if (!message) continue;
|
|
1275
|
+
/** A self-parented row can never link under itself (it becomes a root),
|
|
1276
|
+
* so count it with the parentless group — charging its own id would
|
|
1277
|
+
* inflate the sibling indices of its real children past
|
|
1278
|
+
* `children.length`. */
|
|
1279
|
+
const parentId = message.parentMessageId === message.messageId ? "" : message.parentMessageId ?? "";
|
|
1026
1280
|
childrenCount[parentId] = (childrenCount[parentId] || 0) + 1;
|
|
1027
1281
|
const extendedMessage = {
|
|
1028
1282
|
...message,
|
|
@@ -1032,12 +1286,39 @@ function buildTree({ messages, fileMap }) {
|
|
|
1032
1286
|
};
|
|
1033
1287
|
if (message.files && fileMap) extendedMessage.files = message.files.map((file) => fileMap[file.file_id ?? ""] ?? file);
|
|
1034
1288
|
messageMap[message.messageId] = extendedMessage;
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1289
|
+
orderedMessages.push(extendedMessage);
|
|
1290
|
+
}
|
|
1291
|
+
for (const extendedMessage of orderedMessages) {
|
|
1292
|
+
const parentMessage = messageMap[extendedMessage.parentMessageId ?? ""];
|
|
1293
|
+
if (parentMessage && parentMessage !== extendedMessage) parentMessage.children.push(extendedMessage);
|
|
1294
|
+
else rootMessages.push(extendedMessage);
|
|
1295
|
+
}
|
|
1296
|
+
/** Depth comes from a roots-down walk (a child linked before its parent
|
|
1297
|
+
* can't inherit depth at link time). The `visited` set doubles as the
|
|
1298
|
+
* cycle guard: nodes on a corrupt parent cycle are unreachable from any
|
|
1299
|
+
* root, so they resurface as roots instead of disappearing. */
|
|
1300
|
+
const visited = /* @__PURE__ */ new Set();
|
|
1301
|
+
const assignDepths = (root) => {
|
|
1302
|
+
visited.add(root);
|
|
1303
|
+
const stack = [root];
|
|
1304
|
+
while (stack.length > 0) {
|
|
1305
|
+
const node = stack.pop();
|
|
1306
|
+
/** Every node has one parent, so this walk reaches each node once — an
|
|
1307
|
+
* already-visited child is a cycle back-edge. Sever it (not just skip
|
|
1308
|
+
* it) so consumers that recurse `children` terminate. */
|
|
1309
|
+
if (node.children.some((child) => visited.has(child))) node.children = node.children.filter((child) => !visited.has(child));
|
|
1310
|
+
for (const child of node.children) {
|
|
1311
|
+
child.depth = node.depth + 1;
|
|
1312
|
+
visited.add(child);
|
|
1313
|
+
stack.push(child);
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
};
|
|
1317
|
+
for (const root of rootMessages) assignDepths(root);
|
|
1318
|
+
for (const extendedMessage of orderedMessages) if (!visited.has(extendedMessage)) {
|
|
1319
|
+
rootMessages.push(extendedMessage);
|
|
1320
|
+
assignDepths(extendedMessage);
|
|
1321
|
+
}
|
|
1041
1322
|
return rootMessages;
|
|
1042
1323
|
}
|
|
1043
1324
|
//#endregion
|
|
@@ -4946,6 +5227,27 @@ function extractDomainFromUrl(url$2) {
|
|
|
4946
5227
|
throw new Error(`Invalid URL format: ${url$2}`);
|
|
4947
5228
|
}
|
|
4948
5229
|
}
|
|
5230
|
+
function getExplicitPort(value) {
|
|
5231
|
+
const normalizedValue = value.trim();
|
|
5232
|
+
const protocolSeparatorIndex = normalizedValue.indexOf("://");
|
|
5233
|
+
const hasProtocol = protocolSeparatorIndex !== -1;
|
|
5234
|
+
const authorityAndPath = hasProtocol ? normalizedValue.slice(protocolSeparatorIndex + 3) : normalizedValue;
|
|
5235
|
+
let port;
|
|
5236
|
+
try {
|
|
5237
|
+
const parsedUrl = new url.URL(hasProtocol ? normalizedValue : `https://${normalizedValue}`);
|
|
5238
|
+
port = parsedUrl.port;
|
|
5239
|
+
if (!port && (parsedUrl.protocol === "http:" || parsedUrl.protocol === "https:")) port = new url.URL(`${parsedUrl.protocol === "http:" ? "https:" : "http:"}//${authorityAndPath}`).port;
|
|
5240
|
+
} catch {
|
|
5241
|
+
return null;
|
|
5242
|
+
}
|
|
5243
|
+
if (!port) return null;
|
|
5244
|
+
const parsedPort = Number(port);
|
|
5245
|
+
if (!Number.isInteger(parsedPort) || parsedPort < 1 || parsedPort > 65535) throw new Error(`Invalid port in domain: ${value}`);
|
|
5246
|
+
return String(parsedPort);
|
|
5247
|
+
}
|
|
5248
|
+
function getDefaultActionPort(protocol) {
|
|
5249
|
+
return protocol === "https:" ? "443" : "80";
|
|
5250
|
+
}
|
|
4949
5251
|
/**
|
|
4950
5252
|
* Validates client domain matches OpenAPI spec server URL domain (SSRF prevention).
|
|
4951
5253
|
* @param clientProvidedDomain - Domain from client (with/without protocol)
|
|
@@ -4966,6 +5268,7 @@ function validateActionDomain(clientProvidedDomain, specServerUrl) {
|
|
|
4966
5268
|
/** Extract hostname from client domain if it's a full URL */
|
|
4967
5269
|
let clientHostname = clientProvidedDomain;
|
|
4968
5270
|
let clientHasProtocol = false;
|
|
5271
|
+
const clientExplicitPort = getExplicitPort(clientProvidedDomain);
|
|
4969
5272
|
if (clientProvidedDomain.includes("://")) {
|
|
4970
5273
|
if (!clientProvidedDomain.startsWith("http://") && !clientProvidedDomain.startsWith("https://")) return {
|
|
4971
5274
|
isValid: false,
|
|
@@ -4977,7 +5280,7 @@ function validateActionDomain(clientProvidedDomain, specServerUrl) {
|
|
|
4977
5280
|
} catch {
|
|
4978
5281
|
clientHasProtocol = false;
|
|
4979
5282
|
}
|
|
4980
|
-
}
|
|
5283
|
+
} else if (clientExplicitPort !== null) clientHostname = new url.URL(`https://${clientProvidedDomain}`).hostname;
|
|
4981
5284
|
/** Normalize IPv6 addresses by removing brackets for comparison */
|
|
4982
5285
|
const normalizedClientHostname = clientHostname.replace(/^\[(.+)\]$/, "$1");
|
|
4983
5286
|
const normalizedSpecHostname = specHostname.replace(/^\[(.+)\]$/, "$1");
|
|
@@ -4990,14 +5293,23 @@ function validateActionDomain(clientProvidedDomain, specServerUrl) {
|
|
|
4990
5293
|
const hostname = isIP(normalizedClientHostname) === 6 && !clientHostname.startsWith("[") ? `[${normalizedClientHostname}]` : clientHostname;
|
|
4991
5294
|
normalizedClientDomain = `${specUrl.protocol}//${hostname}`;
|
|
4992
5295
|
} else normalizedClientDomain = `https://${clientHostname}`;
|
|
4993
|
-
if (normalizedSpecDomain === normalizedClientDomain || !clientHasProtocol && isIPAddress && normalizedClientHostname === normalizedSpecHostname) return {
|
|
4994
|
-
isValid:
|
|
5296
|
+
if (!(normalizedSpecDomain === normalizedClientDomain || !clientHasProtocol && isIPAddress && normalizedClientHostname === normalizedSpecHostname)) return {
|
|
5297
|
+
isValid: false,
|
|
5298
|
+
message: `Domain mismatch: Client provided '${clientProvidedDomain}', but spec uses '${specHostname}'`,
|
|
4995
5299
|
normalizedSpecDomain,
|
|
4996
5300
|
normalizedClientDomain
|
|
4997
5301
|
};
|
|
5302
|
+
if (clientExplicitPort !== null) {
|
|
5303
|
+
const specEffectivePort = specUrl.port || getDefaultActionPort(specUrl.protocol);
|
|
5304
|
+
if (clientExplicitPort !== specEffectivePort) return {
|
|
5305
|
+
isValid: false,
|
|
5306
|
+
message: `Port mismatch: Client provided '${clientProvidedDomain}', but spec uses effective port '${specEffectivePort}'`,
|
|
5307
|
+
normalizedSpecDomain,
|
|
5308
|
+
normalizedClientDomain
|
|
5309
|
+
};
|
|
5310
|
+
}
|
|
4998
5311
|
return {
|
|
4999
|
-
isValid:
|
|
5000
|
-
message: `Domain mismatch: Client provided '${clientProvidedDomain}', but spec uses '${specHostname}'`,
|
|
5312
|
+
isValid: true,
|
|
5001
5313
|
normalizedSpecDomain,
|
|
5002
5314
|
normalizedClientDomain
|
|
5003
5315
|
};
|
|
@@ -5072,7 +5384,7 @@ function getUserTimezone() {
|
|
|
5072
5384
|
}
|
|
5073
5385
|
}
|
|
5074
5386
|
function createPayload(submission) {
|
|
5075
|
-
const { isEdited, addedConvo, userMessage, isContinued, isTemporary, isRegenerate, conversation, editedContent, ephemeralAgent, endpointOption, manualSkills } = submission;
|
|
5387
|
+
const { isEdited, addedConvo, userMessage, isContinued, isTemporary, isRegenerate, conversation, editedContent, ephemeralAgent, endpointOption, manualSkills, clientRequestId, recoverySteerId, expectedPredecessorCreatedAt } = submission;
|
|
5076
5388
|
const { conversationId } = require_data_service.tConvoUpdateSchema.parse(conversation);
|
|
5077
5389
|
const { endpoint: _e, endpointType } = endpointOption;
|
|
5078
5390
|
const endpoint = _e;
|
|
@@ -5090,7 +5402,10 @@ function createPayload(submission) {
|
|
|
5090
5402
|
isContinued: !!(isEdited && isContinued),
|
|
5091
5403
|
ephemeralAgent: require_data_service.isAssistantsEndpoint(endpoint) ? void 0 : ephemeralAgent,
|
|
5092
5404
|
manualSkills: require_data_service.isAssistantsEndpoint(endpoint) ? void 0 : manualSkills,
|
|
5093
|
-
timezone: getUserTimezone()
|
|
5405
|
+
timezone: getUserTimezone(),
|
|
5406
|
+
clientRequestId,
|
|
5407
|
+
recoverySteerId,
|
|
5408
|
+
expectedPredecessorCreatedAt
|
|
5094
5409
|
};
|
|
5095
5410
|
return {
|
|
5096
5411
|
server,
|
|
@@ -5197,7 +5512,7 @@ const librechat = {
|
|
|
5197
5512
|
labelCode: true,
|
|
5198
5513
|
type: "number",
|
|
5199
5514
|
component: "input",
|
|
5200
|
-
placeholder: "
|
|
5515
|
+
placeholder: "com_endpoint_default",
|
|
5201
5516
|
placeholderCode: true,
|
|
5202
5517
|
description: "com_endpoint_context_info",
|
|
5203
5518
|
descriptionCode: true,
|
|
@@ -5234,7 +5549,7 @@ const librechat = {
|
|
|
5234
5549
|
labelCode: true,
|
|
5235
5550
|
description: "com_ui_file_token_limit_desc",
|
|
5236
5551
|
descriptionCode: true,
|
|
5237
|
-
placeholder: "
|
|
5552
|
+
placeholder: "com_endpoint_default",
|
|
5238
5553
|
placeholderCode: true,
|
|
5239
5554
|
type: "number",
|
|
5240
5555
|
component: "input",
|
|
@@ -5306,7 +5621,7 @@ const openAIParams = {
|
|
|
5306
5621
|
component: "input",
|
|
5307
5622
|
description: "com_endpoint_openai_max_tokens",
|
|
5308
5623
|
descriptionCode: true,
|
|
5309
|
-
placeholder: "
|
|
5624
|
+
placeholder: "com_endpoint_default",
|
|
5310
5625
|
placeholderCode: true,
|
|
5311
5626
|
optionType: "model",
|
|
5312
5627
|
columnSpan: 2
|
|
@@ -5327,7 +5642,8 @@ const openAIParams = {
|
|
|
5327
5642
|
"low",
|
|
5328
5643
|
"medium",
|
|
5329
5644
|
"high",
|
|
5330
|
-
"xhigh"
|
|
5645
|
+
"xhigh",
|
|
5646
|
+
"max"
|
|
5331
5647
|
],
|
|
5332
5648
|
enumMappings: {
|
|
5333
5649
|
[""]: "com_ui_auto",
|
|
@@ -5336,7 +5652,8 @@ const openAIParams = {
|
|
|
5336
5652
|
["low"]: "com_ui_low",
|
|
5337
5653
|
["medium"]: "com_ui_medium",
|
|
5338
5654
|
["high"]: "com_ui_high",
|
|
5339
|
-
["xhigh"]: "com_ui_xhigh"
|
|
5655
|
+
["xhigh"]: "com_ui_xhigh",
|
|
5656
|
+
["max"]: "com_ui_max"
|
|
5340
5657
|
},
|
|
5341
5658
|
optionType: "model",
|
|
5342
5659
|
columnSpan: 4
|
|
@@ -5391,6 +5708,52 @@ const openAIParams = {
|
|
|
5391
5708
|
optionType: "model",
|
|
5392
5709
|
columnSpan: 4
|
|
5393
5710
|
},
|
|
5711
|
+
reasoning_mode: {
|
|
5712
|
+
key: "reasoning_mode",
|
|
5713
|
+
label: "com_endpoint_reasoning_mode",
|
|
5714
|
+
labelCode: true,
|
|
5715
|
+
description: "com_endpoint_openai_reasoning_mode",
|
|
5716
|
+
descriptionCode: true,
|
|
5717
|
+
type: "enum",
|
|
5718
|
+
default: "",
|
|
5719
|
+
component: "slider",
|
|
5720
|
+
options: [
|
|
5721
|
+
"",
|
|
5722
|
+
"standard",
|
|
5723
|
+
"pro"
|
|
5724
|
+
],
|
|
5725
|
+
enumMappings: {
|
|
5726
|
+
[""]: "com_ui_unset",
|
|
5727
|
+
["standard"]: "com_ui_standard",
|
|
5728
|
+
["pro"]: "com_ui_pro"
|
|
5729
|
+
},
|
|
5730
|
+
optionType: "model",
|
|
5731
|
+
columnSpan: 4
|
|
5732
|
+
},
|
|
5733
|
+
reasoning_context: {
|
|
5734
|
+
key: "reasoning_context",
|
|
5735
|
+
label: "com_endpoint_reasoning_context",
|
|
5736
|
+
labelCode: true,
|
|
5737
|
+
description: "com_endpoint_openai_reasoning_context",
|
|
5738
|
+
descriptionCode: true,
|
|
5739
|
+
type: "enum",
|
|
5740
|
+
default: "",
|
|
5741
|
+
component: "slider",
|
|
5742
|
+
options: [
|
|
5743
|
+
"",
|
|
5744
|
+
"auto",
|
|
5745
|
+
"current_turn",
|
|
5746
|
+
"all_turns"
|
|
5747
|
+
],
|
|
5748
|
+
enumMappings: {
|
|
5749
|
+
[""]: "com_ui_unset",
|
|
5750
|
+
["auto"]: "com_ui_auto",
|
|
5751
|
+
["current_turn"]: "com_ui_current_turn",
|
|
5752
|
+
["all_turns"]: "com_ui_all_turns"
|
|
5753
|
+
},
|
|
5754
|
+
optionType: "model",
|
|
5755
|
+
columnSpan: 4
|
|
5756
|
+
},
|
|
5394
5757
|
verbosity: {
|
|
5395
5758
|
key: "verbosity",
|
|
5396
5759
|
label: "com_endpoint_verbosity",
|
|
@@ -5438,7 +5801,7 @@ const anthropic = {
|
|
|
5438
5801
|
component: "input",
|
|
5439
5802
|
description: "com_endpoint_anthropic_maxoutputtokens",
|
|
5440
5803
|
descriptionCode: true,
|
|
5441
|
-
placeholder: "
|
|
5804
|
+
placeholder: "com_endpoint_default",
|
|
5442
5805
|
placeholderCode: true,
|
|
5443
5806
|
range: {
|
|
5444
5807
|
min: require_data_service.anthropicSettings.maxOutputTokens.min,
|
|
@@ -5626,7 +5989,7 @@ const bedrock = {
|
|
|
5626
5989
|
component: "input",
|
|
5627
5990
|
description: "com_endpoint_anthropic_maxoutputtokens",
|
|
5628
5991
|
descriptionCode: true,
|
|
5629
|
-
placeholder: "
|
|
5992
|
+
placeholder: "com_endpoint_default",
|
|
5630
5993
|
placeholderCode: true,
|
|
5631
5994
|
optionType: "model",
|
|
5632
5995
|
columnSpan: 2
|
|
@@ -5799,7 +6162,7 @@ const google = {
|
|
|
5799
6162
|
component: "input",
|
|
5800
6163
|
description: "com_endpoint_google_maxoutputtokens",
|
|
5801
6164
|
descriptionCode: true,
|
|
5802
|
-
placeholder: "
|
|
6165
|
+
placeholder: "com_endpoint_default",
|
|
5803
6166
|
placeholderCode: true,
|
|
5804
6167
|
default: require_data_service.googleSettings.maxOutputTokens.default,
|
|
5805
6168
|
range: {
|
|
@@ -5879,6 +6242,19 @@ const google = {
|
|
|
5879
6242
|
optionType: "model",
|
|
5880
6243
|
showDefault: false,
|
|
5881
6244
|
columnSpan: 2
|
|
6245
|
+
},
|
|
6246
|
+
url_context: {
|
|
6247
|
+
key: "url_context",
|
|
6248
|
+
label: "com_endpoint_use_url_context",
|
|
6249
|
+
labelCode: true,
|
|
6250
|
+
description: "com_endpoint_google_use_url_context",
|
|
6251
|
+
descriptionCode: true,
|
|
6252
|
+
type: "boolean",
|
|
6253
|
+
default: false,
|
|
6254
|
+
component: "switch",
|
|
6255
|
+
optionType: "model",
|
|
6256
|
+
showDefault: false,
|
|
6257
|
+
columnSpan: 2
|
|
5882
6258
|
}
|
|
5883
6259
|
};
|
|
5884
6260
|
const googleConfig = [
|
|
@@ -5894,6 +6270,7 @@ const googleConfig = [
|
|
|
5894
6270
|
google.thinkingBudget,
|
|
5895
6271
|
google.thinkingLevel,
|
|
5896
6272
|
google.web_search,
|
|
6273
|
+
google.url_context,
|
|
5897
6274
|
librechat.fileTokenLimit
|
|
5898
6275
|
];
|
|
5899
6276
|
const googleCol1 = [
|
|
@@ -5912,6 +6289,7 @@ const googleCol2 = [
|
|
|
5912
6289
|
google.thinkingBudget,
|
|
5913
6290
|
google.thinkingLevel,
|
|
5914
6291
|
google.web_search,
|
|
6292
|
+
google.url_context,
|
|
5915
6293
|
librechat.fileTokenLimit
|
|
5916
6294
|
];
|
|
5917
6295
|
const openAI = [
|
|
@@ -5930,6 +6308,8 @@ const openAI = [
|
|
|
5930
6308
|
openAIParams.reasoning_effort,
|
|
5931
6309
|
openAIParams.useResponsesApi,
|
|
5932
6310
|
openAIParams.reasoning_summary,
|
|
6311
|
+
openAIParams.reasoning_mode,
|
|
6312
|
+
openAIParams.reasoning_context,
|
|
5933
6313
|
openAIParams.verbosity,
|
|
5934
6314
|
openAIParams.disableStreaming,
|
|
5935
6315
|
librechat.fileTokenLimit
|
|
@@ -5956,6 +6336,8 @@ const openAICol2 = [
|
|
|
5956
6336
|
baseDefinitions.imageDetail,
|
|
5957
6337
|
openAIParams.reasoning_effort,
|
|
5958
6338
|
openAIParams.reasoning_summary,
|
|
6339
|
+
openAIParams.reasoning_mode,
|
|
6340
|
+
openAIParams.reasoning_context,
|
|
5959
6341
|
openAIParams.verbosity,
|
|
5960
6342
|
openAIParams.useResponsesApi,
|
|
5961
6343
|
openAIParams.web_search,
|
|
@@ -6292,11 +6674,14 @@ const CODE_ENV_KINDS = [
|
|
|
6292
6674
|
"user"
|
|
6293
6675
|
];
|
|
6294
6676
|
//#endregion
|
|
6677
|
+
exports.AUTH_USER_DOC_BY_ID_PREFIX = require_data_service.AUTH_USER_DOC_BY_ID_PREFIX;
|
|
6295
6678
|
exports.AccessRoleIds = require_data_service.AccessRoleIds;
|
|
6296
6679
|
exports.ActionRequest = ActionRequest;
|
|
6680
|
+
exports.ActivityLabelEvents = ActivityLabelEvents;
|
|
6297
6681
|
exports.AgentCapabilities = require_data_service.AgentCapabilities;
|
|
6298
6682
|
exports.AnnotationTypes = require_data_service.AnnotationTypes;
|
|
6299
6683
|
exports.AnthropicEffort = require_data_service.AnthropicEffort;
|
|
6684
|
+
exports.ApprovalEvents = ApprovalEvents;
|
|
6300
6685
|
exports.ArtifactModes = ArtifactModes;
|
|
6301
6686
|
exports.AssistantStreamEvents = require_data_service.AssistantStreamEvents;
|
|
6302
6687
|
exports.AuthKeys = require_data_service.AuthKeys;
|
|
@@ -6304,6 +6689,7 @@ exports.AuthType = require_data_service.AuthType;
|
|
|
6304
6689
|
exports.AuthTypeEnum = require_data_service.AuthTypeEnum;
|
|
6305
6690
|
exports.AuthorizationTypeEnum = require_data_service.AuthorizationTypeEnum;
|
|
6306
6691
|
exports.BASE_ONLY_CONFIG_SECTIONS = require_data_service.BASE_ONLY_CONFIG_SECTIONS;
|
|
6692
|
+
exports.BASE_PRINCIPAL_CONFIG_SECTIONS = require_data_service.BASE_PRINCIPAL_CONFIG_SECTIONS;
|
|
6307
6693
|
exports.BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA = BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA;
|
|
6308
6694
|
exports.BEDROCK_OUTPUT_128K_BETA = BEDROCK_OUTPUT_128K_BETA;
|
|
6309
6695
|
exports.BedrockProviders = require_data_service.BedrockProviders;
|
|
@@ -6349,6 +6735,7 @@ exports.MCPServerUserInputSchema = require_data_service.MCPServerUserInputSchema
|
|
|
6349
6735
|
exports.MCPServersSchema = require_data_service.MCPServersSchema;
|
|
6350
6736
|
exports.MCP_USER_INPUT_FIELDS = require_data_service.MCP_USER_INPUT_FIELDS;
|
|
6351
6737
|
exports.MYTHOS_CLASS_FAMILIES = require_data_service.MYTHOS_CLASS_FAMILIES;
|
|
6738
|
+
exports.MemoryScope = require_data_service.MemoryScope;
|
|
6352
6739
|
exports.MessageContentTypes = require_data_service.MessageContentTypes;
|
|
6353
6740
|
exports.MutationKeys = require_data_service.MutationKeys;
|
|
6354
6741
|
exports.OCRStrategy = require_data_service.OCRStrategy;
|
|
@@ -6364,7 +6751,9 @@ exports.Providers = require_data_service.Providers;
|
|
|
6364
6751
|
exports.QueryKeys = require_data_service.QueryKeys;
|
|
6365
6752
|
exports.REFILL_INTERVAL_UNITS = require_data_service.REFILL_INTERVAL_UNITS;
|
|
6366
6753
|
exports.RateLimitPrefix = require_data_service.RateLimitPrefix;
|
|
6754
|
+
exports.ReasoningContext = require_data_service.ReasoningContext;
|
|
6367
6755
|
exports.ReasoningEffort = require_data_service.ReasoningEffort;
|
|
6756
|
+
exports.ReasoningMode = require_data_service.ReasoningMode;
|
|
6368
6757
|
exports.ReasoningParameterFormat = require_data_service.ReasoningParameterFormat;
|
|
6369
6758
|
exports.ReasoningResponseKey = require_data_service.ReasoningResponseKey;
|
|
6370
6759
|
exports.ReasoningSummary = require_data_service.ReasoningSummary;
|
|
@@ -6393,6 +6782,7 @@ exports.SettingTypes = require_data_service.SettingTypes;
|
|
|
6393
6782
|
exports.SettingsTabValues = require_data_service.SettingsTabValues;
|
|
6394
6783
|
exports.SettingsViews = require_data_service.SettingsViews;
|
|
6395
6784
|
exports.StdioOptionsSchema = require_data_service.StdioOptionsSchema;
|
|
6785
|
+
exports.SteerEvents = SteerEvents;
|
|
6396
6786
|
exports.StepEvents = StepEvents;
|
|
6397
6787
|
exports.StepStatus = require_data_service.StepStatus;
|
|
6398
6788
|
exports.StepTypes = StepTypes;
|
|
@@ -6448,6 +6838,7 @@ exports.balanceSchema = require_data_service.balanceSchema;
|
|
|
6448
6838
|
exports.baseEndpointSchema = require_data_service.baseEndpointSchema;
|
|
6449
6839
|
exports.bedrockDocumentExtensions = require_data_service.bedrockDocumentExtensions;
|
|
6450
6840
|
exports.bedrockDocumentFormats = require_data_service.bedrockDocumentFormats;
|
|
6841
|
+
exports.bedrockDocumentMimeTypes = require_data_service.bedrockDocumentMimeTypes;
|
|
6451
6842
|
exports.bedrockEndpointSchema = require_data_service.bedrockEndpointSchema;
|
|
6452
6843
|
exports.bedrockGuardrailConfigSchema = require_data_service.bedrockGuardrailConfigSchema;
|
|
6453
6844
|
exports.bedrockInputParser = bedrockInputParser;
|
|
@@ -6457,14 +6848,20 @@ exports.bedrockOutputParser = bedrockOutputParser;
|
|
|
6457
6848
|
exports.bookmarkPermissionsSchema = bookmarkPermissionsSchema;
|
|
6458
6849
|
exports.breadcrumb = breadcrumb;
|
|
6459
6850
|
exports.buildLoginRedirectUrl = require_data_service.buildLoginRedirectUrl;
|
|
6851
|
+
exports.buildServerNameAliases = require_data_service.buildServerNameAliases;
|
|
6460
6852
|
exports.buildTree = buildTree;
|
|
6461
6853
|
exports.button = button;
|
|
6462
6854
|
exports.cacheSubsetProviders = require_data_service.cacheSubsetProviders;
|
|
6463
6855
|
exports.calendar = calendar;
|
|
6856
|
+
exports.capsEffortWhenThinkingDisabled = capsEffortWhenThinkingDisabled;
|
|
6464
6857
|
exports.card = card;
|
|
6465
6858
|
exports.carousel = carousel;
|
|
6466
6859
|
exports.checkOpenAIStorage = require_data_service.checkOpenAIStorage;
|
|
6467
6860
|
exports.checkbox = checkbox;
|
|
6861
|
+
exports.checkpointerSchema = require_data_service.checkpointerSchema;
|
|
6862
|
+
exports.checkpointerTypeSchema = require_data_service.checkpointerTypeSchema;
|
|
6863
|
+
exports.clampEffortForDisabledThinking = clampEffortForDisabledThinking;
|
|
6864
|
+
exports.clampOutputConfigEffort = clampOutputConfigEffort;
|
|
6468
6865
|
exports.cloudfrontConfigSchema = require_data_service.cloudfrontConfigSchema;
|
|
6469
6866
|
exports.codeInterpreterMimeTypes = require_data_service.codeInterpreterMimeTypes;
|
|
6470
6867
|
exports.codeInterpreterMimeTypesList = require_data_service.codeInterpreterMimeTypesList;
|
|
@@ -6506,7 +6903,9 @@ exports.dropdownMenu = dropdownMenu;
|
|
|
6506
6903
|
exports.eAnthropicEffortSchema = require_data_service.eAnthropicEffortSchema;
|
|
6507
6904
|
exports.eImageDetailSchema = require_data_service.eImageDetailSchema;
|
|
6508
6905
|
exports.eModelEndpointSchema = require_data_service.eModelEndpointSchema;
|
|
6906
|
+
exports.eReasoningContextSchema = require_data_service.eReasoningContextSchema;
|
|
6509
6907
|
exports.eReasoningEffortSchema = require_data_service.eReasoningEffortSchema;
|
|
6908
|
+
exports.eReasoningModeSchema = require_data_service.eReasoningModeSchema;
|
|
6510
6909
|
exports.eReasoningParameterFormatSchema = require_data_service.eReasoningParameterFormatSchema;
|
|
6511
6910
|
exports.eReasoningResponseKeySchema = require_data_service.eReasoningResponseKeySchema;
|
|
6512
6911
|
exports.eReasoningSummarySchema = require_data_service.eReasoningSummarySchema;
|
|
@@ -6544,6 +6943,7 @@ exports.generateDynamicSchema = require_data_service.generateDynamicSchema;
|
|
|
6544
6943
|
exports.generateGoogleSchema = require_data_service.generateGoogleSchema;
|
|
6545
6944
|
exports.generateOpenAISchema = require_data_service.generateOpenAISchema;
|
|
6546
6945
|
exports.getConfigDefaults = require_data_service.getConfigDefaults;
|
|
6946
|
+
exports.getConfiguredMimeAccept = require_data_service.getConfiguredMimeAccept;
|
|
6547
6947
|
exports.getDefaultParamsEndpoint = require_data_service.getDefaultParamsEndpoint;
|
|
6548
6948
|
exports.getEnabledEndpoints = getEnabledEndpoints;
|
|
6549
6949
|
exports.getEndpointField = require_data_service.getEndpointField;
|
|
@@ -6580,6 +6980,8 @@ exports.inputTokensIncludesCache = require_data_service.inputTokensIncludesCache
|
|
|
6580
6980
|
exports.interfaceSchema = require_data_service.interfaceSchema;
|
|
6581
6981
|
exports.isActionTool = require_data_service.isActionTool;
|
|
6582
6982
|
exports.isAgentsEndpoint = require_data_service.isAgentsEndpoint;
|
|
6983
|
+
exports.isAnthropicDocumentType = require_data_service.isAnthropicDocumentType;
|
|
6984
|
+
exports.isAnthropicTextDocumentType = require_data_service.isAnthropicTextDocumentType;
|
|
6583
6985
|
exports.isAssistantsEndpoint = require_data_service.isAssistantsEndpoint;
|
|
6584
6986
|
exports.isBedrockDocumentType = require_data_service.isBedrockDocumentType;
|
|
6585
6987
|
exports.isDocumentSupportedProvider = require_data_service.isDocumentSupportedProvider;
|
|
@@ -6592,8 +6994,10 @@ exports.isPermissiveMimeConfig = require_data_service.isPermissiveMimeConfig;
|
|
|
6592
6994
|
exports.isRemoteOidcUrlAllowed = require_data_service.isRemoteOidcUrlAllowed;
|
|
6593
6995
|
exports.isSensitiveEnvVar = require_data_service.isSensitiveEnvVar;
|
|
6594
6996
|
exports.isSystemRoleName = isSystemRoleName;
|
|
6997
|
+
exports.isThinkingDisabled = isThinkingDisabled;
|
|
6595
6998
|
exports.isUUID = require_data_service.isUUID;
|
|
6596
6999
|
exports.label = label;
|
|
7000
|
+
exports.langfuseConfigSchema = require_data_service.langfuseConfigSchema;
|
|
6597
7001
|
exports.librechat = librechat;
|
|
6598
7002
|
exports.loginPage = require_data_service.loginPage;
|
|
6599
7003
|
exports.mapGroupToAzureConfig = mapGroupToAzureConfig;
|
|
@@ -6615,6 +7019,8 @@ exports.modularEndpoints = require_data_service.modularEndpoints;
|
|
|
6615
7019
|
exports.multiConvoPermissionsSchema = multiConvoPermissionsSchema;
|
|
6616
7020
|
exports.navigationMenu = navigationMenu;
|
|
6617
7021
|
exports.normalizeEndpointName = require_data_service.normalizeEndpointName;
|
|
7022
|
+
exports.normalizeMCPToolKey = require_data_service.normalizeMCPToolKey;
|
|
7023
|
+
exports.normalizeServerName = require_data_service.normalizeServerName;
|
|
6618
7024
|
exports.ocrSchema = require_data_service.ocrSchema;
|
|
6619
7025
|
exports.omitsSamplingParameters = omitsSamplingParameters;
|
|
6620
7026
|
exports.omitsThinkingByDefault = omitsThinkingByDefault;
|
|
@@ -6651,10 +7057,12 @@ exports.remoteAgentsPermissionsSchema = remoteAgentsPermissionsSchema;
|
|
|
6651
7057
|
exports.removeNullishValues = require_data_service.removeNullishValues;
|
|
6652
7058
|
exports.replaceSpecialVars = replaceSpecialVars;
|
|
6653
7059
|
exports.request = require_data_service.request_default;
|
|
7060
|
+
exports.requiresExplicitThinkingDisabled = requiresExplicitThinkingDisabled;
|
|
6654
7061
|
exports.resolveEndpointType = require_data_service.resolveEndpointType;
|
|
6655
7062
|
exports.resolveRef = resolveRef;
|
|
6656
7063
|
exports.resolveThinkingDisplay = resolveThinkingDisplay;
|
|
6657
7064
|
exports.resourcePermissionsResponseSchema = require_data_service.resourcePermissionsResponseSchema;
|
|
7065
|
+
exports.retainRecentConfigSchema = require_data_service.retainRecentConfigSchema;
|
|
6658
7066
|
exports.retrievalMimeTypes = require_data_service.retrievalMimeTypes;
|
|
6659
7067
|
exports.retrievalMimeTypesList = require_data_service.retrievalMimeTypesList;
|
|
6660
7068
|
exports.roleDefaults = roleDefaults;
|
|
@@ -6663,6 +7071,8 @@ exports.runCodePermissionsSchema = runCodePermissionsSchema;
|
|
|
6663
7071
|
exports.select = select;
|
|
6664
7072
|
exports.separator = separator;
|
|
6665
7073
|
exports.setAcceptLanguageHeader = require_data_service.setAcceptLanguageHeader;
|
|
7074
|
+
exports.setFileConfigRegexCompiler = require_data_service.setFileConfigRegexCompiler;
|
|
7075
|
+
exports.setMessageFilterRegexValidator = require_data_service.setMessageFilterRegexValidator;
|
|
6666
7076
|
exports.setTokenHeader = require_data_service.setTokenHeader;
|
|
6667
7077
|
exports.sha1 = sha1;
|
|
6668
7078
|
exports.shadcnComponents = shadcnComponents;
|
|
@@ -6675,6 +7085,8 @@ exports.skillSyncGitHubSourceSchema = require_data_service.skillSyncGitHubSource
|
|
|
6675
7085
|
exports.slider = slider;
|
|
6676
7086
|
exports.specialVariables = require_data_service.specialVariables;
|
|
6677
7087
|
exports.specsConfigSchema = require_data_service.specsConfigSchema;
|
|
7088
|
+
exports.splitMCPToolKey = require_data_service.splitMCPToolKey;
|
|
7089
|
+
exports.splitToolCallName = require_data_service.splitToolCallName;
|
|
6678
7090
|
exports.stripAgentIdSuffix = stripAgentIdSuffix;
|
|
6679
7091
|
exports.summarizationConfigSchema = require_data_service.summarizationConfigSchema;
|
|
6680
7092
|
exports.summarizationTriggerSchema = require_data_service.summarizationTriggerSchema;
|
|
@@ -6707,6 +7119,9 @@ exports.toast = toast;
|
|
|
6707
7119
|
exports.toaster = toaster;
|
|
6708
7120
|
exports.toggle = toggle;
|
|
6709
7121
|
exports.toggleGroup = toggleGroup;
|
|
7122
|
+
exports.toolApprovalHookConfigSchema = require_data_service.toolApprovalHookConfigSchema;
|
|
7123
|
+
exports.toolApprovalModeSchema = require_data_service.toolApprovalModeSchema;
|
|
7124
|
+
exports.toolApprovalPolicySchema = require_data_service.toolApprovalPolicySchema;
|
|
6710
7125
|
exports.tooltip = tooltip;
|
|
6711
7126
|
exports.transactionsSchema = require_data_service.transactionsSchema;
|
|
6712
7127
|
exports.turnstileOptionsSchema = require_data_service.turnstileOptionsSchema;
|