librechat-data-provider 0.8.521 → 0.8.522

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/{data-service-pwrlWjJs.mjs → data-service-CaB7saTP.mjs} +1145 -37
  2. package/dist/data-service-CaB7saTP.mjs.map +1 -0
  3. package/dist/{data-service-DOIF4BkW.js → data-service-D5kHzBt-.js} +1588 -36
  4. package/dist/data-service-D5kHzBt-.js.map +1 -0
  5. package/dist/index.js +947 -36
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +825 -37
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/react-query/index.js +2 -1
  10. package/dist/react-query/index.js.map +1 -1
  11. package/dist/react-query/index.mjs +2 -1
  12. package/dist/react-query/index.mjs.map +1 -1
  13. package/dist/types/accessPermissions.d.ts +4 -0
  14. package/dist/types/actions.d.ts +2 -2
  15. package/dist/types/agentToolOptions.d.ts +11 -0
  16. package/dist/types/api-endpoints.d.ts +18 -0
  17. package/dist/types/bedrock.d.ts +168 -0
  18. package/dist/types/cadence.d.ts +33 -0
  19. package/dist/types/codeEnvRef.d.ts +21 -0
  20. package/dist/types/config.d.ts +9060 -1135
  21. package/dist/types/data-service.d.ts +40 -2
  22. package/dist/types/file-config.d.ts +1 -0
  23. package/dist/types/filters.d.ts +1422 -0
  24. package/dist/types/generate.d.ts +79 -1
  25. package/dist/types/index.d.ts +10 -0
  26. package/dist/types/keys.d.ts +23 -2
  27. package/dist/types/langchain.d.ts +4 -0
  28. package/dist/types/limits.d.ts +13 -0
  29. package/dist/types/mcp.d.ts +299 -210
  30. package/dist/types/messages.d.ts +5 -0
  31. package/dist/types/models.d.ts +732 -68
  32. package/dist/types/parameterSettings.d.ts +5 -1
  33. package/dist/types/parsers.d.ts +10 -0
  34. package/dist/types/permissions.d.ts +42 -1
  35. package/dist/types/providers.d.ts +36 -0
  36. package/dist/types/request.d.ts +2 -2
  37. package/dist/types/roles.d.ts +34 -0
  38. package/dist/types/runSteps.d.ts +59 -0
  39. package/dist/types/schemas.d.ts +1191 -26
  40. package/dist/types/stateful-code.d.ts +7 -0
  41. package/dist/types/types/agents.d.ts +92 -7
  42. package/dist/types/types/assistants.d.ts +96 -5
  43. package/dist/types/types/files.d.ts +12 -2
  44. package/dist/types/types/index.d.ts +2 -0
  45. package/dist/types/types/insights.d.ts +62 -0
  46. package/dist/types/types/mutations.d.ts +1 -0
  47. package/dist/types/types/queries.d.ts +30 -2
  48. package/dist/types/types/queuedTurns.d.ts +870 -0
  49. package/dist/types/types/runs.d.ts +95 -4
  50. package/dist/types/types/schedules.d.ts +306 -0
  51. package/dist/types/types/skills.d.ts +9 -0
  52. package/dist/types/types/subagents.d.ts +159 -0
  53. package/dist/types/types/web.d.ts +12 -2
  54. package/dist/types/types.d.ts +61 -1
  55. package/package.json +4 -2
  56. package/dist/data-service-DOIF4BkW.js.map +0 -1
  57. package/dist/data-service-pwrlWjJs.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,8 +1,9 @@
1
- import { $ as permissionEntrySchema, $a as tMessageSchema, $i as anthropicSettings, $n as supportsBalanceCheck, $r as imageTypeMapping, $t as azureGroupConfigsSchema, Aa as googleSettings, Ai as AuthType, An as isRemoteOidcUrlAllowed, Ao as extractEnvVariable, Ar as applicationMimeTypes, At as SKILL_SYNC_DEFAULT_DISCOVERY_DEPTH, B as MutationKeys, Ba as isParamEndpoint, Bi as ReasoningEffort, Bn as paramDefinitionSchema, Br as defaultSTTMimeTypes, Bt as SettingsViews, Ca as endpointSettings, Ci as OptionTypes, Cn as getConfigDefaults, Co as feedbackRatingSchema, Cr as FileSources, Ct as MAX_SUBAGENT_DEPTH, Da as googleBaseSchema, Di as generateOpenAISchema, Dn as imageGenTools, Do as getTagsForRating, Dr as loginPage, Dt as RateLimitPrefix, Ea as getSettingsKeys, Ei as generateGoogleSchema, En as getSchemaDefaults, Eo as getTagByKey, Er as buildLoginRedirectUrl, Et as OCRStrategy, F as request_default, Fa as isAssistantsEndpoint, Fi as ImageVisionTool, Fn as modelConfigSchema, Fr as codeInterpreterMimeTypes, Ft as SafeSearchTypes, G as PrincipalType, Ga as openRouterSchema, Gi as ThinkingDisplay, Gn as setMessageFilterRegexValidator, Gr as excelMimeTypes, Gt as VisionModes, H as AccessRoleIds, Ha as openAIBaseSchema, Hi as ReasoningParameterFormat, Hn as rateLimitSchema, Hr as documentParserMimeTypes, Ht as TTSProviders, I as getTokenHeader, Ia as isDocumentSupportedProvider, Ii as MYTHOS_CLASS_FAMILIES, In as modularEndpoints, Ir as codeInterpreterMimeTypesList, It as ScraperProviders, J as accessRoleToPermBits, Ja as tBannerSchema, Ji as agentsBaseSchema, Jn as specialVariables, Jr as fullMimeTypesList, Jt as alternateName, K as ResourceType, Ka as paramEndpoints, Ki as ThinkingLevel, Kn as skillSyncConfigSchema, Kr as fileConfig, Kt as agentsEndpointSchema, L as setAcceptLanguageHeader, La as isImageVisionTool, Li as MemoryScope, Ln as normalizeMCPToolKey, Lr as codeTypeMapping, Lt as SearchCategories, Ma as imageDetailValue, Mi as BedrockReasoningConfig, Mn as memorySchema, Mo as isSensitiveEnvVar, Mr as bedrockDocumentExtensions, Mt as SKILL_SYNC_MAX_INTERVAL_MINUTES, Na as inputTokensIncludesCache, Ni as EModelEndpoint, Nn as messageFilterPiiSchema, No as normalizeEndpointName, Nr as bedrockDocumentFormats, Nt as SKILL_SYNC_MIN_INTERVAL_MINUTES, Oa as googleGenConfigSchema, Oi as validateSettingDefinitions, On as initialModelsConfig, Oo as toMinimalFeedback, Or as registerPage, Ot as RerankerTypes, Pa as isAgentsEndpoint, Pi as ImageDetail, Pn as messageFilterSchema, Pr as bedrockDocumentMimeTypes, Pt as STTProviders, Q as permBitsToAccessLevel, Qa as tExampleSchema, Qi as anthropicSchema, Qn as summarizationTriggerSchema, Qr as imageMimeTypes, Qt as azureEndpointSchema, R as setTokenHeader, Ra as isMythosClassModel, Ri as Providers, Rn as normalizeServerName, Rr as convertStringsToRegex, Rt as SearchProviders, Sa as eVerbositySchema, Si as ComponentTypes, Sn as fileStrategiesSchema, So as FEEDBACK_TAGS, Sr as FileContext, St as LocalStorageKeys, Ta as getModelKey, Ti as generateDynamicSchema, Tn as getEndpointField, To as feedbackTagKeySchema, Tr as apiBaseUrl, Tt as MAX_SUBAGENT_RUN_CONFIGS, U as PermissionBits, Ua as openAISchema, Ui as ReasoningResponseKey, Un as resolveEndpointType, Ur as endpointFileConfigSchema, Ut as Time, V as QueryKeys, Va as isUUID, Vi as ReasoningMode, Vn as providerEndpointMap, Vr as defaultTextMimeTypes, Vt as SystemCategories, W as PrincipalModel, Wa as openAISettings, Wi as ReasoningSummary, Wn as retainRecentConfigSchema, Wr as excelFileTypes, Wt as ViolationTypes, X as getResourcePermissionsResponseSchema, Xa as tConversationTagSchema, Xi as agentsSettings, Xn as splitToolCallName, Xr as getEndpointFileConfig, Xt as assistantEndpointSchema, Y as effectivePermissionsResponseSchema, Ya as tConversationSchema, Yi as agentsSchema, Yn as splitMCPToolKey, Yr as getConfiguredMimeAccept, Yt as anthropicEndpointSchema, Z as hasPermissions, Za as tConvoUpdateSchema, Zi as anthropicBaseSchema, Zn as summarizationConfigSchema, Zr as imageExtRegex, Zt as azureBaseSchema, _a as eReasoningParameterFormatSchema, _i as getRefillEligibilityDate, _n as defaultSocialLogins, _o as hostImageIdSuffix, _r as StreamableHTTPOptionsSchema, _t as FetchTokenConfig, a as data_service_exports, aa as compactAgentsSchema, ai as mbToBytes, an as bedrockModels, ao as tSharedLinkSchema, ar as turnstileSchema, at as AgentCapabilities, ba as eThinkingDisplaySchema, bi as tModelSpecSchema, bn as fileSourceSchema, bo as FEEDBACK_RATINGS, br as AuthorizationTypeEnum, bt as InfiniteCollections, ca as defaultAgentFormValues, ci as mimeTypeAliases, cn as checkpointerTypeSchema, co as EToolResources, cr as vertexModelConfigSchema, ct as BASE_PRINCIPAL_CONFIG_SECTIONS, da as eAnthropicEffortSchema, di as setFileConfigRegexCompiler, dn as contextPruningSchema, do as RunStatus, dr as MCPOptionsSchema, dt as CohereConstants, ea as assistantSchema, ei as inferMimeType, en as azureGroupSchema, eo as tModelSpecPresetSchema, er as toolApprovalHookConfigSchema, et as principalSchema, fa as eImageDetailSchema, fi as supportedMimeTypes, fn as defaultAgentCapabilities, fo as StepStatus, fr as MCPServerUserInputSchema, ft as Constants, ga as eReasoningModeSchema, gi as REFILL_INTERVAL_UNITS, gn as defaultRetrievalModels, go as defaultOrderQuery, gr as StdioOptionsSchema, gt as ErrorTypes, ha as eReasoningEffortSchema, hi as videoMimeTypes, hn as defaultModels, ho as actionDomainSeparator, hr as SSEOptionsSchema, ht as EndpointURLs, ia as compactAgentsBaseSchema, ii as isPermissiveMimeConfig, in as bedrockGuardrailConfigSchema, io as tQueryParamsSchema, ir as turnstileOptionsSchema, it as AUTH_USER_DOC_BY_ID_PREFIX, ja as imageDetailNumeric, ji as BedrockProviders, jn as langfuseConfigSchema, jo as extractVariableName, jr as audioMimeTypes, jt as SKILL_SYNC_MAX_DISCOVERY_DEPTH, ka as googleSchema, ki as AnthropicEffort, kn as interfaceSchema, ko as envVarRegex, kr as sharedFileDownload, kt as RetentionMode, la as defaultAssistantFormValues, li as retrievalMimeTypes, ln as cloudfrontConfigSchema, lo as FilePurpose, lr as visionModels, lt as CacheKeys, ma as eReasoningContextSchema, mi as textMimeTypes, mn as defaultEndpoints, mo as actionDelimiter, mr as MCP_USER_INPUT_FIELDS, mt as EImageOutputType, na as cacheSubsetProviders, ni as isAnthropicTextDocumentType, nn as baseEndpointSchema, no as tPluginSchema, nr as toolApprovalPolicySchema, nt as updateResourcePermissionsRequestSchema, oa as compactAssistantSchema, oi as megabyte, on as buildServerNameAliases, oo as AnnotationTypes, or as validateVisionModel, ot as AuthKeys, pa as eModelEndpointSchema, pi as supportsFiles, pn as defaultAssistantsVersion, po as Tools, pr as MCPServersSchema, pt as DEFAULT_MEMORY_MAX_INPUT_TOKENS, q as accessRoleSchema, qa as removeNullishValues, qi as Verbosity, qn as skillSyncGitHubSourceSchema, qr as fileConfigSchema, qt as allowedAddressesSchema, ra as coerceNumber, ri as isBedrockDocumentType, rn as bedrockEndpointSchema, ro as tPresetSchema, rr as transactionsSchema, rt as updateResourcePermissionsResponseSchema, sa as compactGoogleSchema, si as mergeFileConfig, sn as checkpointerSchema, so as AssistantStreamEvents, sr as vertexAISchema, st as BASE_ONLY_CONFIG_SECTIONS, ta as authTypeSchema, ti as isAnthropicDocumentType, tn as balanceSchema, to as tPluginAuthConfigSchema, tr as toolApprovalModeSchema, tt as resourcePermissionsResponseSchema, ua as documentSupportedProviders, ui as retrievalMimeTypesList, un as configSchema, uo as MessageContentTypes, ur as webSearchSchema, ut as Capabilities, va as eReasoningResponseKeySchema, vi as modelSpecSubagentsSchema, vn as endpointSchema, vo as hostImageNamePrefix, vr as WebSocketOptionsSchema, vt as ForkOptions, wa as extendedModelEndpointSchema, wi as SettingTypes, wn as getDefaultParamsEndpoint, wo as feedbackSchema, wr as checkOpenAIStorage, wt as MAX_SUBAGENT_GRAPH_NODES, xa as eThinkingLevelSchema, xi as MAX_SUBAGENTS, xn as fileStorageSchema, xo as FEEDBACK_REASON_KEYS, xr as TokenExchangeMethodEnum, xt as KnownEndpoints, ya as eReasoningSummarySchema, yi as specsConfigSchema, yn as excludedKeys, yo as isActionTool, yr as AuthTypeEnum, yt as ImageDetailCost, z as DynamicQueryKeys, za as isOpenAILikeProvider, zi as ReasoningContext, zn as ocrSchema, zr as defaultOCRMimeTypes, zt as SettingsTabValues } from "./data-service-pwrlWjJs.mjs";
1
+ import { $ as permissionEntrySchema, $a as googleSchema, $i as BedrockReasoningConfig, $n as specialVariables, $o as feedbackSchema, $r as defaultTextMimeTypes, $s as normalizeEndpointName, $t as azureGroupConfigsSchema, Aa as defaultAgentFormValues, Ai as materializeModelSpecEndpoints, An as imageGenTools, Ao as tQueryParamsSchema, Ar as isProcessMCPServerField, As as feedbackFilterFieldSchema, At as SKILL_SYNC_DEFAULT_DISCOVERY_DEPTH, B as MutationKeys, Ba as eReasoningResponseKeySchema, Bi as getMaxSubagents, Bn as modularEndpoints, Bo as actionDelimiter, Br as registerPage, Bs as hasActivePiiPatterns, Bt as SettingsViews, Ca as authTypeSchema, Ci as setFileConfigRegexCompiler, Cn as fileSourceSchema, Co as tConvoUpdateSchema, Cr as MCP_USER_INPUT_FIELDS, Cs as SKILL_FILTER_FIELDS, Ct as MAX_SUBAGENT_DEPTH, Da as compactAgentsSchema, Di as videoMimeTypes, Dn as getDefaultParamsEndpoint, Do as tPluginAuthConfigSchema, Dr as WebSocketOptionsSchema, Ds as agentInstructionFilterFieldSchema, Dt as RateLimitPrefix, Ea as compactAgentsBaseSchema, Ei as textMimeTypes, En as getConfigDefaults, Eo as tModelSpecPresetSchema, Er as StreamableHTTPOptionsSchema, Es as actionMetadataFilterFieldSchema, Et as OCRStrategy, F as request_default, Fa as eModelEndpointSchema, Fi as MAX_CHAT_PROJECT_DESCRIPTION_LENGTH, Fn as langfuseConfigSchema, Fo as FilePurpose, Fr as FileSources, Fs as filterPiiStarterPatternSchema, Ft as SafeSearchTypes, G as PrincipalType, Ga as endpointSettings, Gi as clampSettingRange, Gn as paramDefinitionSchema, Go as isActionTool, Gr as bedrockDocumentFormats, Gs as skillFilterFieldSchema, Gt as VisionModes, H as AccessRoleIds, Ha as eThinkingDisplaySchema, Hi as ComponentTypes, Hn as normalizeSearxngEngines, Ho as defaultOrderQuery, Hr as applicationMimeTypes, Hs as messageFilterFieldSchema, Ht as TTSProviders, I as getTokenHeader, Ia as eReasoningContextSchema, Ii as MAX_CHAT_PROJECT_NAME_LENGTH, In as memorySchema, Io as MessageContentTypes, Ir as checkOpenAIStorage, Is as filtersConfigSchema, It as ScraperProviders, J as accessRoleToPermBits, Ja as getGoogleThinkingBudgetMax, Ji as generateOpenAISchema, Jn as resolveEndpointType, Jo as resolveStatefulCodeEnvironment, Jr as codeInterpreterMimeTypesList, Js as userSubmittedMessageFieldPathSchema, Jt as alternateName, K as ResourceType, Ka as extendedModelEndpointSchema, Ki as generateDynamicSchema, Kn as providerEndpointMap, Ko as STATEFUL_CODE_ENVIRONMENTS, Kr as bedrockDocumentMimeTypes, Ks as toolArgumentFilterFieldSchema, Kt as agentsEndpointSchema, L as setAcceptLanguageHeader, La as eReasoningEffortSchema, Li as MAX_GRAPH_SUBAGENT_MEMBERS, Ln as messageFilterPiiSchema, Lo as RunStatus, Lr as apiBaseUrl, Ls as getPiiRegexProgramSize, Lt as SearchCategories, Ma as documentSupportedProviders, Mi as resolveModelSpecEndpoint, Mn as interfaceSchema, Mo as AnnotationTypes, Mr as AuthorizationTypeEnum, Ms as filterPiiActionSchema, Mt as SKILL_SYNC_MAX_INTERVAL_MINUTES, Na as eAnthropicEffortSchema, Ni as specsConfigSchema, Nn as isRemoteOidcUrlAllowed, No as AssistantStreamEvents, Nr as TokenExchangeMethodEnum, Ns as filterPiiCustomPatternSchema, Nt as SKILL_SYNC_MIN_INTERVAL_MINUTES, Oa as compactAssistantSchema, Oi as REFILL_INTERVAL_UNITS, On as getEndpointField, Oo as tPluginSchema, Or as hasProcessMCPServerConfig, Os as conversationStarterFilterFieldSchema, Ot as RerankerTypes, Pa as eImageDetailSchema, Pi as tModelSpecSchema, Pn as isSecureCodeEnvironmentControlURL, Po as EToolResources, Pr as FileContext, Ps as filterPiiRegexSchema, Pt as STTProviders, Q as permBitsToAccessLevel, Qa as googleGenConfigSchema, Qi as BedrockProviders, Qn as skillSyncGitHubSourceSchema, Qo as feedbackRatingSchema, Qr as defaultSTTMimeTypes, Qs as isSensitiveEnvVar, Qt as azureEndpointSchema, R as setTokenHeader, Ra as eReasoningModeSchema, Ri as MAX_SUBAGENTS, Rn as messageFilterSchema, Ro as StepStatus, Rr as buildLoginRedirectUrl, Rs as hasActiveFiltersConfig, Rt as SearchProviders, Sa as assistantSchema, Si as retrievalMimeTypesList, Sn as excludedKeys, So as tConversationTagSchema, Sr as MCP_SERVER_TITLE_PATTERN, Ss as PROMPT_FILTER_FIELDS, St as LocalStorageKeys, Ta as coerceNumber, Ti as supportsFiles, Tn as fileStrategiesSchema, To as tMessageSchema, Tr as StdioOptionsSchema, Ts as TOOL_ARGUMENT_FILTER_FIELDS, Tt as MAX_SUBAGENT_RUN_CONFIGS, U as PermissionBits, Ua as eThinkingLevelSchema, Ui as OptionTypes, Un as normalizeServerName, Uo as hostImageIdSuffix, Ur as audioMimeTypes, Us as modelParameterFilterFieldSchema, Ut as Time, V as QueryKeys, Va as eReasoningSummarySchema, Vi as setMaxSubagents, Vn as normalizeMCPToolKey, Vo as actionDomainSeparator, Vr as sharedFileDownload, Vs as memoryFilterFieldSchema, Vt as SystemCategories, W as PrincipalModel, Wa as eVerbositySchema, Wi as SettingTypes, Wn as ocrSchema, Wo as hostImageNamePrefix, Wr as bedrockDocumentExtensions, Ws as promptFilterFieldSchema, Wt as ViolationTypes, X as getResourcePermissionsResponseSchema, Xa as getSettingsKeys, Xi as AnthropicEffort, Xn as setMessageFilterRegexValidator, Xo as FEEDBACK_REASON_KEYS, Xr as convertStringsToRegex, Xs as extractEnvVariable, Xt as assistantEndpointSchema, Y as effectivePermissionsResponseSchema, Ya as getModelKey, Yi as validateSettingDefinitions, Yn as retainRecentConfigSchema, Yo as FEEDBACK_RATINGS, Yr as codeTypeMapping, Ys as envVarRegex, Yt as anthropicEndpointSchema, Z as hasPermissions, Za as googleBaseSchema, Zi as AuthType, Zn as skillSyncConfigSchema, Zo as FEEDBACK_TAGS, Zr as defaultOCRMimeTypes, Zs as extractVariableName, Zt as azureBaseSchema, _a as agentsSchema, _i as mbToBytes, _n as defaultEndpoints, _o as removeNullishValues, _r as webSearchSchema, _s as MAX_PII_PATTERN_LABEL_LENGTH, _t as FetchTokenConfig, a as data_service_exports, aa as Providers, ai as fileConfigSchema, an as bedrockModels, ao as isAssistantsEndpoint, ar as summarizationTriggerSchema, as as AGENT_INSTRUCTION_FILTER_FIELDS, at as AgentCapabilities, ba as anthropicSchema, bi as mimeTypeAliases, bn as defaultSocialLogins, bo as tBannerSchema, br as MCPServersSchema, bs as MESSAGE_FILTER_FIELDS, bt as InfiniteCollections, ca as ReasoningMode, ci as getEndpointFileConfig, cn as checkpointerTypeSchema, co as isMythosClassModel, cr as toolApprovalModeSchema, cs as FEEDBACK_FILTER_FIELDS, ct as BASE_PRINCIPAL_CONFIG_SECTIONS, da as ReasoningSummary, di as imageTypeMapping, dn as codeEnvironmentUserConfigSchema, do as isUUID, dr as turnstileOptionsSchema, ds as HITL_MESSAGE_FILTER_FIELDS, dt as CohereConstants, ea as EModelEndpoint, ei as documentParserMimeTypes, en as azureGroupSchema, eo as googleSettings, er as splitMCPToolKey, es as feedbackTagKeySchema, et as principalSchema, fa as SkillsScope, fi as inferMimeType, fn as codeEnvironmentUserSettingsSchema, fo as openAIBaseSchema, fr as turnstileSchema, fs as MAX_PII_CUSTOM_PATTERNS_TOTAL, ft as Constants, ga as agentsBaseSchema, gi as isPermissiveMimeConfig, gn as defaultAssistantsVersion, go as paramEndpoints, gr as visionModels, gs as MAX_PII_PATTERN_ID_LENGTH, gt as ErrorTypes, ha as Verbosity, hi as isBedrockDocumentType, hn as defaultAgentCapabilities, ho as openRouterSchema, hr as vertexModelConfigSchema, hs as MAX_PII_PATTERNS_PER_SOURCE, ht as EndpointURLs, ia as MemoryScope, ii as fileConfig, in as bedrockGuardrailConfigSchema, io as isAgentsEndpoint, ir as summarizationConfigSchema, is as ACTION_METADATA_FILTER_FIELDS, it as AUTH_USER_DOC_BY_ID_PREFIX, ja as defaultAssistantFormValues, ji as modelSpecSubagentsSchema, jn as initialModelsConfig, jo as tSharedLinkSchema, jr as AuthTypeEnum, js as fileFilterFieldSchema, jt as SKILL_SYNC_MAX_DISCOVERY_DEPTH, ka as compactGoogleSchema, ki as getRefillEligibilityDate, kn as getSchemaDefaults, ko as tPresetSchema, kr as isProcessMCPServerConfig, ks as conversationTitleFilterFieldSchema, kt as RetentionMode, la as ReasoningParameterFormat, li as imageExtRegex, ln as cloudfrontConfigSchema, lo as isOpenAILikeProvider, lr as toolApprovalPolicySchema, ls as FILE_FILTER_FIELDS, lt as CacheKeys, ma as ThinkingLevel, mi as isAnthropicTextDocumentType, mn as contextPruningSchema, mo as openAISettings, mr as vertexAISchema, ms as MAX_PII_CUSTOM_REGEX_INSTRUCTIONS, mt as EImageOutputType, na as ImageVisionTool, ni as excelFileTypes, nn as baseEndpointSchema, no as imageDetailValue, nr as stripServerNamePrefix, ns as getTagsForRating, nt as updateResourcePermissionsRequestSchema, oa as ReasoningContext, oi as fullMimeTypesList, on as buildServerNameAliases, oo as isDocumentSupportedProvider, or as supportsBalanceCheck, os as CONVERSATION_STARTER_FILTER_FIELDS, ot as AuthKeys, pa as ThinkingDisplay, pi as isAnthropicDocumentType, pn as configSchema, po as openAISchema, pr as validateVisionModel, ps as MAX_PII_CUSTOM_REGEX_CHARACTERS, pt as DEFAULT_MEMORY_MAX_INPUT_TOKENS, q as accessRoleSchema, qa as getGoogleThinkingBudgetBounds, qi as generateGoogleSchema, qn as rateLimitSchema, qo as resolveAllowedStatefulCodeEnvironments, qr as codeInterpreterMimeTypes, qs as unattributedAssistantContentSchema, qt as allowedAddressesSchema, ra as MYTHOS_CLASS_FAMILIES, ri as excelMimeTypes, rn as bedrockEndpointSchema, ro as inputTokensIncludesCache, rr as stripServerNamePrefixes, rs as toMinimalFeedback, rt as updateResourcePermissionsResponseSchema, sa as ReasoningEffort, si as getConfiguredMimeAccept, sn as checkpointerSchema, so as isImageVisionTool, sr as toolApprovalHookConfigSchema, ss as CONVERSATION_TITLE_FILTER_FIELDS, st as BASE_ONLY_CONFIG_SECTIONS, ta as ImageDetail, ti as endpointFileConfigSchema, tn as balanceSchema, to as imageDetailNumeric, tr as splitToolCallName, ts as getTagByKey, tt as resourcePermissionsResponseSchema, ua as ReasoningResponseKey, ui as imageMimeTypes, un as codeEnvironmentPermissionDecisionSchema, uo as isParamEndpoint, ur as transactionsSchema, us as FILTER_PII_STARTER_PATTERNS, ut as Capabilities, va as agentsSettings, vi as megabyte, vn as defaultModels, vo as resolveAgentSkillsScope, vr as MCPOptionsSchema, vs as MAX_PII_PATTERN_LENGTH, vt as ForkOptions, wa as cacheSubsetProviders, wi as supportedMimeTypes, wn as fileStorageSchema, wo as tExampleSchema, wr as SSEOptionsSchema, ws as STORED_MESSAGE_FILTER_FIELDS, wt as MAX_SUBAGENT_GRAPH_NODES, xa as anthropicSettings, xi as retrievalMimeTypes, xn as endpointSchema, xo as tConversationSchema, xr as MCP_SERVER_TITLE_ERROR, xs as MODEL_PARAMETER_FILTER_FIELDS, xt as KnownEndpoints, ya as anthropicBaseSchema, yi as mergeFileConfig, yn as defaultRetrievalModels, yo as subagentThreadLineageSchema, yr as MCPServerUserInputSchema, ys as MEMORY_FILTER_FIELDS, yt as ImageDetailCost, z as DynamicQueryKeys, za as eReasoningParameterFormatSchema, zi as MAX_SUBAGENTS_CEILING, zn as modelConfigSchema, zo as Tools, zr as loginPage, zs as hasActivePiiFields, zt as SettingsTabValues } from "./data-service-CaB7saTP.mjs";
2
2
  import { z } from "zod";
3
3
  import dayjs from "dayjs";
4
4
  import utc from "dayjs/plugin/utc.js";
5
5
  import timezonePlugin from "dayjs/plugin/timezone.js";
6
+ import { Cron } from "croner";
6
7
  import axios from "axios";
7
8
  import { URL } from "url";
8
9
  import crypto from "crypto";
@@ -184,6 +185,17 @@ function supportsContext1m(model) {
184
185
  return false;
185
186
  }
186
187
  /**
188
+ * Checks whether a native Anthropic Claude model supports prompt caching.
189
+ *
190
+ * This uses the configured model ID directly. Resolving it through a token
191
+ * map first can collapse a newly released Claude model to the generic
192
+ * `claude-` fallback and incorrectly disable cache control.
193
+ */
194
+ function supportsPromptCache(model) {
195
+ if (model.includes("claude-3-5-sonnet-latest") || model.includes("claude-3.5-sonnet-latest")) return false;
196
+ return /claude-3[-.]7/.test(model) || /claude-3[-.]5-(?:sonnet|haiku)/.test(model) || /claude-3-(?:sonnet|haiku|opus)?/.test(model) || /claude-(?:sonnet|opus|haiku)[-.]?(?:[4-9]|\d{2,})/.test(model) || /claude-(?:[4-9]|\d{2,})(?:[-.](?:sonnet|opus|haiku))?/.test(model) || isMythosClassModel(model);
197
+ }
198
+ /**
187
199
  * A Bedrock Claude model ID may be prefixed (`anthropic.claude-*`,
188
200
  * `us.anthropic.claude-*`, `global.anthropic.claude-*`) or bare (`claude-*`,
189
201
  * used when the LibreChat model ID maps to an application inference profile).
@@ -638,11 +650,14 @@ let StepEvents = /* @__PURE__ */ function(StepEvents) {
638
650
  StepEvents["ON_REASONING_DELTA"] = "on_reasoning_delta";
639
651
  StepEvents["ON_RUN_STEP_DELTA"] = "on_run_step_delta";
640
652
  StepEvents["ON_RUN_STEP_COMPLETED"] = "on_run_step_completed";
653
+ /** Terminal signal for a run step: closed with a status and timestamps. */
654
+ StepEvents["ON_RUN_STEP_CLOSED"] = "on_run_step_closed";
641
655
  StepEvents["ON_SUMMARIZE_START"] = "on_summarize_start";
642
656
  StepEvents["ON_SUMMARIZE_DELTA"] = "on_summarize_delta";
643
657
  StepEvents["ON_SUMMARIZE_COMPLETE"] = "on_summarize_complete";
644
658
  StepEvents["ON_SUBAGENT_UPDATE"] = "on_subagent_update";
645
659
  StepEvents["ON_SANDBOX_STARTING"] = "on_sandbox_starting";
660
+ StepEvents["ON_PTC_TOOL_CALL"] = "on_ptc_tool_call";
646
661
  return StepEvents;
647
662
  }({});
648
663
  /** Token-tracking event names streamed to the client (separate from StepEvents dispatch). */
@@ -683,6 +698,13 @@ let ActivityLabelEvents = /* @__PURE__ */ function(ActivityLabelEvents) {
683
698
  ActivityLabelEvents["ON_ACTIVITY_LABEL"] = "on_activity_label";
684
699
  return ActivityLabelEvents;
685
700
  }({});
701
+ /** Live title updates for an existing reasoning content part. */
702
+ let ReasoningLabelEvents = /* @__PURE__ */ function(ReasoningLabelEvents) {
703
+ ReasoningLabelEvents["ON_REASONING_LABEL"] = "on_reasoning_label";
704
+ /** Internal durable budget reservation; clients intentionally do not render it. */
705
+ ReasoningLabelEvents["ON_REASONING_LABEL_ATTEMPT"] = "on_reasoning_label_attempt";
706
+ return ReasoningLabelEvents;
707
+ }({});
686
708
  /**
687
709
  * Full prompt token count for one completed model call — the EXACT context the
688
710
  * model saw, provider-aware: additive providers (Bedrock) report `input_tokens`
@@ -958,6 +980,14 @@ function replaceSpecialVars({ text, user, now: inputNow, timezone }) {
958
980
  return result;
959
981
  }
960
982
  /**
983
+ * Resolves the display label ("sender") for an ephemeral agent:
984
+ * `modelLabel` (user/preset) → model spec's `label` → endpoint config's
985
+ * `modelDisplayLabel` → `''` (lets consumers fall back to the model name).
986
+ */
987
+ function getEphemeralSender({ modelLabel, specLabel, modelDisplayLabel }) {
988
+ return modelLabel ?? specLabel ?? modelDisplayLabel ?? "";
989
+ }
990
+ /**
961
991
  * Encodes an ephemeral agent ID from endpoint, model, optional sender, and optional index.
962
992
  * Uses __ to replace : (reserved in graph node names) and ___ to separate sender.
963
993
  *
@@ -1249,7 +1279,106 @@ function mapGroupToAzureConfig({ groupName, groupMap }) {
1249
1279
  return result;
1250
1280
  }
1251
1281
  //#endregion
1282
+ //#region src/langchain.ts
1283
+ /**
1284
+ * LangChain classifies a provider failure by mutating the error: it stamps `lc_error_code` and
1285
+ * appends `\n\nTroubleshooting URL: <docs url>\n` to the message. Both halves are handled here
1286
+ * because the server strips the URL before persisting the message, while the client still reads the
1287
+ * code back out of messages persisted before it did.
1288
+ */
1289
+ const LANGCHAIN = "langchain";
1290
+ const ERROR_PATH = "/errors/";
1291
+ const TROUBLESHOOTING_LABEL = "Troubleshooting URL:";
1292
+ const WHITESPACE = /\s/;
1293
+ /** Provider errors cross untyped boundaries, so a `message` is not guaranteed to be a string. */
1294
+ function toMessageText(message) {
1295
+ if (typeof message === "string") return message;
1296
+ return message == null ? "" : String(message);
1297
+ }
1298
+ function isErrorCodeCharacter(character) {
1299
+ const code = character.charCodeAt(0);
1300
+ return character === "_" || code >= 65 && code <= 90 || code >= 97 && code <= 122;
1301
+ }
1302
+ function findTokenEnd(text, start, limit = text.length) {
1303
+ let end = start;
1304
+ while (end < limit && !WHITESPACE.test(text[end])) end += 1;
1305
+ return end;
1306
+ }
1307
+ function findErrorCode(text, searchableText, start, end) {
1308
+ const langChainIndex = searchableText.indexOf(LANGCHAIN, start);
1309
+ if (langChainIndex < 0 || langChainIndex >= end) return;
1310
+ let errorCode;
1311
+ let pathIndex = searchableText.indexOf(ERROR_PATH, langChainIndex + 9);
1312
+ while (pathIndex >= 0 && pathIndex < end) {
1313
+ const codeStart = pathIndex + 8;
1314
+ let codeEnd = codeStart;
1315
+ while (codeEnd < end && isErrorCodeCharacter(text[codeEnd])) codeEnd += 1;
1316
+ if (codeEnd > codeStart) errorCode = {
1317
+ start: codeStart,
1318
+ end: codeEnd
1319
+ };
1320
+ pathIndex = searchableText.indexOf(ERROR_PATH, Math.max(codeStart, codeEnd));
1321
+ }
1322
+ return errorCode;
1323
+ }
1324
+ /** Removes LangChain's appended docs URL so provider text carries no third-party attribution. */
1325
+ function stripLangChainTroubleshootingUrl(message) {
1326
+ const text = toMessageText(message);
1327
+ const parts = [];
1328
+ let copiedUntil = 0;
1329
+ let searchFrom = 0;
1330
+ while (searchFrom < text.length) {
1331
+ const labelStart = text.indexOf(TROUBLESHOOTING_LABEL, searchFrom);
1332
+ if (labelStart < 0) break;
1333
+ let matchStart = labelStart;
1334
+ while (matchStart > copiedUntil && WHITESPACE.test(text[matchStart - 1])) matchStart -= 1;
1335
+ let urlStart = labelStart + 20;
1336
+ while (urlStart < text.length && WHITESPACE.test(text[urlStart])) urlStart += 1;
1337
+ if (!text.startsWith("https://", urlStart) && !text.startsWith("http://", urlStart)) {
1338
+ searchFrom = urlStart;
1339
+ continue;
1340
+ }
1341
+ const urlEnd = findTokenEnd(text, urlStart);
1342
+ const errorCode = findErrorCode(text, text, urlStart, urlEnd);
1343
+ if (errorCode == null) {
1344
+ searchFrom = urlEnd;
1345
+ continue;
1346
+ }
1347
+ let matchEnd = errorCode.end;
1348
+ if (text[matchEnd] === "/") matchEnd += 1;
1349
+ while (matchEnd < text.length && WHITESPACE.test(text[matchEnd])) matchEnd += 1;
1350
+ parts.push(text.slice(copiedUntil, matchStart), " ");
1351
+ copiedUntil = matchEnd;
1352
+ searchFrom = matchEnd;
1353
+ }
1354
+ parts.push(text.slice(copiedUntil));
1355
+ return parts.join("").trim();
1356
+ }
1357
+ /** The classification LangChain encoded in the docs URL it appended, when the text carries one. */
1358
+ function parseLangChainErrorCode(message) {
1359
+ const text = toMessageText(message);
1360
+ const searchableText = text.toLowerCase();
1361
+ let searchFrom = 0;
1362
+ while (searchFrom < text.length) {
1363
+ const langChainIndex = searchableText.indexOf(LANGCHAIN, searchFrom);
1364
+ if (langChainIndex < 0) return;
1365
+ const tokenEnd = findTokenEnd(text, langChainIndex);
1366
+ const errorCode = findErrorCode(text, searchableText, langChainIndex, tokenEnd);
1367
+ if (errorCode != null) return text.slice(errorCode.start, errorCode.end).toUpperCase();
1368
+ searchFrom = tokenEnd + 1;
1369
+ }
1370
+ }
1371
+ //#endregion
1252
1372
  //#region src/messages.ts
1373
+ /** A generated reasoning title describes the text as it existed at generation time.
1374
+ * Any manual edit or merge into a different reasoning step invalidates the entire
1375
+ * title revision domain while preserving unrelated content metadata. */
1376
+ function stripReasoningLabelMetadata(part) {
1377
+ if (part.type !== "think") return part;
1378
+ const { reasoning_label: _label, reasoning_label_step_id: _stepId, reasoning_label_attempts: _attempts, reasoning_label_submitted_chars: _submittedChars, reasoning_label_revision: _revision, reasoning_label_status: _status, ...unlabeledPart } = part;
1379
+ return unlabeledPart;
1380
+ }
1381
+ const treeCache = /* @__PURE__ */ new WeakMap();
1253
1382
  /**
1254
1383
  * Builds the render tree from the flat messages array. Order-robust: live
1255
1384
  * stream/steer/preempt cache writes can momentarily place a child before its
@@ -1260,6 +1389,11 @@ function mapGroupToAzureConfig({ groupName, groupMap }) {
1260
1389
  */
1261
1390
  function buildTree({ messages, fileMap }) {
1262
1391
  if (messages === null) return null;
1392
+ const cached = treeCache.get(messages);
1393
+ if (cached) {
1394
+ if (fileMap == null && cached.bare) return cached.bare;
1395
+ if (fileMap != null && cached.fileMap === fileMap && cached.hydrated) return cached.hydrated;
1396
+ }
1263
1397
  const messageMap = {};
1264
1398
  const orderedMessages = [];
1265
1399
  const rootMessages = [];
@@ -1313,7 +1447,69 @@ function buildTree({ messages, fileMap }) {
1313
1447
  rootMessages.push(extendedMessage);
1314
1448
  assignDepths(extendedMessage);
1315
1449
  }
1316
- return rootMessages;
1450
+ const tree = rootMessages;
1451
+ const entry = cached ?? {};
1452
+ if (fileMap == null) entry.bare = tree;
1453
+ else {
1454
+ entry.fileMap = fileMap;
1455
+ entry.hydrated = tree;
1456
+ }
1457
+ if (!cached) treeCache.set(messages, entry);
1458
+ return tree;
1459
+ }
1460
+ //#endregion
1461
+ //#region src/runSteps.ts
1462
+ /**
1463
+ * Below this, a duration is noise rather than information: sub-second tool
1464
+ * calls are the common case, and labelling every one of them `· 0.3s` adds a
1465
+ * moving number to the end of most cards without telling the reader anything
1466
+ * they could act on. Callers use {@link isReportableRunStepDuration} rather
1467
+ * than comparing against this directly.
1468
+ */
1469
+ const MIN_REPORTABLE_RUN_STEP_DURATION_MS = 1e3;
1470
+ /**
1471
+ * Wall-clock duration of a run step, derived from the terminal
1472
+ * `on_run_step_closed` event.
1473
+ *
1474
+ * Returns `undefined` rather than a fallback whenever the value would be a
1475
+ * guess, because a wrong duration is worse than an absent one — an absent one
1476
+ * renders nothing, a wrong one is indistinguishable from a real measurement:
1477
+ *
1478
+ * - `created_at` is optional on the event; emitters that do not know when the
1479
+ * step opened cannot have their duration inferred from anything else.
1480
+ * - A negative result means the two timestamps came from clocks that disagree.
1481
+ * That is not hypothetical: since `@librechat/agents` v3.6.0 a step can be
1482
+ * opened in one process and closed in another after a checkpoint resume, so
1483
+ * the two stamps can legitimately originate on different machines.
1484
+ * - Non-finite input is treated as absent instead of propagating `NaN` into
1485
+ * rendering.
1486
+ *
1487
+ * Known limits, accepted rather than guessed at: only the negative direction
1488
+ * of clock skew is detectable from a single stamp pair — positive skew
1489
+ * inflates the result and cannot be distinguished from a genuinely long
1490
+ * step. And the value is wall-clock elapsed between open and close, so a
1491
+ * step held open across a suspension (a checkpoint resume, a HITL approval
1492
+ * wait) includes that held-open time. Both are properties of the only data
1493
+ * available, not derivation bugs.
1494
+ */
1495
+ function getRunStepDurationMs(closed) {
1496
+ const { created_at: createdAt, closed_at: closedAt } = closed;
1497
+ if (typeof createdAt !== "number" || typeof closedAt !== "number") return;
1498
+ if (!Number.isFinite(createdAt) || !Number.isFinite(closedAt)) return;
1499
+ const durationMs = closedAt - createdAt;
1500
+ return durationMs >= 0 ? durationMs : void 0;
1501
+ }
1502
+ /**
1503
+ * Whether a derived duration is worth showing to the reader.
1504
+ *
1505
+ * This is a presentation judgment, so it belongs at render time only. The
1506
+ * stamp sites persist the raw {@link getRunStepDurationMs} value instead of
1507
+ * pre-filtering through this — thresholding at write time would bake a
1508
+ * display rule into stored data, making "fast" indistinguishable from "not
1509
+ * derivable" and unrecoverable if the rule ever changes.
1510
+ */
1511
+ function isReportableRunStepDuration(durationMs) {
1512
+ return typeof durationMs === "number" && durationMs >= 1e3;
1317
1513
  }
1318
1514
  //#endregion
1319
1515
  //#region src/artifacts.ts
@@ -4486,6 +4682,10 @@ let PermissionTypes = /* @__PURE__ */ function(PermissionTypes) {
4486
4682
  * Type for Shared Link Permissions
4487
4683
  */
4488
4684
  PermissionTypes["SHARED_LINKS"] = "SHARED_LINKS";
4685
+ /**
4686
+ * Type for Scheduled Chats Permissions
4687
+ */
4688
+ PermissionTypes["SCHEDULES"] = "SCHEDULES";
4489
4689
  return PermissionTypes;
4490
4690
  }({});
4491
4691
  /**
@@ -4509,11 +4709,20 @@ const PERMISSION_TYPE_INTERFACE_FIELDS = {
4509
4709
  ["MCP_SERVERS"]: "mcpServers",
4510
4710
  ["REMOTE_AGENTS"]: "remoteAgents",
4511
4711
  ["SKILLS"]: "skills",
4512
- ["SHARED_LINKS"]: "sharedLinks"
4712
+ ["SHARED_LINKS"]: "sharedLinks",
4713
+ ["SCHEDULES"]: "schedules"
4513
4714
  };
4514
4715
  /** Set of interface config field names that correspond to role permissions. */
4515
4716
  const INTERFACE_PERMISSION_FIELDS = new Set(Object.values(PERMISSION_TYPE_INTERFACE_FIELDS));
4516
4717
  /**
4718
+ * Interface fields that seed a permission (use/create) BUT also carry runtime
4719
+ * config that must survive DB/tenant/user overrides. For these, override
4720
+ * sanitizers strip only the permission sub-keys (use/create) from the object
4721
+ * form and PRESERVE the boolean form — for `schedules`, `interface.schedules: false`
4722
+ * is the runtime feature disable that `getLimits` reads, not a permission toggle.
4723
+ */
4724
+ const RUNTIME_CONFIG_INTERFACE_FIELDS = new Set(["schedules"]);
4725
+ /**
4517
4726
  * YAML sub-keys within composite interface permission fields that map to permission bits.
4518
4727
  * When an interface permission field is an object, only these sub-keys are stripped from
4519
4728
  * DB overrides — other sub-keys (like `placeholder`, `trustCheckbox`) are UI-only and pass through.
@@ -4614,6 +4823,10 @@ const skillPermissionsSchema = z.object({
4614
4823
  ["SHARE"]: z.boolean().default(false),
4615
4824
  ["SHARE_PUBLIC"]: z.boolean().default(false)
4616
4825
  });
4826
+ const schedulesPermissionsSchema = z.object({
4827
+ ["USE"]: z.boolean().default(true),
4828
+ ["CREATE"]: z.boolean().default(true)
4829
+ });
4617
4830
  const sharedLinksPermissionsSchema = z.object({
4618
4831
  ["CREATE"]: z.boolean().default(true),
4619
4832
  ["SHARE"]: z.boolean().default(true),
@@ -4635,7 +4848,8 @@ const permissionsSchema = z.object({
4635
4848
  ["MCP_SERVERS"]: mcpServersPermissionsSchema,
4636
4849
  ["REMOTE_AGENTS"]: remoteAgentsPermissionsSchema,
4637
4850
  ["SKILLS"]: skillPermissionsSchema,
4638
- ["SHARED_LINKS"]: sharedLinksPermissionsSchema
4851
+ ["SHARED_LINKS"]: sharedLinksPermissionsSchema,
4852
+ ["SCHEDULES"]: schedulesPermissionsSchema
4639
4853
  });
4640
4854
  //#endregion
4641
4855
  //#region src/roles.ts
@@ -4716,6 +4930,10 @@ const defaultRolesSchema = z.object({
4716
4930
  ["CREATE"]: z.boolean().default(true),
4717
4931
  ["SHARE"]: z.boolean().default(true),
4718
4932
  ["SHARE_PUBLIC"]: z.boolean().default(true)
4933
+ }),
4934
+ ["SCHEDULES"]: schedulesPermissionsSchema.extend({
4935
+ ["USE"]: z.boolean().default(true),
4936
+ ["CREATE"]: z.boolean().default(true)
4719
4937
  })
4720
4938
  })
4721
4939
  }),
@@ -4789,6 +5007,10 @@ const roleDefaults = defaultRolesSchema.parse({
4789
5007
  ["CREATE"]: true,
4790
5008
  ["SHARE"]: true,
4791
5009
  ["SHARE_PUBLIC"]: true
5010
+ },
5011
+ ["SCHEDULES"]: {
5012
+ ["USE"]: true,
5013
+ ["CREATE"]: true
4792
5014
  }
4793
5015
  }
4794
5016
  },
@@ -4844,6 +5066,10 @@ const roleDefaults = defaultRolesSchema.parse({
4844
5066
  ["CREATE"]: true,
4845
5067
  ["SHARE"]: true,
4846
5068
  ["SHARE_PUBLIC"]: true
5069
+ },
5070
+ ["SCHEDULES"]: {
5071
+ ["USE"]: true,
5072
+ ["CREATE"]: true
4847
5073
  }
4848
5074
  }
4849
5075
  }
@@ -4863,6 +5089,308 @@ let InvocationMode = /* @__PURE__ */ function(InvocationMode) {
4863
5089
  return InvocationMode;
4864
5090
  }({});
4865
5091
  //#endregion
5092
+ //#region src/types/schedules.ts
5093
+ /** Cadences the dialog builds from structured pickers (hour, minute, weekday). */
5094
+ const scheduleStructuredFrequencies = [
5095
+ "hourly",
5096
+ "daily",
5097
+ "weekdays",
5098
+ "weekly"
5099
+ ];
5100
+ const scheduleFrequencies = [...scheduleStructuredFrequencies, "cron"];
5101
+ /** Bounds a stored expression. Generous for five fields, because each one can hold a
5102
+ * list: an every-minute-of-the-hour cadence spelled out runs past two hundred chars. */
5103
+ const SCHEDULE_CRON_MAX_LENGTH = 256;
5104
+ const scheduleTargets = ["new"];
5105
+ const structuredCadenceSchema = z.object({
5106
+ frequency: z.enum(scheduleStructuredFrequencies),
5107
+ hour: z.number().int().min(0).max(23),
5108
+ minute: z.number().int().min(0).max(59),
5109
+ daysOfWeek: z.array(z.number().int().min(0).max(6)).min(1).max(7).transform((days) => Array.from(new Set(days))).optional()
5110
+ });
5111
+ /**
5112
+ * A raw cron expression carries its own hour and minute, so it cannot share the
5113
+ * structured shape: there is no single `hour` for `0 9,17 * * 1-5`. Syntax is
5114
+ * validated server-side by croner, the same parser the engine fires from, rather
5115
+ * than by a regex that would accept patterns croner then rejects at fire time.
5116
+ */
5117
+ const cronCadenceSchema = z.object({
5118
+ frequency: z.literal("cron"),
5119
+ expression: z.string().trim().min(1).max(256)
5120
+ });
5121
+ const scheduleCadenceSchema = z.discriminatedUnion("frequency", [structuredCadenceSchema, cronCadenceSchema]);
5122
+ const isCronCadence = (cadence) => cadence.frequency === "cron";
5123
+ const createSchedulePayloadSchema = z.object({
5124
+ name: z.string().trim().min(1).max(256),
5125
+ prompt: z.string().trim().min(1).max(32e3),
5126
+ agent_id: z.string().trim().min(1),
5127
+ cadence: scheduleCadenceSchema,
5128
+ timezone: z.string().min(1),
5129
+ target: z.enum(scheduleTargets).default("new"),
5130
+ file_ids: z.array(z.string()).max(10).transform((ids) => Array.from(new Set(ids))).optional(),
5131
+ /**
5132
+ * Chat project each run's conversation is filed under. `null` clears the scope.
5133
+ * Ownership is checked server-side at write time and again at every fire, so a
5134
+ * deleted project disables the schedule instead of silently filing runs loose.
5135
+ */
5136
+ chatProjectId: z.string().trim().min(1).nullable().optional(),
5137
+ enabled: z.boolean().default(true),
5138
+ /**
5139
+ * Client-generated key making creation idempotent across retries. Creation commits
5140
+ * the row and arms it in two writes, so a failure between them leaves the client
5141
+ * unable to tell whether anything persisted; retrying blind can produce two recurring
5142
+ * schedules. A retry carrying the same key resolves to the original row instead.
5143
+ * REQUIRED: an optional key preserves the keyless duplicate path for any client
5144
+ * that omits it, which is exactly the failure the key exists to close.
5145
+ */
5146
+ clientRequestId: z.string().trim().min(1).max(128)
5147
+ });
5148
+ /** Idempotency is a property of the CREATE attempt, not of the schedule's config. */
5149
+ const updateSchedulePayloadSchema = createSchedulePayloadSchema.omit({ clientRequestId: true }).partial().extend({
5150
+ /**
5151
+ * The configRevision the client's edit was computed from (captured when the
5152
+ * dialog opened). The server fences the update on it, so a concurrent edit
5153
+ * from another tab answers 409 instead of being silently overwritten by a
5154
+ * payload rebuilt from a stale snapshot (cadence is sent whole, so the
5155
+ * server-side fresh-read fence alone cannot detect this).
5156
+ */
5157
+ expectedConfigRevision: z.number().int().min(0).optional() });
5158
+ //#endregion
5159
+ //#region src/cadence.ts
5160
+ /** Mirrors the server default when a weekly cadence omits `daysOfWeek`. */
5161
+ const WEEKLY_DEFAULT_DAY = 1;
5162
+ /**
5163
+ * Minute, hour, day of month, month, day of week. croner also reads a six-field form
5164
+ * carrying seconds and a seven-field form that pins a year, and both are refused.
5165
+ * Seconds would promise a precision the runtime does not keep: the engine polls on a
5166
+ * thirty-second tick and offsets each schedule by up to two minutes of jitter. A pinned
5167
+ * year makes a cadence that runs out, and every caller here treats "no next occurrence"
5168
+ * as a cadence it cannot read.
5169
+ */
5170
+ const CRON_FIELD_COUNT = 5;
5171
+ /**
5172
+ * Spring-forward compresses consecutive wall-clock occurrences, so the ENFORCEABLE
5173
+ * minimum for day-and-longer gaps is the nominal gap minus the largest real-world
5174
+ * transition: two hours (Antarctica/Troll; every other zone shifts at most one).
5175
+ * A floor set exactly at the nominal value would otherwise admit a schedule that
5176
+ * genuinely violates it once a year. Hourly gaps are unaffected (the skipped hours
5177
+ * lengthen, never shorten, the gap between occurrences).
5178
+ */
5179
+ const DST_COMPRESSION_MINUTES = 120;
5180
+ /**
5181
+ * Occurrences sampled when measuring a cron expression's tightest gap. The floor
5182
+ * exists to reject expressions that fire too OFTEN, and a dense pattern reveals
5183
+ * its short gap within the first few occurrences, so a small window answers the
5184
+ * question this guards. Known limit: this is a bounded probe, not the exhaustive
5185
+ * proof the structured formulas give. An expression that is sparse for the next
5186
+ * `CRON_PROBE_OCCURRENCES` runs and dense later would pass here and be caught by
5187
+ * the fire-time recheck instead.
5188
+ */
5189
+ const CRON_PROBE_OCCURRENCES = 32;
5190
+ /** Enough to span four nominal gaps from an anchor two gaps before a transition,
5191
+ * which is what guarantees the straddling pair falls inside the window. */
5192
+ const TRANSITION_PROBE_OCCURRENCES = 5;
5193
+ /**
5194
+ * Compiles a cadence to the cron expression the engine fires from. Shared rather
5195
+ * than server-owned because the dialog previews the next runs, validates the
5196
+ * interval floor, and disables its own submit from these same functions: a second
5197
+ * client-side implementation would drift and either show run times the schedule
5198
+ * does not keep or accept a cadence the server then rejects.
5199
+ */
5200
+ function cadenceToCron(cadence) {
5201
+ if (cadence.frequency === "cron") return cadence.expression;
5202
+ const { frequency, hour, minute } = cadence;
5203
+ if (frequency === "hourly") return `${minute} * * * *`;
5204
+ if (frequency === "daily") return `${minute} ${hour} * * *`;
5205
+ if (frequency === "weekdays") return `${minute} ${hour} * * 1-5`;
5206
+ return `${minute} ${hour} * * ${[...cadence.daysOfWeek?.length ? cadence.daysOfWeek : [WEEKLY_DEFAULT_DAY]].sort((a, b) => a - b).join(",")}`;
5207
+ }
5208
+ /**
5209
+ * Everything `cronCadenceSchema` will accept: exactly five fields, within the length
5210
+ * the schema stores, and actually matching at some point. croner accepts syntactically
5211
+ * valid patterns that can never match (`0 0 30 2 *`), and those would arm a schedule
5212
+ * that never fires. Validated with croner rather than a regex, because a regex would
5213
+ * accept patterns croner then rejects at fire time.
5214
+ *
5215
+ * A five-field expression that matches at all matches forever, which is what lets every
5216
+ * caller keep reading "no next occurrence" as "this cadence is unreadable".
5217
+ */
5218
+ function isValidCronExpression(expression, timezone) {
5219
+ const trimmed = expression.trim();
5220
+ if (trimmed.length > 256) return false;
5221
+ if (trimmed.split(/\s+/).length !== CRON_FIELD_COUNT) return false;
5222
+ try {
5223
+ return new Cron(trimmed, {
5224
+ timezone,
5225
+ paused: true
5226
+ }).nextRun() != null;
5227
+ } catch {
5228
+ return false;
5229
+ }
5230
+ }
5231
+ /**
5232
+ * The next occurrences the engine would fire. Server-side jitter (up to two
5233
+ * minutes) is deliberately not modelled: it is keyed off a schedule id that does
5234
+ * not exist yet at create time, and showing 9:01 for a 9:00 schedule reads as a bug.
5235
+ */
5236
+ function nextRunInstants(cadence, timezone, count) {
5237
+ try {
5238
+ const runs = new Cron(cadenceToCron(cadence), {
5239
+ timezone,
5240
+ paused: true
5241
+ }).nextRuns(count);
5242
+ return runs.filter((run, index) => index === 0 || run.getTime() !== runs[index - 1].getTime());
5243
+ } catch {
5244
+ return [];
5245
+ }
5246
+ }
5247
+ const MINUTE_MS = 6e4;
5248
+ const DAY_MS = 1440 * MINUTE_MS;
5249
+ /** A year and a bit, so a zone with a single yearly transition always shows one. */
5250
+ const TRANSITION_SEARCH_DAYS = 400;
5251
+ const offsetFormatters = /* @__PURE__ */ new Map();
5252
+ /** Minutes east of UTC in `zone` at `instant`, read back from the wall clock the
5253
+ * zone renders. The only way to observe a zone's offset without a tz database. */
5254
+ function zoneOffsetMinutes(zone, instant) {
5255
+ let formatter = offsetFormatters.get(zone);
5256
+ if (formatter == null) {
5257
+ formatter = new Intl.DateTimeFormat("en-US", {
5258
+ timeZone: zone,
5259
+ hourCycle: "h23",
5260
+ year: "numeric",
5261
+ month: "2-digit",
5262
+ day: "2-digit",
5263
+ hour: "2-digit",
5264
+ minute: "2-digit",
5265
+ second: "2-digit"
5266
+ });
5267
+ offsetFormatters.set(zone, formatter);
5268
+ }
5269
+ const parts = {};
5270
+ for (const part of formatter.formatToParts(instant)) parts[part.type] = part.value;
5271
+ const wallClock = Date.UTC(Number(parts.year), Number(parts.month) - 1, Number(parts.day), Number(parts.hour), Number(parts.minute), Number(parts.second));
5272
+ return Math.round((wallClock - instant.getTime()) / MINUTE_MS);
5273
+ }
5274
+ /** Zone transitions are asked for once per fire, and the scan below costs ~10ms.
5275
+ * Keyed by day because that is how far the answer stays put as the window slides,
5276
+ * and cleared wholesale at the cap so a long-lived worker cannot accumulate an
5277
+ * entry per zone per day forever. */
5278
+ const transitionCache = /* @__PURE__ */ new Map();
5279
+ const TRANSITION_CACHE_MAX = 512;
5280
+ /**
5281
+ * Every instant `zone` changes its UTC offset within the search window; empty for a
5282
+ * fixed-offset zone. Both directions matter and only one of them shortens anything,
5283
+ * so taking just the next one would usually find the harmless fall-back and miss the
5284
+ * spring-forward six months behind it. Bracketed a day at a time, bisected to the
5285
+ * minute.
5286
+ */
5287
+ function offsetChanges(zone, from) {
5288
+ const day = Math.floor(from.getTime() / DAY_MS);
5289
+ const cacheKey = `${zone}:${day}`;
5290
+ const cached = transitionCache.get(cacheKey);
5291
+ if (cached != null) return cached;
5292
+ const changes = [];
5293
+ const start = /* @__PURE__ */ new Date((day - 1) * DAY_MS);
5294
+ let low = start.getTime();
5295
+ let baseOffset = zoneOffsetMinutes(zone, start);
5296
+ const end = low + TRANSITION_SEARCH_DAYS * DAY_MS;
5297
+ for (let probe = low + DAY_MS; probe <= end; probe += DAY_MS) {
5298
+ const offset = zoneOffsetMinutes(zone, new Date(probe));
5299
+ if (offset !== baseOffset) {
5300
+ let high = probe;
5301
+ let bracket = low;
5302
+ while (high - bracket > MINUTE_MS) {
5303
+ const mid = bracket + Math.floor((high - bracket) / 2);
5304
+ if (zoneOffsetMinutes(zone, new Date(mid)) === baseOffset) bracket = mid;
5305
+ else high = mid;
5306
+ }
5307
+ changes.push(new Date(high));
5308
+ baseOffset = offset;
5309
+ }
5310
+ low = probe;
5311
+ }
5312
+ if (transitionCache.size >= TRANSITION_CACHE_MAX) transitionCache.clear();
5313
+ transitionCache.set(cacheKey, changes);
5314
+ return changes;
5315
+ }
5316
+ function runsAfter(expression, from, zone, occurrences = CRON_PROBE_OCCURRENCES) {
5317
+ return new Cron(expression, {
5318
+ timezone: zone,
5319
+ paused: true
5320
+ }).nextRuns(occurrences, from);
5321
+ }
5322
+ /** Tightest gap, in minutes, across `runs`; null when there is no pair to measure. */
5323
+ function minGapMinutes(runs) {
5324
+ if (runs.length < 2) return null;
5325
+ let minGapMs = Number.MAX_SAFE_INTEGER;
5326
+ for (let i = 1; i < runs.length; i++) {
5327
+ const gapMs = runs[i].getTime() - runs[i - 1].getTime();
5328
+ if (gapMs <= 0) continue;
5329
+ minGapMs = Math.min(minGapMs, gapMs);
5330
+ }
5331
+ if (minGapMs === Number.MAX_SAFE_INTEGER) return null;
5332
+ return Math.floor(minGapMs / MINUTE_MS);
5333
+ }
5334
+ function probeMinGapMinutes(expression, zone, from, occurrences = CRON_PROBE_OCCURRENCES) {
5335
+ return minGapMinutes(runsAfter(expression, from, zone, occurrences));
5336
+ }
5337
+ /**
5338
+ * Smallest gap in minutes between occurrences. Returns 0 for an unparseable or
5339
+ * never-matching expression so every floor rejects it, failing closed rather than
5340
+ * admitting an expression the engine cannot fire.
5341
+ *
5342
+ * Measured twice, and the smaller wins:
5343
+ *
5344
+ * 1. Nominal, probed in UTC, then discounted by the same worst-case DST allowance
5345
+ * the structured branches assume. This keeps `0 9 * * *` reporting exactly what
5346
+ * the Daily preset reports, so the same schedule cannot be admitted in one form
5347
+ * and rejected in the other.
5348
+ * 2. Real elapsed time in the schedule's own zone, across each of that zone's
5349
+ * transitions. Spring-forward compresses a gap that straddles one
5350
+ * (`0 0,12 * * *` in America/New_York is 11 hours that day, not 12), and step 1
5351
+ * only discounts gaps of a day or more, so a subdaily gap needs measuring rather
5352
+ * than estimating. Anchoring at the transition is what makes a bounded probe see
5353
+ * it at all: from today it is usually months outside any reasonable window.
5354
+ */
5355
+ function cronIntervalMinutes(expression, timezone) {
5356
+ try {
5357
+ const now = /* @__PURE__ */ new Date();
5358
+ const nominal = probeMinGapMinutes(expression, "UTC", now);
5359
+ if (nominal == null) return 0;
5360
+ const estimate = nominal < 1440 ? nominal : Math.max(0, nominal - DST_COMPRESSION_MINUTES);
5361
+ if (timezone == null || estimate === 0) return estimate;
5362
+ const anchorBackMs = 2 * Math.max(nominal, 1) * MINUTE_MS;
5363
+ let smallest = estimate;
5364
+ for (const transition of offsetChanges(timezone, now)) {
5365
+ const measured = probeMinGapMinutes(expression, timezone, new Date(Math.max(now.getTime(), transition.getTime() - anchorBackMs)), TRANSITION_PROBE_OCCURRENCES);
5366
+ if (measured != null) smallest = Math.min(smallest, measured);
5367
+ }
5368
+ return smallest;
5369
+ } catch {
5370
+ return 0;
5371
+ }
5372
+ }
5373
+ /**
5374
+ * Minimum minutes between occurrences, for the admin interval floor. `timezone` is
5375
+ * the schedule's own; passing it lets the cron branch measure a DST-compressed gap
5376
+ * instead of estimating one. The structured branches are zone-independent: their
5377
+ * formulas already carry the worst-case allowance.
5378
+ */
5379
+ function cadenceIntervalMinutes(cadence, timezone) {
5380
+ if (isCronCadence(cadence)) return cronIntervalMinutes(cadence.expression, timezone);
5381
+ if (cadence.frequency === "hourly") return 60;
5382
+ if (cadence.frequency === "daily" || cadence.frequency === "weekdays") return 1440 - DST_COMPRESSION_MINUTES;
5383
+ const days = cadence.daysOfWeek?.length ? Array.from(new Set(cadence.daysOfWeek)) : [WEEKLY_DEFAULT_DAY];
5384
+ if (days.length <= 1) return 10080 - DST_COMPRESSION_MINUTES;
5385
+ const sorted = [...days].sort((a, b) => a - b);
5386
+ let minGapDays = 7;
5387
+ for (let i = 0; i < sorted.length; i++) {
5388
+ const gap = i + 1 < sorted.length ? sorted[i + 1] - sorted[i] : 7 - sorted[i] + sorted[0];
5389
+ minGapDays = Math.min(minGapDays, gap);
5390
+ }
5391
+ return minGapDays * 24 * 60 - DST_COMPRESSION_MINUTES;
5392
+ }
5393
+ //#endregion
4866
5394
  //#region src/types/skills.ts
4867
5395
  /**
4868
5396
  * Shared skill validation constants — the single source of truth for name,
@@ -4895,6 +5423,171 @@ let DATE_RANGE = /* @__PURE__ */ function(DATE_RANGE) {
4895
5423
  return DATE_RANGE;
4896
5424
  }({});
4897
5425
  //#endregion
5426
+ //#region src/types/insights.ts
5427
+ const INSIGHTS_MAX_RANGE_DAYS = 30;
5428
+ const INSIGHTS_SEARCH_MIN_LENGTH = 3;
5429
+ const INSIGHTS_SEARCH_MAX_LENGTH = 200;
5430
+ //#endregion
5431
+ //#region src/types/queuedTurns.ts
5432
+ const agentQueuedTurnStatuses = [
5433
+ "queued",
5434
+ "claimed",
5435
+ "admitted",
5436
+ "cancelled",
5437
+ "dead"
5438
+ ];
5439
+ const agentQueuedTurnDurability = ["process_local", "durable"];
5440
+ const agentQueuedTurnFileRefSchema = z.object({
5441
+ file_id: z.string().trim().min(1),
5442
+ type: z.string().optional(),
5443
+ filepath: z.string().optional(),
5444
+ filename: z.string().optional(),
5445
+ height: z.number().optional(),
5446
+ width: z.number().optional(),
5447
+ bytes: z.number().nonnegative().optional()
5448
+ });
5449
+ const enqueueAgentQueuedTurnSchema = z.object({
5450
+ conversationId: z.string().trim().min(1),
5451
+ parentMessageId: z.string().trim().min(1),
5452
+ clientRequestId: z.string().trim().min(1).max(128),
5453
+ text: z.string(),
5454
+ files: z.array(agentQueuedTurnFileRefSchema).optional(),
5455
+ quotes: z.array(z.string()).optional(),
5456
+ manualSkills: z.array(z.string().trim().min(1)).optional(),
5457
+ priority: z.boolean().optional(),
5458
+ expectedPredecessorCreatedAt: z.number().int().nonnegative().optional()
5459
+ });
5460
+ const listAgentQueuedTurnsSchema = z.object({
5461
+ conversationId: z.string().trim().min(1),
5462
+ clientRequestIds: z.array(z.string().trim().min(1).max(128)).max(100).transform((ids) => Array.from(new Set(ids))).optional()
5463
+ });
5464
+ const cancelAgentQueuedTurnSchema = z.object({ queuedTurnId: z.string().trim().min(1) });
5465
+ const agentQueuedTurnReceiptSchema = enqueueAgentQueuedTurnSchema.extend({
5466
+ queuedTurnId: z.string().trim().min(1),
5467
+ status: z.enum(agentQueuedTurnStatuses),
5468
+ /** Effective generation boundary consumed by an admitted turn. This can
5469
+ * advance beyond the originally captured root as queued turns chain. */
5470
+ effectivePredecessorCreatedAt: z.number().int().nonnegative().optional(),
5471
+ /** Explicitly proves that this admission consumed no predecessor boundary. */
5472
+ rootPredecessor: z.literal(true).optional(),
5473
+ position: z.number().int().nonnegative().optional(),
5474
+ /** Immutable queue sequence retained as `revision` for wire compatibility. */
5475
+ revision: z.number().int().nonnegative(),
5476
+ failure: z.object({
5477
+ code: z.string().trim().min(1).max(128),
5478
+ message: z.string().max(2048).optional()
5479
+ }).optional(),
5480
+ createdAt: z.string(),
5481
+ updatedAt: z.string()
5482
+ });
5483
+ const agentQueuedTurnCapabilitySchema = z.discriminatedUnion("supported", [z.object({ supported: z.literal(false) }), z.object({
5484
+ supported: z.literal(true),
5485
+ durability: z.enum(agentQueuedTurnDurability)
5486
+ })]);
5487
+ const enqueueAgentQueuedTurnResponseSchema = z.object({
5488
+ receipt: agentQueuedTurnReceiptSchema,
5489
+ capability: agentQueuedTurnCapabilitySchema
5490
+ });
5491
+ const listAgentQueuedTurnsResponseSchema = z.object({
5492
+ queuedTurns: z.array(agentQueuedTurnReceiptSchema),
5493
+ capability: agentQueuedTurnCapabilitySchema,
5494
+ revision: z.number().int().nonnegative()
5495
+ });
5496
+ const cancelAgentQueuedTurnResponseSchema = z.object({ receipt: agentQueuedTurnReceiptSchema });
5497
+ //#endregion
5498
+ //#region src/providers.ts
5499
+ /** Canonical provider identity used for branding across client and server. */
5500
+ let ProviderId = /* @__PURE__ */ function(ProviderId) {
5501
+ ProviderId["openai"] = "openai";
5502
+ ProviderId["anthropic"] = "anthropic";
5503
+ ProviderId["google"] = "google";
5504
+ ProviderId["azure"] = "azure";
5505
+ ProviderId["bedrock"] = "bedrock";
5506
+ ProviderId["xai"] = "xai";
5507
+ ProviderId["moonshot"] = "moonshot";
5508
+ ProviderId["anyscale"] = "anyscale";
5509
+ ProviderId["apipie"] = "apipie";
5510
+ ProviderId["cohere"] = "cohere";
5511
+ ProviderId["deepseek"] = "deepseek";
5512
+ ProviderId["fireworks"] = "fireworks";
5513
+ ProviderId["groq"] = "groq";
5514
+ ProviderId["helicone"] = "helicone";
5515
+ ProviderId["huggingface"] = "huggingface";
5516
+ ProviderId["mistral"] = "mistral";
5517
+ ProviderId["mlx"] = "mlx";
5518
+ ProviderId["ollama"] = "ollama";
5519
+ ProviderId["openrouter"] = "openrouter";
5520
+ ProviderId["perplexity"] = "perplexity";
5521
+ ProviderId["qwen"] = "qwen";
5522
+ ProviderId["shuttleai"] = "shuttleai";
5523
+ ProviderId["together"] = "together";
5524
+ ProviderId["unify"] = "unify";
5525
+ ProviderId["vercel"] = "vercel";
5526
+ return ProviderId;
5527
+ }({});
5528
+ const endpointToProvider = {
5529
+ ["openAI"]: "openai",
5530
+ ["azureOpenAI"]: "azure",
5531
+ ["anthropic"]: "anthropic",
5532
+ ["google"]: "google",
5533
+ ["bedrock"]: "bedrock"
5534
+ };
5535
+ const knownEndpointToProvider = {
5536
+ ["anyscale"]: "anyscale",
5537
+ ["apipie"]: "apipie",
5538
+ ["cohere"]: "cohere",
5539
+ ["fireworks"]: "fireworks",
5540
+ ["deepseek"]: "deepseek",
5541
+ ["moonshot"]: "moonshot",
5542
+ ["groq"]: "groq",
5543
+ ["helicone"]: "helicone",
5544
+ ["huggingface"]: "huggingface",
5545
+ ["mistral"]: "mistral",
5546
+ ["mlx"]: "mlx",
5547
+ ["ollama"]: "ollama",
5548
+ ["openrouter"]: "openrouter",
5549
+ ["perplexity"]: "perplexity",
5550
+ ["shuttleai"]: "shuttleai",
5551
+ ["together.ai"]: "together",
5552
+ ["unify"]: "unify",
5553
+ ["vercel"]: "vercel",
5554
+ ["xai"]: "xai"
5555
+ };
5556
+ const providerAliases = {
5557
+ chatgpt: "openai",
5558
+ gpt: "openai",
5559
+ azureopenai: "azure",
5560
+ claude: "anthropic",
5561
+ gemini: "google",
5562
+ gemma: "google",
5563
+ vertex: "google",
5564
+ vertexai: "google",
5565
+ palm: "google",
5566
+ awsbedrock: "bedrock",
5567
+ grok: "xai",
5568
+ kimi: "moonshot",
5569
+ moonshotai: "moonshot",
5570
+ mistralai: "mistral",
5571
+ togetherai: "together"
5572
+ };
5573
+ const modelCatalogAliases = { ["vertexai"]: "google" };
5574
+ const normalize = (input) => input.toLowerCase().replace(/[\s._-]/g, "");
5575
+ const providerByNormalizedId = Object.values(ProviderId).reduce((acc, id) => {
5576
+ acc[normalize(id)] = id;
5577
+ return acc;
5578
+ }, {});
5579
+ /** Resolves free-form provider text to a canonical id, ignoring case and separators. */
5580
+ function resolveProviderId(input) {
5581
+ if (!input) return null;
5582
+ const key = normalize(input);
5583
+ return providerByNormalizedId[key] ?? providerAliases[key] ?? null;
5584
+ }
5585
+ /** Resolves a runtime provider to its model catalog, using a native alias only when needed. */
5586
+ function resolveModelCatalogKey(provider, catalogs) {
5587
+ const key = provider ?? "";
5588
+ return catalogs?.[key] != null ? key : modelCatalogAliases[key] ?? key;
5589
+ }
5590
+ //#endregion
4898
5591
  //#region src/actions.ts
4899
5592
  function sha1(input) {
4900
5593
  return crypto.createHash("sha1").update(input).digest("hex");
@@ -5382,7 +6075,9 @@ function createPayload(submission) {
5382
6075
  const { conversationId } = tConvoUpdateSchema.parse(conversation);
5383
6076
  const { endpoint: _e, endpointType } = endpointOption;
5384
6077
  const endpoint = _e;
5385
- let server = `${EndpointURLs["agents"]}/${endpoint}`;
6078
+ /** Custom endpoint names are user-defined and may contain `/`, which would
6079
+ * otherwise split into extra path segments and miss the `/:endpoint` route. */
6080
+ let server = `${EndpointURLs["agents"]}/${encodeURIComponent(endpoint)}`;
5386
6081
  if (isAssistantsEndpoint(endpoint)) server = EndpointURLs[endpointType ?? endpoint] + (isEdited ? "/modify" : "");
5387
6082
  const payload = {
5388
6083
  ...userMessage,
@@ -5458,28 +6153,6 @@ const baseDefinitions = {
5458
6153
  optionType: "conversation",
5459
6154
  minTags: 0,
5460
6155
  maxTags: 4
5461
- },
5462
- imageDetail: {
5463
- key: "imageDetail",
5464
- label: "com_endpoint_plug_image_detail",
5465
- labelCode: true,
5466
- description: "com_endpoint_openai_detail",
5467
- descriptionCode: true,
5468
- type: "enum",
5469
- default: "auto",
5470
- component: "slider",
5471
- options: [
5472
- "low",
5473
- "auto",
5474
- "high"
5475
- ],
5476
- enumMappings: {
5477
- ["low"]: "com_ui_low",
5478
- ["auto"]: "com_ui_auto",
5479
- ["high"]: "com_ui_high"
5480
- },
5481
- optionType: "conversation",
5482
- columnSpan: 2
5483
6156
  }
5484
6157
  };
5485
6158
  const createDefinition = (base, overrides) => {
@@ -5537,6 +6210,30 @@ const librechat = {
5537
6210
  placeholderCode: true,
5538
6211
  optionType: "model"
5539
6212
  },
6213
+ /** Controls how LibreChat encodes image content blocks, not a provider request
6214
+ * parameter — so it belongs to this group and is stripped from model options. */
6215
+ imageDetail: {
6216
+ key: "imageDetail",
6217
+ label: "com_endpoint_plug_image_detail",
6218
+ labelCode: true,
6219
+ description: "com_endpoint_openai_detail",
6220
+ descriptionCode: true,
6221
+ type: "enum",
6222
+ default: "auto",
6223
+ component: "slider",
6224
+ options: [
6225
+ "low",
6226
+ "auto",
6227
+ "high"
6228
+ ],
6229
+ enumMappings: {
6230
+ ["low"]: "com_ui_low",
6231
+ ["auto"]: "com_ui_auto",
6232
+ ["high"]: "com_ui_high"
6233
+ },
6234
+ optionType: "conversation",
6235
+ columnSpan: 2
6236
+ },
5540
6237
  fileTokenLimit: {
5541
6238
  key: "fileTokenLimit",
5542
6239
  label: "com_ui_file_token_limit",
@@ -6115,6 +6812,14 @@ const meta = {
6115
6812
  })
6116
6813
  };
6117
6814
  const google = {
6815
+ /** Bounds the hand-rolled editor enforced through InputNumber, and they stay
6816
+ * scoped to this endpoint: the shared definition is rendered by every other
6817
+ * endpoint, whose own context windows may fall outside them. */
6818
+ maxContextTokens: createDefinition(librechat.maxContextTokens, { range: {
6819
+ min: googleSettings.maxContextTokens.min,
6820
+ max: googleSettings.maxContextTokens.max,
6821
+ step: googleSettings.maxContextTokens.step
6822
+ } }),
6118
6823
  temperature: createDefinition(baseDefinitions.temperature, {
6119
6824
  default: googleSettings.temperature.default,
6120
6825
  range: {
@@ -6254,7 +6959,7 @@ const google = {
6254
6959
  const googleConfig = [
6255
6960
  librechat.modelLabel,
6256
6961
  librechat.promptPrefix,
6257
- librechat.maxContextTokens,
6962
+ google.maxContextTokens,
6258
6963
  google.maxOutputTokens,
6259
6964
  google.temperature,
6260
6965
  google.topP,
@@ -6273,7 +6978,7 @@ const googleCol1 = [
6273
6978
  librechat.promptPrefix
6274
6979
  ];
6275
6980
  const googleCol2 = [
6276
- librechat.maxContextTokens,
6981
+ google.maxContextTokens,
6277
6982
  google.maxOutputTokens,
6278
6983
  google.temperature,
6279
6984
  google.topP,
@@ -6297,7 +7002,7 @@ const openAI = [
6297
7002
  openAIParams.presence_penalty,
6298
7003
  baseDefinitions.stop,
6299
7004
  librechat.resendFiles,
6300
- baseDefinitions.imageDetail,
7005
+ librechat.imageDetail,
6301
7006
  openAIParams.web_search,
6302
7007
  openAIParams.reasoning_effort,
6303
7008
  openAIParams.useResponsesApi,
@@ -6327,7 +7032,7 @@ const openAICol2 = [
6327
7032
  openAIParams.presence_penalty,
6328
7033
  baseDefinitions.stop,
6329
7034
  librechat.resendFiles,
6330
- baseDefinitions.imageDetail,
7035
+ librechat.imageDetail,
6331
7036
  openAIParams.reasoning_effort,
6332
7037
  openAIParams.reasoning_summary,
6333
7038
  openAIParams.reasoning_mode,
@@ -6634,13 +7339,71 @@ const agentParamSettings = Object.entries(presetSettings).reduce((acc, [key, val
6634
7339
  * Resolves model-aware defaults for a settings configuration before rendering.
6635
7340
  * Google's `maxOutputTokens` default depends on the selected Gemini model so that
6636
7341
  * current models (2.5 and 3+) surface their 64K output limit instead of the legacy 8K value.
7342
+ * Anthropic prompt-cache controls are only surfaced for models that support them.
6637
7343
  */
6638
7344
  function applyModelAwareDefaults(settings, endpoint, model) {
6639
- if (endpoint !== "google" || !model) return settings;
6640
- return settings.map((setting) => setting.key === "maxOutputTokens" ? {
6641
- ...setting,
6642
- default: googleSettings.maxOutputTokens.reset(model)
6643
- } : setting);
7345
+ if (!model) return settings;
7346
+ const modelAwareSettings = endpoint === "google" ? settings.map((setting) => {
7347
+ if (setting.key === "maxOutputTokens") return {
7348
+ ...setting,
7349
+ default: googleSettings.maxOutputTokens.reset(model)
7350
+ };
7351
+ /** The shared thinking budget range is model-agnostic, so it caps Pro below
7352
+ * its real ceiling and accepts Flash values the provider rejects. The
7353
+ * maximum and the positive floor move together. `range.min` stays -1 so
7354
+ * the "decide automatically" sentinel remains typeable. */
7355
+ if (setting.key === "thinkingBudget" && setting.range != null) {
7356
+ const bounds = getGoogleThinkingBudgetBounds(model);
7357
+ if (bounds != null) return {
7358
+ ...setting,
7359
+ range: {
7360
+ ...setting.range,
7361
+ max: bounds.max,
7362
+ positiveMin: bounds.min,
7363
+ modelSpecific: true
7364
+ }
7365
+ };
7366
+ }
7367
+ return setting;
7368
+ }) : settings;
7369
+ if (endpoint !== "anthropic" || supportsPromptCache(model)) return modelAwareSettings;
7370
+ return modelAwareSettings.filter((setting) => setting.key !== "promptCache" && setting.key !== "promptCacheTtl");
7371
+ }
7372
+ //#endregion
7373
+ //#region src/agentToolOptions.ts
7374
+ const actionDomainSeparatorRegex = /* @__PURE__ */ new RegExp("---", "g");
7375
+ /**
7376
+ * Collapses the encoded-domain suffix of an action tool name to the shape used
7377
+ * by runtime tool definitions. The operation id is deliberately preserved.
7378
+ */
7379
+ function normalizeActionToolName(toolName) {
7380
+ if (!isActionTool(toolName)) return toolName;
7381
+ const prefixEnd = toolName.lastIndexOf(actionDelimiter) + actionDelimiter.length;
7382
+ const encodedDomain = toolName.slice(prefixEnd);
7383
+ return toolName.slice(0, prefixEnd) + encodedDomain.replace(actionDomainSeparatorRegex, "_");
7384
+ }
7385
+ /**
7386
+ * Removes Code Interpreter as an allowed caller without mutating the input.
7387
+ * Tool entries and unrelated options are preserved; an empty entry is removed.
7388
+ */
7389
+ function removeCodeExecutionCaller(toolOptions) {
7390
+ if (toolOptions == null) return toolOptions;
7391
+ const normalized = {};
7392
+ for (const [toolName, options] of Object.entries(toolOptions)) {
7393
+ const callers = options.allowed_callers;
7394
+ if (callers?.includes("code_execution") !== true) {
7395
+ normalized[toolName] = options;
7396
+ continue;
7397
+ }
7398
+ const allowedCallers = callers.filter((caller) => caller !== "code_execution");
7399
+ const { allowed_callers: _removed, ...remainingOptions } = options;
7400
+ const nextOptions = allowedCallers.length > 0 ? {
7401
+ ...remainingOptions,
7402
+ allowed_callers: allowedCallers
7403
+ } : remainingOptions;
7404
+ if (Object.keys(nextOptions).length > 0) normalized[toolName] = nextOptions;
7405
+ }
7406
+ return normalized;
6644
7407
  }
6645
7408
  //#endregion
6646
7409
  //#region src/codeEnvRef.ts
@@ -6667,7 +7430,32 @@ const CODE_ENV_KINDS = [
6667
7430
  "agent",
6668
7431
  "user"
6669
7432
  ];
7433
+ function getCodeEnvRefForProfile(refs, routeKey) {
7434
+ const profileRef = refs?.codeEnvRefs?.[routeKey];
7435
+ if (profileRef) return profileRef;
7436
+ const legacyRef = refs?.codeEnvRef;
7437
+ if (legacyRef && (legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default") === routeKey) return legacyRef;
7438
+ }
7439
+ /** Adds one profile pointer without discarding the other profile's storage object. */
7440
+ function mergeCodeEnvRef(refs, ref) {
7441
+ const codeEnvRefs = { ...refs?.codeEnvRefs };
7442
+ const legacyRef = refs?.codeEnvRef;
7443
+ if (legacyRef) codeEnvRefs[legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default"] ??= legacyRef;
7444
+ const routeKey = ref.executionRouteKey ?? ref.executionProfile ?? "default";
7445
+ codeEnvRefs[routeKey] = ref;
7446
+ return {
7447
+ codeEnvRef: codeEnvRefs.default ?? codeEnvRefs.stateful ?? ref,
7448
+ codeEnvRefs
7449
+ };
7450
+ }
7451
+ /** Enumerates every deployment-local pointer, including legacy single-pointer records. */
7452
+ function getCodeEnvRefs(refs) {
7453
+ const merged = { ...refs?.codeEnvRefs };
7454
+ const legacyRef = refs?.codeEnvRef;
7455
+ if (legacyRef) merged[legacyRef.executionRouteKey ?? legacyRef.executionProfile ?? "default"] ??= legacyRef;
7456
+ return Object.entries(merged).flatMap(([routeKey, ref]) => ref ? [[routeKey, ref]] : []);
7457
+ }
6670
7458
  //#endregion
6671
- export { AUTH_USER_DOC_BY_ID_PREFIX, AccessRoleIds, ActionRequest, ActivityLabelEvents, AgentCapabilities, AnnotationTypes, AnthropicEffort, ApprovalEvents, ArtifactModes, AssistantStreamEvents, AuthKeys, AuthType, AuthTypeEnum, AuthorizationTypeEnum, BASE_ONLY_CONFIG_SECTIONS, BASE_PRINCIPAL_CONFIG_SECTIONS, BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA, BEDROCK_OUTPUT_128K_BETA, BedrockProviders, BedrockReasoningConfig, CODE_ENV_KINDS, CacheKeys, Capabilities, CohereConstants, ComponentTypes, Constants, ContentTypes, DATE_RANGE, DEFAULT_MEMORY_MAX_INPUT_TOKENS, DynamicQueryKeys, EImageOutputType, EModelEndpoint, EToolResources, EndpointURLs, ErrorTypes, FEEDBACK_RATINGS, FEEDBACK_REASON_KEYS, FEEDBACK_TAGS, FetchTokenConfig, FileContext, FilePurpose, FileSources, ForkOptions, FunctionSignature, INTERFACE_PERMISSION_FIELDS, ImageDetail, ImageDetailCost, ImageVisionTool, InfiniteCollections, InvocationMode, KnownEndpoints, LocalStorageKeys, MAX_SUBAGENTS, MAX_SUBAGENT_DEPTH, MAX_SUBAGENT_GRAPH_NODES, MAX_SUBAGENT_RUN_CONFIGS, MCPOptionsSchema, MCPServerUserInputSchema, MCPServersSchema, MCP_USER_INPUT_FIELDS, MYTHOS_CLASS_FAMILIES, MemoryScope, MessageContentTypes, MutationKeys, OCRStrategy, OptionTypes, PERMISSION_SUB_KEYS, PERMISSION_TYPE_INTERFACE_FIELDS, PermissionBits, PermissionTypes, Permissions, PrincipalModel, PrincipalType, Providers, QueryKeys, REFILL_INTERVAL_UNITS, RateLimitPrefix, ReasoningContext, ReasoningEffort, ReasoningMode, ReasoningParameterFormat, ReasoningResponseKey, ReasoningSummary, RerankerTypes, ResourceType, RetentionMode, RunStatus, SEPARATORS, SKILL_BODY_MAX_LENGTH, SKILL_DESCRIPTION_MAX_LENGTH, SKILL_DESCRIPTION_SHORT_THRESHOLD, SKILL_DISPLAY_TITLE_MAX_LENGTH, SKILL_NAME_MAX_LENGTH, SKILL_NAME_PATTERN, SKILL_SYNC_DEFAULT_DISCOVERY_DEPTH, SKILL_SYNC_MAX_DISCOVERY_DEPTH, SKILL_SYNC_MAX_INTERVAL_MINUTES, SKILL_SYNC_MIN_INTERVAL_MINUTES, SSEOptionsSchema, STTProviders, SafeSearchTypes, ScraperProviders, SearchCategories, SearchProviders, SettingTypes, SettingsTabValues, SettingsViews, StdioOptionsSchema, SteerEvents, StepEvents, StepStatus, StepTypes, StreamableHTTPOptionsSchema, SystemCategories, SystemRoles, TTSProviders, ThinkingDisplay, ThinkingLevel, Time, TokenExchangeMethodEnum, ToolCallTypes, Tools, UsageEvents, Verbosity, ViolationTypes, VisionModes, WebSocketOptionsSchema, accessRoleSchema, accessRoleToPermBits, accordian, actionDelimiter, actionDomainSeparator, agentParamSettings, agentPermissionsSchema, agentsBaseSchema, agentsEndpointSchema, agentsSchema, agentsSettings, alert, alertDialog, allowedAddressesSchema, alternateName, anthropicBaseSchema, anthropicEndpointSchema, anthropicSchema, anthropicSettings, apiBaseUrl, appendAgentIdSuffix, applicationMimeTypes, applyModelAwareDefaults, assistantEndpointSchema, assistantSchema, audioMimeTypes, authTypeSchema, avatar, azureBaseSchema, azureEndpointSchema, azureGroupConfigsSchema, azureGroupSchema, badge, balanceSchema, baseEndpointSchema, bedrockDocumentExtensions, bedrockDocumentFormats, bedrockDocumentMimeTypes, bedrockEndpointSchema, bedrockGuardrailConfigSchema, bedrockInputParser, bedrockInputSchema, bedrockModels, bedrockOutputParser, bookmarkPermissionsSchema, breadcrumb, buildLoginRedirectUrl, buildServerNameAliases, buildTree, button, cacheSubsetProviders, calendar, capsEffortWhenThinkingDisabled, card, carousel, checkOpenAIStorage, checkbox, checkpointerSchema, checkpointerTypeSchema, clampEffortForDisabledThinking, clampOutputConfigEffort, cloudfrontConfigSchema, codeInterpreterMimeTypes, codeInterpreterMimeTypesList, codeTypeMapping, coerceNumber, collapsible, compactAgentsBaseSchema, compactAgentsSchema, compactAssistantSchema, compactGoogleSchema, configSchema, contextPruningSchema, convertStringsToRegex, createPayload, createURL, data_service_exports as dataService, defaultAgentCapabilities, defaultAgentFormValues, defaultAssistantFormValues, defaultAssistantsVersion, defaultEndpoints, defaultModels, defaultOCRMimeTypes, defaultOrderQuery, defaultRetrievalModels, defaultSTTMimeTypes, defaultSocialLogins, defaultTextMimeTypes, dialog, documentParserMimeTypes, documentSupportedProviders, drawer, dropdownMenu, eAnthropicEffortSchema, eImageDetailSchema, eModelEndpointSchema, eReasoningContextSchema, eReasoningEffortSchema, eReasoningModeSchema, eReasoningParameterFormatSchema, eReasoningResponseKeySchema, eReasoningSummarySchema, eThinkingDisplaySchema, eThinkingLevelSchema, eVerbositySchema, effectivePermissionsResponseSchema, encodeEphemeralAgentId, endpointFileConfigSchema, endpointSchema, endpointSettings, envVarRegex, errorsToString, essentialShadcnComponents, excelFileTypes, excelMimeTypes, excludedKeys, extendedModelEndpointSchema, extractDomainFromUrl, extractEnvVariable, extractVariableName, feedbackRatingSchema, feedbackSchema, feedbackTagKeySchema, fileCitationsPermissionsSchema, fileConfig, fileConfigSchema, fileSearchPermissionsSchema, fileSourceSchema, fileStorageSchema, fileStrategiesSchema, findLastSeparatorIndex, fullMimeTypesList, generateDynamicSchema, generateGoogleSchema, generateOpenAISchema, getConfigDefaults, getConfiguredMimeAccept, getDefaultParamsEndpoint, getEnabledEndpoints, getEndpointField, getEndpointFileConfig, getFirstDefinedValue, getModelKey, getNonEmptyValue, getRefillEligibilityDate, getResourcePermissionsResponseSchema, getResponseSender, getSchemaDefaults, getSettingsKeys, getTagByKey, getTagsForRating, getTokenHeader, googleBaseSchema, googleGenConfigSchema, googleSchema, googleSettings, hasPermissions, hostImageIdSuffix, hostImageNamePrefix, hoverCard, imageDetailNumeric, imageDetailValue, imageExtRegex, imageGenTools, imageMimeTypes, imageTypeMapping, inferMimeType, initialModelsConfig, input, inputTokensIncludesCache, interfaceSchema, isActionTool, isAgentsEndpoint, isAnthropicDocumentType, isAnthropicTextDocumentType, isAssistantsEndpoint, isBedrockDocumentType, isDocumentSupportedProvider, isEphemeralAgentId, isImageVisionTool, isMythosClassModel, isOpenAILikeProvider, isParamEndpoint, isPermissiveMimeConfig, isRemoteOidcUrlAllowed, isSensitiveEnvVar, isSystemRoleName, isThinkingDisabled, isUUID, label, langfuseConfigSchema, librechat, loginPage, mapGroupToAzureConfig, mapModelToAzureConfig, marketplacePermissionsSchema, mbToBytes, mcpServersPermissionsSchema, megabyte, memoryPermissionsSchema, memorySchema, menuBar, mergeFileConfig, messageFilterPiiSchema, messageFilterSchema, mimeTypeAliases, modelConfigSchema, modelSpecSubagentsSchema, modularEndpoints, multiConvoPermissionsSchema, navigationMenu, normalizeEndpointName, normalizeMCPToolKey, normalizeServerName, ocrSchema, omitsSamplingParameters, omitsThinkingByDefault, openAIBaseSchema, openAISchema, openAISettings, openRouterSchema, openapiToFunction, orderEndpointsConfig, pagination, paramDefinitionSchema, paramEndpoints, paramSettings, parseCompactConvo, parseConvo, parseEphemeralAgentId, parseTextParts, peoplePickerPermissionsSchema, permBitsToAccessLevel, permissionEntrySchema, permissionsSchema, popover, presetSettings, principalSchema, progress, promptPermissionsSchema, promptTokensFromUsage, providerEndpointMap, radioGroup, rateLimitSchema, reconcileContextUsage, registerPage, remoteAgentsPermissionsSchema, removeNullishValues, replaceSpecialVars, request_default as request, requiresExplicitThinkingDisabled, resolveEndpointType, resolveRef, resolveThinkingDisplay, resourcePermissionsResponseSchema, retainRecentConfigSchema, retrievalMimeTypes, retrievalMimeTypesList, roleDefaults, roleSchema, runCodePermissionsSchema, select, separator, setAcceptLanguageHeader, setFileConfigRegexCompiler, setMessageFilterRegexValidator, setTokenHeader, sha1, shadcnComponents, sharedFileDownload, sharedLinksPermissionsSchema, skeleton, skillPermissionsSchema, skillSyncConfigSchema, skillSyncGitHubSourceSchema, slider, specialVariables, specsConfigSchema, splitMCPToolKey, splitToolCallName, stripAgentIdSuffix, summarizationConfigSchema, summarizationTriggerSchema, supportedMimeTypes, supportsAdaptiveThinking, supportsBalanceCheck, supportsContext1m, supportsFiles, switchComponent, tBannerSchema, tConversationSchema, tConversationTagSchema, tConvoUpdateSchema, tExampleSchema, tMessageSchema, tModelSpecPresetSchema, tModelSpecSchema, tPluginAuthConfigSchema, tPluginSchema, tPresetSchema, tQueryParamsSchema, tSharedLinkSchema, table, tabs, temporaryChatPermissionsSchema, textMimeTypes, textarea, toMinimalFeedback, toast, toaster, toggle, toggleGroup, toolApprovalHookConfigSchema, toolApprovalModeSchema, toolApprovalPolicySchema, tooltip, transactionsSchema, turnstileOptionsSchema, turnstileSchema, updateResourcePermissionsRequestSchema, updateResourcePermissionsResponseSchema, useToast, utils, validateActionDomain, validateAndParseOpenAPISpec, validateAzureGroups, validateSettingDefinitions, validateVisionModel, vertexAISchema, vertexModelConfigSchema, videoMimeTypes, visionModels, webSearchPermissionsSchema, webSearchSchema };
7459
+ export { ACTION_METADATA_FILTER_FIELDS, AGENT_INSTRUCTION_FILTER_FIELDS, AUTH_USER_DOC_BY_ID_PREFIX, AccessRoleIds, ActionRequest, ActivityLabelEvents, AgentCapabilities, AnnotationTypes, AnthropicEffort, ApprovalEvents, ArtifactModes, AssistantStreamEvents, AuthKeys, AuthType, AuthTypeEnum, AuthorizationTypeEnum, BASE_ONLY_CONFIG_SECTIONS, BASE_PRINCIPAL_CONFIG_SECTIONS, BEDROCK_FINE_GRAINED_TOOL_STREAMING_BETA, BEDROCK_OUTPUT_128K_BETA, BedrockProviders, BedrockReasoningConfig, CODE_ENV_KINDS, CONVERSATION_STARTER_FILTER_FIELDS, CONVERSATION_TITLE_FILTER_FIELDS, CacheKeys, Capabilities, CohereConstants, ComponentTypes, Constants, ContentTypes, DATE_RANGE, DEFAULT_MEMORY_MAX_INPUT_TOKENS, DynamicQueryKeys, EImageOutputType, EModelEndpoint, EToolResources, EndpointURLs, ErrorTypes, FEEDBACK_FILTER_FIELDS, FEEDBACK_RATINGS, FEEDBACK_REASON_KEYS, FEEDBACK_TAGS, FILE_FILTER_FIELDS, FILTER_PII_STARTER_PATTERNS, FetchTokenConfig, FileContext, FilePurpose, FileSources, ForkOptions, FunctionSignature, HITL_MESSAGE_FILTER_FIELDS, INSIGHTS_MAX_RANGE_DAYS, INSIGHTS_SEARCH_MAX_LENGTH, INSIGHTS_SEARCH_MIN_LENGTH, INTERFACE_PERMISSION_FIELDS, ImageDetail, ImageDetailCost, ImageVisionTool, InfiniteCollections, InvocationMode, KnownEndpoints, LocalStorageKeys, MAX_CHAT_PROJECT_DESCRIPTION_LENGTH, MAX_CHAT_PROJECT_NAME_LENGTH, MAX_GRAPH_SUBAGENT_MEMBERS, MAX_PII_CUSTOM_PATTERNS_TOTAL, MAX_PII_CUSTOM_REGEX_CHARACTERS, MAX_PII_CUSTOM_REGEX_INSTRUCTIONS, MAX_PII_PATTERNS_PER_SOURCE, MAX_PII_PATTERN_ID_LENGTH, MAX_PII_PATTERN_LABEL_LENGTH, MAX_PII_PATTERN_LENGTH, MAX_SUBAGENTS, MAX_SUBAGENTS_CEILING, MAX_SUBAGENT_DEPTH, MAX_SUBAGENT_GRAPH_NODES, MAX_SUBAGENT_RUN_CONFIGS, MCPOptionsSchema, MCPServerUserInputSchema, MCPServersSchema, MCP_SERVER_TITLE_ERROR, MCP_SERVER_TITLE_PATTERN, MCP_USER_INPUT_FIELDS, MEMORY_FILTER_FIELDS, MESSAGE_FILTER_FIELDS, MIN_REPORTABLE_RUN_STEP_DURATION_MS, MODEL_PARAMETER_FILTER_FIELDS, MYTHOS_CLASS_FAMILIES, MemoryScope, MessageContentTypes, MutationKeys, OCRStrategy, OptionTypes, PERMISSION_SUB_KEYS, PERMISSION_TYPE_INTERFACE_FIELDS, PROMPT_FILTER_FIELDS, PermissionBits, PermissionTypes, Permissions, PrincipalModel, PrincipalType, ProviderId, Providers, QueryKeys, REFILL_INTERVAL_UNITS, RUNTIME_CONFIG_INTERFACE_FIELDS, RateLimitPrefix, ReasoningContext, ReasoningEffort, ReasoningLabelEvents, ReasoningMode, ReasoningParameterFormat, ReasoningResponseKey, ReasoningSummary, RerankerTypes, ResourceType, RetentionMode, RunStatus, SCHEDULE_CRON_MAX_LENGTH, SEPARATORS, SKILL_BODY_MAX_LENGTH, SKILL_DESCRIPTION_MAX_LENGTH, SKILL_DESCRIPTION_SHORT_THRESHOLD, SKILL_DISPLAY_TITLE_MAX_LENGTH, SKILL_FILTER_FIELDS, SKILL_NAME_MAX_LENGTH, SKILL_NAME_PATTERN, SKILL_SYNC_DEFAULT_DISCOVERY_DEPTH, SKILL_SYNC_MAX_DISCOVERY_DEPTH, SKILL_SYNC_MAX_INTERVAL_MINUTES, SKILL_SYNC_MIN_INTERVAL_MINUTES, SSEOptionsSchema, STATEFUL_CODE_ENVIRONMENTS, STORED_MESSAGE_FILTER_FIELDS, STTProviders, SafeSearchTypes, ScraperProviders, SearchCategories, SearchProviders, SettingTypes, SettingsTabValues, SettingsViews, SkillsScope, StdioOptionsSchema, SteerEvents, StepEvents, StepStatus, StepTypes, StreamableHTTPOptionsSchema, SystemCategories, SystemRoles, TOOL_ARGUMENT_FILTER_FIELDS, TTSProviders, ThinkingDisplay, ThinkingLevel, Time, TokenExchangeMethodEnum, ToolCallTypes, Tools, UsageEvents, Verbosity, ViolationTypes, VisionModes, WebSocketOptionsSchema, accessRoleSchema, accessRoleToPermBits, accordian, actionDelimiter, actionDomainSeparator, actionMetadataFilterFieldSchema, agentInstructionFilterFieldSchema, agentParamSettings, agentPermissionsSchema, agentQueuedTurnCapabilitySchema, agentQueuedTurnDurability, agentQueuedTurnFileRefSchema, agentQueuedTurnReceiptSchema, agentQueuedTurnStatuses, agentsBaseSchema, agentsEndpointSchema, agentsSchema, agentsSettings, alert, alertDialog, allowedAddressesSchema, alternateName, anthropicBaseSchema, anthropicEndpointSchema, anthropicSchema, anthropicSettings, apiBaseUrl, appendAgentIdSuffix, applicationMimeTypes, applyModelAwareDefaults, assistantEndpointSchema, assistantSchema, audioMimeTypes, authTypeSchema, avatar, azureBaseSchema, azureEndpointSchema, azureGroupConfigsSchema, azureGroupSchema, badge, balanceSchema, baseEndpointSchema, bedrockDocumentExtensions, bedrockDocumentFormats, bedrockDocumentMimeTypes, bedrockEndpointSchema, bedrockGuardrailConfigSchema, bedrockInputParser, bedrockInputSchema, bedrockModels, bedrockOutputParser, bookmarkPermissionsSchema, breadcrumb, buildLoginRedirectUrl, buildServerNameAliases, buildTree, button, cacheSubsetProviders, cadenceIntervalMinutes, cadenceToCron, calendar, cancelAgentQueuedTurnResponseSchema, cancelAgentQueuedTurnSchema, capsEffortWhenThinkingDisabled, card, carousel, checkOpenAIStorage, checkbox, checkpointerSchema, checkpointerTypeSchema, clampEffortForDisabledThinking, clampOutputConfigEffort, clampSettingRange, cloudfrontConfigSchema, codeEnvironmentPermissionDecisionSchema, codeEnvironmentUserConfigSchema, codeEnvironmentUserSettingsSchema, codeInterpreterMimeTypes, codeInterpreterMimeTypesList, codeTypeMapping, coerceNumber, collapsible, compactAgentsBaseSchema, compactAgentsSchema, compactAssistantSchema, compactGoogleSchema, configSchema, contextPruningSchema, conversationStarterFilterFieldSchema, conversationTitleFilterFieldSchema, convertStringsToRegex, createPayload, createSchedulePayloadSchema, createURL, cronCadenceSchema, data_service_exports as dataService, defaultAgentCapabilities, defaultAgentFormValues, defaultAssistantFormValues, defaultAssistantsVersion, defaultEndpoints, defaultModels, defaultOCRMimeTypes, defaultOrderQuery, defaultRetrievalModels, defaultSTTMimeTypes, defaultSocialLogins, defaultTextMimeTypes, dialog, documentParserMimeTypes, documentSupportedProviders, drawer, dropdownMenu, eAnthropicEffortSchema, eImageDetailSchema, eModelEndpointSchema, eReasoningContextSchema, eReasoningEffortSchema, eReasoningModeSchema, eReasoningParameterFormatSchema, eReasoningResponseKeySchema, eReasoningSummarySchema, eThinkingDisplaySchema, eThinkingLevelSchema, eVerbositySchema, effectivePermissionsResponseSchema, encodeEphemeralAgentId, endpointFileConfigSchema, endpointSchema, endpointSettings, endpointToProvider, enqueueAgentQueuedTurnResponseSchema, enqueueAgentQueuedTurnSchema, envVarRegex, errorsToString, essentialShadcnComponents, excelFileTypes, excelMimeTypes, excludedKeys, extendedModelEndpointSchema, extractDomainFromUrl, extractEnvVariable, extractVariableName, feedbackFilterFieldSchema, feedbackRatingSchema, feedbackSchema, feedbackTagKeySchema, fileCitationsPermissionsSchema, fileConfig, fileConfigSchema, fileFilterFieldSchema, fileSearchPermissionsSchema, fileSourceSchema, fileStorageSchema, fileStrategiesSchema, filterPiiActionSchema, filterPiiCustomPatternSchema, filterPiiRegexSchema, filterPiiStarterPatternSchema, filtersConfigSchema, findLastSeparatorIndex, fullMimeTypesList, generateDynamicSchema, generateGoogleSchema, generateOpenAISchema, getCodeEnvRefForProfile, getCodeEnvRefs, getConfigDefaults, getConfiguredMimeAccept, getDefaultParamsEndpoint, getEnabledEndpoints, getEndpointField, getEndpointFileConfig, getEphemeralSender, getFirstDefinedValue, getGoogleThinkingBudgetBounds, getGoogleThinkingBudgetMax, getMaxSubagents, getModelKey, getNonEmptyValue, getPiiRegexProgramSize, getRefillEligibilityDate, getResourcePermissionsResponseSchema, getResponseSender, getRunStepDurationMs, getSchemaDefaults, getSettingsKeys, getTagByKey, getTagsForRating, getTokenHeader, googleBaseSchema, googleGenConfigSchema, googleSchema, googleSettings, hasActiveFiltersConfig, hasActivePiiFields, hasActivePiiPatterns, hasPermissions, hasProcessMCPServerConfig, hostImageIdSuffix, hostImageNamePrefix, hoverCard, imageDetailNumeric, imageDetailValue, imageExtRegex, imageGenTools, imageMimeTypes, imageTypeMapping, inferMimeType, initialModelsConfig, input, inputTokensIncludesCache, interfaceSchema, isActionTool, isAgentsEndpoint, isAnthropicDocumentType, isAnthropicTextDocumentType, isAssistantsEndpoint, isBedrockDocumentType, isCronCadence, isDocumentSupportedProvider, isEphemeralAgentId, isImageVisionTool, isMythosClassModel, isOpenAILikeProvider, isParamEndpoint, isPermissiveMimeConfig, isProcessMCPServerConfig, isProcessMCPServerField, isRemoteOidcUrlAllowed, isReportableRunStepDuration, isSecureCodeEnvironmentControlURL, isSensitiveEnvVar, isSystemRoleName, isThinkingDisabled, isUUID, isValidCronExpression, knownEndpointToProvider, label, langfuseConfigSchema, librechat, listAgentQueuedTurnsResponseSchema, listAgentQueuedTurnsSchema, loginPage, mapGroupToAzureConfig, mapModelToAzureConfig, marketplacePermissionsSchema, materializeModelSpecEndpoints, mbToBytes, mcpServersPermissionsSchema, megabyte, memoryFilterFieldSchema, memoryPermissionsSchema, memorySchema, menuBar, mergeCodeEnvRef, mergeFileConfig, messageFilterFieldSchema, messageFilterPiiSchema, messageFilterSchema, mimeTypeAliases, modelConfigSchema, modelParameterFilterFieldSchema, modelSpecSubagentsSchema, modularEndpoints, multiConvoPermissionsSchema, navigationMenu, nextRunInstants, normalizeActionToolName, normalizeEndpointName, normalizeMCPToolKey, normalizeSearxngEngines, normalizeServerName, ocrSchema, omitsSamplingParameters, omitsThinkingByDefault, openAIBaseSchema, openAISchema, openAISettings, openRouterSchema, openapiToFunction, orderEndpointsConfig, pagination, paramDefinitionSchema, paramEndpoints, paramSettings, parseCompactConvo, parseConvo, parseEphemeralAgentId, parseLangChainErrorCode, parseTextParts, peoplePickerPermissionsSchema, permBitsToAccessLevel, permissionEntrySchema, permissionsSchema, popover, presetSettings, principalSchema, progress, promptFilterFieldSchema, promptPermissionsSchema, promptTokensFromUsage, providerEndpointMap, radioGroup, rateLimitSchema, reconcileContextUsage, registerPage, remoteAgentsPermissionsSchema, removeCodeExecutionCaller, removeNullishValues, replaceSpecialVars, request_default as request, requiresExplicitThinkingDisabled, resolveAgentSkillsScope, resolveAllowedStatefulCodeEnvironments, resolveEndpointType, resolveModelCatalogKey, resolveModelSpecEndpoint, resolveProviderId, resolveRef, resolveStatefulCodeEnvironment, resolveThinkingDisplay, resourcePermissionsResponseSchema, retainRecentConfigSchema, retrievalMimeTypes, retrievalMimeTypesList, roleDefaults, roleSchema, runCodePermissionsSchema, scheduleCadenceSchema, scheduleFrequencies, scheduleStructuredFrequencies, scheduleTargets, schedulesPermissionsSchema, select, separator, setAcceptLanguageHeader, setFileConfigRegexCompiler, setMaxSubagents, setMessageFilterRegexValidator, setTokenHeader, sha1, shadcnComponents, sharedFileDownload, sharedLinksPermissionsSchema, skeleton, skillFilterFieldSchema, skillPermissionsSchema, skillSyncConfigSchema, skillSyncGitHubSourceSchema, slider, specialVariables, specsConfigSchema, splitMCPToolKey, splitToolCallName, stripAgentIdSuffix, stripLangChainTroubleshootingUrl, stripReasoningLabelMetadata, stripServerNamePrefix, stripServerNamePrefixes, structuredCadenceSchema, subagentThreadLineageSchema, summarizationConfigSchema, summarizationTriggerSchema, supportedMimeTypes, supportsAdaptiveThinking, supportsBalanceCheck, supportsContext1m, supportsFiles, supportsPromptCache, switchComponent, tBannerSchema, tConversationSchema, tConversationTagSchema, tConvoUpdateSchema, tExampleSchema, tMessageSchema, tModelSpecPresetSchema, tModelSpecSchema, tPluginAuthConfigSchema, tPluginSchema, tPresetSchema, tQueryParamsSchema, tSharedLinkSchema, table, tabs, temporaryChatPermissionsSchema, textMimeTypes, textarea, toMinimalFeedback, toast, toaster, toggle, toggleGroup, toolApprovalHookConfigSchema, toolApprovalModeSchema, toolApprovalPolicySchema, toolArgumentFilterFieldSchema, tooltip, transactionsSchema, turnstileOptionsSchema, turnstileSchema, unattributedAssistantContentSchema, updateResourcePermissionsRequestSchema, updateResourcePermissionsResponseSchema, updateSchedulePayloadSchema, useToast, userSubmittedMessageFieldPathSchema, utils, validateActionDomain, validateAndParseOpenAPISpec, validateAzureGroups, validateSettingDefinitions, validateVisionModel, vertexAISchema, vertexModelConfigSchema, videoMimeTypes, visionModels, webSearchPermissionsSchema, webSearchSchema };
6672
7460
 
6673
7461
  //# sourceMappingURL=index.mjs.map