@openclaw/ai 2026.8.1-beta.1 → 2026.8.1-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{anthropic-CE-7SkF6.mjs → anthropic-B8KwTtlb.mjs} +62 -37
- package/dist/{anthropic-SrGtwsJu.d.mts → anthropic-BECQCNdF.d.mts} +0 -2
- package/dist/{src-QkygScBs.mjs → anthropic-BQXQudmA.mjs} +0 -2
- package/dist/{anthropic-usage-Ma4iX6uG.mjs → anthropic-compaction-replay-4Zx7-aCr.mjs} +225 -103
- package/dist/anthropic-payload-policy-CSx7MoKH.d.mts +50 -0
- package/dist/{api-registry-EpJoVwM1.d.mts → api-registry-DFxSnFqG.d.mts} +1 -1
- package/dist/{azure-openai-responses-Cc_kasye.mjs → azure-openai-responses-Aa4mVcYG.mjs} +23 -29
- package/dist/diagnostics.d.mts +24 -1
- package/dist/diagnostics.mjs +2 -1
- package/dist/event-stream-BVVgDSdq.d.mts +1 -0
- package/dist/{event-stream-DRmDMRHH.d.mts → event-stream-D91-ohD_.d.mts} +3 -1
- package/dist/{event-stream-CEV9t6da.mjs → event-stream-uSMZJ3FA.mjs} +16 -3
- package/dist/event-stream.d.mts +1 -1
- package/dist/event-stream.mjs +1 -1
- package/dist/{google-shared-Cq2UKx1l.mjs → google-shared-M1dl64nz.mjs} +17 -19
- package/dist/google-thinking-level-C-V3tecN.mjs +9 -0
- package/dist/{google-vertex-CusxWzvE.mjs → google-vertex-DCJHM_a5.mjs} +5 -4
- package/dist/{google-CGQu21aw.mjs → google-yDRnipeq.mjs} +4 -4
- package/dist/host-DF_yxOsA.mjs +477 -0
- package/dist/{host-Dn4_SZI2.d.mts → host-DJq_FGcz.d.mts} +13 -8
- package/dist/index.d.mts +7 -7
- package/dist/index.mjs +7 -5
- package/dist/internal/anthropic.d.mts +21 -7
- package/dist/internal/anthropic.mjs +5 -5
- package/dist/internal/openai-responses-payload-policy.d.mts +3 -0
- package/dist/internal/openai-responses-payload-policy.mjs +3 -0
- package/dist/internal/openai.d.mts +6 -6
- package/dist/internal/openai.mjs +9 -7
- package/dist/internal/runtime.d.mts +19 -5
- package/dist/internal/runtime.mjs +85 -72
- package/dist/internal/shared.d.mts +17 -8
- package/dist/internal/shared.mjs +4 -5
- package/dist/{json-parse-BvXNt1-7.mjs → json-parse-CDnesDM_.mjs} +4 -6
- package/dist/{mistral-Dx6VzNjf.mjs → mistral-D6hRXI7A.mjs} +67 -72
- package/dist/{number-coercion-1Miyb5MO.mjs → number-coercion-H9qHik3g.mjs} +7 -2
- package/dist/openai-chatgpt-jwt-KWcgd0d_.mjs +19 -0
- package/dist/{openai-chatgpt-responses-SC9m0FSf.mjs → openai-chatgpt-responses-C339VIfT.mjs} +235 -146
- package/dist/{openai-completions-BaIpl93j.mjs → openai-completions-D88orSJ9.mjs} +88 -67
- package/dist/openai-completions-compat-B0KTleXp.d.mts +43 -0
- package/dist/{openai-responses-Bdx3V_Yu.mjs → openai-responses-BXEcr-Tp.mjs} +17 -24
- package/dist/openai-responses-contracts-CD75pQ0m.d.mts +68 -0
- package/dist/openai-responses-contracts-DvILoqBk.mjs +247 -0
- package/dist/openai-responses-payload-policy-BDo8CQsx.mjs +208 -0
- package/dist/openai-responses-payload-policy-CNGFT9zr.d.mts +41 -0
- package/dist/{openai-responses-prompt-observer-internal-DDZPxRfr.mjs → openai-responses-prompt-observer-internal-BG-1AsBI.mjs} +2 -3
- package/dist/{openai-responses-stream-internal-Bl8YyVtF.mjs → openai-responses-shared-Cvt5MgEm.mjs} +1287 -1039
- package/dist/{openai-reasoning-compat-DKebnIBL.mjs → openai-stop-reason-9OONKyAm.mjs} +222 -180
- package/dist/{openai-transport-shared-Cipt7egQ.mjs → openai-tool-projection-CHGLt03m.mjs} +239 -128
- package/dist/provider-error-C8mBRJDl.mjs +424 -0
- package/dist/provider-error-CzNw4BWX.d.mts +12 -0
- package/dist/provider-options-AvldWZt8.mjs +21 -0
- package/dist/{provider-options-C5kYML7i.d.mts → provider-options-Cc5ZQ6Aa.d.mts} +19 -3
- package/dist/provider-transcript-transform--gtf0ZbR.mjs +32 -0
- package/dist/provider-types.d.mts +31 -0
- package/dist/provider-types.mjs +8 -0
- package/dist/providers.d.mts +1 -1
- package/dist/providers.mjs +17 -19
- package/dist/{reasoning-tag-text-partitioner-CGDyLWUR.mjs → reasoning-tag-text-partitioner-5ygO2rZc.mjs} +17 -8
- package/dist/record-coerce-DdXsgUd_.mjs +23 -0
- package/dist/{model-utils-Dau5dlgm.mjs → sanitize-unicode-BP7HLLZn.mjs} +28 -2
- package/dist/session-resources-CkR4WWy1.mjs +21 -0
- package/dist/simple-options-oqsXB6U3.mjs +450 -0
- package/dist/src-D2H6yKkH.mjs +2 -0
- package/dist/{stream-first-event-timeout-BIBomOGq.mjs → stream-first-event-timeout-MK28puvq.mjs} +2 -2
- package/dist/string-coerce-fsri9iCu.mjs +34 -0
- package/dist/{tool-schema-json-projection-B1b-XCn5.mjs → tool-schema-json-projection-FEr-jOoZ.mjs} +20 -13
- package/dist/transport-utils-Bv0FHkd0.mjs +138 -0
- package/dist/transports.d.mts +199 -209
- package/dist/transports.mjs +1842 -1364
- package/dist/types-BDdaOVi2.mjs +6 -0
- package/dist/{types-CH7ReIcU.d.mts → types-DTAP49HF.d.mts} +35 -2
- package/dist/types.d.mts +5 -5
- package/dist/types.mjs +6 -4
- package/dist/utf16-slice-CvGodqok.mjs +29 -0
- package/dist/{validation-DAa_yFOM.mjs → validation-B61OhAio.mjs} +6 -6
- package/dist/{validation-CcPcuEbR.d.mts → validation-DYNNrU9u.d.mts} +1 -1
- package/dist/validation.d.mts +1 -1
- package/dist/validation.mjs +1 -1
- package/package.json +15 -1
- package/dist/host-Bl7Kgddo.mjs +0 -407
- package/dist/openai-chatgpt-jwt-DhAAzLkj.mjs +0 -39
- package/dist/openai-responses-contracts-BBKBfAqR.d.mts +0 -116
- package/dist/openai-responses-shared-CCyMvg7M.mjs +0 -403
- package/dist/provider-error-DI0Ts28U.mjs +0 -47
- package/dist/sanitize-unicode-DT5o51ur.mjs +0 -26
- package/dist/tool-result-text-Dvkp2Dus.mjs +0 -274
- package/dist/transform-messages-DfjpNXNQ.mjs +0 -2
- package/dist/transport-stream-shared-CPNv7A3r.mjs +0 -297
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, s as resolveClaudeModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "../anthropic-
|
|
1
|
+
import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, s as resolveClaudeModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "../anthropic-BECQCNdF.mjs";
|
|
2
2
|
import { t as AssistantMessageDiagnostic } from "../diagnostics-BaTA9eVl.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { n as AnthropicOptions, r as AnthropicThinkingDisplay, t as AnthropicEffort } from "../provider-options-
|
|
3
|
+
import { B as StopReason, D as Model, H as StreamFunction, d as Context, et as Usage, z as SimpleStreamOptions } from "../types-DTAP49HF.mjs";
|
|
4
|
+
import { n as AnthropicOptions, r as AnthropicThinkingDisplay, t as AnthropicEffort } from "../provider-options-Cc5ZQ6Aa.mjs";
|
|
5
|
+
import { o as resolveAnthropicServerCompactionPlan } from "../anthropic-payload-policy-CSx7MoKH.mjs";
|
|
6
|
+
|
|
5
7
|
//#region packages/ai/src/providers/anthropic.d.ts
|
|
6
|
-
|
|
8
|
+
type AnthropicCompactionOptions = AnthropicOptions & {
|
|
9
|
+
anthropicServerCompaction?: boolean;
|
|
10
|
+
authProfileId?: string;
|
|
11
|
+
};
|
|
12
|
+
declare const streamAnthropic: StreamFunction<"anthropic-messages", AnthropicCompactionOptions>;
|
|
7
13
|
type AnthropicSimpleStreamOptions = SimpleStreamOptions & {
|
|
8
|
-
|
|
14
|
+
anthropicServerCompaction?: boolean;
|
|
15
|
+
authProfileId?: string;
|
|
16
|
+
toolChoice?: AnthropicCompactionOptions["toolChoice"];
|
|
9
17
|
};
|
|
10
18
|
declare const streamSimpleAnthropic: StreamFunction<"anthropic-messages", AnthropicSimpleStreamOptions>;
|
|
11
19
|
//#endregion
|
|
@@ -56,7 +64,13 @@ declare function resolveAnthropicThinkingEffort(model: Model<"anthropic-messages
|
|
|
56
64
|
declare function mapAnthropicStopReason(reason: string | undefined): StopReason;
|
|
57
65
|
/** Remove unsupported assistant prefills while preserving completed tool-use turns. */
|
|
58
66
|
declare function prepareClaudeNoPrefillRequestContext(model: Model, context: Context): Context;
|
|
59
|
-
|
|
67
|
+
type ClaudeSamplingRequestParams = {
|
|
68
|
+
temperature?: unknown;
|
|
69
|
+
top_p?: unknown;
|
|
70
|
+
top_k?: unknown;
|
|
71
|
+
service_tier?: unknown;
|
|
72
|
+
};
|
|
73
|
+
declare function applyClaudeRequestContract(params: ClaudeSamplingRequestParams, model: {
|
|
60
74
|
id?: string;
|
|
61
75
|
params?: Record<string, unknown>;
|
|
62
76
|
api?: string;
|
|
@@ -207,4 +221,4 @@ declare function applyAnthropicMessageStartUsage(target: Usage, payload: Anthrop
|
|
|
207
221
|
/** Keep cumulative billing separate from the final server-side iteration context. */
|
|
208
222
|
declare function applyAnthropicMessageDeltaUsage(target: Usage, payload: AnthropicUsagePayload | undefined, messageStartPromptUsage: AnthropicPromptUsageSnapshot | undefined): void;
|
|
209
223
|
//#endregion
|
|
210
|
-
export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, AnthropicCacheWriteUsage, type AnthropicEffort, AnthropicFallbackBoundary, AnthropicIterationUsageResult, AnthropicIterationUsageSnapshot, type AnthropicOptions, AnthropicProjectedToolChoice, AnthropicPromptUsageSnapshot, type AnthropicThinkingDisplay, AnthropicToolProjection, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
|
|
224
|
+
export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, AnthropicCacheWriteUsage, type AnthropicEffort, AnthropicFallbackBoundary, AnthropicIterationUsageResult, AnthropicIterationUsageSnapshot, type AnthropicOptions, AnthropicProjectedToolChoice, AnthropicPromptUsageSnapshot, type AnthropicThinkingDisplay, AnthropicToolProjection, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicServerCompactionPlan, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, s as resolveClaudeModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "../
|
|
2
|
-
import {
|
|
3
|
-
import { C as
|
|
4
|
-
import { n as streamAnthropic, r as streamSimpleAnthropic } from "../anthropic-
|
|
5
|
-
export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
|
|
1
|
+
import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, s as resolveClaudeModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "../anthropic-BQXQudmA.mjs";
|
|
2
|
+
import { S as usesClaudeStreamingRefusalContract, _ as prepareClaudeNoPrefillRequestContext, b as resolveModelBoundThinkingReplayMode, f as ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, g as mapAnthropicStopReason, h as defaultsClaudeAdaptiveThinking, m as applyClaudeRequestContract, p as ANTHROPIC_CLAUDE_CODE_VERSION, v as requiresClaudeAdaptiveThinking, x as usesClaudeFable5MessagesContract, y as resolveAnthropicThinkingEffort } from "../host-DF_yxOsA.mjs";
|
|
3
|
+
import { C as readAnthropicFallbackBoundary, D as usesFoundryBearerAuth, E as omitFoundryBearerCredentialHeaders, I as resolveAnthropicServerCompactionPlan, S as applyAnthropicFallbackBoundary, T as applyAnthropicRefusal, _ as ANTHROPIC_OMITTED_REASONING_TEXT, a as applyAnthropicMessageDeltaUsage, b as ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, c as readAnthropicPromptUsageSnapshot, d as normalizeAnthropicToolCallId, f as normalizeAnthropicToolChoice, g as toClaudeCodeToolName, h as resolveOriginalAnthropicToolName, l as readAnthropicUsageTokenCount, m as reconcileAnthropicToolChoice, o as applyAnthropicMessageStartUsage, p as projectAnthropicTools, s as readAnthropicCacheWriteUsage, u as readLastAnthropicIterationUsage, v as findActiveAnthropicToolTurnAssistantIndex, w as resolveAnthropicFallbackServingModelCost, x as CLAUDE_OPUS_FALLBACK_MODEL_COST, y as ANTHROPIC_SERVER_SIDE_FALLBACKS } from "../anthropic-compaction-replay-4Zx7-aCr.mjs";
|
|
4
|
+
import { n as streamAnthropic, r as streamSimpleAnthropic } from "../anthropic-B8KwTtlb.mjs";
|
|
5
|
+
export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicServerCompactionPlan, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { t as OPENAI_RESPONSES_APIS } from "../openai-responses-contracts-CD75pQ0m.mjs";
|
|
2
|
+
import { i as resolveOpenAIResponsesServerCompactionPlan } from "../openai-responses-payload-policy-CNGFT9zr.mjs";
|
|
3
|
+
export { OPENAI_RESPONSES_APIS, resolveOpenAIResponsesServerCompactionPlan };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { i as OPENAI_RESPONSES_APIS } from "../openai-responses-contracts-DvILoqBk.mjs";
|
|
2
|
+
import { i as resolveOpenAIResponsesServerCompactionPlan } from "../openai-responses-payload-policy-BDo8CQsx.mjs";
|
|
3
|
+
export { OPENAI_RESPONSES_APIS, resolveOpenAIResponsesServerCompactionPlan };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { _ as
|
|
3
|
-
import {
|
|
1
|
+
import { B as StopReason, D as Model, H as StreamFunction, d as Context, et as Usage, z as SimpleStreamOptions } from "../types-DTAP49HF.mjs";
|
|
2
|
+
import { C as supportsOpenAITemperature, S as supportsOpenAIReasoningEffort, _ as isOpenAIGpt55Model, a as CodeModeToolSurfaceObservation, b as resolveOpenAIReasoningEffortForModel, c as codeModeToolSurfaceObserver, d as projectOpenAITools, f as reconcileOpenAICompletionsToolChoice, g as isOpenAIGpt54MiniModel, h as OpenAIReasoningEffort, i as BaseOpenAIStreamOptions, l as OpenAICompletionsToolChoice, m as OpenAIApiReasoningEffort, o as OpenAICompletionsOptions, p as reconcileOpenAIResponsesToolChoice, u as OpenAIToolProjection, v as isOpenAIGpt56Model, x as resolveOpenAISupportedReasoningEfforts, y as normalizeOpenAIReasoningEffort } from "../provider-options-Cc5ZQ6Aa.mjs";
|
|
3
|
+
import { o as ResponsesPromptObservation, s as responsesPromptObserver } from "../openai-responses-contracts-CD75pQ0m.mjs";
|
|
4
|
+
import { t as ResolvedOpenAICompletionsCompat } from "../openai-completions-compat-B0KTleXp.mjs";
|
|
4
5
|
import { n as clampOpenAIPromptCacheKey, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-2uo_1OR1.mjs";
|
|
5
6
|
import OpenAI from "openai";
|
|
6
7
|
import { TSchema } from "typebox";
|
|
@@ -81,7 +82,7 @@ declare const streamOpenAICompletions: StreamFunction<"openai-completions", Open
|
|
|
81
82
|
declare const streamSimpleOpenAICompletions: StreamFunction<"openai-completions", SimpleStreamOptions>;
|
|
82
83
|
//#endregion
|
|
83
84
|
//#region packages/ai/src/providers/openai-responses.d.ts
|
|
84
|
-
interface OpenAIResponsesOptions extends
|
|
85
|
+
interface OpenAIResponsesOptions extends BaseOpenAIStreamOptions {
|
|
85
86
|
reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
86
87
|
reasoningSummary?: "auto" | "detailed" | "concise" | null;
|
|
87
88
|
replayResponsesItemIds?: boolean;
|
|
@@ -223,7 +224,6 @@ type ToolSchemaCompatInput = {
|
|
|
223
224
|
unsupportedToolSchemaKeywords?: unknown;
|
|
224
225
|
omitEmptyArrayItems?: unknown;
|
|
225
226
|
};
|
|
226
|
-
declare function clearOpenAIToolSchemaCacheForTest(): void;
|
|
227
227
|
/** Normalizes a tool parameter schema into the OpenAI strict JSON-schema subset. */
|
|
228
228
|
declare function normalizeStrictOpenAIJsonSchema(schema: unknown, modelCompat?: ToolSchemaCompatInput | null): unknown;
|
|
229
229
|
/** Normalizes tool parameters using strict OpenAI rules only when strict mode is active. */
|
|
@@ -257,4 +257,4 @@ type RuntimeToolInputSchemaProjection = {
|
|
|
257
257
|
/** Projects one runtime tool input schema to JSON and reports runtime incompatibilities. */
|
|
258
258
|
declare function projectRuntimeToolInputSchema(schema: unknown, path?: string): RuntimeToolInputSchemaProjection;
|
|
259
259
|
//#endregion
|
|
260
|
-
export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, AzureResponsesTextContentPart, AzureResponsesTextDeltaEvent, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, OpenAIApiReasoningEffort, type OpenAICompletionsOptions, OpenAICompletionsToolChoice, OpenAIReasoningEffort, OpenAIResponsesOptions, OpenAIStopReasonResult, OpenAIToolProjection, ResponsesMessageSnapshotCollapse, type ResponsesPromptObservation, ResponsesTerminalUsagePayload, ResponsesTextContentPartType, ResponsesTextDeltaEventType, ResponsesToolCallIdentity, ResponsesToolCallState, RuntimeToolInputSchemaJson, RuntimeToolInputSchemaProjection, ToolParameterSchemaOptions, ToolSchemaModelCompat, clampOpenAIPromptCacheKey, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf,
|
|
260
|
+
export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, AzureResponsesTextContentPart, AzureResponsesTextDeltaEvent, type CodeModeToolSurfaceObservation, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, OpenAIApiReasoningEffort, type OpenAICompletionsOptions, OpenAICompletionsToolChoice, OpenAIReasoningEffort, OpenAIResponsesOptions, OpenAIStopReasonResult, OpenAIToolProjection, ResponsesMessageSnapshotCollapse, type ResponsesPromptObservation, ResponsesTerminalUsagePayload, ResponsesTextContentPartType, ResponsesTextDeltaEventType, ResponsesToolCallIdentity, ResponsesToolCallState, RuntimeToolInputSchemaJson, RuntimeToolInputSchemaProjection, ToolParameterSchemaOptions, ToolSchemaModelCompat, clampOpenAIPromptCacheKey, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf, codeModeToolSurfaceObserver, convertMessages, createResponsesToolCallTracker, extractToolSchemaModelCompat, findLlamacppGbnfSchemaViolations, findOpenAIStrictSchemaViolations, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, mapResponsesTerminalUsage, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictCompatSchema, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, readResponsesReasoningTokens, readResponsesToolCallItemIdentity, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, responsesPromptObserver, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
|
package/dist/internal/openai.mjs
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { S as supportsOpenAITemperature, _ as isOpenAIGpt56Model, b as resolveOpenAISupportedReasoningEfforts, g as isOpenAIGpt55Model, h as isOpenAIGpt54MiniModel, m as responsesPromptObserver, v as normalizeOpenAIReasoningEffort, x as supportsOpenAIReasoningEffort, y as resolveOpenAIReasoningEffortForModel } from "../openai-responses-contracts-DvILoqBk.mjs";
|
|
1
2
|
import { n as clampOpenAIPromptCacheKey, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-mZTCdRPo.mjs";
|
|
2
|
-
import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-
|
|
3
|
-
import {
|
|
4
|
-
import { $ as
|
|
5
|
-
import {
|
|
3
|
+
import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-FEr-jOoZ.mjs";
|
|
4
|
+
import { r as convertMessages, t as mapOpenAIStopReason } from "../openai-stop-reason-9OONKyAm.mjs";
|
|
5
|
+
import { $ as normalizeOpenAIStrictCompatSchema, A as isAzureResponsesTextDeltaEvent, D as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, E as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, J as isStrictOpenAIJsonSchemaCompatible, M as isResponsesTextContentPartType, N as isResponsesTextDeltaEventType, O as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, P as resolveResponsesMessageSnapshotCollapse, Q as findOpenAIStrictSchemaViolations, T as readResponsesToolCallItemIdentity, X as normalizeStrictOpenAIJsonSchema, Y as normalizeOpenAIStrictToolParameters, Z as resolveOpenAIProjectedToolsStrictToolFlag, at as LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, ct as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, d as resolveResponsesTerminalStopReason, et as extractToolSchemaModelCompat, it as stripUnsupportedSchemaKeywords, j as isAzureResponsesTextDeltaEventType, k as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, l as mapResponsesTerminalUsage, lt as cleanSchemaForGemini, nt as resolveUnsupportedToolSchemaKeywords, ot as cleanSchemaForLlamacppGbnf, q as findOpenAIStrictToolProjectionDiagnostics, rt as shouldOmitEmptyArrayItems, st as findLlamacppGbnfSchemaViolations, tt as normalizeToolParameterSchema, u as readResponsesReasoningTokens, w as createResponsesToolCallTracker } from "../openai-responses-shared-Cvt5MgEm.mjs";
|
|
6
|
+
import { t as codeModeToolSurfaceObserver } from "../provider-options-AvldWZt8.mjs";
|
|
7
|
+
import { n as reconcileOpenAICompletionsToolChoice, r as reconcileOpenAIResponsesToolChoice, t as projectOpenAITools } from "../openai-tool-projection-CHGLt03m.mjs";
|
|
6
8
|
import { i as resolveAzureDeploymentNameFromMap, n as isTraditionalAzureOpenAIHost, r as parseAzureDeploymentNameMap, t as isOpenAICompatibleAzureResponsesBaseUrl } from "../azure-openai-responses-client-compat-C7K7QfUE.mjs";
|
|
7
|
-
import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-
|
|
8
|
-
import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-
|
|
9
|
-
export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, clampOpenAIPromptCacheKey, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf,
|
|
9
|
+
import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-D88orSJ9.mjs";
|
|
10
|
+
import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-BXEcr-Tp.mjs";
|
|
11
|
+
export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, clampOpenAIPromptCacheKey, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf, codeModeToolSurfaceObserver, convertMessages, createResponsesToolCallTracker, extractToolSchemaModelCompat, findLlamacppGbnfSchemaViolations, findOpenAIStrictSchemaViolations, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, mapResponsesTerminalUsage, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictCompatSchema, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, readResponsesReasoningTokens, readResponsesToolCallItemIdentity, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, responsesPromptObserver, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { D as
|
|
2
|
-
import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-
|
|
1
|
+
import { D as Model, O as ModelThinkingLevel, R as ProviderStreamOptions, U as StreamOptions, a as AssistantMessage, d as Context, et as Usage, n as Api, s as AssistantMessageEventStreamContract, z as SimpleStreamOptions } from "../types-DTAP49HF.mjs";
|
|
2
|
+
import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-DFxSnFqG.mjs";
|
|
3
3
|
import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
|
|
4
4
|
import { a as createFirstStreamEventTimeoutError, c as withFirstStreamEventTimeout, i as createFirstStreamEventAbortController, n as FirstStreamEventInternalOptions, o as getFirstStreamEventTimeoutHandler, r as FirstStreamEventTimeoutContext, s as getFirstStreamEventTimeoutMs, t as FirstStreamEventAbortController } from "../stream-first-event-timeout-DvDeSucC.mjs";
|
|
5
5
|
|
|
@@ -117,6 +117,18 @@ declare function resolveOpenAICodexAccountId(token: string): string | null;
|
|
|
117
117
|
//#region packages/ai/src/utils/overflow.d.ts
|
|
118
118
|
/** Detects DS4-style raw token-count context overflow errors. */
|
|
119
119
|
declare function isConfiguredContextSizeOverflowError(errorMessage: string): boolean;
|
|
120
|
+
declare const CONTEXT_OVERFLOW_PATTERN_SCOPES: {
|
|
121
|
+
readonly "assistant-error": RegExp[];
|
|
122
|
+
readonly "failover-explicit": RegExp[];
|
|
123
|
+
readonly "provider-fallback": RegExp[];
|
|
124
|
+
readonly "failover-hint": readonly [RegExp];
|
|
125
|
+
readonly "context-window-too-small": readonly [RegExp];
|
|
126
|
+
readonly "tpm-rate-limit-hint": readonly [RegExp];
|
|
127
|
+
readonly "rate-limit-hint": readonly [RegExp];
|
|
128
|
+
};
|
|
129
|
+
type ContextOverflowMessageScope = keyof typeof CONTEXT_OVERFLOW_PATTERN_SCOPES;
|
|
130
|
+
/** Match one canonical context-overflow wording scope without applying caller policy. */
|
|
131
|
+
declare function matchesContextOverflowMessage(errorMessage: string, scope: ContextOverflowMessageScope): boolean;
|
|
120
132
|
/**
|
|
121
133
|
* Check if an assistant message represents a context overflow error.
|
|
122
134
|
*
|
|
@@ -134,7 +146,7 @@ declare function isConfiguredContextSizeOverflowError(errorMessage: string): boo
|
|
|
134
146
|
* - Google Gemini: "input token count exceeds the maximum"
|
|
135
147
|
* - xAI (Grok): "maximum prompt length is X but request contains Y"
|
|
136
148
|
* - Groq: "reduce the length of the messages"
|
|
137
|
-
* - Cerebras:
|
|
149
|
+
* - Cerebras: 413 status code (no body)
|
|
138
150
|
* - Mistral: "Prompt contains X tokens ... too large for model with Y maximum context length"
|
|
139
151
|
* - OpenRouter (all backends): "maximum context length is X tokens"
|
|
140
152
|
* - Together AI: "The input (X tokens) is longer than the model's context length (Y tokens)."
|
|
@@ -161,7 +173,7 @@ declare function isConfiguredContextSizeOverflowError(errorMessage: string): boo
|
|
|
161
173
|
* 1. Send a request that exceeds the model's context window
|
|
162
174
|
* 2. Check the errorMessage in the response
|
|
163
175
|
* 3. Create a regex pattern that matches the error
|
|
164
|
-
* 4. The pattern should be added to
|
|
176
|
+
* 4. The pattern should be added to the appropriate canonical scope in this file, or
|
|
165
177
|
* check the errorMessage yourself before calling this function
|
|
166
178
|
*
|
|
167
179
|
* @param message - The assistant message to check
|
|
@@ -186,6 +198,8 @@ interface ReasoningTagTextPartitioner {
|
|
|
186
198
|
pushVisible(chunk: string): ReasoningTagTextDelta[];
|
|
187
199
|
flush(): ReasoningTagTextDelta[];
|
|
188
200
|
hasPending(): boolean;
|
|
201
|
+
/** Whether more input can change buffered Markdown or reasoning-tag ownership. */
|
|
202
|
+
hasPendingSyntax(): boolean;
|
|
189
203
|
isInsideReasoning(): boolean;
|
|
190
204
|
}
|
|
191
205
|
/** Creates a block-incremental parser that emits only Markdown-stable text. */
|
|
@@ -221,4 +235,4 @@ type SseByteGuard = {
|
|
|
221
235
|
};
|
|
222
236
|
declare function createSseByteGuard(reader: ReadableStreamDefaultReader<Uint8Array>, opts: ReadSseStreamWithLimitOptions): SseByteGuard;
|
|
223
237
|
//#endregion
|
|
224
|
-
export { FirstStreamEventAbortController, FirstStreamEventInternalOptions, FirstStreamEventTimeoutContext, OpenAICodexJwtPayload, ReadSseStreamWithLimitOptions, type ReasoningTagTextDelta, type ReasoningTagTextPartitioner, SessionResourceCleanup, SseByteGuard, SseStreamOverflow, applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
|
|
238
|
+
export { ContextOverflowMessageScope, FirstStreamEventAbortController, FirstStreamEventInternalOptions, FirstStreamEventTimeoutContext, OpenAICodexJwtPayload, ReadSseStreamWithLimitOptions, type ReasoningTagTextDelta, type ReasoningTagTextPartitioner, SessionResourceCleanup, SseByteGuard, SseStreamOverflow, applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, matchesContextOverflowMessage, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { n as getEnvApiKey, t as findEnvKeys } from "../env-api-keys-DrgeBuva.mjs";
|
|
2
2
|
import { n as createApiRegistry, t as createLlmRuntime } from "../stream-CREqxHgU.mjs";
|
|
3
|
-
import { a as
|
|
4
|
-
import { t as
|
|
3
|
+
import { a as getSupportedThinkingLevels, i as clampThinkingLevel, n as applyProviderReportedUsageCost, o as modelsAreEqual, r as calculateCost, t as sanitizeSurrogates } from "../sanitize-unicode-BP7HLLZn.mjs";
|
|
4
|
+
import { t as headersToRecord } from "../headers-B_e4-1J0.mjs";
|
|
5
5
|
import { t as createDeferredEventBuffer } from "../deferred-event-buffer-DAvyP7qA.mjs";
|
|
6
|
-
import { n as parseStreamingJson, r as repairJson, t as parseJsonWithRepair } from "../json-parse-
|
|
6
|
+
import { n as parseStreamingJson, r as repairJson, t as parseJsonWithRepair } from "../json-parse-CDnesDM_.mjs";
|
|
7
7
|
import { n as onLlmRequestActivity, t as notifyLlmRequestActivity } from "../llm-request-activity-BjtkplhG.mjs";
|
|
8
|
-
import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-CGDyLWUR.mjs";
|
|
9
|
-
import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-BIBomOGq.mjs";
|
|
10
|
-
import { t as headersToRecord } from "../headers-B_e4-1J0.mjs";
|
|
11
8
|
import { t as shortHash } from "../hash-CHgqbJmD.mjs";
|
|
12
|
-
import { i as
|
|
9
|
+
import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-MK28puvq.mjs";
|
|
10
|
+
import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-5ygO2rZc.mjs";
|
|
11
|
+
import { n as registerSessionResourceCleanup, t as cleanupSessionResources } from "../session-resources-CkR4WWy1.mjs";
|
|
12
|
+
import { n as resolveOpenAICodexAccountId, t as decodeOpenAICodexJwtPayload } from "../openai-chatgpt-jwt-KWcgd0d_.mjs";
|
|
13
13
|
import { t as createSseByteGuard } from "../streaming-byte-guard-BrbkbwUu.mjs";
|
|
14
14
|
//#region packages/ai/src/internal/default-runtime.ts
|
|
15
15
|
const DEFAULT_RUNTIME_KEY = Symbol.for("openclaw.ai.defaultRuntime");
|
|
@@ -39,69 +39,82 @@ const CONFIGURED_CONTEXT_SIZE_OVERFLOW_RE = /prompt has [\d,]+ tokens?, but the
|
|
|
39
39
|
function isConfiguredContextSizeOverflowError(errorMessage) {
|
|
40
40
|
return CONFIGURED_CONTEXT_SIZE_OVERFLOW_RE.test(errorMessage);
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
*
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
42
|
+
const CONTEXT_OVERFLOW_PATTERN_SCOPES = {
|
|
43
|
+
"assistant-error": [
|
|
44
|
+
/prompt is too long/i,
|
|
45
|
+
/request_too_large/i,
|
|
46
|
+
/input length and `?max_tokens`? exceed context limit: [\d,]+ \+ [\d,]+ > [\d,]+/i,
|
|
47
|
+
/input is too long for requested model/i,
|
|
48
|
+
/exceeds the context window/i,
|
|
49
|
+
/exceeds (?:the )?(?:model'?s )?maximum context length(?: of [\d,]+ tokens?|\s*\([\d,]+\))/i,
|
|
50
|
+
/input token count.*exceeds the maximum/i,
|
|
51
|
+
/maximum prompt length is \d+/i,
|
|
52
|
+
/reduce the length of the messages/i,
|
|
53
|
+
/maximum context length is \d+ tokens/i,
|
|
54
|
+
/exceeds (?:the )?maximum allowed input length of [\d,]+ tokens?/i,
|
|
55
|
+
/input \(\d+ tokens\) is longer than the model'?s context length \(\d+ tokens\)/i,
|
|
56
|
+
/exceeds the limit of \d+/i,
|
|
57
|
+
/exceeds the available context size/i,
|
|
58
|
+
/greater than the context length/i,
|
|
59
|
+
/context window exceeds limit/i,
|
|
60
|
+
/exceeded model token limit/i,
|
|
61
|
+
/tokens? in request more than max tokens? allowed/i,
|
|
62
|
+
/prompt exceeds max(?:imum)? length/i,
|
|
63
|
+
/too large for model with \d+ maximum context length/i,
|
|
64
|
+
CONFIGURED_CONTEXT_SIZE_OVERFLOW_RE,
|
|
65
|
+
/model_context_window_exceeded/i,
|
|
66
|
+
/prompt too long; exceeded (?:max )?context length/i,
|
|
67
|
+
/context[_ ]length[_ ]exceeded/i,
|
|
68
|
+
/too many tokens/i,
|
|
69
|
+
/token limit exceeded/i,
|
|
70
|
+
/^413\s*(?:status code)?\s*\(no body\)/i
|
|
71
|
+
],
|
|
72
|
+
"failover-explicit": [
|
|
73
|
+
/request_too_large/i,
|
|
74
|
+
/context_overflow/i,
|
|
75
|
+
CONFIGURED_CONTEXT_SIZE_OVERFLOW_RE,
|
|
76
|
+
/invalid_argument[\s\S]*maximum number of tokens/i,
|
|
77
|
+
/request exceeds the maximum size/i,
|
|
78
|
+
/context length exceeded/i,
|
|
79
|
+
/maximum context length/i,
|
|
80
|
+
/prompt is too long/i,
|
|
81
|
+
/prompt too long/i,
|
|
82
|
+
/exceeds model context window/i,
|
|
83
|
+
/model token limit/i,
|
|
84
|
+
/input exceeds[\s\S]*maximum number of tokens/i,
|
|
85
|
+
/^(?=[\s\S]*context window)(?=[\s\S]*ran out of (?:room|space))/i,
|
|
86
|
+
/request size exceeds[\s\S]*context window/i,
|
|
87
|
+
/context overflow:/i,
|
|
88
|
+
/exceed context limit/i,
|
|
89
|
+
/exceeds the model'?s maximum context/i,
|
|
90
|
+
/max_tokens[\s\S]*exceed[\s\S]*context/i,
|
|
91
|
+
/input length[\s\S]*exceed[\s\S]*context/i,
|
|
92
|
+
/413[\s\S]*too large/i,
|
|
93
|
+
/context_window_exceeded/i,
|
|
94
|
+
/input length [\d,]+\s+tokens? exceeds the model limit/i,
|
|
95
|
+
/上下文过长|上下文超出|上下文长度超|超出最大上下文|请压缩上下文/
|
|
96
|
+
],
|
|
97
|
+
"provider-fallback": [
|
|
98
|
+
/\binput token count exceeds the maximum number of input tokens\b/i,
|
|
99
|
+
/\binput is too long for this model\b/i,
|
|
100
|
+
/\binput exceeds the maximum number of tokens\b/i,
|
|
101
|
+
/\bollama error:\s*context length exceeded(?:,\s*too many tokens)?\b/i,
|
|
102
|
+
/\btotal tokens?.*exceeds? (?:the )?(?:model(?:'s)? )?(?:max|maximum|limit)/i,
|
|
103
|
+
/\b(?:request|prompt) \(\d[\d,]*\s*tokens?\) exceeds (?:the )?available context size\b/i,
|
|
104
|
+
/\binput (?:is )?too long for (?:the )?model\b/i
|
|
105
|
+
],
|
|
106
|
+
"failover-hint": [/context.*overflow|context window.*(too (?:large|long)|exceed|over|limit|max(?:imum)?|requested|sent|tokens)|prompt.*(too (?:large|long)|exceed|over|limit|max(?:imum)?)|(?:request|input).*(?:context|window|length|token).*(too (?:large|long)|exceed|over|limit|max(?:imum)?)/i],
|
|
107
|
+
"context-window-too-small": [/context window.*(too small|minimum is)/i],
|
|
108
|
+
"tpm-rate-limit-hint": [/\btpm\b|tokens per minute/i],
|
|
109
|
+
"rate-limit-hint": [/rate limit|too many requests|requests per (?:minute|hour|day)|quota|throttl|429\b|tokens per day/i]
|
|
110
|
+
};
|
|
111
|
+
/** Match one canonical context-overflow wording scope without applying caller policy. */
|
|
112
|
+
function matchesContextOverflowMessage(errorMessage, scope) {
|
|
113
|
+
return CONTEXT_OVERFLOW_PATTERN_SCOPES[scope].some((pattern) => pattern.test(errorMessage));
|
|
114
|
+
}
|
|
102
115
|
/**
|
|
103
116
|
* Patterns that indicate non-overflow errors (e.g. rate limiting, server errors).
|
|
104
|
-
* Error messages matching
|
|
117
|
+
* Error messages matching any of these are excluded from overflow detection
|
|
105
118
|
* even if they also match an OVERFLOW_PATTERN.
|
|
106
119
|
*
|
|
107
120
|
* Example: Bedrock formats throttling errors as "ThrottlingException: Too many tokens,
|
|
@@ -135,7 +148,7 @@ function resolveContextInputTokens(message) {
|
|
|
135
148
|
* - Google Gemini: "input token count exceeds the maximum"
|
|
136
149
|
* - xAI (Grok): "maximum prompt length is X but request contains Y"
|
|
137
150
|
* - Groq: "reduce the length of the messages"
|
|
138
|
-
* - Cerebras:
|
|
151
|
+
* - Cerebras: 413 status code (no body)
|
|
139
152
|
* - Mistral: "Prompt contains X tokens ... too large for model with Y maximum context length"
|
|
140
153
|
* - OpenRouter (all backends): "maximum context length is X tokens"
|
|
141
154
|
* - Together AI: "The input (X tokens) is longer than the model's context length (Y tokens)."
|
|
@@ -162,7 +175,7 @@ function resolveContextInputTokens(message) {
|
|
|
162
175
|
* 1. Send a request that exceeds the model's context window
|
|
163
176
|
* 2. Check the errorMessage in the response
|
|
164
177
|
* 3. Create a regex pattern that matches the error
|
|
165
|
-
* 4. The pattern should be added to
|
|
178
|
+
* 4. The pattern should be added to the appropriate canonical scope in this file, or
|
|
166
179
|
* check the errorMessage yourself before calling this function
|
|
167
180
|
*
|
|
168
181
|
* @param message - The assistant message to check
|
|
@@ -172,7 +185,7 @@ function resolveContextInputTokens(message) {
|
|
|
172
185
|
function isContextOverflow(message, contextWindow) {
|
|
173
186
|
if (message.stopReason === "error" && message.errorMessage) {
|
|
174
187
|
const errorMessage = message.errorMessage;
|
|
175
|
-
if (!NON_OVERFLOW_PATTERNS.some((p) => p.test(errorMessage)) &&
|
|
188
|
+
if (!NON_OVERFLOW_PATTERNS.some((p) => p.test(errorMessage)) && matchesContextOverflowMessage(errorMessage, "assistant-error")) return true;
|
|
176
189
|
}
|
|
177
190
|
if (contextWindow && message.stopReason === "stop") {
|
|
178
191
|
const inputTokens = resolveContextInputTokens(message);
|
|
@@ -185,4 +198,4 @@ function isContextOverflow(message, contextWindow) {
|
|
|
185
198
|
return false;
|
|
186
199
|
}
|
|
187
200
|
//#endregion
|
|
188
|
-
export { applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
|
|
201
|
+
export { applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, matchesContextOverflowMessage, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { D as Model, E as Message, J as ThinkingLevel, K as ThinkingBudgets, U as StreamOptions, a as AssistantMessage, n as Api, z as SimpleStreamOptions } from "../types-DTAP49HF.mjs";
|
|
2
2
|
import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
|
|
3
3
|
import { n as normalizeStructuredPromptSection, r as sortPromptCacheToolsByName, t as normalizePromptCapabilityIds } from "../prompt-cache-stability-Cwcjv_fx.mjs";
|
|
4
4
|
|
|
@@ -29,14 +29,23 @@ declare function isImageWithMediaPayload<T>(block: T): block is T & {
|
|
|
29
29
|
};
|
|
30
30
|
declare function describeToolResultMediaPlaceholder(blocks: readonly unknown[]): string | undefined;
|
|
31
31
|
declare function extractToolResultBlockText(block: unknown): string | undefined;
|
|
32
|
-
declare function extractToolResultText(blocks: readonly unknown[]
|
|
32
|
+
declare function extractToolResultText(blocks: readonly unknown[], options?: {
|
|
33
|
+
includeStructured?: boolean;
|
|
34
|
+
}): string;
|
|
35
|
+
type ToolResultMediaSupport = {
|
|
36
|
+
images: boolean;
|
|
37
|
+
audio: boolean;
|
|
38
|
+
};
|
|
39
|
+
/** Describe media that cannot be represented on the target provider wire. */
|
|
40
|
+
declare function describeUnsupportedToolResultMedia(blocks: readonly unknown[], support: ToolResultMediaSupport): string | undefined;
|
|
41
|
+
declare function formatToolResultText(params: {
|
|
42
|
+
text: string;
|
|
43
|
+
mediaPlaceholder?: string;
|
|
44
|
+
omittedMediaPlaceholder?: string;
|
|
45
|
+
isError: boolean;
|
|
46
|
+
}): string;
|
|
33
47
|
//#endregion
|
|
34
48
|
//#region packages/ai/src/transcript-transform.d.ts
|
|
35
|
-
/**
|
|
36
|
-
* Normalize tool call ID for cross-provider compatibility.
|
|
37
|
-
* OpenAI Responses API generates IDs that are 450+ chars with special characters like `|`.
|
|
38
|
-
* Anthropic APIs require IDs matching ^[a-zA-Z0-9_-]+$ (max 64 chars).
|
|
39
|
-
*/
|
|
40
49
|
declare function transformMessages<TApi extends Api>(messages: Message[], model: Model<TApi>, normalizeToolCallId?: (id: string, model: Model<TApi>, source: AssistantMessage) => string): Message[];
|
|
41
50
|
//#endregion
|
|
42
51
|
//#region packages/ai/src/utils/system-prompt-cache-boundary.d.ts
|
|
@@ -62,4 +71,4 @@ type TlsCertificateErrorDetails = {
|
|
|
62
71
|
/** Classify deterministic Node/OpenSSL certificate validation failures. */
|
|
63
72
|
declare function inspectTlsCertificateError(error: unknown): TlsCertificateErrorDetails | null;
|
|
64
73
|
//#endregion
|
|
65
|
-
export { SYSTEM_PROMPT_CACHE_BOUNDARY, TlsCertificateErrorDetails, TlsCertificateErrorKind, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, hasMediaPayload, inspectTlsCertificateError, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
|
|
74
|
+
export { SYSTEM_PROMPT_CACHE_BOUNDARY, TlsCertificateErrorDetails, TlsCertificateErrorKind, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, describeUnsupportedToolResultMedia, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, formatToolResultText, hasMediaPayload, inspectTlsCertificateError, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
|
package/dist/internal/shared.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import "../transform-messages-DfjpNXNQ.mjs";
|
|
1
|
+
import { t as sanitizeSurrogates } from "../sanitize-unicode-BP7HLLZn.mjs";
|
|
2
|
+
import { a as describeToolResultMediaPlaceholder, c as extractToolResultText, d as isImageWithMediaPayload, i as transformMessages, l as formatToolResultText, o as describeUnsupportedToolResultMedia, s as extractToolResultBlockText, u as hasMediaPayload } from "../host-DF_yxOsA.mjs";
|
|
3
|
+
import { A as splitSystemPromptCacheBoundary, D as SYSTEM_PROMPT_CACHE_BOUNDARY, M as normalizePromptCapabilityIds, N as normalizeStructuredPromptSection, O as ensureSystemPromptCacheBoundary, P as sortPromptCacheToolsByName, i as clampReasoning, j as stripSystemPromptCacheBoundary, k as prependSystemPromptAdditionAfterCacheBoundary, n as buildBaseOptions, r as clampMaxTokensToModel, t as adjustMaxTokensForThinking } from "../simple-options-oqsXB6U3.mjs";
|
|
5
4
|
import { t as inspectTlsCertificateError } from "../tls-certificate-errors-DXSpluKI.mjs";
|
|
6
|
-
export { SYSTEM_PROMPT_CACHE_BOUNDARY, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, hasMediaPayload, inspectTlsCertificateError, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
|
|
5
|
+
export { SYSTEM_PROMPT_CACHE_BOUNDARY, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, describeUnsupportedToolResultMedia, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, formatToolResultText, hasMediaPayload, inspectTlsCertificateError, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as asNonArrayRecord } from "./record-coerce-DdXsgUd_.mjs";
|
|
1
2
|
import { parse } from "partial-json";
|
|
2
3
|
//#region packages/ai/src/utils/json-parse.ts
|
|
3
4
|
const VALID_JSON_ESCAPES = /* @__PURE__ */ new Set([
|
|
@@ -102,9 +103,6 @@ function looksLikeWindowsPathPrefix(prefix) {
|
|
|
102
103
|
const tail = prefix.slice(-160);
|
|
103
104
|
return /(?:^|[^A-Za-z0-9])[A-Za-z]:(?:[\\/][^"\\/:*?<>|\r\n]*)*$/.test(tail);
|
|
104
105
|
}
|
|
105
|
-
function asStreamingJsonRecord(value) {
|
|
106
|
-
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
107
|
-
}
|
|
108
106
|
/**
|
|
109
107
|
* Attempts to parse potentially incomplete JSON during streaming.
|
|
110
108
|
* Always returns a valid object, even if the JSON is incomplete.
|
|
@@ -115,13 +113,13 @@ function asStreamingJsonRecord(value) {
|
|
|
115
113
|
function parseStreamingJson(partialJson) {
|
|
116
114
|
if (!partialJson || partialJson.trim() === "") return {};
|
|
117
115
|
try {
|
|
118
|
-
return
|
|
116
|
+
return asNonArrayRecord(parseJsonWithRepair(partialJson));
|
|
119
117
|
} catch {
|
|
120
118
|
try {
|
|
121
|
-
return
|
|
119
|
+
return asNonArrayRecord(parse(partialJson));
|
|
122
120
|
} catch {
|
|
123
121
|
try {
|
|
124
|
-
return
|
|
122
|
+
return asNonArrayRecord(parse(repairJson(partialJson)));
|
|
125
123
|
} catch {
|
|
126
124
|
return {};
|
|
127
125
|
}
|